while (1): study();

Ch8. 어텐션 본문

독서

Ch8. 어텐션

전국민실업화 2021. 8. 1. 20:15
728x90

 드디어 최근 인공지능 SOTA의 핵심에 서있는 어텐션을 구현합니다. 이전까지 단어 간 대응 관계를 나타내는 정보인 얼라인먼트(Alignment)를 인간이 직접 만들어야만 했다면, 어텐션은 얼라인먼트조차 기계가 대신 학습한다는 점에서 큰 의미가 있습니다.

 간단하게 얘기하면 인코더의 은닉상태를 입력으로 받아, 디코더의 은닉상태와 내적한 뒤 소프트맥스로 정규화하여 가중치를 구하고, 이를 이용하여 가중합을 구해 맥락 벡터(Context vector)를 생성합니다. 이전 장에서 Peeky를 이용하여 인코더의 은닉상태를 디코더의 모든 계층에 전달했었는데, Attention은 이 과정을 조금 더 효율적으로 수행하고 있습니다. 그리고 Seq2seq 모델의 관건이 인코더의 맥락을 디코더에 제대로 전달하는 것이라는 것도 유추해볼 수 있겠습니다.

이외에 스킵 커넥션(Skip connection), 양방향 LSTM(Bidirectional LSTM), 가중치 공유(Weight Tying 등이 사용되어 개선될 수 있습니다.

 

추가적으로 뉴럴 튜링 머신(NTM)에 대한 내용이 상당히 흥미롭네요. 요지는 기존의 인코더-디코더 아키텍처에서 외부 메모리를 추가하고, 여기에 Attention을 이용하여 정보를 읽고 쓰는 과정을 진행하는 것입니다. 두 종류의 어텐션이 결합되는데, 첫 번째 콘텐츠 기반 어텐션은 Seq2seq의 어텐션과 마찬가지로 입력을 기준으로 비슷한 벡터를 선택합니다. 두 번째, 위치 기반 어텐션은 이전 시각의 메모리 위치로부터 시프트하는 역할로 사용됩니다. 실제 컴퓨터의 메모리 지역성을 차용한 것 같네요.

 어쨌든 여기까지 교재를 읽으며 실제로 딥러닝 프레임워크를 구현해보고, 소소한 실험까지 마쳐보았습니다.

728x90

'독서' 카테고리의 다른 글

Part2. 데이터 구조체  (0) 2021.12.05
Part1. 들어가며  (0) 2021.12.05
Ch7. RNN을 사용한 문장 생성  (0) 2021.07.31
Ch6. 게이트가 추가된 RNN  (0) 2021.07.29
Ch5. 순환 신경망(RNN)  (0) 2021.07.28
Comments