본문 바로가기

SWE/AI

RNN을 쪼개보자

728x90
반응형

기술이 쏟아질 때는 비교 해보고 그려보는 것이 머리에 오래 남는다.
연속적인 데이터를 다루기 위한 뉴럴 네트워크 구조인 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의 여러 은닉층을 쌓아 만든 모델로 다층 구조를 통해 더 복잡한 패턴을 학습할 수 있다.

 

 

728x90
반응형

'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