One-hot 인코딩
One-hot 인코딩은 단어를 표현하는 가장 기본적인 방법이다. 사전에 선정한 단어 리스트를 하나의 벡터로 표현한다. 각 단어는 벡터의 하나의 차원을 의미하며, 벡터의 해당 차원의 값이 1이면 해당 단어이며, 0이면 해당 단어가 아니라는 의미이다. 다시 말해 One-hot 인코딩을 통해 생성된 단어 벡터의 값 가운데 하나만 1이라는 값을 가지고 나머지는 모두 0을 값으로 가진다. 즉, 1이라는 값은 해당 단어가 어떤 단어인지 알려주는 역할을 하는 것이다. One-hot 인코딩 방식은 분류(Classification) 문제를 해결하기 위한 딥러닝 모델의 마지막 레이어에서도 많이 사용되는 방식으로, 방법 자체가 간단하고 이해하기 쉽다는 장점으로 인하여 많이 사용되고 있다. 그러나 분류 문제의 경우 분류할 경우가 적으면 10개, 많게는 1,000개로 One-hot 인코딩으로 생성한 벡터의 사이즈가 매우 작다. 그러나 자연어 처리를 하다보면 단어의 수가 수십만 개에서 수백만 개에 이르게 된다. 수십만 개에서 수백만 개의 단어를 One-hot 인코딩 방식으로 벡터를 만든다면 벡터의 크기가 지나치게 커지게 되어 비효율적이게 된다. 또한 벡터의 차원이 커짐에 따라서 차원의 저주(Curse of Dimensionality)의 문제점으로 인하여 생성된 벡터를 입력값으로 기계학습 모델을 학습하거나 벡터를 이용한 통계적 분석을 했을 때도 유의미한 결과를 찾아내기가 힘들다. One-hot 인코딩 방식은 이와 같이 자연어처리 분야에서 사용할 때는 희소 벡터(Sparse Vector)로 인한 문제점을 가진다. 또한 단어 벡터가 Bag of Words와 같이 단어의 의미나 특성을 전혀 표현할 수 없다는 문제를 가진다.
댓글 없음:
댓글 쓰기