RNN을 포함한 여러 자연어 처리 방법중 통계 기반 기법에선 PPMI라는 것이 사용된다. PPMI$^{Positive\,PMI}$를 설명하기 위해서 PMI를 우선적으로 설명한다. PPMI는 PMI에서 발전된 형태로 $Pointwise\,Mutual\,Information$을 나타낸다. 우리는 인공지능을 통해 자연어를 학습시킬 때에 '동시발행 행렬'에 의존한다. 예를 들어 아래와 같은 자연어가 있다고 가정하자
$$ I\,get\,in\,the\,car\,and\,go\,to\,drive. $$
위에서 $car$라는 단어가 나올 때는 바로 옆에있는 $the$라는 단어와 높은 연관성이 있다고 생각될 것이다. 이 발상이 기본적인 '동시발행 행렬' 기법의 원리이다. 하지만 단순히 인접한 단어만으로 연관성을 판단하는것은 무리가 있다. 실제로는 $car$는 인접한 $the$ 보다는 $drive$ 와 연관성이 깊다. 만약 동시발생 횟수만 가지고 구문을 파악하면 $the$와 $car$가 큰 연관성을 가진다고 생각될 것이다.
이러한 문제를 해결하기 위해서 점별 상호정보량$^{PMI}$ 척도를 사용한다.
PMI의 정의
PMI는 확률변수 $x$와 $y$에 대해 아래와 같이 정의된다.
$$ PMI(x, y) = log_{2}{P(x, y) \over P(x)P(y)} $$
식 내부 변수들은 아래와 같은 의미를 지닌다.
- $P(x)$ 는 $x$ 가 일어날 확률
- $P(y)$ 는 $y$ 가 일어날 확률
- $P(x, y)$ 는 $x, y$ 가 동시에 일어날 확률
위 식중 $P(x)$는 단어 $x$가 말뭉치에 등장할 확률을 가리킨다. 예로 10,000 개의 단어가 포함된 문장에서 $the$ 가 100번 등장한다면 $P(the) = { 100 \over 10000 } = 0.01$ 이 된다. 더하여 $P(x ,y)$는 단어 $x$와 $y$가 동시발생할 확률이므로, 마찬가지로 $the$와 $car$가 10번 동시발행한다면 $P(the, car) = {10 \over 10000} = 0.001$ 이 되는 것이다.
동시발생 행렬을 통해 식 재정의
$$PMI(x,y) = log_{2}{P(x,y) \over P(x)P(y)} = log_{2}{{C(x, y) \over N} \over {{C(x) \over N} {C(y) \over N}}} = log_{2}{C(x, y) \cdot N \over C(x)C(y)} $$
위 식에 따라 동시발생 행렬로부터 PMI를 도출할 수 있다. 아래와 같이 가정해 보자.
- N : 말뭉치의 단어 수 = 10,000 개
- $the$ 발생횟수 = 1,000 번
- $car$ 발생횟수 = 20 번
- $drive$ 발생횟수 = 10 번
- $the, car$ 동시발생횟수 = 10 번
- $car, drive$ 동시발생횟수 = 5 번
동시발생 횟수 관점에서 $car$는 $drive$ 보다 $the$ 와 관련이 깊다고 나오지만 PMI 관점에서는 다르다.
$$ PMI(the, car) = log_{2}{10 \cdot 10000 \over 1000 \cdot 20} \approx 2.32 $$
$$ PMI(car, drive) = log_{2}{ 5 \cdot 10000 \over 20 \cdot 10 } \approx 7.97 $$
결과에서 확인할수 있듯, PMI를 이용하면 $car$ 는 $the$ 보다 $drive$ 와 연관성이 깊다는 것을 확인할 수 있다. 이는 단어가 단독으로 출현하는 횟수가 고려되었기 때문이다 위 예제에서는 $the$가 단독으로 자주 출현기에 PMI 점수가 낮아진것 (다른곳에서도 많이 출현했으니 자연스럽게 car 와의 연관성도 낮게 보정된것) 이다.
PPMI 란?
PMI 에는 한가지 문제점이 존재한다. 바로 두 단어의 동시발생 횟수가 0 면 $log_{2}0 = -\infty$가 된다는 점이다. 해당 문제를 피해기 위해서 양의 상호정보량$^{Positive\,PMI}$를 사용한다.
$$PPMI(x, y) = max(0, PMI(x, y))$$
식에따라 PMI가 음수일 때는 0으로 취급하는 형식으로 처리한다.
PPMI의 문제점
이처럼 단어간의 상관관계를 숫자로 표현할 수 있는 PPMI는 완벽해 보인다. 하지만 현대의 데이터는 너무나도 방대하여 단어 수가 증가함에 따라 벡터로 제작할 차원수가 매우 크게 증가한다는데에 있다. 예로 단어의 수가 100만개라면 100만차원의 벡터를 다루게 된다는 뜻이다. 이 문제를 해결하기 위해 나온것이 바로 차원 감소$^{Dimemsionlity\,Reduction}$ 이다. PPMI 데이터 중 중요한 정보는 유지하고, 불필요한 정보는 제거하여 최대한 효율성있게 보관하는 방법이다.
차원 감소에 대해서는 따로 검색해 보길 바란다. 어디까지나 PPMI의 방대한 데이터양을 줄이기 위해 고안된 방법이므로 이런게 있구나... 보고 넘어가도 좋다.
'Artificial Intelligence > Basic' 카테고리의 다른 글
벨만 방정식(Bellman Equation) (0) | 2023.05.29 |
---|---|
마르코프 결정 프로세스(Markov Decision Process) (0) | 2023.05.28 |
어텐션이란? (0) | 2023.04.14 |
연쇄법칙(Chain Rule) (0) | 2023.03.31 |
배치정규화 (0) | 2023.03.19 |