Sequence-to-Sequence
- 트랜스포머 : 기계 번역(machine translation) 등 시퀀스-투-시퀀스 과제를 수행하기 위한 모델
- 시퀀스 : 단어(word)의 나열. 문장
- 시퀀스-투-시퀀스 : 특정 속성을 지닌 시퀀스를 다른 속성의 시퀀스로 변환하는 작업. 예) 번역 모델
- 소스 언어(바꿀 특성) -> 타깃 언어(반환되는 언어)
- 시퀀스-투-시퀀스 태스크는 소스와 타깃의 길이가 달라도 해당 과제 수행에 문제가 없어야함
인코더와 디코더
- 트랜스포머는 시퀀스-투-시퀀스 과제 수행에 특화된 모델
- 임의의 시퀀스를 해당 시퀀스와 속성이 다른 시퀀스로 변환하는 작업이라면, 꼭 기계 번역이 아니어도 잘 동작함
- 시퀀스-투-시퀀스 과제를 수행하는 모델은 대개 encoder, decoder 두 개 파트로 구성됨
- 인코딩 : 인코더가 소스 시퀀스 정보를 압축하는 과정
- 디코딩 : 디코더가 타겟 시퀀스를 생성하는 과정
Seq2seq 모델의 메커니즘
- https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/
- Seq2seq은 기계 번역, 문서 요약, 이미지 캡셔닝 등의 문제에서 큰 성공을 거둔 딥러닝 모델
- 글자, 단어, 이미지의 feature등을 시퀀스로 입력받아 모델에서 처리
- 신경망 기계 번역 : 입력-일련의 단어로 이뤄진 시퀀스-> 맨 앞 단어부터 차례로 모델에서 처리-> 출력-비슷하지만 다른 형태의 문장
- seq2seq 모델은 하나의 encoder와 하나의 decoder로 이뤄져 있음
- 신경망 기계 번역도 동일한 구조
- 기계 번역의 경우 context가 하나의 벡터 형태로 전달됨
- 대부분 encoder, decoder는 둘 다 RNN을 이용함
- context는 float로 이뤄진 하나의 벡터(더 높은 값을 가지는 소수를 더 밝게 표시)
- 이 context 벡터의 크기는 모델을 처음 설정할 때 원하는 값으로 설정할 수 있지만, 보통 encoder RNN의 hidden unit 개수로 지정
- hidden unit에서 출력된 hidden state를 하나의 벡터 형태로 만들어서 사용하기 때문
- seq2seq 모델의 RNN은 한 타임 스텝마다 두 개의 입력을 받음
- 하나는 sequence의 한 아이템, 다른 하나는 그 전 스텝에서 RNN의 hidden state
- RNN에 들어가기 전 vector 변환 필수
- 인코더의 벡터 변환 - word embedding 알고리즘 이용
- pre-trained embeddings를 이용하거나 우리가 가진 데이터셋을 이용해 직접 학습시킬 수 있음
- Seq2seq의 encoder, decoder = RNN
- RNN은 한 번 아이템을 처리할 때마다 새로 들어온 아이템을 이용해 hidden state를 업데이트함
- 각 스텝마다 RNN에서 동작 -> 각 스텝마다 입력과 출력을 정확히 확인 가능
- 마지막 단어의 hidden state가 우리가 decoder에게 넘겨주는 context
Attention 모델의 메커니즘
- transformer 직전에 나온 모델
- Seq2seq 모델의 문제점 : 장기 의존성 문제
- context 벡터가 앞서 입력된 단어의 정보를 충분히 반영하지 못함
- Attention 모델은 두 가지 측면에서 기존의 Seq2seq 모델과 다름
- 인코더는 훨씬 더 많은 데이터를 디코더에 전달
- 인코더는 인코딩 단계의 마지막 hidden state의 context vector만 전달하지 않고 모든 step의 hidden states를 디코더에 전달
- decoder가 출력을 생성할 때 현재 스텝에서 관련있는 입력을 찾아내기 위한 과정이 추가됨
- encoder에서 받은 전체 hidden states를 반영
- hidden state에 점수를 부여 -> decoder가 단어를 생성하는 매 스텝마다 반복
- hidden state에 소프트맥스 점수를 곱하여 점수가 높은 숨겨진 상태를 증폭하고 점수가 낮은 hidden state를 제거
- attention을 이용하면 각 decoding 스텝에서 입력 문장의 어떤 부분에 집중하고 있는지 알 수 있음
- 현재 모델이 아무 이유 없이 출력의 첫 번째 단어를 입력의 첫 번째 단어와 맞추는 align이 아님
'데이터분석 공부 > DSBA 4기' 카테고리의 다른 글
깃허브 파일 및 폴더 삭제 (0) | 2024.05.12 |
---|---|
딥러닝 언어 모델 (순방향/역방향 언어 모델, Masked Language Model, Skip-Gram Model) (0) | 2024.04.30 |
파이썬 pip install 에러 해결 : 윈도우 환경변수 PATH 설정 (0) | 2024.04.28 |
순환 신경망(Recurrent Neural Network, RNN) (0) | 2024.04.22 |
16/04/24 TIL 딥러닝 컨볼루션 신경망, 과대적합 방지, 전이 학습, 파인 튜닝 (0) | 2024.04.16 |