신경망 가중치의 수렴


10

500 번의 반복 후에도 신경망의 가중치가 수렴하지 않는 상황에 도달했습니다. 내 신경망에는 1 입력 레이어, 1 숨겨진 레이어 및 1 출력 레이어가 있습니다. 입력 레이어에는 약 230 개의 노드, 숨겨진 레이어에는 9 개의 노드, 출력 레이어에는 1 개의 출력 노드가 있습니다. 조기 정지 조건 (100 회 반복 후 신경망 훈련 중단)을 알고 있는지 알고 싶었습니다. 모델에 어떤 영향이 있습니까?

또한 신경망의 가중치가 수렴하지 않는 경우 업계 표준이 무엇인지 알고 싶습니까?


데이터가 올바르게 정규화 되었습니까? 이것이 일반적으로 그러한 행동의 이유입니다.
sashkello

일반적으로 숨겨진 레이어의 뉴런 수는 입력 레이어의 크기와 같아야합니다. 나는 9 개의 뉴런이 너무 작다고 생각합니다. 200-300 뉴런으로 늘리려 고 했습니까?
ThiS

@sashkello 예 데이터가 올바르게 정규화되었습니다.
Learner

1
@juampa 숨겨진 레이어에 9 개의 노드가있을 이유가 없습니다. 숨겨진 계층에 더 많은 노드가 있으면 네트워크의 복잡성이 증가하고 데이터가 과적 합 될 것이라고 생각했습니다.
Learner

3
좀 더 설명을해야합니다. 해결하려는 문제는 무엇입니까? 교육 데이터 포인트는 몇 개입니까? 수렴하지 않는다는 것은 무엇을 의미합니까? -당신은 (훈련 세트에서) 성능이 나쁘거나 체중이 수렴하지 않는다는 것을 의미합니까? 만약 체중 수렴이라면, 낮은 학습 속도 또는 테이퍼링 학습 속도를 사용해야합니다. 로지스틱 / 선형 회귀를 기준선으로 사용할 수도 있습니다. 마지막으로, 입력과 얼마나 관련이 있습니까? 이들이 서로 관련이있는 경우 정규화로는 충분하지 않으며 대각선 화 (일명 PCA)를 고려해야합니다.
seanv507

답변:


13

여러 가지 질문이 있습니다.

  • 각 층에 적절한 수의 뉴런이 있습니까?
  • 적절한 유형의 전송 기능을 사용하고 있습니까?
  • 적절한 유형의 학습 알고리즘을 사용하고 있습니까
  • 샘플 크기가 충분합니까?
  • 샘플이 서로 유익한 관계를 맺고 있음을 확인할 수 있습니까? (중복이 아닌 관련 치수 등)

천체의 방법으로 무엇을 줄 수 있습니까? 데이터의 특성에 대해 말씀해 주시겠습니까?

신경망의 그래디언트 강화 트리를 만들 수 있습니다.

일찍 멈 추면 어떻게되는지 물었습니다.

당신은 자신을 시도 할 수 있습니다. 무작위로 초기화 된 가중치로 시작한 다음 지정된 반복 횟수에서 300x를 실행하고 100이라고 말합니다.이 시점에서 앙상블 오류, 학습 서브 세트 오류 및 테스트 세트 오류를 ​​계산하십시오. 반복. 오류가 무엇인지 알려주는 300 개의 값이 있으면 100 번의 학습 반복이 주어지면 오류 분포에 대한 아이디어를 얻을 수 있습니다. 원하는 경우 여러 다른 학습 값에서 해당 분포를 샘플링 할 수 있습니다. 200, 500 및 1000 반복을 제안합니다. 이를 통해 시간이 지남에 따라 SNR이 어떻게 변하는 지 알 수 있습니다. SNR 대 반복 횟수의 도표를 통해 "절벽"또는 "충분히 좋은"아이디어를 얻을 수 있습니다. 때때로 오류가 발생하는 절벽이 있습니다. 때때로 그 시점에서 오류가 허용 될 수 있습니다.

시스템이 100 회 미만의 반복적으로 수렴하려면 "상대적으로 간단한"데이터 또는 "꽤 좋은"행운이 필요합니다. 둘 다 반복성과 관련이 없으며 일반화 할 수 없습니다.

