신경망에서“dying ReLU”문제는 무엇입니까?


119

Convolutional Neural Networks for Visual Recognition 에 대한 Stanford 과정 노트를 참조하면 다음 과 같은 단락이 있습니다.

"안타깝게도 ReLU 장치는 훈련 중에 깨지기 쉬우 며"사라질 수 있습니다 ". 예를 들어, ReLU 뉴런을 통해 흐르는 큰 기울기는 뉴런이 데이터 포인트에서 다시 활성화되지 않는 방식으로 가중치가 업데이트되도록 할 수 있습니다. 예를 들어, ReLU 장치는 데이터 매니 폴드에서 노크 될 수 있기 때문에 훈련 중에 비가 역적으로 죽을 수 있습니다. 학습률이 너무 높게 설정되어 있으면 네트워크의 %가 "죽음"(즉, 전체 교육 데이터 세트에서 활성화되지 않는 뉴런) 일 수 있습니다. 학습률을 올바르게 설정하면 문제가 덜 발생합니다. "

여기서 뉴런이 죽는 것은 무엇을 의미합니까?

더 간단한 용어로 직관적 인 설명을 제공해 주시겠습니까?


2
누군가 "죽은 뉴런"에 관한 과학 기사에 대한 언급을 찾을 수 있습니까? 이것이 Google 시도의 첫 번째 결과이므로이 질문을 참조하여 편집하면 좋을 것입니다.
Marek Židek

이 문제를 해결하기 위해 정규화를 통해 편견을 방지 할 수 있습니까?
Len

3
Dudes 나는 가중치 <= 0에 대해 각 에포크마다 새로운 임의의 (정규 분포) 값을 제공하여 죽은 relu 뉴런을 활성화 시켰습니다. 나는 훈련이 더 높은 에포크 (I ' 이것이 위상 전이라고 부르는지 확실하지 않습니다.) 이제 더 높은 학습 속도를 사용할 수 있고 전체 정확도가 향상됩니다 (선형 회귀에서만 테스트 됨). 구현하기가 정말 쉽습니다.
boli

1
@boli, 여기서 구현을 공유 할 수 있습니까?
anu

답변:


121

"데드 (dead)"ReLU는 모든 입력에 대해 항상 동일한 값 (0은 발생하지만 중요하지는 않음)을 출력합니다. 아마도 이것은 가중치에 대한 큰 음의 바이어스 용어를 학습함으로써 달성됩니다.

즉, 입력을 구별하는 데 아무런 역할도하지 않습니다. 분류를 위해 가능한 모든 입력 데이터 외부 의 결정 평면으로이를 시각화 할 수 있습니다 .

ReLU가이 상태에서 종료되면 0에서의 함수 기울기도 0이므로 기울기 하강 학습이 가중치를 변경하지 않으므로 복구 할 가능성이 없습니다. 음의 입력에 대한 작은 양의 기울기가있는 "누설"ReLU ( y=0.01xx <0 인 경우)는이 문제를 해결하고 복구 할 수있는 기회 중 하나입니다.

S 자형 및 tanh 뉴런은 그 값이 포화 됨과 유사한 문제를 겪을 수 있지만, 장기적으로 회복 할 수 있도록 최소한 작은 기울기가 항상있다.


7
좋은 의견과도 지수 선형 더 나은 방법으로 요지에 그 문제에 도움을 줄 수 단위 (ELUs)의 언급 가치 : arxiv.org/abs/1511.07289
padura

14
@alex : 바이어스는 정확성에 매우 중요하기 때문입니다. 편견을 없애는 것은 모든 결정 평면이 원점을 통과해야한다는 말과 거의 동일합니다. 몇 가지 예외를 제외하고는 이것이 잘못된 선택입니다. 실제로 신경 네트워크 또는 관련 모델 (선형 회귀 또는 로지스틱 회귀 등)에서 편향 항을 제거하면 일반적으로 모델에 편향이 발생합니다. 이 모델은 언더 피트와 오버 피트를 동시에 수행 할 수있는 몇 가지 방법 중 하나입니다.
Neil Slater

1
@Alex : ReLU에 작은 긍정적 인 편향을 추가하는 것이 일반적이라고 생각합니다. 그것이 "죽음의 ReLU 문제"에 도움이되는지 모르겠습니다. 그래디언트 값을 크게 변경하지 않을 것입니다 (ReLU의 경우 기울기가 1 또는 0이기 때문에 1 일 때 오버 슈트 할 수 있음) 작은 시작 바이어스는 거의 차이가없는 것으로 보입니다). 대부분 초기 학습에 약간의 부스트를 추가하는 것은 단지 트릭이라고 생각합니다. 그러나 더 나은 시작을 얻고 일반적으로 더 낮은 그래디언트를 갖는 것이 도움이 될 수 있습니다.
닐 슬레이터

