기술 노트
AI의 기초 개념: 학습(Learning), 에이전트(Agent), 그리고 퍼셉트론(Perceptron)
들어가며오늘날 다양한 AI 기술, 예를 들어 챗봇, 이미지 생성 모델, 자율주행 시스템 등이 우리의 일상 속으로 깊숙이 들어오고 있다. 이번 글에서는 AI 시스템의 뼈대를 이루는 중요한 개념 세 가지, 에이전트(Agent), 학습(Learning), 퍼셉트론(Perceptron)을 간단히 정리해 볼 것이다.에이전트: 환경과 상호 작용하여 상태를 인식하고, 행동을 결정하는 주체학습: AI가 데…

들어가며
오늘날 다양한 AI 기술, 예를 들어 챗봇, 이미지 생성 모델, 자율주행 시스템 등이 우리의 일상 속으로 깊숙이 들어오고 있다. 이번 글에서는 AI 시스템의 뼈대를 이루는 중요한 개념 세 가지, 에이전트(Agent), 학습(Learning), 퍼셉트론(Perceptron)을 간단히 정리해 볼 것이다.
- 에이전트: 환경과 상호 작용하여 상태를 인식하고, 행동을 결정하는 주체
- 학습: AI가 데이터를 기반으로 성능을 개선해 가는 과정
- 퍼셉트론: 현대 신경망(딥러닝)의 원형이 된 가장 기초적인 모델
1. 에이전트(Agent)
1.1 에이전트란?
에이전트(Agent)란, 환경(Environment)과 상호 작용하며, 환경에서 정보를 받아(상태), 그에 대응하는 행동(Action)을 수행하는 주체이다.
- 예시
- 자율주행차 → 도로 환경(차선, 보행자, 신호등)을 인식한 뒤 브레이크, 엑셀, 핸들 등을 조작한다.
- 로봇 청소기 → 방 구조나 장애물을 인식한 뒤 이동 경로를 결정한다.
- 게임 AI → 플레이어 혹은 NPC가 맵, 적 배치 등 게임 환경을 보고 움직임이나 공격을 수행한다.
1.2 에이전트의 구조
- 센서(Sensor): 환경 정보를 받아들이는 장치나 매개체
- 액추에이터(Actuator): 에이전트가 실제 행동을 수행하는 장치
- 정책(Policy): 환경 상태에 따라 어떤 행동을 취할지를 결정하는 규칙 또는 함수
1.3 에이전트와 학습
에이전트가 어떤 상황에서 어떤 행동이 최적인지를 배우기 위해서는 학습(Learning)이 필수적이다. 자율주행차 사례의 경우, 운전 상황(신호등 색깔, 차간 거리 등)에 따른 최적의 가속, 감속을 학습해 나가게 된다. 이를 강화학습(Reinforcement Learning)과 같은 알고리즘으로 풀어낼 수 있으며, 여기서도 정책(Policy)을 개선하는 과정이 곧 학습이다.
2. 학습(Learning)
2.1 학습이란?
AI 시스템(또는 모델)이 경험(데이터)을 통해 성능(정확도, 성공률 등)을 점진적으로 개선해 가는 과정을 말한다. 전통적으로 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 강화학습(Reinforcement Learning) 등으로 크게 나뉜다.
- 지도학습
- 입력(x)과 그에 해당하는 정답(y)이 주어지고, 모델이 오차를 줄이는 방향으로 가중치 등을 업데이트한다.
- 예시: 이미지 분류, 스팸 메일 분류, 음성 인식 등
- 비지도학습
- 정답이 없는 상태에서 데이터 안에 숨어 있는 패턴, 군집, 분포 등을 파악한다.
- 예시: 고객 세분화(Clustering), 차원 축소(PCA)
- 강화학습
- 보상(Reward)을 극대화하기 위해 행동 정책을 개선한다.
- 게임 AI, 로봇 제어, 자율주행 등과 밀접하게 연관된다.
2.2 작은 예시: 지도학습 코드 스니펫
다음은 파이썬 scikit-learn을 활용해 아주 간단한 지도학습 과정을 보여주는 예시 코드이다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 1. 데이터 로드
iris = load_iris()
X, y = iris.data, iris.target
# 2. 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 3. 모델 학습
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# 4. 예측 및 평가
preds = model.predict(X_test)
print("정확도:", accuracy_score(y_test, preds))2.3 학습 시 주의할 점
- 오버피팅(Overfitting): 학습 데이터에만 너무 특화되어 실제 환경에서 성능이 떨어지는 문제
- 일반화(Generalization): 학습된 모델이 새로운 데이터에도 잘 대응하도록 만드는 것
3. 퍼셉트론(Perceptron)
3.1 퍼셉트론의 탄생 배경
퍼셉트론은 1950~1960년대 프랭크 로젠블랫(Frank Rosenblatt)이 제안한 초기 인공신경망 모델이다. 단층 퍼셉트론은 단순하지만, 오늘날의 딥러닝으로 이어지는 역사적 토대를 마련했다는 점에서 매우 중요한 개념이다.
3.2 퍼셉트론의 구조
단층 퍼셉트론(Single-Layer Perceptron)은 다음과 같은 요소로 구성된다.
- 입력: x1,x2,…,xn
- 가중치: w1, w2,…, wn
- 편향(Bias): b
- 출력: 활성화 함수(Activation Function)를 통해 최종 결정
- 단순하게 0 또는 1을 출력하는 계단 함수(step function)가 대표적 예시
3.3 퍼셉트론 학습 규칙
퍼셉트론은 오차(Error)가 발생할 때마다 가중치와 편향을 다음 식으로 업데이트한다.
wi ← wi + η(t-o) xi
- η: 학습률(Learning Rate)
- t: 실제 정답(타깃 값)
- o: 모델의 출력
- xi: 입력값
3.4 퍼셉트론에서의 활성화 함수와 그 목적
1. 퍼셉트론의 구조 되짚기
퍼셉트론은 입력(xi)에 가중치(wi)를 곱해 모두 더한 뒤, 편향(b)을 더한 값을 활성화 함수(Activation Function)에 통과시켜 최종 출력을 결정한다.
2. 활성화 함수를 사용하는 이유
- 선형 변환만으로는 해결 불가능한 문제를 풀기 위함
- 활성화 함수를 쓰지 않는다면(즉, 출력이 단순 선형 형태라면) 계층을 깊게 쌓아도 결국 하나의 선형함수와 동일한 표현만 가능하다.
- 예를 들어, 레이어 3개를 거치더라도 결과는 하나의 큰 선형변환 Wx + b로 볼 수 있게 된다.
- 따라서 비선형성을 부여해 복잡한 함수(패턴)를 학습하려면, 반드시 활성화 함수를 통해 비선형(Non-linear) 변환을 도입해야 한다.
- 출력을 특정 범위로 ‘정규화’하고 안정적으로 만들기 위함
- 예: 시그모이드(Sigmoid) 함수는 출력값을 (0, 1) 사이로 매핑해주므로 확률 해석이 가능해진다.
- 하이퍼볼릭 탄젠트(Tanh)는 (-1, 1) 범위로 출력을 제한해준다.
- ReLU(Rectified Linear Unit)는 0 이상의 값을 그대로 유지하므로, 음수 영역을 0으로 컷하고 양수값만을 살린다.
- 이런 식으로 출력값을 특정 범위로 ‘압축’하거나, 학습 시 폭주하지 않도록 안정적인 환경을 만들어주는 것도 활성화 함수의 중요한 역할이다.
3.5 퍼셉트론의 한계와 확장
- 선형분리(Linear separable)가 가능한 문제만 해결 가능하다.
- XOR 문제 등 선형분리가 불가능한 문제는 단층 퍼셉트론만으로 풀리지 않는다.
- 이를 극복하기 위해 다층 퍼셉트론(Multi-Layer Perceptron, MLP)이 등장했고, 이는 곧 현대 딥러닝(Deep Learning)의 기반이 되었다.
4. 핵심 요약
- 에이전트(Agent): 환경과 끊임없이 상호 작용하는 주체
- 학습(Learning): 데이터를 통해 성능(정확도, 보상)을 점진적으로 향상하는 과정
- 퍼셉트론(Perceptron): 고전적인 신경망 모델이자, 현대 딥러닝의 출발점
AI 시스템은 결국 “에이전트가 학습을 통해 환경에 적응해 나가는 과정”이라고 볼 수 있다. 퍼셉트론은 이를 구현하는 가장 기본적인 모델 중 하나로 이해할 수 있다.