Lecture 7 – Vanishing Gradients, Fancy RNNs

tobigs-text1415·2021년 5월 12일
4
post-thumbnail

작성자 : 건국대학교 응용통계학과 강재영

1. Vanishing Gradient

Backpropagation for RNNs

이전에 저희는 기존의 Backpropagation과 조금 다른 RNN의 **BPTT(Backpropagation through time)**에 대해 배웠습니다.
이처럼 순환하는 과정을 펼친 후에 편미분을 취해서 에러를 구하게 됩니다. 이 때 실제로는 하나의 Edge를 편의상 펼친 것이므로 모두 같은 가중치를 가져야 한다는 것을 잊으면 안됩니다.
따라서 모든 update가 동일하게 이루어져야 하고 이를 위해 각 레이어마다 동일한 위치의 weight에 해당하는 모든 error 미분값을 다 더한 다음, 그 값을 backpropagation하여 weight를 한 번 업데이는 하는 방법이 BPTT입니다.
(동일한 위치의 Weight에 해당하는 모든 미분값을 더한다는 의미를 처음에 이해하지 못해서 제가 이해한 그림을 추가로 넣어드립니다. 이해가 안가시는 분 참고하면 좋을듯해요.)

그림출처 : https://m.blog.naver.com/infoefficien/221210061511

1. Vanishing Gradient intuition


위 그림은 RNN의 t시점의 히든스테이트와 t시점의 히든스테이트를 이전 히든스테이트로 편미분한 결과입니다. 위 식을 토대로 아래와 같이 그래디언트를 일반화할 수 있습니다.

이 때 보라색으로 상자가 그려진 부분이 가중치행렬 W_h를 의미하며 가중치 행렬이 작아지면 항 전체가 작아지게 됩니다. 가중치 행렬이 작아지는 때를 고려해보면, i와 j의 차이가 클수록 작아진다는 것을 확인할 수 있습니다.
( Sequence 간의 거리가 멀수록 ) 이를 좀더 수식으로 확인해보면,


(증명 :https://imgur.com/zcuKkv2)

Norm의 성질에 의해서 W_h 의 L2 norm은 W_h의 가장 큰 고유값(eigenvalue)이라는 것을 확인할 수 있습니다.

저희는 RNN 역전파시 체인룰에 의해 Hidden state의 Gradient를 지속적으로 곱해주어야 합니다.
그런데 위 수식을 보면 Hidden state의 Gradient의 L2 norm은 절대적으로 W_h의 L2 norm 크기에 달려 있습니다.
(L2 norm을 '크기'라고 바꿔서 보면 이해가 더 쉽습니다.)
따라서, 가장 큰 고유값(L2 norm)이 1보다 작다면, Gradient가 기하급수적으로 감소하게 되고(Gradient Vanishing), 가장 큰 고유값(L2 norm)이 1보다 크다면, Gradient가 폭발적으로 증가하게 됩니다.(Gradient exploding)

2. Why is vanishing gradient a problem?

그렇다면 Gradient Vanishing이 발생하는 이유는 이해했는데, 그게 왜 문제라는걸까요?

    1. 모델이 가까운 Gradient의 효과만 반영하고 멀리서 온 Gradient는 무시하게 되는 현상이 나타납니다.
      즉, Near-effects만 반영되고, Long-term effects는 무시하게 되는거죠
    1. 그리고 Gradient는 미래에 과거가 얼마나 영향을 미치는지에 대한 척도인데 Gradient가 소실되버리면, 결과를 해석할 때 "Step_t 와 Step_t+n 사이에 의존성이 없어서 Gradient가 0이 된건지" / "Parameter를 잘못구해서 Gradient가 0이 된건지" 구분할 수가 없게 됩니다.

3. Effect of vanishing gradient on RNN-LM

Vanishing Gradient가 실제 Language Model에서 발생시키는 문제들을 확인해보겠습니다.

  • 빈칸에 들어가야할 단어는 첫 줄에 나왔던 tickets 입니다. 하지만 첫줄에 나온 tickets과 빈칸 사이에는 많은 Sequence들이 존재하기 때문에 Gradient가 소실될 가능성이 큽니다. 그렇게 되면 LM Model은 멀리 있는 단어 간의 의존성을 학습하지 못하기 때문에 ticket 예측에 실패하게 됩니다.

또 다른 예시를 확인해보겠습니다.

  • 문법적으로 is가 옳은 정답이지만, 가까이있는 Gradient의 영향력이 더욱 크게 반영되는(Near effect, Not Long-term effect) 현상이 나타나면서 are로 예측을 하게 되는 예시입니다.
  • Gradient Cliping
    이전에 Gradient Vanishing 외에 Gradient가 기하급수적으로 커지는 Gradient exploding이 있었는데, 이를 해결하기 위한 방법으로 Gradient Cliping이 있습니다.

    만약에 Gradient의 Norm 값이 임계값보다 크다면, Scale down을 적용하는 간단한 알고리즘입니다.

LSTM(Long Short-Term Memory)

Gradient Exploding을 Cliping으로 해결할 수 있었는데 Vanishing은 어떻게 해결할 수 있을까요?
LSTM의 Main idea
" Gradient가 레이어를 지날수록 0에 가까워지는게 문제라면, 정보를 Save하는 메모리를 따로둬서 Gradient를 살릴 수 있지 않을까? "

  • LSTM에는 RNN과 다르게 이전 정보를 지속해서 흘려주는** Cell State**와 불필요한 정보를 걸러주는 Gate가 존재

LSTM 과정

1) Forget gate layer