1
@ max : 내 답변의 "모든 입력"부분이 누락되었습니다. 피드 포워드 네트워크에서 "데드 (dead)"뉴런과 관련된 가중치로 그라디언트가 흐르지 않습니다. 그 가중치에 대한 모든 경로 차단 되었기 때문에 그라디언트가 해당 ReLU 장치를 공급하는 가중치의 하위 집합으로 흐를 수있는 대체 경로는 없습니다. 예를 들어 CNN에서 또는 공유 가중치를 갖는 ReLU를 볼 수 있으며,이 경우 피쳐 맵의 모든 위치가 한 번에 0이어야합니다. 그러나 나는 그것을 "모든 입력"에 대한 또 다른 인스턴스로 본다.
Neil Slater

1
@anu : 기울기 하강. 큰 오차 값으로 인한 큰 양의 기울기는 결과적으로 바이어스 용어의 단일 단계가 뉴런을 죽일 정도로 충분히 커지게하여 미래의 입력 상태 (무게 및 바이어스)에 도달 할 수 있습니다. RELU 기능은 절대 0 이상으로 올라가지 않습니다.
Neil Slater

102

ReLU (Rectified Linear Unit)가 어떻게 보이는지 살펴 보겠습니다.

xn

zn=i=0kwiain
wiainxnReLU=max(0,zn)

매우 간단한 오차 측정 가정

error=ReLUy

