Inflearn에서 NLP 강좌인 "예제로 배우는 딥러닝 자연어 처리 입문 NLP with TensorFlow - RNN부터 BERT까지" 강좌를 들으며 정리한 글입니다. 섹션3까지는 사전 준비 과정이라 별도로 정리하지 않았습니다.
N-gram 언어모델
(강의에 기본적인 설명이 있는데, 정리에서는 skip)
...
N-gram 언어모델의 문제점
- 특정 단어 조합의 경우 데이터셋에 한번도 존재하지 않아서 계산식의 분모나 분자가 0이 될 수 있음
- 이를 방지하기 위해 Laplacian Smoothing 을 하기도 함.
- 최근에는 딥러닝에 기반한 언어 모델이 주로 사용
ANN (인공신경망) => 1950년 ML
순환 신경망(RNN)
- CNN - 이미지 구분용
- RNN - NLP에서 주로 활용하는 신경망
Unfold RNN
(좌측) Hidden Layer 순환을 (우측) 풀어서 표현한 그래프
Char-RNN
단어(N-gram)별로 학습이 아니라 문자(Charactor) 단위로 RNN을 이용한 학습 모델
- Target Data를 Input 문장에서 한 글자씩 뒤로 민 형태로 구성
- 전체 문자(단어) 집합에 대한 softmax 출력값
- 영어라서 알파벳 글자 개수인 26 (차원이 한글이나 다른 언어보다 낮은 편)
- softmax activation function
- 0~1 사이의 값으로 정규화
- 총합은 1
- 알파벳 개수만큼의 확률 계산 => 26개를 다 합치면 1인 출력값을 내려준다는 의미
- argmax로 가장 확률이 높은 글자를 다음에 올 글자로 확정 => 이를 반복
단점으로 softmax 출력값은 학습 후 고정되기에 예측값이 고정되는 현상
=> 이를 방지하기 위해 argmax 보다는 Categorical Distribution 샘플링 활용 (Category 내에서 Random Sampling)