본문 바로가기

기타

[딥러닝] why attention

안녕하세요! 

오늘은 attention을 쓰는 이유에 대해 간략하게 알아보도록 하겠습니다.

 

attention은 sequence data에 흔히 쓰이는 기법입니다.

 

sequence data에 쓰이는 이유는, 

vanishing gradient 문제 때문입니다.

 

대표적인 RNN모델의 경우,

gradient가 축적해 전달되므로, 뒤로 갈 수록 gradient vanishing/exploding문제가 발생합니다.

이는 long term dependency(장기 의존성)문제를 야기하게 되는데요,

멀리 있는 정보를 잊게 되는 것입니다. 

 

attention은 전체를 받지 않고, 

input의 특정한 부분을 주목하여 바로바로 해결하게 도와주는, 

 

encoder와 decoder를 connection해주는 장치라고 보시면 될 것 같습니다.

 

그래서 왜 attention을 쓰느냐

1. 병목 현상을 제거한다.

2. vanishing gradient 문제 해결하는데 도움을 준다.

3. 단계별로 진행되어 해석할 수 있는 여지를 제공해 준다.

 

사진출처: https://machinelearningmastery.com/how-does-attention-work-in-encoder-decoder-recurrent-neural-networks/

 

이러한 attention의 장점 덕분에 요즘은 기본적으로 attention을 깔고 가는 것 같습니다.

 

하지만 r에서는 안타깝게도 attention이 따로 패키지로 구현되어 있진 않습니다.ㅠㅠ

언젠가는 구현이 되겠죠?ㅎㅎ(존버박사는 승리한다)

 

이상입니다!