Forget gate : 어떤 정보를 잊고 어떤 정보를 Cell State에 흘려넣을지 결정하는 Gate

  • t번째 시점에서의 x값과 t-1시점에서의 hidden state를 입력값으로 받아 sigmoid activation function을 통해 0에서 1사이의 값을 출력하여, 0에 가까울수록 완전히 잊고, 1에 가까울수록 많이 흘려넣게 된다.

2) input gate layer

input gate: 새로운 정보가 Cell State에 저장될지를 결정하는 Gate

  • C_t-1에 새로운 input x_t와 h_t-1를 보고 새로운 정보를 생성합니다.
  • 여기서 i_t는 Gate로 0 ~ 1 값을 내며, 1에 가까울수록 새롭게 만들어진 정보를 완전히 반영하고, 0에 가까울수록 잊습니다.

3) Update Cell State

Cell State를 업데이트 하는 과정을 살펴보면,

  • 과거의 정보를 반영할지의 유무는 Forget Gate
  • 새롭게 발생한 현재의 정보를 반영할지의 유무는 input Gate를 통해 결정

이 두 값이 더해져서 다음 cell state의 입력값으로 들어가게 된다.(Update)

4) Ouput gate layer

Output gate
마지막으로, 최종적으로 Cell State 정보를 tanh를 통해 가공하고, 이를 다음 hidden State 얼마나 반영할지에 대해 Output gate를 통해 결정하게 됩니다.
최종 아웃풋은 Ot * tanh(Ct)

How does LSTM solve vanishing gradients?


수식을 살펴보면, forget gate가 1이고, input gate가 0 일때 Cell의 정보가 완전하게 보존되서 장기의존성 문제를 해결할 수 있게됨을 확인할 수 있다. 하지만 여전히 Gradient Vanishing의 완전한 해결을 보장하지는 않는다.

GRU(Gated Recurrent Units)

GRU의 Main idea
" LSTM은 좋긴 좋은데 구조가 복잡하기 때문에 조금 더 단순화할수 없을까? "