errorzn=δn={1zn00zn<0
wj
error=errorwj=errorzn×znwj=δn×ajn={ajnzn00zn<0

=xn

xnx

zn<0

ReLU=max(0.1x,x)여기에 이미지 설명을 입력하십시오


정류기에 입력하기위한 공식의 바이어스 용어를 잊어 버리지 않습니까?
Tom Hale

나는 모든 레이어에 대해 a_0 = 1이라고 가정하고 w_0이 바이어스라고 가정하는 일부 교과서의 표기법을 따랐다 고 생각합니다. 편견은 중요하지 않으므로 어쨌든 생략하는 것이 좋습니다
MohamedEzz 12

@MohamedEzz, 포인트를 이해하지 못했습니다 What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?. 입력이 음수이면 그라디언트는 0입니까? 이 경우에 가장 적합한 것은 무엇입니까? 이해하는 데 도움을 줄 수 있습니까?
anu

1
최적의 의미로, 네트워크가이 입력에 대해 더 나은 예측을 수행하기 위해 ReLU가 양수 값을 제공하도록 가중치를 조정해야한다면 0 기울기로 인해이 조정을 수행 할 수 없었습니다. 평평한면에.
MohamedEzz

놀라운 답변입니다. 감사합니다
David Refaeli

13

ReLU 뉴런은 0을 출력하고 모든 음의 입력에 대해 미분 값을 갖지 않습니다. 따라서 네트워크의 가중치가 항상 ReLU 뉴런에 부정적인 입력을 유발하는 경우 해당 뉴런은 효과적으로 네트워크의 훈련에 기여하지 않습니다. 수학적으로 해당 뉴런에서 나오는 가중치 업데이트에 대한 기울기 기여는 항상 0입니다 (자세한 내용은 수학 부록을 참조하십시오).

L(W)LLWL

일반적으로 발생하는 일은 정보가 네트워크를 통해 흐르는 방식에 따라 다릅니다. 훈련이 진행됨에 따라 뉴런이 생성하는 값이 변동될 수 있고 가중치가 일부 데이터 흐름을 통해 모든 데이터 흐름을 중단시킬 수 있다고 상상할 수 있습니다. (때로는 네트워크 초기의 무게 업데이트로 인해 이러한 구성이 바람직하지 않을 수도 있습니다!). 나는 무게 초기화 ( 이 문제에 기여할 수 있음)와 데이터 흐름과의 관계 에 대한 블로그 게시물 에서이 아이디어를 탐구 했다. 내 요점은 그 기사의 플롯으로 설명 할 수 있다고 생각합니다.

다른 초기화 전략을 사용하는 ReLU MLP의 활성화

플롯은 서로 다른 초기화 전략으로 네트워크를 통과 한 후 ReLU 활성화와 함께 5 레이어 다중 계층 Perceptron에서 활성화를 표시합니다. 가중치 구성에 따라 네트워크 출력이 차단 될 수 있음을 알 수 있습니다.

수학 부록

Lxj(i)jif(s)=max(0,s)sj(i)(i+1)i(i+1)

Lwjk(i)=Lxk(i+1)xk(i+1)wjk(i).

오른쪽의 첫 번째 용어는 재귀 적으로 계산 될 수 있습니다. 오른쪽의 두 번째 용어는 무게와 직접 관련된 유일한 장소 이며wjk(i)

xk(i+1)wjk(i)=f(sj(i))sj(i)sj(i)wjk(i)=f(sj(i))xj(i).

이를 통해 출력이 항상 음수이면 뉴런으로 이어지는 가중치가 업데이트되지 않으며 뉴런이 학습에 기여하지 않음을 알 수 있습니다.


훌륭한 설명! Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative., 입력이 정규화되면 가중치가 어떻게 음의 값을 얻습니까?
anu

@anu 무게 업데이트는 , 그래서 당신은 큰 선택이 경우 의미하는 큰 조치를 취할 경우 하고, 경우에 긍정적, 다음 당신이 볼 수있는 될 수 있습니다 부정. 바이어스를 큰 음수 값으로 업데이트하면 특히 나쁩니다. wλdwλdww
Johnson

@JohnsonJia, 훌륭합니다.) : 한 가지 더 설명이 필요합니다. 왜 부정적인 기여가 체중과 편견 모두에있을 수 있기 때문에 체중과 비교하여 편향의 경우에 특히 나쁜 이유는 무엇입니까?
ANU

바이어스 입력에 의해 변경되지 않으므로 : , 그래서 만약 매우 부정적이며, 모두 음의 값을 유지 할 수있다 . z=wx+bbzx
Johnson

5

언어에 좀 더 구체적으로 말하면, ReLU의 로컬 그래디언트 ( ) 는 역전 파로 인해 역류하는 그래디언트를 곱하는 반면 업데이트 된 그래디언트의 결과는 큰 음수 일 수 있습니다. 다시 큰 음수입니다).1

학습률이 상대적으로 클 때 이러한 큰 음의 업데이트 된 그라디언트는 큰 음의 생성 뉴런에서 발생할 업데이트를 억제 할 것입니다. " .wiwi


4

"Dying ReLU"는 학습 세트의 데이터에 대해 0을 출력하는 뉴런을 나타냅니다. 뉴런 의 가중치 * 입력 ( 활성화 라고도 함 )이 모든 입력 패턴에 대해 <= 0 이되기 때문에 발생 합니다. 이로 인해 ReLU는 0을 출력합니다.이 경우 ReLU의 미분은 0이므로 가중치를 업데이트하지 않고 뉴런은 0을 출력 할 때 멈 춥니 다.

참고 사항 :

  1. 죽어 ReLU가 뉴런의 출력이 테스트 시간에도 0으로 유지된다는 것을 의미하지는 않습니다. 분포 차이에 따라, 그렇지 않을 수도 있습니다.
  2. 죽어가는 ReLU는 영구적으로 죽지 않았습니다. 새로운 훈련 데이터를 추가하거나 새로운 훈련을 위해 사전 훈련 된 모델을 사용하면 이러한 뉴런이 반동 할 수 있습니다 !
  3. 기술적으로 죽어가는 ReLU는 모든 훈련 데이터에 대해 0을 출력 할 필요는 없습니다. 일부 데이터의 경우 0이 아닌 값을 출력하지만 에포크 수는 가중치를 크게 이동시키기에 충분하지 않을 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.