1. 시퀀스 모델링
데이터가 연속적으로 배열되어있는 경우, 이들의 배열 순서와 맥락을 고려하여 확률적으로 모델링하는 방법. 자연어 처리 분야에서 대표적으로 사용되며, 다음과 같은 태스크에 응용된다.
- 문장 확률 계산 (정상적인 문장 vs 이상한 문장)
- 문장 생성
- 문법 교정 및 패러프레이징
이 때 생성할 단어 혹은 결과를 예측하는 방법은 아래와 같이 분류할 수 있다.
예측 대상의 클래스 수에 따른 분류
- 이진 분류: 긍정 또는 부정 등의 결과 판단
- 다중 클래스 분류: 뉴스 기사 등을 읽고 이것이 어떤 카테고리에 속하는지 판단하는 것
- 구조적 예측: 하나의 문장을 입력받아 번역된 영어 문장을 도출
2. 예측 모델
2.1 유니그램 모델
단어의 등장 횟수를 세고, 그 빈도에 따라 단어 하나의 등장 가능성을 로그 확률로 계산한다.
로그 확률
확률값은 작은 값들을 연속하여 곱하면 매우 그 결과가 매우 작아져 수치적으로 불안정해진다. 이를 해결하기 위해 로그를 씌워 곱셈을 덧셈으로 바꾸면 계산 안정성이 높아진다.
- P(A)=0.01,P(B)=0.001,P(C)=0.0001
- 확률 직접 계산: 0.01×0.001×0.0001=10−9 (매우 작음)
- 로그 확률 계산: log(0.01)+log(0.001)+log(0.0001)=−2−3−4=−9 (안정적)
이처럼 구현이 매우 간단하지만, 다음과 같은 문제가 있다.
- 훈련 데이터에 없는 단어는 확률이 0이 되므로 예측이 불가능하다.
→ 서브워드 방법을 사용하여 해결 가능하다.
- 각 단어의 등장 확률을 독립적으로 계산하므로 자연스러운 문장이 생성되지 않는다.
"나는 먹었다. 밥을", "나는 밥을 먹었다."
2.2 N-그램 모델
N번째 단어를 N-1개의 이전 단어들의 조건부 확률로 계산한다. 예를 들어 트라이그램 모델이라면 바로 이전 두 단어를 바탕으로 현재 단어를 예측한다. 따라서 유니그램 모델과 달리 문장 생성 능력이 더 낫다.
문장 생성 방법
시작 토큰(bos)과 끝 토큰(eos)까지 각 단어의 확률을 기반으로 문장을 생성한다.
그리디 디코딩(Greedy Decoding)
현재 단어 뒤에 올 단어들 중 가장 높은 확률인 것을 고른다.
랜덤 샘플링(Random Sampling)
"나는" 뒤에 "밥을(확률 0.6)", "차를(확률 0.3)", "물을(확률 0.1)"이 있을 때, 소프트 맥스를 취하여 총합이 1인 확률 구간으로 정하고, 0과 1 사이의 랜덤한 숫자를 뽑아 구간에 따라 단어를 선택한다.
한계
-
피처 벡터를 사용하지 않으므로 유사한 의미의 단어를 인지하지 못한다.
-
이전 N개의 단어만을 고려하므로, 긴 거리 의존성을 해결하기 어렵다.
-
중간 단어가 개입되면 출력에 큰 영향을 받는다.
"나는 아침에 빵을 먹었다."라는 문장이 주어졌을 때, 트라이그램 모델이 "빵을"을 예측하기 위해 "나는 아침에"를 활용한다고 가정하자. 그러나 "나는 어제 아침에 빵을 먹었다."라는 문장이 들어오면 모델은 "어제 아침에"라는 두 가지 단어를 활용하여 "빵을"을 예측하기 쉽지 않다.
2.3 신경망 기반 모델
단어 임베딩을 통해 문장을 구성하는 각 단어들을 피처 벡터로 변환한 후, 이를 바탕으로 예측 수행. 피처 벡터를 사용하므로 유사한 의미를 가진 단어를 인지할 수 있고, 단어가 개입된 맥락 또한 고려가 가능하다. 그러나 역시 긴 거리 의존성을 해결하기는 어렵다. 이를 해결하기 위해 다음과 같은 모델이 제안되었다.
재귀 신경망(RNN)
도출된 정보가 다음 예측의 입력 데이터로 들어가는 구조.
장점
- 모델의 크기가 입력 길이에 따라 증가하지 않기 때문에 다양한 길이의 입력을 처리할 수 있음.
단점
- 병렬화가 어렵고, 연산 속도가 느림.
- 이전에 입력된 단어의 정보가 희석되는 문제가 발생.
합성곱 신경망(CNN)
장점
- 고정된 필터 크기만큼 입력 데이터가 들어가므로 RNN보다 병렬화가 용이하며, 연산 복잡도도 일정하다.
단점
- 시간의 순서를 직접 고려하지 않고 로컬 패턴만을 인식하므로 장거리 의존성이 떨어진다.
3. 언어 모델의 평가 방법
3.1 로그 가능도
로그 가능도는 모델이 실제 정답을 얼마나 높은 확률로 예측하는지를 로그화하여 평가하는 방법이다. 즉, 모델이 생성한 확률이 높을수록 로그 가능도 값은 0에 가까워지고, 낮을수록 큰 음수가 된다.
- 문장 "나는 밥을 먹었다."의 모델 확률: (P=0.1), 로그 가능도 = (log(0.1)=-2.3)
- 문장 "나는 먹었다 밥을."의 모델 확률: (P=0.001), 로그 가능도 = (log(0.001)=-6.9)
- 즉, 자연스러운 문장이 더 높은 확률(높은 로그 가능도)을 가진다.
3.2 혼란도
혼란도는 모델이 다음 단어를 얼마나 확신 있게 예측할 수 있는지 나타내는 지표이다. 혼란도가 낮을수록 좋은 모델이다.
Perplexity=e−N1∑i=1NlogP(wi)
- 단어 예측의 평균 로그 가능도(Word Log-likelihood)가 -4이면 혼란도는 e4≈54이다.
- 즉, 다음 단어 예측이 54개의 단어 중 하나를 무작위로 고르는 정도의 정확성을 가진다는 의미이다.
- 혼란도가 낮으면 선택 가능한 단어의 후보군이 적다는 것이므로 모델의 예측 정확도가 높다고 볼 수 있다.