1. 오늘 일정
1) 학습
2) 피어세션
3) 마스터클래스
2. 학습 내용
AI 기초
10강: RNN
시퀀스 데이터 이해하기
시퀀스 데이터란?
순차적으로 들어오는 데이터를 의미한다. 소리, 문자열, 주가 등의 데이터를 시퀀스(sequnce) 데이터로 분류한다.
- 시계열(time-series) 데이터는 시간 순서에 따라 나열된 데이터로 시퀀스 데이터에 속한다.
- 시퀀스 데이터는 독립동등분포(i.i.d.) 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.
- ex) 개가 사람을 물었다. vs 사람이 개를 물었다.
- 과거 정보 또는 앞뒤 맥락 없이 미래를 예측하거나 문장을 완성하는 건 불가능하다.
시퀀스 데이터를 어떻게 다루는가?
- 이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부확률을 이용할 수 있다.
베이즈 법칙을 사용하면
P(X1,…,Xt)
=P(Xt∣X1,…,Xt−1)P(X1,…,Xt−1)
=P(Xt∣X1,…,Xt−1)P(Xt−1∣X1,…,Xt−2)×⋯×P(X1,…,Xt−2)
=s=1∏tP(Xs∣Xs−1,…,X1)
- 시퀀스 데이터를 분석할 때 모든 과거 정보들이 필요한 것은 아니다.
- 시퀀스 데이터를 다루기 위해서는 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다.

- 잠재변수 Ht를 신경망을 통해 반복해서 사용하여 시퀀스 데이터의 패턴을 학습하는 모델이 RNN이다.
RNN
- 가장 기본적인 RNN 모형은 MLP와 유사한 모양이다.
O=HW(2)+b(2)
H=σ(XW(1)+b(1)
Ot=HtW(2)+b(2)
Ht=σ(XtW(1)+b(1)
Ot=HtW(2)+b(2)
Ht=σ(XtWX(1)+Ht−1WH(1)+b(1))
- 잠재변수인 Ht를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용한다.
- RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다.
- RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산한다.
- 이를 Backpropagation Through Time(BPTT)라 한다.
BPTT
- BPTT를 통해 RNN의 가중치행렬의 미분을 계산해보면 아래와 같이 미분의 곱으로 이루어진 항이 계산된다.
L(x,y,wh,wo)=t=1∑Tℓ(yt,ot)
L(x,y,wh,wo)=t=1∑Tℓ(yt,ot) ht=f(x1,ht−1,wh)andot=g(ht,wo)
∂whL(x,y,hh,wo)=t=1∑T∂whℓ(yt,ot)=t=1∑T∂otℓ(yt,ot)∂htg(ht,wh)[∂wh,ht]
∂whht=∂whf(xt,ht−1,wh)+i=1∑t−1(j=i+1∏t∂hj−1f(xj,hj−1,wh))∂whf(xi,hi−1,wh)
- 여기서 (j=i+1∏t∂hj−1f(xj,hj−1,wh)) 이 항은 시퀀스 길이가 길어질수록 불안정해지기 쉽다.
기울기 소실의 해결책
- 시퀀스 길이가 길어지는 경우 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번하면서 해당 내용 복습
- 이번주 공부했던 내용 관련해서 책 읽어보기