[CS224N] Lecture 3: Word Window Classification, Neural Networks and Matrix Calculus

0. 이 강의가 던지는 질문

Lecture 1~2에서 단어 벡터를 학습했다면, 다음 질문은 자연스럽다:

  • 학습한 임베딩을 실제 분류 문제(예: NER) 에 어떻게 쓸 수 있을까?
  • 선형 모델만으로는 부족한데, 비선형성(Non-linearity) 은 왜 필요할까?
  • 신경망의 gradient는 실제로 어떻게 계산되고, 왜 행렬 미분(Matrix Calculus) 이 중요한가?

Lecture 3는 이 질문들에 답하면서, Word Vector를 “표현”에서 “예측 모델”로 연결해 준다.


1. Word Window Classification

1.1 문제 설정

대표 예시는 Named Entity Recognition (NER) 이다. 각 단어에 대해 태그(Person, Location, Organization, O 등)를 예측한다.

핵심 아이디어는 현재 단어 하나만 보지 않고, 주변 단어를 함께 묶은 고정 길이 Window 를 입력으로 쓰는 것이다.

예) window size = 5일 때

  • 입력: \([w_{t-2}, w_{t-1}, w_t, w_{t+1}, w_{t+2}]\)
  • 출력: 중심 단어 \(w_t\)의 태그

1.2 입력 벡터 구성

각 단어를 임베딩 벡터 \(e_w \in \mathbb{R}^d\)로 바꾸고, window 내 벡터를 concat 해서 하나의 입력 벡터를 만든다.

\[x = [e_{w_{t-2}}; e_{w_{t-1}}; e_{w_t}; e_{w_{t+1}}; e_{w_{t+2}}] \in \mathbb{R}^{5d}\]

이렇게 하면 모델은 중심 단어뿐 아니라 로컬 문맥(local context) 정보까지 같이 본다.


2. 왜 Neural Network가 필요한가?

2.1 선형 분류기의 한계

선형 모델은

\[s = Wx + b\]

형태로 점수를 계산한다. 하지만 데이터의 의사결정 경계가 복잡할 때, 하나의 선형 변환만으로는 표현력이 부족하다.


2.2 2-Layer Neural Network

Window classification에서 자주 쓰는 기본 구조:

\[h = f(W_1 x + b_1)\] \[\hat{y} = \text{softmax}(W_2 h + b_2)\]
  • \(f\): sigmoid, tanh, ReLU 같은 비선형 함수
  • \(h\): hidden representation
  • \(\hat{y}\): 각 태그 클래스 확률

핵심: 비선형 함수 \(f\)가 들어가야 복잡한 패턴을 학습할 수 있다.


3. Softmax와 Loss

3.1 Softmax

클래스 점수 벡터를 \(z\)라고 하면:

\[\hat{y}_i = \frac{e^{z_i}}{\sum_j e^{z_j}}\]

점수(score)를 확률 분포로 정규화한다.


3.2 Cross-Entropy Loss

정답 one-hot 벡터를 \(y\)라 할 때, 샘플 하나의 loss는:

\[L = -\sum_i y_i \log \hat{y}_i\]

정답 클래스가 \(k\)라면:

\[L = -\log \hat{y}_k\]

즉, 정답 확률을 높이는 방향으로 학습된다.


4. Backpropagation 핵심 직관

신경망 학습은 결국 모든 파라미터에 대해 \(\frac{\partial L}{\partial \theta}\)를 구해 Gradient Descent를 수행하는 과정이다.

\[\theta \leftarrow \theta - \eta \frac{\partial L}{\partial \theta}\]

여기서 가장 중요한 도구가 Chain Rule(연쇄법칙) 이다.

  • 출력층 gradient 계산
  • hidden layer로 gradient 전파
  • 입력 임베딩까지 gradient 전달

이 과정을 효율적으로 구현한 것이 Backpropagation이다.


5. Matrix Calculus 정리