GRU는 LSTM의 변형으로,

  • GRU는 Reset Gate(rt)와 Update Gate(zt) 2개의 게이트로 이루어져있다.
  • LSTM에서 forget gate와 input gate를 GRU에서는 update gate(zt)로 합쳐 주었다.
  • LSTM에서 forget gate역할이 rt와 zt 둘 다에 나눠졌다고 볼 수 있다.
  • 출력값(ht)를 계산할 때 추가적인 비선형(nonlinearity) 함수를 적용하지 않는다.

다음과 같은 특징들이 있다.

GRU 과정

  • 여기서 Gate는 Reset gate와 Update gate 두가지가 존재하며, 다음과 같은 역할을 한다.
  • Reset gate : 이전 정보를 어느정도 반영할지 결정
  • Update gate : 과거와 현재의 정보 반영 비중을 결정

LSTM VS GRU

  • 둘 모두 장기기억에 좋다
  • 현재는 다른모델도 많지만 당시에는 종종 SOTA
  • GRU는 파라미터가 보다 적기 때문에 빨라서 학습하기 좋고, LSTM은 그냥 기본적으로 선택하기 좋다.
  • Rule of thumb에 따라서 LSTM으로 시작해본 후 efficient함을 원하면 GRU를 시도해보길 권한다.

Is vanishing/exploding gradient just a RNN problem?

Vanishing gradient 문제가 RNN만의 문제는 아니다. 다른모델에서 어떻게 이를 극복하려 했는지 확인해보자

    1. Residual connections "ResNet"의 Skip connection

      Convolutional Layer를 지나고 나온 결과에 input x를 다시 더해줘서 기존 정보 + 새로운 학습정보를 모두 고려할 수 있도록 했다.
    1. Dense connections "DenseNet"의 Dense connectivity


      위 기존 모델들과 비교한 그림을 보면 이해가 더 쉬운데, ResNet이 이전 레이어의 정보만 다시 더해준다면, Dense connectivity는 이전 모든 레이어 정보를 쌓는다고 생각하면 된다.

More fancy RNN variants

Bidirectional RNNs

Bidirectional RNNs : 양 방향 정보를 모두 이용하기 위한 RNN 구조

  • Bidirectional RNNS 과정
  1. forward RNN : 정방향으로 입력받아 hidden state 생성
  2. backward RNN: 역방향으로 입력받아 hidden state 생성
  3. 두 개의 hidden state 연결(Concat)해서 전체 모델의 hidden state로 사용

추가그림 및 수식

Multi-layer RNNS

Multi-layer RNN : RNN을 여러층으로 사용한 모델

  • 여러 개의 층으로 구성된 Multi-layer RNN은 더 복잡한 특성을 학습할 수 있도록 만들어준 모델이다. 조금 더 고차원의 패턴, 복잡한 표현을 잡아낼 수 있다.
  • 일반적으로 2~4개 정도의 layer을 쌓아서 사용한다. 그 이상 쌓으면 Gradient vanishing 을 해결하기 위한 Skip connection과 같은 테크닉이 필요하다.

Q&A

Q1. LSTM에서 왜 forget gate에서 previous cell state가 아니라 previous hidden state와 input에 대해서만 고려하여 계산되는지?

  • 저도 많이 찾아보고 강의를 들어봤는데, 추가적인 자료는 찾지 못했고 강의에서는 Previous hidden State가 Previous Cell State에 대한 정보를 내포하고 있다고 대답했습니다.
    따라서 굳이 추가적으로 Previous Cell State를 고려할 필요가 없었을 것 같습니다.

Q2. HighwayNet에 대한 설명이 부족한거같아요.

HighwayNet

  • H : Plain Layer 를 의미
  • Transform gate(T): Plain Layer의 결과를 어느정도 반영할지 결정
  • Carry gate(C): input 정보를 어느정도 반영할지 결정(논문에서 C = 1-T로 정의되었다.)

HighwayNet은 이처럼 Layer 결과값과 input x 값의 반영비를 조절하면서 학습하여 ResNet처럼 기존정보(input) + 새로운 학습정보(H)를 모두 고려할 수 있도록 하였다.

  • 다른 질문들은 위에서 반영되도록 하였습니다.

