RNN에서 시간이지나면서 다시 전파되는 이유는 무엇입니까?


14

반복적 인 신경망에서는 일반적으로 여러 시간 단계를 통해 전파되고 네트워크를 "롤링 해제"한 다음 입력 시퀀스를 통해 전파됩니다.

시퀀스에서 각 개별 단계 후에 가중치를 업데이트하지 않는 이유는 무엇입니까? (잘림 길이 1을 사용하는 것과 동일하므로 롤링 할 것이 없습니다.) 이것은 사라지는 기울기 문제를 완전히 제거하고 알고리즘을 크게 단순화하며 아마도 현지 최소값에 걸릴 가능성을 줄이며 가장 중요하게 잘 작동하는 것 같습니다 . 텍스트를 생성하기 위해이 방법으로 모델을 훈련 시켰으며 결과는 BPTT 훈련 된 모델에서 본 결과와 비슷한 것으로 보입니다. 내가 본 RNN에 대한 모든 튜토리얼은 BPTT를 사용한다고 말하고 있기 때문에 혼란스러워합니다.

업데이트 : 답변을 추가했습니다


이 연구를 수행하는 흥미로운 방향은 문제에서 얻은 결과를 표준 RNN 문제에 관한 문헌에 발표 된 벤치 마크와 비교하는 것입니다. 정말 멋진 기사가 될 것입니다.
Sycorax는

"업데이트 : 답변을 추가했습니다"가 이전 편집 내용을 아키텍처 설명 및 일러스트레이션으로 대체했습니다. 의도적인가요?
amoeba는

그렇습니다. 실제 질문과 관련이없는 것처럼 보였고 많은 공간을 차지했지만 도움이된다면 다시 추가 할 수 있습니다.
Frobot

사람들은 아키텍처를 이해하는 데 큰 문제가있는 것 같습니다. 따라서 추가 설명이 유용하다고 생각합니다. 원하는 경우 질문 대신 답변에 추가 할 수 있습니다.
amoeba는 Reinstate Monica가

답변:


4

편집 : 나는 두 가지 방법을 비교할 때 큰 실수를했고 내 대답을 바꿔야합니다. 그것은 내가하고있는 방식으로 밝혀졌습니다. 현재 시간 단계로 전파되면서 실제로 더 빨리 배우기 시작합니다. 빠른 업데이트는 가장 기본적인 패턴을 매우 빠르게 학습합니다. 그러나 더 큰 데이터 세트와 더 긴 교육 시간으로 BPTT는 실제로 최고의 결과를 얻었습니다. 나는 몇 가지 시대에 대한 작은 샘플을 테스트하고 있었고 레이스에서 우승하기 시작한 사람이 승자가 될 것이라고 생각했습니다. 그러나 이것은 나를 흥미로운 발견으로 이끌었습니다. 단 한 번의 시간 간격으로 전파하는 훈련을 시작한 다음 BPTT로 변경하고 전파 거리를 천천히 늘리면 수렴 속도가 빨라집니다.


업데이트 해 주셔서 감사합니다. 에서 소스 마지막 이미지에 대해 그가이 말한다 12시 59분 설정 ". RNN없이 처리 바닐라 모드, 고정 된 크기의 입력에서 고정 된 크기의 출력 (예를 들면 화상 분류)에" 이것이 우리가 말한 것입니다. 설명 된대로 상태가없고 RNN이 아닙니다. "뒤로 전파하기 전에 단일 입력을 통해 전달"-ANN이라고합니다. 하지만 뭔가가 그래서 이러한 텍스트와 함께 좋은으로 수행 할 것이며, 내가 코드를 가지고 있지 않기 때문에 무엇을 아무 생각이 없다
ragulpr

나는 그 부분을 읽지 않았고 당신은 맞습니다. 내가 사용하는 모델은 실제로 맨 오른쪽의 "다 대다"입니다. 나는 "일대일"섹션에서이 중 많은 것들이 실제로 연결되어 있고 그림이 그것을 완전히 생략했다고 가정했습니다. 그러나 그것은 실제로 내가 알지 못했던 맨 오른쪽에있는 옵션 중 하나입니다 (RNN에 대한 블로그에 RNN에 관한 내용이있는 것이 이상하므로 모두 반복되는 것으로 가정합니다). 좀 더 이해하기 쉽도록 답변의 해당 부분을 편집하겠습니다
Frobot

