본문 바로가기

데이터/딥러닝

CS231n_Lecture10: Recurrent Neural Networks

Recurrent Neural Network

  • one to one 모델
  • one to many 모델
    • 입력은 이미지와 같은 단일 입력이지만 출력은 가변 출력
  • many to one 모델
    • 가변입력(ex. 문장), 가변 출력
  • many to many 모델 

 


Reccurent Neural Network 동작방식

  • 일반적으로 RNN은 작은 recurrent core cell을 가지고 입력이 RNN으로 들어가면 내부의 hidden state가 입력이 발생할 때마다 업데이트 된다.
  • hidden state는 모델에 feed back 되고 입력을 받아들인다.

수식표현

  • 파라미터 w를 가진 함수 f가 있다.
  • 함수 f는 이전 상태의 hidden state인 h_t-1과 현재 상태의 입력인 x_t를 입력으로 받고, h_t(다음 상태의 hidden state)를 출력한다.
  • 다음 단계에서는 h_t와 x_t+1이 입력된다.
  • 출력 y를 가지려면 h_t를 입력으로 하는 FC-Layer를 추가해야 한다.
  • FC-Layer는 h_t기반
  • 파라미터 W는 매 스탭 동일하다.

many to many
many to one
one to many

 


Sequence to Sequence(many to one + one to many)

  • encoder + decoder
  • Output  sentence의 각 losses를 합해서 Backprob 진행

 

  • 각 글자는 하나의 벡터로 표현(해당 글자 위치만 1로 표시)
  • y_t는 어떤 문자가 h 다음에 나올 것 같은지를 예측한 값(이 예제에서는 h 다음에 e를 예측해야 정답)

Model로 부터 sampling하는 방법

 

  • 실제로는 많은 연산량 때문에 one hot 사용
  • 이런 모델의 경우 시퀀스 스텝마다 출력값이 존재, Backpropagation through time 발생(이 출력값들의 Loss를 계산해 final loss를 얻는 것)

 


Attention(모델)

 

 

 

  • Caption을 생성할 때 이미지의 다양한 부분을 집중해서(attention) 볼 수 있다. 
  • CNN으로 grid of vector를 만들고 forward pass 시 매 스탭 vocabulary에서 샘플링할 때 모델이 이미지에서 보고싶은 위치에 대한 분포도 만든다(attention)
  • 첫번째 hidden state는 이미지의 위치에 대한 분포를 계산하고 이 분포를 다시 벡터집합과 연산하여 이미지 attention을 생성한다.
  • 이 요약된 벡터(z1)은 Neural network의 다음 스텝의 입력으로 들어간다.
  • 그러면 voca의 각 단어들의 분포와 이미지 위치에 대한 분포 두가지 출력이 생성된다.
  • soft attention의 경우에는 "모든 특징"과 "모든 이미지 위치"간의 weighted combination을 취하는 경우
  • hard attention의 경우에는 모델이 각 타임 스텝마다 단 한 곳만 보도록 강제한 경우
  • 모델 전체가 미분 가능하기 때문에 soft attention 또한 backprob이 가능하다.

 


RNN + Attention(모델)