Welcome To Darwinbots > Newbie
Hello, and opinions on robotics
Numsgil:
You probably don't want just the amount of battery left to affect behavior or the correct solution is to just stay in the charger ("the only winning move is not to play..."). At the simplest you could also have it try to move towards sounds. Balancing that "instinct" with the battery "instinct" should create interesting behavior.
If you're going the route of neural networks, this seems like a good resource. Again, a bit outside my wheelhouse, but I'm sure there's a bunch of research out there about how many hidden neurons to use for a given number of input and output nodes. The key thing you want to avoid here is overlearning. That is, overfitting but in a machine learning context. Basically you can't just throw as many hidden neurons at it as you want and expect "better" results. The curve the neurons will fit to (again, (classic backpropogation) neural nets are just high dimensional curve fitting) will exactly match all the the points you're learning against, and be terrible everywhere else. See also Runge's phenomenon.
You should also search for "online" neural networks. The "online" here means unsupervised learn-as-you-go, which sounds like what you're trying to do.
The specifics of setting up a neural network and getting it to run are not things I know a great deal about, so I'm not sure I can help there. But the basics to it are take the input, produce a new output from the initial neural network, check it against your objective function, and reinforce the nodes that lead to the right answer and weaken the nodes that lead to the wrong answer, and repeat ad infinitum. Importantly, the network only tries to optimize the objective function in the context of your input and output nodes. Make sure you provide it with the right objective function and inputs. If you expect it to have a memory of what it's done recently, you have to give it that (store recent outputs in memory and feed them in as inputs the next time around). If you expect it to "want" to do something, you have to make it want to do that by including it in the objective function (and therefore having some way of knowing how close it was to accomplishing it).
...
Actual biological neural networks are far more complicated than the simple neural networks of machine learning. An individual biological neuron is more like a tiny, slow CPU than a simple boosting/damping function. See this blog article for some idea of the difference. So while on the surface a neural network might seem in keeping with the biomimicry theme, under the hood it's such a far cry from an actual neural network that it's like taking an abacus and pretending it can play Call of Duty.
Numsgil:
I should also point out OpenWorm, which is an attempt to simulate a C Elegans' brain (and body) in the computer. Interestingly, even that very simple organism, where we understand its physiology almost completely, the state of the art can't reproduce in a simulation. The current line of thought is that it's a matter of finding the correct coefficients for things that we don't know how to probe directly, but it gives you an idea of what goes in to simulating even a simple organism.
Shadowgod2:
i looked up online neural nets to see what it was about and it all gave me an idea of a very basic neural net multi bot.
santacide:
--- Quote from: Numsgil on May 21, 2015, 01:38:30 PM ---You probably don't want just the amount of battery left to affect behavior or the correct solution is to just stay in the charger ("the only winning move is not to play..."). At the simplest you could also have it try to move towards sounds. Balancing that "instinct" with the battery "instinct" should create interesting behavior.
--- End quote ---
That actually gives me a great idea... using battery voltage for reward, the neural network could experience "pain" if the voltage goes too low *or* too high, meaning remaining in the charger for too long will be painful (kind of like "overeating").
Right now I'm reading the neural networks and deep learning link you gave, it seems rather helpful though at this point I'm not sure a cpld/fpga would work, considering there's no way to change the weights in a neural network on one without reprogramming it, unless memory is also programmed into the fpga, meaning it must be that much more complex...
Anyway, most of what remains to be worked out is hardware, so I'll be heading out. If you guys care to see what the results are I'd be happy to show it here once it's done. Also, feel free to post more suggestions if you think of anything, I'll still check by from time to time. :)
Numsgil:
--- Quote from: santacide on May 22, 2015, 04:57:54 PM ---If you guys care to see what the results are I'd be happy to show it here once it's done.
--- End quote ---
Yes please share once you have something working :)
Navigation
[0] Message Index
[*] Previous page
Go to full version