왜 가중치가 수렴되고 오류가 특정 임계 값 아래로 떨어지지 않는다고 생각합니까? 투표 역설에 대해 들어 본 적이 있습니까? ( link ) 시스템에 주기적 상호 작용이있을 때 (예 : 신경망의 피드백) 투표 역설 결합 변경을 가질 수 있습니다. 가중치만으로도 네트워크 수렴에 충분한 지표인지는 알 수 없습니다.

가중치를 공간으로 생각할 수 있습니다. 3 차원 이상이지만 여전히 공간입니다. 그 공간의 "중심"에는 "최 적합"영역이 있습니다. 중심에서 멀어지면 적합하지 않습니다. 현재 가중치 설정을 해당 공간의 단일 지점으로 생각할 수 있습니다.

이제 "좋은"이 실제로 어디에 있는지 알 수 없습니다. 당신이 가진 것은 로컬 "경사"입니다. 현재 포인트가있는 곳에서 로컬 "더 나은"방향으로 그라데이션 하강을 수행 할 수 있습니다. "유니버설"을 더 잘 설명하지는 않지만, 로컬은 아무것도 아닌 것보다 낫습니다.

따라서 더 나은 계곡으로 내리막 길을 걷고 반복을 시작합니다. 끝났다고 생각 될 때까지 반복합니다. 아마도 당신의 체중의 가치가 클 수 있습니다. 어쩌면 그들은 도처에 튀는 것 같습니다. 어쩌면 계산이 "너무 오래 걸립니다". 하고 싶다.

당신이 어디에 있는지 "충분히 좋은지"어떻게 알 수 있습니까?

수행 할 수있는 빠른 테스트는 다음과 같습니다.

데이터의 각각의 몇 퍼센트와 같이 30 개의 균일 한 무작위 데이터 서브 세트를 가져 와서 네트워크를 재교육하십시오. 훨씬 빨라야합니다. 그들이 수렴하는데 걸리는 시간을 관찰하고 그것을 큰 집합의 수렴 이력과 비교하십시오. 이러한 부분 집합의 전체 데이터에 대한 네트워크 오류를 테스트하고 오류 분포가 큰 오류와 어떻게 비교되는지 확인하십시오. 이제 데이터의 최대 5 %까지 서브 세트 크기를 조정하고 반복하십시오. 이것이 당신에게 무엇을 가르치는 지보십시오.

이것은 꿀벌이 정찰을 기반으로 결정을 내리는 방법에 대한 입자 떼 최적화 (참조 참조)의 변형입니다.

가중치가 수렴하지 않으면 어떻게되는지 물었습니다.

신경망은 하나의 도구입니다. 그것들 만이 유일한 도구는 아닙니다. 다른 것도 있습니다. 나는 그들 중 하나를 사용하는 것을 볼 것입니다.

정보 기준으로 작업하므로 가중치 (매개 변수 수)와 오류를 모두 봅니다. 당신은 그 중 하나를 시도 할 수 있습니다.

유용한 전처리 유형이 있습니다. 중심과 규모. 주성분을 사용하여 회전합니다. 주성분의 고유 값을 보면 skree plot 규칙을 사용하여 데이터의 차원을 추정 할 수 있습니다. 차원을 줄이면 수렴이 향상 될 수 있습니다. '기본 물리학'에 대해 알고 있다면 데이터를 부드럽게하거나 필터링하여 노이즈를 제거 할 수 있습니다. 때때로 수렴은 시스템의 소음에 관한 것입니다.

압축 감지 에 대한 아이디어 가 흥미 롭습니다. 일반화 손실없이 일부 시스템의 급진적 인 서브 샘플링을 허용 할 수 있습니다. 훈련 세트를 대표하는 서브 샘플링 레벨과 레벨을 결정하기 위해 데이터의 부트 스트랩 재 샘플링 통계 및 분포를 살펴볼 것입니다. 이를 통해 데이터의 "건강"을 어느 정도 측정 할 수 있습니다.

때때로 그들은 수렴하지 않는 것이 좋습니다

