AI

(karrrlo)'s icon

Hi all ,
i am starting to look into AI and would like to know if someone could point me out some tutorials/resources to look at.

also to what extent can AI b implemented into Max ? what would b a simple way to start ( might b a stupid question, forgive me if it is the case ...) ?

any tips, recommandations, litterature would be welcome ?
i am aware of a few things like Michael Mateas's work in the domain, a little bit but not extensively about neural networks.

i am lookig for some directions/options from people who know certainly more then i do about the subject.
merci.

vl_artcode's icon

Hello Karrrlo,
you can take a look at SOM approach, the Kohonen algorythm. I ve worked with that before and I ve found it a nice introduction to AI in max. You can download the objects from neuromuse.org and start experimenting. You need also jitter to make it work. Since AI is based on maths and functions, max can follow, not sure about the limits though.
Neuromax

----- Original Message ----
From: karl-otto von oertzen
To: maxmsp@cycling74.com
Sent: Thursday, October 12, 2006 5:55:26 AM
Subject: [maxmsp] AI

Hi all ,
i am starting to look into AI and would like to know if someone could point me out some tutorials/resources to look at.

also to what extent can AI b implemented into Max ? what would b a simple way to start ( might b a stupid question, forgive me if it is the case ...) ?

any tips, recommandations, litterature would be welcome ?
i am aware of a few things like Michael Mateas's work in the domain, a little bit but not extensively about neural networks.

i am lookig for some directions/options from people who know certainly more then i do about the subject.
merci.
--
karrrlo
www.marswalkers.org
www.fleeingbirds.org
_______________________________________________
maxmsp mailing list
maxmsp@cycling74.com
https://cycling74.com/mailman/listinfo/maxmsp

(karrrlo)'s icon

thanks a lot , i will sart checking this out.
have a good day.
k

Quote: vl_artcode wrote on Thu, 12 October 2006 05:14
----------------------------------------------------
> Hello Karrrlo,
> you can take a look at SOM approach, the Kohonen algorythm. I ve worked with that before and I ve found it a nice introduction to AI in max. You can download the objects from neuromuse.org and start experimenting. You need also jitter to make it work. Since AI is based on maths and functions, max can follow, not sure about the limits though.
> Neuromax
>
>

Jean-Francois Charles's icon
Olivier Pasquet's icon

If you are interested, you can find a usable mlp external (OSX) I
have almost finished :
http://download.yousendit.com/96FF9B132204F3C9
It is a debug version. But you can have a look. Time delayed nn and
som coming soon. ;)

You can also have a look at rezumai mxj external, an automatic
natural language summarizer and text "explainer". Also useful for
doc, pdf etc... parsing.
http://download.yousendit.com/EF5F8505044DD542

best,

o0O.

(karrrlo)'s icon

merci Olivier et Jean Francois.

what i am trying to research , to be more explicit about my project , is to find a way the computer learns about the user's habits on the manipulation of a given interface.
in my case it is a musical interface where the user can manipulate a number of sliders and UIs affecting the sound in various manners.
what i want to do is learn about the users choices on a given time, so i can know what parameters the user plaid with, how many times he/she plaid with this or that slider, what values she/he choose etc... so conclusions can b drawn out of it and then "force" the user to change his/her habits by changing the parameters she/he likes to play with, obliging the user to reconsider his/her choices.
the goal is to create a tension between taste driven choices and computer driven responses to these choices.
on a broader scale this could be also imagined on a nework of users playing with the same interface, jamming together.
their habits will influence one another of course , but an AI system would analyse , learn about the users choices and play with them , leading the "jam" in unpredictable moments where players are animated by a constant desire or necessity to readapt to the knew situations...

i guess it is a project for a Phd thesis in some university, but right now i would like to explore the options, and the faisability of the project given my humble level of programming and my "courage" to dive into these waters ;)

Kevin Cox's icon

I don't think you need AI for this at all. Statistics should do just fine. I'm just beginning to use a som (self-organizing map, aka kohonen map) for a project of mine, and I can't see how it would help you.

You just need a data structure that keeps track of what somebody is doing, and when. Make a list of all your dependent variables (do you want to know whether they touched CC66 during the first or second movement?) and go from there.

I could be wrong, though...

k
jibberia.com

arne's icon

From what you describe, this seems very possible within Max.

A few caveats - the main data object in Max, coll, is problematic. It
is undependable in its read and access times, particularly using
large amounts of data (which AI is prone to do). I would investigate
java for more robust data objects.

