Seeking knowledge 

I am glad to have found this newsgroup, however, there is still much about
Framsticks that I still don't understand. Is there no in-depth users
manual? The "basics" are great, but where do I go to learn more?

I have come to the understanding that the only way to learn more is by
examining the included datafiles or asking questions here. Unfortunately,
"...[Delay,2:2.025][Energy]..." doesn't explain much more than the fact that
there are many more options available than those listed in the
"documentation" that comes with Framsticks.

Is there any source I can access, or should I just start posting my
questions and hoping for answers?

My first question has to do with neurons (listed in
Parameters->Genetics->Neurons to add). I only have a basic understanding of
less than half of those listed and would like to know enough about all of
them to effectively use them.

I would also like to know more about the following Parameters:
Delete genotypes: Inv-proportional fitness - what does this do?
Selection rule: Fitness-proportional (roulette) - what does this do?
Selection rule: Tournament... - what does this do? What's the difference
between the different numbers?

Thank you - if for no other reason than taking the time to read my post.

(Does Framsticks need help creating a users manual?)

Forums: 
Maciej Komosinski's picture

> I am glad to have found this newsgroup, however, there is still much about
> Framsticks that I still don't understand. Is there no in-depth users
> manual? The "basics" are great, but where do I go to learn more?

We do our best to document the Framsticks system.
However, in the documentation, we often do not explain
various techniques (based on evolutionary computation
methods, neural networks, etc.). Thus reading some
other references may be very helpful.

The good example is "parameters reference".
We assume that for each parameter, "hints" (tooltips)
in the program are first read by users, and if
there are still questions, the HTML reference is read.

But it only explains in short the meaning of parameters,
not how individual techniques work. Currently, Framsticks
doc will not teach in details how neurons like Nu
work, it may only encourage to read other resources or
perform your own experiments with these.

I am always making efforts to provide the best
documentation, and spend much time doing so.
I have just seen that some neurons miss descriptions,
and will fix it.

> Is there any source I can access, or should I just start posting my
> questions and hoping for answers?

Please ask your questions here.

> (Does Framsticks need help creating a users manual?)

If users decide that some other form of reference
resources is more efficient, then I think it is
a great idea! Any comments are welcome.

MacKo

> We do our best to document the Framsticks system.
> However, in the documentation, we often do not explain
> various techniques (based on evolutionary computation
> methods, neural networks, etc.). Thus reading some
> other references may be very helpful.

Definatley makes sense - otherwise you would end up writing several books.
I do apologize if I made it sound like I wanted tutoring on NN development
... that was not my intention.

> The good example is "parameters reference".
> We assume that for each parameter, "hints" (tooltips)
> in the program are first read by users, and if
> there are still questions, the HTML reference is read.
>
> But it only explains in short the meaning of parameters,
> not how individual techniques work. Currently, Framsticks
> doc will not teach in details how neurons like Nu
> work, it may only encourage to read other resources or
> perform your own experiments with these.

This was exactly the route I took. I never did find the correct syntax for
the ChSel command listed anywhere. After about 6 hours of research and
testing though, I found that [ChSel, ch:1, -1:1] would return channel "1" if
the previous neuron was a [Ch] neuron. This didn't seem to work though:
[*:1][*:2][Ch, -2:1, -1:1][-1:1][ChSel, ch1, -1:1].

I'm left with the conclusion that you can't pass channeled information
through regular neurons. I have no idea if this is the case or not, but
have already wasted 6 hours and really don't feel like wasting more.

Perhaps you could direct me to those "Other Resources" that will tell me how
to use Framsticks or how the various Framsticks neurons need to be typed in?
I figured the Framsticks documentation would be the place to look, but
evidently I'm wrong.

> I am always making efforts to provide the best
> documentation, and spend much time doing so.
> I have just seen that some neurons miss descriptions,
> and will fix it.

Perhaps the ChSel neuron is one of those missing a description? It's not
listed as "experimental". How can we get the corrected information? Will
you post it here when you are done? Offer it on the website? Release it in
the next version?

