정리 노트

37일 차(2022/08/23) 본문

[TIL]국민대X프로그래머스 여름방학 인공지능 과정

37일 차(2022/08/23)

꿈만 꾸는 학부생 2022. 8. 23. 21:29
728x90

Seq2Seq with Attention

디코더는 인코더의 모든 출력을 참고합니다. 인코더에서 나온 hidden state 값들을 모두 출력 값으로 별도의 배열 같은 곳에 기록합니다.

디코더에서 매번 hidden state를 갱신할 때 바로 이전의 hidden state값과 인코더의 hidden state값들과 각각 행렬 곱을 수행해서 'energy'라는 값을 생성합니다. 'energy'는 현재 어떤 단어를 출력하기 위해서 source 문장의 어느 단어에 집중해야 하는지 수치화해 표현한 값입니다. energy값에 softmax를 취해 확률 값을 구하고 가중치를 반영해서 가중치 값을 hidden state에 곱한 것을 각각의 비율의 맞게 더해준 weighted sum 벡터를 매번 반영합니다.

Transformer(Attention Is All You Need)

Transformer 등장부터 RNN, CNN을 사용하지 않는 추세입니다. RNN을 안 쓰면 단어의 순서를 알 수 없으므로 단어의 순서를 알려주는 positional encoding을 사용합니다. Positional Encoding으로 주기 함수를 활용한 공식을 사용해서 각 단어의 상대적인 위치 정보를 네트워크에게 줍니다. 위치에 대한 정보를 가진 인코딩 정보를 입력 임베딩 행렬과 elementwise로 더해 각 단어가 어떤 순서를 가지고 있는지 알 수 있게 합니다.

Transformer는 인코더와 디코더로 구성되며 Attention 과정을 여러 레이어에서 반복합니다. 성능 향상을 위해 Residual Learning을 사용합니다. 인코더의 각 레이어는 서로 다른 파라미터를 가집니다. 그리고 인코더의 마지막 레이어에서 나온 출력 값을 매번 디코더의 레이어에 넣어주는 방식으로 동작합니다.

하나의 디코더 레이어에서는 두 번의 Attention이 작동합니다. 첫 번째 Attention은 self attention으로 각 단어들이 서로 어느 정도의 가중치를 가지는지 학습합니다. 두 번째 Attention은 인코더의 정보를 Attention 할 수 있게 합니다. <eos> 나올 때까지 디코더를 이용합니다.

https://arxiv.org/pdf/1706.03762.pdf(Attention Is All You Need)

Attention 종류

Attention: 어떤 단어가 다른 단어와 어떤 연관성을 가지고 있는지 구하는 것

  • Encoder Self-Attention
  • Masked Decoder Self-Attention: 앞쪽에 등장했던 단어들만 참고
  • Encoder-Decoder Attention: query는 디코더에 있고 key, value는 인코더에 있는 상황

Self-Attention은 인코더와 디코더에서 모두 사용합니다. 매번 입력 문장에서 각 단어가 다른 어떤 단어와 연관성이 높은 지 계산할 수 있습니다.

Multi-Head Attention

h개의 서로 다른 value, key, query로 구분될 수 있게 해서 h개의 서로 다른 Attention concept를 학습할 수 있게 합니다.

여러 개 생성된 attention 값들은 concat한 후 Linear layer를 거쳐서 출력을 내보냅니다.

동작 원리(입력이 행렬인 경우)

Attention을 위해 query, key, value 값이 필요합니다. query는 물어보는 주체, key는 물어보는 대상을 말합니다. 예를 들어 'I am a student.'라는 문장이 있을 때 query가 'I', key는 'I, am, a, student'가 될 수 있습니다. query, key, value는 각자의 weight을 곱해서 생성합니다. 행렬 곱셈을 이용해 각 단어당 연산을 한 번에 실행할 수 있습니다.

마스크 행렬을 사용해서 특정 단어는 무시할 수 있도록 할 수 있습니다. 마스크 값으로 음수 무한의 값을 넣어서 softmax 출력이 0%에 가까워지도록 합니다.

 

 

728x90

'[TIL]국민대X프로그래머스 여름방학 인공지능 과정' 카테고리의 다른 글

36일 차(2022/08/22)  (0) 2022.08.22
35일 차(2022/08/19)  (0) 2022.08.19
34일 차(2022/08/18)  (0) 2022.08.19
33일 차(2022/08/17)  (0) 2022.08.17
32일 차(2022/08/16)  (0) 2022.08.17