내 신경망은 유클리드 거리를 배울 수 없습니다


9

그래서 나는 신경망을 가르치려고 노력하고 있습니다 (고양이 그림을 분류하지 않고 회귀 응용 프로그램을 위해).

나의 첫 번째 실험은 FIR 필터와 Discrete Fourier Transform ( "전"및 "후"신호에 대한 훈련)을 구현하기 위해 네트워크를 훈련시키는 것이었다. 왜냐하면 그것들은 활성화 기능이없는 단일 계층에 의해 구현 될 수있는 선형 연산이기 때문이다. 둘 다 잘 작동했습니다.

그런 다음 추가 abs()하고 진폭 스펙트럼을 배울 수 있는지 확인하고 싶었습니다 . 먼저 숨겨진 레이어에 필요한 노드 수에 대해 생각하고의 대략적인 근사치에 3 개의 ReLU가 충분하다는 것을 깨달았 abs(x+jy) = sqrt(x² + y²)으므로 고독한 복소수 (2 입력 → 3 ReLU 노드 숨겨진 레이어 → 1)에서 자체적으로 그 작업을 테스트했습니다. 산출). 때때로 그것은 작동합니다 :

역 육각 피라미드로 유클리드 거리를 구현하는 3 가지 ReLU

그러나 내가 시도하는 대부분의 경우 로컬 최소값에 갇혀 올바른 모양을 찾지 못합니다.

계곡 모양의 네트워크를 형성하는 3 가지 ReLU

손실 대 시대

Keras의 모든 최적화 프로그램과 ReLU 변형을 시도했지만 큰 차이는 없습니다. 이와 같은 간단한 네트워크를 안정적으로 수렴시키기 위해 할 수있는 다른 일이 있습니까? 아니면 잘못된 태도로 이것에 접근하고 있습니까? 문제에 필요한 것보다 더 많은 노드를 던져야하며 절반이 죽으면 큰 문제로 간주되지 않습니까?


1
당신의 줄거리는 몇 가지 다른 실험으로 보이는 것을 보여줍니다. 차이점은 무엇입니까?
Sycorax는 Reinstate Monica가

@Sycorax 그것들은 같은 일에 대한 반복 된 시험입니다. 때로는 육각형 피라미드 솔루션을 찾지 만 대개는 그렇지 않습니다.
endolith

두 개의 숨겨진 레이어와 활성화 기능으로 tanh를 사용해 보셨습니까?
Ketan

왜? 나는 여기에 더 간단한 변형을 게시했습니다 : stats.stackexchange.com/q/379884/11633
endolith

이걸보고 싶을 수도 있습니다. stats.stackexchange.com/q/375655/27556 . 그러나 왜 3 개의 relus 만 필요하다고 생각하는지 설명 할 수 있습니까? '자연적인'분해는 relus로 제곱 근사를 수행하는 숨겨진 레이어와 제곱근을 수행하는 또 다른 레이어입니다. 기본적으로 relus는 부분 선형 근사를 수행합니다.
seanv507

답변:


6

결과는 하나 이상의 뉴런이 죽었 음을 강력하게 암시하는 것 같습니다 (또는 아마도 두 뉴런에 대한 중량의 초평면이 병합되었습니다). 3 Relu를 사용하면 더 합리적인 솔루션으로 수렴 할 때 중앙에 3 개의 그림자 분할이 나타납니다. 각 뉴런의 출력 값을 확인하여 대부분의 샘플에 대해 죽은 상태인지 확인하여 이것이 사실인지 쉽게 확인할 수 있습니다. 또는 두 뉴런이 동일한 가중치 쌍으로 축소되는지 확인하기 위해 각각의 뉴런별로 그룹화 된 2x3 = 6 뉴런 가중치를 플로팅 할 수 있습니다.

나는 이것의 가능한 원인 중 하나가 x+iy 하나의 좌표를 향하여 기울어 짐 xy이 경우 신분을 재현하려고합니다. abs(x+iy)x. 이 문제를 해결하기 위해 여기서 할 수있는 일은 많지 않습니다. 한 가지 옵션은 시도한대로 더 많은 뉴런을 추가하는 것입니다. 두 번째 옵션은 S 자형과 같은 지속적인 활성화 또는 지수와 같이 무한한 것을 시도하는 것입니다. 드롭 아웃을 시도 할 수도 있습니다 (예 : 10 % 확률). keras에서 정규 드롭 아웃 구현을 사용할 수 있습니다. 이는 3 개의 뉴런이 모두 드롭되는 상황을 무시할 수있을 정도로 똑똑합니다.


1
+1, 거의 확실합니다. 이러한 적은 수의 가중치로 ReLU를 사용하면 거의 항상 죽은 뉴런이 작동합니다.
kbrose

1
이것은 ReLU의 경우에 그럴듯한 추측입니다. 그러나 OP는 몇 가지 다른 ReLU 변형을 시도했다고 기록합니다. 죽은 뉴런은 ELU, Leaky Relu 또는 PReLU와 같은 변형에서도 발생합니까?
Sycorax는 Reinstate Monica

3 shadowy splits in the center when you converge to the more reasonable solution.그렇습니다, 그것은 내가 의미 한 대략적인 근사치입니다. 6 각형 피라미드. or perhaps something unbounded like an exponential 나는 elu와 selu를 시도했지만 더 잘 작동하지 않았습니다. two neurons collapse to the same pair of weights아, 나는 그것을 생각하지 않았다; 방금 그들이 죽었다고 생각했습니다.
endolith

ReLU를 사용하는 동안 숨겨진 레이어의 출력에 액세스하여 일반적으로 뉴런 중 하나가 죽었 음을 확인했습니다. 덜 자주, 두 사람이 겹치고 같은 일을하고 있습니다. 뉴런이 서로 "반발"하게하여 중복 역할을하지 않도록하는 방법이 있는지 궁금합니다.
endolith

1
@endolith Dropout은 독립적 인 뉴런 구성을 위해 명시 적으로 설계되었습니다. ELU는 결코 "죽지"않지만 왼쪽에는 사라지는 그라데이션이 있습니다.
Sycorax는 Reinstate Monica
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.