본문 바로가기

기계학습/자연어 처리 머신러닝28

RNN 실습 - 스팸메일 분류기 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081import numpy as npimport pandas as pd import matplotlib.pyplot as pltfrom tensorflow.keras.preprocessing.text import Tokenizerfrom tensorflow.keras.preprocessing.sequence import pad_sequences from google.colab import drivedrive.mount('/content/d.. 2020. 2. 12.
공부정리 - map 함수 : 말 그대로, 매핑(mapping) 을 도와주는 함수 > 형식 : map(함수, 리스트) or map(함수, 튜플)ex) a = [1.2, 2.5, 3.7, 4.6] a = list(map(int, a))>> a = [1, 2, 3, 4] > 왜 함수라고 표현할까? - 실제로 해당 함수에 값을 집어넣기 때문!ex) map(int, a) -> int(a) 연산을 한다! > 반환형식은? : map 이라는, "자료형"을 반환한다! - 따라서, map(int, a) 이런식으로만 할 경우, 제대로 된 실제 값을 확인하지 못함- 반드시, list, tuple 등으로 처리했을 경우에만 매핑 된 결과를 확인할 수 있다. - seaborn 함수 > 의의 : 데이터를 더 잘 시각화하여 표현하기 위함> 2020. 2. 2.
글자레벨 번역기 코드 - 딥러닝을 이용한 자연어처리 입문 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816.. 2020. 1. 31.
GRU, ELMO - 딥러닝을 이용한 자연어처리 입문 # GRU : Gate Recursive Unit(게이트 순환 유닛) - 의의 : - LSTM 과 같은 성능, 그러나 은닉상태(h 값)를 계산하는 식은 더 간단하게 - 게이트의 갯수가 2개밖에 없다 (업데이트, 리셋 게이트) # ELMo (Embedding from Language Model) - 특징 : 사전에 훈련된 언어 모델을 사용한다 - 문제의식 : Bank Account(은행 계좌)와 River Bank(강둑) 같이, 같은 Bank임에도 불구하고, 문맥에 따라 다른 의미를 띠기도 한다-> 그러나 일반적인 Glove 나 word2Vec 의 경우, Bank 가 똑같은 의미로 사용되었다고 간주하고 임베딩을 시킴-> 즉, 동음이의어에 취약한 특성을 지님. - 해결책 : 문맥을 반영한 워드 임베딩! (c.. 2020. 1. 28.
LSTM - 딥러닝을 이용한 자연어처리 입문 # LSTM : 장단기 메모리(Long-short term memory) - 바닐라 RNN : 가장 기본적인 꼴의 RNN > 이 RNN으로부터 더 발전된 꼴의 RNN 들이 LSTM 등 여러가지 존재 - 장기 의존성 문제 : (RNN 의 한계점) > 맨 마지막 state 에서, 올바른 y 값을 출력하기 위해서 앞부분에 있는 state 의 출력값이 필요하다고 하자 그럴 경우, 앞 부분의 state 값은 뒷부분까지 널리 전달되지 못하기 떄문에 (영향력이 미비해짐) 문제 발생 - 구성 방식 : 모두 시그모이드 함수를 사용한다는 특징 지님 1) 입력 게이트 : 현재의 정보를 기억하기 위한 게이트 > i : 시그모이드 함수 사용 -> 0, 1 출력 > g : 하이퍼볼릭 탄젠트 함수 사용 -> -1, 1 출력 >> .. 2020. 1. 28.
RNN 언어모델 - 딥러닝을 이용한 자연어처리 입문 # RNNLM vs. n-gram, NNLM - n-gram, NNLM : 고정된 갯수의 단어만큼을 입력으로 받는다 - RNNLN : 반드시 고정된 갯수일 필요가 없다 # RNNLM 의 훈련 과정 - "교사 강요" 기법의 사용 (teacher forcing) > RNN 의 기본 원칙인, "현재의 출력값을 다음 상태 값으로 전달한다" 방식을 훈련 과정에선 하지 않는다 (훈련이 다 끝난, 테스트 과정에서만 은닉 상태를 전달함) > 실제 훈련 과정에서는, (현재의 입력값) + (실제 정답 값) 두 가지만 이용해서 훈련한다.> 즉, t 시점의 실제 정답값을 t+1 시점의 입력값으로 전달한다. ( 출력값 전달 X ) > Why? : 오류 발생 가능성 많음, 시간이 오래 걸림 - 여태껏 봐왔던 대부분의 RNN 도식.. 2020. 1. 28.
RNN - 딥러닝을 이용한 자연어처리 입문 # 순환 신경망 (RNN) - 의의 : 일반적인 피드 포워드 신경망 - 입력 길이 고정 > 문장 등 길이가 긴 입력들을 처리하는 신경망이 필요ex) RNN, LSTM 문장 = 단어 시퀀스 라고 할 수 있다.- 시퀀스 모델 : 시퀀스를 처리하기 위해 고안 된 모델. > ex) RNN, LSTM, GRU ** 왜 b 를 편향값이라고 했었던 걸까? >> 입력으로 들어오는 데이터 셋은, 어느정도 전체적으로 치우친 경향을 보일 수 있다. 그걸 표현하기 위한 상수값임. ex) 지문인식 프로젝트에서, 똑같은 지문임에도 불구하고 전체적인 중심 좌표가 어딘가로 치우친 경우. >> 편향과 regularization 에서 사용하는 값과는 전혀 다른 것이다!! 주의하자>How? : regularization 은 변수 x 값들.. 2020. 1. 28.
태깅 작업 - 딥러닝을 이용한 자연어처리 입문 # 태깅 작업 - 정의 : 각 단어가 어떤 유형에 속해있는지를 알아내는 작업 - 종류 : 1) 개체명 인식 : 각 단어의 유형이 사람, 단체, 장소 등 어떤 유형인가2) 품사 태깅 : 각 단어의 품사가 동사, 명사 등 무엇인가 - 케라스를 이용한 태깅 작업 특징 1) RNN 의 다대다 작업2) 앞뒤 시점을 모두 고려하는 양방향 RNN - 태깅 작업 특징 (1) : 훈련 데이터1) 태깅을 해야 하는 단어 = X 값, 해당 X 값에 대응되는 레이블 값 = Y2) pair 을 이루는 x, y 값에 대해 정수 인코딩을 거침 -> 데이터들의 길이를 맞춰주기 위한 패딩 작업> 무슨 소리지?? - 태깅 작업 특징 (2) : 시퀀스 레이블링> 말 그대로, 시퀀스를 가진 X 의 데이터에 대해, 시퀀스를 가진 Y라는 레이.. 2020. 1. 28.
워드 임배딩 - 딥러닝을 이용한 자연어처리 입문 # 워드 임베딩 - 정의 : 단어를 벡터로 표현 + 밀집 표현 # 희소표현 vs 밀집 표현 - 희소 표현 : 벡터 또는 행렬이 대부분 0으로 채워져 있는 경우> 단점 :1) 공간적 낭비 : 쓸데없는 것까지도 다 표현을 해야 함 (0으로 표시)유사 사례) DTM 방식2) 단어의 의미를 담지 못함 -> 단어간의 유사성을 찾지 못함> sol : 분산표현 (밀집표현 방식이 약간 섞임) ->이 연산의 결괏값인 벡터 = "임베딩 벡터" - 밀집 표현 > 장점 : 1) 사용자가 설정한 차원수만큼으로 줄일 수 있다.2) 0, 1로만 구성된 것이 아니라, 0이상 1이하의 실수 값을 갖는다3) 단어 간 유사도를 담을 수 있다. - 분산표현 > 가정 : 비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가진다 (=분포가설)>.. 2020. 1. 28.
기계 언어 - 딥러닝을 이용한 자연어처리 입문 # 시퀀스 투 시퀀스 - 활용 방식 : 입력 문장이 있으면, 이에 대응되는 출력 문장이 있을때 활용 (말 그대로 sequence -> sequence) ex) 챗봇, 번역기, 내용 요약, 음성인식 - 특성 : RNN 구조와 거의 동일하나, 설계된 방식이 살짝 다를 뿐이다. > 앞서 다뤘던 RNN 의 경우, 하나의 단어가 입력된다면 그 이후의 모든 단어들을 예측해서 하나의 문장을 만들어내는 방식이었다. > 반면, seq2seq 은 하나의 입력 문장을 받아서 또 다른 문장 하나를 생성해내는 것이기 때문에, RNN 을 더 심화한 버전이다. - 구성 형태 : 인코더, 컨텍스트 벡터, 디코더 1) 인코더 : 입력된 문장이 있으면, 인코딩 처리해서 컨텍스트 벡터 형식으로 변형해서 전달> 이때, 인코더로 들어가기 전.. 2020. 1. 28.
어텐션 매커니즘 - 딥러닝을 이용한 자연어처리 입문 # 어탠션 매커니즘 - seq2seq 한계 :1) 하나의 고정 길이의 컨텍스트 벡터로 압축 -> 정보 손실 발생2) 원래의 시점으로부터 거리가 멀어질수록 기울기 소실 심화 - 어텐션 매커니즘의 기본 방식 : > 디코더에서 출력 단어를 예측할 매 시점마다, 인코더의 전체 문장 재참조 >단, 전체 문장의 모든 부분 참조 X -> 연관있는 단어만 조금 더 attention 을 갖고 집중 - key-value 방식이란 : > dictionary 자료형. 인덱스 값이 있고, 이에 대응되는 값이 매핑됨 - 어탠션 함수란 > 식 : Attention(Q, K, V) = Attention Value- Q : 쿼리- K : key 값- V : value 값 > 쿼리가 주어진다면, 해당 쿼리값이 각각의 key 값들과의 유.. 2020. 1. 28.
딥 러닝 개념 모음 - 딥러닝을 이용한 자연어처리 입문 # 퍼셉트론 : N 개의 입력값 X 를 받아서, 1개의 출력값 Y 를 만드는 모델 # 단층 퍼셉트론 + 시그모이드 활성화 함수 = 로지스틱 회귀 # 퍼셉트론 종류 1) 단층 퍼셉트론 : - 은닉층 X, 입력층과 출력층만 존재- 한계 : 다양한 출력값을 나타내지 못함2) 다층 퍼셉트론 - 정의 : 은닉층이 한 개 이상 존재- 심층 신경망 (DNN, Deep Neural Network) : 두 개 이상의 은닉층을 가진 경우 > 딥러닝 : 심층 신경망을 학습시키는 것- 의의 : 다양한 출력값을 나타낼 수 있음 (단층 퍼셉트론 한계 극복) # 퍼셉트론의 여러 개념 - 학습 : 매개변수 W (parameter) 를 최적 값으로 구해내는 과정 - 손실함수 : - 옵티마이저 : 손실함수 값을 최적으로 만드는 기법.e.. 2020. 1. 3.