-
2017년 구글이 제안한 시퀀스-투-시퀀스 모델이가.
-
자연어 처리함.
-
기존의 RNN구조를 사용하지않고 attention만으로 인코더 디코더를 형성하여 기계번역을 시행한다.
-
장점 : 많은 양의 데이터를 병렬적으로 처리가능하다.
- attention : 시퀀스 입력에 수행하는 기계학습 방법의 일종이다.
- 중요한 요소에 더 집중해 성능을 끌어 올리는 기법이다.
self attention의 효과
- self attention : 자신에게 수행하는 어텐션 기법.
- self attention 대상은 입력 시퀀스 전체이다.
- 시퀀스 길이가 길어지더라도 정보를 잊거나 왜곡할 염려가 없다.
계산예시 p81
-
Query = Key = Value 서로 영향을 주고 받으면서 의미르 계산한다.
-
인코더의 셀프 어텐션 : Query = Key = Value
-
디코더의 마스크드 셀프 어텐션 : Query = Key = Value
-
디코더의 인코더-디코더 어텐션 : Query : 디코더 벡터 / Key = Value : 인코더 벡터
self attention의 Q, K, V 벡터 얻기
- d_model / num_heads의 차원을 가지는 서로다른 3개의 가중치를 이용하여 Q, K, V를 얻어냄
- 다음으로 attention value를 얻어내는데 이 과정은 본래 attention에서의 과정과 다르지않음. Q, K의 유사도를 통해 가중치를 구하고 이를 V에 적용 후 합하기
- attention value 행렬의 크기는(seq_len, dv) = (문장길이, d_model / num_heads)
- attention value는 총 8개로 설정, 이 attention value들을 multi head attention이라함
- multi head attention 행렬의 크기는(seq_len, d_model)
- 위의 것이 바로 multi head attention의 출력값인데 행렬의 크기가 계속 유지되고 있음을 알 수 있다. 인코더가 여러개라 형태 유지 해야함.
- 출력값은 Position-wise FFNN이라는 일반적인 뉴럴넷에 입력으로 사용된다.
attention과 self attention의 주요 차이 p81
-
어텐션은 소스 시퀀스 전체 단어들과 타깃 시퀀스 단어 하나 사이를 연결하는데 쓰입니다.
반면에 셀프 어텐션은 입력 시퀀스 전체 단어들 사이를 연결한다.
-
어텐션은 RNN의 구조 위에서 작동하지만, 셀프 어텐션은 RNN이 없이 작동한다.
-
타겟언어 1개의 어텐션 1개 수행, 셀프 어텐션은 인코딩,디코딩 블록의 개수만큼 반복 수행한다.
시퀀스-투-시퀀스 p72
: 특정 속성을 지닌 시퀀스를 다른 속성의 시퀀스로 변환하는 작업이다.
한글 단어 문장에서 (소스언어) -> 영어 단어 문장으로 (타깃언어)
인코더와 디코더 p73
- 인코더 : 소스 시퀀스의 정보를 압축해 디코더로 보내는 역확을 한다.
- 인코딩 : 인코더가 소스 시퀀스를 압축하는 과정을
- 디코더 : 인코더가 보내 준 소스 시퀀스 정보를 받아서 타깃 시퀀스 생성.
- 디코딩 : 디코더가 타깃 시퀀스를 생성하는 과정을