2

어제 this question 게시 됨 내 신경망 (확률 적으로 그라데이션 강하를 사용하여 backpropagation을 통해 교육하고 있음)이 지역 최소값에 걸렸을 때 어제 요청했습니다. 다음의 논문은 XOR 신경망에서 로컬 미니 마의 문제에 대해 이야기합니다. 첫 번째 것은 로컬 미니 마의 문제가 없다고 말하는 반면, 다음 논문 (1 년 후 작성)은 2-3-1 XOR 신경망에서 로컬 미니 마의 문제가 있다고 말하고있다. 제쳐두고, 저는 3-3-1 즉, 입력과 숨겨진 레이어에 바이어스를 사용하고 있습니다). 이 두 가지 (내가 그것을 읽을 수 없습니다 해요 그래서 전체 종이에 액세스 할 수없는) 초록 있습니다 Hamey LG하여활성화 함수와 초기 가중치의 선택은 신경망이 로컬 최소치에 갇혀 있는지 여부에 영향을 미칩니 까?

가장 간단한 XOR 네트워크에 대한되지 로컬 최소값이 말한다 another paper [PDF]있다, 그러나 그것은 2-3-1 네트워크에 대해 얘기하지 않는 것 같습니다.

내 실제 질문에 : 활성화 기능의 선택, 초기 가중치 및 신경 네트워크가 로컬 미니 마에서 고착 될지 여부에 미치는 영향에 대해 논의한 항목을 찾을 수 없습니다. 내가이 질문을하는 이유는 표준 Sigmoid 활성화 함수와 하이퍼 볼릭 탄젠트 활성화 함수를 사용하려고 시도했기 때문입니다. 나는 전자의 경우 20 % 정도만 붙어있는 반면, 후자의 경우 나는 훨씬 더 자주 붙어있는 경향이 있다는 것을 알았다. 나는 또한 처음으로 네트워크를 초기화 할 때마다 내 가중치를 무작위로 선택하고 있으므로 임의의 가중치 세트가 내 신경망을 "고정"하도록 더 많이 처리되는지 궁금합니다.

활성화 기능과 관련하여 오류가 결국 활성화 기능에 의해 생성 된 출력과 관련되기 때문에 나는 의 효과 (즉, 오류 표면이 변경됨)라고 생각하고 있습니다. 그러나 이것은 직감에 기반하고 있으며 구체적인 답을 원합니다 (두 점 모두 : 초기 가중치와 활성화 함수 선택).

답변

6

신경망에 주어진 임의의 가중치는 종종 학습 도중 사용할 수있는 검색 공간의 부분을 즉시 제한합니다. 학습 속도가 작은 경우 특히 그렇습니다.

그러나 XOR 경우 (3-3-1 토폴로지 사용)에는 로컬 미니 마가 없어야합니다.

네트워크가 너무 작기 때문에 로컬 미니 마에서 멈추는 것처럼 가장자리 가중치를 인쇄해야합니다. 가중치가 올바른지 여부와 얼마나 완벽한 가치를 제공 하는지를 신속하게 평가할 수 있어야합니다.

큰 차이를 만든 한 가지 트릭은 각 학습 데이터가 오류를 일괄 처리하고 한 시대의 끝에 가중치를 업데이트하는 직후에 가중치를 업데이트하는 것이 었습니다. 내 입력 데이터의 첫 번째 절반이 동일한 분류 버킷에 속하면 초기 네트워크가 흔들리지 않았습니다.

다음 단계로 넘어가 자면, 균등하게 분산 된 교육 사례가 있는지 확인하십시오.신경 네트워크에 900 개의 양성 분류 결과를 제공하지만 100 개의 음성 분류 결과 만 제공하는 경우가있을 경우 네트워크는 분류 그룹 내에 모든 것이 있다고 말하는 것이 더 쉽다고 생각할 수 있습니다. 왜냐하면 10 %의 오류율 만 있기 때문입니다. 많은 학습 알고리즘은 이러한 종류의 것을 찾는 데 매우 유용합니다.

마지막으로 정품 인증 기능은 로컬 최소값에 도달했는지 여부에 관계없이 거의 차이가 없어야합니다. 활성화 함수는 주로 실제 영역을 훨씬 작은 알려진 범위에 투영하는 방법으로 사용됩니다. (0,1) 및 쌍곡 탄젠트 활성화 함수에 대한 (-1,1)이다. 이것을 특정 신경층에서 모든 학습 된 기능에 걸쳐 평등을 강요하는 방법으로 생각할 수 있습니다 (a.k.a. feature scaling). 입력 도메인은 이전에 알려지지 않았기 때문에 선형 회귀에 대한 정규 기능 배율만큼 간단하지 않으므로 활성화 기능을 사용해야하지만 역 전파 중에 컴퓨팅 오류를 보상해야합니다.

+0

나는 [[(0,0), (0,1), (1,0), (1,1)]'을 사용하여'[0, 1, 1, 0 ]'. "distribute"란, 이러한 입력 패턴을 무작위로 네트워크에 표시해야한다는 의미입니까? 또한 숨겨진 레이어의 뉴런 수를 4로 늘릴 때 막히지 않고있는 것으로 나타났습니다. 코드를 수정하여 가중치를 인쇄하여 자신이 무엇인지 확인할 수있게했습니다. 나는 또한 오류를 일괄 처리하는 아이디어를 좋아한다. 오류를 추가한다는 의미입니까? 아니면 당신은 그들을 배열에 유지하고 오류 배열을 통해 iterating하여 신기원 말기에 가중치를 업데이 트합니까? –

+0

NN에 훈련 샘플을 효과적으로 무작위로 제시하는 것을 의미합니다. [0,1,0,1]과 같은 출력 값을 가진 샘플을 시도해 볼 수 있습니다. 오류를 배치하면 주문에 대해 전혀 걱정할 필요가 없습니다. 오류를 일괄 처리하고 에포크마다 가중치를 업데이트하려면 오류 값을 계산하기 위해 역 전파 단계를 수행하지만 각 가중치를 업데이트 할 때는 평균 오류 (총 가중치/총 교육 견본)를 사용해야합니다. – Nate

+0

아, 근본적으로 입력 패턴을 뒤섞어 야합니다. 배치 업데이트도 의미가 있습니다. 난 그냥 오류를 추가하고 일단 내가 반복의 번호로 나눌 것입니다 그리고 그 eppoch와 함께 끝났어 그 backpropagation에 대한 그 가치를 사용하는 것 같아요. 감사! 이것은 의미가 있습니다. –