Reference
Stanford CS224n Lecture 7 강의 & 강의자료
13-14기 정규세션 13기 이예지님 모델심화2 강의자료
https://excelsior-cjh.tistory.com/89
https://ratsgo.github.io/deep%20learning/2017/10/10/RNNsty/
https://jeongukjae.github.io/posts/cs224n-lecture-7-vanishing-gradients-fancy-rnns/
https://yjjo.tistory.com/18?category=881892
https://velog.io/@tobigs-text1314/CS224n-Lecture-7-Vanishing-Gradients-And-Fancy-RNNs#multi-layer-rnns 투빅스 13-14기 텍스트 세미나 자료
https://jayhey.github.io/deep%20learning/2017/10/13/DenseNet_1/
https://lazyer.tistory.com/8

10개의 댓글

comment-user-thumbnail
2021년 5월 12일

투빅스 14기 정세영

RNN의 vanishing gradient와 여러 변형된 모델에 대해 개념을 자세히 짚을 수 있는 강의였습니다. 여러 시각적인 자료를 추가해주셔서 이해하기 수월했습니다.

  • RNN의 BPTT 미분 수식을 보면 Wh가 vanishing gradient의 주원인이 되는데, 이 때 Cauchy-Schwartz 부등식에 의해 Wh의 L2-norm은 Wh의 가장 큰 고유값이다.
  • vanishing gradient가 발생하면 정말 의존성이 없어서 소실된건지 구조의 문제로 인해 소실된건지 구분할 수가 없다.
  • LSTM의 forget gate는 cell state를 사용하지 않는다. forget gate에 cell state가 들어가게 되면 미분 결과 vanishing gradient가 똑같이 발생하기 때문에, cell state는 정보를 받기만 하는 주체이다.
  • vanishing gradient 해결 방법론이 등장한 모델로 ResNet과 DenseNet이 있는데, Skip connection을 적용하는 ResNet과 달리 DenseNet은 이전 모든 레이어의 정보를 가져가는 형태이다.
답글 달기
comment-user-thumbnail
2021년 5월 12일

투빅스 14기 한유진

  • RNN에서 vanishing gradient가 문제가 되는 이유는 long-term effects를 무시한다는 점, gradient가 무엇때문에 0이 되었는지 구분할 수 없다는 점 때문입니다. 이를 보완하기 위해 나온 모델이 LSTM입니다.
  • LSTM은 정보를 저장하는 메모리를 따로두어 gradient를 살리자는 idea로 출발한 모델입니다. 이전 정보를 지속적으로 흘려주는 cell state는 forget, input, output gate들을 이용하여 정보의 반영여부를 결정합니다. forget gate는 어떤 정보를 잊고 어떤정보를 cell에 흘려넣을지 결정하는 gate, input gate는 새로운 정보가 cell에 저정될지 결정하는 gate, output gate출력값을 반환하는 gate입니다. LSTM의 구조를 단순화하여 등장한 모델이 GRU입니다.
  • GRU는 이전 정보를 어느정도 반영할지를 결정하는 reset gate와 과거와 현재의 정보 반영 비중을 결정하는 update gate(forget gate + input gate; in LSTM), 총 2개의 gate로 이루어져있습니다. LSTM과 비교해보자면 GRU는 파라미터가 적어 빠른학습이 가능하지만 보통 LSTM을 먼저 사용한다고 합니다.
  • vanishing gradient 문제를 ResNet에서는 skip connection으로 극복했습니다. 과거의 학습 내용 보존하면서 추가적으로 학습하는 정보를 통해 gradient가 사라지는 현상을 해결했습니다. DenseNet에서는 ResNet과 달리 이전 모든 레이어 정보를 쌓는 방법으로 해결했습니다. HighwayNet은 Transform gate와 carry gate를 사용하여 output이 input에 대해 얼마나 변환되고 옮겨졌는지 표현함으로써 해결하는 방식이라고 합니다.

