이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 자연어처리(NLP) — 기계가 언어를 이해하다 → NLP 기초 — 컴퓨터가 언어를 이해하는 법 → 임베딩
Learn word embedding methods including Word2Vec (CBOW, Skip-gram), GloVe, FastText, cosine similarity, and pre-trained embedding usage.
가장 단순한 단어 표현 방법인 원-핫 {인코딩→인코딩}부터 살펴볼게요.
그림 왼쪽 상단을 보세요. 어휘 크기만큼의 {벡터→벡터}에서 해당 단어 위치만 1이에요.
나머지 자리는 전부 0이에요. cat은 첫 번째, dog은 두 번째, 이런 식이죠.
그런데 왜 이 방식이 문제일까요?
첫 번째 문제는 차원의 저주예요. 어휘가 10만 개면 10만 {디멘전→디멘전} {벡터→벡터}가 돼요.
대부분이 0인 극도로 희소한 {벡터→벡터}라 메모리 낭비가 심해요.
그림 가운데를 보시면 두 번째 문제가 보여요. 의미를 전혀 담지 못해요.
cat과 dog은 둘 다 동물인데, 원-핫 {벡터→벡터}로는 이 관계를 알 수 없어요.
두 원-핫 {벡터→벡터}의 내적은 항상 0이에요. 어떤 단어 쌍이든 직교하거든요.
{코사인→코사인} {시밀래리티→시밀래리티}를 계산해도 전부 0이에요. 의미 거리를 측정할 수가 없죠.
이건 정말 큰 한계예요. 자연어 처리의 핵심은 단어 간 관계를 파악하는 건데요.
그림 오른쪽을 보세요. 세 번째 문제는 일반화 불가예요.
학습 데이터에서 cat을 본 모델이 dog에 대해서는 아무것도 추론할 수 없어요.
원-핫에서는 단어가 완전히 독립적이라 전이 학습도 불가능하거든요.
그래서 언어학자들은 분포 가설이라는 아이디어를 떠올렸어요.
비슷한 맥락에서 나타나는 단어는 비슷한 의미를 가진다는 거예요.
1957년 존 루퍼트 퍼스가 처음 제안했죠. 단어는 함께 쓰이는 친구들로 알 수 있다고요.
이 아이디어가 바로 워드 {임베딩→임베딩}의 이론적 토대가 됐어요.
원-핫의 세 가지 한계를 정리하면 고차원, 의미 부재, 일반화 불가예요.
다음 블록에서 이 한계를 극복하는 분산 표현을 알아볼게요.
선생님: 원-핫 {인코딩→인코딩}에서 cat과 dog의 {코사인→코사인} {시밀래리티→시밀래리티}가 0인 이유가 뭘까요?
학생: 두 {벡터→벡터}가 완전히 직교하니까요. 겹치는 차원이 하나도 없어서 내적이 0이에요.
선생님: 맞아요. 그러면 어휘가 50만 개인 실제 시스템에서 원-핫 {벡터→벡터}를 쓰면 어떤 문제가 가장 먼저 터질까요?
학생: 50만 차원 희소 {벡터→벡터}를 저장하고 연산하는 게 메모리와 속도 면에서 비현실적이에요.
선생님: 정확해요. 그래서 밀집 저차원 {벡터→벡터}인 워드 {임베딩→임베딩}이 필요한 거예요.