1. transformer 아키텍처 2017년 구글에서 발표한 Attention is All you need 논문에서 처음 등장 머신러닝을 통해 언어를 번역하는 기계 번역 성능을 높이기 위한 방법을 연구하였는데, 당시 널리 사용된 RNN에 비해 성능 면에서 큰 폭으로 앞섰다. 또한 RNN에 비해 모델 학습 속도도 빨랐다. 이렇게 완전히 새로운 형태의 모델이 성능과 속도 면에서 뛰어난 모습을 보여 많은 인공지능 연구자들이 각자 연구에 transformer를 적용하기 시작 현재 transformer은 자연어 처리는 물론 컴퓨터 비전, 추천 시스템 등 모든 AI 분야에서 핵심 아키텍처가 되었다. 기존에 자연어 처리 문제에서 사용하던 RNN은 다음과 같이 텍스트를 순차적으로 하나씩 입력하는 형태다 사람이..
1. RNN 딥러닝이나 머신러닝 분야에서 텍스트는 단어가 연결된 문장 형태의 데이터를 일컫는다. 이처럼 작은 단위의 데이터가 연결되고 그 길이가 다양한 데이터의 형태를 시퀀스(sequence)라고 한다. 텍스트, 오디오, 시계열같은 데이터는 sequence이다. 역사적으로 이러한 시퀀스 데이터를 처리하기 위해 RNN이나 transformer의 2가지 아키텍처로 대표되는 다양한 모델을 사용했다. transformer가 개발되기 전에는 RNN을 활용해 텍스트를 생성했다. RNN은 위 그림같이 입력하는 텍스트를 순차적으로 처리해서 다음 단어를 예측한다. 특징으로는 모델이 하나의 잠재 상태 hidden state에 지금까지 입력 텍스트의 맥락을 압축한다는 점이다. 첫번째 입력인 '검은'이 모델을 통과하면 h..
https://heekangpark.github.io/ml/shorts/padded-sequence-vs-packed-sequence Padded Sequence vs. Packed Sequence | Reinventing the Wheel 문제상황 자연어와 같은 sequence 데이터들을 다루다 보면 짜증나는 요소가 하나 있는데, 바로 그 길이가 일정하지 않다는 것이다. 이미지 데이터의 경우 crop이나 resize 등으로 가로 세로 크기를 맞 heekangpark.github.io 자연어같은 sequence 데이터는 input들의 길이가 다 다른 경우가 보통이기 때문에 이것을 어떻게 처리할 지 고민할 필요가 있다. 이미지는 crop이나 resize로 이미지 크기를 전부 맞추고 진행하면, batch로 ..
1. introduction Vanilla RNN을 개선하였다. 그래서 gradient vanishing/exploding을 개선하여 좋은 성능을 보임 the problem of long term dependency를 해결하고자 time-step이 먼 경우에도 필요한 정보를 처리할 수 있도록 단기로 기억되는 hidden state 정보를 길게 가져오자. Vanilla RNN은 현재 input의 정보와 이전 시점의 hidden 정보를 조합하여 새로운 hidden 정보를 만든다. $$h_{t} = f_{w}(x_{t} + h_{t-1})$$ 반면 LSTM은 전 시점에서 다른 역할을 하는 2가지 정보와 input 정보를 이용함 $$f(C_{t}, h_{t}) = LSTM(X_{t}, C_{t-1}, h_{t-..
1. Backpropagation through time RNN의 backpropagation 알고리즘 모든 token을 계산하면서 ground truth와 비교하면서 loss를 최소화하는 방향으로 backpropagation을 통해 gradient를 계산 그런데 수백, 수천만 길이의 sequence면 한정된 GPU에서 계산이 불가 2. Truncated backpropagation through time 그러니까 일부 time을 잘라가지고 만든 여러개의 truncation을 만든다. 그래서 제한된 sequence를 가지는 truncation에서 backpropagation을 진행하고 다음 truncation에서도 진행하고 과정을 반복한다 자른 구간에서는 이제 GPU가 허용하는 한에서 backpropag..