Developed by spouses Stephen Grossberg and Gail Carpenter Adaptive Resonance Theory, ART, is a self organizing network that learns without supervised training. ART uses a competitive input-output training to allow the network to learn new information with out losing information already learned. It does this by classifying information into groups. If a group is not found for incoming information a new group is formed.
These networks consist of an input (comparison) layer with a node for each input dimension and an output (recognition) layer that has a node for each category. There is a hidden layer between them that filters information feed back to the input layer from the output layer. There are also controls for each layer to control the direction of information. Competitive training occurs and the highest valued node wins.
Patterns are presented to the input layer which tries to find the closest matching weight vector. If a matching weight vector is found it is compared to the categories for a match. If there are weight and category matches then the network is in resonance and training is performed to better match the weights. If no category is found a new one is created.
Input is in the form of a binary vector. Say we are trying to match people with businesses. An input { 1, 0, 0, 0 } might describe a customer’s hobbies.
garden true
golf false
run false
tennis false
Algorithm:
Initialize prototype vector
For each example input vector:
is example close to an existing prototype ( proximity test )?
yes -> ? pass vigilance test ?
yes-> place vector in current prototype vector
no-> ? is example close to an existing prototype ?
yes -> add to existing prototype
no -> add prototype
no-> add prototype
end for each
Testing of vectors:
VP = vigilance parameter ( set between 0 and 1 )
d = the dimension of the vectors ( number of inputs )
B = beta ( usually choosen by experiment )
P = prototype vector
I = input vector
1) proximity test
| P && I | / ( B + |P| ) ?> |I| / ( B + d )
2) vigilance test
| P && I | / | I | ?>= VP
So if our input vector I = { 1 1 0 }
and our prototype vector P = { 0 1 0 }
lets try B = 1.0
and VP = 0.5
So then:
d = 3
P && I = { 0 1 0 }
| P && I | = 1
|P| = 1
B + |P| = 2
|I| = 2
B + d = 4
our proximity test is then:
1/2 ?> 2/4 false
our vigilance test is then:
1/2 >= 0.5 true
1 response so far ↓
1 Charles // Dec 2, 2007 at 7:25 pm
Hi Linda,
I found your site because I noticed that you had visited my blog. I also notice you are quite the expert in the field of AI. I was wondering if you could take a look at the script on my blog and tell me if there is any glaring faults in the logic.
I converted it from source in C from the book AI Application Programming, and you can find it at VBScript ART implementation. After finding errata on the site for the book in the basic algorithm, I got a bit discouraged and haven’t looked at it for a while. I ran it for over 177 hours, and it never finished, and I suspect it may have had to do with faulty logic. I don’t know anyone who can help me, since there aren’t that many folks interested enough to actually try to learn anything about AI. Thanks for at least reading my request.
BTW, I seem to have had some problems with getting this comment box to allow me to actually type, perhaps that’s why you aren’t getting many comments.
You must log in to post a comment.