[boostcamp-ai-tech][AI-Math] 10. RNN 맛보기

whatSup CheatSheet·2022년 1월 19일
0

AI-Math

목록 보기
9/9
post-thumbnail

RNN

  • 목차
    • 시퀀스 데이터 이해하기
    • 시퀀스 데이터를 어떻게 다룰까?
    • RNN 이해하기
    • BPTT
    • 기울기 소실의 해결책

시퀀스 데이터 이해하기

  • 시퀀스(Sequence) 데이터: 순차적으로 들어오는 데이터(시간의 흐름대로 나열된 데이터)
    • 주식, 소리, 문자 등
  • 시퀀스 데이터는 독립동등분포(i.i.d) 가정을 잘 위배하기 떄문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 됨
    • 나는 데이터를 좋아해 != 데이터는 나를 좋아해

시퀀스 데이터를 어떻게 다룰까?

  • 이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률 분포를 다루기 위해선 조건부확률을 이용할 수 있다.

    • 초기시점인 X1X_1에서부터 바로직전 과거의 정보인 Xs1X_{s-1}까지의 정보를 사용하여 현재시점인 XsX_s를 모델링하는 조건부확률
    • ! 시퀀스 데이터를 분석할 때 항상 모든 과거 정보들이 필요한 것은 아님
  • 위와 같이 시퀀스 데이터를 다루기 위해선 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요함 -> 위에서 말한 바와 같이 시퀀스 데이터를 분석할 떄 항상 모든 과거 정보들이 필요한 것은 아니기 때문에 고정된 길이 τ\tau 만큼의 시퀀스만 사용하는 경우가 있을 수 있음(AR(τ)AR(\tau) - Autoregressive Model)

    그러나 타우를 하이퍼파라미터로 처리해주어야 하기 때문에 타우를 결정하는 것 자체에 여러가지 사전지식이 필요할 수 있음.

  • 또 다른 방법으로는 바로 이전 정보를 제외한 나머지 정보들을 HtH_t라는 잠재변수로 인코딩하여 활용하는 잠재 AR모델도 있음(바로 이전 정보와 잠재변수라는 두 데이터만 가지고 분석 -> 고정된 길이로 모델링 가능 !)

    과거의 잠재변수를 어떻게 인코딩할지에 대한 문제에서 RNN이 나오게 됨.

RNN(Recurrent Neural Network)을 이해하기

  • RNN: 잠재변수 HtH_t를 신경망을 통해 반복해서 사용하여 시퀀스 데이터의 패턴을 학습하는 모델

  • 가장 기본적인 RNN 모형은 MLP와 유사한 모양임

    이 모델은 과거의 정보를 다룰 수 없음

  • RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링을 함

    • 그림: RNN의 순전파
    • 특징: 3개의 가중치행렬(여기서 가중치행렬들은 t에 따라서 변하는 것이 아님.
      • 이전 잠재변수로부터 온 가중치행렬 WH(1)W_H^{(1)}
      • 입력 데이터에 대한 가중치행렬 WX(1)W_X^{(1)}
      • 출력으로 만들어주는 가중치행렬 W(2)W^{(2)}
  • RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산을 함

    RNN의 역전파 방법: Backpropagation Through Time(BPTT)

BPTT

  • BPTT를 통해 RNN의 가중치행렬의 미분을 계산해보면 다음과 같이 항이 계산됨.

    시퀀스 길이가 길어지면 값이 불안정해짐

    • 기울기 소실: 그레디언트가 0으로 줄어드는 것(이전 정보를 유실할 수 있음)

기울기 소실의 해결책

  • 시퀀스 길이가 길어지는 경우 BPTT를 통한 계산이 불안정해지므로 길이를 끊는 작업이 필요함 -> truncated BPTT
  • 이런 문제들 때문에 기본적인 RNN 모델은 길이가 긴 시퀀스를 처리하는데 문제가 있음.
  • 따라서 이를 해결하기 위해 LSTM과 RGU 등의 RNN 네트워크가 나오기 시작함.
profile
AI Engineer : Lv 0

0개의 댓글