이번에는 지난 시간에 알아본 Seq2Seq 모델의 단점 중 하나인 Encoder를 통해 Bottleneck을 활용해 압축된 정보를 Decoder를 통해 내보내는 것은 long sentences에서는 성능 약화의 요인이 되는 점을 극복하기 위해 활용하고 있는
Attention Mecahnism에 대해서 알아보겠습니다.
[딥러닝 with Python] 순환 신경망(Recurrent Neural Network)
1. Attention Mechanism이란?
- 앞서 언급했듯 Attention은 Seq2Seq에서 Long sentences에서 발생하는 정보 손실 문제로 인해 나오게 되었습니다.
- Attention 이란, 기계어 번역에서 큰 성능 향상을 가져온 방법으로, 이는 모델이 Output을 만들때 Input sequences에서 연관된 부분에 주목해서 만드는 방법을 말합니다.
- Attention은 인코딩 단계에서 마지막 hidden state를 통과하게 하는 대신에, 인코더의 hidden state 정보 모두가 decoder에 전달되게 하는 것입니다.
- 아래 그림처럼, 인코더에서 RNN을 통해 각 sequence 별 hidden state가 나오게 되는데 이를 attention score로 하고, 이 score들을 softmax에 넣어서 attention distribution을 만듭니다.
이제 이렇게 나온 정보들을 바탕으로, 디코더의 hidden state와 attention output을 concatenate 하여 예측값을 만들고 이를 통해 단어를 생성하게 됩니다.
- 이를 Seq2Seq 모델과 연계하여 모델을 구성하는 다음과 같이 만들어 볼 수 있습니다. 이때는 LSTM을 기본으로 해서 sequential data를 처리하였습니다.
'딥러닝 with Python' 카테고리의 다른 글
[딥러닝 with Python] 비전 트랜스포머(Vision Transformer / ViT) (1/2) (0) | 2024.11.07 |
---|---|
[딥러닝 with Python] 트랜스포머 (Transformer) (4) | 2024.11.05 |
[딥러닝 with Python] 순환 신경망(Recurrent Neural Network) (1) | 2024.11.03 |
[딥러닝 with Python] 합성곱 신경망(Convolutional Neural Network) (1) | 2024.11.02 |
[딥러닝 with Python] 인공신경망(Artificial Neural Network / ANN), 데이터 증강(Data Augmentation) (1) | 2024.11.01 |
댓글