본문 바로가기

AI143

자연어처리 : Word Embedding : Glove (Global Vectors for Word Representation, GloVe) 배경 LSA : count 기반 LSA는 DTM이나 TF-IDF 행렬과 같이 각 문서에서의 각 단어의 빈도수를 카운트 한 행렬이라는 전체적인 통계 정보를 입력으로 받아 차원을 축소(Truncated SVD)하여 잠재된 의미를 끌어내는 방법론이었습니다. LSA는 카운트 기반으로 코퍼스의 전체적인 통계 정보를 고려하기는 하지만, 왕:남자 = 여왕:? (정답은 여자)와 같은 단어 의미의 유추 작업(Analogy task)에는 성능이 떨어집니다. Word2Vec : 예측 기반 Word2Vec는 실제값과 예측값에 대한 오차를 손실 함수를 통해 줄이며 학습하는 예측 기반의 방법론이었습니다. Word2Vec는 예측 기반으로 단어 간 유추 작업에는 LSA보다 뛰어나지만, 임베딩 벡터가 윈도우 크기 내에서만 주변 단어를.. 2020. 3. 15.
자연어처리 : Word Embedding : Word2Vec, CBOW, Skip-Gram, Negative Sampling 1. 배경 '비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가진다'라는 가정입니다. 예를들어 강아지란 단어는 귀엽다, 예쁘다, 애교 등의 단어가 주로 함께 등장하는데 분포 가설에 따라서 저런 내용을 가진 텍스트를 벡터화한다면 저 단어들은 의미적으로 가까운 단어가 됩니다. 분산 표현은 분포 가설을 이용하여 단어들의 셋을 학습하고, 벡터에 단어의 의미를 여러 차원에 분산하여 표현합니다. 요약하면 희소 표현이 고차원에 각 차원이 분리된 표현 방법이었다면, 분산 표현은 저차원에 단어의 의미를 여러 차원에다가 분산하여 표현합니다. 이런 표현 방법을 사용하면 단어 간 유사도를 계산할 수 있습니다. 이를 위한 학습 방법으로는 NNLM, RNNLM 등이 있으나 요즘에는 해당 방법들의 속도를 대폭 개선시킨 Word2V.. 2020. 3. 14.
자연어처리 : Topic Modeling : LDA (Latent Dirichlet Allocation) 1. Abstract Topic Modeling은 간단하게 말하자면, 문서의 집합에서 topic을 찾아내는 프로세스를 말합니다. 이는 검색엔진, 고객 민원 시스템 등과 같이 문서의 주제를 알아내는 일이 중요한 곳에서 사용합니다. 나도 client들이 반응을 검색을 할 때, benzene, water은 시약이라는 주제를 알고, room temperature 는 조건, bial은 시약통 같은 topic들을 추려내서 내가 원하는 결과를 알도록 도와줄 수 있다. 2. LDA의 가정 LDA는 문서의 집합으로부터 어떤 토픽이 존재하는지를 알아내기 위한 알고리즘입니다. LDA는 앞서 배운 빈도수 기반의 표현 방법인 BoW의 행렬 DTM 또는 TF-IDF 행렬을 입력으로 하는데, 이로부터 알 수 있는 사실은 LDA는 .. 2020. 3. 14.
자연어 처리 : Topic Modeling : 잠재의미분석 (LSA) 배경 Pizza vs Hamburger 를 비교해보자. Back of Words 로 비교해보면, 이 둘은 관계가 없다. TD-IDF 로 비교해보면, 같은 단어가 없기 때문에 이 둘도 서로 유사도가 없다. 하지만, 이 둘은 food라는 topic으로 모일 수 있고, 단어 기반의 vector이기 때문이다!!, Topic 기반이 아니기 때문이다. LSA는 Topic 기반으로 한다. 이를 위한 대안으로 DTM의 잠재된(Latent) 의미를 이끌어내는 방법으로 잠재 의미 분석(Latent Semantic Analysis, LSA)이라는 방법이 있다. 1. SVD (Singular Value Decomposition) 2020/03/06 - [machine_learning/natural language] - 자연어.. 2020. 3. 12.
자연어처리 : Word Embedding 정의 Word Embedding은 단어를 벡터로 표현하는 방법이다. 원래는 단어를 count 기반으로 단어를 유추하였지만, 단어가 어느정도 연관이 있는지, 단어가 그 문장 속에서 중요한 단어인지를 잘 모를수 밖에 없다. 하지만, Word Embedding은 단어를 벡터로 표현하기 때문에, 단어간의 유사도에 따라 벡터의 방향을 설정하기 때문에, count 기반의 단점을 보완할 수 있다. 1. 희소 표현 (Sparse Representation) One_hot encoding이 그 예다. 단어의 index의 값은 1이고, 나머지 index는 0으로 표현한다. Ex) 강아지 = [ 0 0 0 0 1 0 0 0 0 0 0 0 ... 중략 ... 0] # 이 때 1 뒤의 0의 수는 9995개. 단점 : one-h.. 2020. 3. 12.
DL : Keras Sequential method 정리 https://github.com/keras-team/keras/blob/master/keras/engine/sequential.py keras-team/keras Deep Learning for humans. Contribute to keras-team/keras development by creating an account on GitHub. github.com 2020. 3. 11.
자연어처리 : RNN의 언어 모델 (RNNLM) NN 언어 모델(Recurrent Neural Network Language Model, RNNLM) 2020/03/05 - [machine_learning/natural language] - 자연어처리 : 언어모델 : N-gram 자연어처리 : 언어모델 : N-gram 정의 SLM의 일종이지만, 단어 고려를 모든 단어를 고려하는 것이 아닌, n개로 정한 갯수만 고려한다. 1. corpus에서 카운트하지 못하는 경우의 확률 감소 SLM의 한계는 훈련 코퍼스에 확률을 계산하고 싶은 문장이.. mambo-coding-note.tistory.com gram은 N개의 단어들만 생각을 하게되고, 문맥을 파악하지 못한다는 단점이 존재한다. 하지만 RNN은 sequence를 다루기 쉽고, time step이라는 시점.. 2020. 3. 11.
DL : RNN : GRU (Gated Recurrent Unit) 1. GRU(Gated Recurrent Unit) LSTM에서는 출력, 입력, 삭제 게이트라는 3개의 게이트가 존재했습니다. 반면, GRU에서는 업데이트 게이트와 리셋 게이트 두 가지 게이트만이 존재합니다. GRU는 LSTM보다 학습 속도가 빠르다고 알려져있지만 여러 평가에서 GRU는 LSTM과 비슷한 성능을 보인다고 알려져 있습니다. 반드시 LSTM 대신 GRU를 사용하는 것이 좋지는 않습니다. GRU와 LSTM 중 어떤 것이 모델의 성능면에서 더 낫다라고 단정지어 말할 수 없으며, 기존에 LSTM을 사용하면서 최적의 하이퍼파라미터를 찾아낸 상황이라면 굳이 GRU로 바꿔서 사용할 필요는 없습니다. 사실 아직까지는 GRU보다 LSTM이 좀 더 많이 사용되는 편이고, 또한 일부 논문에서는 여전히 LSTM.. 2020. 3. 10.
DL : RNN : LSTM (Long-Short-Term Memory) 1. Vanilla RNN의 한계점 앞 챕터에서 바닐라 RNN은 출력 결과가 이전의 계산 결과에 의존한다는 것을 언급한 바 있습니다. 하지만 바닐라 RNN은 비교적 짧은 시퀀스(sequence)에 대해서만 효과를 보이는 단점이 있습니다. 바닐라 RNN의 시점(time step)이 길어질 수록 앞의 정보가 뒤로 충분히 전달되지 못하는 현상이 발생합니다. 뒤로갈수록 정보량의 크기가 적어지는 현상이 벌어집니다. (Sigmoid의 Gradient Vanishing과 같은 현상) 이를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 합니다. 2. Vanilla RNN 내부 ht = tanh(Wx xt+Wh ht−1+b) yt = Wy ht 바닐라 RNN은 xt와 ht−1.. 2020. 3. 10.
DL : RNN (Recurrent Neural Network) 1. RNN 등장 배경 피드 포워드 신경망은 입력의 길이가 고정되어 있어 자연어 처리를 위한 신경망으로는 한계가 있었습니다. 결국 다양한 길이의 입력 시퀀스를 처리할 수 있는 인공 신경망이 필요 (RNN의 재귀함수 같은 동작때문, time_step...)하게 되었는데, 자연어 처리에 대표적으로 사용되는 인공 신경망인 RNN, LSTM 이 생긴다. 2. RNN 정의 다양한 길이의 입력 시퀀스를 처리할 수 있는 인공 신경망이다. 또한 은닉층의 노드에서 활성화함수를 통해 나온 결과값을 출력층 방향으로 내보내면서, 다시 은닉층의 노드의 다음 계산의 입력을 보내지는 특징을 가진다. RNN cell, Memory cell 은닉층에서 활성화함수를 통해 결과를 내보내는 역할을 하는 노드를 cell이라 한다. Hidde.. 2020. 3. 10.
DL : Keras : 20개 뉴스 판별하기 project 20개 뉴스 그룹 data에 대한 이해¶ In [16]: import pandas as pd from sklearn.datasets import fetch_20newsgroups # %matplotlib inline : ipython에서 함수 결과값을 inline 웹브라우저상 안에서 보여주는 code import matplotlib.pyplot as plt from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.utils import to_categorical news = fetch_20newsgroups(subset='train') # train을 기재하면 훈련데이터만 리턴 Downloading 20news data.. 2020. 3. 10.
DL : Keras : Sequential vs Functional API Keras의 함수형 (Keras Functional API)¶ 1. sequential API로 만든 model¶ In [ ]: # 이 코드는 소프트맥스 회귀 챕터에서 가져온 코드임. from tensorflow.keras.models import Semquential from tensorflow.keras.layers import Dense model=Sequential() model.add(Dense(3, input_dim=4, activation='softmax')) 직관적이고 편리하지만, 단순히 층을 쌓는 것만으로는 구현할 수 없는 복잡한 인공신경망을 구현할 수 없다. 2. functional API로 만든 model¶ 1) 전결합 피드 포워드 신경망 (Fully-connected FFNN)¶ I.. 2020. 3. 10.