파이썬 RNN 예제

훈련 하는 동안 우리는 위의 표면 플롯에서 파란색 점에 끝날 것 이다 ($w_x=!1, w_{rec}\2$) 그라데이션의 순서에 있을 것 이다 $10^7$. $0.000001$($10^{-6}$)의 작은 학습 률에도 불구하고 $W$의 매개 변수는 현재 위치에서 10 단위 단위로 업데이트되며, 이는 이 예제에서 치명적일 것입니다. 한 가지 방법은 학습 속도를 훨씬 더 낮추는 것이지만 최적화가 낮은 그라데이션 영역에 들어가면 업데이트가 전혀 움직이지 않을 것입니다. 데이터와 같은 사각 파동을 만들려면 파이썬의 수학 라이브러리의 사위 함수를 사용합니다. 여기에 표시된 예제에 50을 사용하므로 네트워크에 50개의 단어를 제공하고 51번째 를 예측하도록 교육합니다. 네트워크를 교육하는 다른 방법은 시퀀스의 각 지점에서 다음 단어를 예측하도록 하는 것입니다. 여기서 사용되는 구현이 반드시 최적(허용되는 최상의 솔루션은 없지만 잘 작동)은 아닙니다! 특히 좋은 예는 텍스트 시퀀스를 예측하는 것입니다. “한 소녀가 술집에 들어갔는데,`술을 마실 수 있을까?` 하고 물었습니다. 바텐더는 `확실히 {}”라고 말했다. 예를 들어 위의 문자열에서 {} 기호를 채울 수 있는 옵션(예: “miss”, “ma`am” 등)에 대한 많은 옵션이 있습니다. 그러나 다른 단어는 “선생님”, “미스터”등과 같은 에도 맞을 수 있습니다.

명사에 대한 올바른 성별을 얻기 위해 신경망은 가능성이 있는 성별(예: “소녀”와 “그녀”)을 지정하는 두 개의 이전 단어가 사용되었다는 것을 “기억”해야 합니다. 반복 신경망에서 시간(또는 시퀀스)을 통한 이러한 유형의 정보 흐름은 아래 다이어그램에 표시되어 시퀀스를 해제합니다: Keras는 놀라운 라이브러리입니다: 이를 통해 이해할 수 있는 파이썬의 몇 줄로 최첨단 모델을 구축할 수 있습니다. 코드. 다른 신경망 라이브러리가 더 빠르거나 더 많은 유연성을 허용할 수 있지만 개발 시간과 사용 편의성에 대해 Keras를 이길 수 있는 것은 없습니다. forward_state 메서드는 for 루프에 update_state 메서드를 적용하여 증가된 시간 걸이에 대한 상태를 계산합니다. 피드포워드 그물에 대한 이전 자습서에서 설명한 것처럼 여러 시퀀스의 순방향 단계는 벡터화를 사용하여 병렬로 계산할 수 있습니다.