기본기 다지기/CNN부터 Attention까지 구현

[기본이론] Attention 구현(3/3)

syveany 2024. 9. 27. 17:35

Attention 구현(3/3)

참고문헌: 책 『밑바닥부터 시작하는 딥러닝2』 Chapter8. 어텐션

~ 목차 ~
4. Attention 응용- Transformer
4.1 RNN의 단점
4.2 Transformer란
5. 소감

4. Attention 응용- Transformer

4.1 RNN의 단점

  • GPU 학습은 병렬계산환경에서 이루어지는데, RNN은 구조적으로 병렬 계산이 불가능하기 때문에 GPU의 성능을 충분히 활용하지 못함(RNN은 이전 시각의 계산결과를 다음 시각에 활용하기 때문). 그래서 성능이 잘 안 나옴
  • 이를 개선하기 위해서는 아래와 같은 두 가지 방법이 있음
    [방법1] 병렬 계산이 가능한 RNN 도입
    [방법2] RNN을 아예 제거하고 새로운 모델 도입
  • 다양한 연구들이 있지만, 가장 대표적인 모델은 [방법2]를 적용한 Transformer모델임(논문: 『 Attention is all you need』)
    • 'RNN이 아닌' Attention을 사용해서 처리해서, 병렬처리가 가능해짐

4.2 Transformer란

  • Transformer는 Attention으로 구성되는데, 그중 Self-Attention 기술을 이용하는 게 핵심임
    • Self-Attention: 자신에 대한 주목. 하나의 시계열 데이터 내에서 각 원소가 다른 원소들과 어떻게 관련되는지를 살펴보자는 뜻
  • 원래의 Time Attention에서는 [그림8-37]의 왼쪽처럼 서로 다른 두 시계열 데이터가 입력되었지만,
    Self-Attention에서는 [그림8-37]의 오른쪽처럼 같은 시계열데이터가 입력됨

image.png

  • [그림8-38]을 보면, Transformer의 Encoder와 Decoder에서는 모두 RNN대신 Self-Attention을 사용하고 있음(그림의 화살표 참조)
  • Feed Forward 계층: 시간방향으로 독립적으로 처리하는, 은닉층 1개와 ReLU로 구성된 Affine신경망으로 이루어진 계층
  • [그림8-38]에 나온 Nx는 회색 배경으로 둘러싸인 계층들을 N겹 쌓았다는 뜻임
  • Transformer 사용시 효과: GPU의 병렬계산을 더 잘 이용할 수 있기 때문에, 학습시간이 줄어들고 출력 품질도 끌어올릴 수 있음

5. 소감

  • 이제야 Attention과 Transformer가 뭔지 감이 잡힌다. (3번에 걸친 포스팅.. 좀 의미 있었을지도)
  • 어느정도까지 이해하는데에 꽤 오랜 시간이 걸렸다. 반복해서 보다보니 어떻게 이해는 된 것 같다. 뭔소린지 모르겠을 때는 죽을맛이었는데 이해가 되니 조금 설레고 재밌다!
  • 그림을 보면서 하나하나 짚고 넘어가서 그런지 이번에는 유독 책의 그림이 많이 첨부되었다.
  • 다음에는 논문 Attention is all you need를 함 읽어봐야겠다. 이제는 시도해볼만 한 것 같다! (과연..)
    .
    .
  • 언제나 화이팅