여정의 기록
자연어를 수치화하는 작업 Embedding, Seq2Seq, Attention(Attention is all you need~) 본문
자연어를 수치화하는 작업 Embedding, Seq2Seq, Attention(Attention is all you need~)
Chelsey 2022. 12. 15. 00:34Embedding
Categorical data를 다룰 때
지시변수를 많이 사용한다.
하지만 one hot encoding 방식처럼 범주화 데이터를 다루게되면 데이터가 무한히 커지게된다. -> Fixed Effect 모델 방식
그래서 비슷한 성격의 것을 묶어서 하나의 것으로 보고 다루는 방식을 쓰게 된다.색상이 결과에 영향을 미치는지 정도만 알고 싶을 때 사용 -> Random Effect 모델 방식
One-hot encoding
- 통계의 지시변수로 수많은 범주화 값을 0과 1로 표현하는 방식이다.
- 단어의 개수가 많아질 수록 모형이 커진다. 통계학적 방법에 적합하지 않은 방식이다.
- 이러한 고민 끝에 나온게 Embedding이다.
Embedding
- 의미구조를 유지하면서 단어를 수치화.
- 단어의 구조를 학습해서 단어를 수식차원의 공간에 배치하여 벡터화한다. 그리고 그 값을 이용해서 연구.
- 이것을 word2vector라고 한다.
Word2Vector 방법
- CBOW : 주변단어를 통해 중심단어를 설명하는 신경망 구축
- Skip-Gram : 중심단어를 이용해 주변단어를 설명하는 신경망을 구축
Seq2Seq
문장의 토큰을 순차적으로 입력 - 토큰에 embedding 적용해서 벡터화 - 벡터가 입력으로 - hidden state에 정보 축적 - 데이터 토큰이 모두 들어가고 나면 encoder의 마지막 스텝에서의 hidden state 값 + <sos> 값을 같이 집어넣어서 output을 예측한다. - 예측한 결과값을 다시 입력값으로 넣어서 새로운 output을 내고 .. 계속 반복한다.
- 위 과정에서 손실함수가 추가될 수 있다.
- 다대다 구조 매시점 발생하는 손실함수값을 모두 더해서 구함.
- 각 시점의 output을 구할 때 softmax layer를 거쳐서 벡터의 확률값을 구한다.
문제점
- 연산시간이 오래 걸린다(RNN의 단점, RNN을 2개 이어붙인거라 그럼)
- Vanishing gradient(손실함수 얻는 구간과 실제 업데이트해야하는 모수가 나타나는 구간이 멀어서... )
- 정보의 병목 현상(경사소실 커지면 -> 마지막 단계 hidden state 의 짧은 벡터가 많은 정보를 포함해야한다는 문제)
Attention mechanism
RNN이 문장이 길어지면서 성능이 급격히 떨어지는 것을 보완
입력문장의 정보를 추가적으로 활용한다
encoder가 정보를 압축할 때 해당 토큰의 앞 뒤 문장 정보를 모두 사용한다.
hidden state를 순방향, 역방향에서 이어붙인 것을 활용한다. - GRU - hidden state 두배가 될거다.
t 시점 토큰 예측을 할 때 어떤 토큰을 얼마나 가중치를 줄 것인지 정한다. 이전 t-1과 첫번째 토큰을 가장 많이 반영.
문장마다 가중치를 줄 값은 달라진다.
Alignment - softmax를 이용한 s 번째 값이 t 시점의 값에 영향을 주는 것을 계산
score - t 번째 토큰에 s 번째 토큰이 미치는 영향의 값이 어느 정도인가?, 두 토큰의 값을 dot 계산하는 방법1.
Attention
attention weight값을 통해 source 문장과 target 문장 관계를 알 수 있다.
Self-attention
sorce setence와 target 문장이 같다면 ...
한 문장내에서 it이 어떤 것을 뜻하는지 ...
Transformer
Attention is all you need
RNN에서 벗어나고자 Attention을 병렬로 계산하는 방법을 생각해냄.
Attention mechanis만 이용하는 모형이다.
기계번역 상황 가정
source input - encoder - decoder - targer 문장 순차적 배출
input에서 데이터를 한번에 들어감, 한 문장을 한 번에 넣는다.
데이터는 아래에서 위로 ... batch size * 문장길이 만큼 넣기됨 Embedding 을 적용시킨다. 3차원 데이터가 input으로 사용
Embedding 한 결과를 Network에 넣기 시작한다.
c 단계 결과물 : batch_size * 문장길이* embedding
d : dense network-linear, softmax
'공부중 ... > 딥러닝의통계적이해' 카테고리의 다른 글
Transformer와 BERT (1) | 2022.12.15 |
---|---|
인자 분석, GAN (0) | 2022.12.13 |
비지도 학습법, 주성분 분석, 오토 인코더 (0) | 2022.12.13 |
전이학습, 객체검출, 얼굴인식, 이미지 스타일 변환 (0) | 2022.12.13 |
합성곱 딥러닝 모델들 (0) | 2022.12.13 |