AI Tech Day 4 (RNN)

이연걸·2021년 8월 5일
0
post-thumbnail

1. 오늘 일정

1) 학습
2) 피어세션
3) 마스터클래스

2. 학습 내용

AI 기초

10강: RNN

시퀀스 데이터 이해하기

시퀀스 데이터란?
순차적으로 들어오는 데이터를 의미한다. 소리, 문자열, 주가 등의 데이터를 시퀀스(sequnce) 데이터로 분류한다.

  • 시계열(time-series) 데이터는 시간 순서에 따라 나열된 데이터로 시퀀스 데이터에 속한다.
  • 시퀀스 데이터는 독립동등분포(i.i.d.) 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.
    • ex) 개가 사람을 물었다. vs 사람이 개를 물었다.
  • 과거 정보 또는 앞뒤 맥락 없이 미래를 예측하거나 문장을 완성하는 건 불가능하다.

시퀀스 데이터를 어떻게 다루는가?

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

베이즈 법칙을 사용하면
P(X1,,Xt)P(X_1, \dots, X_t)
=P(XtX1,,Xt1)P(X1,,Xt1)= P(X_t|X_1,\dots,X_{t-1})P(X_1,\dots,X_{t-1})
=P(XtX1,,Xt1)P(Xt1X1,,Xt2)××P(X1,,Xt2)= P(X_t|X_1,\dots,X_{t-1})P(X_{t-1}|X_1,\dots,X_{t-2})\times\dots\times P(X_1,\dots,X_{t-2})
=s=1tP(XsXs1,,X1)= \prod \limits_{s=1}^{t}P(X_s|X_{s-1},\dots,X_1)

  • 시퀀스 데이터를 분석할 때 모든 과거 정보들이 필요한 것은 아니다.
  • 시퀀스 데이터를 다루기 위해서는 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다.

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

RNN

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

