# 어탠션 매커니즘
- seq2seq 한계 :
1) 하나의 고정 길이의 컨텍스트 벡터로 압축 -> 정보 손실 발생
2) 원래의 시점으로부터 거리가 멀어질수록 기울기 소실 심화
- 어텐션 매커니즘의 기본 방식 :
> 디코더에서 출력 단어를 예측할 매 시점마다, 인코더의 전체 문장 재참조
>단, 전체 문장의 모든 부분 참조 X -> 연관있는 단어만 조금 더 attention 을 갖고 집중
- key-value 방식이란 :
> dictionary 자료형. 인덱스 값이 있고, 이에 대응되는 값이 매핑됨
- 어탠션 함수란
> 식 : Attention(Q, K, V) = Attention Value
- Q : 쿼리
- K : key 값
- V : value 값
> 쿼리가 주어진다면, 해당 쿼리값이 각각의 key 값들과의 유사도를 구한 뒤, 매핑되는 value 값에 반영해준다
> 모두 value 값에 반영을 한 뒤엔, 총 value 값들을 합해준다.
- 닷 프로덕트 어텐션 (실제 어텐션 매커니즘의 진행방식)
> 기본 : 디코더 셀에서 매번 하나의 단어를 출력할때마다, 인코더 셀에 있는 모든 값들을 반영해서 출력해야 한다
How? 각각의 인코더의 셀 값들은, 소프트맥스 함수를 거치게 된다.
이때, 소프트맥스 함수를 거친 뒤의 각 값들은 출력 단어들을 예측하는데에 도움이 되는 정도를 수치화 한 것이다.
> 이 값들을 하나로 정리해서, 디코더에게 전송한다.
> 기본 순서
1) 어텐션 값을 구한다
- 디코더의 각 셀에서 예측값을 출력하기 위해 입력받아야 하는 값
1> 이전 디코더 셀의 은닉값
2> 이전 디코더 셀의 출력값
3> 어텐션 값
- 어텐션 값을 구하는 과정
1) 어텐션 스코어를 구한다 : 인코더의 각 셀에 있는 은닉상태들이, 현재 디코더 셀의 은닉상태와 얼마나 유사한지 구함
> 이 과정을 위해, 인코더의 은닉상태값과 디코더의 은닉상태 값을 내적 수행 해준다 (dot 연산)
2) 어탠션 분포를 구한다 : 어텐션 스코어 값들을 소프트 맥스 함수로 취해서 구함
> 이 값들을 일종의 "어텐션 가중치" 라고 할 수 있다
3) 가중 합을 구한다 : (어텐션 분포값) X (인코더 은닉상태 벡터값) = (가중 합)
> 이때, 가중합은 벡터 형식이며,
어텐션 매커니즘에서는 "컨텍스트 벡터"라고 불린다 (seq2seq 이랑 다른 의미임)
> 가중 합은 결국 어텐션 값을 의미한다. 즉, 어텐션 값을 이미 구했음
2) 구한 어텐션 값(벡터) 와, 디코더 층의 출력 벡터를 연결한다(concatenate)
- 어탠션 매커니즘의 종류
> 구별 원리 : 어탠션 스코어를 구하는 과정에서 어떤 연산을 하는가?
> 종류 :
1) dot
2) scaled dot
3) general
4) concat
5) location-base
- 바다나우 어탠션 매커니즘 : IMDB 텍스트 분류할때 사용함
> 왜 텍스트 분류를 위해 어탠션 매커니즘 사용?
- 어탠션 매커니즘은 seq2seq 처럼, 문장을 출력할때 주로 사용하는 방식 아닌가?
- 이유 : 일반적인 RNN 의 경우, 맨 마지막에 있는 은닉상태만 활용하다보니 중요한 정보 소실되는 경우 발생
> 따라서, 모든 은닉상태들을 참고하기 위해 어탠션 매커니즘을 활용
'기계학습 > 자연어 처리 머신러닝' 카테고리의 다른 글
워드 임배딩 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
---|---|
기계 언어 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
딥 러닝 개념 모음 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.03 |
문서 표현 방법 - 딥러닝을 이용한 자연어 처리 입문 (0) | 2019.12.28 |
단어 표현 방법 - 딥러닝을 이용한 자연어처리 입문 (0) | 2019.12.28 |