2

나는 몇 군데의 훈련 이후에 발산 한 DCNN을 가지고 있지만 초기에는 좋은 결과를 얻었습니다. 신기원으로 돌아가거나, 학습 속도를 낮추고, 계속하기 위해 "안전"합니까? 아니면 일부 체중이 아픈 조건에 가깝다고 가정해야합니다. 따라서 완전히 훈련을 다시 시작해야합니다. 낮은 학습율)?다른 신경망을인양 해 버림

관련 질문은 네트워크 내부에서 이러한 결과가 나오는 행동과 관련이 있습니다. 나는 네트워크가 이미 완전한 수렴에 가까운 것처럼 보이지 않을 때 발산이 훈련 초기에 일어나야한다고 생각했다.

답변

1
  1. 아니요. 발산이 큰 학습 률로 인해 발생했기 때문에 초기 신기원에서 일어 났을 가능성이 높기 때문에 안전하지 않습니다. 일부 가중치는 이미 부적절한 상태 일 수 있습니다.
  2. 일반적으로 결과는 주로 그라디언트 오류로 인해 발생합니다. 그것은 차이의 원인이되지 않을 수도 있지만, 모델 매개 변수의 업데이트에 대한 잘못된 그라데이션이 발생할 수 있습니다 앞뒤로 계산 모두 오류 :

    오류 기대하고 DCNN의 일부 층의 되돌아 가기 계산의 : 그라데이션 오류에서 올 수 있습니다 처음에는 잘못된 매개 변수를 업데이트 할 수 있으며 이러한 매개 변수가 훈련 분기를 유발할 정도의 상태가 될 때까지 누적 될 수 있습니다.

    숫자 불안정 : 예를 들어 X의 분산 D (X)를 계산할 때 D (X) = E {[X - E (X)]^2} 마지막 E (X)는 E (X^2) - E^2 (X)이므로 음의 D (X)를 초래할 수 있으며, 따라서 발산 오차가 발생한다.

+0

좋은 점 (1). 나는 ("뒤로 및 아래로"네트워크에 대한) 파일에 가중치를 버리고 높은 절대 값을 찾았으며 아무 것도 찾지 못했습니다. 그래서 나는 거기에서 잘하는 것 같다. (2)에 대해서는 Caffe + cUDNN을 사용하고 있기 때문에 그라데이션 계산에 오류가 있어서는 안되기 때문에 수치 안정성에 대해서는 확신 할 수 없습니다. – gcp

+0

Sigmoid를 활성화 도구로 사용 했습니까? 아니면 인터넷에 업로드 할 수 있습니까? prototxt? @gcp – Dale

+0

ELU를 사용했는데, 음의 영역에서 Sigmoid와 조금 비슷할 수도 있습니다. 이것은 순수한 컨벌루션 네트워크 (convolutional network), 즉 컨볼 루션 -> ELU -> 컨볼 루션 -> ELU -> 등의 스택입니다. – gcp