> > Is there any source I can access, or should I just start posting my
> > questions and hoping for answers?
>
> Please ask your questions here.
>
> > (Does Framsticks need help creating a users manual?)
>
> If users decide that some other form of reference
> resources is more efficient, then I think it is
> a great idea! Any comments are welcome.

Comment: Even a simple list of available "commands" would be a wonderful
improvement. Not just the name though. "Channel selector (ChSel)" would be
more useful if it read "Channel selector: [ChSel, ch:,
:]" - and still wouldn't require you to teach
us "individual techniques." An added bonus (for this example) would be,
"Only works in conjunction with other 'Ch' neurons, forget about sending 10
inputs though your NN functions." This would have saved me a day of
frustration, and would probably encourage new users to register more often.

Maciej Komosinski's picture

> This was exactly the route I took. I never did find the correct
> syntax for the ChSel command listed anywhere. After about 6 hours of
> research and testing though, I found that [ChSel, ch:1, -1:1] would
> return channel "1" if the previous neuron was a [Ch] neuron. This
> didn't seem to work though: [*:1][*:2][Ch, -2:1, -1:1][-1:1][ChSel,
> ch1, -1:1].

Channel neurons are very rarely used, and actually
should not be needed. They let you put multiple
signals into a single neural connection. This is an extra
feature, currently only useful for the Fuzzy neuron,
which provides multiple-channel output. But in a
standard approach, a neuron cannot provide many
output values.

The Channelize neuron can be used to produce a multi-channel
connection, and the Channel selector is used to select a
single signal from multiple-channel neural connection.

What is the application of multiple-channel connections
in your case?

> Perhaps you could direct me to those "Other Resources" that will tell
> me how to use Framsticks or how the various Framsticks neurons need
> to be typed in? I figured the Framsticks documentation would be the
> place to look, but evidently I'm wrong.

The "hints" provide you with the list of properties
(parameters) for each neuron, and their description.
The way these properties are typed depends on a genetic
format used, so you have to read about f0 or f1 format.

Please ask more questions if something is not clear.

> Comment: Even a simple list of available "commands" would be a
> wonderful improvement. Not just the name though. "Channel selector
> (ChSel)" would be more useful if it read "Channel selector: [ChSel,
> ch:, :]" - and still
> wouldn't require you to teach us "individual techniques."

This information includes two things (as I wrote above):

- Neuron parameters, their names, ranges, and meaning
(available in hints, in FramScript docs, and in the class
browser)
- how to set their values in genotypes - described in
genetic formats documentation (f0, f1, and a limited
number of neurons in f4).
http://www.framsticks.com/a/al_genotype.html
http://www.framsticks.com/a/al_geno_f1.html
http://www.framsticks.com/a/al_geno_f0.html

MacKo

"Maciej Komosinski" wrote in message
news:3EDCB820.6060102@cs.put.poznan.pl...
> Channel neurons are very rarely used, and actually
> should not be needed. They let you put multiple
> signals into a single neural connection. This is an extra
> feature, currently only useful for the Fuzzy neuron,

This would have been good to know - perhaps lable it "experimental" if it is
only useful in conjunction with other "experimental" neurons? I haven't
done any research into the experimental options because I figure they
wouldnt' be supported (and perhaps not work). I am quite interested in the
Fuzzy neuron, but will wait until it is no longer experimental.

> What is the application of multiple-channel connections
> in your case?

I'm still trying to learn the capabilities of Framsticks and don't have a
specific application yet. I was hoping to run data from multiple legs of a
critter into a channel, run the channels through whatever modifications were
needed, then pull each channel out for the appropriate leg. On an 8 legged
creature, this could eliminate 7 seperate banks of neurons, and would ensure
uniform modification of each legs signals.

Another possibility would be to "store" several values and have some event
determine which value would be used.

