RNN : BPTT 및 / 또는 업데이트 가중치 적용시기


15

음소 분류 에 관한 Graves의 2005 논문을 통해 시퀀스 레이블링에 RNN을 적용하는 방법을 이해하려고합니다 .

문제 요약 : 단일 문장의 (입력) 오디오 파일과 전문가 레이블이 지정된 시작 시간, 중지 시간 및 개별 음소에 대한 레이블 (무음, 각 오디오 파일의 각 샘플에는 음소 기호가 표시됩니다.)

이 논문의 핵심은 숨겨진 레이어에 LSTM 메모리 셀이있는 RNN을이 문제에 적용하는 것입니다. (그는 여러 변형과 다른 기술을 비교로 적용합니다. 나는 일방적 인 LSTM에만 관심이 있으며, 일을 단순하게 유지합니다.)

나는 네트워크의 아키텍처를 이해한다고 믿는다. 오디오 파일의 10ms 창에 해당하는 입력 레이어. 표준 오디오 작업 방식으로 전 처리됨. LSTM 셀의 숨겨진 계층과 모든 가능한 61 개의 전화 기호를 한 번에 코딩하는 출력 계층.

LSTM 장치를 통과하는 순방향 통과 및 역방향 통과의 (복잡하지만 간단한) 방정식을 이해한다고 생각합니다. 그것들은 단지 미적분과 연쇄 규칙입니다.

내가 이해하지 못하는 것은이 백서와 여러 유사한 논문을 여러 번 읽은 후에 는 역 전파 알고리즘을 정확하게 적용 할 때와 뉴런의 다양한 가중치를 정확하게 업데이트 할 때 입니다.

두 가지 그럴듯한 방법이 있습니다 :

1) 프레임 단위 백프로 프 및 업데이트

Load a sentence.  
Divide into frames/timesteps.  
For each frame:
- Apply forward step
- Determine error function
- Apply backpropagation to this frame's error
- Update weights accordingly
At end of sentence, reset memory
load another sentence and continue.

또는,

2) 문장 별 백프로 프 및 업데이트 :

Load a sentence.  
Divide into frames/timesteps.  
For each frame:
- Apply forward step
- Determine error function
At end of sentence:
- Apply backprop to average of sentence error function
- Update weights accordingly
- Reset memory
Load another sentence and continue.

이것은 Graves 논문을 뾰족한 (그리고 개인적으로 관련된) 예제로 사용하는 RNN 교육에 대한 일반적인 질문 입니다. 시퀀스에서 RNN을 훈련 할 때 모든 시간 단계에서 백프로 프가 적용됩니까? 시간 단계마다 가중치가 조정됩니까? 또는 엄격하게 피드 포워드 (feed-forward) 아키텍처에 대한 배치 교육과의 비유로, 백프로 프 및 가중치 업데이트가 적용되기 전에 특정 시퀀스에서 오류가 누적되고 평균화됩니까?

아니면 내가 생각하는 것보다 더 혼란 스럽습니까?

답변:


25

모든 시간 단계에서 출력을 생성하는 재귀 신경망 (RNN)에 대해 이야기하고 있다고 가정하겠습니다 (시퀀스 끝에서만 출력을 사용할 수있는 경우 끝에 백프로 프를 실행하는 것이 좋습니다). 이 설정의 RNN은 종종 시간의 잘린 역 전파 (BPTT)를 사용하여 훈련되며 시퀀스의 '청크'에서 순차적으로 작동합니다. 절차는 다음과 같습니다.

  1. 정방향 통과 : 다음 시간 간격을 통해 입력, 숨김 및 출력 상태를 계산합니다.k1
  2. 이전 시간 단계에 대해 합산 된 손실을 계산합니다 (아래 참조).
  3. 뒤로 통과 : 이전 시간 단계에 걸쳐 누적되는 모든 매개 변수의 손실 기울기를 계산 합니다 (이러한 시간 단계에 대한 모든 활성화를 저장해야 함). 폭발적인 그라디언트 문제를 피하기 위해 그라디언트를 자릅니다 (어쩌면 거의 발생하지 않음).k2
  4. 업데이트 매개 변수 (이는 각 시간 단계마다 증분이 아니라 청크 당 한 번 발생 함).
  5. 더 긴 시퀀스의 여러 청크를 처리하는 경우 마지막 단계에서 숨겨진 상태를 저장하십시오 (다음 청크의 시작을 위해 숨겨진 상태를 초기화하는 데 사용됨). 시퀀스의 끝에 도달하면 메모리 / 숨김 상태를 재설정하고 다음 시퀀스의 시작 (또는 동일한 시퀀스의 시작 인 경우 하나만있는 경우)으로 이동하십시오.
  6. 1 단계부터 반복하십시오.

k1k2k1=k2k1=k2케이2>케이1

케이1케이1

케이2케이2케이2숨겨진 단위는이 기간 이후에 정보를 저장할 수 있으므로 시간 단계 (예 : Mikolov 2012 및 이 게시물 참조 )

케이1케이2

케이11케이2케이1케이2케이1케이2가능하다; 아래에 몇 가지 예를 나열하겠습니다.

잘린 BPTT (절차, 동기 부여, 실제 문제)를 설명하는 참고 자료 :

  • 서트 스케 버 (2013) . 반복적 인 신경망 훈련.
  • 미콜 로프 (2012) . 신경망을 기반으로 한 통계 언어 모델.
    • 바닐라 RNN을 사용하여 텍스트 데이터를 단어 시퀀스로 처리하기 위해 설정하는 것이 좋습니다.케이1케이2
    • 케이1
    • 청크 당 한 번 업데이트를 수행하는 것이 증분보다 낫습니다 (불안정 할 수 있음)
  • 윌리엄스와 펭 (1990) . 반복적 인 네트워크 궤적의 온라인 교육을위한 효율적인 그라디언트 기반 알고리즘.
    • 알고리즘의 원래 (?) 제안
    • 케이1케이2h'h케이2케이1
    • 케이1=1

잘린 BPTT를 사용하는 다른 예 :

  • (Karpathy 2015). 숯불.
    • 설명코드
    • 케이1=케이2=25
  • 그레이브스 (2014) . 반복적 인 신경망으로 시퀀스 생성.
    • 케이1=케이2=10010,000
  • Sak et al. (2014) . 큰 어휘 음성 인식을위한 장기 단기 메모리 기반의 반복 신경망 아키텍처.
    • 케이1=케이2=20
  • Ollivier et al. (2015) . 역 추적없이 반복 네트워크를 온라인으로 교육합니다.
    • 케이1=케이2=15
  • Hochreiter and Schmidhuber (1997) . 장기 단기 기억.
    • LSTM에 대한 수정 된 절차를 설명합니다.

이것은 탁월한 답변이며,이 포럼에서 실질적인 현상금을 수여 할 수 있기를 바랍니다. k1 대 k2에 대한 구체적인 논의가 더 일반적인 사용법에 대해 두 가지 경우를 문맥 화하고 숫자 예제를 사용하는 것이 특히 유용합니다.
Novak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.