# skip gram

단어 임베딩
단어 임베딩 : 단어를 낮은 차원의 벡터로 나타내는 것 원핫 인코딩은 sparse, 용량 많이 차지, 단어 의미 고려 안함 단어의 의미를 좌표로 나타내는 것 또는 수치화 → 의미가 비슷한 단어들은 비슷한 값을 가짐 단어 임베딩의 다차원 공간상에서 방향에 의미가 있어야 함 단어 임베딩 만드는 방법 (데이터가 적을때) NMF : 문서단어행렬에서 토픽모델링 (문서,토픽), (토픽, 단어) .. (데이터 중간) GloVe: 두 단어가 함께 나타난 관계를 이용 (데이터 많음) Word2Vec: 신경망 언어 모형을 이용 Word2Vec 두 단어의 임베딩을 신경망에 입력했을 때, 두 단어가 가까이 나올 확률을 계산하는 신경망을 만들어 학습 
임베딩
정의 사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열인 벡터로 바꾼 결과 혹은 그 과정 전체 목적 단어 및 문장 간 관련도 계산 의미적 및 문법적 정보 함축 Word2Vec (CBoW & Skip-gram) > “… 어머님 나 는 별 하나 에 아름다운 말 한마디 씩 불러 봅니다 …” CBoW 를 사용하면 표시된 단어 정보를 바탕으로 아래의 [ ---- ] 에 들어갈 단어를 예측하는 과정으로 학습이 진행됩니다. > “… 나 는 [ -- ] 하나 에 … “ > “… 는 별 [ ---- ] 에 아름다운 …” > “… 별 하나 [ -- ] 아름다운 말 …” > “… 하나 에 [ -------- ] 말 한마디 …” Skip-gram
밑바닥부터 시작하는 딥러닝 2 - 3장
word2vec 전 장과는 다른 통계 기반 기법과는 다른 추론 기반 기법이 등장하고 당연하게도 딥러닝 부분도 포함한다. 추론 기반 기법과 신경망 통계 기반 기법의 문제점 (p.115) 통계 기반 기법은 말뭉치 전체의 통계를 단 1회의 처리로 단어의 분산 표현을 얻는다. -> 시간이 오래 걸리고 컴퓨팅 자원이 많이 들어갈 수 밖에 없다. 반면 추론 기반 기법은 신경망을 이용해 미니배치로 학습하는 것이 일반적이다. -> 소량의 학습 샘플씩 반복해서 학습하며 가중치를 갱신해간다. -> 병렬 계산이 가능하고, 계산량이 큰 작업도 가능하게 만든다. 배치 학습과 미니 배치 학습으로 구분할 수도 있겠다. 여기서 추론이란 주변 단어(맥락)이 주어졌을 때 타깃이 되는 단어(미지의 단어)가 무슨 단어가 될 지 추측 하는 작업이다. 추론 문제를 반복해서 풀면서 단어의 출현 패턴을 학습하는 것이다. 신경망에서의 단어 처리 신경망을 이용해 단어를 처리

Efficient Estimation of Word Representations in Vector Space 하편
3. New Log-linear Models 이전에 성능이 좋았던 NNLM을 대용량 데이터셋 학습에 사용하기 위해 시키기 위해서는 연산량을 많이 줄인 distributed representation 모델 2가지 CBOW, Skip-gram 제안한다. NNLM에서의 projection layer는 단순히 embedding vector를 concat한 결과이기 때문에 단어간의 연관성 정보는 없고, hidden layer를 거치면서 단어간의 연관성을 학습한다. 하지만 가장 많은 연산량이 발생했던 non-linear hidden layer를 제거했기 때문에 projection layer가 단어간의 연관성 정보도 가져야 한다. 3.1 Continuous Bag-of-Words Model(CBOW) 
[DL] Word2Vec
지난 포스팅에서 빈도 기반으로 단어를 벡터화하는 것에 대해 정리했습니다. 이번에는 분포 기반의 단어 표현(벡터화)에 대해 정리하겠습니다. 분포 가설 등장 횟수 기반의 표현은 간편하지만 몇 가지 한계가 있습니다. 대표적으로 희소 문제가 있는데요. 중요한 단어이더라도 자주 등장하지 않는 단어는 학습에서 가중치를 부여받는데 한계가 있습니다. 분포 기반의 단어 표현은 이와 같은 등장 횟수 기반의 표현의 한계를 보완하기 위해 등장했습니다. 분포 기반의 단어 표현은 분포 가설을 근거로 합니다. 분포 가설이란 비슷한 의미를 지닌 단어는 주변 단어 분포도 비슷하다는 가설입니다. He is a good guy. He is a cool guy. 위 문장에서 good과 cool은 해당 단어 주변에 분포한 단어가 유사하기 때문에 비슷한 의미를 지닐 것이라고 추측할 수 있습니다. 그리고 분포 기반의 표현은 이 분포 가설에 기반하여 주변 단어의 분포를 기준으로 단어의 벡터 표현을 결정
Distributed Representation
단어의 분산 표현(Distributed Representation) 분포가설 비슷한 의미를 가진 단어는 주변 분포도 비슷할 것이다 라는 가설 원핫 인코딩 : 단어를 벡터화하고자 할 때 가장 쉬운 방법 단점은 단어 사이의 관계를 전혀 알 수 없고 차원이 너무 커짐 임베딩 : 사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열인 벡터로 바꾼 결과 혹은 그 과정 전체를 의미 특징 : 벡터 내의 각 요소가 연속적인 값을 가진다. Word2Vec(임베딩의 대표적인 모델) : 단어를 바로 벡터로 변환 단점 : 말뭉치에 등장하지 않는 단어는 벡터화 할 수 없다. (OOV) -> 단점 보완하기위한 모델은 fest-text CBoW : 주변 단어에 대한 정보를 기반으로 중심 단어의 정보를 예측모델 Skip-gram : 중심 단어의 정보를 기반으로 주변 단어의 정보를 예측 Word2Vec 구조 입력 :

[밑바닥부터 시작하는 딥러닝2] 05. Word Embedding
자연어: 우리가 평소에 쓰는 말 자연어 처리(NLP; Natural Language Processing): 우리의 말을 컴퓨터에게 이해시키기 위한 분야 말은 문자로 구성되고, 문자는 단어로 구성된다. $\therefore$ NLP에서는 단어의 의미를 이해시키는 것이 중요함. 단어의 의미 표현 시소러스(유의어 사전) 인력을 동원해 동의어, 유의어 그룹 별로 분류 NLP에서는 '상위와 하위', '전체와 부분' 등 더 세세한 관계까지 정의 단어 간의 관계 그래프로 표현하면 단어 사이의 관계 학습 가능(단어 네트워크) car = auto, automobile, machine, motocar object $\ni$ motor vehicle $\ni$ car, go-kart, truck WordNet: 유명한 시소러스 문제점 1. 시대 변화에 대응 어려움 2. 사람의 비용이 큼