본문 바로가기
Study/DL

Attention Mechanism

by 까망우동 2023. 7. 1.
반응형

Index

    Attention mechanism은 인간이 주의를 집중하는 방식과 유사하게 특정 정보와 가장 관련있는 입력 데이터의 특정 부분에 집중할 수 있는 기능을 위한 매커니즘이다. Attention mechanism이 CNN(visual image)측면과, LSTM(sequence)측면에서 

    어떻게 활용되는지를 정리해본다. 

     

    Attention for Image data

    CNN 에서의 Attention (Visual Attention) 활용구조를 보기전에, CNN-LSTM 결합모델을 통한 Image Captioning (이미지를 보고 설명문장을 써주는) 과정을 그려보면 아래와 같다. 

    CNN - LSTM model for Image Captioning

    • Image로 부터 feature를 학습/추출하기 위해 CNN이 Encoder로서 쓰이고, 압축된 feature vector로 부터 text sequence를 생성하기 위해 LSTM이 decoder로 결합된다. 
    • 일반적인 CNN 구조의 FC Layer 직전에서 짤르고, 최종 feature map을 input으로 하여 LSTM을 붙인 것

    CNN-LSTM for Image Captioning

    • LSTM 에 input을 넣는 방식은 아래와 같이 to-first, to-all 두가지이다. to-first는 h(hidden state)의 dimension이 매우 커야해서 부담이고, to-all은 x(input) dimension이 너무 커야해서 부담이다. 두가지 방식 모두 x 또는 h 의 dimension이 너무 크면 LSTM 학습이 불가능하다. 

    이러한 문제를 해결하기 위해 Attention mechanism 이 활용된다. 

    Visual Attention

    • flatten된 최종 추출된 feature를 사용하면 spatial information이 없기 때문에 이전 conv layer의 feature map을 n등분 하여 LSTM의 input data로사용한다. 
    • Attention 모듈은 x(1),x(2)...x(n) : n개의 구역으로 나누어진 CNN의 image feature를 z(t)라는 input feature로 변환하여 LSTM에 전달한다. Attention 모듈이 x를 z로 변환하는 방법은 아래 수식을 참고한다 (α는 a의 softmax)

     

    Attention for Sequential data 

    LSTM 에서의 Attention (Attention LSTM) 활용구조를 보기전에, 하나의 sequence 데이터를 다른 sequence 로 변환하는 기존의 LSTM 결합모델 Seq2Seq를 먼저 알아보자

    Seq2Seq

    • 하나의 sequence를 다른 sequence로 변환해주는 LSTM기반의 encoder-decoder 결합 모델. (주로 NLP에서 사용)
      • Encoder LSTM: Input sentence를 word 단위로 imbedding하여 입력하면, 이것들을 하나의 small fixed-size vector (v)로 압축한다.
      • Decoder LSTM: 인코더가 압축한 v를 통해 word 단위로 output을 예측한다. 각 step에서 생성한 output word를 다음 input으로 사용한다. 

    seq2seq 모델은 Encoder 문장의 문맥과 단어를 모두 기억하려면 너무 큰 사이즈의 v가 필요하다. (디코더 학습이 어려움)

    Attention LSTM

    • Attention LSTM은 seq2seq 모델의 v벡터 크기 한계를 극복하고자 고안된 모델이다. 
    • Output에 영향을 미치는 중요한 Input part를 attention value(weight)를 통해 찾아내는, unveiling DNN black box 과정이라고 할 수 있다. 
    • Attention 은 Query, Key, Value 라는 3가지 벡터를 사용하여 Decoder가 Encoder의 hidden state를 간섭해 weighted average를 재생성하여 다시 Decoder에 input으로 사용하는 구조이다. 
      1. Query: Decoder의 hidden state로, Input sequence에서 어떤 word에 집중해야 하는지 선정기준이된다.
      2. Key: Input word들의 가중치를 계산하기 위해 사용되는 vector (복잡한 모델에서는 Key≠value)
      3. Value: Query에 의해 선정된 Input에서 관심을 가져야할 대상. 사실상 참고하는것은 그 단어에 해당하는 인코더의 hidden state
    • 아래 그림에 프로세스를 단계별로 설명하면
      1. Query(s_t-1)와 Key(h)를 내적한뒤 Softmax를 취하여 Encoding 단계별 Attention Weight(α)를 구한다.
      2. Attention Weight와 각 Value를 선형결합하여 최종 Attention value (a_t)를 구한다
      3. Attention value와 Query를 concatenate한뒤 LSTM 의 Input으로 사용한다. 
      4. 최종 Attention LSTM은 3번의 결과를 hidden state, 직전 디코더의 output을 input 으로 사용한다
      5. LSTM학습 후 Softmax FC 취해 최종 output 산출한다. 
    •  

    반응형

    'Study > DL' 카테고리의 다른 글

    Variational Auto Encoder (VAE)  (0) 2023.07.01
    Auto Encoder  (0) 2023.07.01
    RNN - 2편 (LSTM)  (0) 2023.07.01
    RNN - 1편 (RNN구조, RNN의 Backpropagation)  (0) 2023.07.01
    CNN - 3편 (Up-sampling, U-Net)  (0) 2023.06.30

    댓글