죽은 relu 뉴런을 확인하는 방법


10

배경 : relu 활성화로 신경망을 맞추는 동안 때로는 예측이 거의 일정하다는 것을 알았습니다. 나는 이것이 여기에 언급 된 훈련 중 죽는 relu 뉴런 때문이라고 생각합니다. ( 신경망에서 "dying ReLU"문제는 무엇입니까? )

질문 : 코드 자체에서 뉴런이 죽었는지 확인하기 위해 검사를 구현하는 것이 좋습니다. 그 후, 코드는 필요한 경우 네트워크에 맞출 수 있습니다.

따라서 죽은 뉴런을 확인하는 좋은 기준은 무엇입니까? 현재 예측에서 낮은 분산을 확인하는 것을 인용으로 생각하고 있습니다.

도움이된다면 keras를 사용하십시오.


tensorboard의 바이어스에 대한 요약 을 추가하십시오 . tensorflow.org/get_started/summaries_and_tensorboard
Emre

답변:


6

죽은 ReLU는 그 인수 값이 음수이므로 그래디언트가 0에 머물러 있음을 의미합니다. 그 시점부터 어떻게 훈련하든 훈련 과정에서 단순히 그라디언트를보고 ReLU가 죽었는지 여부를 확인할 수 있습니다.

실제로 누출 ReLU를 사용하고 싶을 수도 있습니다. 즉, f (x) = max (0, x) 대신 x> 0이면 f (x) = x를 설정하고 x <= 0이면 f (x) = 0.01x를 설정합니다 이렇게하면 항상 0이 아닌 작은 그라디언트를 허용 할 수 있으며 장치가 더 이상 훈련에 완전히 갇히지 않아야합니다.


1

죽은 뉴런은 훈련 중에 업데이트되지 않는 뉴런입니다. 0 그라디언트.

Keras는 주어진 데이터 행에 대해 직접 그라디언트 추출을 허용 합니다 . (또 다른 좋은 예)

또는 뉴런 가중치를 추출하고 그라디언트를 직접 계산할 수 있습니다
(예 : relu의 경우 relu-> 0 그라디언트에 대한 부정적인 인수).

불행하게도, 기울기는 데이터 포인트에 따라 다릅니다. 훈련 데이터의 모든 행에 대해 기울기가 0 인 경우에만 훈련 기간 동안 뉴런이 모든 미니 배치를 업데이트하지 않을 수 있습니다.

기울기가 0 인 누수 relu에 대한 값이 없으므로 Leaky relu가 유용한 전략이 될 수 있습니다.

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