딥러닝을 이용한 자연어 처리(3)
이제껏 classification에 대해서 공부했는데 generation 또한 이와 더붙어 자연어리에서 중요합니다.
Language Modeling이란 input으로 하나의 문장이 들어왔을때 output으로 그에 대한 확률을 알려주는 모델입니다. 즉
기존의 데이터 문장을 토대로 문장이 등장할 확률을 계산 , scoring하는것으로 이해할 수 있습니다. 기존의 classification은 supervised learning 이였지만 , 언어 모델링은 비지도학습입니다. 그러나 순서가 있는 지도학습으로 바꿔서 풀 수 있습니다.(?)
이를 풀기 위해 Autoregressive language modeling(자기회귀 언어 모델링)에 대해 알아봅시다.
n-gram language model이란 연속적인 n개의 토큰으로 학습을 하는 모델입니다. n-gram 모델을 통해서 문장에 대한 스코어링을 할 수 있는데 어떤 토큰 x가 나올 확률을 계산하려면 기존의 n-gram에서 해당 토큰이 등장한 횟수를 카운트 한 후 주어진 n-gram에서 나올 수 있는 모든 경우의 수 로 나누는 것입니다.
p(x∣x−N,x−N+1,⋯,x−1) = c(x−N,x−N+1,⋯,x−1,x) / ∑x′∈Vc(x−N,x−N+1,⋯,x−1,x′) 이며 c는 횟수를 카운팅한 것을 의미합니다.
하지만 여기서
1. 데이터의 희소성(data sparsity)
2. 장기의존성(long term dependency) 이라는 두가지 문제가 발생합니다.
data sparsity는 말 그대로 토큰 x가 ouput으로 나올 확률을 n-gram에서 등장했던 토큰을 카운트해서 구했는데 예를 들어 chasing a lama 같은 흔하지 않은 구문이 등장하고 lama를 예측해야 할 때 앞서서 해당 구문이 n-gram에서 등장하지 않았다면 probability가 0이 되버리는 문제가 발생합니다. 이를 해결하기 위해서 1)smoothing : 상수항을 더해주어 일정 가령 0.1이라는 확률을 만들어주는 방법과 n에서 0이라는 확률이 발생시에 n-1, n-2.. 점차적으로 n을 줄여 다시 count하는 2)Backoff 방법이 있습니다. 하지만 smoothing방법은 같은 상수항의 값으로 확률을 고정시키기에 lama나 monster이나 모든 등장하지않은 단어에 0.1이라는 같은 값을 매기는 것은 합리적이지 않아 보이고 backoff 방법도 계산량이 많아보여 이제 neural net에 n-gram을 접목시키게 됩니다.
장기의존성은 문맥에 따라 이전 단어들을 살펴야 하는 경우에 바로 전 근처단어들만 가지고 다음단어를 유추할 수 없을 떄 발생하는 문제입니다. 예를 들어 'the clouds are in the sky' 같은 경우 sky를 예측하는 것은 쉬워 보이지만 'I am good at English' 같은 경우는 언어 문제에 대한 얘기를 하고 있다는 것을 파악하기 위해 좀 더 앞의 문장까지 살펴봐야 하기에 n-gram에서 n이 작다면 예측하는데 어려움이 있습니다. 또 여기서 n을 늘려서 장기의존성을 해결하려 하면 반대로 data sparsity 문제가 다시 발생하게 됩니다.
Neural n-gram model 이란 이제
token들을 discrete한 공간이 아닌 continous vector space에 위치시켜서 probability에 대한 값을 지정해주어 n-gram의 첫 번째 문제를 해결시켜줍니다. 앞선 chasing a lama같은 예시에서 lama를 예측하지 못하는 경우도 lama 대신에 chasing rabit 이나 deer 같은 token이 있었다면 이를 통해 처음 등장하는 단어지만 animal이라는 군집을 통해서 lama를 비슷한 거리에 위치시켜 값을 매기게 될 것입니다. (0 이 아니라)
'machine learning' 카테고리의 다른 글
[3Blue1Brown] 신경망이란 무엇인가 (0) | 2021.12.18 |
---|---|
[CS224N] Introduction and Word Vectors (0) | 2019.07.19 |
딥러닝을 이용한 자연어처리(2) (0) | 2019.07.11 |
딥러닝을 이용한 자연어 처리(1) (0) | 2019.06.29 |
댓글
이 글 공유하기
다른 글
-
[3Blue1Brown] 신경망이란 무엇인가
[3Blue1Brown] 신경망이란 무엇인가
2021.12.18 -
[CS224N] Introduction and Word Vectors
[CS224N] Introduction and Word Vectors
2019.07.19 -
딥러닝을 이용한 자연어처리(2)
딥러닝을 이용한 자연어처리(2)
2019.07.11 -
딥러닝을 이용한 자연어 처리(1)
딥러닝을 이용한 자연어 처리(1)
2019.06.29