바다나우 어텐션

이은지·2021년 8월 8일
0

바다나우 어텐션(Bahdanau Attention)

어텐션의 종류 중 하나.
앞서 배운 닷-프로덕트 어텐션보다 조금 더 복잡하게 설계된 어텐션 메커니즘

전반적인 흐름은 닷-프로덕트 어텐션과 동일하다. 닷-프로덕트 어텐션과의 차이점을 위주로 설명하겠다.

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

어텐션의 경우 어텐션 스코어를 구하는 방법에 따라 어텐션의 종류가 달라진다.
즉 이 파트가 바다나우 어텐션의 정체성의 핵심이라고 볼 수 있다.
바다나우 어텐션이 왜 바다나우 어텐션이냐 함이 여기에 담겨있다!

img

닷-프로덕트 어텐션에서 현재 시점t의 디코더 은닉상태를 사용한 것과 달리 이번에는 t-1 시점의 은닉상태를 사용한다.

St-1과 인코더 i번째 은닉상태의 어텐션 스코어 계산 방법

바다나우 어텐션의 어텐션 스코어 계산 방법
(h1,h2,h3,h4를 하나의 행렬 H로 둔 경우)

이때 Wa, Wb, Wc : 학습 가능한 가중치 행렬
닷-프로덕트 어텐션에서 단순히 hi와 St의 내적을 수행한 것과 달리 가중치 행렬이 존재해서 이를 곱해준다.

그림으로 풀어서 이해하면 다음과 같다.

img

첫번째 행렬: Wc, 두번째 행렬: Wb


img

img

하늘색 벡터: WaT

2) 소프트맥스 함수를 통해 어텐션 분포(Attention Distribution)를 구한다. 이때 어텐션 분포의 각각의 값을 어텐션 가중치(Attention Weight)라고 한다.

img

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

img

가중합의 결과로 나온 어텐션 값, 즉 결과 벡터는 인코더의 문맥을 포함하고 있다고 하여 컨텍스트 벡터라고 부른다.

4) 컨텍스트 벡터로부터 St를 구한다.

기존 LSTM
이해를 위해 기존 LSTM이 St를 구하는 방식을 살펴보자.

img

ⓐ 이전 시점의 셀로부터 전달받은 은닉상태 St-1
ⓑ 현재 시점의 입력 Xt
LSTM이 디코더였다면 Xt는 임베딩된 단어 벡터

이 두 가지를 가지고 St의 연산을 진행한다.

바다나우 어텐션 메커니즘

img

ⓐ 이전 시점의 셀로부터 전달받은 은닉상태 St-1
ⓑ 현재 시점의 입력 Xt 과 컨텍스트 벡터를 연결(concatenate)한 현재 시점의 새로운 입력

이 두 가지를 가지고 St를 구한다.

5) 출력층 연산의 입력이 되는 s~t를 계산한다.

6) s~t를 출력층의 입력으로 사용한다. 현재 시점의 예측값을 구한다.

profile
교육학과 출신 서타터업 프론트 개발자 👩🏻‍🏫

0개의 댓글