I did discover something interesting about ChMux though. The documentation
says to run the channels in the first input, and a single channel would be
output based on the value of the second signal. I couldn't get this to work
though. Instead, I created a 2-channel signal (channel 1=0, channel
2=variable input) and ran that into ChMux as the SECOND input. The output
is the variable input, scaled by the first input.

I couldn't get ChMux to work at all under f1 ... had to start learning f0.
Here's a psudo-code example, in case my description was too confusing:

n:d=*
n:d=Ch
n:d=ChMux
n:d=sin
n: <-input value of .75, .5, .25
n: -> returns sin wave at 3/4, 1/2, 1/4 amplitude
c:1, 0, 0
c:1, 3
c:2, 4
c:2, 1
c:5, 2

Not positive my terminology is correct, but I think you get the picture.
I've used this to have a muscle move only if the corresponding leg was
touching ground, and to move a limb slowly/quickly based on it's G
orientation. Real handy.

Tell me, is this a bug or a feature? Is there another way to "divide" or
multiply in Framsticks neurons?

Maciej Komosinski's picture

>>Channel neurons are very rarely used, and actually
>>should not be needed. They let you put multiple
>>signals into a single neural connection. This is an extra
>>feature, currently only useful for the Fuzzy neuron,
>
>
> This would have been good to know - perhaps lable it "experimental" if it is
> only useful in conjunction with other "experimental" neurons?

No, it is not only useful with experimental neurons.

Channels work well, and are not experimental. They are simply
not intended to use with all neurons. They are (almost) never
needed.

A single connection between two neurons is expected to
contain a SINGLE signal. Using channels may only be useful
if there is no other way than designing a neuron with
many outputs. It is a rare situation.

> wouldnt' be supported (and perhaps not work). I am quite interested in the
> Fuzzy neuron, but will wait until it is no longer experimental.

It works well, but lacks documentation, and thus is
labeled experimental.

> I'm still trying to learn the capabilities of Framsticks and don't have a
> specific application yet. I was hoping to run data from multiple legs of a
> critter into a channel, run the channels through whatever modifications were
> needed, then pull each channel out for the appropriate leg. On an 8 legged
> creature, this could eliminate 7 seperate banks of neurons, and would ensure
> uniform modification of each legs signals.

This would require a modification of some processing neurons,
so that they support channel information. I think whether
it is really advantageous to have a single neuron which
processes in the same way a number of signals. You have
to put the signals into channels first, and then
have many neurons which select individual channels
from the multichannel output...

MacKo

"Yendor" wrote in message
news:bbb7v1$m39$1@cancer.cs.put.poznan.pl...
> I am glad to have found this newsgroup, however, there is still much about
> Framsticks that I still don't understand. Is there no in-depth users
> manual? The "basics" are great, but where do I go to learn more?
>
> I have come to the understanding that the only way to learn more is by
> examining the included datafiles or asking questions here. Unfortunately,
> "...[Delay,2:2.025][Energy]..." doesn't explain much more than the fact
that
> there are many more options available than those listed in the
> "documentation" that comes with Framsticks.
>
> Is there any source I can access, or should I just start posting my
> questions and hoping for answers?
>
> My first question has to do with neurons (listed in
> Parameters->Genetics->Neurons to add). I only have a basic understanding
of
> less than half of those listed and would like to know enough about all of
> them to effectively use them.
>
> I would also like to know more about the following Parameters:
> Delete genotypes: Inv-proportional fitness - what does this do?
> Selection rule: Fitness-proportional (roulette) - what does this do?
> Selection rule: Tournament... - what does this do? What's the difference
> between the different numbers?
>
> Thank you - if for no other reason than taking the time to read my post.
>
> (Does Framsticks need help creating a users manual?)
>
>
Yes I agree the level of documentation is not suffcient for new users. The
information available is disorganised and not easy to find. I have some idea
on a few of your questions. Not really aproper understanding but maybe it
wil help you get started.

Inv-prortional fitness deletion means porbability of a creature in the
Geneotype list being delited is proportioanl to its lack of fitness. Lower
it fitness score higher the probability of it being deleted.

