일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- install
- seq2seq
- nlp
- machinelearning
- cs231n
- json
- pip
- Stanford
- error
- Standford
- terminal
- deeplearning
- linux
- gensim
- computer
- slideshare
- git
- text
- tab
- cs224n
- Statistics
- Vim
- computer_setting
- language_model
- paper_review
- code
- review
- github
- natural_language_processing
- Ai
- Today
- Total
목록NLP (14)
NLP/AI/Statistics
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.2) [ML] model = DecisionTreeRegression() model.fit(x_train, y_train) pred = model.predict(x_test) score = model.score(x_test, y_test) [DL] import tensorflow as tf from tesnsorflow import keras from tensorflow.keras import layers from keras.callbacks import ModelCheckpoint, EarlyStopping def build_model(): model = keras.Sequenti..

앞서 Seq2Seq에 대하여 설명했다. Seq2Seq는 encoder, decoder 개념을 사용하여 입력 시퀀스를 압축하고 출력 시퀀스를 생성하는 모델이다. 이는 기계번역 task에서 주로 사용되지만, encoder에서 일정 크기로 모든 시퀀스 정보를 압축하여 표현하려고 하기 때문에 정보손실이 발생하는 문제가 있다. 이러한 문제를 보완하고자 Attention 모델이 제안되었다. Attention 모델은 decoder가 단순히 encoder의 압축된 정보만을 받아 예측 시퀀스를 출력하는 것이 아니라, decoder가 출력되는 시점마다 encoder에서의 전체 입력 문장을 한번더 검토하도록 한다. 이 때 decoder는 encoder의 모든 입력 시퀀스를 동일한 가중치로 받아들이지 않고, 중요한 단어에 대..

Sequence to sequence 모델은 seq2seq로도 불리기 때문에 앞으로의 글에서 sequence to sequence 모델을 seq2seq로 칭하기로 한다. seq2seq는 흔히 기계번역, 챗봇, 요약 등과 같이 입력 시퀀스로부터 출력 시퀀스를 내보내는 모델이다. 즉, 연속된 한국어 문장을 모델에 입력하여 학습한 뒤, 연속된 영어 문장을 출력하는 기계번역의 형태이거나 질문을 모델에 입력하여 학습한 뒤, 답변을 출력하는 QA의 형태로 활용된다. 여기에서 입력 문장은 인코더(encoder)에 입력되고 출력 문장은 디코더(decoder)로부터 출력된다. 이를 도식화하면 다음과 같다. #. 인코더(encoder): 연속된 입력 문장을 이용하여 context vector를 구성 #. 디코더(decod..

앞에서 기본적인 순환신경망인 RNN(Recurrent Neural Network)에 대하여 설명하였다. RNN이 가지는 장기의존성 문제를 해결하기 위해 LSTM (Long Short-Term Memory) 모델이 소개되었으며, 이번 글에서는 LSTM의 특징과 내부 구조에 대하여 설명한다. LSTM은 간단히 설명하자면, RNN의 변형 구조로써 게이트 메커니즘을 추가한 모델이라고 할 수 있다. RNN의 내부 구조에 입력 게이트, 망각 게이트, 출력 게이트를 추가하여 장기 의존성 문제를 해결하고자 한다. 이러한 LSTM의 구조는 다음의 그림과 같다. 기본적으로 입력층, 은닉층, 출력층이 연속된 시퀀스의 형태인 것은 RNN과 동일하다. 다만, 은닉층에서의 내부구조가 더 복잡하게 설계되어 있는 것을 알 수 있다...

