본문 바로가기
공부자료/Deep Learning

트랜스포머 어탠션

by mogazi 2022. 9. 26.

어텐션(attention)은 주로 언어 번역에서 사용되기 때문에 인코더와 디코더 네트워크를 사용한다. 

즉, 입력에 대한 벡터 변환을 인코더(encoder)에서 처리하고 모든 벡터를 디코더로 보낸다. 

이렇게 모든 벡터를 전달하는 이유는 시간이 흐를수록 초기 정보를 잃어버리는 기울기 소멸 문제를 해결하기 위함. 

 

 

 

하지만 모든 벡터가 전달되기 때문에 행렬 크기가 굉장히 커지는 단점이 있는데, 이것을 해결하기 위해 소프트맥스 함수를 사용하여 가중합을 구하고 그 값을 디코더에 전달한다.

 

가중합만 전달되었더라도 정보를 많이 전달받은 디코더는 부담된다. 

 

 

따라서 디코더는 은닉 상태에 대해 중점적으로 집중(attention)해서 보아야 할 벡터를 소프트맥스 함수로 점수를 매긴 후 각각을 은닉 상태의 벡터들과 곱한다. 

 

그리고 이 은닉 상태를 모두 더해서 하나의 값으로 만든다. 

 

 

즉, 어텐션은 모든 벡터 중에서 꼭 살펴보아야 할 벡터들에 집중하겠다는 의미.

 

 

 

 

 

 

 

 

 

 

 

 

트랜스포머(transformer)는 어텐션을 극대화하는 방법이다. 

어텐션에서 다룬 인코더와 디코더에는 네트워크가 하나씩 있다. 

 

 

하지만 트랜스포머는 인코더와 디코더를 여러 개 중첩시킨 구조로, 

이때 각각의 인코더와 디코더를 블록(block)이라고 한다. (논문에서는 인코더 블록과 디코더 블록을 여섯 개씩 중첩시킨 구조를 사용한다).

 

 

 

 

 

 

 

참고로 모든 블록 구조는 동일하다. 

 

 

하나의 인코더는 셀프 어텐션(self-attention)과 전방향 신경망(feed forward neural network)으로 구성되어 있다. 

인코더에서는 단어를 벡터로 임베딩하며, 이를 셀프 어텐션과 전방향 신경망으로 전달한다. 

 

 

이때 셀프 어텐션은 문장에서 각 단어끼리 얼마나 관계가 있는지를 계산해서 반영합니다. 

즉, 셀프 어텐션으로 문장 안에서 단어 간 관계를 파악할 수 있다. 

 

 

 

셀프 어텐션에서 파악된 단어 간 관계는 전방향 신경망으로 전달된다.

 

 

 

- 어텐션의 인코더 상세 구조

 

 

 

디코더는 층을 총 세 개 가지고 있는데, 인코더에서 넘어온 벡터가 처음으로 만나는 것이 셀프 어텐션 층이다. 

즉, 인코더와 동일하다고 이해하면 된다.

 

 

 

셀프 어텐션 층을 지나면 인코더-디코더 어텐션(encoder-decoder attention) 층이 있다. 

 

인코더-디코더 어텐션 층에서는 인코더가 처리한 정보를 받아 어텐션 메커니즘을 수행하고, 마지막으로 전방향 신경망으로 데이터가 전달된다.

 

 

 

-어텐션의 디코더 상세 구조

'공부자료 > Deep Learning' 카테고리의 다른 글

강화학습  (0) 2022.09.26
클러스터링  (0) 2022.09.26
임베딩  (0) 2022.09.26
전처리  (0) 2022.09.26
자연어 처리  (0) 2022.09.26