The other point, which cannot be made too strongly, is that complex
programs require good structured programming habits. The strength of
Max lies in its ability to get up and go very quickly, but, at the
same time, create code that is very un-modularized. The entire send/
receive paradigm, while wonderful to use when first starting out, is
a potential for quagmire (I use values instead to store data, and
grab it when I need it rather than sending it all over the place).

Several discussions in the forum have focused upon such "good
programming" issues.

On Oct 12, 2006, at 2:16 PM, karl-otto von oertzen wrote:

> i guess it is a project for a Phd thesis in some university, but
> right now i would like to explore the options, and the faisability
> of the project given my humble level of programming and my
> "courage" to dive into these waters ;)

vade's icon

This cannot be emphasized enough.

as roman would say - agree.110 %

Its easy not to do, but you'll thank yourself later. Ive saved myself
countless hours on my thesis by modularizing *everything* from the
getgo. Painful at first, but rewards itself so much later on.

v a d e //

www.vade.info
abstrakt.vade.info

On Oct 13, 2006, at 12:52 AM, Arne Eigenfeldt wrote:

>
> The other point, which cannot be made too strongly, is that complex
> programs require good structured programming habits. The strength
> of Max lies in its ability to get up and go very quickly, but, at
> the same time, create code that is very un-modularized. The entire
> send/receive paradigm, while wonderful to use when first starting
> out, is a potential for quagmire (I use values instead to store
> data, and grab it when I need it rather than sending it all over
> the place).
>

(karrrlo)'s icon

Hi Kevin , thanks for your answer.
i have been thinking about statistics, but would i fall in an "if then " model that is not dynamic ? conditions would be set but might not evolve.
although it is a good starting point.
i also dont know if the SOM model , from what i understand from it is the best, as it is based on "Best Matching Units"which train themselves to move towards a given input. and it seems to be based on a "competetive" model , which i am ideologically not interested in .
i am more keen to look for a "reactive" model ( it is basically the debate between GOFAI and AI interactionnism...).

i started lloking at the jit.robosom objects,kindly suggested by vl_artcode.
certainly an impressive work , ill try to play with but i am not sure it is will suit my needs. and maybe it is not AI i necessarely need as you say ;)

Quote: Kevin Cox wrote on Thu, 12 October 2006 20:23
----------------------------------------------------
> I don't think you need AI for this at all. Statistics should do just fine. I'm just beginning to use a som (self-organizing map, aka kohonen map) for a project of mine, and I can't see how it would help you.
>
> You just need a data structure that keeps track of what somebody is doing, and when. Make a list of all your dependent variables (do you want to know whether they touched CC66 during the first or second movement?) and go from there.
>
> I could be wrong, though...
>
>
> k
> jibberia.com
----------------------------------------------------

(karrrlo)'s icon

i was thinking about exploring the pattrstorage paradigm for this purpose.
storing in matrices seems very powerfull as well and very usefull for comparing/generating patterns .
values can be stored / recalled/ manipulated very easily in jitter and a pool of matrices very easily created.

in my case i am thinking about taking "snapshots" of the user's activity , comparing these snapshots, drawing conclusions from them. where i am stuck , because i dont have enough knowledge on AI, is how to react dynamically in accordance to the results of the statistics + an AI has to constantly update itself, as the environment where it is evolving changes constantly through time .... that might be the difficult task as the amount of data/statistics will not stop growing.

Quote: arne wrote on Thu, 12 October 2006 21:52
----------------------------------------------------
> From what you describe, this seems very possible within Max.
>
> A few caveats - the main data object in Max, coll, is problematic. It
> is undependable in its read and access times, particularly using
> large amounts of data (which AI is prone to do). I would investigate
> java for more robust data objects.
>
> The other point, which cannot be made too strongly, is that complex
> programs require good structured programming habits. The strength of
> Max lies in its ability to get up and go very quickly, but, at the
> same time, create code that is very un-modularized. The entire send/
> receive paradigm, while wonderful to use when first starting out, is
> a potential for quagmire (I use values instead to store data, and
> grab it when I need it rather than sending it all over the place).
>
> Several discussions in the forum have focused upon such "good
> programming" issues.
>
> On Oct 12, 2006, at 2:16 PM, karl-otto von oertzen wrote:
>
> > i guess it is a project for a Phd thesis in some university, but
> > right now i would like to explore the options, and the faisability
> > of the project given my humble level of programming and my
> > "courage" to dive into these waters ;)
>
>
----------------------------------------------------

