ML

머신러닝 / 딥러닝 스터디 정리
ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 엘모

ELMo ELMo(Emdeddings form Language Model)는 새로운 워드 임베딩 방법론으로 '언어 모델로 하는 임베딩'을 뜻함 ELMo의 가장 큰 특징은 사전 훈련된 언어 모델을 사용하며 같은 표기의 단어라도 문맥에 따라 다르게 워드 임베딩을 하여 자연어 처리의 성능을 올릴 수 있음 예) Bank Account(은행 계좌)와 River Bank(강둑)에서의 Bank는 Word2Vec나 GloVe 등으로 표현되면 같은 벡터를 사용하므로 제대로 반영하지 못함 biLM의 사전 훈련 ELMo는 순방향 RNN 뿐만 아니라, 반대 방향으로 문장을 스캔하는 역방향 RNN 또한 활용하므로 ELMo는 양쪽 방향의 언어 모델을 둘 다 학습하여 활용한다고 하여 biLM(Bidirectional Languag..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 사전 훈련된 워드 임베딩

사전 훈련된 Word2Vec 임베딩 소개 자연어 처리 작업을 할 때 케라스의 Embedding()를 사용하여 갖고 있는 훈련 데이터로부터 처음부터 임베딩 벡터를 훈련시키기도 하지만, 반대로 방대한 데이터로 사전에 훈련된 워드 임베딩을 가지고 와서 해당 벡터들의 값을 작업에 사용할 수도 있음 훈련 데이터의 양이 부족하다면, Word2Vec, GloVe, FastText 등으로 사전 학습시킨 임베딩 벡터들을 가지고 와서 사용 가능 케라스 임베딩 층 케라스는 훈련 데이터의 단어들에 대해 워드 임베딩을 수행하는 도구인 Embedding()을 제공하며 Embedding()은 인공 신경망 구조 관점에서 임베딩층을 구현함 임베딩 층은 룩업 테이블 임베딩 층의 입력으로 사용하기 위해서는 입력 시퀀스의 각 단어들은 모두..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 패스트텍스트

FastText 단어를 벡터로 만드는 또 다른 방법으로 페이스북에서 개발함 메커니즘 자체는 Word2Vec의 확장이라고 볼 수 있지만 Word2Vec은 단어를 쪼개질 수 없는 단위로 생각한다면, FastText는 하나의 단어 안에도 여러 단어들이 존재하는 것으로 간주 즉, 내부 단어인 서브워드를 고려하여 학습하게 됨 내부 단어의 학습 FastText에서는 각 단어는 글자 단위 n-gram의 구성으로 취급되므로 n을 몇으로 결정하는지에 따라서 단어들이 얼마나 분리되는지 결정됨 예) n을 3으로 잡은 트라이그램의 경우, apple은 app, ppl, ple로 분리하고 이들을 벡터로 만들고 시작과 끝을 의미하는 를 도입하여 5개 내부 단어 토큰을 벡터로 만들게 됨 그리고 여기에 추가적으로 기존 단어에 를 붙인..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 글로브

기존 방법론에 대한 비판 LSA는 DTM이나 TF-IDF 행렬 같이 각 문서에서 각 단어의 빈도수를 카운트 한 행렬이라는 전체적인 통계 정보를 입력으로 받아 차원을 축소하여 잠재된 의미를 끌어내는 방법론으로 카운트 기반으로 코퍼스의 전체적인 통계 정보를 고려하기는 하지만 단어 의미의 유추 작업에는 성능이 떨어짐 Word2Vec은 실제값과 예측값에 대한 오차를 손실 함수를 통해 줄여나가며 학습하는 예측 기반의 방법론으로 예측 기반으로 단어 간 유추 작업에는 LSA보다 뛰어나지만, 임베딩 벡터가 윈도우 크기 내에서만 주변 단어를 고려하므로 코퍼스의 전체적인 통계 정보를 반영하지 못함 글로브는 기존의 카운트 기반의 LSA와 예측 기반의 Word2Vec의 단점을 지적하며 이를 보완하는 목적을 가지며 LAS의 메..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 워드투벡터 (2)

