본문 바로가기
AI (DeepLearning)/NLP

[자연어 처리 입문 NLP] #6 언어모델(Language Modelling) - 다음에 올 단어를 예측해보자

by Tomining 2024. 8. 30.

 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)