CS231n 10강. Recurrent Neural Networks


Stanfoard CS231n 2017 10강을 요약한 글입니다. 정보 전달보다 자신을 위한 정리 목적이 강한 글입니다! :)
RNN과 LSTM을 이해해보자! 글과 Pytorch를 활용한 RNN 글을 함께 보면 좋을 것 같습니다!

Recurrent Neural Networks Intro

  • Process Sequences

  • RNN : handling variable sized sequence data that allow us to pretty naturally capture all of these different types of setups in our models
    • 시퀀스 길이에 관계없이 인풋과 아웃풋을 받아들일 수 있는 네트워크 구조며, 필요에 따라 다양하고 유연하게 구조를 만들 수 있음
  • 히든 노드가 방향을 가진 엣지로 연결되어 순환 구조를 이루는 인공신경망의 한 종류
  • fixed size input과 fixed size output을 가지는 몇 문제점이 있지만, RNN은 그래도 유용합니다
    • Watch the video
    • Sequential Processing of Non-Sequence Data
      • Classify images by taking a series of “glimpses”
      • glimpses : 언뜻 보다, 주어진 이미지의 주변부를 보고 판단
    • Generate images one piece at a time!

RNN

  • Notice : function과 parameter들은 모든 time step마다 동일하게 사용됩니다

  • W_{hh}는 previous hidden state에서 나오는 Weight Matrix
  • 활성 함수로 tanh를 사용한 이유는?

  • 왼쪽부터 순차적으로 진행

  • y_{t} : class scores

  • L_{t} : loss
  • L : sum of individual losses

  • final hidden state는 전체 sequence의 모든 context를 요약한 정보를 가지고 있습니다

  • Seq2Seq Model
  • Machine Translation
  • Many to one과 one to Many의 조합
  • Encoder + Decoder

Example : Character-level Language Model

  • 느린 속도를 극복하기 위해 배치별로 나눠서 진행

  • karpathy Code

Image Captioning

  • caption : variably length sequence
  • CNN에서 나온 것을 hidden layer의 초기값으로 설정

Image Captioning with Attention

  • 이미지의 특정 부분에 기반해 단어를 유추했다고 보여줌
  • Attention, RNN, LSTM에 대한 내용은 CS231에선 많이 다루고 있지 않습니다. CS224를 참고하면 좋습니다

Visual Question Answering

  • RNN과 Computer Vision의 조합은 Cool
  • RNN에선 2~3개의 layer를 쌓는 것이 일반적입니다

Vainilla RNN Gradient Flow

  • Vanilla RNN의 형태는 Exploding gradients/Vanishing gradients 문제를 가지고 있습니다
    • Exploding gradients의 경우 Gradient clipping을 사용
    • Gradient의 L2 norm이 기준 값을 초과할 때 (threshold/L2 norm)을 곱해주는 것

Long Short Term Memory (LSTM)

  • forget gate가 매번 달라지기 때문에 vanishing gradient 문제가 발생하지 않음

Other RNN Varinats

Summary

Reference






© 2017. by Seongyun Byeon

Powered by zzsza