seq2seq 모델의 단점을 극복한 모델
- s2s와 같이 인코더 디코더 구조
- 셀프어텐션 기법을 사용해서 문장에 대한 정보를 추출
셀프어텐션이란?
- 문장에서 각 단어끼리 얼마나 관계가 있는지를 계산해서 반영하는 방법
- 각 단어를 기준으로 다른 단어들과의 관계 값을 계산한다
- 어텐션 스코어
- 단어벡터간의 내적으로 구함
- 위의 처럼 나머지 단어에 대해서도 동일하게 진행하면 해당 문장에 대한 셀프어텐션이 끝난다
- 셀프어텐션은 트랜스포머 네트워크의 핵심이다
모델 구현
구현해야 할 것
- 멀티헤드 어텐션
- 서브시퀀스 마스크 어텐션
- 포지션-와이즈 피드 포워드 네트워크
- 리지듀얼 커넥션
멀티헤드 어텐션
- 내적 어텐션 구조가 중첩된 형태
- 1) 스케일 내적 어텐션
- 쿼리
- 사전에서 찾고자 하는 단어
- 키
- 사전의 색인어
- 값
- 색인어의 뜻
- 2) 순방향 마스크 어텐션
- 자신보다 뒤에 있는 단어는 참고하지 않게 마스킹
- 3) 멀티 헤드 어텐션
- 어텐션 맵을 여러게 만들어 다양한 특징에 대한 어텐션을 볼 수 있게 한 방법
포지션-와이즈 피드포워드 네트워크
- 셀프 어센션 층을 거친 다음 피드포워드 네트워크를 거치도록 되어 있다
리지듀얼 커넥션
- 이건 잘 알지?
인코더
- 입력값에 대한 정보를 추출하는 모듈
- 멀티 헤드 어텐션 + 피드포워드 네트워크 + 리지듀얼 커넥션
디코더
- 인코더와는 조금 다르게 하나의 층이 더 추가된 형태이다
- 인코더의 경우 하나의 블록이 2개의 층으로 구성돼 있는데 디코더의 경우 3개의 층으로 구성돼 있다는 것
- 두 개의 어텐션과 하나의 피드포워드 층으로 구성
- 첫번째 어텐션
- 디코더의 입력 사이의 관계를 계산하는 셀프 어텐션
- 예측을 해야하는 디코더의 경우 특정 단어 이후의 단어를 참고하지 않도록 마스크 기법을 사용
- 두번째 어텐션
- 입력이 외부에서 들어옴
- 인코드의 결과값
포지션 인코딩
- 트랜스포머는 단어를 하나하나 넣지 않고 한번에 넣는다
- 그래서 순서정보를 부가적으로 주입할 필요가 있다
- 첫번째 수식
- 피처 차원에서 인덱스가 짝수인 경우에 대해서 사인 함수 값을 할당하는 것
- 두번째 수식
- 인덱스가 홀수인 경우에 코사인 값을 할당하는 것
- 사인함수와 코사인 함수 안에 있는 식은 각 시퀀스 위치에 따라 피처 차원 인덱스에 각자 위치 정보를 주고자 하는 의도
학습
- seq2seq 보다 빠름
'논문 리뷰' 카테고리의 다른 글
Cross-Media Similarity Evaluation for Web Image Retrieval in the Wild (0) | 2021.03.16 |
---|