나는 그것이 사실이라고 상상했다. 그래서 나는 당신의 손실 기능을 보라고 주장했습니다. 그것은 많은 많은의 경우 손실에 가깝다 과는 동일 RNN 그리고 당신있는 거 전파 / 전체 순서를 inputing하지만 단지 BPTT 당신을 즉 절단 ' d 내 게시물에서 빨간색 부분을 계산하지만 더 이상 재귀하지 않습니다. 이자형아르 자형아르 자형영형아르 자형=(와이와이^)2
ragulpr

손실 함수는 시간이 지남에 따라 합산되지 않습니다. 하나의 입력을 취하고 하나의 출력을 얻은 다음 손실을 계산하고 가중치를 업데이트 한 다음 t + 1로 이동하므로 합산 할 것이 없습니다. 원래 게시물에 정확한 손실 기능을 추가하겠습니다
Frobot

더 이상 추측하지 않고 코드를 게시하면 바보입니다.
ragulpr

2

RNN은 각 레이어가 새로운 입력을받을 수 있지만 동일한 매개 변수를 갖는 DNN (Deep Neural Network)입니다. BPT는 그 자체가 그라디언트 디센트 (Gradient Descent)를위한 멋진 단어 인 이러한 네트워크에서 역 전파 (Back Propagation)를위한 멋진 단어입니다.

말하는 RNN 출력하는 Y t 각 단계에서와 E R R O R t = ( Y t - Y t ) (2)와이^

이자형아르 자형아르 자형영형아르 자형=(와이와이^)2

가중치를 배우기 위해서는 함수 의 변화가 손실 함수에 얼마나 영향을 미치는가? 다음과 같은 방향으로 매개 변수를 이동하십시오.

이자형아르 자형아르 자형영형아르 자형=2(와이와이^)와이^

즉, 각 계층에서 예측이 얼마나 좋은지에 대한 피드백을받는 DNN이 있습니다. 파라미터의 변경은 DNN의 모든 계층 (시간 간격)을 변경하고 모든 계층은 다음 출력에 기여하므로이 점을 고려해야합니다.

간단한 하나의 뉴런 1 레이어 네트워크를 사용하여 이것을 반 명시 적으로보십시오.

y^t+1=f(a+bxt+cy^t)ay^t+1=f(a+bxt+cy^t)cay^tby^t+1=f(a+bxt+cy^t)(xt+cby^t)cy^t+1=f(a+bxt+cy^t)(y^t+ccy^t)y^t+1=f(a+bxt+cy^t)([0xty^t]+cy^t)

함께 학습율 한 트레이닝 단계는 다음이다 : [ ~ ~ B ~ C ][ B C ] + δ ( Y t - Y t ) Y tδ

[a~b~c~][abc]+δ(yty^t)y^t

우리가 볼 것은 계산하기 위해 있다는 것입니다 당신이 필요 에서 계산, 즉 롤에 y를 t . 당신이 제안하는 것은 단순히 빨간색 부분을 무시하고 t에 대한 빨간색 부분을 계산 하지만 더 이상 재귀하지 않는 것입니다. 나는 당신의 손실이y^t+1y^tt

error=t(yty^t)2

어쩌면 각 단계는 집계에 충분한 원유 방향에 기여할 것입니까? 이것은 결과를 설명 할 수 있지만 방법 / 손실 기능에 대해 더 많이 듣고 싶습니다! 또한 두 개의 시간 대별 ANN과의 비교에 관심이 있습니다.

edit4 : 주석을 읽은 후에는 아키텍처가 RNN이 아닌 것 같습니다.

ht Statefull

모델 : 각 단계에서 상태 비 저장-숨김 상태 재 작성 무국적자 edit2 : DNN에 더 많은 참조를 추가했습니다.


1
답변 주셔서 감사합니다. 나는 내가하고있는 일을 오해했을 수도 있다고 생각합니다. 전진 전파에서는 한 단계 만 수행하므로 백 전파에서는 한 단계 만 수행됩니다. 교육 시퀀스에서 여러 입력에 전달하지 않습니다. 학습이 가능하도록 집계에서 충분한 조잡한 방향에 대해 무엇을 의미하는지 알지만 숫자로 계산 된 그라디언트로 그라디언트를 확인했으며 소수점 이하 10 자리와 일치합니다. 백 프롭이 잘 작동합니다. 교차 엔트로피 손실을 사용하고 있습니다.
Frobot

