Welcome To Darwinbots > Newbie
Darwinbots replacement/clone
peterb:
in simple neural nets can be seen as a layer of dots (memory locations)
most often you see 3 layers of just a few dots
draw lines between dots and call them weights.
so a single dot on the second row does do (sum each dot in the row above (and for each dot .multiply its input with its weight line).
Depending on the results of single a neuron it adjusts the weights. (is it always wrong, then they become close to zero, is it oposite they become negative).
In the beginning the neural net is randomly seeded with random numbers, sigmoid calculations are done to balance the network.
And then with some hope and some clever thinking we might get it into DB (currently i've seen no sample of a bots using sigmoid functions, some claim to have but i doubt them)
here a not to complex read http://arxiv.org/ftp/cs/papers/0308/0308031.pdf
There are several ways how it can work (and this would be something we have figure out (comparable to evolving zerobots)..
As you can imagine all weights and all dots can compare lots of memory, so to keep the program fast i think not all cells do require such large amounts of memory.
Back to neural nets.
Normally this math works wit real numbers (maybe floats) and rarely with short integers (maybe an int type is enough). ..
types >>
As you might notice this requires some memory so it would be better to have another cell type (so not all of the cells would require large amount of memories)
So a brain cell can contain more code, and process more advanced commands.
Also eye cells and movement cells, shooting cells, posion storage, shell cells.. could be smaller (and simply have input or output, and some energy demands and a connection(location?).
I know thats radical different from DB in which a single cell can do everything, and has potentially all kind of information even if it doesn't process them.
Note for all the things that could be done with 1 or 0 you can use binary math (XOR OR AND etc) and so limit memory usage of them.
Although one bit can store only on /of 2 bits can store (00 01 10 11) for states (4 = 2^2 and 3 bits can store 2^3 = 2*2*2 = 8 states.
By us
In DB there areas are like the *.970 area (given to child by birth). (to keep children learn), something like that should also apply i think (so you get spock like brain transfers at birth).
The easist way might perhaps be to have a cell type wit a double adres range, one that is not poluted with all kind of commands
Note the math required actualy for doing this and the training of the neural net, is something which is another topic and a chalange like numsgill chalange for a zerobot using conditional behaviour.
But once we got a small neural network working, it can be exanded..>effectivly becoming smarter.
At ofcoure higher energy costs, as our brains consume the most our bodies energy..
Dont think of to complex neural networks for a starter a single bot with 3 layers and 20 dots totall, a minimum would be i think about (maybe first layer 5 next 3 next 4 >> 12 dots)
It doesnt require like 50 dots, because also the braincells could be connected to other brain cells.
Another method could be single neuron cells, but then we would require something like a species editor, to connect each cell correctly to make a neural network.
That way they consume less memory but bot creation becomes a new topic of discusion i mean how to do it in DNA, or do it without DNA ?..string discription of species maybe... ??..
Houshalter:
I'm a bit lost reading that Wasn't the purpose of DB to avoid using neural networks? What we need is a good "read" command so that we can use memory like an array. Theres a store, but no read.
ashton15:
--- Quote from: Houshalter ---I'm a bit lost reading that Wasn't the purpose of DB to avoid using neural networks? What we need is a good "read" command so that we can use memory like an array. Theres a store, but no read.
--- End quote ---
By read do you mean * like *.eye5 reads .eye5 or .eye5 * or *505 or even 505 * it's pretty easy to read a single value, and for multiple memory locations you have things like the stack and duplicate commands... would probably help a lot if you could read various positions in the stack if that's what you mean... or do you mean having multiple stacks... I'm slightly confused by what you mean.
As for the neural network I'm trying to create something which looks at every varible and tracks which ones change when another changes and draws "synapses" between them and some varibles are read only but can be adjusted by other varibles and the goal of the robot is to boost these varibles as high as possible through the manipulation of writing varibles and then occasionally a string of random DNA is thrown in (each operator is represented by a value) and has a varible assigned to it and then if that adjusts things synapses are made and it refines it to help towards making .pleas and .percentage_shots_hit as high as possible through experimentation... right now what I have is pretty simple, when it's done however I think it could be programmed into php or something and attached to a program to make it better with varibles such as performance and especially things like industrial robots... not sure it'll get quite that far however.
peterb:
It was a long write; because its not possible in DB2, so i only liked to give what should be about needed for it more memory of different type.
As some people like run like 10.000 bots then the best option is to have cell differences.
So a simple cell should contain less memory, also thats new for DB in which every cell can do all, smarter would be to have cells for specific tasks, so a multibot execution is quicker.
But also since i'm thinking of multibots here, since their 'genomic' is simpler a new way should be thought of for reproduction.
A specialized repro cell might do the trick, in it some new DNA commands to have a bleuprint of a species.
Specialized cells is a different new concept, but could be nice, in terms of memory usage and in terms of evolution.
All the special command in DB2 we could think of as special cells (store nrg, eye, stpoison, shell, repro,shoot,... etc).
(1 head connects to a neck joint ,to a body cell, then a mirror split of 2 arms, to hands, to fingers, to keyboard, to my latop..heheheh..)
if there is enough memory for (some) bots we can later make it, and the right type like an array of var type int. ( a bit more then +32000 -32000)
To activate such code some more math commands are needed like some a sigmoid functions, some 'more precize calculations are needed.
Or evenmore complete neural math function (sum array with weights).
I think for the moment its better to finish the clone, and i realy hope it would become readable code (with not to many magic variables); the old DB is not easy to read.
If we got clear code then it becomes possible to extend it, and maybe by more people.
These things are not worked on in DB3 as far as i know, i'm not sure how far DB3 is currently
This is maybe DB4 stuff i talk about, but if we got a good skelleton of the basic program, then a next version would be more easy to create.
And what ive seen sofar from it, seams to be better readable. (maybe not that fast?).. but promising
Oh also another answer i forgot in my earlier email, neural nets dont program the rest of the DNA to build usefull DNA to create a LOG(x) function to shoot.
It would rather become that a neural net would emulate the log function itself and give itself a shoot command. (connect the output to a shooting cell..)
(but i dont realy think that LOG(x) is required to shoot, but givven time it might improve perhaps to something like that...)
The improvement would be caused by having offspring (genetic reproduction) while advanced functioning (combining of eyes and shooting) would be a result of a small neural net.
The results might be impressive, since in current DB we create 'static' creatures, who by random noice (DNA mutations) change behavior.
In contrast nueral nets are adaptive by nature, not static
** there is a problem of learning for these bots, by i think thats much the same as zero bots problems >> Just start with enough variation and use elimination until you get some usefull Neuralnet.
Still we could use genetics as in DB, or random DNA mutations, if we can later build in a neural net then it would become much more realistic.
Most animals have brains... or at least have a concept of neurons.
Only the real small creatures dont have it, but often are so advanced allready that i'm not sure which rules aply to them ( slime can emulate the network connections between cities.. (new scientist article))
Houshalter:
--- Quote from: ashton15 ---
--- Quote from: Houshalter ---I'm a bit lost reading that Wasn't the purpose of DB to avoid using neural networks? What we need is a good "read" command so that we can use memory like an array. Theres a store, but no read.
--- End quote ---
By read do you mean * like *.eye5 reads .eye5 or .eye5 * or *505 or even 505 * it's pretty easy to read a single value, and for multiple memory locations you have things like the stack and duplicate commands... would probably help a lot if you could read various positions in the stack if that's what you mean... or do you mean having multiple stacks... I'm slightly confused by what you mean.
--- End quote ---
No, I mean having a "read" command which would take the value of the memory location pointed to on the the top of the stack and put it on top of the stack. I didn't know there was a "*" command, I thought you had to put it before the number of the variable you wanted to read.
As for your neural net, what about things that are related, but don't happen in the same cycle. For example, if you shoot, you get -2 shots back in the future, not instantly.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version