Sequential Data
- 순차 데이터의 예시
- 음성 신호, 문장, 주식 시세, 심전도 신호 등
- 언어 데이터를 컴퓨터가 처리할 수 있도록 숫자로 나타내는 방법
- 모든 단어가 담긴 Dictionary 크기만큼 One-hot 인코딩 형태의 벡터로 표현하는 방법
- 아주 큰 벡터가 필요하고
- 모든 단어는 서로 내적하면 0이므로, 단어 간의 유사성을 측정할 수 없다.
- Word2vec, Glove 등 학습된 단어 임베딩을 사용하는 방법
- 각 단어 벡터는 모든 차원에서 실수 값을 가지고, 두 벡터 내적 값이 크면 유사한 의미를 가진다.
- 순차 데이터의 특성
- 데이터가 나타나는 순서가 중요하다.
- 문장 길이의 가변성
- 문맥 의존성이 있다.
- MLP는 순차데이터의 특징을 제대로 처리하기 어렵다.
RNN
- 순차 데이터를 처리할 수 있도록 MLP를 확장한 것
- 은닉층이 하나이고, 은닉 노드 사이를 연결하는 가중치가 존재한다.
- Recurrent Edge: t−1 시점에 발생한 정보를 t 시점으로 전달하여 이전 정보를 기억한다.
- 가중치 행렬 U,V,W와 bias는 모든 시점에 대해 공유된다.
- RNN의 종류
- Many-to-one RNN
- 예) 입력 문장을 label로 분류하는 감정 분석
- Many-to-many RNN
- RNN에서 Forward Pass
- 은닉층 값을 Update 한다.
- t 시점의 은닉층 값은 직전 시점 은닉층 값과 현재 시점의 입력값의 영향을 받는다.
- 출력층 값을 계산한다.
- 순차 데이터의 특성
- 계산 과정에서 순서 의존성이 생기므로 단어가 반대로 입력되면 결과가 달라진다.
- 단어의 개수만큼 RNN을 펼쳐 가변성 문제를 해결할 수 있다.
- t 시점의 연산은 모든 단어의 영향을 받으므로 문맥 의존성을 파악할 수 있다.
- 가중치 행렬이 모든 시점에서 공유되므로 Gradient는 모든 시점에서의 편미분 값을 모두 더해 계산한다.
Variants of RNN
- RNN의 한계
- 순차 데이터의 왼쪽에서 오른쪽으로(단방향) 정보가 입력된다.
- 미래 시점의 입력에 힌트가 있는 경우도 많다.
- 양방향 RNN은 반대 방향으로 정보가 흐르는 은닉층 g가 추가되어 두 은닉층 결과로 최종 출력을 계산한다.
- Bi-directional RNN은 기계 번역에 많이 활용된다.
- 데이터 길이가 길 경우 장기 의존성을 파악하기 어렵다.
- 학습 과정에서도 Gradient vanishing이 발생한다.
- LSTM은 매 시점마다 입력 게이트, 출력 게이트를 개폐하여 장기 의존성을 파악한다.
- Transformer
- 단어를 순차적으로 입력받지 않고 문장 전체를 한번에 입력으로 받아 장기 의존성 문제를 해결한다.
- Attention mechanism: 문장을 구성하는 각 단어 간 상관관계를 모델링한다.
- 문맥 정보로 강화된 feature 기반으로 최종 예측을 수행한다.