arne's icon

On Oct 12, 2006, at 11:11 PM, karl-otto von oertzen wrote:

> storing in matrices seems very powerfull as well and very usefull
> for comparing/generating patterns .
> values can be stored / recalled/ manipulated very easily in jitter
> and a pool of matrices very easily created.

Using matrices would certainly solve the handling of large amounts of
data.

> in my case i am thinking about taking "snapshots" of the user's
> activity , comparing these snapshots, drawing conclusions from them.

I have found Peter Elsea's Lobjects, and their fuzzy applications,
invaluable in discovering new (and musically useful) ways of
evaluating data. Not coming from a computer science background, I
found his tutorial is worth reading several times.

(karrrlo)'s icon

>
> I have found Peter Elsea's Lobjects, and their fuzzy applications,
> invaluable in discovering new (and musically useful) ways of
> evaluating data. Not coming from a computer science background, I
> found his tutorial is worth reading several times.
>

200% agreed ;)

tommy's icon

Kevin, probably he would like to use the features of SOM to compare
and filter
the habits' data stored.

I've been tracking sensor parameters recording controllers movements
into buffers~
and then filtering this data out. Then I discorvered that maybe SOM
could be useful to recognize something in common or whatever between
lot of data of the same kind.
Isn'it?

Im not sure if this can be helpful
but a friend of mine made some objects you can find here

www.icarus.nu

under (software menu)

where he explores something similar:
he creates rythms (bangs) exploring pattern similarity into sound input

im not good into these things but im always fascinatited by...
have a look

Il giorno 13/ott/06, alle ore 06:52, Arne Eigenfeldt ha scritto:

> From what you describe, this seems very possible within Max.
>
> A few caveats - the main data object in Max, coll, is problematic.
> It is undependable in its read and access times, particularly using
> large amounts of data (which AI is prone to do). I would
> investigate java for more robust data objects.
>
> The other point, which cannot be made too strongly, is that complex
> programs require good structured programming habits. The strength
> of Max lies in its ability to get up and go very quickly, but, at
> the same time, create code that is very un-modularized. The entire
> send/receive paradigm, while wonderful to use when first starting
> out, is a potential for quagmire (I use values instead to store
> data, and grab it when I need it rather than sending it all over
> the place).
>
> Several discussions in the forum have focused upon such "good
> programming" issues.
>
> On Oct 12, 2006, at 2:16 PM, karl-otto von oertzen wrote:
>
>> i guess it is a project for a Phd thesis in some university, but
>> right now i would like to explore the options, and the faisability
>> of the project given my humble level of programming and my
>> "courage" to dive into these waters ;)
>
>

Brad Garton's icon

Hey everyone --

I hate to keep flogging my own objects, so I'll be sure to mention a few
others :-)

For those looking for more structured programming capabilities (i.e.
something beyond connecting the little boxes with lines), there are a
number of good options out there. We've done a lot of neural-net
models, GA simulations, chaotic attractor and cellular automata stuff in
our classes using various combinations of these objects:

[mxj] -- it's java. It comes with max/msp. You can use arrays, objects,
all that good stuff.

[js] -- javascript, also comes with max/msp. Make those functions, use
those arrays.

[rtcmix~] -- for basic procedural coding (C-like syntax) with arrays, etc.
So easy to use! So fun to learn!

[chuck~] -- like [rtcmix~] (functional/procedural language), but you have
to get used to saying things like "a => this.value". Perry and Ge are
expanding the data-structuring capabilities almost every day.

[maxlisp] -- it's LISP. I mean, it is actually LISP (ANSI INCITS 226-1994
(R1999)). If you are careful, it will work. I use it, but I save often.
I think I'll try to work on re-threading it over the intersession to make
it a bit more timing tolerant.

I also second Arne Eigenfeldt's endorsement of Peter Elsea's Lobjects for
a lot of work, they're really terrific. And if you're doing any
statistical work at all, you gotta check out Peter Castine's litter objects.

It kills me to see people doing all these weird gymnastics to bend [coll]
around or shove everything into jitter matrices, with all these other
possibilities. You have to think (literally) outside the little boxes!

Anthony Palomba's icon

Hey Brad, it looks like the winXP RTcmix links are not working.

Anthony

