2021년 3월 16일 화요일

Day_07. 순환신경망 & Word2vec

Word2Vec
=단어간 유사도를 반영할수 있도록 단어의 의미를 벡터화 할수 있는 방법론
=단어간 +/-연산
=ex)한국어로 체험 해보는 사이트 https://word2vec.kr/search/
==단어간 연관성을 확인 하는 것


필요 기술
희소 표현 – Sparse Representation
=원-핫 벡터는 희소 벡터 (Sparse Vector)
=희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 한업이 커진다
=원-핫 벡터로 표현시 가지고 있는 코퍼스에 단어가 10000개면 벡터의 차원도 100000
=단어의 인덱스의 부분만 1이고 나머지는 0을 가진다
=ex)10000개의 단어에서 강아지라는 단어의 인덱스가 5였다면 원-핫 벡터의 표현은 0000100..(1뒤에 0이 9995개 이다)
밀집 표현 – Dense Representation
=벡터의 차원을 단어 집합의 크기로 상정하지 않는다
=사용자가 설정한 값으로 모든 단어의 벡터 표현을 맞춘다
=0/1 이 아닌 실수값을 가진다
=ex)강아지=[0.2 1.8 1.1…] 숫자가 128개 있는 128차원일 때 벡터의 차원이 조밀해 져서 밀집 벡터라 한다
워드 임베딩 (Word Embedding)
=단어를 밀집 벡터(dense vector)형태로 표현하는 방법을 의미
=밀집 벡터를 “워드 임베딩” 과정을 거친 결과로 임베딩 벡터 라고 한다
=LSA, Word2Vec, FastText, Glove 등의 방법이 있음
=Keras에서 제공하는 Embedding() 기능은 단어를 랜덤 밀집 벡터로 변환해 가중치를 학습하는것과 같은 방식으로 단어 벡터를 학습하는 방법을 사용


희소 표현 세부사항
단어의 유사성 판단이 어렵다
단어의 “의미”를 다차원 공간에 벡터화 하는 방법을 찾게된다

Word2Vec 의 2가지 방식
CBOW(Continuous Bag of Words)
=주번의 단어를 가지고 중간 단어 예측
=ex)The fat cat (sat) on mat – 가운데 단어 set을 예측 하는 것
==이때 sat을 중심단어(Center word) 라고 하고 주변은 context word 라고 한다
Skip-Gram
=중심 단어로 주변 단어 예측
공통점 알고리즘은 크게 차이가 없어서 하나만 알아도 다른 것 이해가 쉬움

CBOW 방식 구동 방식
=중심 단어 예측을 위해 앞,뒤로 몇 개의 단어를 볼지 정한다(Window 지정)
=the fat cat (sat) on mat 의 window 크기를 2로 지정시
==앞에서 fat / cat 뒤에서 on / mat 을 참고
슬라이딩 윈도우 (Sliding Window)
=위의 그림처럼 데이터 셋을 바꿔가며 학습하는 방식

Word embeding의 중요성
==Tensorflow tutorial 문서 “word embedding”
=== https://www.tensorflow.org/tutorials/text/word_embeddings

Word2Vec 의 3가지 형태
Male-female Man-woman 예측하듯, king-queen예측
Verb tense 과거와 진행형 예측
Country capital 국가- 수도 예측



장단기 메모리(Long-short Term memory , LSTM)
=RNN의 다른 이름”바닐라 RNN(Vanilla RNN –모든 RNN의 기본이라는 뜻)”


바닐라 RNN의 한계
=짧은 시퀀스의 정보만 보관이 가능하다
=시점(time step)이 길어지면 정보가 뒤로 가지 못하는 장기 의존성 문제(The Problem of Long Term Dependencies)가 발생

바닐라 RNN 내부 – Vanilla RNN Internal

LSTM – Long Short Term Memory
=전통적 RNN의 단점을 보완한 RNN의 일종
=은닉 상태(hidden state)를 계산하는 식이 RNN 보다 복잡함
=Cell state 라는 값이 추가
=정보가 바뀌지 않고 계속 흐르는 것은 매우 쉽다



LSTM Diagram
=RNN과 비교해 긴 시퀀스의 입력을 처리하는데 탁월한 성능을 보인다
=그림에서 검정 수평선이 Cell state


LSTM 의 Gate
=Cell state 에 더하거나 없애는 기능
=정보전달의 추가적 방법
=sigmoid layer와 pointwise 곱셈 연산
=sigmoid의 0,1 사이의 값이 얼마나 정보를 전달하는지 척도
=0-아무정보도 보내지 마라, 1-모든 정보를 넘겨라
=LSTM은 3개의 GATE를 가지고 있음 , Cell state 를 보호하고 제어한다
LSTM 동작 방식




1단계

=Cell state 부터 어떤 정보를 버릴지 지정
=Sigmoid layer 로 결정
=gate이름 – forget gate layer
=ht-1과 xt를 받아서 0,1 사이의 값을 ct-1에 보낸다 , 이때 1이면 모든 정보 보존, 0은 모두 버림
2단계
=앞으로 들어오는 정보중 어떤 것을 cell state 에 저장할지 지정
=gate 이름 – input gate
=gate의 sigmoid layer가 어떤 값을 업데이트 할지 정함
=tanh layer가 후보 값들인 ct라는 vector를 만들어 cell state에 더할 준비함
=두가지 정보를 합쳐 업데이트할 재료를 만든다

3단계

=과거 state인 ct-1을 업데이트 해서 cell state 인 ct를 어떻게 업데이트 할지 정해졌기 때문에 실행만 한다
=이전 state에서 ft를 곱해 가장 첫 단계에서 잊기로 정해진 것은 잊어버린다
4단계
=마지막 단계
=가장먼저 sigmoid layer에 input 데이터를 태워 어느 부분을 내보낼지 정함
=cell state 를 tanh layer에 태워 -1과 1사이의 값을 받아 sigmoid gate의 output과 곱함

 


댓글 없음:

댓글 쓰기