RNN

Daum·2021년 8월 26일
0

Deep Learning

목록 보기
5/5
post-thumbnail

📝 RNN(Recurrent Neural Network)

순환 신경망이라고 하며, 연속형(Sequential) 데이터를 잘 처리하기 위해 고안된 신경망이다.
주로 자연어처리와 같은 의미를 찾아내는 분석에 강점을 지닙니다.

🔎 자세히보기
연속형(Sequential) 데이터란?
1. 시계열 데이터
2. 텍스트 데이터

1. RNN 구조


기존 신경망에서는 없었던 과정으로 출력 벡터가 다시 입력되는 특성 때문에 '순환(Recurrent) 신경망' 이라는 이름이 붙었다.

🔎 자세히보기
왼쪽 그래프 해석
1. 입력 벡터가 은닉층에 들어가는 것을 나타내는 화살표
2. 은닉층로부터 출력 벡터가 생성되는 것을 나타내는 화살표
3. 은닉층에서 나와 다시 은닉층으로 입력되는 것을 나타내는 화살표(기존 NN과의 차이)

2. 다양한 형태의 RNN

1) one-to-one

2) one-to-many
1개의 벡터를 받아 Sequential한 벡터를 반환한다.
이미지를 입력받아 이를 설명하는 문장을 만들어내는 이미지 캡셔닝(Image captioning)에 사용된다.

3) many-to-one
Sequential 벡터를 받아 1개의 벡터를 반환한다.
문장이 긍정인지 부정인지를 판단하는 감성 분석(Sentiment analysis)에 사용된다.

4) many-to-many 1
Sequential 벡터를 모두 입력받은 뒤 Sequential 벡터를 출력한다. 시퀀스-투-시퀀스(Seq2Seq) 구조라고도 부르며, 번역할 문장을 입력받아 번역된 문장을 내놓는 기계 번역에 사용된다.

(5) many-to-many 2
Sequential 벡터를 입력받는 즉시 Sequential 벡터를 출력한다. 비디오를 프레임별로 분류(Video classification per frame)하는 곳에 사용된다.

3. RNN 장단점

1) RNN 장점

모델이 간단하고 sequential 데이터를 잘 처리할 수 있다.

2) RNN 단점

- 병렬화 불가능
벡터가 순차적으로 입력되는데, 이는 sequential 데이터 처리를 가능하게 해주는 요인이지만, GPU 연산의 장점인 병렬화를 불가능하게 만든다. 그렇기 때문에 RNN 기반의 모델은 GPU 연산을 하였을 때 이점이 거의 없다.

-기울기 소실, 기울기 폭발
RNN의 활성화 함수인 tanh 함수의 도함수는 최댓값이 1입니다. 이러한 경우 역전파 과정에서 값이 점점 작아져 기울기 소실 문제가 발생하는데, 이 때문에 문장 앞쪽 단어는 역전파 정보를 제대로 전달받지 못하게 된다.
기울기 소실은 초기 입력층으로 갈수록 기울기가 점차적으로 작아지는 현상이며, 기울기 폭발은 기울기가 점차 커지면서 가중치들
이 비정상적으로 크게 업데이트되는 현상이다.

- 장기 의존성 문제
순서상 갭이 커질수록 정보를 연결하기 힘들어 은닉층의 과거 정보가 마지막까지 전달되지 못한다.

4. LSTM & GRU


📝 Code Review

import numpy as np

class RNN:
  def __init__(self, Wx, Wh, b):
    self.params = [Wx, Wh, b]
    # 필요한 가중치를 초기화하여 줍니다.
    self.grads = [np.zeros_like(Wx), np.zeros_like(Wh), np.zeros_like(b)]
    self.cache = None

  def forward(self, x, h_prev):
    Wx, Wh, b = self.params
    t = np.matmul(h_prev, Wh) + np.matmul(x, Wx) + b
    h_next = np.tanh(t)

    self.cache = (x, h_prev, h_next)
    return h_next

1개의 댓글

comment-user-thumbnail
2022년 9월 7일

잘 보고 가용!! Daum 님 게시글 보구 저도 velog 정리 했는데 혹시... 불편하시다면... 알려주세요 -!! 출처 표기는 했습니당 ㅎ.ㅎ

답글 달기