rnn 쉬운 예제

By agosto 2, 2019Sem categoria

num_steps가 5로 설정된 경우 지정된 샘플의 입력 데이터로 사용되는 데이터는 “고양이가 에 앉아 있다”입니다. 이 경우 모델을 통해 시퀀스의 바로 다음 단어를 예측하기 때문에 각 시간 단계마다 일치하는 출력 y 또는 대상 데이터는 “매트에 앉아 있는 고양이”가 됩니다. 마지막으로 skip_steps는 다음 데이터 일괄 처리를 하기 전에 건너뛸 단어 의 수입니다. 이 예제에서 skip_steps=num_steps인 경우 다음 배치에 대한 다음 5개의 입력 단어는 “매트와 그의 모자를 다했다”입니다. 바라건대 그것은 의미가 있습니다. 위의 코드에서 먼저 모델이 학습된 데이터에서 다시 로드됩니다(위의 예에서는 40번째 교육 시대의 검사점입니다). 그런 다음 앞에서 설명한 것처럼 다른 KerasBatchGenerator 클래스가 만들어집니다.이 경우 길이 1의 일괄 처리가 사용되며, 하나의 num_steps 가치의 텍스트 데이터만 비교할 수 있습니다. 그런 다음 생성기에서 더미 데이터 추출 루프가 생성됩니다 . 0에서 num_predict까지의 두 번째 루프는 흥미로운 일이 일어나는 곳입니다. 훈련 하는 동안 우리는 위의 표면 플롯에서 파란색 점에 끝날 것 이다 ($w_x=!1, w_{rec}\2$) 그라데이션의 순서에 있을 것 이다 $10^7$. $0.000001$($10^{-6}$)의 작은 학습 률에도 불구하고 $W$의 매개 변수는 현재 위치에서 10 단위 단위로 업데이트되며, 이는 이 예제에서 치명적일 것입니다.

한 가지 방법은 학습 속도를 훨씬 더 낮추는 것이지만 최적화가 낮은 그라데이션 영역에 들어가면 업데이트가 전혀 움직이지 않을 것입니다. 여기에서 우리는 의사 결정에 대한 책임이 실제 뉴런에 대해 더 깊이 살펴 볼 것이다. 우리는 위에서 설명한 namaskar 예제를 사용할 것입니다. 우리는 이전의 모든 7 글자를 주어진 8 번째 문자를 알아 내려고 노력할 것입니다. 입력 데이터의 총 어휘는 {n, a, m, s, k, r}입니다. 현실 세계에서 당신은 더 복잡한 단어 나 문장을해야합니다. 간단히 하기 위해 우리는이 간단한 어휘를 사용합니다. 반면에 반복 네트워크는 현재 입력 예제뿐만 아니라 이전에 이전에 인식한 내용도 입력으로 사용합니다. 과거를 기억하는 아이디어는 환상적입니다. 그러나 역전파에는 한 가지 중요한 문제가 있습니다. 역전파는 각 레이어의 가중치를 업데이트하기 위해 뒤로 이동하기 위한 단계입니다. 가중치를 업데이트하기 위해 비용 함수의 그라데이션을 얻고 체인 규칙을 사용하여 지정된 레이어에서 그라데이션을 계속 곱합니다.

RNN의 실제 뒤로 전파는 이 다이어그램보다 약간 복잡하지만 단순하게 건너뛸 수 있습니다. (예를 들어, 실제 뒤로 전파는 최종 출력 Yt뿐만 아니라 비용 함수에서 사용되는 다른 모든 출력 Y도 사용합니다.) RNN의 또 다른 놀라운 응용 프로그램은 기계 번역입니다. 이 방법은 두 RNN을 동시에 학습해야 하기 때문에 흥미롭습니다.