오늘은 자연어처리 분야에서 혁신적인 아이디어로 큰 기여를 한 두가지 기술인 어텐션과 그를 이용한 트랜스포머를 다루도록 하겠습니다.
먼저 어텐션부터 알아보도록 하겠습니다.
어텐션은 이름에서 알 수 있듯이 각 인코더의 상태 중 집중해야 할 상태에 집중을 합니다.
기존 RNN의 인코더-디코더 구조를 이용한 기계 번역의 예시를 보도록 하겠습니다.
Encoder로 들어간 문장 중 어떤 한 단어가 어디에서 번역될지 학습하는 데에는 오랜 시간이 걸리게 됩니다.
이 문제점을 해결하고자 한것이 바로 어텐션입니다.
(어텐션의 역할이 어떤 위치에서 어떤 의미가 번역되어야 하는지 도와줍니다.)
Encoder의 모든 단어에 대한 상태값을 이용합니다. 각 Decoder 타임스텝에서 어떤 단어에 집중해야 하는지 Encoder의 상태값을 이용하여 알 수 있게 됩니다.
Decoder i번째 타임스텝에서는 Decoder의 h_(i-1) 과 Encoder의 모든 상태값을 이용하여 각 상태값에 대한 Energy값을 구하게 됩니다. 이를 softmax function을 이용하여 합이 1이 되도록 값을 구하게 됩니다.
softmax function을 이용해서 구한 값들을 각 상태값의 가중치라고 하겠습니다.
이 가중치들을 각 상태값에 곱하여 Decoder의 i번째 타입스텝의 인풋으로 사용합니다. attention mechanism에서는 Energy값을 구할 때 사용하는 FC layer의 가중치들을 학습하게 됩니다. 이는 실제로 자연어처리 분야에 엄청난 성능 향상을 불러일으켰습니다.
두번쨰로는 어텐션을 이용한 트랜스포머(Attention is all you need)입니다.
트랜스포머의 구조를 보면 RNN이 사용되지 않습니다. 트랜스포머가 attention is all you need로도 불리는 이유이기도 합니다.
Encoder구조와 Decoder구조로 나뉘어져 있고, 이런 구조가 N번 반복됩니다.
순차적인 위치 정보를 담고 있던 RNN을 사용하지 않기 때문에 Positional Encoding이라는 과정을 거치게 됩니다.
그리고 크게 Self Attention과 Encoder-Decoder Attention이 존재합니다.
self attention은 Encoder의 attention부분과 Decoder의 첫번째(아랫부분) attention에 위치합니다.
각 단어가 문장에서 어떤 관계를 갖고 있는지 알 수 있습니다.
Decoder의 두번째(윗부분) attention은 Encoder-Decoder attention을 이용하여 RNN을 이용한 attention에서와 마찬가지로 어떤 단어를 어떤 위치에서 번역해야 할지 도와주게 됩니다.
이 방법은 아주 효율적이였고, 현재 자연어처리에서 가장 뛰어나다고 할 수 있는 GPT와 BERT가 이 트랜스포머 구조를 참고하고 있습니다.
더 자세한 내용은 아래 링크에서 참고해보세요.
(Attention: https://bkshin.tistory.com/entry/NLP-14-%EC%96%B4%ED%85%90%EC%85%98Attention,
Transformer: https://123okk2.tistory.com/164)
'인공지능 > 이론' 카테고리의 다른 글
(22) PGGAN (Progressive Growing of GAN) (0) | 2022.02.28 |
---|---|
(21) 오토인코더와 GAN (0) | 2022.01.08 |
(19) RNN 구조 (0) | 2022.01.02 |
(18) 컴퓨터 비전 (0) | 2021.11.12 |
(17) 심층 신경망 (0) | 2021.10.26 |