텍스트는 연속된 토큰의 형태로 시퀀스 데이터에 속한다. 이러한 비정형 데이터를 처리하기 위해 가장 유용한 딥러닝 모델을 순환신경망이라고 한다. 순환신경망 모델은 이미지처리에서 주로 사용되는 CNN(Convolutional Neural Network) 모델과 달리 데이터의 연속적인 정보를 저장하여 순차정보를 학습하는 특징이 있으며 입력 시퀀스의 길이를 고정할 필요가 없기 때문에 텍스트를 처리하기에 용이하다는 특징이 있다. 순환신경망의 대표적인 모델로는 Vanilla-RNN (Recurrent Neural Network), LSTM (Long Short-Term Memory), GRU (Gated Recurrent Unit)이 있다. Vanilla-RNN이 흔히 RNN이라고 칭하는 모델을 의미하며, LSTM..
문서 유사도란 문서 간에 얼마나 유사성을 갔는지에 대한 지표를 의미한다. 문서 유사도는 자연어처리에서 자주 사용되는 방법으로, 문서 간의 비교 뿐만 아니라 문서 내의 단어들 간의 비교에서도 문서 유사도 방법을 활용한다. 유사도 방법에는 크게 3가지가 있다. 1). 코사인 유사도 2). 자카드 유사도 3). 유클리드 유사도 1) 코사인 유사도 (Cosine Similarity) 코사인 유사도는 쉽게 말해 코사인 각도를 이용하여 벡터 간의 유사도를 추정하는 방법이다. 두 가지의 벡터가 서로 같은 방향일 경우 1, 90도의 각을 이룰 때 0, 180도의 각으로 완전히 반대의 방향을 나타낼 때 -1의 유사도 값을 갖게 된다. 즉, 코사인 유사도는 [-1, 1]의 범위의 값으로 나타날 수 있다. 이러한 코사인 유..
앞서 Bag-of-Words 에 대하여 설명하였는데, 이 때 빈도 기반의 bag-of-words에서 주의해야할 점이 있다. Bag-of-Words는 빈도 기반이기 때문에 문서 혹은 문장에서 자주 등장할 수 밖에 없는 관사, 조사, 지칭어 같은 불용어가 존재한다. 예를 들어, 영어에서는 the나 a, 한국어에서는 그, 이, 이다. 등이 불용어에 포함된다. 이 때 불용어를 처리하는 방법으로는 stop words를 정의하여 특정 단어를 제거한 상태에서 텍스트를 처리하거나 영어에서는 대문자를 소문자로 통일시켜 처리하는 방법이 있지만, 이처럼 특정 단어를 제거하거나 다른 단어로 대체하는 불용어는 텍스트의 의미를 갖지 않아 제거해도 문장의 의미를 흐트리지 않는 용어를 말한다. 하지만 자주 등장한다고 해서 무조건 무..
텍스트는 비구조화된 형식의 데이터이다. 비구조화된 형식의 텍스트 데이터를 처리하기 위한 연구가 진행되었으며, 앞서 설명했던 n-gram 도 텍스트를 처리하기 위한 방법으로 사용된다. 각각의 토큰 단위로 표현되는 텍스트를 수치화된 데이터로 변환하기 위한 방법(embedding)으로 Bag-of-Words를 소개하고자 한다. Bag-of-Words는 단어의 순서를 고려하지 않고 빈도수 기반으로 단어를 표현하는 frequency representation 방법이다. 즉, 특정 문서 내에 특정 단어가 몇번 등장했는가를 고려하여 수치로 표현한다. 예를 들어, 1) 나는 바나나를 좋아해 그리고 너는 바나나를 좋아해 2) 너는 포도를 좋아해 그리고 너는 딸기를 싫어해 두 문장의 vocabulary는 ['나는', '바..
통계적 언어 모델 과 N-gram 언어모델 은 희소 문제가 발생하며, 이러한 문제를 해결하기 위한 generalization기법으로 smoothing 기법이 있다. Smoothing기법 중 대표적인 laplace smoothing과 back-off smoothing 기법에 대하여 소개하고자 한다. 우선, smoothing 이란 확률값이 0이 되지 않도록 하여 문장 생성 확률이 정의되지 않는 문제를 해결하기 위한 방법이다. 1) Laplace(add-one) smoothing Laplace smoothing 기법은 단어의 출현 빈도에 1을 더하여 빈도가 0이되는 경우가 없도록 한다. n-gram 언어 모델의 식에서 분모에 단어집합의 수를 더하고, 분자에 1을 더하여 표현하며, 각 n-gram에 따른 식은 ..
Language Model: 통계적 언어 모델에서 조건부 확률을 이용하여 문장 생성 확률을 나타내는 방법에 대하여 설명했다. 빈도 기반의 확률분포를 이용한 언어 모델은 특정한 연속된 단어열이 학습말뭉치에 존재하지 않아 확률이 정의되지 않는 문제가 발생한다. 또한, 빈도 기반의 확률을 나타내기 때문에 단어열의 길이가 길어질수록 해당 문장이 학습 말뭉치에 나타나지 않을 확률이 크다. 이러한 문제를 해결하기 위해 n-gram 언어 모델이라는 개념이 소개되었다. n-gram은 임의의 개수 n에 따라 연속된 단어들을 하나의 토큰으로 처리한다. 이 때 지정한 임의의 개수에 따라 아래와 같이 unigram, bigram, trigram, ..., n-gram 으로 표현된다. 예시) "이번 글에서는 언어 모델에 대하여..