본문 바로가기
딥러닝/cs231n

10. Recurrent Neural Networks

by sonysame 2024. 5. 6.

RNN: sequential 데이터 학습에 활용

 

수행하려는 task에 따라 다양한 수의 input과 output을 가짐(one-to-many, many-to-one, many-to-many)

 

RNN에는 hidden state가 추가됨

hidden state는 계속해서 업데이트 되지만, 함수 f와 파라미터 W는 매번 동일한 값을 가진다. 

 

Re-use the same weight matrix at every time-step

 

 

many-to-many

 

(예시) RNN을 이용하여 prefix가 주어졌을 때, 어떠한 문자가 출력되어야 하는 지 예측하는 예시

one-hot encoding

위 예씨의 경우 가장 스코어가 높은 값만 사용하게 되면 올바른 결과가 나오지 않는다.

확률분포를 사용해서 샘플링했기 때문에 hello를 만들어낼 수 있었는데, 확률분포에서 샘플링하는 방법을 통해 일반적으로 모델에서 다양성을 얻을 수 있게 된다. 

RNN은 hidden state를 이용하여 계산시간과 학습시간이 느림

RNN에서는 sequence에 대해 back propagation을 수행해야 하므로, 계산량이 많기 때문에

잘라낸 신경망에서 역전파 수행

 

RNN-> 셰익스피어 글 생성, C코드 생성,  Image Captioning, visual question answering 에 사용...

 

<Image Captioning>

입력은 이미지이고, 출력은 자연어로 된 caption
CNN에서 나오는 하나의 출력값을 RNN의 입력으로 사용

지도학습 수행

FC-4096에서 나온 입력을 이전 hidden state값으로 사용

 

<Image Captioning with Attention>

caption을 생성할 때, 이미지의 특정부분을 집중적으로 볼 수 있음. 

CNN의 출력으로 하나의 벡터를 만드는 것이 아니라, 각 벡터가 갖고 있는 공간 정보 grid of vector를 만들어냄.

attention은 각 이미지의 어느 부분을 중심적으로 볼지에 대한 정보

 

<RNN의 문제점>

W가 계속 곱해지게 되므로, exploding gradients/vanishing gradients 문제 발생

exploding gradient문제는 gradient clipping 기법 통해 해결(매번 값이 threshold보다 커질때마다 조정)

 

<LSTM>

이를 해결하기 위해 -> LSTM(Long Short Term Memory)

RNN과 유사한 구조이지만, cell state가 추가됨

ht: hidden state

ct: cell state(4개의 gate를 통해 업데이트)

이제 역전파 과정에서, W대신 f를 곱해주게 된다. f는 각 단계마다 input과 W의 곱으로 새로 생성되므로 매번 다른 값을 곱해주는 것이기 때문에 gradient vanishing 문제가 발생하지 않는다.

 

W에 대한 gradient 계산 또한 cell state로 전달된 역전파값이 사용되므로, 잘 이루어짐

 

<GRU>

LSTM의 변형

GRU가 LSTM보다 단순한 구조를 가져 학습이 더 빠름

 

'딥러닝 > cs231n' 카테고리의 다른 글

12. Visualizing and Understanding  (0) 2024.05.24
11. Detection and Segmentation  (0) 2024.05.24
9. CNN Architectures  (0) 2024.05.05
8. Deep Learning Software  (0) 2024.04.29
7. Training Neural Networks 2  (0) 2024.04.29