신경망(Neural Network)이란 무엇인가
딥러닝의 기반인 신경망 구조를 뉴런부터 학습 과정까지 그림으로 이해합니다.
지난 글에서 딥러닝(DL)은 다층 신경망 구조로 학습하는 ML의 한 방식이라고 했습니다. 그런데 신경망이 정확히 어떻게 생겼고, 어떻게 “학습”하는 걸까요?
어떤 설명은 너무 수식 중심이라 와닿지 않고, 어떤 설명은 너무 추상적이라 실제로 어떻게 돌아가는지 감이 안 옵니다.
이 글에서는 뉴런 하나의 구조부터 네트워크 전체의 학습 흐름까지, 수식보다 직관을 먼저 잡는 것을 목표로 순서대로 풀어봅니다.
뇌에서 빌려온 아이디어
신경망은 인간의 뇌에서 착안했습니다. 뇌에는 약 860억 개의 뉴런이 있고, 각 뉴런은 최대 수만 개의 다른 뉴런과 연결됩니다. 그 연결 수는 약 100조 개에 달합니다.
뉴런의 동작 원리는 단순합니다.
- 여러 뉴런으로부터 신호를 받는다
- 신호의 합이 일정 임계값을 넘으면 활성화된다
- 활성화되면 다음 뉴런으로 신호를 전달한다
인공 신경망은 이 동작을 수식으로 흉내 냅니다.
- 뉴런 → 노드(node)
- 연결 → 엣지(edge)
- 연결 강도 → 가중치(weight)
- 임계값 통과 여부 → 활성화 함수(activation function)
완전히 같지는 않지만, 원리의 뼈대는 공유합니다.
인공 뉴런의 구조
하나의 뉴런은 이렇게 동작합니다.
세 개의 입력값 x₁, x₂, x₃이 뉴런으로 들어옵니다.
그런데 모든 입력이 같은 비중으로 처리되지 않습니다.
각 입력에는 가중치(w) 가 곱해집니다.
예를 들어 집값을 예측하는 뉴런이 있다면,
입력 가중치 해석
면적 × 0.8 → 중요하게 반영
층수 × 0.3 → 어느 정도 반영
주차장 × 0.1 → 조금만 반영
가중치가 크면 그 입력이 결과에 크게 영향을 미치고, 가중치가 작으면 영향이 적습니다. 가중치가 음수면 “이게 클수록 오히려 불리하다”는 뜻이 됩니다.
이 값들을 전부 더한 뒤 편향(bias, b) 을 더합니다. 편향은 뉴런이 활성화될 기준점을 조정하는 역할입니다. 전체를 수식으로 쓰면 이렇습니다.
가중합 = w₁x₁ + w₂x₂ + w₃x₃ + b
이 가중합은 아직 선형(linear) 계산입니다. 여기에 활성화 함수 f 를 통과시켜야 비로소 뉴런의 출력이 완성됩니다.
y = f( w₁x₁ + w₂x₂ + w₃x₃ + b )
활성화 함수가 왜 필요한가
활성화 함수가 없으면 어떻게 될까요?
아무리 층을 많이 쌓아도, 선형 계산의 연속은 결국 하나의 선형 계산으로 합쳐집니다. 수십 층짜리 신경망이 사실상 1층짜리와 동등해지는 것입니다.
활성화 함수는 이 선형 계산에 비선형성을 주입합니다. 비선형성이 생기면 네트워크가 훨씬 복잡한 패턴을 표현할 수 있습니다.
대표적인 활성화 함수 세 가지를 정리하면 이렇습니다.
| 함수 | 출력 범위 | 특징 | 주로 쓰이는 곳 |
|---|---|---|---|
| Sigmoid | 0 ~ 1 | S자 곡선, 확률처럼 해석 가능 | 이진 분류 출력층 |
| ReLU | 0 ~ ∞ | 0 이하는 0, 0 초과는 그대로 | 은닉층 (현재 가장 많이 사용) |
| Softmax | 0 ~ 1, 합산 = 1 | 여러 클래스의 확률로 변환 | 다중 분류 출력층 |
ReLU가 현재 가장 널리 쓰이는 이유는 단순합니다. 계산이 빠르고, 깊은 네트워크에서 학습이 잘 됩니다.
# ReLU는 구현도 이렇게 단순합니다
def relu(x):
return max(0, x)
# 음수는 0으로, 양수는 그대로
relu(-3) # → 0
relu(0) # → 0
relu(5) # → 5
학습이란 무엇인가
신경망을 처음 만들면 모든 가중치는 무작위 값으로 초기화됩니다. 당연히 예측이 엉망입니다. 학습은 이 가중치를 반복적으로 조정해 예측을 점점 정답에 가깝게 만드는 과정입니다.
아래 4단계를 수만 ~ 수억 번 반복합니다.
1단계 — 순전파 (Forward Pass)
입력 데이터를 신경망에 통과시켜 예측값을 계산합니다. 현재 가중치를 그대로 사용해 “지금 이 모델은 뭐라고 예측하는가”를 확인하는 단계입니다.
2단계 — 손실 계산 (Loss Calculation)
예측값과 정답의 차이를 손실(loss) 이라는 숫자로 계산합니다. 손실이 클수록 예측이 틀렸다는 뜻입니다.
# 대표적인 손실 함수: 평균 제곱 오차 (MSE)
loss = (예측값 - 정답값) ** 2
# 예) 정답이 1.0인데 예측이 0.3이라면
loss = (0.3 - 1.0) ** 2 # → 0.49
3단계 — 역전파 (Backpropagation)
손실을 줄이려면 어떤 가중치를 얼마나 바꿔야 할까요? 역전파는 이 질문에 답합니다.
출력층에서 입력층 방향으로 거꾸로 훑으며, 각 가중치가 손실에 얼마나 기여했는지 미분을 통해 계산합니다. 이 값을 기울기(gradient) 라고 합니다.
기울기가 양수면 → 이 가중치를 줄여야 손실이 감소 기울기가 음수면 → 이 가중치를 높여야 손실이 감소
4단계 — 가중치 갱신 (Weight Update)
계산된 기울기를 바탕으로 가중치를 조금씩 조정합니다.
# 경사하강법 (Gradient Descent)
w = w - learning_rate × gradient
여기서 learning_rate(학습률)가 중요합니다.
learning_rate가 너무 크면 → 정답을 지나쳐버림 (발산)
learning_rate가 너무 작으면 → 학습이 극도로 느려짐
적절한 값 → 보통 0.001 ~ 0.01 사이
이 값을 잘 정하는 것 자체가 AI 엔지니어링의 중요한 기술입니다.
왜 층을 여러 개 쌓는가
뉴런 하나, 혹은 한 층만으로는 단순한 패턴 밖에 못 잡습니다. 층이 깊어질수록 더 추상적인 개념을 학습할 수 있습니다.
이미지 인식을 예로 들면 이렇습니다.
1층 → 픽셀의 밝기 변화, 선, 경계 (매우 저수준)
2층 → 선이 모인 모양, 텍스처
3층 → 눈, 코, 귀 같은 부분 형태
4층 → "고양이 얼굴"이라는 고수준 개념
텍스트도 마찬가지입니다.
1층 → 글자, 형태소
2층 → 단어의 의미
3층 → 문장의 맥락과 의도
이것이 “딥(Deep)“러닝에서 Deep이 의미하는 바입니다. 층이 깊어질수록(deep) 더 복잡한 표현이 가능해집니다.
현대 LLM은 이 층이 수십 ~ 수백 개에 달하고, 각 층에 수백만 ~ 수십억 개의 뉴런이 들어있습니다.
과적합: 학습이 너무 잘 되면 생기는 문제
신경망이 학습 데이터에 지나치게 맞춰지면 문제가 생깁니다. 학습 데이터에서는 정답률이 99%인데, 새로운 데이터에서는 60%밖에 안 나오는 현상입니다. 이를 과적합(overfitting) 이라 합니다.
과적합 비유:
시험 문제 100개를 통째로 외운 학생.
같은 문제는 다 맞추지만, 조금만 바뀌면 못 풀어냅니다.
반대로 너무 덜 학습되면 과소적합(underfitting) 이 됩니다. 이 둘 사이의 균형을 잡는 것이 딥러닝 개발의 핵심 과제 중 하나입니다.
| 상태 | 학습 데이터 성능 | 새로운 데이터 성능 |
|---|---|---|
| 과소적합 | 낮음 | 낮음 |
| 적정 | 높음 | 높음 |
| 과적합 | 매우 높음 | 낮음 |
정리
- 인공 뉴런 = 입력 × 가중치 → 가중합 → 활성화 함수 → 출력
- 활성화 함수 = 비선형성을 부여해 복잡한 패턴 표현을 가능하게 함
- 학습 = 순전파 → 손실 계산 → 역전파 → 가중치 갱신의 반복
- 층이 깊을수록 = 더 추상적인 개념까지 학습 가능
- 과적합 = 학습 데이터에 과하게 맞춰진 상태, 일반화 실패
신경망의 기본 원리는 여기까지입니다. 다음 글에서는 현재 LLM의 근간이 되는 트랜스포머(Transformer) 구조를 살펴봅니다. 신경망을 알고 나면 트랜스포머가 왜 등장했는지 훨씬 자연스럽게 이해됩니다.
다음 글: 트랜스포머(Transformer)란 무엇인가 — LLM이 언어를 이해하는 방법
읽어주셔서 감사합니다. 😊