티스토리 뷰
안녕하세요. 감자코딩에 감자개발자 입니다. 이번강의에서 다룰 내용은 엠베딩 방법론입니다.
1. 단어를 벡터화하는 방법론 3가지를 설명드리겠습니다.
대표적인 벡터화 방법론은 Word2Vec, Glove, FastText 가 있습니다.
이중에서 가장 큰 특징은 단어 동시 등장 정보(word's of no-occurence)를 보존한다는 점입니다.
2. Word2Vec 이란?
단어를 벡터로 바꾸어주는 방법론입니다.
3. Word2Vec의 종류?
CBOW(Continuous Bag of Words) 와 Skip-Gram 방식 두가지가 있습니다.
CBOW 방식 예)
감자코딩은 _____ 하는것을 좋아한다.
___에 들어갈 단어를 예측할 수 있으신가요? 주변단어를 통해 중심단어를 맞추어내면서 벡터화로 만드는 방식을 CBOW방식이라고 합니다.
Skip-Gram 방식 예)
____ 돌이 박힌돌 ____
___에 들어갈 말들을 어떻게 유추할 수 있을까요? 중심단어의 주변의 말들을 단어들을 감안해서 벡터화 하게 됩니다. 따라서 ____에는 굴러들어온 돌 , _____ 빼낸다 라고 유추를 할 수 있게 됩니다. 여기서 사용되는것은 의미는 비슷하지않지만 연어(Collocation)이기 때문입니다.
4.Word2Vec(Skip-gram)방식
∑w=1Wexp(uTwvc)
o는 주변단어(surrounding word), c는 중심단어(context word)입니다. 다시 말해 p(o|c)는 중심단어(c)가 주어졌을 때 주변단어(o)가 등장할 조건부확률을 뜻합니다. 이 식을 최대화하는 것은 중심단어로 주변단어를 잘 맞춘다는 의미입니다. 즉 ‘돌이 박힌돌이’가 등장했을 때 ‘굴러들어온돌’라는 표현이 나올것 예측 가능합니다.
Word2Vec 연구진은 p(o|c)을 위 식 우변과 같이 정의했습니다. 와 는 단어벡터들입니다. 예컨대 ‘돌이 박힌돌’라는 중심단어 벡터가 , ‘원수’라는 주변단어 벡터가 입니다. 사실 엄밀히 얘기하면 와 는 다른 벡터들입니다.
하지만 임베딩이 잘 되어 있다면 학습 결과로 도출된 , 가운데 어떤 걸 써도 상관없다고 합니다.
5. Word2Vec의 단어 "동시등장 정보"란?
사용자가 주변단어 몇 개를 볼 지(window)를 정해주면 Word2Vec은 말뭉치를 window 크기로 슬라이딩하면서 스크린하며 중심단어별로 주변단어들을 보고 각 단어에 해당하는 벡터들의 요소값들을 조금씩 업데이트함으로써 단어를 벡터로 임베딩합니다.
6. Glove,FastText 란?
GloVe는 2014년 미국 스탠포드대학 연구팀에서 개발한 단어 임베딩 방법론입니다. GloVe 연구진이 명시적으로 밝혔듯 GloVe가 보존하려는 정보는 단어 동시 등장 여부입니다. GloVe로 임베딩된 단어 벡터끼리의 내적은 동시 등장확률의 로그값과 같습니다
Fasttext는 원래 단어를 부분단어(subword)의 벡터들로 표현한다는 점을 제외하고는 Word2Vec과 거의 유사합니다. 노이즈가 많은 말뭉치에 강점을 지닌 것으로 알려져 있습니다.
여기까지 간단하게
임베딩 방법론과 Word2Vec(Skip-Gram)방식을 살펴보았습니다.
reference - https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/03/11/embedding/
지금까지 감자개발자였습니다. 감사합니다.
'AI' 카테고리의 다른 글
[Python] glob, os 모듈 사용하기 (0) | 2018.10.30 |
---|---|
[CNN] Convolution Neural Network 1 (0) | 2018.10.04 |
[머신러닝] Pandas(판다스) 정리 (0) | 2018.08.08 |
[머신러닝] Anaconda2(아나콘다)/Jupyter Notebook(주피터) 환경구축 및 설치하기 (0) | 2018.08.08 |
[머신러닝 - Tensorflow] Lec-15 TensorFlow로 Fancy Softmax Classification의 구현하기 (new) (0) | 2018.03.18 |
- Total
- Today
- Yesterday
- 리버싱
- 머신러닝
- 텐서플로우
- C언어
- 안드로이드
- Algorigm
- 학교
- 감자개발자
- BFS
- 초보자를 위한 C언어 300제
- 백준알고리즘
- 스프링
- 알고리즘
- C langauge
- 백준
- Controller
- MVC
- 개발하는 관광이
- 노드
- node.js
- 코드엔진
- Android
- node
- 복습
- 프로그래밍
- Spring
- TensorFlow
- programming
- 감자코딩
- db
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |