2013-12-14 7 views
1

나는 훈련 반복의 횟수의 함수로 신경망의 학습 오류를 곡선에 맞추려고 시도하고있다. 아래 이미지에 예가 빨간색으로 표시됩니다. 여기에서 나는 3000 번의 반복 학습을했습니다. 내가 관심을 갖는 부분은 처음 1000 번 (또는 그 이상) 반복에 적합 할 수있는 함수가 몇 가지 합리적인 정확성으로 3000 번의 반복을 추정 할 수 있는지 여부입니다.신경망의 학습 오류 피팅

그러나 나는 어떤 기능적인 형태로 나를 사용하는 것이 가장 좋을지 모르겠다. 처음에는 파란색으로 표시된 f (x) = A + B exp (-C x) 형식의 지수를 시도했습니다. 분명히 이것은 잘 작동하지 않습니다. 지수가 너무 빨리 떨어져서 결국 기본적으로 일정한 항이됩니다.

아마도 훈련이 시작되면 오류가 매우 급격하게 떨어지지 만 더 높은 반복을 위해 점진적으로 변하는 것이므로 어려울 수도 있습니다. 그러나 아마도 신경 네트워크 교육 경험이 있거나 알 수없는 기능을 익힌 경험이있는 사람이라면 몇 가지 아이디어가있을 수 있습니다. 나는 scipy/numpy 내에서 다양한 지수 형식과 다항식 적합을 시도했지만 성공하지는 못했습니다. 필자는 fit에 사용 된 반복 횟수를 변경했습니다 (작은 반복 횟수 제외).

의견이 있으십니까? 이 페이지

data http://i42.tinypic.com/dvmt6o.png

+0

scipy의 스플라인 메서드가 유용 할 수 있습니다. [여기] (http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html#spline-interpolation) –

+1

오류를 예측하려고합니까? 처음 몇 단계를 기초로 한 훈련 단계의 곡선? 또는 단순히 곡선을 설명하는 수식을 찾으려고합니까? 첫 번째 경우에는 이것이 효과가 있을지 의심 스럽습니다. 실제 문제에서 오류 곡선은 보통 부드럽지 않습니다. 또한 오류 표면은 모든 교육 데이터 및 메타 매개 변수 세트마다 다릅니다. 그리고 무작위 초기 무게 매개 변수의 각 세트에 대해 그 표면의 완전히 다른 영역에서 시작합니다. – schreon

+0

@schreon : 그렇습니다. 처음 몇 단계 (대략 = [1,1000]이라고 말함)를 기준으로 대략 오차 곡선을 예측하려고합니다. 나는 단순히 전체 커브의 수식을 설명하려고하는 것이 아닙니다. 왜 이것이 신경망 훈련에 가능하지 않은 지에 대한 당신의 주장을 이해하고 있으며, 자신에 대해 걱정했습니다. 나는 훈련의 후기 단계에서 오류 표면과 관련된 특징들이 훈련 초기에 그런 특징들로 알려지지 않았다고 생각한다. – gammapoint

답변

0

체크 아웃 : http://www.astroml.org/sklearn_tutorial/practical.html

가 특정 방향으로 당신의 알고리즘은 데이터 세트에 높은 바이어스 또는 높은 분산을로 표시할지 여부를 진단하고, 제안하고 설명 상황에 유용한 것은 두 경우 모두 들어 가라.

2

지수 피팅이 작동한다고 생각합니다. 당신의 f(x)=A+B*exp(-C*x)에서, 나는 A = 0.005, B = 0.045C = 1/250을 선택, 나는

enter image description here

그냥 파라미터 튜닝에 관하여를 얻을 것이다. 그러나 나는 당신이 학습 곡선에 맞추고 싶은 동기를 이해하려고 노력하고 있습니다. 보간 방법에는 더 많은 신기원 이후 오류를 예측하는 데 사용할 수있는 '외삽'옵션이 포함되어 있다고 생각합니다. 곡선을 정확하게 배우고 싶다면 선형 숨겨진 레이어가있는 또 다른 신경망을 사용할 수 있으며 곡선을 다시 '배우는'결과물을 출력 할 수 있습니다.

+0

학습 곡선을 맞추기위한 동기는 아마 다소 독특합니다 (그리고 아마도 좋은 이유가 있습니다). 신경망 입력 (어떻게 입력/기능을 구성하는지)에 대한 최적화 절차를 수행하려고합니다. 그래서 저는이 파라미터들을 가지고 놀고 있습니다 만, 많은 수의 반복 작업을 계속한다면 NN 트레이닝의 장기적인 동작이 무엇인지에 대한 아이디어를 얻고 싶습니다. 최적화 단계에서 각 네트워크를 완벽하게 교육하는 것은 비용이 많이 들며 비용을 줄이려고합니다. – gammapoint

+3

감사합니다. gammapoint. 내 대답에서 보여준대로 A, B, C의 대략적인 범위를 얻으려면 트레이닝 커브의 일부 포인트를 선택하는 것이 좋습니다. 그러면 피팅이 훨씬 쉬울 수 있습니다. 적합하게 다른 NN을 사용하는 것도 가능합니다 – lennon310

+0

Thanks @ lennon310. 좀 더 적은 수의 데이터 포인트에 약간의 노력을 기울 였고 약간의 진전을 보였습니다 (http://i42.tinypic.com/zmm5aw.png 참조). 사실 초기 피팅 문제는 지수의 값에 대한 초기 추측이 너무 커서 피피 (Scipy)에 문제가 발생했습니다. 당신이 제안한 것보다 작은 값을 주면 더 잘 맞을 것입니다. 그럼에도 불구하고, 함수의 장기적인 동작이 기하 급수적 인 동작 후에보다 직선적이기 때문에 볼 수있는 것처럼 완벽하지는 않습니다. 우리가 꼭 맞는 함수는 지수 함수가 사라진 후 평평합니다. – gammapoint