기술이 쏟아질 때는 비교 해보고 그려보는 것이 머리에 오래 남는다.
연속적인 데이터를 다루기 위한 뉴럴 네트워크 구조인 RNN은 구조적 특징이나 입출력 데이터 처리 방식에 따라 구분할 수 있다.
이번에도 두괄식으로 표로 먼저 보고 하나씩 정리해보자.
구분 기준 | 방식 | 설명 | 사용 예 | 장점 | 단점 |
구조적 특징 | Vanilla RNN | 가장 기본적인 RNN 형태로, 단일 은닉 상태를 사용 | 간단한 시퀀스 예측 | 구조 단순, 계산 빠름 | 장기 의존성 문제, 기울기 소실 |
LSTM | 셀 상태와 게이트 구조를 추가하여 장기 의존성 문제 해결 | 기계 번역, 음성 인식 | 장기 의존성 유지, 안정적 학습 | 구조 복잡, 계산 비용 높음 | |
GRU | LSTM보다 단순한 게이트 구조로 계산량 감소 | 문장 분류, 음성 처리 | 계산 효율적, 장기 의존성 유지 | 복잡한 패턴 학습 제한 | |
Multi-layer RNN | 여러 층의 은닉 레이어를 쌓아 복잡한 패턴 학습 가능 | 텍스트 생성, 이미지 captioning | 복잡한 패턴 학습 가능 | 학습 시간 증가, 과적합 가능성 | |
입출력 방식 | Many-to-many | 여러 타임스텝의 입력에 대해 여러 타임스텝의 출력 생성 | 기계 번역, 비디오 처리 | 입력-출력 시퀀스 길이 일치 | 계산 비용 높음 |
Many-to-one | 여러 타임스텝의 입력으로 단일 출력 생성 | 문장 분류, 감정 분석 | 시퀀스 전체를 요약하여 출력 | 정보 손실 가능성 | |
One-to-many | 단일 입력에 대해 여러 타임스텝의 출력 생성 | 이미지 captioning, 텍스트 생성 | 단일 입력에서 시퀀스 생성 가능 | 초기 입력 정보에 의존 | |
One-to-one | 단일 입력-출력 간의 매핑 | 시계열 예측 (특정 시점) | 단순한 시퀀스 예측 | 정보 유지 한계 |
1. RNN 구조적 특징에 따른 구분
1.1. Vanilla RNN (Vanilla Reccurent Neural Network)
순환 구조를 이루는 인공신경망
가장 단순한 형태의 RNN 구조로 현재 Stage 의 Input 과 이전 Stage 의 Output 을 사용해 예측한다.
1.1.1. Vanilla RNN의 문제점
같은 W를 긴 horizon으로 곱하게 되는데 이때 W의 값에 따라 gradient가 폭발/소실될 수 있다.(W의 leading singular value에 따라)
또, tanh를 계속 거쳐 기울기 소실될 수 있다.
따라서 긴 horizon에서 학습(장기 기억 학습)에서 불안정하다.
1.2. LSTM (Long Short Term Memory Network)
대부분의 결과에서 Vanilla RNN 보다 좋은 성능을 보인다.
RNN 구조상 앞의 정보가 뒤로 충분히 전달되지 못해 Long Sequence 를 학습하기 어렵다는 문제가 있다.
1.2.1. 구조
Forget gate, Input gate, Gate gate, Output gate
이렇게 4개의 Gate로 구성된 레이어 구조다.
1.2.2. 학습 방법
Hidden state의 정보를 가지고있는 Cell state를 Hidden state와 함께 저장해두고, Cell state는 덧셈 연산에 의해 계산되는데
이것이 gradient vanishing 문제를 해소하는데 도움이 된다는 것이 LSTM의 key point다!
4개의 gate를 사용해서 hidden state (h)를 encoding
- Forget gate (f): 이전 cell state를 얼만큼 잊을지 결정
- Input gate (i): Gate gate(현재 입력)를 얼만큼 cell state에 반영할지 결정
- Gate gate (g): 현재 입력을 cell state space로 매핑
- Output gate (o): Cell state를 얼만큼 hidden state에 반영할지 결정
1.3. GRU (Gated Recurrent Unit)
LSTM과 유사하지만 더 단순한 게이트 구조를 사용하여 계산량을 줄인 RNN의 또 다른 변형 모델이다.
이 모델도 장기 의존성을 잘 처리할 수 있다.
2. 입출력 데이터 처리 방식에 따른 구분
입출력 방식은 RNN이 입력 시퀀스와 출력 시퀀스를 처리하는 방식에 따라 구분된다.
입출력 데이터 처리 방식은 LSTM, GRU, Vanilla RNN 등 다양한 RNN 변형 모델에서 사용 가능하다.
2.1. Many-to-Many
여러 time step의 입력이 주어졌을 때, 각 입력에 대해 대응되는 출력이 생성되는 방식이다.
OCR 등에 사용되며, 기계 번역에서 원문과 번역문처럼 입력과 출력이 각각 여러 시퀀스로 매핑된다.
2.2. Many-to-One
여러 타임스텝의 입력 시퀀스가 주어졌을 때, 마지막 time step에서 단일 출력이 생성되는 방식이다.
Video classification 등에 사용되며, 문장 분류 작업에서는 전체 문장을 입력으로 받아 하나의 클래스를 출력하는 방식이다.
2.3. One-to-Many
단일 입력에 대해 여러 타임스텝의 출력을 생성하는 방식이다.
Generative model 등에 사용되며, 이미지 캡셔닝에서 하나의 이미지 입력을 받아, 설명 문장(시퀀스)을 출력하는 방식이다.
One-to-Many 구조의 예시로 GPT와 유사한 Autoregressive Model인 Next character prediction이 있다.
2.4. Multi-layer RNN
RNN의 여러 은닉층을 쌓아 만든 모델로 다층 구조를 통해 더 복잡한 패턴을 학습할 수 있다.
'SWE > AI' 카테고리의 다른 글
Encoder-Decoder Architecture 사용 이유 (0) | 2024.11.13 |
---|---|
Attention is all you need라니까 (0) | 2024.11.12 |
RNN을 향한 꼬꼬무 (0) | 2024.11.10 |
Non-linear activation function (0) | 2024.11.09 |
내가 가장 좋아하는 Layer는 (0) | 2024.11.08 |