1. Recurrent Neural Network
1.1 장거리 의존과 LSTM(Long-Short Term Memory)
•
RNN은 시간이 진함에 따라서 예전 단어에 대한 기억이 희미해지고, 장거리 정보 처리에 한계가 있음
•
LSTM은 게이트를 이용해서 선별 기억능력을 확보함
•
여닫는 정도를 실수로 표현하여 학습을 으로 알아냄
1.2 Seq2Seq
서츠 케버의 Seq2Seq 모델
•
2014년에 발표된 자연어 처리 분야의 모델로, 인코더와 디코더라는 2개의 모듈을 연결해서 사용하는 모델
•
가변 길이의 문장을 가변 길이의 문장으로 변형(Many-to-Many)
◦
입력된 시퀀스로부터 다른 도메인의 시퀀스를 출력함
◦
챗봇과 기계번역등과 같은 다양한 분야에서 사용됨
•
학습은 정답에 해당하는 출력을 알려주는 교사강요(teacher forcing) 방식으로 진행됨
◦
Teacher Forcing
▪
이전 시점의 prediction을 넣는 것이 아니라 정답값을 현재 시점의 디코더의 셀의 입력으로 넣어주는 것
▪
이전 시점의 디코더 셀의 예측이 틀렸을 때, 계속 잘못된 정보가 입력되어 연쇄적으로 디코더 전체 예측의 성능이 낮아질 수 있기 때문에 이를 방지하기 위해서 정답값을 넣어주는 것!
Seq2Seq 구조
Seq2Seq 구조는 인코더와 디코더라는 두 개의 모듈로 구성됨
•
인코더
◦
모든 단어들을 순차적으로 입력받음
•
Context Vector
◦
입력 문장의 모든 단어들을 순차적으로 입력받은 뒤에 마지막에 모든 단어정보들을 압축해서 만든 하나의 벡터
•
디코더
◦
텍스트 벡터를 받아서 번역된 단어를 한 개씩 순차적으로 출력
RNN 기반 Seq2Seq 모델 문제점
•
하나의 고정된 크기의 컨텍스트 벡터에 모든정보를 압축하려고 하니까 정보 손실이 발생
•
RNN의 고질적인 문제인 기울기 소실(Vanishing gradient) 문제가 존재
2. Attention
2.1 Attention
어텐션 연산은 디코더에서 출력 단어를 예측하는 매 시점마다 인코더의 전체 입력문장을 다시 한번 참고하여 예측을 진행
→ key, query, value 방식을 통해 해당 시점에 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더집중해서 반영
Attention 함수
•
Query, Key, Value 값에 대해서 주어진 Query(현재 시점의 값)에 대해서 모든 Key(자기자신을 포함한 주변 값들)와의 유사도를 각각 구하고, 이 유사도를 각각의 Value에 반영해서 더한 값으로 구함
◦
•
Attention 계산하기
1.
query q와 i번째 key 의 유사도 로 계산하기
2.
유사도 벡터 에 softmax 적용해서 주목 벡터(attention vector) 구하기
→ 여기서 = .442로 유사도가 가장 높아서 이 주목 벡터가 됨
3.
주목벡터 a를 가중치로 해서 value=(v_1. v_2, v_3, v_4) 값이랑 곱하고 더함(value의 가중합 계산)
•
context vector
2.2 바다나우 어텐션 함수(Bahdanau Attention Function)
Seq2Seq는 모든 정보를 마지막 은닉상태 에 넣어줘야하는 부담이 있으
→ 바다나우 어텐션 함수에서는 디코더가 모든 상태 에 접근 할 수 있어 장기 의존성 문제를 해결
Seq2Seq2 + Attention 모델
•
Q : t-1 시점의 디코더 셀에서의 은닉 상태
•
K : 모든 시점의 인코더 셀의 은닉상태
•
V : 모든 시점의 인코더 셀의 은닉상태
•
Seq2Seq vs Seq2Seq+Attention
◦
Seq2Seq
▪
▪
•
는 와 관련된 가중치 행렬
•
은 i-1 시점에서의 디코더의 출력
•
은 디코더 입력 를 은닉상태와 결합하기 한 가중치로 선형변환 수행
◦
Seq2Seq + Attention
▪
▪
•
과거의 문맥인 와 현재 시점의 입력에 대한 정보인 에
전체 맥락정보인 를 더해줌