-
패스트캠퍼스 환급챌린지 23일차 미션 (2월 23일) : 딥러닝·인공지능 Signature 초격차 패키지 Online. 강의 후기패스트캠퍼스 챌린지 2024. 2. 23. 11:46
자, 오늘은
Part3. 인공지능의 이해 Lv.2 : 숲을 보는 인공지능
CH06-03. Word2Vec
&
CH06-04. Embedding - Glove, FastText
CH02-01. Word2Vec
오늘 살펴볼 내용은 Prediction Based의 워드 투 벡이다.
벡터를 단어로 바꿀 때 사용하는 정보는 빈도수다. 그 이후 어느 논문에서는(Tomas Mikolov et al., 2013)
빈도수가 아니라 의미를 반영한 벡터를 만들고 싶었다.
어떻게 의미를 반영한 벡터를 만들 수 있을까?
제안?
"1. 유사한 단어는 근처에 위치한다 / 단어는 열개의 유사도를 가질 수 있다"
이를 2가지를 표현하면
신경망 기반으니 벡터 생성방법
CBOW, Skip-gram 2가지가 있다.
CBOW(Continuous Bag Of Words) - 주변 단어를 통해 주어진 단어를 예측
Skip-gram - 한 단어를 기준으로 주변에 올 수있는 단어를 예측한다.

위의 이미지에서 보이는 것처럼 CBOW는 주변단어를 통해 주어진 단어를 예측하는 외부에서 찾는 방법이고,
Skip-gram 은 완전 반대의 개념으로 해당 단어를 기준으로 파생되는 다양한 단어를 찾는 것이다.
예시를 들어보자
오늘 점심에 중국집에서 [자장면]을 먹었다. 를 넣으면
Input Projection output
오늘
점심 자장면
중국집
먹었다
그림그리기 어렵다. 무튼 중간에 신경망이 있을꺼고 가중치를 학습할 것인데, COO 에서는 들어가는 벡터들의
가중치를 확인해서 자장면의 벡터를 뽑아내는 것이다.
이 반대로 Skip-gram은 뒤집으면 되는데 원핫벡터 형태로 넣어서 벡터로 뽑아내는 것이다.

이런식으로 각각의 단어들이 벡터로 표현되므로 다음과 같은 벡터 연산이 가능 한것이다.
즉 워드 투 벡터의 핵심은 단어의 의미를 만들어 낸다는 것이다.
결론적으로 Word2Vec은 중심단어의 주변 단어들을 이용해 중심단어를 추론하는 방식으로 학습.
단어가 가지는 의미 자체를 다차원 공간에 벡터화 하는 방법이고,
단어 간의 유사도 측정이 가능하며, 단어간의 관계를 파악하는 것이 가능하다는 말이다.
(벡터 연산을 통해 추론이 가능하다는 말)
CH02-01. Data Structure의 개요
글로브와 패스트텍스트에 대해 알아보자.

자, 여태까지 공부했던걸 잠시 복습해보자.
단순변환은 각각의 단어들을 모두 표현할 수 있는 벡터 공간을 만들고 벡터공간에서 해당 단어가 나왔을 때
1 혹은 0 을 채우는 형태(원 핫 벡터)방식을 취한다. 간단하지만 메모리 낭비가 엄청 크다.
각각의 단어 의미 반영 : 불가
단어에 대한 특징이라고 하는게 뭐가 있을까? 고민하여 만든 벡터로의 변환 방식
① Count Based
Bag of Words(빈도수를 바탕으로 벡터로 변환)
countVectroizer / TFIDVectorizer
각각의 단어 의미반영 : 불가
② Prediction Based
Word2Vec(단어에 윈도우를 적용해서 해당 단어 주변에 어떤 단어들이 나오는지 확인할 수가 있음.)
Skip-gram
CBOW
GloVe
Global Vectors for Word Representation 이라는 2014년에 발표된 논문에서 처음 제안된 구조임.
윈도우 내에 함께 출현한 단어들의 출현 빈도를 맞추도록 훈련한 모델을 생성하는게 이 글로브 모델.
Co-occuraence 라는게 어떤 단어가 어떤단어들과 함께 사용되었는지를 알아보는 것이다.
(영상에는 표의 형태로 나타내져 있음)
글로브를 쉽게 다시 한번 정리해보자면, 윈도우 내에 함꼐 출현한 단어들의 출현 빈도를 맞추도록 훈련이고,
word2Vec의 장점은 뭐였는가? 주변의 있는 단어의 의미를 학습한다라는 것이 장점이었는데,
TF-IDF 빈도수 같은 벡터로는 의미를 반영할 순 없었지만 워드투벡은 이러한 단점을 보완하는 주요한 기능이 있음.
(앞서 계속 말한 벡터에 의미를 담는 것!)
다만, 워드투벡의 한계는 윈도우 사이즈 적용을 할때 특정 구간에 대해서만 분석을 한다는 것이다.
한 단어가 주변의 단어와 어떻게 쓰이는지만 알 수 있지, 전체 문서에서의 범위는 고려하지 못한다는 것이다.
GloVe는 이와 반대로 전체적인 문서에서는 단어들을 고려할 수있다는 것이다.(워드 투 벡의 단점 보완!)
FastText
2016년에 제안된 구조이고, In Reaching Word Vectors with Subword Information이라고 하는 페이퍼에서 제안되었다 함.
탄생배경은 기존의 word2vec은 문서에 자주 나타나지 않은 단어나 오타 혹은 조금의 표현이 변경되는 것에 대해서
전혀 처리가 되지 않는데,
이 FastText는 그것을 개선하고자 단어를 더 Subword. 쪼갰다는 뜻이다.
n-grams 라는걸 이용했는데, 예를들어 where 의 경우 에서 n= 3이라고 설정했을 때,
<w, whe,="" her,="" ere,="" e=""></w,> 이런식으로 뽑아내주는 것이다. (오타가 있어도 추론이 가능하다는 것)
23일차 끝.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
'패스트캠퍼스 챌린지' 카테고리의 다른 글