원핫 인코딩 (One-hot encoding)
• 정의 • 임베딩의 한 방법으로
• 0과 1을 통해 단어를 정의
• 특정 단어를 표현하는 위치만 1이고 나머지의 위치는 0으로 구성
• 예를 들어, 전체 단어가 ʻdog’, ʻcat’, ʻapple’ 이 있다고 할 때,
• dog : [1, 0, 0]
• cat : [0, 1, 0]
• apple : [0, 0, 1]
• 과 같이 단어의 수 만큼의 크기를 갖는 벡터가 생성
• 각 단어의 위치(1이 표현되는 위치)는 설정하기에 따라 다름
• 직관적으로 쉽게 단어를 벡터로 변환 가능
단어에 원핫 인코딩 적용하기
• 원핫 인코딩을 적용하기 위해 문장을 단어의 형태로 분해
• 이를 tokenize(토크나이즈)라고 함 ‒ 추후 자세히 다룰 예정
• 일단 띄어쓰기 단위로 단어 분할
• 고유한 단어 집합 생성
• 예를 들어, “사과는 맛있다. 바나나는 맛있다”라는 문장이 있을 때,
• 고유한 단어는 ʻ사과는’, ʻ바나나는’, ʻ맛있다’
• 고유 단어에 독립된 인덱스 부여
• 사과는 = 0, 바나나는 = 1, 맛있다 = 2 • 벡터 생성
• 각 단어의 인덱스에 1을 부여하고 • 나머지 자리에 0을 채움
• 사과는 = [1, 0, 0] / 바나나는 = [0, 1, 0] / 맛있다 = [0, 0, 1]
분포 가설 (Distribution Hypothesis)
• 분포 표현 (Distribution Representation)의 이론적 기반
• 1950년대 제안된 언어학 이론으로
• “단어의 의미는 그 단어가 나타나는 문맥에 의해서 결정된다”는 아이디어를 중심으로 함
• “우리 엄마는 물을 매일 마신다” 라는 문장이 있을 때,
• 물 자리를 대신 할 수 있는 다른 단어들은 물과 비슷한 의미를 공유할 가능성이 큼
• 사과 주스 / 우유 등
• 또한, ʻ물’과 ʻ마신다’는 문맥적과 연관된 의미를 갖는다고 볼 수 있음
• 최신 임베딩 기법은 이러한 분포 가설을 기반으로 연구 생성 됨
• 특정 단어의 의미를 숫자 벡터로 표현하기 위해
• 문맥과 주변 단어의 이용해 학습 진행
Word2Vec
• 2013년 구글 연구진에 의해 개발된 알고리즘
• 문장 위를 움직이는 슬라이딩 윈도우 만듦
• 해당 윈도우는 이동하면서 동일한 개수의 단어를 포함
• 포함된 단어들 사이의 연산을 진행해 각 단어들을 임베딩
• 두 가지 방법으로 단어를 벡터로 변환
• CBOW : 이웃한 단어들로 가운데 단어가 무엇인지 예측하는 과정에서 임베딩을 진행
• Skip-gram : 가운데 단어로 이웃한 단어들을 예측하는 과정으로 임베딩 진행
GloVe (Global Vectors for Word Representation)
• 2014년 스탠포드 대학교 연구실 연구진에 의해 연구된 알고리즘
• 전체 글에 단어간 공동 출현 통계를 이용해
• 각 단어의 의미를 벡터로 표현
• 각 단어 쌍이 얼마나 자주 같이 나타나는지를 기록
• 이를 ʻ공동출현행렬’ 이라고 함
• 공동으로 자주 출현하는 단어들을 벡터 공간 내 비슷한 위치에 존재하도록 임베딩
딥러닝을 활용한 학습 기반 단어 임베딩
• 그 외에도 다양한 최신 연구들이 존재
• BERT
• 2018년 구글
• 단어 별 중요도 기반의 모듈을 활용해
• 문장 내적 & 외적 관계를 바탕으로 임베딩을 진행
• 과정에서 단어 임베딩 이외에 문장 임베딩도 생성
• CLIP
• 2021년 OpenAI
• 이미지를 설명하는 글에서
• 이미지와 텍스트의 공동 의미를 임베딩에 활용한 사례
• 등등