Text Representation 2 : Distributed Representations
Word-level: GloVe
Glove 배경?
2014년도에 스탠포드에서 발표된 논문에 나온 알고리즘
Word2Vec이 가지고 있는 제 한계점을 지적
Word2Vec 한계점?
뉴럴 네트워크는 굉장히 많은 시간을 소비를 함
매우 빈번하게 자주 사용되는 단어들에 대해서 많은 시간을 학습을 한다는 얘기
예를 들면 'the' 같은 단어가 주어졌을 때 'the' 다음에 나오는 단어들에 대해 굉장히 많은 그 학습을 하게 됨
Skip-gram의 경우 'the'가 가지고 있는 그레디언트 계속적으로 학습함
다른 단어들은 한번 나올까 말까한 상황에서 'the' 라는 단어를 너무 많이 학습을 하게 되면 학습에 불균형이 존재함
Glove?
matrix facotrization에 기반을 두는 방법론
$X \in \mathbb{R}^{V \times V}$ X는 동시 발생 행렬임, 사이즈가 큼
$X_{ij}$ i라는 단어와 j라는 단어가 함께 등장한 빈도(동시)
$X_{i}=\sum_{k}^{V}X_{ik}$ 단어 i가 코퍼스에서 등장한 전체 횟수(해당 단어만)
$P_{ij}=P(j|i)=\frac{X_{ij}}{X_{i}}$ i가 등장한 상황에서 j가 함께 등장할 조건부 확률, 분모 $X_{i}$ 유의
두 가지의 임베디드 매트릭스 or 벡터를 사용함
$w \in \mathbb{R}^{d}$ word embedding
$\tilde{w} \in \mathbb{R}^{d}$ context word embedding
Glove Motivation?
조건부 확률을 계산하는 데 있어서 어떤 k라는 단어는 ice 단어가 먼저 나왔을 때 k라는 단어가 등장하는 빈도(A)
steam 이라는 단어가 먼저 등장했을 때의 빈도(B)
A/B
ice는 solid에 해당하는 부분
ice가 나온 다음에 solid가 나올 확률은 ice가 등장했을 때 gas가 나올 확률보다는 분명히 크게 됨
ice는 water와 굉장히 관련이 높은 단어
fashion과는 관련이 거의 없는 단어
steam이라는 단어가 나왔을 때 solid라는 단어가 나올 확률은 steam 자체가 증기(기체)이기 때문에 gas라는 단어가 등장할 확률이 solid라는 단어가 등장할 확률 보다도 높음
steam은 water와도 상당히 높은 확률(연관성)을 가지고 있음
fashion과는 낮은 연관성
조건부가 뭐가 되던 상관없이 water와 fashion 단어는 확률이 굉장히 유사함
만약에 특정한 k라는 단어가 ice에는 굉장히 연관성이 높고 steam에는 연관성이 낮다면 k=solid 경우는 A와 B의 확률 값을 비교해 봤을 때 A/B가 커야 함
반면에 k라는 단어가 steam과는 굉장히 높은 관련성을 갖고 있지만 ice와는 관련성이 낮을 때(k=gas) A/B는 작아야함
이 관계를 표현한 것이 Motivation임
어떤 두 가지 조건이 있을 때 특정한 쪽에 훨씬 더 관련성이 높다면 해당하는 동시 발생 빈도가 높음
분자와 관련성이 높으면 비율은 커질 것이고 분모랑 관련성이 높으면 이 비율은 낮아짐
water같은 케이스는 둘다 관련성이 있음
fashion 케이스는 둘 모두 하고 관련이 없음
위의 두 경우 조건부 확률이 1에 가까워져야 함
Glove Formulation?
특정한 function f 를 찾아야 함
function f 가 가져야 되는 조건
$F(w_{i}, w_{j}, \tilde{w}_{k})=\frac{P_{ik}}{P_{jk}}=\frac{P(k|i)}{P(k|j)}$
$w_{i}$는 ice, $w_{j}$는 steam, $\tilde{w}_{k}$는 solid가 될 수가 있음
앞 두 단어와 특정한 context 단어(둘 사이하고 관련성이 있는지 없는지를 상대적으로 추정) $\tilde{w}_{k}$ 이 세 단어들과의 관계는 위와 같은 조건부 확률 분수로 표현을 해 줄 수 있음
context에 따라서 변하는 빈도(co-occurance)를 두 개의 입력 단어(비교 대상이 되는 단어)와 하나의 context 단어가 들어왔을 때의 관계식을 표현
약간의 변형을 줌
첫번째 변형 : $F(w_{i}-w_{j}, \tilde{w}_{k})=\frac{P_{ik}}{P_{jk}}$
$w_{i}$와 $w_{j}$ 관계를 subtraction으로 표현
3개의 인자를 받았다면 두 개의 단어들의 차이를 이용해서 표현하자는 뜻
두번째 변형 : $F((w_{i}-w_{j})^{T}, \tilde{w}_{k})=\frac{P_{ik}}{P_{jk}}$
두 단어들의 관계 차이와 context 단어 사이의 링크를 만들어주기 위해 내적을 해서 하나의 스칼라 값을 만듦
세 번째로 수행하는 장치 : Homomorphism?
$\frac{P(k|ice)}{P(k|steam)}$ 관계식이 있을 때
$F((w_{i}-w_{j})^{T}, \tilde{w}_{k})=\frac{P_{ik}}{P_{jk}}$ 표현하고자 함
$\frac{P(solid|ice)}{P(solid|steam)}=F((ice-steam)^{T} solid)$ (A)
$\frac{P(solid|steam)}{P(solid|ice)}=F((steam-ice)^{T} solid)$ (1/A)
관계 기억
$F((ice-steam)^{T}solid)=\frac{P(solid|ice)}{P(solid|steam)}=\frac{1}{((steam-ice)^{T} solid)}$
steam과 ice 단어 위치를 바꾸고 난 함수는 원래 함수의 역수가 됨
덧셈에 대한 항등원 : $(ice-steam)^{T}solid = -(steam-ice)^{T}solid$ (Input)
곱셈에 대한 항등원 : $F((ice-steam)^{T}solid)=\frac{1}{((steam-ice)^{T} solid)}$ (함수의 Output)
입력을 덧셈의 항등원으로 바꿔주면 함수의 출력 값은 곱셈의 항등원으로 나오게 되는 mapping이 필요
$(\mathbb{R}, +)$ to $(\mathbb{R}>0, \times)$ : $F((ice-steam)^{T}solid)=\frac{P(solid|ice)}{P(solid|steam)}=\frac{1}{((steam-ice)^{T} solid)}$
함수의 인자에 대한 실수 공간 상에서의 덧셈의 항등원 관계가 함수에 아웃풋(출력 공간) 상에서는 0보다 큰 영역에서 의 곱셈의 대한 항등원으로 바뀌어야 된다는 뜻(매핑)
$w_{i}^{T} \tilde{w}_{k} = (w_{i} - w_{j})^{T} \tilde{w}_{k}+w_{j}^{T}\tilde{w}_{k}$
$F(w_{i}^{T} \tilde{w}_{k}) = F((w_{i} - w_{j})^{T} \tilde{w}_{k}+w_{j}^{T}\tilde{w}_{k})=F((w_{i}-w_{j})^{T}\tilde{w}_{k}) \times F(w_{j}^{T}\tilde{w}_{k})$ (Homomorphism)
$F((w_{i}-w_{j})^{T}\tilde{w}_{k})=\frac{F(w_{i}^{T}\tilde{w}_{k})}{F(w_{j}^{T}\tilde{w}_{k})}=\frac{P_{ik}}{P_{jk}}$
$F(x)=exp(x)$ ($f(a+b)=f(a)+f(b)$를 만족하는 지수함수)
Glove Solution?
$F(x)=exp(x)$
$F((w_{i}-w_{j})^{T}\tilde{w}_{k})=\frac{F(w_{i}^{T}\tilde{w}_{k})}{F(w_{j}^{T}\tilde{w}_{k})}=\frac{P_{ik}}{P_{jk}}$
$exp(w_{i}^{T}\tilde{w}_{k}-w_{j}^{T}\tilde{w}_{k})=\frac{exp(w_{i}^{T}\tilde{w}_{k})}{exp(w_{j}^{T}\tilde{w}_{k})}$
$w_{i}^{T}\tilde{w}_{k} = logP_{ik}=logX_{ik}-logX_{i}$
$exp(w_{i}^{T}\tilde{w}_{k})=P_{ik}=\frac{X_{ik}}{X_{i}}$
$w_{i}^{T}\tilde{w}_{k} = logX_{ik}-b_{i}-\tilde{b}_{k}$ (치환)
$w_{i}^{T}\tilde{w}_{k}+b_{i}+\tilde{b}_{k} = logX_{ik}$
i와 k라는 두 단어들의 임배딩의 내적 + 상수 항 i와 k에 대한 term들이 결국은 i와 k가 동시에 발생한 log값임
Glove Objective function?
$J=\sum_{i,j=1}^{V}(w_{i}^{T}\tilde{w}_{j}+b_{i}+\tilde{b}_{j}-logX_{ij})^{2}$
$=> J=\sum_{i,j=1}^{V}f(X_{ij})(w_{i}^{T}\tilde{w}_{j}+b_{i}+\tilde{b}_{j}-logX_{ij})^{2}$
$logX_{ij}$ : 실질적으로 가지고 있는 관측값
$w_{i}^{T}\tilde{w}_{j}+b_{i}+\tilde{b}_{j}$ : 학습을 해야 되는 미지수
$F(X_{ij})$ : 원래 식에서 목적 함수를 최소화하면 굉장히 그 자주 등장하는 단어들에 대해서 과도하게 가중치가 들어감
$F(X_{ij})$로 이를 막아줌
$f(0)=0$
$f(x)$은 non-decresing이고 rare co-occurrences가 overweighted 되면 안됨
$f(x)$의 x 값이 굉장히 클 때(고 발생빈도일 경우) 작아야 함
학습할 때 high-frequency words에 대해 가중치 줄여줌
$f(x)= \begin{cases}
(\frac{x}{x_{max}})^{\alpha} & \text{if} \ x < x_{max} \\
1 & otherwise
\end{cases}$
$\alpha$는 어떤 하이퍼 파라미터
max 기준으로 단조 증가하다가 일정 기준 값을 지나 버리면 더 이상 f(x) 값이 커지지 않음
고 발생빈도의 조합들에 가중치 또는 중요도를 낮춰 주는 역할을 수행
Glove Results?
벡터의 크기와 방향이 보존됨
Word-level : Fasttext
FastText?
NNLM, Word2Vec, Glove는 모두 단어가 가지고 있는 morphology 특성을 무시함
형태의 변화가 굉장히 다양한 언어들에 대해서 그리고 굉장히 빈도가 낮은 단어들이 많은 언어들에 대해서는 적용하기 어려움
우리말로 표현하면 어미 변화가 굉장히 심해서 여기에 해당하는 단어들이 코퍼스에 많이 없는 단어들이 상당히 많이 존재하는 상황이 아닐까 추정
지금까지는 단어 레벨 또는 토큰 레벨로 임베딩 함
FastText 목적은 character n-grams에 대해서 represention 학습을 시킴
어떤 단어의 분산 표상은 n-gram vectors들의 총합으로 표현
FastText 이후로 워드 임배딩에 대한 알고리즘이 나오지 않고 BERT나 엘모어, GPT로 넘어감
Word2Vec Negative Sampling?
$J_{t}(\theta)=log \sigma (u_{o}^{T}v_{c})+\sum_{i=1}^{k}E_{i \sim P(w)}[log \sigma (-u_{i}^{T}v_{c})]$
목적 함수를 이러한 방식으로 학습을 했음
Score는 두 임베딩사이의 dot product임
FastText Subword model : FastText는 어떤 w라는 단어가 있으면 w 단어에 해당하는 n-gram을 먼저 정의한 다음에 그 n-gram에 대해서 두 단어
사이의 계산을 할 때 이 n-gram들에 대한 벡터 representation을 전부다 더해서 이것을 내적함
$w: G_{w} \subset \left\{1,...,G\right\}$
$score(w,c)=\sum_{g \in G_{w}}\mathbf{z}_{g}^{T}\mathbf{v}_{c}$
하나의 단어를 표현하는 데 있어서 예를 들어 apple 이라는 단어가 있을 때는 원래는 이 단어 하나에 대해서 임배딩을 했다면 a에 대해서도 임베딩을 하고 ap에 대해서도, app에 대해서도, appl에 대해서도, apple까지 임베딩을 해서 전부 더한 것이 실제 apple이라는 단어의 임배딩임
FastText Subword model?
n-gram의 크기가 3, 4, 5, 6일 때 모두 keep
단어하고 n-gram들이 character들의 시퀀스가 같더라도 얼마만큼의 길이의 n-gram을 사용하느냐에 따라서 서로 다른 벡터가 assign이 될 수 있음
단어와 n-gram이 서로 다른 벡터에 assign됨
예로 들면 apple에서 appl이라는 4-gram과 app라는 3-gram은 두개가 서로 app라는 해당 캐릭터의 시퀀스를 공유하고 있지만 appl 임베딩 벡터와 app 벡터는 서로 다르다고 표현
댓글