Archived

This topic is now archived and is closed to further replies.

walkingcarcass

neural networks

Recommended Posts

i am ignorant. i hate that. can anyone please point out some neural network articles and/or tutorials that will take me up to an intermediate level? ******** A Problem Worthy of Attack Proves It''s Worth by Fighting Back

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
You will not get up to an ''intermediate'' level just by reading a few articles/tutorials. Artificial Neural Networks are complicated mathematical modeling devices that few people understand past "I made a 2 layer net that learns XOR." Chances are that if you don''t take graduate school classes in Computational AI and Optimization you will never get to an ''intermediate'' level. But you can still have fun : )

www.generation5.org has some good articles and search the web for the ANN Faq. These are good starting places.

- Good Luck

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
quote:
Original post by Raptor85
you can get to an "intermediate" level without any actual classes, it''s just hard as hell to do....


Right. I said "Chances are..." (Though I have only met 2 people who have done so (without classes) - and it is arguable if they are even at an intermediate level)

Share this post


Link to post
Share on other sites
Dedication and the willingness to never quit learning are all you need to get to any level with any subject. Only those who put restrictions on learning are the ones that are limited in their potential.

Learn everything you can from every source you can and I guarantee that you can get to the Advanced level without taking one single course. The trick to learning is asking questions; as many questions as you can think of, then when you run out, ask people if they have any questions for you.

Share this post


Link to post
Share on other sites
Carc,

I used to feel ignorent about NN as well, visit generation5.org and the AI depot. They are both excellent resources, while you''re there you should read some of their top grade articles/tutorials about Genetic Algors 2.



-Sash
-5

Share this post


Link to post
Share on other sites
Most online articles I''ve read tend to dodge certain issues with neural networks. There''s a great article that you can find on google if you search for "Kangaroos and Neural Networks" explaining what they do, although not so much how they do it, definitely not enough to help you implement it. There is a book called Neural Smithing published by MIT Press that is very complete and straightforward. It contains C style pseudocode that has enough to get you started while avoiding details necessary in your final code that distract from the algorithms they are explaining. It starts with perceptrons and explains backprop in full by chapter 5. The rest of the book focuses on ways to speed up training by such things as weight initialization techniques and variations on backprop. Practical Neural Network Recipes in C++ by Tim Masters is also a good book, containing complete source code for a neural network implementation. His explanations through the book are pretty good but the code is messy and is purely procedural. General machine learning books i''ve read usually have a lot of magic math in them and just skirt the implementation of backprop. They''re nice if you want to look into something other than NNs that might be more appropriate for your project.
AI depot and Generation5 are the best AI sites i''ve come across regarding this, and they link to many others, but if you really want to learn this you should invest some money in a book.

Share this post


Link to post
Share on other sites
Procedural code is great and I should have clarified that it wasn''t my problem with the book. Unfortunately Master''s code is half assed procedural code masking itself as object oriented by using classes and as such is misleading. It would have been much easier to understand if he had picked one paradigm and stuck with it. As it is it works but you''ll spend a lot more time than you should trying to figure out which functions modify which pointers because their placement in the classes is so arbitrary.
There are a lot of weird stylistic issues with the code. It''s one thing if for your job you write poorly designed code that noone is going to see (, you only answer to yourself or your boss for that one), it''s another if you''re publishing a book with sed code as a learning aid.

Share this post


Link to post
Share on other sites
My website, www.neuronlogic.com provides ActiveX based neural network software, you could use it to get started if you want to learn how to build nn''s without actually generating the code to do the learning and stuff. I studied AI in all three years of my degree, and the result is n-Logic Core (the product you can get on my site), and it''s a hell of a lot cheaper than some others I''ve seen which cost around $200!

The problem is, if you want to write code to build a neural network, you will want to make it reusable. If you don''t then it''s a bit of a waste of time. I''d be happy to help people, by telling them the general data structures that n-Logic uses.

You don''t want to spend days writing code to create a 2-1-1 network, then realise you need to add more hidden nodes, and have to rewrite most of your code again.