LSTM의 작동방식을 세세하게 짚어주시고 질문에도 잘 답변해주셔서 쉽게 이해할 수 있었습니다. 좋은 강의 감사합니다!

답글 달기
comment-user-thumbnail
2021년 5월 13일

투빅스 15기 이수민

  • Vanishing gradient 문제가 발생할 경우 우선 long-term effect를 무시하게 되고, gradient가 너무 작아져서 0에 가까워지는 경우, 그 원인을 해석하는 데에 어려움이 발생합니다.
  • LSTM: RNN과 다르게 forget gate, input gate, output gate를 만들고 유지해서, cell state를 판단/제어하고 vanishing gradient 문제를 완화합니다. 이때 cell state는 긴 timestep 동안 데이터를 유지할 수 있도록 해주는 정보 저장 메모리라고 볼 수 있습니다.
  • GRU는 LSTM의 복잡도를 낮춰 제안된 조금 더 간단한 형태로, cell state가 존재하지 않는 대신 hidden state에 정보를 유지합니다.
  • ResNet에서는 skip connection을 적용하여 기존 정보와 새로운 학습정보를 모두 고려할 수 있도록, DenseNet에서는 이전 모든 레이어 정보를 쌓는 방법으로 vanishing gradient 문제를 해결했습니다.
  • RNN variants: Bidirectional RNN을 사용하면 문장을 단방향으로 읽을 때와 다르게 앞 뒤 문맥이 고려 가능하며, 특히 전체 입력 데이터를 모두 활용할 수 있을 때 성능이 극대화됩니다. MultiLayer RNN은 여러 층으로 구성된 RNN으로, 고차원의 패턴과 더 복잡한 특성을 잡아낼 수 있습니다.

Vanishing gradient 문제의 발생과 해결에 대해 다양하고 깊이 있게 알게 된 강의였습니다. 특히 어렵게 느껴졌던 LSTM에 대해 자세하게 설명해 주셔서 좋았습니다. 감사합니다!

답글 달기
comment-user-thumbnail
2021년 5월 16일

투빅스 15기 김동현

Vanishing gradient 문제와 이를 해결하기 위한 RNN, LSTM, GRU 등 다양한 변형 모델들에 대해서 자세히 알아볼 수 있는 강의였습니다.

  • Gradient Problem : RNN backpropagation 시 gradient가 너무 작아지거나, 반대로 너무 커져서 학습이 제대로 이뤄지지 않는 문제
  • 파라미터들이 가까이 위치한 dependency에 맞게 학습을 하고, 멀리 떨어진 dependency에 대해서는 학습을 하지 못하게 된다.
  • LSTM(Long Short-Term Memory) : RNN의 vanishing gradient문제로 발생하는 장기 의존성 문제를 해결하기 위해 RNN에서 메모리를 분리하여 따로 정보를 저장함으로써 한참 전의 데이터도 함께 고려하여 output을 만들어내는 모델
  • GRU(Gated Recurrent Units) : LSTM의 강점을 가져오되, 불필요한 복잡성을 제거한 모델
답글 달기
comment-user-thumbnail
2021년 5월 17일

투빅스 15기 조준혁

  • Vanishing gradient 문제는 값을 미분해 나갈 수록 미분 값이 너무 작아지거나 너무 커져서 학습이 제대로 이루어지지 않는 문제입니다.
  • RNN 상에서 미분값 소실 문제가 발생하면 Long-Term 효과를 무시하고 미분값이 너무 작아져 0에 가까워지는 경우에는 그 원인을 해석하기 어려워집니다.
  • LSTM의 시작은 Gradient를 보존하기 위해 메모리를 따로 두는 방법에서 시작했습니다. Cell State에서 이전 정보를 지속적으로 전달하며 forget, input, output gate등을 통해 정보를 흘려보낼지 아닐지 결정하게 됩니다.
  • GRU는 Reset Gate를 통해 이전 정보를 어느정도 반영할지 결정하고 과거와 현재 정보를 얼마만큼 반영할 것인지 비중을 결정하는 Update Gate로 이루어져 있습니다.
  • ResNet은 Skip Connection을 이용해 기존 정보와 새로운 정보를 모두 사용할 수 있도록 했습니다.
  • DenseNet의 경우에서는 이전 레이어의 정보를 누적적으로 고려하여 Vanishing Gradient 문제를 해결했습니다.

