피드 포워드 신경망 언어 모델(Feed Forward Neural Network Language Model)
- 신경망 언어 모델의 시초
피드 포워드 신경망(FFNN)
- 오직 입력층에서 출력층 방향으로 연산이 전개되는 신경망
기존 N-gram 언어모델의 한계 : 희소문제(훈련코퍼스에 존재하지 않으면 확률이 0)
희소문제는 기계가 단어의 의미적 유사성을 알 수 있다면 해결할 수 있는 문제
언어 모델 또한 단어의 의미적 유사성을 학습할 수 있도록 설계한다면
훈련 코퍼스에 없는 단어 시퀀스에 대한 예측이라도 유사한 단어가 사용된 시퀀스를 참고하여 예측 가능
-> 신경망 언어모델(NNLM) 아이디어
NNLM
- N-gram 모델 처럼 다음 단어 예측시 정해진 개수(N)의 단어만을 참고함
- N : 윈도우
- 4개의 층(layer)으로 이루어진 인공 신경망
- NNLM이 언어 모델링을 학습하는 과정
"what will the fat cat sit on" : 훈련 코퍼스에 있는 문장
기계가 단어를 인식할 수 있도록 원-핫 인코딩으로 수치화
what will the fat cat 다음의 단어 예측을 위해 앞의 4개 단어만 참고(will, the, fat, cat)
입력층(Input layer)
- 4개의 원-핫 벡터 입력
- V : 원-핫벡터의 차원 7 (1 x 7) (1 x V)
- W : 가중치 행렬 7 x 5 (V x M)
투사층(Projection layer)
- 가중치 행렬과의 곱셈 이루어짐
- 활성화 함수 존재 X
- 선형층(linear layer)
- M : 투사층의 크기 5(임의로 설정) (1 x 5) (1 x M)
- VW = M
- V는 원-핫벡터이기 때문에 i번째만 1인 벡터. VW 는 W의 i번째 행을 그대로 읽어오는 것과 같은 의미
- >그래서 이 작업을 lookup table이라고 부름
- 각 단어가 lookup table을 통해 임베딩 벡터(embedding vector)로 변경됨(투사층의 출력)
- 모든 임베딩 벡터들의 값이 연결되는 곳이 투사층!
x : 각 단어의 원-핫 벡터
t : NNLM이 예측하고자 하는 단어가 문장에서 t번째 단어
n : 윈도우의 크기
lookup : 룩업 테이블을 의미하는 함수
모든 임베딩 벡터들이 모여 있는 게 투사층 (n x M)
은닉층(Hidden layer)
- 투사층의 결과(p layer)가 h의 크기를 가지는 은닉층의 입력으로 쓰임
- 가중치가 곱해진뒤 편향이 더해짐 -> 활성화 함수(하이퍼볼릭탄젠트)의 입력으로 쓰임
- 은닉층의 출력 : h layer
출력층(Output layer)
- sit의 원-핫 벡터(모델이 예측해야하는 정답)
- > 모든 단어 V개의 선택지 중 sit을 예측해야하는 다중 클래스 분류 문제
- 오차로부터 손실 함수를 사용하여 인공 신경망이 학습
- V의 크기를 가지는 출력층
- 다시 또 다른 가충치와 곱해지고 편향이 더해짐
- 입력이었던 원-핫 벡터들과 동일하게 V차원의 벡터 얻음
- 출력층의 활성화 함수 : softmax -> 벡터의 각 원소는 0~1사이의 값. 총합은 1
- 이 V차원의 벡터를 NNLM의 예측값이라는 의미에서 y hat으로 표현
y hat 의 j번째 인덱스 : j번째 단어가 다음 단어일 확률
y hat은 y에 가까워져야함
손실함수 : 크로스 엔트로피
역전파가 이루어지면서 모든 가중치 행렬이 학습됨(임베딩 벡터값도 학습 됨)
- > 유사한 목적으로 사용되는 단어들은 결국 유사한 임베딩 벡터값을 얻게 됨
- > 훈련 끝난 후, 훈련 코퍼스에 없던 단어 시퀀스라도 다음 단어 예측 가능 (단어의 의미적 유사성을 학습했기 때문)
이게 무슨 말이냐면
what will the fat cat eat 이라는 훈련 코퍼스를 학습한 모델은
what will the fat cat have 이라는 훈련 코퍼스에 없어도, what will the fat cat 다음에 have가 올 것을 예측할 수 있음
많은 훈련 코퍼스를 학습했다면?
what will the fat man have 와 what will the fat man eat 라는 코퍼스를 포함한 많은 코퍼스를 학습했다면?
have와 eat의 임베딩 벡터는 유사할 것.
그래서 what will the fat cat have 라는 훈련 코퍼스가 없어도 what will the fat cat 다음에 have를 예측할 수 있음
" 훈련 코퍼스에 없는 새로운 단어를 생성한다는 말이 아님. 훈련 코퍼스에 없던 단어 시퀀스라도 임베딩 벡터를 통해 유사성을 비교하여 다음 단어를 예측해볼 수 있다는 의미 "
NNLM의 이점과 한계
- 단어 표현을 위해 임베딩벡터 사용 -> 유사도 계산 가능, 희소문제 해결
- 다음 단어 예측을 위해 정해진 n개의 단어만 참고했음
'Python > NLP' 카테고리의 다른 글
RNN 언어 모델(RNNLM) (0) | 2023.03.19 |
---|---|
순환 신경망(RNN) (0) | 2023.03.14 |
펄플렉서티(Perplexity, PPL) (0) | 2023.03.14 |
N-gram 언어 모델 (0) | 2023.03.14 |
언어 모델 - 통계적 언어 모델 (0) | 2023.03.14 |