Attention
Seq2Seq는 인코더 마지막 히든 스테이트 (hidden state)에 모든 인코더 정보를 우겨넣게 된다. 그리고 LSTM을 통해 Long-term dependency 문제를 해결했지만, 뒤 타임 스텝에서 앞쪽의 정보를 잘 저장하지 못하는 현상이 발생하기도 했다. 이 문제를 보완하기 위해 attention이 등장하게 된다.
동작 원리
어텐션이란, 디코더 (Decoder)가 각 타임 스텝 (time step)에서 결과를 생성할 때에 인코더 (Encoder)의 몇번째 타임 스텝을 더 집중 (Attention)해야하는 지를 스코어 형태로 나타내는 것이다. 각 디코더의 타임 스텝마다 인코더의 히든 스테이트 백터 (hidden state vector)와의 유사도를 계산함으로써, 인코더의 몇번째 타임스텝의 히든 스테이트 백터가 더 필요한 지 적절히 고려할 수 있게 된다. 디코더에서 예측시 인코더에서 집중할 정보를 더 고려하여 예측한다.
RNN기반 Seq2Seq 구조의 경우, 이전 스텝의 히든 스테이트 (hidden state)와 현재 스텝의 디코더 입력값을 통해, 디코더 히든 스테이트를 구해줬다. 어텐션 구조가 추가된 형태에서는 현재 스텝의 디코더 히든 스테이트와 각각의 인코더 타임 스텝의 히든 스테이트들을 내적해서 어텐션 스코어 (Attention scores)를 구해준다. 구해진 스코어를 인코더 히든스테이트 벡터들의 가중치로 사용하여 가중 평균인 Attention output, 즉 하나의 백터를 구해줄 수 있다. 마지막 아웃풋 레이어에는 디코더 타임 스텝의 히든 스테이트 백터와 어텐션 아웃풋 (attention output)을 concat해서 입력하게 된다.
Teacher forcing
티쳐 포싱이란, 디코더의 다음 타임 스텝에 입력값으로 이전 타임 스텝의 결과값이 아닌 정답값을 넣어 학습하는 형태를 말한다. 예를 들어, 그림에서 <START> 토큰이 디코더 첫번째 입력값으로 들어가고, 두번째 입력값은 the가 들어가고 세번째는 poor가 들어가야 한다. 여기서, <START>입력값에 대한 예측값이 the가 아닌 poor가 나온다면, 그 이후로 모든 타임 스텝은 꼬이게될 것이다. 이를 방지하기 위해 이전 타임 스텝의 예측값이 아닌 정답값을 넣어주는 것이 티처 포싱이다.
장점 | 디코더에서 추론 (inference)할 때, 틀린값이 입력값으로 들어가지 않으므로 학습이 빨라진다. |
단점 | 주어진 데이터를 가지고 학습할 때와 실제 환경에서 테스트할 때의 환경이 달라진다. |
단점을 해결하고 장점을 살리기 위해, 보통 적용할때 초기에만 동작하게 하고 모델이 어느정도 정확도가 높아지면 기존방식대로, 디코더 전 타임 스텝의 예측값을 다음 타임스텝의 입력으로 넣어준다.
Attention Mechanism
Luong - dot | 간단한 내적을 통한 유사도 (어텐션) 측정하는 기법으로, 학습가능한 파라미터가 존재하지는 않는다. |
Luong - general | 유사도를 구하고자 하는 두 벡터 사이에 학습가능한 파라미터로 구성된 행렬을 사용한다. |
Luong - concat | 유사도를 구하고자 하는 두 벡터를 concat하여 선형변환(비선형성(선형변환(x)))으로 감싸서 계산을 진행한다. |
Attention 장점
|
'Learning-driven Methodology > DL (Deep Learning)' 카테고리의 다른 글
[Deep Learning] 트랜스포머 구조 (0) | 2023.12.28 |
---|---|
[Deep Learning] 트랜스포머 (Transformer) (0) | 2023.12.28 |
[Deep Learning] Seq2Seq (Sequence to Sequence) (0) | 2023.12.27 |
[Deep Learning] 1D CNN (0) | 2023.09.27 |
[Deep Learning] 방사형 기저 함수 신경망 (Radial Basis Function Network) (0) | 2023.07.17 |