RNN과 RNN 변형 모델들에 대해 학습하고 개념을 잡을 수 있었던 강의였습니다. 감사합니다.

답글 달기
comment-user-thumbnail
2021년 5월 18일

투빅스 14기 정재윤

  • RNN에서 vanishing gradient는 필연적으로 발생하게 됩니다. 특히 vanishing gradient가 발생하면 long-term effects를 무시한다는 점, gradient가 무엇때문에 0이 되었는지 구분할 수 없다는 문제가 말생하는데, 이를 보완하기 위해 나온 모델이 LSTM입니다.

  • LSTM은 이전 정보를 지속적으로 흘려주는 cell state는 forget, input, output gate들을 이용합니다. forget gate는 어떤 정보를 잊고 어떤 정보를 cell에 흘려넣을지 결정하는 gate, input gate는 새로운 정보가 cell에 저정될지 결정하는 gate, output gate출력값을 반환하는 gate입니다.

  • 이 후, 나온 모델이 GRU입니다. GRU는 LSTM보다 더 간단한 형태로, cell state가 존재하지 않는 대신 hidden state에 정보를 유지합니다.

  • 최근에는 여러 RNN모델들이 나왔는데 대표적으로 Bidirectional RNN과 Multi layer RNN등이 만들어졌을 뿐만 아니라, skip connection 등의 이미지에서 사용되는 기법들도 도입되면서 더 다양한 모습들을 보여주고 있습니다.

답글 달기
comment-user-thumbnail
2021년 5월 18일

투빅스 15기 이윤정

  • gradient는 과거가 미래에 얼마나 영향을 미치는 척도이다. 그러므로 gradient가 소실되는 Vanishing gradient는 longterm effects는 배제된 채 near-effects만 반영 되므로 결과 해석에 어려움이 발생한다. 이러한 문제는 LM model에서 멀리 있는 단어 간의 의존서을 학습하지 못하여 단어 예측에 실패하는 결과로 확인된다.
  • gradient vanishing을 보완하기 위한 모델로 LSTM이 등장하였다. lstm은 정보를 저장하는 메모리를 따로 두어 gradient 살리자는 아이디어에서 출발하였고 이는 이전 정보를 지속해서 흘려주는 cell state와 불필요한 정보를 걸러주는 gate를 통해 구현되었다. 다만 구조가 너무 복잡하고 gradient vanishing을 완전히 해결하지 못했다는 단점이 있다.
  • GRU는 lstm의 복잡한 구조를 단순화한 변형 모델로 reset과 update gate로 구성되어있다. 이때, update gate는 lstm의 forget과 input gate가 합쳐졌다고 볼 수 있다. 대체로 Rule of thumb에 따라 lstm으로 시작해본 후 efficient함을 원하면 gru를 시도하는 추세이다.
  • 그 외에도 Resnet의 경우 skip connection을, Densenet의 경우 Densenet connectivity을 통해 gradient vanishing 문제를 해결하고자 하였다.

gradient vanishing 문제를 해결하기 위한 다양한 변형 모델을 이미지와 곁들여 상세히 설명해주셔서 더욱 이해하기 쉬운 강의였던 것 같습니다. 감사합니다.

답글 달기
comment-user-thumbnail
2021년 5월 18일

투빅스 15기 조효원