5.1 왜 행렬 미분이 필요한가?

실제 구현에서는 입력/가중치/gradient가 모두 벡터·행렬 형태다. 스칼라 미분만으로는 코드와 수식이 분리되기 쉽다.

Matrix Calculus를 쓰면, 수식이 바로 벡터화 구현(PyTorch, TensorFlow)과 연결된다.


5.2 자주 쓰는 미분 규칙

(1) 선형 변환

\[z = Wx + b\]
  • \[\frac{\partial L}{\partial W} = \frac{\partial L}{\partial z} x^\top\]
  • \[\frac{\partial L}{\partial b} = \frac{\partial L}{\partial z}\]
  • \[\frac{\partial L}{\partial x} = W^\top \frac{\partial L}{\partial z}\]

(2) Softmax + Cross-Entropy

가장 중요한 결론:

\[\frac{\partial L}{\partial z} = \hat{y} - y\]

복잡해 보이지만 실제 구현에서 gradient가 매우 깔끔해지는 포인트다.


(3) 활성화 함수

  • Sigmoid: \(\sigma'(a) = \sigma(a)(1-\sigma(a))\)
  • Tanh: \(\frac{d}{da}\tanh(a) = 1 - \tanh^2(a)\)
  • ReLU: \(\frac{d}{da}\text{ReLU}(a) = \mathbf{1}[a>0]\)

활성화 함수의 gradient는 hidden layer에서 곱해지며, gradient 흐름의 크기를 크게 좌우한다.


6. 학습 실무 포인트

6.1 Xavier Initialization

가중치를 너무 크게 초기화하면 activation이 포화되어 gradient가 사라지고, 너무 작게 초기화하면 신호 자체가 약해진다.

이를 완화하기 위한 대표 초기화가 Xavier initialization이다.


6.2 정규화(Regularization)

학습 데이터에 과적합되는 것을 막기 위해:

  • L2 regularization (weight decay)
  • Dropout (후속 강의에서 확장)

같은 기법을 사용한다.


6.3 학습/개발/테스트 분리

  • Train: 파라미터 업데이트
  • Dev: 하이퍼파라미터 선택
  • Test: 최종 성능 보고

NLP 실험에서도 데이터 분할 원칙은 필수다.


7. 이번 강의의 큰 흐름

Lecture 3는 다음 연결고리를 만든다:

  1. Word Embedding을 입력 feature로 사용
  2. Window-based supervised task(NER 등)로 학습
  3. 2-layer neural network로 비선형 패턴 학습
  4. Matrix Calculus + Backprop으로 end-to-end 최적화

즉, “좋은 표현 벡터”를 실제 예측 모델의 성능으로 연결하는 첫 단계다.


8. 핵심 요약

개념 내용
Word Window Classification 중심 단어 + 주변 단어 window로 태그 분류
Input Construction 임베딩 벡터 concat으로 고정 길이 입력 생성
2-Layer NN \(h=f(W_1x+b_1)\), \(\hat{y}=softmax(W_2h+b_2)\)
Softmax + CE 확률 분포 출력 + 음의 로그우도 최소화
Backpropagation Chain Rule로 gradient를 층별 전파
Matrix Calculus 벡터화된 미분으로 구현과 수식을 일치
핵심 gradient \(\frac{\partial L}{\partial z}=\hat{y}-y\)
실무 요소 초기화, 정규화, 데이터 분할이 성능 좌우

9. 마무리

Lecture 3의 핵심은 “Word Vector를 실제 지도학습 분류기로 연결하는 방법” 이다.

Window 기반 입력 설계, 비선형 신경망, 그리고 matrix calculus 기반 backprop까지 이해하면, 이후 RNN, Attention, Transformer로 넘어갈 준비가 된다.

다음 강의부터는 더 긴 문맥을 다루는 모델과, 시퀀스 처리의 본격적인 구조로 확장된다.

Categories:

Updated:

Leave a comment