티스토리 뷰

머신러닝

RNN

★ ☆ 2022. 6. 1. 19:52

 

source: https://blog.floydhub.com/a-beginners-guide-on-recurrent-neural-networks-with-pytorch/

 

Beginner’s Guide on Recurrent Neural Networks with PyTorch

Learn the basics of Recurrent Neural Networks and build a simple Language Model with PyTorch

blog.floydhub.com

 

Recurrent Neural Network

 

Feed-Forward Network와 Recurrent Neural Network의 차이점

 - Feed-Forward Network는 모든 input을 한 번에 입력 받지만, RNN은 input을 하나씩 순차적으로 통과시킨다.

 

RNN Cell이 입력을 받아서 계산한 결과를 hidden state라고 한다.

hidden state와 input의 쌍은 다음 cell의 입력으로 사용된다.

 

(Hidden State0), (Input0) ---------> RNN cell1 ------------> (HiddenState1), (Input1) --------> RNN cell2 ------------> (HiddenState2), (Input2) ----------> RNN cell3 -------------> (HiddenState3), (Input3) ...

 

 

 

 

 

 

그러면 최초의 hidden state 0은 어떻게 정의하는가? 라는 나와 같은 의문을 가진 사람이 글을 썼고, 거기에 답변이 달렸다. 벌써 3년 3개월 전이다. 

 

https://stats.stackexchange.com/questions/395382/what-happens-to-the-initial-hidden-state-in-an-rnn-layer

 

What happens to the initial hidden state in an RNN layer?

I thought I knew how RNNs work, however, when I tried to actually implement it myself, I faced some issues. For one, how do we deal with the initial hidden state? At the very beginning we just crea...

stats.stackexchange.com

 

문: RNN이 어떻게 동작하는 지 알고 있는 줄 알았는데, 실제로 구현하려고 하니 최초의 hidden state를 모르겠다. 제일 처음에 적절한 크기의 전체가 0으로 구성 된 벡터를 넣고 전체를 다 돌면 한번의 반복iteration인데, 그 다음 반복next iteration에서는 무슨 일이 일어나는가? 네트워크에 새로운 입력이 들어오면 0으로 구성 된 동일한 벡터를 넣나? 이건 이치에 맞지 않는다. Back Propagation 단계에서 h0을 업데이트 하지 않는 것과 같기 때문이다. 이 부분 때문에 헷갈린다.

만약 우리가 항상 같은 영벡터를 넣는다면, 지금까지 업데이트한 모든 hiddenstate를 0으로 취급nullify하는 것과 같지 않은가.

그래서, 최초의 hidden state는 어떻게 다루어야 하는가?

 

 

(전제) 최초 hidden state는 영벡터

 

답: 두 가지 방식이 보편적이다.

1. 만약 텍스트가 언제나 같은 순서로 입력 된다면,  (최초에는 hidden state에 0벡터를 넣어서 학습 된) 제일 마지막 hidden state를 첫번째의 hidden state로 넣는다. 예시) 소설 전쟁과 평화

2. 텍스트가 연관성이 있으리라고 추측 되지만 실제로는 별개의 입력일 때. 예시) 같은 주제에 대해서 쓰여진 tweets, 항상 0을 넣어서 학습 시킨다.

 

 

 

 

 

 

'머신러닝' 카테고리의 다른 글

LSTM  (0) 2022.06.02
Epoch, Batch, and Iteration  (0) 2022.06.02
conda 가상환경 다루기  (0) 2022.05.24
Latent Space  (0) 2022.04.19
Random Forest  (0) 2021.12.29
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함