언어 모델
언어 모델은 언어라는 현상을 모델링하고자 단어 시퀀스에 확률을 할당하는 모델이다.
쉽게 말하면 가장 자연스러운 단어 시퀀스를 찾는 모델이다.
단어 시퀀스에 확률을 할당하기 위해서는 이전 단어들이 주어졌을 때 다음 단어를 예측하도록 한다.
주어진 양쪽 단얻르로부터 가운데 비어있는 단어를 예측하는 모델도 있다.
- 통계를 이용한 방법
- 인공 신경망을 이용한 방법
언어 모델링
주어진 단어들로부터 아직 모르는 단어를 예측하는 작업이다.
단어 시퀀스 확률 할당
기계 번역 (Machine Translation)
P(나는 버스를 탔다) > P(나는 버스를 태운다)
오타 교정 (Spell Correction)
선생님이 교실로 부리나케
P(달려갔다) > P(잘려갔다)
음성 인식 (Speech Recognition)
P(나는 메론을 먹는다) > P(나는 메롱을 먹는다)
P는 확률을 의미한다.
위 세 가지 모두 언어 모델은 두 문장을 비교 했을 때 좌측 문장의 확률이 더 높다고 판단한다.
언어 모델은 이런 확률을 이용해 보다 적절한 문장을 판단한다.
이전 단어들로부터 다음 단어 예측하기
단어 시퀀스에 확률을 할당하기 위해서는 조건부 확률을 사용한다.
단어 시퀀스 확률
- w: 하나의 단어
- W: 단어 시퀀스
n개의 단어가 등장하는 단어 시퀀스 W의 확률은 다음과 같다.
다음 단어 등장 확률
n-1 개의 단어가 나열된 상태에서 n번째 단어의 확률은 아래와 같다.
전체 단어 시퀀스 W의 확률은 모든 단어가 예측되고 나서 알 수 있으므로 아래와 같다.
통계적 언어 모델 (SLM)
조건부 확률
두 확률 P(A)와 P(B)는 위와 같은 관계를 갖는다.
확률이 여러 개인 경우 위와 같은 관계를 가진다.
이 관계를 일반화 하면 위와 같다.
문장에 대한 확률
각 단어는 문맥이라는 관계로 인해 이전 단어의 영향을 받아 나온 단어다.
모든 단어로부터 하나의 문장이 완성되므로 문장의 확률을 구하고자 조건부 확률을 사용한다.
위 일반화 식을 한 번 더 일반화 시키면 위와 같다.
아래는 한 문장의 확률을 구하는 예시다.
카운트 기반 접근
문장의 확률을 구하기 위해서는 다음 단어에 대한 예측 확률을 모두 곱한다.
이전 단어들로부터 다음 단어의 확률은 카운트에 기반하여 확률을 계산한다.
An adorable little boy 뒤에 is가 나올 확률은 아래와 같이 계산한다.
모델이 학습한 코퍼스 데이터에 An adorable little boy가 100번 나오고,
An adorable little boy is 가 30번 나온다면 해당 확률은 30%가 된다.
한계 - 희소 문제
모델이 훈련한 코퍼스에 An adorable little boy is라는 단어 시퀀스가 없다면 위 경우의 확률은 0이 된다.
또한 An adorable little boy라는 단어 시퀀스가 없었다면 분모가 0이 되고, 확률이 정의되지 않는다.
이렇게 충분한 데이터를 학습하지 못해 정확히 모델링하지 못하는 문제를 희소 문제라고 한다.
위 문제를 완화하기 위해 n-gram 언어 모델이나 스무딩이나 백오프 등 일반화 기법이 존재한다.
그러나 근본적인 문제는 해결하지 못해 언어 모델의 트렌드가 인공 신경망 언어 모델로 넘어간다.
N-gram
n-gram 언어 모델도 카운트에 기반한 통계적 접근을 사용한다.
이전 단어들 전부를 고려하는 것이 아니라 일부 단어만 고려한다는 것이 특징이다.
이 때 몇개의 단어들을 고려할 지 결정해야 하고 n이 이것을 의미한다.
코퍼스에서 카운트 하지 못하는 경우 감소
SLM은 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있다는 한계가 있다.
또한, 계산하고 싶은 문장이 길수록 코퍼스에 해당 문장이 없을 가능성이 높다.
그러나 참고하는 단어들을 줄이면 카운트 할 수 있는 가능성이 높아진다.
위와 같이 더 짧은 단어 시퀀스를 이용해 확률을 계산할 수 있다.
boy가 지나친 일반화일 수 있으니 little boy를 사용해도 좋다.
N-gram의 n
n-gram은 n개의 연속적인 단어 나열을 의미한다.
코퍼스에서 n개의 단어 뭉치 단위로 끊어 이를 하나의 토큰으로 간주한다.
위의 예시를 이용하여 아래와 같이 n-gram을 구할 수 있다.
unigrams : an, adorable, little, boy, is, spreading, smiles
bigrams : an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
trigrams : an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
4-grams : an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles
n = 1 ) uni
n =2 ) bi
n = 3 ) tri
n >= 4 ) n-gram
로 n < 4의 경우 별도의 이름이 존재한다.
n-gram 언어 모델에서는 다음에 나올 단어 예측을 위해 n-1개만의 단어에 의존한다.
boy is spreading 이 1000번 등장했고,
boy is spreading 뒤에 insults 가 500번, smiles 가 200번 등장 했다면
확률적 선택에 따라 insults 가 더 맞다고 판단하게 된다.
한계
희소 문제
문장의 모든 단어를 사용하진 않지만 일부 단어만을 사용하는 것도 여전히 희소 문제가 존재한다.
n을 선택하는 trade-off 문제
n을 크게 선택하면 정확도는 올라갈 수 있으나 카운트 할 수 있는 확률이 적어지므로 희소 문제가 심각해진다.
또한, n이 커질수록 모델 크기도 커진다.
n을 작게 선택하면 카운트는 잘 되나 정확도가 낮아진다.
n을 최대 5를 넘게 잡지 않는 것을 권장한다.
한국어 언어 모델
한국어 예측이 까다로운 이유
한국어는 어순이 중요하지 않다.
1. 나는 운동을 합니다 체육관에서.
2. 나는 체육관에서 운동을 합니다.
3. 체육관에서 운동을 합니다.
4. 나는 운동을 체육관에서 합니다.
4 문장의 의미는 전부 동일하고, '나는'이라는 단어를 생략해도 문제 되지 않는다.
즉, 어순이 중요하지 않기에 다음 단어로 어떤 단어든 등장할 수 있다.
따라서 확률에 기반한 언어 모델이 제대로 다음 단어를 예측하기가 어렵다.
한국어는 교착어다.
띄어쓰기를 기준으로 토큰화 하는 경우 단어의 수가 굉장히 늘어난다.
토큰화 작업 시 접사나 조사를 분리하는 것이 중요한 작업이다.
띄어쓰기가 제대로 지켜지지 않는다.
띄어쓰기를 하지 않아도 의미 전달이 되며, 규칙 또한 까다롭다.
토큰화도 제대로 이루어지지 않기에 모델도 제대로 작동하지 않는다.
펄플렉서티 (Perplexity, PPL)
언어 모델을 평가하기 위한 평가 지표다.
이 지표는 낮을수록 모델의 성능이 좋다는 것을 의미한다.
PPL은 문장의 길이로 정규화된 문장 확률의 역수다.
위 식이 PPL을 구하는 식이고, 여기에 n-gram을 적용하면 아래와 같다.
분기 계수
PPL은 선택할 수 있는 가능한 경우의 수를 의미하는 분기 계수다.
언어 모델이 특정 시점에서 평균적으로 몇 개의 선택지를 가지고 고민하는지를 의미한다.
PPL은 테스트 데이터에 의존하므로
여러 개의 모델을 비교할 때는 양이 많고, 도메인에 알맞은 동일한 데이터를 사용해야 한다.
'AI > NLP' 카테고리의 다른 글
[Wiki] 벡터 유사도 (1) | 2024.06.04 |
---|---|
[Wiki] 카운트 기반 단어 표현 (1) | 2024.06.03 |
[Wiki] 한국어 전처리 패키지 (1) | 2024.06.02 |
[Wiki] 원-핫 인코딩 (0) | 2024.06.02 |
[Wiki] 패딩 (0) | 2024.06.01 |