> Well, the first complexification on a single neuron
> could be the addition of a neuron and a connection,
> which is admittedly a significant change, but not
> really moreso than the Add Node mutation in NEAT,
> which essentially does the same thing (adding one
> additional node and one additional connection).
Is this adding a neuron in the same layer as the original (parallel), or in
serial? You need both I think.
Anyway, this implementation is complex, but its definately worthwhile to
explore. Let me know if you do any work with this.
> As I said, I look forward to it. :) Any idea of which
> domains you would possibly apply modular NEAT to?
I have a simple scalable board game domain that I plan on doing the majority
of the testing on. I have some preliminary data for 10x10 and 20x20. If
all goes well, I'd like to apply it to Go at some point in the future.
Darren--Your "shape recognizer" experiment sounds
interesting.
--- Darren Izzard <zysyshelp@...> wrote:
> There were eight outputs:-
> 1. If >.5, network wants to move one square left
> 2. If >.5, network wants to move one square up
> 3. If >.5, network wants to move one square right
> 4. If >.5, network wants to move one square down
So if two or more were >.5, you took the highest?
> No, as the point was to see whether the network
> could evolve to solve this
> problem at all, and what strategies it would use to
> nagivate over the shape
> from its random starting position.
Did the networks tend to converge to a particular
movement pattern (like spiraling clockwise or
counterclockwise)?
> Well, memory between timesteps was a required
> feature of this problem.
> Obviously, if the network couldn't remember anything
> about what it had seen
> before, it was unlikely to do very well. NEAT, as
> you know, detects
> recurrence - neurons connected back to themselves -
> and this is usually the
> way memory seems to evolve, as the same information
> will get looped back
> time after time. However, my experiments also showed
> long chains of neurons,
> which weren't part of loops, which seemed to be
> performing a similar
> function of keeping information in the network for a
> future time step. Now,
> I wouldn't have thought this was necessarily
> unusual, but Ken picked up on
> it.
That's interesting. Have you published these results
somewhere?
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
--- Joseph Reisinger <joeraii@...> wrote:
> For example, what is the first
> complexification you
> make on an existing neuron?
> You want to make the
> network slightly more
> complex topologically, but how do you do that acting
> on a single neuron?
Well, the first complexification on a single neuron
could be the addition of a neuron and a connection,
which is admittedly a significant change, but not
really moreso than the Add Node mutation in NEAT,
which essentially does the same thing (adding one
additional node and one additional connection).
The impact of the mutation could be mitigated, as it
is in NEAT, by using an initial connection weight of
1. From there, mutations could proceed as in NEAT (or
you could allow module mutations on module nodes
themselves, and have modules within modules within
modules). I don't know how this would work, but I
think it's worth playing with.
> Right. That first paper definately wasn't anything I
> want to publish. It
> was more like a "proof of concept." The idea works
> (more or less) so this
> semester I'm going to be testing it on much larger
> domains.
>
> I'll keep you posted.
As I said, I look forward to it. :) Any idea of which
domains you would possibly apply modular NEAT to?
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
Actually, the board edge sizes should be odd for Go,
so that should be 101x101 Go and 1001x1001 Go. :)
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
--- Joseph Reisinger <joeraii@...> wrote:
> Go is certainly complex, but it is not open-ended.
> There is a theorem
> about deterministic, perfect knowledge games that
> says roughly "there is a
> game tree for a single player that always ends in a
> win or a tie, no
> matter what moves the opponent makes."
Well, wouldn't this be true only if you considered Go
a static board size?
For example, I've read that many consider 5x5 Go
qualitatively different from 19x19 Go. Possibly then,
strategies that worked well with 5x5 would not work
well with 19x19. So what about 100x100 Go? If you
considered the domain of Go the class of all games
with the same ruleset, but with scalable board sizes,
the domain would technically be open-ended, would it
not?
I'm guessing that someone (or some thing) that is good
at 19x19 Go might not necessarily be good at 100x100
Go, or 1000x1000 Go...
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
> An exciting area to me is that of evolvable hardware.
> I think it would be fascinating to evolve the
> morphology of an agent along with its neural net
> control mechanisms in a complex 3D simulation. Just
> as with biological organisms, the body and mind could
> complexify in a sort of feedback loop.
>
> We're pretty far from being able to do something like
> this, but would such a domain be open-ended enough for
> you? :)
We're not far from doing this, it has been done, Karl Sims did it in
1994. See http://web.genarts.com/karl/evolved-virtual-creatures.html . To
my mind, his work still stands out as the coolest in that particular
field. Implementing something similar wouldn't even take very long
time... (using existing physics libraries etc)
However, this wasn't done using NEAT, if that was what you meant.
cheers,
m
> I tried to make the robot duel open ended in the sense I'm talking
> about. But it isn't *truly* open ended...there is a point after which
> you can't really do much better. It is actually quite hard to think
> of domains that are totally open ended and support ever-increasing
> complexity.
Co-evolution among agents certainly makes it easier to find "better"
solutions, but it doesn't really make the domain any more open-ended.
There is still a limiting fitness (or limiting dimension(s), if you will)
that is eventually reached in deterministic environments. Actually its not
really a limiting fitness, its more of an area in the solution space where
the evolutionary pressure is balanced by the work required to evolve more.
> Board games like Go are certainly complex enough to support extremely
> complex structures, so that might be one domain. But are there more
> biologically-inspired domains (like predator/prey) that can be truly
> open ended? Derek, Philip, and I talked a bit about this when we met
> at the AI Conference. It is a pretty big question in artificial life:
> what is the definition of world that supports unbounded continual
> progress?
Go is certainly complex, but it is not open-ended. There is a theorem
about deterministic, perfect knowledge games that says roughly "there is a
game tree for a single player that always ends in a win or a tie, no
matter what moves the opponent makes." The existence of an optimal
strategy like this (no matter how hard to find) means that at some point,
you can never get better at the game and thus evolution stops.
The same is true, I believe, for single predator/prey pairs. I don't think
you'll really start noticing "unboundedness" until you have several (3+)
interacting agents (something akin to Kepler's lays of planetary motion).
What you need is some kind of evolving fitness function. Have you given
any thought about just evolving a domain that supported maximum
"unboundedness"? The domain could be undergoing some kind of symbiotic
relationship with the agents, with its fitness proportional to the
increase in fitness from generation to generation of the agents.
--
Joseph Reisinger
joeraii@...http://www.cs.utexas.edu/users/joeraii
--- Kenneth Stanley <kenstanley01@...> wrote:
> I wonder if some of you have
> thoughts as to
> the kinds of domains that most benefit from such a
> process?
I'd say algorithm complexification probably works best
with domains that are suitable to complexification
themselves. That is, environments or conditions that
you can start simply, then scale to increased
complexity.
You mention Go, which is a good example. The
researcher can apply NEAT initially to 5x5 Go, then
scale up the board size, increasing the complexity of
the domain.
I don't think NEAT would work well with a massively
complex domain that wasn't able to be scaled down
initially. Dunno, though.
> But do you
> believe there is
> some ultimate open-ended type of domain that is
> "made for"
> complexification?
Sure...general intelligence, problem solving, whatever
you want to call it. :)
> I tried to make the robot duel open ended in the
> sense I'm talking
> about. But it isn't *truly* open ended...there is a
> point after which
> you can't really do much better.
Well, that's because your environment is relatively
simple, right? I mean, if you add another dimension
to your model, and it's 3D instead of 2D, then it's
more difficult to reach optimal strategies because the
domain is now an order of magnitude more complex. If
you add other facets to the environment (like changing
conditions, uneven surfaces, weather simulations like
rain/wind, etc.) then the behavior would have to be
more complex to achieve the goal, right?
An exciting area to me is that of evolvable hardware.
I think it would be fascinating to evolve the
morphology of an agent along with its neural net
control mechanisms in a complex 3D simulation. Just
as with biological organisms, the body and mind could
complexify in a sort of feedback loop.
We're pretty far from being able to do something like
this, but would such a domain be open-ended enough for
you? :)
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
One thing that a few people have commented on is the appeal of
increasing complexity. I wonder if some of you have thoughts as to
the kinds of domains that most benefit from such a process? It's
interesting to see the experiments people have tried with NEAT, like
Mattias' evolved gaits and Darren's eye. But do you believe there is
some ultimate open-ended type of domain that is "made for"
complexification?
I tried to make the robot duel open ended in the sense I'm talking
about. But it isn't *truly* open ended...there is a point after which
you can't really do much better. It is actually quite hard to think
of domains that are totally open ended and support ever-increasing
complexity.
Board games like Go are certainly complex enough to support extremely
complex structures, so that might be one domain. But are there more
biologically-inspired domains (like predator/prey) that can be truly
open ended? Derek, Philip, and I talked a bit about this when we met
at the AI Conference. It is a pretty big question in artificial life:
what is the definition of world that supports unbounded continual
progress?
ken
--- ai_junkie_dot_com <fup@...> wrote:
> I'm Mat Buckland, author of 'AI Techniques for Game
> Programming',
> which has a chapter describing NEAT.
Hi Mat. Nice to meet you. I enjoyed your book quite
a bit. Your chapter on NEAT was nice to read in
conjunction with Ken's academic papers. It helped
flesh out the concepts and suggest some interesting
alternate ways of implementing NEAT.
> It took me a while to get here -- I've just moved to
> India and my
> internet connection is poor -- but I'm looking
> forward to some
> interesting discussions.
>
> This Yahoo forum is proving a little tedious to
> browse, would you
> guys be interested in me setting up a dedicated NEAT
> forum at my
> website (ai-junkie.com)?
Sorry to hear about your poor connection (I lived for
two years in Japan on a laptop with
dial-up...excruciatingly slow).
Thanks for the offer of setting up a NEAT forum on
your website, but personally I'd prefer this
list/group as the primary forum...we just got settled
in. :)
You're set up for individual e-mails, which should all
be text, and there's also the "daily digest" option in
Yahoo Groups that let's you receive all the e-mails
from a given day in a single mailing. Sounds like
your primary concern is browsing the archives. If
you're on a dial-up, I'd suggest disabling "Load
Images" in your browser anyway, which should make it
easier...besides, we don't have that many messages
archived yet anyway. :)
Anyway, thanks for joining the list. I'm interested
in hearing your perspective on various issues
regarding NEAT, and I hope technical difficulties
don't make things unmanageable for you.
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
Hi Derek -
>So your network had 9 inputs? And an output for each
>type of shape to be identified?
No, there were five inputs, which formed the viewing window arranged like
this:-
.#.
###
.#.
(where # is an input cell, and . is just a spacer.)
There were eight outputs:-
1. If >.5, network wants to move one square left
2. If >.5, network wants to move one square up
3. If >.5, network wants to move one square right
4. If >.5, network wants to move one square down
5. If >.5, network has decided it knows which shape it is seeing
The remaining three outputs are only used if output 5 is high. If it is, the
maximum one is taken to be the decision of the network:-
6. Shape is circle.
7. Shape is diamond.
8. Shape is square.
Essentially the network is run repeatedly, moving the viewing window around
as requested, until output 5 goes high. In practice, if it took longer than
200 loops, that was taken to be a failure.
>I was wondering if you did a comparison with networks
>that looked at the entire grid at once (i.e. with 64
>inputs).
No, as the point was to see whether the network could evolve to solve this
problem at all, and what strategies it would use to nagivate over the shape
from its random starting position.
>>However, this
>>produced a form of network memory which Kenneth
>>seemed quite interested in,
>>where long strings of nodes would form a kind of
>>short-term memory rather
>>than loops.
>I don't quite understand what you mean here. Can you
>explain?
Well, memory between timesteps was a required feature of this problem.
Obviously, if the network couldn't remember anything about what it had seen
before, it was unlikely to do very well. NEAT, as you know, detects
recurrence - neurons connected back to themselves - and this is usually the
way memory seems to evolve, as the same information will get looped back
time after time. However, my experiments also showed long chains of neurons,
which weren't part of loops, which seemed to be performing a similar
function of keeping information in the network for a future time step. Now,
I wouldn't have thought this was necessarily unusual, but Ken picked up on
it.
--Darren
> >
> > This Yahoo forum is proving a little tedious to browse, would you
> > guys be interested in me setting up a dedicated NEAT forum at my
> > website (ai-junkie.com)?
>
> I'd prefer if it stayed on yahoo groups, since it works as a
mailinglist,
> the yahoo interface is really no problem.
>
Well, it might not be a problem for you, but the internet connections
here in India can be extremely slow. (It takes about a minute for the
yahoo page to load. Two minutes if there's an advert!)
No worries though, it was only a suggestion.
> I'm Mat Buckland, author of 'AI Techniques for Game Programming',
> which has a chapter describing NEAT.
Hi there, Mat
> It took me a while to get here -- I've just moved to India and my
> internet connection is poor -- but I'm looking forward to some
> interesting discussions.
>
> This Yahoo forum is proving a little tedious to browse, would you
> guys be interested in me setting up a dedicated NEAT forum at my
> website (ai-junkie.com)?
I'd prefer if it stayed on yahoo groups, since it works as a mailinglist,
the yahoo interface is really no problem.
cheers,
m
I'm Mat Buckland, author of 'AI Techniques for Game Programming',
which has a chapter describing NEAT.
It took me a while to get here -- I've just moved to India and my
internet connection is poor -- but I'm looking forward to some
interesting discussions.
This Yahoo forum is proving a little tedious to browse, would you
guys be interested in me setting up a dedicated NEAT forum at my
website (ai-junkie.com)?
> I was considering a mutation on a node that would
> replace it with a subnet that has the same number
> incoming and outgoing connections. For example, if
> there were a node with two incoming connections and
> one out going connections, it could be mutated and
> replaced with a subnet with two incoming connections
> and one outgoing connections. Subnets could be kept
> in pools, just as in your implementation of modular
> NEAT, starting simply, with standard NEAT mutation
> operators acting on them each generation.
Definately an indirect encoding scheme would be better suited for this.
I thought about a system like you are proposing. The problem for me was
that I still couldn't find a good way to preserve the idea of "incremental
complexification." For example, what is the first complexification you
make on an existing neuron? You want to make the network slightly more
complex topologically, but how do you do that acting on a single neuron?
NEAT doesn't really work on the level of neurons like SANE, IIRC it works
more on the level of connections (split a connection, add a connection,
etc). So I chose that as my basis for mutations, to remain closer to how
NEAT functions.
> I was thinking that replacing a single node might
> reduce the impact of such a significant structural
> mutation, and it would allow such a mutation to occur
> on any node in the network.
>
> Does this sound plausible?
Its still very plausible though. If I had had more time (or was pursuing
a graduate degree instead of undergradute) I definately would have spent
some time looking at this.
Ultimately though, I think Ken may be right, and developmental systems may
be the best way to go.
> Yeah...I remember thinking while I read your paper,
> "He's arguing that this could be a powerful method for
> large-scale domains, but he's testing it on very small
> ones!" :) I was wondering how it would perform with
> high input/output domains, and I'm curious to read
> your future stuff, as well as experiment with some of
> these concepts myself.
Right. That first paper definately wasn't anything I want to publish. It
was more like a "proof of concept." The idea works (more or less) so this
semester I'm going to be testing it on much larger domains.
I'll keep you posted.
--
Joseph Reisinger
joeraii@...http://www.cs.utexas.edu/users/joeraii
--- kennon@... wrote:
> I'm not sure yet what I'll
> be working on, but
> I'm hoping to be able to either use NEAT directly or
> something involving
> competitive co-evolution. This stuff is really cool
> :)
Yeah, it is. :)
I'm extremely interested in competitive coevolution as
well. I think Rosin and Belew's work is interesting:
http://citeseer.nj.nec.com/rosin96new.html
And I've read other approaches as well, though it
doesn't seem like this aspect of GAs is very well
developed. I've griped to Ken about the terminology
in this area (many researchers call individuals
competing amongst themselves for the same niche
"host/parasite" coevolution, which doesn't sound right
to my ears).
Anyway, I'm especially interested in trying different
methods of sampling opponents each generation, and the
differences between single-population and two- or
multiple-population coevolution.
What sort of stuff might you be working on?
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
--- Joseph Reisinger <joeraii@...> wrote:
> Yeah this was the original plan for modular NE. It
> turns out that
> implementing this is actually pretty difficult,
> because there is no
> standardized way to represent the larger graph of
> modules connecting to
> each other. So instead I opted to work with a
> simplified subset of
> module-chromosome bindings that would still be very
> powerful.
Yes, it is a difficult problem, but an interesting
one. Philip and I were talking about possible
representations for this type of indirect encoding on
the way home from Austin last weekend.
I was considering a mutation on a node that would
replace it with a subnet that has the same number
incoming and outgoing connections. For example, if
there were a node with two incoming connections and
one out going connections, it could be mutated and
replaced with a subnet with two incoming connections
and one outgoing connections. Subnets could be kept
in pools, just as in your implementation of modular
NEAT, starting simply, with standard NEAT mutation
operators acting on them each generation.
I was thinking that replacing a single node might
reduce the impact of such a significant structural
mutation, and it would allow such a mutation to occur
on any node in the network.
Does this sound plausible?
> It actually turns out that this kind of simplified
> binding is more useful
> (not to mention easier to search), because there few
> times when you need
> more complexity than a single hidden layer.
Yes, I can see the logic in that.
> Correct. Modules represent a complete path from a
> set of input neurons to
> a set of output neurons. There is some independent
> work by another one of
> Risto's students (Steetskamp) with SANE that
> actually show that SANE
> acting on any modular structure smaller than a
> single complete neuron is
> almost useless.
I'll take his word for it. :)
> Yes, this semester I'm going to do some theoretical
> work with it
> (incomplete-knowledge Pareto dominance in modules)
> based on some symbiotic
> composition ideas I read about (Richard Watson).
> Also I plan on applying
> it scalably large domains so I can get some real
> information about how
> feasible it a method it is.
Yeah...I remember thinking while I read your paper,
"He's arguing that this could be a powerful method for
large-scale domains, but he's testing it on very small
ones!" :) I was wondering how it would perform with
high input/output domains, and I'm curious to read
your future stuff, as well as experiment with some of
these concepts myself.
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
--- Darren Izzard <zysyshelp@...> wrote:
> >Did you attend the AI in Games Conference in Austin
> >this past weekend?
>
> That would have been a bit of a long way for me
> since I'm in the UK!
Aw, c'mon...I drove down from Dallas. ;)
> Well, there were two varieties of experiments I
> tried, although I spent some
> time fiddling with the parameters of both:-
>
> 1. A discrete grid. A shape was just a bitmap on a
> smallish grid (about 8x8)
> and the viewing window was a 3x3 + shape.
So your network had 9 inputs? And an output for each
type of shape to be identified?
I was wondering if you did a comparison with networks
that looked at the entire grid at once (i.e. with 64
inputs).
> However, this
> produced a form of network memory which Kenneth
> seemed quite interested in,
> where long strings of nodes would form a kind of
> short-term memory rather
> than loops.
I don't quite understand what you mean here. Can you
explain?
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
> Your website says this about the reusable modules:
>
> "A variable complexity building block (module) can
> have any number of hidden neurons and connections and
> can be re-used anywhere any number of times in a
> chromosome."
Yeah this was the original plan for modular NE. It turns out that
implementing this is actually pretty difficult, because there is no
standardized way to represent the larger graph of modules connecting to
each other. So instead I opted to work with a simplified subset of
module-chromosome bindings that would still be very powerful.
It actually turns out that this kind of simplified binding is more useful
(not to mention easier to search), because there few times when you need
more complexity than a single hidden layer.
> But if I understood your paper correctly, the modules
> can only connect directly to the input and output
> layers. Is that right?
Correct. Modules represent a complete path from a set of input neurons to
a set of output neurons. There is some independent work by another one of
Risto's students (Steetskamp) with SANE that actually show that SANE
acting on any modular structure smaller than a single complete neuron is
almost useless.
> I like the way the modules start minimally, just as
> NEAT itself does, and complexify throughout the run.
> This seems like the right approach.
Yeah I think minimal starting and gradual complexification are definately
some of Ken's really big innovations with NEAT. Its really obvious when
you think of it.
> Are you going to continue working with modularity in
> NEAT?
Yes, this semester I'm going to do some theoretical work with it
(incomplete-knowledge Pareto dominance in modules) based on some symbiotic
composition ideas I read about (Richard Watson). Also I plan on applying
it scalably large domains so I can get some real information about how
feasible it a method it is.
Joseph
--
Joseph Reisinger
joeraii@...http://www.cs.utexas.edu/users/joeraii
--- Joseph Reisinger <joeraii@...> wrote:
> Hi. My name is Joseph Reisinger, I'm an
> undergraduate student at UT. I'm
> working with Risto and Ken on an honors thesis; the
> topic is modularity in
> NE systems.
Hi, Joseph.
I've read your paper on modular NEAT, and it was very
interesting. Philip and I are still wrapping up a
standard implementation of NEAT in Java, but the most
interesting directions we'd like to go next are:
1) Indirect encoding
2) Variations of competitive coevolution
3) Learning during an individual's lifespan
Your website says this about the reusable modules:
"A variable complexity building block (module) can
have any number of hidden neurons and connections and
can be re-used anywhere any number of times in a
chromosome."
But if I understood your paper correctly, the modules
can only connect directly to the input and output
layers. Is that right?
I like the way the modules start minimally, just as
NEAT itself does, and complexify throughout the run.
This seems like the right approach.
Are you going to continue working with modularity in
NEAT?
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
Hi. My name is Joseph Reisinger, I'm an undergraduate student at UT. I'm
working with Risto and Ken on an honors thesis; the topic is modularity in
NE systems. I've designed a system that sort of combines the properties of
both SANE and NEAT (i.e. networks built up out of substructures +
topological complexification). The goal is basically to explore how NE can
be applied to domains with very large input spaces efficiently.
The hypothesis is that networks built up out of reusable subnetworks
(modules) will be much easier to perform NE on because fundamental
substructures will not have to be re-evolved every time they appear in
the parent network.
I've written a litle more on the subject here:
http://www.cs.utexas.edu/users/joeraii/research.html
Joe
--
Joseph Reisinger
joeraii@...http://www.cs.utexas.edu/users/joeraii
Hiya!
My name is Mattias Fagerlund and I live in Stockholm Sweden, in case
you're intrested. I developed a NEAT implementation for Borland Delphi. I
haven't made it widely available yet, though it's open source, and I send
it out to anyone who wants a copy.
I did a lot of work with NEAT in the end of 2002, my NEAT implementation
doesn't perform as well as Ken's, though. I havent been able to track
down why. On XOR, we're very comparable, but on pole balancing, I
frequently fail to find a solution, something that never happened (as I
recall) with Kens implementation.
I've done some other stuff in evolution;
* I evolved some movement routines for simulated physical objects (GP and
NEAT). Jumping creatures, slitherling creatures and crawling creatures.
For demos and images, see http://www.cambrianlabs.com/Mattias/Evolved/ .
* I evolved images and films using GP. See
http://www.cambrianlabs.com/Mattias/EvolvedFilms/
* I evolved trading strategies (GP and NEAT) for the stockmarket. I'd
like to get back to evolving trading strategies using NEAT and GP, so I
can compare them, but that will have to wait.
* I evolved behaviours for agents competing for resources using GP. They
were quite agressive, some would even eat their children. Not a good long
term strategy, but in short term, it can work out fine. If there's a flaw
in your environment, evolution will find it and exploit it remorselessly.
Like the child eaters; when a creature was ready to pro-create, it would
pick a second parent for it's child using a set of (evolved) attractions.
One attraction might be "has had a lot of children". This is (can be) a
good attraction, because having lots of children will mean that your
offspring is also likely to have lots of children. What isn't attractive
is "has had a lot of children... and then ate them!"! The entire
population was quicky upsurped (sp?) by child eaters, 'cause they were so
darn sexy, and then died. It was horrible to watch ;)
It could easily have been done using NEAT instead, but that'll have to
wait for a later day.
With my NEAT implementation, I've also added a couple of demos, like
corridor following and "symbolic regression". I'd like to make my NEAT
work freely available, but I'm kinda short on time right now.
As for making sourceforge projects, perhaps I should create a project for
DelphiNEAT and include my evolved creatures and my "little playground of
horrid creatures" - what do you reckon?
cheers,
m
>>AI as applied to
>>game-playing, both board and arcade, and
>>puzzle-solving.
>Cool. Are you working on this in your spare time, or
>is this what you do for a living?
I have done some game AI work in the for-cash sense - for instance, earlier
this year I had to write an agent to play any level of a GBA shoot-em-up
automatically, including solving the puzzles required to open doors - but
nothing with NEAT so far.
>Did you attend the AI in Games Conference in Austin
>this past weekend?
That would have been a bit of a long way for me since I'm in the UK!
>And are there any specific game domains you're
>particularly interested in?
Nothing specific. Each game presents its own challenges and often I think,
"this would be an interesting task for a network to learn."
>>The NEAT experiments mostly concerned recognising
>>shapes.
>You say your results were interesting...what sort of
>results did you get?
Well, there were two varieties of experiments I tried, although I spent some
time fiddling with the parameters of both:-
1. A discrete grid. A shape was just a bitmap on a smallish grid (about 8x8)
and the viewing window was a 3x3 + shape. The network could move left,
right, up and down one square at a time. It had up to 100 time steps (ie.
loops) to decide what the shape was. This didn't have much difficulty
evolving, even when I inadvertently turned off recurrence! However, this
produced a form of network memory which Kenneth seemed quite interested in,
where long strings of nodes would form a kind of short-term memory rather
than loops.
2. A continuous space. A shape was defined by a function which would return
1 for inside and 0 for outside for any given real coordinate, and the
viewing window (still a 3x3 +) would see an anti-aliased view of the shape.
That is to say, the shape was sampled at various points within each square
in the window and the results averaged. The network could move any distance
it wanted each step (although, curiously, the networks showed a tendency to
evolve towards moving 1.0 units at a time). Again, delay lines seemed to
show up, but although extended runs over a few days reached 90% success or
so, I never got a 100% successful network on this one.
--Darren
--- In neat@yahoogroups.com, kennon@a... wrote:
> Whats happenin' in the NEAT world these days? You graduate yet Ken?
:)
Hey Kennon, it's good to see you here. I am hoping to graduate in a
year...if I can find the right job! I'm interested to hear what
project you eventually choose in your program. It should be a great
experience.
ken
Hi, my name is Kennon Ballou. My first experience with NEAT was while I
was doing an undergraduate research course at UT and I worked with Ken on
variable mutation rates.
Next month, I'm starting graduate school at the University of Birmingham
(UK), where I'll be doing an MSc in Natural Computation
(http://www.cs.bham.ac.uk/study/postgraduate-taught/msc-nc/), which is
heavily research based. I'm not sure yet what I'll be working on, but
I'm hoping to be able to either use NEAT directly or something involving
competitive co-evolution. This stuff is really cool :)
Whats happenin' in the NEAT world these days? You graduate yet Ken? :)
Cheers,
-KB-
--- Darren Izzard <zysyshelp@...> wrote:
> Well, my name is Darren Izzard and I'm a programmer
> and multimedia designer,
> mostly working on games. I'm mostly interested in AI
> as applied to
> game-playing, both board and arcade, and
> puzzle-solving.
Cool. Are you working on this in your spare time, or
is this what you do for a living?
Did you attend the AI in Games Conference in Austin
this past weekend?
http://dmc.ic2.org/conf2003/main.php
And are there any specific game domains you're
particularly interested in?
> The NEAT experiments mostly concerned recognising
> shapes. The network could
> see a small window of a randomly-chosen shape, and
> could move the window
> around if it wanted for a few time steps. Then, it
> would signal if it had
> made a decision on what the shape was.
That's interesting. As I stated in my intro, Philip
and I are particularly interested in applying NEAT to
Go. We've discussed the idea of some sort of
view-window, or focus function, that scans the board
in chunks, decides where the priority board regions
are, and plays accordingly (as opposed to having 19x19
inputs simultaneously every turn).
You say your results were interesting...what sort of
results did you get?
Derek
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
>Who are you guys? And what's your
>interest/involvement in NEAT?
Well, my name is Darren Izzard and I'm a programmer and multimedia designer,
mostly working on games. I'm mostly interested in AI as applied to
game-playing, both board and arcade, and puzzle-solving.
I ran a few experiments with NEAT a while back (after successfully compiling
it under Windows using Cygwin), and before that, SANE. I keep meaning to do
some more with NEAT but lately I've been quite busy with work.
The NEAT experiments mostly concerned recognising shapes. The network could
see a small window of a randomly-chosen shape, and could move the window
around if it wanted for a few time steps. Then, it would signal if it had
made a decision on what the shape was. My runs with this did produce some
interesting results.
--Darren
Hello to everyone who has joined the group so far...
Just in case you're not too familiar with Yahoo
Groups, you can view the message archives and perform
other administrative functions from the main page:
http://groups.yahoo.com/group/neat/
I've posted a message describing what Philip and I are
working on, and Ken has posted a message as well.
But I'm curious who the rest of you are. :)
Who are you guys? And what's your
interest/involvement in NEAT?
Derek James
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
Hi, I'm Kenneth Stanley. I think Derek had a great idea starting this
group. I have been in contact with a lot of people who are working
with NEAT independently, and it makes sense to have a place where we
can pool our experience to help each other out. The group can also
facilitate the discussion of ideas, both for applying NEAT and
extending it. I look forward to participating!
As for introducing myself, many of you already know who I am, so I
won't go too long on the details, but for any who don't, I am
completing my Ph.D. in computer science at the University of Texas at
Austin. I am hoping to become a professor after graduation so that I
can continue research into evolving increasingly complex neural
networks, as well as other structures. I don't know where I will be a
professor- it's not an easy job market! In the future, I hope to lead
research towards the next generation of neuroevolution systems
building on NEAT.
ken
Welcome to the NEAT Users Yahoo Group.
Presumably you're here either because you use NEAT or
are interested in using NEAT (or you created NEAT).
You already know the purpose of this group and list,
but I thought I'd introduce myself and Philip Tucker,
and give you an idea of how we got interested in NEAT,
what we're doing right now, and where we're going.
My name is Derek James, and my background is not in
either Artificial Intelligence or Computer Science.
It's in education. I graduated from U.T. Austin in
1993 with a B.A. in English and teacher certification
in Math, Science, and English. But I've always
considered AI an avocation, and I've read extensively
on the subject since I was in high school. Philip and
I met at Baylor University in 1989, where he was
working on an undergraduate in CS. He went on to get
a Master's, also in CS.
We've been friends since then, and had discussions
regarding AI, but never really took any steps to
actively develop AI. That changed last year. Philip
enrolled in an introductory neural network class here
at the University of Texas at Dallas. I audited the
class. We met two other guys, one who was nearly
finished with a Master's in Cognitive Science from
UTD, the other a developer who was working on AI in
his spare time. The four of us started a bi-weekly
discussion group centered around using neural networks
and genetic algorithms.
Like many AI researchers, our group discussed a
variety of domains, but we were primarily interested
in the domain of classic board games, specifically Go.
Around the end of 2002, I began to read published work
in the field. At one of the group member's urging, I
read Fogel's book, Blondie24, regarding evolving ANNs
with fixed topologies as part of a Checkers-playing
algorithm.
I read about the work done at UT Austin over the past
decade or so. I read first about SANE, then found the
paper on NEAT. It was exactly the sort of approach I
was looking for. I showed it to Philip, and we
decided that it was a technique we would be interested
in experimenting with.
We looked at existing implementations of NEAT, but for
a variety of reasons we decided to implement our own
version. It is built around two existing open-source
packages:
JOONE (Java Object-Oriented Neural Engine)
http://www.jooneworld.com/index.html
and JGAP (Java Genetic Algorithms Package)
http://jgap.sourceforge.net/
There are a number of features in these packages,
especially JOONE, which we are not using in our
initial implementation, but which might be useful
later on.
We wanted to implement NEAT so that it would be easily
adapted to a distributed computing environment (we
believe that a high-input/output domain like Go will
require such an environment). We also wanted to
implement it so that it would run through a browser
interface. This version will also persist a number of
graphical diagnostics, including graphical
representations of the evolved neural nets,
evolutionary progress, etc., in the XML-based
graphical language, SVG.
As of this writing, the core NEAT engine is
implemented and working, though we have not
incorporated speciation yet. We have tested it so
far, without speciation, on XOR, and gotten it to
converge in multiple trials. It will probably be a
few more months before we have a stable,
fully-implemented version of NEAT, though.
At that time, we plan to initiate an open-source
project on SourceForge and make the source freely
available to anyone who is interested. We would also
like to have two or three demo tasks available for our
implementation before we release it.
As far as our own research path, we would like to
explore competitive coevolutionary techniques,
specifically applied to game domains. Our first game
domain will be Tic-Tac-Toe, and we hope to scale up to
GoMoku (5-in-a-row on a 13x13 board), and then Go. We
also hope to explore some form of indirect encoding to
exploit the inherent symmetry in such game domains.
So that's who we are, where we're at right now, and
where we hope to be in the near future. If you join
the group, please consider introducing yourself
(though you don't have to be as verbose as me) and
letting the group know how you're either using NEAT or
would like to.
Thanks for joining, and we'll see you around...
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com