2018년 12월 2일 일요일

Deep Learning with Sequence Data and text (순차적 데이터와 텍스트의 딥러닝 PyTorch) (16)


LSTM networks (2/2)


LSTM에 있어서 가장 중요한것은 앞의 다이어그램에서 셀을 가로 지르는 수평선으로 표시된 모든 반복을 통해 통과하는 셀(cell) 상태(state) 입니다. LSTM 내부의 다중 네트워크는 셀 상태를 통해 이동하는 정보를 제어합니다. LSTM(작은 네트워크는 앞에 그림에서 σ로 표시되었습니다.)에서 첫번째 스텝은 어떤 정보가 셀 상태에서 벗어날것인지를 결정하는 것입니다. 이 네트워크를 forget gate 라고 불립니다. 그리고 활성 함수로서 sigmoid를 가집니다. 그런데 이 활성 함수는 셀 상태에서 각각의 원소에 대해 0과 1사이의 값을 출력합니다. 네트워크는(PyTorch layer) 다음 공식을 이용해서 표현됩니다.
네트웍으로 부터의 값들은 셀 상태에서 보유 할 값과 버려야 할 값을 결정합니다. 다음 단계는 셀 상태에 어떤 정보를 추가할지 결정하는 것입니다. 여기에는 두 부분이 있습니다. 입력 게이트 (input gate) 라 불리는 시그모이드 (sigmoid) 레이어는 업데이트 될 값을 결정합니다. 셀 상태에 추가 할 새 값을 만드는 tanh 레이어가 있습니다. 수학적 표현은 아래와 같습니다.

다음 스텝에서 우리는 입력 gate와 tanh에 의해서 생성된 두개의 값들을 결합 합니다. 지금 우리는 forget gate 와 다음 공식에 표현된 it 와 Ct의 프로덕트 합계 사이의 엘리먼트 단위의 곱셈을 함으로서 셀 상태를 업데이트 할 수 있습니다.
 
마침내 우리는 셀 상태의 필터링 된 버전이 될 출력을 결정해야합니다. LSTM의 이용가능한 다른 버전이 있습니다. 그들중 대부분은 비슷한 원리로 동작합니다. 개발자 혹은 데이터 과학자로서, 우리는 LSTM 안쪽이 어떻게 동작하는지 거의 걱정할 필요가 없습니다. 당신이 그것에 관해 좀 더 배우길 원한다면 다음 블로그 링크를 방문하세요.
http://colah.github.io/posts/2015-08-Understanding-LSTMs
https://brohrer.github.io/how_rnns_lstm_work.html
우리가 LSTM을 이해 했으므로, 의미 분류기를 만드는데 사용할 수 있는 PyTorch 네트워크를 구현해 봅시다.
다음 단계를 따라서 분류기를 생성할것 입니다.
1. Preparing the data ( 데이터 준비 )
2. Creating the batches ( 일괄 생성 )
3. Creating the network ( 네트워크 생성 )
4. Training the model ( 모델 훈련 )











댓글 없음:

댓글 쓰기