1
나는 우리가 분명히 비교하기 위해 같은 모델을 사용하고 BPTT로 재교육하고 있습니다. 또한이 "1 단계"알고리즘을 사용하여 모델이 다음 날의 주가 상승 또는 하락 여부를 예측하여 정확도가 높아지는 지 여부를 예측했습니다. 따라서 BPTT와 단일 스텝 백 소품을 비교하는 두 가지 모델이 있습니다.
Frobot

y^t+1=f(xt,xt1)

1
크기가 1 인 슬라이딩 윈도우를 사용하고 있지만 입력 (xt, xt-1)으로 크기가 2 ANN 인 슬라이딩 윈도우를 만드는 것과 결과가 크게 다릅니다. 나는 거대한 본문을 배울 때 의도적으로 과도하게 맞출 수 있으며 0 오류로 전체 텍스트를 재현 할 수 있습니다. 입력으로 (xt, xt-1) 만 있으면 불가능한 장기 종속성을 알아야합니다. 내가 남은 유일한 질문은 BPTT를 사용하면 종속성이 더 길어질 수 있지만 솔직히 보이지 않는 것입니다.
Frobot

업데이트 된 게시물을보십시오. 아키텍처는 RNN이 아니며, 무국적이므로 명시 적으로 기능에 구워지지 않은 장기 의존성을 배울 수 없습니다. 이전 예측은 미래 예측에 영향을 미치지 않습니다. 당신은 이것을 처럼 볼 수 있습니다와이^2와이^=0당신의 건축을 위해. BPTT는 이론적으로 BP와 동일하지만 RNN 아키텍처에서 수행되므로 의미가 무엇인지 알 수 있으며 대답은 '아니요'입니다. 상태 저장 RNN에 대한 실험을 볼 수 있지만 한 단계 BPTT 만 보더라도 정말 재미있을 것입니다 ^^
ragulpr

1

"시간을 통한 전개"는 단순히 연쇄 규칙의 적용입니다.

에프((엑스),h(엑스),미디엄(엑스))엑스=에프엑스+에프hh엑스+에프미디엄미디엄엑스

시간 단계에서 RNN의 출력 , H is a function of the parameters θ, the input xt and the previous state, Ht1 (note that instead Ht may be transformed again at time step t to obtain the output, that is not important here). Remember the goal of gradient descent: given some error function L, let's look at our error for the current example (or examples), and then let's adjust θ in such a way, that given the same example again, our error would be reduced.

How exactly did θ contribute to our current error? We took a weighted sum with our current input, xt, so we'll need to backpropagate through the input to find θa(xt,θ), to work out how to adjust θ. But our error was also the result of some contribution from Ht1, which was also a function of θ, right? So we need to find out θHt1, which was a function of xt1, θ and Ht2. But Ht2 was also a function a function of θ. And so on.


I understand why you back propagate through time in a traditional RNN. I'm trying to find out why a traditional RNN uses multiple inputs at once for training, when using just one at a time is much simpler and also works
Frobot

한 번에 여러 입력을 RNN에 공급할 수있는 유일한 의미는 배치의 일부로 여러 교육 예제를 제공하는 것입니다. 배치 크기는 임의적이며 모든 크기에 대해 수렴이 보장되지만 배치 크기가 높을수록 더 정확한 기울기 추정 및 더 빠른 수렴이 발생할 수 있습니다.
Matthew Hampsey

That's not what I meant by "multiple inputs at once". I didn't word it very well. I meant you usually forward propagate through several inputs in the training sequence, then back propagate back through them all, then update the weights. So the question is, why propagate through a whole sequence when doing just one input at a time is much easier and still works
Frobot

I think some clarification here is required. When you say "inputs", are you referring to multiple training examples, or are you referring to multiple time steps within a single training example?
Matthew Hampsey

1
오늘 말까지이 질문에 대한 답변을 게시 할 것입니다. BPTT 버전 만들기를 마쳤으므로 훈련과 비교 만하면됩니다. 그 후에도 여전히 어떤 코드를보고 싶다면보고 싶은 것을 알려주십시오. 그래도 게시 할 수있을 것 같습니다.
Frobot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.