Fitness proportional slection is the probablity of a creature being slected
from the genotype list and being placed in the population. Creatures with
higher fitness are more likely to be slected.

Tournament selection is when a randomly selected individual of each genotype
is placed in a basket. The number of genotypes to select from is user
defined. The creatures in the basket are evaluated in some way (as yet I am
not certain on what criteria) and the winner is selected for placement in
the population.

Hope this helps you until someone with more experience can provide more
information . Good luck!

Maciej Komosinski's picture

> Fitness proportional slection is the probablity of a creature being slected
> from the genotype list and being placed in the population. Creatures with
> higher fitness are more likely to be slected.

It is just a standard, common "roulette" selection.

> Tournament selection is when a randomly selected individual of each genotype
> is placed in a basket. The number of genotypes to select from is user
> defined. The creatures in the basket are evaluated in some way (as yet I am
> not certain on what criteria) and the winner is selected for placement in
> the population.

Tournament selection is just picking N genotypes at random and
choosing the one with the highest fitness for simulation.

MacKo

"Hank" wrote:

> Inv-prortional fitness deletion means porbability of a creature in the
> Geneotype list being delited is proportioanl to its lack of fitness. Lower
> it fitness score higher the probability of it being deleted.

So "Inv-proportional" is the same as "Only the worst", but fuzzy? I get the
feeling that it's a little more complicated than that, but at least it makes
sense.

> Tournament selection is when a randomly selected individual of each
genotype
> is placed in a basket. The number of genotypes to select from is user
> defined. The creatures in the basket are evaluated in some way (as yet I
am
> not certain on what criteria) and the winner is selected for placement in
> the population.

Would it be safe to assume that the evaluation would produce the individual
(in the basket) with the best fitness? The results would be "Only the best"
from a randomly limited gene pool of 2-5?

I definately appreciate your responce - and perhaps poor little "George"
will have better evolution results now :)

"Yendor" a écrit dans le message de news:
bbditi$r63$1@cancer.cs.put.poznan.pl...
> "Hank" wrote:
>
> > Inv-prortional fitness deletion means porbability of a creature in the
> > Geneotype list being delited is proportioanl to its lack of fitness.
Lower
> > it fitness score higher the probability of it being deleted.
>
> So "Inv-proportional" is the same as "Only the worst", but fuzzy? I get
the
> feeling that it's a little more complicated than that, but at least it
makes
> sense.

As I understand, it is not the same. Only the worst means that worst
individual will be removed.
Inv-proportional means a roulette in which the chances to be selected are
Inv-prop. to the fitness. Hence the worst creature has more chances to get
selected, but not 100%

>
> > Tournament selection is when a randomly selected individual of each
> genotype
> > is placed in a basket. The number of genotypes to select from is user
> > defined. The creatures in the basket are evaluated in some way (as yet I
> am
> > not certain on what criteria) and the winner is selected for placement
in
> > the population.
>
> Would it be safe to assume that the evaluation would produce the
individual
> (in the basket) with the best fitness? The results would be "Only the
best"
> from a randomly limited gene pool of 2-5?

I think you are right.

>
> I definately appreciate your responce - and perhaps poor little "George"
> will have better evolution results now :)
>
>

Framsticks really needs a in-depth user manual!!!

Samuel

Maciej Komosinski's picture

>> So "Inv-proportional" is the same as "Only the worst", but fuzzy?
>> I get the
>> feeling that it's a little more complicated than that, but at least
>> it makes
>> sense.
>
> As I understand, it is not the same. Only the worst means that worst
> individual will be removed. Inv-proportional means a roulette in
> which the chances to be selected are Inv-prop. to the fitness. Hence
> the worst creature has more chances to get selected, but not 100%.

Exactly. But I think I can see that at

http://www.framsticks.com/a/doc_expdef-standard.html#par

-

So, in evolution, there are two forces: positive selection
(which genotypes should be reproduced) and the negative one
(which genotypes should be removed if the gene pool is full).

MacKo