2013-09-04 6 views
1

신경망 사용에 문제가 있습니다. 숨겨진 레이어에는 비선형 활성화 함수를 사용하고 출력 레이어에는 선형 함수를 사용합니다. 숨겨진 레이어에 더 많은 뉴런을 추가하면 NN의 기능이 향상되어 교육 데이터에 더 적합 해지고 교육 데이터에 오류가 줄어 들었습니다.신경망 관련 문제

그러나 나는 다른 현상을보고 있습니다. 더 많은 뉴런을 추가하는 것은 훈련 세트에서도 신경망의 정확성을 감소시키는 것입니다. enter image description here

다음은 뉴런 수의 증가에 따른 평균 절대 오차의 그래프입니다. 교육 자료의 정확도가 떨어지고 있습니다. 이것의 원인이 무엇일까요?

matlab에 사용하고있는 nntool이 교차 검증을 사용하는 대신 일반화를 확인하기 위해 교육, 테스트 및 유효성 검사에 데이터를 무작위로 분할 했습니까?

또한 목표가 긍정적이라고 가정되는 동안 많은 -ve 출력 값이 뉴런을 추가하는 것을 볼 수 있습니다. 그것은 또 다른 이슈가 될 수 있을까요?

여기서 NN의 동작을 설명 할 수 없습니다. 어떤 제안? 여기에 공변량으로 구성된 내 데이터에 대한 링크이며, 내가 nntool에 익숙하지 오전하지만 문제는 초기 가중치의 선택에 관련된 것으로 의심되는 것이다

https://www.dropbox.com/s/0wcj2y6x6jd2vzm/data.mat

+0

우선 10^7의 범위에 오류가 있습니까? 너무 높지 않니? 이것은 신경 네트워크가 전혀 훈련되지 않았 음을 나타낼 수 있습니다. 신경 네트워크에서 실제로 훈련 중인지 확인하기 위해 훈련 진화를 보았습니까? – Werner

+0

@Werner. 오차 범위는 괜찮습니다. 출력이 매우 높기 때문에 그 범위에 있어야합니다. 그래서 그 범위에서 에러를 보는 것이 정상입니다. – user34790

+1

기본'mapminmax' 정규화를 사용하고 있습니까? Matlab은 기본적으로 정규화를 적용하고 오차 스케일 또한 정규화됩니다. 출력이 매우 높고 정상화하지 않으면 비선형 활성화 함수를 포화시켜 예상치 못한 동작을 설명 할 수 있습니다 (포화 뉴런을 추가하면 더 많은 출력이 포화됩니다). 교육 단계에서 오류 진화를 확인하여 네트워크가 실제로 훈련 중인지 확인하는 것을 잊지 마십시오. – Werner

답변

0

을 목표로하고있다. 불쌍한 초기 무게 선택은 매우 느린 수렴 또는 수렴 실패로 이어질 수 있습니다.

예를 들어, 숨겨진 레이어의 뉴런 수가 증가하면 보이는 레이어의 각 뉴런에 대한 입력 수가 증가합니다 (각 숨겨진 유닛에 대해 하나). 숨겨진 계층에서 로짓을 사용하고 (항상 긍정적 인) 고정 된 간격 사이의 무작위 균일 분포에서 초기 가중치를 선택한다고 가정 해보십시오. 숨겨진 유닛의 수가 증가하면 들어오는 연결이 더 많아서 보이는 레이어의 각 뉴런에 대한 입력도 증가합니다. 매우 많은 수의 숨겨진 유닛을 사용하면 초기 솔루션이 매우 커져서 컨버전스가 저하 될 수 있습니다.

물론이 모든 동작은 정품 인증 기능과 데이터 배포 및 정규화 방법에 따라 달라집니다. 데이터 정규화 및 초기 가중치 및 활성화 함수 선택에 대한 훌륭한 조언을 위해 Yann LeCun의 Efficient Backprop을 살펴볼 것을 권장합니다.