----- Original Message -----
From: Bradford Garton
Date: Friday, October 13, 2006 7:37 am
Subject: Re: [maxmsp] Re: Re: AI

> Hey everyone --
>
> I hate to keep flogging my own objects, so I'll be sure to mention
> a few
> others :-)
>
> For those looking for more structured programming capabilities
> (i.e.
> something beyond connecting the little boxes with lines), there
> are a
> number of good options out there. We've done a lot of neural-net
> models, GA simulations, chaotic attractor and cellular automata
> stuff in
> our classes using various combinations of these objects:
>
> [mxj] -- it's java. It comes with max/msp. You can use arrays,
> objects,
> all that good stuff.
>
> [js] -- javascript, also comes with max/msp. Make those
> functions, use
> those arrays.
>
> [rtcmix~] -- for basic procedural coding (C-like syntax) with
> arrays, etc.
> So easy to use! So fun to learn!
>
> [chuck~] -- like [rtcmix~] (functional/procedural language), but
> you have
> to get used to saying things like "a => this.value". Perry and Ge
> are
> expanding the data-structuring capabilities almost every day.
>
> [maxlisp] -- it's LISP. I mean, it is actually LISP (ANSI INCITS
> 226-1994
> (R1999)). If you are careful, it will work. I use it, but I save
> often.
> I think I'll try to work on re-threading it over the intersession
> to make
> it a bit more timing tolerant.
>
>
> I also second Arne Eigenfeldt's endorsement of Peter Elsea's
> Lobjects for
> a lot of work, they're really terrific. And if you're doing any
> statistical work at all, you gotta check out Peter Castine's
> litter objects.
>
> It kills me to see people doing all these weird gymnastics to bend
> [coll]
> around or shove everything into jitter matrices, with all these
> other
> possibilities. You have to think (literally) outside the little
> boxes!
> brad
> http://music.columbia.edu/~brad
>

lists@lowfrequency.or's icon

this seems relevant:

[using open source java neural nets]

cheers
evan

On Oct 13, 2006, at 1:33 PM, Bradford Garton wrote:

> Hey everyone --
>
> I hate to keep flogging my own objects, so I'll be sure to mention
> a few others :-)
>
> For those looking for more structured programming capabilities
> (i.e. something beyond connecting the little boxes with lines),
> there are a number of good options out there. We've done a lot of
> neural-net models, GA simulations, chaotic attractor and cellular
> automata stuff in our classes using various combinations of these
> objects:
>
> [mxj] -- it's java. It comes with max/msp. You can use arrays,
> objects, all that good stuff.
>
> [js] -- javascript, also comes with max/msp. Make those functions,
> use those arrays.
>
> [rtcmix~] -- for basic procedural coding (C-like syntax) with
> arrays, etc. So easy to use! So fun to learn!
>
> [chuck~] -- like [rtcmix~] (functional/procedural language), but
> you have to get used to saying things like "a => this.value".
> Perry and Ge are expanding the data-structuring capabilities almost
> every day.
>
> [maxlisp] -- it's LISP. I mean, it is actually LISP (ANSI INCITS
> 226-1994 (R1999)). If you are careful, it will work. I use it,
> but I save often. I think I'll try to work on re-threading it over
> the intersession to make it a bit more timing tolerant.
>
>
> I also second Arne Eigenfeldt's endorsement of Peter Elsea's
> Lobjects for a lot of work, they're really terrific. And if you're
> doing any statistical work at all, you gotta check out Peter
> Castine's litter objects.
>
> It kills me to see people doing all these weird gymnastics to bend
> [coll] around or shove everything into jitter matrices, with all
> these other possibilities. You have to think (literally) outside
> the little boxes!
>
> brad
> http://music.columbia.edu/~brad

(karrrlo)'s icon

thanks Tommy this looks indeed fascinating, i will spend some time checking it out .
have a good day ;)

> Im not sure if this can be helpful
> but a friend of mine made some objects you can find here
>
> www.icarus.nu
>
> under (software menu)
>
> where he explores something similar:
> he creates rythms (bangs) exploring pattern similarity into sound input
>
> im not good into these things but im always fascinatited by...
> have a look
>
>

(karrrlo)'s icon

thanks Brad,
unfortunatelly most of the objects you mentionned require knowledge in the respective programming languages they host.
which i dont know yet.
although i am planning taking classes in javascript and java . it will probably take me two years if not more before i "master" them.
right now my only options are Max and that is why i started this thread: to know what my options were.
but i promise i ll start working computer polyglottism ;)

