2016-09-22 7 views
5

신경 네트워크로 놀고 있습니다. 자신을 구현했습니다. RPROP를 학습 알고리즘으로 사용하는 사소한 순방향 네트워크로 기본 디자인에 비해 "플러스"로만 사용됩니다.신경망과 XOR 함수

MNIST 또는 이미지 압축을 시도 할 때 네트워크가 정상적으로 평가되지만, XOR 함수처럼 간단하게 모델을 만들려고 시도 할 때 가끔 배우는 동안 로컬 미니 마로 트랩되어 출력됩니다. 다음 진리표 :

0 XOR 0 = 1.4598413968251171e-171 
1 XOR 0 = 0.9999999999999998 
0 XOR 1 = 0.9999999999999998 
1 XOR 1 = 0.5 

자주 훈련 후 결과가 정확하지만 때로는 1 XOR 출력 1 0.5 1 대신 예상대로. XOR (1,1)에서는 항상 발생하지 않지만 다른 입력에서도 마찬가지입니다. 배 전파의 문헌에서 XOR 기능을 "고전적"으로 사용하는 이유는 무엇입니까? 특히 네트워크가 더 복잡한 (그러나 덜 비선형적인) 작업을 잘 수행하는 것처럼 보이기 때문에 여기서 무슨 일이 일어나고 있는지 궁금합니다.

나의 추측은 그것이 편견에 뭔가 잘못 됐다는 것입니다.

힌트가 있습니까?

참고 1 : 위의 네트워크 레이아웃은 2 | 3 | 1이지만 더 많은 숨겨진 장치를 사용하면 많이 변경되지 않지만 특정 학습 시도는 여전히 잘못됩니다.

주 2 : 출력 장치가 제대로 계산되지 않은 직전 NN의 바이어스 단위 : 때문에 내 구현의 버그로 https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d

+0

어떤 기능을 사용하고 있습니까? 공유 할 수 있습니까? – ACV

+0

나는 전체 구현을 다음과 같이 gisti-fied했다 : https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d 이것은 매우 기본적인 것이다. EDIT : 헤더 파일도 추가되었습니다. – antirez

+0

실제로 더 많은 테스트를 한 결과 실패한 XOR (1,1)뿐만 아니라 다른 0.5도 출력 할 수 있다는 것을 발견했습니다. – antirez

답변

2

문제가 있었다 : 나는 요점으로 구현했습니다. 코드를 수정 한 후 XOR 함수는 항상 올바르게 계산됩니다.