신경망을 사용하여 문제를 해결하려고합니다. Coursera에서 제공되는 Machine Learning 과정에서 배웠고, FANN이 Ruby 구현의 신경망임을 알게되어서 비행기를 다시 발명 할 필요가 없었습니다.신경망을 이해하는 데 문제가 있습니다.
그러나 팬이 왜 저에게 이상한 결과를 주는지 이해가되지 않습니다. 수업에서 배운 것을 바탕으로
나는 일치 결과 인 훈련 데이터 세트를 가지고 있습니다. 플레이어에게 숫자가 주어지고, 상대방에게 숫자가 주어지며, 결과는 승리를 위해 1, 손실로 0이됩니다. 데이터는 혼란으로 인해 약간 시끄럽지만 끔찍하지는 않습니다. 내 목표는 어떤 격차가 엇갈리는 경향이 있는지 찾아내는 것입니다. 예를 들어 내 직감은 등급이 낮 으면 정격이 덜 정확하므로 더 낮은 정격의 성향이 더 많은 혼란을 낳습니다.
그래서 나는 약 100 가지 예제의 훈련 세트를 얻었습니다. 각 예제는 (rating, delta) => 1/0입니다. 그래서 분류 문제입니다. 그러나 실제로 제가 생각하기에 로지스틱 회귀 유형 차트에 도움이되는 것은 아니며, 신경망이 더 정확 해 보입니다. 그때 클래스에서
network = RubyFann::Standard.new(
:num_inputs=>2,
:hidden_neurons=>[8, 8, 8, 8],
:num_outputs=>1)
와 신경 네트워크를 설정
training_data = RubyFann::TrainData.new(:inputs => inputs, :desired_outputs => outputs)
내 코드가 시작, 나는 합리적으로 기본값은 같은 수의 각 은닉층을 가지고 있음을 알게 단위. 이 작업 방법이나 아직 수행중인 작업을 모르기 때문에 기본값을 사용했습니다.
마지막 다음network.train_on_data(training_data, 1000, 1, 0.15)
그리고, I는 단위 샘플 정격 입력의 세트를 통해 가서, 각 증분에서, 그 결과가 < 0.5 0.5> 주도로 전환 될 때까지 I는 약 0이어야 발생한 델타 증가한 약 1이지만 실제 0.45와 0.55와 비슷합니다.
한 번 실행하면 입력마다 0이 표시됩니다. 같은 데이터로 두 번 다시 실행했고 양수가 감소하는 추세를 보였고 양수가 증가하는 추세를 보였으 나 완전히 반대되는 예측이었습니다.
필자는 충분한 기능을 포함하지 않을 것으로 생각하여 추가했습니다 (rating**2
및 delta**2
). 불행히도, 그때마다 시작 델타 또는 내 모든 델타 때마다 모든 입력에 대한 점점 시작했다.
루비 팬 (Ruby-FANN)이 나에게 말하고있는 것과 같은 왜곡 된 결과를 얻는 이유는 무엇인지 모르겠다. 부분적으로는 라이브러리를 이해하지 못하기 때문에 나도 신경 네트워크에 대해 배우기 시작했기 때문에 의심 스럽다. 크고 분명한 것을 놓치고 있습니다. 교육 자료가 충분하지 않거나, 더 많은 기능을 포함해야하는지, 문제가 무엇인지, 문제를 해결하거나 더 나은 방법을 배우려면 어떻게해야합니까?
ML에 대해 많이 알지 않지만 바이어스 된 샘플은 편향된 결과를 초래합니다. 샘플 데이터의 대부분이 승리를위한 것이라면 모델을 사용할 때 우승 할 가능성이 높습니다. . – iouri
손실보다 더 많은 승리를 거두었지만 결과가 다른 실행에서 왜 다른지? –