네거티브 샘플링 Word2Vec의 출력층에서는 소프트맥스 함수를 지난 단어 집합 크기의 벡터와 실제값인 원-핫 벡터와의 오차를 구하고 이로부터 임베딩 테이블에 있는 모든 단어에 대한 임베딩 벡터 값을 업데이트하게 됨 그러므로 Word2Vec은 연관 관계가 없는 단어들까지 업데이트하므로 비효율적이며 단어 집합의 크기가 수만 이상에 달한다면 굉장히 무거운 작업이 됨 네거티브 샘플링은 Word2Vec이 학습 과정에서 전체 단어 집합이 아니라 일부 단어 집합에만 집중할 수 있도록 하는 방법으로 하나의 중심 단어에 대해서 전체 단어 집합보다 훨씬 작은 단어 집합을 만들어놓고 마지막 단계를 이진 분류로 변환하도록 함 이는 주변 단어들을 긍정(positive), 랜덤으로 샘플링된 단어들은 부정(negative)으로 ..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 워드투벡터 (1)

워드투벡터 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 의미를 수치화할 수 있는 대표적인 방법 중 하나인 워드투벡터 한국어 단어에 대해서 벡터 연산 예1) 한국 - 서울 + 도쿄 = 일본 예2) 박찬호 - 야구 + 축구 = 호나우두 희소 표현 벡터 또는 행렬의 값이 대부분 0으로 표현되는 방법을 희소 표현이라고 함 이러한 표현 방법을 각 단어 벡터간 유의미한 유사성을 표현할 수 없으므로, 대안으로써 단어의 의미를 다차원 공간에 벡터화하는 방법인 분산 표현이 존재 분산 표현을 이용하여 단어 간 의미적 유사성을 벡터화하는 작업을 워드 임베딩이라 부르며 이렇게 표현된 벡터를 임베딩 벡터라고 함 분산 표현 분산 표현은 기본적으로 '비슷한 문맥에서 등장하는 단어들은 비슷한 의미를 가진다'는 분포 가설..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 09. 워드 임베딩 - 워드 임베딩

워드 임베딩이란? 텍스트를 컴퓨터가 이해하고, 효율적으로 처리하게 하기 위해서는 컴퓨터가 이해하도록 텍스트를 적절히 숫자로 변환해야 함 현재는 각 단어를 인공 신경망 학습을 통해 벡터화(밀집 표현으로 변환)하는 워드 임베딩 방법이 가장 많이 사용되고 있음 희소 표현 벡터 또는 행렬의 값이 대부분 0으로 표현되는 방법을 희소 표현이라고 함 예) 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 원-핫 벡터, DTM 이러한 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 한없이 커지기 때문에 공간적 낭비를 불러일으킴 밀집 표현 희소 표현과 반대되는 표현으로 벡터의 차원을 단어 집합의 크기로 상정하지 않고 사용자가 설정한 값으로 모든 단어의 벡터 표현의 차원을 맞..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 08. 순환 신경망 - 문자 단위 RNN

문자 단위 RNN 언어 모델 입력과 출력의 단위가 단어 벡터 레벨이 아닌, 문자 레벨로 변경하여 RNN을 구현할 수 있음 문자 단위 RNN은 이전 시점의 예측 문자를 다음 시점의 입력으로 사용하며 단어 단위가 아니라 문자 단위를 입, 출력으로 사용하므로 임배딩층을 사용하지 않도록 함 문자 단위 RNN 언어 모델 구현하기 (다 대 다 LSTM) 1) 데이터에 대한 이해와 전처리 '이상한 나라의 앨리스' 소설 데이터를 로드하고 특수문자를 제거하고 단어를 소문자화하는 간단한 전처리를 수행 전처리된 결과인 리스트에서 5개의 원소만 출력하면 이들은 문자열로 구성되어 있으므로 하나의 문자열로 통합하도록 함 하나의 문자열로 통합된 길이는 15만 9천자이며 이를 위해 문자열로부터 단어 집합이 아닌, 문자 집합을 만들도..