BTW, my good friend has given me an article on pathfinding, using novel approaches, I''m going to post another article about it on here, so keep a look out!

Cheers

Matt

Share this post


Link to post
Share on other sites
The reason ANN''s seem so complicated is because nobody wants to admit that they rarely work, and thus never explain it clearly enough for you to draw that conclusion on your own.

The fact that they''re still called NEURAL NETWORKS should be the first clue that it''s a little loopy.

Genetic algorithms on the other hand are easier to understand (unless you really get in to it), but also equally useless for most people.

Before I get flamed to heck, let me just say that I was a die-hard AI proponent for a long time. I''ve wasted many CPU cycles waiting for convergence. The fact remains that 99% of the time it''s easier (you don''t have to prepare mountains of training data) and faster to come up with a rule-based solution than it is to wait for an AI solution.

Case in point-- Deep Blue is Game Tree based, not ANN or GA based.

The reason everyone is so hell-bent on ANN''s and GA''s is because THEY''RE ADDICTIVE!!!! Even by writing this obviously anti-AI remark I''ve filled myself with the desire to run home and start coding yet another computer-vision AI!!! ARGHH!!

I TAKE IT ALL BACK!!! I TAKE IT ALL BACK!!!!

-- end of transmission --

Share this post


Link to post
Share on other sites
quote:
Original post by RPGeezus
The fact remains that 99% of the time it''s easier (you don''t have to prepare mountains of training data) and faster to come up with a rule-based solution than it is to wait for an AI solution.

But usually, the point of NNs or GAs is that you use them in situations where the ''rules'' are either not known up-front, or are difficult to express, or perhaps where there are a lot of rules and it''s hard to judge their relative importance.

[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost | Asking Questions | Organising code files | My stuff ]

Share this post


Link to post
Share on other sites
it seems to me that straitforward rule-based systems are being increasingly less capable of rich behavious without elaborate state machines or heavy scripting.

i still dont know much about NNs so what i suggest may be hopelessly impractical but it makes sense to me, dammit!

have each AI agent have an arbitary list of attributes available to all it''s NN components which are capable of being told it''s relevant elemnents are at a certain place in the list; each NN component has a task such as "create symbolic knowledge of visual stimulii" or "speculate enemy''s next moves". these components are largely isolated but can stimulate each other if they need to.

they each use propogation of fuzzy results to condense inputs to a set of responses to their task. the inputs and outputs are coreographed by a higher-level cognitive process which has the more abstract results like "X will probably do Y" "the quickest route to A is B" kind of information on which to control the agent.

you can use whatever interconnectivity you like to get the job done, integrating modules with rule-based systems if you like, and its very modular if the higher-level process is a blackboard approach which can add modules simply by creating space and saying "your data is here".

communication between agents be done by exchanging conclusions and contexts.

********


A Problem Worthy of Attack
Proves It''s Worth by Fighting Back

Share this post


Link to post
Share on other sites
RPGeezus,

Genetic Algorithms are not ''AI''. They are directed stochastic searches. They are a tool one can use in the correct circumstances to give good, sometimes remarkable results.

Artificial Neural Networks are not ''AI''. They are basically, when the hype is stripped away, function approximators and data classifiers. They can be extremely good at making generalizations based upon their training and the data presented to them. They are a tool one may use in the correct circumstances to give good, sometimes remarkable, results.

These techniques, alone, or together with other tools such as semantic networks, fuzzy logic, decision trees, first order logic, probability theory, belief networks and reinforcement learning to name a few, can be used to design software that will bestow a game agent with the illusion of intelligence.

If you understand these tools and you use them wisely, they will work. If you have failed in the past then either you don’t understand them enough or you have tried to apply them to the wrong type of problem (which also implies a lack of understanding).





ai-junkie.com

Share this post


