=단어간 유사도를 반영할수 있도록 단어의 의미를 벡터화 할수 있는 방법론
=단어간 +/-연산
=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과 곱함 |
댓글 없음:
댓글 쓰기