best,
karl

Quote: Bradford Garton wrote on Fri, 13 October 2006 05:33
----------------------------------------------------
> Hey everyone --
>
> I hate to keep flogging my own objects, so I'll be sure to mention a few
> others :-)
>
> For those looking for more structured programming capabilities (i.e.
> something beyond connecting the little boxes with lines), there are a
> number of good options out there. We've done a lot of neural-net
> models, GA simulations, chaotic attractor and cellular automata stuff in
> our classes using various combinations of these objects:
>
> [mxj] -- it's java. It comes with max/msp. You can use arrays, objects,
> all that good stuff.
>
> [js] -- javascript, also comes with max/msp. Make those functions, use
> those arrays.
>
> [rtcmix~] -- for basic procedural coding (C-like syntax) with arrays, etc.
> So easy to use! So fun to learn!
>
> [chuck~] -- like [rtcmix~] (functional/procedural language), but you have
> to get used to saying things like "a => this.value". Perry and Ge are
> expanding the data-structuring capabilities almost every day.
>
> [maxlisp] -- it's LISP. I mean, it is actually LISP (ANSI INCITS 226-1994
> (R1999)). If you are careful, it will work. I use it, but I save often.
> I think I'll try to work on re-threading it over the intersession to make
> it a bit more timing tolerant.
>
>
> I also second Arne Eigenfeldt's endorsement of Peter Elsea's Lobjects for
> a lot of work, they're really terrific. And if you're doing any
> statistical work at all, you gotta check out Peter Castine's litter objects.
>
> It kills me to see people doing all these weird gymnastics to bend [coll]
> around or shove everything into jitter matrices, with all these other
> possibilities. You have to think (literally) outside the little boxes!
>
> brad
> http://music.columbia.edu/~brad
>
----------------------------------------------------

Olivier Pasquet's icon

Hello Karl,

Reading your wishes, I would advice you using histo, prob and anal
depending on whether you wanna focus on the parameters values
themselves or their changes from one value to another value. coll
(reorder data, max etc) and mean would also be useful.
One interesting aspect would also take time into account. Time would
then just be another parameter like any other.

best,

O0o.

Isjtar's icon

Quote: Bradford Garton wrote on Fri, 13 October 2006 06:33
----------------------------------------------------

> For those looking for more structured programming capabilities (i.e.
> something beyond connecting the little boxes with lines), there are a
> number of good options out there. We've done a lot of neural-net
> models, GA simulations, chaotic attractor and cellular automata stuff in
> our classes using various combinations of these objects:
>
> [mxj] -- it's java. It comes with max/msp. You can use arrays, objects,
> all that good stuff.
-----------------------------------------------------------------

i'm thinking of getting into java just for this kind of stuff.
how hard would you describe the learning curve from max/chuck/html and a bit of JS?
just to get some classes like GA, NN etc in (and out)?

must say i don't really like the whole enterprise thing, python seems nicer, but more limited.

> [chuck~] -- like [rtcmix~] (functional/procedural language), but you have
> to get used to saying things like "a => this.value". Perry and Ge are
> expanding the data-structuring capabilities almost every day.
>
----------------------------------------------------
getting into this now and must say it's very nice.
timing is spectacular and sounds very good.
the => feels very natural too.

(karrrlo)'s icon

merci du conseil Olivier.
Yes time would be an important thing to take in account, how many changes during a period of time , what happens as time evolves, etc...

Quote: Olivier Pasquet wrote on Fri, 13 October 2006 15:39
----------------------------------------------------
> Hello Karl,
>
> Reading your wishes, I would advice you using histo, prob and anal
> depending on whether you wanna focus on the parameters values
> themselves or their changes from one value to another value. coll
> (reorder data, max etc) and mean would also be useful.
> One interesting aspect would also take time into account. Time would
> then just be another parameter like any other.
>
> best,
>
> O0o.
>
----------------------------------------------------

Stefan Tiedje's icon

tommaso perego wrote:
> Im not sure if this can be helpful
> but a friend of mine made some objects you can find here
>
> www.icarus.nu

These are very usefull objects in general. The direct URL is

and they should be mentioned at maxobjects.com (but they are not)

Stefan

--
Stefan Tiedje------------x-------
--_____-----------|--------------
--(_|_ ----|-----|-----()-------
-- _|_)----|-----()--------------
----------()--------www.ccmix.com