투표 역설에 대해 들어 본 적이 있습니까? 당신은 그것을 양방향 임 파스의 더 많은 사촌으로 생각할 수 있습니다. 루프입니다. 2 인 투표 역설에서 첫 번째 사람은 후보 "A"를 원하는 반면 두 번째 사람은 후보 "B"(또는 A가 아닌)를 원합니다. 중요한 부분은 루프로 생각할 수 있다는 것입니다.

루프는 신경망에서 중요합니다. 피드백. 재귀. 이는 퍼셉트론이 XOR와 유사한 문제를 해결할 수있게했습니다. 루프를 만들고 때로는 루프가 투표 역설처럼 작동하여 무한 반복이있을 경우 가중치를 계속 변경합니다. 중요한 것은 개별 가중치가 아니라 루프에서 가중치의 상호 작용이기 때문에 수렴하려는 것이 아닙니다.

노트 :

500 회 반복 만 사용하면 문제가 될 수 있습니다. 나는 10,000 번의 반복으로 NN이 거의 없었습니다. "충분한"반복 횟수는 데이터, NN- 토폴로지, 노드 전송 기능, 학습 / 훈련 기능 및 컴퓨터 하드웨어에 따라 이미 언급 한 바와 같습니다. "충분한"또는 "너무 많은"반복이 있다고 말하기 전에 모두 반복 횟수와 어떻게 상호 작용하는지 잘 이해해야합니다. 시간, 예산 및 교육을 마쳤을 때 NN으로 수행하려는 작업과 같은 다른 고려 사항도 고려해야합니다.

Chen, RB, Chang, SP, Wang, W., & Wong, WK (2011, 9 월). 2012 년 3 월 25 일에 http://www.math.ntu.edu.tw/~mathlib/preprint/2011-03.pdf 에서 가져온 입자 떼 최적화 방법 (사전 인쇄)을 통한 최적의 실험 설계


2

나에게 당신의 문제가 무엇인지 말하기 어렵습니다. 고려해야 할 사항은 사용하는 구체적인 구현입니다. 구체적으로 어떤 최적화 알고리즘입니다. 네트워크가 실제로 수렴하는 데 시간이 오래 걸리고 확률 적 그라디언트 디센트 (또는 미니 배치) 형태를 사용하는 경우 네트워크가 정체 상태 (에너지 / 오류 기능이 매우 평평한 지역)에있을 수 있습니다. 그래디언트가 매우 낮아서 수렴).

그렇다면 그래디언트의 크기를 확인하여 이것이 사실인지 확인하십시오. 그라디언트에 운동량을 추가하는 등이 문제를 처리하는 여러 가지 기술이 있습니다.

거래의 기술과 요령에 대한 자세한 개요를 보려면 Yann LeCun이 작성한 (필독) 논문을 살펴보십시오 .


1

그라디언트가 한계를 초과하지 않거나 그라디언트가 0이 될 수도 있습니다. 이것은 그라디언트 폭발 및 소실 그라디언트 문제로 널리 알려져 있습니다.

가능한 해결책 중 하나는 AdaGrad 또는 Adam과 같은 적응 형 최적화 프로그램을 사용하는 것입니다.

신경망을 시작할 때 간단한 신경망을 훈련시키는 동안 비슷한 문제에 직면했습니다.

몇 가지 참고 자료 : https://en.wikipedia.org/wiki/Vanishing_gradient_problem https://www.youtube.com/watch?v=VuamhbEWEWA


0

입력이 서로 밀접하게 관련되어 있기 때문에 느리게 수렴 된 많은 데이터 세트가 있습니다.

나는 내 자신의 C ++ NN 분석기를 작성했고, 그것으로 각 체중에 대한 학습률을 변경할 수 있습니다. 각 가장자리의 각 무게에 대해 나는 몇 가지 도움이됩니다.

먼저, 각 학습 속도에 [0,1]의 균일하게 분포 된 난수를 곱합니다. 상관 관계 문제에 도움이 될 것 같아요.

다른 요령은 현재 그라디언트를 각 가장자리의 이전 그라디언트와 비교하는 것입니다. 그래디언트가 거의 백분율로 낮아지지 않으면 해당 에지의 학습 속도에 최대 5를 곱합니다.

그 트릭 중 하나에 대한 특별한 타당성은 없지만 잘 작동하는 것 같습니다.

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.