-
Natural Langauge Generations
- 보통 auto-regressive task(이전의 나의 상태가 미래의 나의 상태를 좌우한다.)로 접근
- Language model을 통해 주어진 단어들을 기반으로 다음단어를 예측하는 형태
- Machine Translation
- 한때 자연어처리의 꽃
- SeqtoSeq와 Attention의 등장으로 가장먼저 상용화 성공
-
Sequence to Sequnce

- Encoder
- Sequence를 하나의 context vector로 압축
- 전체 문장을 받아서 하나의 벡터로 압축
- Decoder
- Context Vector를 condition으로 받는 조건부 언어모델
- Generator
- Decoder의 hidden state를 softmax를 통해 multinoulli 분포로 변환
- 다음 단어를 추측하기 위한 확률분포 변환
-
Attention이 없는 Transformer → 긴 문장에 대처가 되지 않는다.
-
번역에서의 Attention
- 쿼리를 날리고 키를 매칭하고, 비슷한 정도대로 정보를 취합하여 가져온다.
-
Linear Transformation
- 마음의 상태(State)를 잘 반영하면서 좋은 검색 결과를 이끌어내는 쿼리를 얻기 위함.
- 내가 필요한 정보 → 좋은 검색 결과를 이끌어내는 쿼리
-
Attention
- 미분 가능한 Key-Value Function
- Attention 함수의 입력은 Query, Key, Value
- 정보를 잘 얻기위한 Query를 변환하는 방법을 배우는 과정
-
Attention을 통해 RNN의 hidden state의 한계를 극복가능
- LSTM을 쓰더라도 context vector에 모든 정보를 담기에는 한계가 있음
- 더 긴 길이의 입출력에도 대처 가능
-
Masking at Attention
- 각 문장은 길이가 다 다른데 남은 공간에는 pad가 들어감
- 문제는 해당 패드도 유사도를 가지게 됨.
- pad처리 한 부분을 -무한대를 치환 (마스크 적용)
- 그 후 softmax에 넣어 경계 정보를 가지고 오지 않음
-
서로 길이가 다른 시퀀스들이 미니배치로 묶일 경우 <PAD>가 빈칸에 할당됨
- 이에 따라 <PAD>에 attention weight가 할당 될 수 있음
-
Dot-product 결과 값에 masking을 통해 음의 무한대 값을 넣으므로서, Softmax이후의 attention weight를 0으로 만들 수 있음.
- 이를 통해 <PAD>에 attention weight가 할당되는 것을 막거나,
- 학습 시, 미래의 time-stap에 attention weight가 할당되는 것을 막을 수 있음.
-
Transformer Overview
-
Multi-head Attention
- Attention @seq2seq
- Dot-product연산은 consine similarity와 매우 유사
- 즉, attention은 query를 잘 만들어내서, query와 유사한 key를 찾는 과정
- 그리고, 해당 key-value로 부터 필요한 정보를 얻어내는 과정
- Decorder의 각 time-step마다 encoder로 부터 attention을 통해 정보를 얻어와서 생성 토큰의 품질을 향상
- Multi-head Attention @Transformer
- 각 head별로 attention을 수행하여 다양한 정보를 얻어올 수 있음
- Self-attention을 통해 이전 layer의 정보를 encoding,decoding
- Attention을 통해 encoder의 정보를 얻어옴.