seq2seq 논문에서는 attention구조를 alignment라고 칭하였다. 1. bottleneck problem 물건이 순차적으로 전달되는데 어느 순간 막혀서 전달되는 양이 점점 적어지는 현상. RNN에서 hidden state vector가 step이 지날수록 점점 정보량이 줄어드는 현상이 이와 비슷해서 이름 붙여짐 bottleneck problem을 그림으로 표현 RNN구조는 그 특징이 앞에서부터 읽어들인 정보를 순차적으로 hidden state vector로 쌓아간다. 심지어 모든 모듈은 공유되어있어서 모든 hidden state vector의 차원이 동일하다. sequence가 길수록 정보를 멀리 보내면서 많은 정보가 쌓이지만 동일한 차원에 압축해야 하기때문에 필연적으로 정보의 손실이 발생..
0. seq2seq는 왜 등장했는가? “말은 끝까지 들어봐야 안다.” 예를 들어 일반적인 RNN의 챗봇을 생각해보자. 사람이 I broke up yesterday라고 적으면 챗봇은 broke up를 보고 슬픈 단어를 생성할 확률이 높아져서 sorry to hear that을 생성 그런데 그 이후 사람이 Today’s perfect weather makes me much sad를 쳤는데 분명 슬픈 문맥인데 챗봇은 perfect weather만 보고 긍정적인 단어를 생성할 확률이 높다가 sad보면서 꼬이기 시작해서 제대로 생성을 못함 그래서 나온 seq2seq는 문장을 encoder에 넣어서 문맥 정보를 decoder에 보낸 뒤 단어를 생성하고 그 단어를 받아 다음 단어를 생성하는 등 모든 문장을 들은 뒤 ..
1. language model 주어진 token을 바탕으로 다음 token을 예측하는 task character-level이라는 것은 character sequence에서 이전 character를 바탕으로 다음 character가 무엇인지 예측하는 task ------------------------------------------------------------------------------------------------------------------------------------------------------------- decoder 시작할 때는 생성하고자하는 문장의 단어에 앞서 start token이라는 별도의 token이 들어간다. 예를 들어 ‘난 널 사랑해’를 번역한다고 하자. I ..
1. GRU(Gated Recurrent Unit) LSTM의 경량화, 적은 메모리와 빠른 계산시간 LSTM의 cell state와 hidden state를 하나의 hidden state로 일원화 하나의 input gate만 활용함 이전 hidden vector $h_{t-1}$과 input gate에서 계산한 $\tilde{h_{t}}$의 가중평균 형태로 새로운 hidden vector $h_{t}$가 업데이트되어 나감 하나는 다음 step의 hidden vector $h_{t}$로 나가고 예측이 필요하다면 똑같은 hidden vector $h_{t}$가 output layer로 들어가 예측을 수행 흐름과 식을 잘 봐야함 이전 hidden vector $h_{t-1}$가 input gate로 그대로 들..
1. LSTM 일반적인 RNN(Vanilla RNN)의 구조 LSTM(Long Short Term Memory)의 구조 조금 더 자세히 살펴보면 이상한 것이 여러가지 있다 LSTM의 핵심 idea는 cell state에 있다 공장에서 컨베이어벨트 박스가 흘러들어가는 모습을 상상해보자. 노동자들이 박스 하나 집어서 이상없는지 확인하고 다시 올려서 그대로 보내듯이 이전에 가공한 정보를 그대로 흘려보내는 컨베이어벨트가 cell state이다. 1. forget gate 이제 입력 $x_{t}$와 이전 hidden state($h_{t-1}$)에서 나온 조합된 잠재정보가 흘러들어가면서 forget gate에서는 어떤 정보를 버릴지 결정한다 버려야할 정보는 sigmoid에 의해 0과 1 사이 값으로 압축이 됨 2..
중심단어 기준으로 몇개의 단어를 볼지 그 범위를 window라고 한다. 왜 헷갈리기 시작했냐면 중심단어가 무조건 하나만 있다고 생각이 고정되어버리는 거임 예측하고자 하는 중심단어는 선택할 수가 있다. 무슨말이냐면 "The fat cat sat on the mat" 이 문장이 입력으로 주어졌다고 생각해보자. 근데 이제 그냥 중심단어를 무조건 sat이라 하고 window size=3이라 해서 나머지 {"The", "fat", "cat", "on", "the", "mat"}가 주변단어라고 해버리니까 생각이 멈춰버리는거임.. 모델이 embedding vector를 구하는게 목적이라고 생각한다면 모든 단어에 대해서 embedding vector를 구해야할거 아니냐 그러니까 모든 단어가 중심단어가 될 수 있다는 것..