RNN의 한계점에는 여러 가지가 있지만 가장 대표적인 문제는 time step이 흐를수록 정보가 소실, 즉 기울기가 소실되는 것이다. 언어의 특정 상 long-term dependecy가 발생하는데, 기울기가 소실되면 이를 포착 및 표현할 수 없다. 뿐만 아니라 기울기가 소실된 이유가 구고적인 문제인지 혹은 의존성이 없어서 , 즉 없어져야하기 때문에 없어진 것인지 파악할 수가 없다.
이를 해결하기 위해 다양한 종류의 gate가 추가된 LSTM 모델이 등장했다. LSTM 모델은 forget gate, input gate, output gate를 이용해서 이전의 time step의 정보중, 잊을 정보와 기억할 정보를 구분해 중요한 정보는 뒤의 시간까지 기억할 수 있도록 하였다. 이로서 기울기 소실 문제를 완화했다.
LSTM 모델을 구조가 복잡하고 연산이 많을 수밖에 없었는데, 이를 경량화한 것이 GRU이다. GRU는 더 빠르지만 유사하거나 때로는 더 좋은 성능을 보였다.

답글 달기
comment-user-thumbnail
2021년 5월 18일

투빅스 14기 강의정
Lecture 7 – Vanishing Gradients, Fancy RNNs를 주제로 발표해주셨습니다.

  • RNN은 역전파시 Hidden state의 Gradient를 곱해주어야 하는데 Gradient의 L2 norm이 1보다 작다면 Gradient Vanishing이, 1보다 크다면 Gradient exploding이 일어납니다.
  • 이전 정보를 저장하는 방식으로 vanishing gradient 문제를 해결하기위해 나온 LSTM은 forget gate, input gate, output gate로 이전 정보에 대한 제어를 합니다.
  • GRU는 LSTM을 변형하여 조금 더 단순화한 것으로 LSTM에 비해 학습속도가 빠릅니다.
  • Vanishing gradient 문제를 해결하기 위한 다른 사례로 skip connection을 적용한 ResNet과 이전 레이어 정보를 모두 가져가는 DenseNet이 있습니다.
  • 이 외에 양방향 정보를 활용하는 Bidirectional RNNS과 여러층으로 RNN을 구성하는 Multi-layer RNN에 대해 살펴보았습니다.
답글 달기
comment-user-thumbnail
2021년 5월 18일

투빅스 15기 김재희
RNN의 한계에 대해 배우고, 이를 개선한 LSTM, GRU, Bi-RNN 등에 대해 공부했습니다. 강의보다 더 다양한 자료들이 있어서 더 이해할 수 있었던 것 같습니다. 감사합니다.

  • RNN의 문제점은 시점이 길어질수록 그래디언트가 0에 가까워지는 vanishing grandient가 발생한다는 점입니다. 이는 미분식에서 W 행렬의 l2 norm이 1보다 작으면 연속적으로 곱해지면서 발생하게 됩니다 .

  • LSTM은 여러 게이트와 cell state를 추가하여 이를 개선한 모델입니다. 장기 기억과 단기 기억으로 정보를 분리하여 vanishing grandient 문제를 해소할 수 있었습니다.

  • GRU는 LSTM을 단순화하여 파라미터 수를 줄이면서도 일부 태스크에서 비슷한 성능을 보이는 모델입니다. LSTM을 기본으로 하되, GRU 역시 시도해볼만하다고 합니다.

  • NLP의 정보는 사실 어느정도 양방향성을 가지고 있습니다. 이를 고려하여 RNN류 모델들은 양방향으로 정보를 고려해서 모델링되어야 합니다. 이것이 Bi-RNNs입니다.

  • RNNs 레이어 하나를 통해 복잡한 함수가 표현되지는 않습니다. 만약 태스크가 복잡하여 단일 레이어로 해결할 수 없다면, 모든 시점의 hidden state를 입력값으로 하는 RNNs 레이어를 추가하여 문제를 해결할 수 있습니다.

답글 달기