in reply to AI NEWBIE -- Neural Net problem/question... um Tutorial request?? :)

Neural nets require a LOT of reinforcing training time. If you have a child, you understand this process intuitively. People can learn simple things by rote, but they can extrapolate and understand things only if they are shown enough examples to reinforce their forming theory about a governing rule.

A 2- or 3-year old kid needs to be exposed to a rule hundreds of times before they really can apply it (unless it somehow sparks their imagination and interest). A 10-year old probably only needs a few dozen math problems before they can start to apply the method on similar problems. An adult should be able to recognize and extrapolate on a pattern after a few examples.

In the case of your neural net that learns even/odd number rules, you are hoping to train the network to do two things: develop a direct 1:1 relationship between the lowest binary bit input and the output answer bit, while simultaneously completely burning out or dismissing all value from every other binary input bit. Seems simple to you, but not to a 3-year old.

--
[ e d @ h a l l e y . c c ]

  • Comment on Re: AI NEWBIE -- Neural Net problem/question... um Tutorial request?? :)

Replies are listed 'Best First'.
Re: Re: AI NEWBIE -- Neural Net problem/question... um Tutorial request?? :)
by talwyn (Monk) on May 24, 2004 at 18:15 UTC
    Thanks. I inserted a feedback indicating when something was demonstrably wrong. After running the feedback pattern once it produced the correct data. I was under the impression that the learn function should perform "off-line" learning. With the feedback aren't I performing "on-line" learning?

    I tried adding the problem pattern as the last pattern in its training pattern... but it still fails to identify 1 as an odd number the first time it encounters it. After this it identifies all the evens and odds correctly. Is it possible to set this up to learn what it needs in the initial training set?

    my $answer = $$result[0]; if ( ($answer == 1) && ( $i % 2 != 0) ) { print "Got it wrong!\n"; #Learn the pattern $net->learn(\@bit,[0]); $i=-1; # Start over } print "$answer\n";
    Results
    Testing 0 0 0 0 0 0 -> 1 Testing 1 0 0 0 0 1 -> Got it wrong! 1 Testing 0 0 0 0 0 0 -> 1 Testing 1 0 0 0 0 1 -> 0 Testing 2 0 0 0 1 0 -> 1 Testing 3 0 0 0 1 1 -> 0 Testing 4 0 0 1 0 0 -> 1 Testing 5 0 0 1 0 1 -> 0 Testing 6 0 0 1 1 0 -> 1 Testing 7 0 0 1 1 1 -> 0 Testing 8 0 1 0 0 0 -> 1 Testing 9 0 1 0 0 1 -> 0 Testing 10 0 1 0 1 0 -> 1 Testing 11 0 1 0 1 1 -> 0 Testing 12 0 1 1 0 0 -> 1 Testing 13 0 1 1 0 1 -> 0 Testing 14 0 1 1 1 0 -> 1 Testing 15 0 1 1 1 1 -> 0 Testing 16 1 0 0 0 0 -> 1