Link to post
Share on other sites
Case in point -- TD-Gammon is ANN/evolution based and not game tree based.
It can defeat world champions in backgammon and its predecessor was also ANN based. There is a place for everything but i agree with RPGeezes that too many people use ANNs for learning stuff they already know.....

Share this post


Link to post
Share on other sites
quote:
Original post by Kylotan
But usually, the point of NNs or GAs is that you use them in situations where the ''rules'' are either not known up-front, or are difficult to express, or perhaps where there are a lot of rules and it''s hard to judge their relative importance.



There are non-ANN tools for handling these situations, such as Holland''s Classifier System.

Timkin

Share this post


Link to post
Share on other sites
quote:
Original post by fup

If you understand these tools and you use them wisely, they will work. If you have failed in the past then either you don’t understand them enough or you have tried to apply them to the wrong type of problem (which also implies a lack of understanding).




ai-junkie.com


I can use the same argument for anything: "C++ is ohh so very complicated.. You can solve ANY problem with it, but only after years of subtle mastery with the Mystic HooDoo of Gnu." The fact remains, that while it MAY be possible to solve ANY problem via C++, most problems ARE still unsolveable.

Anyway, you missed my point. I wasn''t saying it''s impossible to get a solution using a GA or ANN. I''m saying that _MOST_ of the time it''s the wrong approach. You seem to know what a NN is good for, but does that mean the rest of the world does? Herein lies the point of the discussion.

Let compare apples to apples. In terms of resources, what is acceptable for an ANN/GA in terms of a) CPU time, b) Training data, and c) operator assistance? Compare the same figures to a rule based solution. Faster-Better-Cheaper != ANN/GA. At least not for now anyway.

Will




Share this post


Link to post
Share on other sites
well I''ll (and anyone whose has done any serious research or training in AI, Genetic Algorithms/Programming, and Neural Networks) agree that ANN and GA/P aren''t the solution to every problem, and that they are really just tools, which usually need to be used with other things. However, they are not useless.

Neural nets are a relatively new invention, and already has many uses: it is a very good thing to model any living entity, and it is also very good for pattern matching. Obviously, this is because pattern matching is pretty much what it does. Therefore, this can''t be used by itself in a game, and it will give the best AI. However, it can be used with other things to make a more decent and natural AI in many cases - and by then making the proper simplifications this can become very fast, and using little resources. The key thing is that it needs to be used with other techniques, since it is itself only a technique.

As for Genetic Algorithms/ Genetic Programming, this is an even newer technique, and it is very remarkable. It can easily be used in computer games, something that my dissertation for my degree has shown. It is really just a search through some space, but it is much faster than a random search, and it is very natural. Of the two, Genetic Programming is the more interesting one: by combining this with a simple scripting language, it is possible to genetically create an AI behaviour, which you can then see if it is good or not. If it is good, then the next behaviour scripts will contain elements of the good behaviour. In essence, you will get a natural progression. Again, as in NN, this is only a technique which needs to be used with other techniques and methods to make an AI.

Phew! Hope this helps someone, or at least inspire them to look into these techniques. And ignore the doomsayers who say they are useless. They are perfectly fine for what they do.

Share this post


Link to post
Share on other sites
You dont use heuristics when you can apply simple rules...
But for highly dynamicla and/or chaotic systems you have to use heuristics, and this is where ANN and GA/GP are very very good tools...

intersting discussion

--Spencer

Share this post


Link to post
Share on other sites
About six years ago I setup a GA experiment where two "gene pools" were to learn the game Connect-4. One pool played Red, and the other played Black.

The results were quite interesting, as just by watching a graph of one pools score, I could tell when one gene pool learned something, and when the opposing pool learned a counter. I used these ''spikes'' to keep track of new discoveries, and would keep the top ranking algorithm at the time as part of all subsequent generations.

Of course, the system never ''learned'' how to play connect-4 well enough to beat me (although it did much better than ''random''), but I''ll always remember how amazed I was at being able to quantify ''discovery''.

Just thought someone might enjoy that little story.

Will

Share this post


Link to post
Share on other sites