본문 바로가기
IT 와 Social 이야기/NLP 자연어처리

[딥러닝을이용한 자연어 처리 입문] 1601 어텐션 메커니즘 (Attention Mechanism)

by manga0713 2021. 6. 2.

1. 어텐션 메커니즘 (Attention Mechanism)의 아이디어

 

RNN에 기반한 seq2seq 모델의 문제점

 

첫째, 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하니까 정보 손실이 발생합니다.
둘째, RNN의 고질적인 문제인 기울기 소실(Vanishing Gradient) 문제가 존재합니다.

 

이를 위한 대안으로 입력 시퀀스가 길어지면 출력 시퀀스의 정확도가 떨어지는 것을 보정해주기 위한 등장한 기법인 어텐션(attention) 등장

 

- 디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장중 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중(attention)해서 봄

 

2. 어텐션 함수(Attention Function)

 

- 어텐션을 함수로 표현하면  "Attention(Q, K, V) = Attention Value"

 

 

- 주어진 '쿼리(Query)'에 대해서 모든 '키(Key)'와의 유사도를 각각 구하여 이 유사도를 키와 맵핑되어있는 각각의 '값(Value)'에 반영. 그리고 유사도가 반영된 '값(Value)'을 모두 더한 '어텐션 값(Attention Value)를 리턴 함

  • Q = Query : t 시점의 디코더 셀에서의 은닉 상태
  • K = Keys : 모든 시점의 인코더 셀의 은닉 상태들
  • V = Values : 모든 시점의 인코더 셀의 은닉 상태들

 

3. 닷-프로덕트 어텐션(Dot-Product Attention)

 

 

- 어텐션 스코어(Attention Score)를 구한다

  • 어텐션 스코어(Attention Score) : 현재 디코더의 시점에서 단어를 예측하기 위해, 인코더의 모든 은닉 상태 각각이 디코더의 현 시점의 은닉 상태와 얼마나 유사한지를 판단하는 스코어값
  • 디코더의 현 시점의 은닉 상태를 전치(transpose)하고 각 은닉 상태와 내적(dot product)을 수행

소프트맥스(softmax) 함수를 통해 어텐션 분포(Attention Distribution)를 구한다

 

- 각 인코더의 어텐션 가중치와 은닉 상태를 가중합하여 어텐션 값(Attention Value)을 구한다

 

- 어텐션 값과 디코더의 t 시점의 은닉 상태를 연결(Concatenate)한다

 

- 출력층 연산의 입력이 되는 값을 계산 한다

 

 

- 위의 값을 출력층의 입력으로 사용한다

 

 

- 출처 : [딥러닝을이용한 자연어 처리 입문] 1601 어텐션 메커니즘 (Attention Mechanism)