시간에 따른 잘린 역 전파를 사용할 때 초기 패턴 캡처 (RNN / LSTM)


12

RNN / LSTM을 사용하여 감정 분석을 수행한다고하는데, 이는 다 대일 접근 방식입니다 ( 이 블로그 참조 ). 네트워크는 절단 된 역 전파 전파 시간 (BPTT)을 통해 훈련되며, 여기서 네트워크는 평소와 같이 30 개의 마지막 단계 만 수행됩니다.

필자의 경우 분류하려는 각 텍스트 섹션이 풀리는 30 단계 (~ 100 단어)보다 훨씬 깁니다. 내 지식을 바탕으로 BPTT는 단일 텍스트 섹션에 대해 한 번만 실행됩니다. 이는 전체 텍스트 섹션을 통과하고 이진 분류 대상 계산 한 다음 손실 함수와 비교하여 오류를 찾습니다.y

그래디언트는 각 텍스트 섹션의 첫 단어와 관련하여 계산되지 않습니다. 그러면 RNN / LSTM가 어떻게 처음 몇 단어 내에서만 발생하는 특정 패턴을 포착하도록 가중치를 어떻게 조정할 수 있습니까? 예를 들어, 표시된 모든 문장은 "I love this"로 시작하고 문장으로 표시된 모든 문장은 "I hate this"로 시작합니다. RNN / LSTM이 100 단계 긴 시퀀스의 끝에 도달했을 때 마지막 30 단계 동안 만 풀릴 때이를 어떻게 캡처합니까?positivenegative


일반적으로 약어는 시간에 따른 잘린 역 전파에 대한 TBPTT입니다.
Charlie Parker

답변:


11

그래디언트 전파를 30 개의 시간 간격으로 제한하면 데이터 세트에서 가능한 모든 것을 학습하지 못할 수 있습니다 . 그러나 모델의 기능에 대한 중요한 사항을 학습하지 못하는지 여부는 데이터 세트에 따라 크게 달라집니다!

훈련 중 그라디언트를 제한하는 것은 모델이 입력 기능과 숨겨진 상태를 동화 할 수있는 창을 제한하는 것과 같습니다. 테스트시 모델을 전체 입력 시퀀스에 적용하기 때문에 모든 입력 기능에 대한 정보를 숨겨진 상태로 통합 할 수 있습니다. 문장에 대한 최종 예측을 할 때까지 정보를 보존하는 방법을 정확히 알지 못할 수도 있지만 여전히 가능한 약한 연결이있을 수 있습니다.

고려 된 예에 대해 먼저 생각하십시오. 입력에 1이 있으면 네트워크가 1을 생성하고 그렇지 않으면 0을 생성한다고 가정하십시오. 길이가 20 인 시퀀스에서 네트워크를 학습하고 그래디언트를 10 단계로 제한한다고 가정합니다. 교육 데이터 집합에 입력의 마지막 10 단계에서 1이 포함되지 않으면 네트워크는 구성의 테스트 입력에 문제가있는 것입니다. 그러나 훈련 세트에 [1 0 ... 0 0 0]과 같은 예제가 있고 [0 0 ... 1 0 0]과 같은 다른 예제가 있다면 네트워크는 " 입력의 어느 곳에서나 1 "기능.

그런 다음 감정 분석으로 돌아갑니다. 훈련하는 동안 모델에서 줄임표로 50 단어를 사용하여 "주변과 주변을 싫어합니다"와 같은 긴 음의 문장이 나온다고 가정 해 보겠습니다. 그라디언트 전파를 30 개의 시간 단계로 제한함으로써 모델은 "I hate this because"를 출력 레이블에 연결하지 않으므로이 교육에서 "I", "Hate"또는 "this" 선택하지 않습니다. . 그러나 그것은 문장의 끝에서 30 시간 단계 내에있는 단어를 선택합니다. 트레이닝 세트에 "증오"와 함께 동일한 단어가 포함 된 다른 예제가 포함 된 경우 "증오"와 음의 정서 레이블 사이의 링크를 선택할 수 있습니다. 또한 짧은 교육 사례가있는 경우 "끔찍하기 때문에 이것을 싫어합니다!"라고 말합니다. 그러면 모델에서 "증오"및 "이"기능을 대상 레이블에 연결할 수 있습니다. 이러한 교육 예제가 충분하면 모델에서 연결을 효과적으로 학습 할 수 있어야합니다.

테스트 시간에 "도마뱀에 ... 때문에 싫어요!"와 같은 또 다른 긴 문장으로 모델을 제시한다고 가정 해 봅시다. 모델의 입력은 "I hate this"로 시작하여 어떤 형태로 모델의 숨겨진 상태로 전달됩니다. 이 숨겨진 상태는 모델의 미래 숨겨진 상태에 영향을 미치기 위해 사용되므로 문장이 끝나기 전에 50 단어가있을 수 있지만 초기 단어의 숨겨진 상태는 출력에 영향을 줄 수있는 이론적 기회가 있습니다. "나는 이것을 싫어한다"와 문장의 끝 사이에 그러한 거리가 먼 샘플들을 훈련시켰다.


0

@ Imjohns3은 긴 시퀀스 (크기 N)를 처리하고 역 전파를 마지막 K 단계로 제한하면 네트워크가 처음에 패턴을 배우지 않습니다.

나는 긴 텍스트로 작업했으며 매 K 단계마다 손실을 계산 하고 역 전파를 수행 하는 접근법을 사용했습니다 . 시퀀스에 N = 1000 토큰이 있고 RNN 프로세스가 먼저 K = 100이라고 가정하고 예측 (계산 손실) 및 역 전파를 시도합니다. 다음으로 RNN 상태를 유지하면서 그라디언트 체인 (pytorch-> detach)을 제동하고 다른 k = 100 단계를 시작하십시오.

이 기술의 좋은 예는 다음에서 찾을 수 있습니다. https://github.com/ksopyla/pytorch_neural_networks/blob/master/RNN/lstm_imdb_tbptt.py

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.