O=HW(2)+b(2)O = HW^{(2)} + b^{(2)}
H=σ(XW(1)+b(1)H = \sigma(XW^{(1)}+b^{(1)}

Ot=HtW(2)+b(2)O_t = H_tW^{(2)} + b^{(2)}
Ht=σ(XtW(1)+b(1)H_t = \sigma(X_tW^{(1)}+b^{(1)}

Ot=HtW(2)+b(2)O_t = H_tW^{(2)} + b^{(2)}
Ht=σ(XtWX(1)+Ht1WH(1)+b(1))H_t = \sigma(X_tW^{(1)}_X+ H_{t-1}W^{(1)}_H+b^{(1)})

  • 잠재변수인 HtH_t를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용한다.
  • RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다.
  • RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산한다.
    • 이를 Backpropagation Through Time(BPTT)라 한다.

BPTT

  • BPTT를 통해 RNN의 가중치행렬의 미분을 계산해보면 아래와 같이 미분의 곱으로 이루어진 항이 계산된다.

L(x,y,wh,wo)=t=1T(yt,ot)L(x,y,w_h,w_o) = \sum \limits_{t=1}^{T} \ell(y_t,o_t)

L(x,y,wh,wo)=t=1T(yt,ot)L(x,y,w_h,w_o) = \sum \limits_{t=1}^{T} \ell(y_t,o_t) ht=f(x1,ht1,wh)andot=g(ht,wo)\qquad h_t = f(x_1, h_{t-1},w_h) \, and \, o_t = g(h_t, w_o)
whL(x,y,hh,wo)=t=1Twh(yt,ot)=t=1Tot(yt,ot)htg(ht,wh)[wh,ht]\partial_{w_h}L(x,y,h_h,w_o) = \sum \limits_{t=1}^{T}\partial_{w_h} \ell(y_t,o_t)= \sum \limits_{t=1}^{T}\partial_{o_t}\ell(y_t,o_t)\partial_{h_t}g(h_t,w_h)[\partial_{w_h},h_t]
whht=whf(xt,ht1,wh)+i=1t1(j=i+1thj1f(xj,hj1,wh))whf(xi,hi1,wh)\partial_{w_h}h_t = \partial_{w_h}f(x_t,h_{t-1},w_h)+\sum \limits_{i=1}^{t-1}(\prod \limits_{j=i+1}^{t}\partial_{h_{j-1}}f(x_j, h_{j-1},w_h))\partial_{w_h}f(x_i,h_{i-1},w_h)

  • 여기서 (j=i+1thj1f(xj,hj1,wh))(\prod \limits_{j=i+1}^{t}\partial_{h_{j-1}}f(x_j, h_{j-1},w_h)) 이 항은 시퀀스 길이가 길어질수록 불안정해지기 쉽다.

기울기 소실의 해결책

  • 시퀀스 길이가 길어지는 경우 BPTT를 통한 역전파 알고리즘의 계산이 불안정해지므로 길이를 끊는 것이 필요하다. 이를 truncated BPTT라 부른다.
  • 이런 문제들 때문에 Vanilla RNN은 길이가 긴 시퀀스를 처리하는데 문제가 있다.
    • 이를 해결하기 위해 등장한 RNN 네트워크가 LSTM과 GRU이다.

3. 피어 세션 정리

1) RNN 강의 요약 정리
2) 과제 4, 5 코드 리뷰
3) 멘토링 -> 여러가지 좋은 얘기들

4. 마스터 클래스

  • 인공지능 수학 어려워요 ㅠㅠ
    -> 머리보다 손으로!
    -> 많이 보는 것보다 많이 사용해봐라!

    1) 용어의 정의부터 외우자.
    2) 예제를 외우자. (likelihood example)
    -> 수학적 개념을 언제, 어디서 적용할지가 중요

  • 원리를 이해하는데 필요한 기초는?
    -> 선형대수 / 확률론 / 통계학

  • 머신러닝에서 수학이 어떻게 활용되는지?
    -> 증명보다는 정의, 예제, 사용법
    ex) 분류문제에서 왜 cross-entropy를 손실함수로 사용하는가?
    -> Problem Solving 과정은 Define -> Brainstorm -> 구현 -> Analyze 순으로 이루어지는데,
    Define과 Brainstorm에서 수학이 주로 쓰인다!

  • 추천 시스템 관련 공부?
    -> Dive into Deeplearning 16장 추천

  • 책 추천
    -> Dive into Deeplearning (한글판인데 완전하지 않음. 한글판으로 공부하다가 영문판도 보자.)
    -> The Book of Why (여러 패러독스관련해서 읽어볼 수 있는 책, 번역본은 없는 듯)

  • 학석박 차이?
    -> 대중화(like CV, NLP)된 학문은 학석박 상관 X
    -> 아무래도 대중화되지 않은 분야는 석박이 필요함. (전문성)

  • 기업에서 대학원생을 많이 뽑는 이유?
    -> 전문성때문 (대학원이 스펙은 아니다)
    -> 주로 보는게 무얼 연구했느냐?, 논문을 썼느냐?, 논문으로는 있지만 구현안된거 구현

  • 주니어 레벨에서 뭘 하는게 좋을까?
    -> line by line으로 구현 연습 (현업에서 이렇게 하니깐)
    -> GD같은 구현 잘 되어있는거 말고 구현되지 않은 테크닉들 연습해볼 가치가 있는거 위주로
    -> 시니어땐 당연히 디테일하게

  • 논문 구현할 때 명확하지 않은 부분들 어떻게 하냐?
    -> 상상력 (비슷한 상황에서 어떻게 구현했는지?)
    -> 구현하기 쉬운 논문부터 하자.

5. 과제 수행 과정

  • 선택 과제 1번 완료
  • 구현하는게 생각보다 쉽지 않다.
  • 2번, 3번은 내일로 미뤄야 겠음. (안되면 솔루션 보고라도 이해하기)

6. 회고

  • 수학 수식같은거 어려운 부분이 많은데 포기하지말고 익숙해지자.
  • 마스터 클래스랑 멘토링때 좋은 얘기 많이 들어서 좋았다.

7. 내일 할일

  • 파이썬 강의 몰아듣기
  • 선택 과제 2번, 3번하면서 해당 내용 복습
  • 이번주 공부했던 내용 관련해서 책 읽어보기
profile
AI가 세상을 바꾼다. 열심히 AI를 배워서 선한 영향력을 펼치는 개발자가 되고싶다. 인생은 Gradient Descent와 같지.

0개의 댓글