Advertisement

Idea for undergraduate project, please help

Started by January 17, 2006 12:04 PM
8 comments, last by Timkin 18 years, 10 months ago
Hello I'm taking a fourth year AI course in knowledge representation and reasoning. A large portion of the marks are devoted to a term project, which we are to be starting soon, but I don't know much about the material yet and so I'm unsure what to do. It just needs to somehow relate to a subject out of the syllabus (below). Any ideas? * Reasoning under Uncertainty 1. Causal graphs 2. Probability and Bayesian Networks 3. Conditional Independence 4. Simple Inference: Variable Elimination 5. Practical Inference: Message passing in trees 6. Practical Inference: Conditioning 7. Approximate inference: Simulation 8. Dynamic Bayes nets * Decision Making 1. Rationality: axioms 2. Principle of Maximum Expected Utility 3. Lotteries and Influence Diagrams 4. Simple Inference 5. Practical Inference and the Curse of Dimensionality 6. Markov Decision Processes * Machine Learning 1. Information Theory and Decision Trees 2. Supervised Learning in Neural Networks 3. Learning in Bayesian Networks 4. Hidden Markov Models 5. Data Mining and Information Retrieval * Constraint Satisfaction Problems 1. Review: Search 2. Constraint Propagation 3. Using heuristic information 4. Constraint optimization problems and soft constraints Thanks for your time.
What's the requirement of the project? That it be novel (but simple) research in on of these areas, or that it simply be an implementation of a standard approach for one or more of these methodologies?

Any answer I give though would obviously be perverted by my own preferences in these areas.

Cheers,

Timkin
Advertisement
I'm willing to help. Let us know more. The course looks exciting. What kind of things interest you?

Detection?
Identification/Classification?
Prediction?
Control?

Some subjects might be Diseases, Failures in Machinery, Product Quality, Financial, Weather, etc.

Like Timkin said, what are the requirements?
Quote: Original post by Timkin
What's the requirement of the project? That it be novel (but simple) research in on of these areas, or that it simply be an implementation of a standard approach for one or more of these methodologies?


My professor told us we could do either (research or implementation) so it's very general. I am usually less of an analyst/researcher than I am a programmer though so I'll probably pursue the latter.

Quote:
I'm willing to help. Let us know more. The course looks exciting. What kind of things interest you?


Well, I'm really interested in computer graphics and AI as it applies to games (it's what brought me to this site...) but I'm a bit new to AI so I don't know much (yet) about my options here. I'm going to spend today researching so maybe next time I'll be able to kind of speak the same language

Quote:
Detection?
Identification/Classification?
Prediction?
Control?

Some subjects might be Diseases, Failures in Machinery, Product Quality, Financial, Weather, etc.


As a class we're developing an expert system for doctors to diagnose patients, so I wouldn't want to do something too similar (ie. identification of diseases). Could you elaborate on some of the applications in the other subjects you mentioned?
Thanks
Quote: As a class we're developing an expert system for doctors to diagnose patients, so I wouldn't want to do something too similar (ie. identification of diseases). Could you elaborate on some of the applications in the other subjects you mentioned?


One problem is that you will need data or make up data to show the concept for any of the ideas I mentioned. So keep that in mind.

You could for instance do some character recognition (OCR)? This is where you determine characters (A,B,c,etc.) from images. Say for instance, using a Bayesian Network, Neural Network, etc. you could input the image and output would be a character.

As for machinery failure recognition you would have sensors such as temperature, pressure, vibration, etc. and then try to determine is something was wrong with the machine and what it is. It's kind of like being a doctor for a machine where you are trying to diagnose the problem. You could use Bayesian Network, Neural Network, etc.

Another is product quality, where you could take an image of something that is manufactured (you could make some playdough things, legos, etc) using a digital camera. Then you would process these images to see if something is wrong with the part and output this through one of the AI tools.

Financial you may want to write a program to detect when is the best time to sell a stock from time series data of similar stocks or you may want to predict a single stock's price in the future. For the former you could use many of the AI tools, but for the latter you might use something like a recurrent neural network to model x(t+1) = f(x(t),a) where x(t) is the stock price. Same thing for weather, but instead of stock prices you might try to predict rain from past daily temperature readings. May not work well though.

Or you could do something like detect a gun shot from a sound wave.

If you are considering games, you could try tic tac toe, or tic tac toe in 3 dimensions. Or maybe you want to make the behavior of game sprites move in an intelligent way using flocking. Another idea is making an intelligent controller... build an intelligent controller to control traffic in a game or move cars automatically in a game so they follow a path and not crash into each other.

Anyway, if you need more clarity, let me know. I'm sure Timkin has more ideas.
Quote: Original post by NickGeorgia
I'm sure Timkin has more ideas.


Always! ;)

If you're into graphics and AI then here's a suggestion for you that will showcase several of the techniques in your list.

Generate a very simple domain: an agent in a square room. On each of the walls is a random pictogram (i.e., a letter, number, symbol, etc) from a small but finite set (let's say 10 in total). Model the domain and create wall textures for each of the pictograms. Define for each wall a point in front of the wall that the agent must be standing on and a facing toward the wall. As a first task the agent is presented with a pictogram sample and asked to move to the wall on which the pictorgram is depicted. The agent will need to move to viewing states, look at the wall texture and perform a classification, returning a 1 when the viewed pictogram matches the sample pictogram. You could use any of the applicable OCR classifer techniques (e.g. neural net) to solve this task along with very simply path planning for controlling the agents movements. This task is a test that your classifier works.

Now we make it harder for the agent. Extend the domain to multiple rooms and corridors (or one big room with long walls and multiple pictograms on each wall). Penalise the agents movement by giving it bounded resources, such that it doesn't have enough resource to check every wall for a given pictogram. Give it the same task: present it with a pictogram and ask it to find where it is hung. Presumably the likelihood of finding the pictogram before running out of fuel will be proportional to the distance between the starting position and goal position. See if you can improve on this by using domain knowledge to maximise the likelihood of finding the pictogram (hint: the likelihood is higher if you can view more pictograms per unit of fuel, which equates to distance travelled between each one).

Now, we make it smart. Generate a conditional probability distribution describing the possible sequences of pictograms around the walls of the domain (from a known starting point...known to the agent too). Teach the agent this distribution by showing it samples from the distribution. Now select an ordering and place the pictograms into the domain in this order. Show the agent a sample pictogram and ask it to find it (given all of the aforementioned knowledge). You should find that the improvement in success is proportional to how well the agent learned the probability distribution and how peaked that distribution is (i.e., if P(picto_i | picto_j) is high and P(picto_k | picto_j) is low for all k!=i), then it should be easy to find picto_i if you see picto_j (it's next along the wall).

There's a lot in this... but its mostly mixing known techniques into an amalgam that should make for an interesting display! Feel free to use and/or change any part of this as you see fit. I've got plenty of other ideas if you don't like this one... like implementing a vision system for targeting in games... or performing opponent analysis in strategy games by constructing Dynamic Bayesian Networks... or... the list goes on! ;)

Cheers,

Timkin
Advertisement

Quote: Original post by NickGeorgia
Anyway, if you need more clarity, let me know.

Yes, I think I do, if you don't mind

Quote:
If you are considering games, you could try tic tac toe, or tic tac toe in 3 dimensions. Or maybe you want to make the behavior of game sprites move in an intelligent way using flocking. Another idea is making an intelligent controller... build an intelligent controller to control traffic in a game or move cars automatically in a game so they follow a path and not crash into each other.


I read up on flocking, and it's interesting, but I don't think I could relate this to any of the given topics. I really like the idea of controlling npc traffic but again, I can't see how I could relate this (maybe due to a limited understanding?)

Quote:
You could for instance do some character recognition (OCR)? This is where you determine characters (A,B,c,etc.) from images. Say for instance, using a Bayesian Network, Neural Network, etc. you could input the image and output would be a character.


I might just do this, it sounds like what I want. Thanks!

Quote:
As for machinery failure recognition you would have sensors such as temperature, pressure, vibration, etc. and then try to determine is something was wrong with the machine and what it is. It's kind of like being a doctor for a machine where you are trying to diagnose the problem. You could use Bayesian Network, Neural Network, etc.

Another is product quality, where you could take an image of something that is manufactured (you could make some playdough things, legos, etc) using a digital camera. Then you would process these images to see if something is wrong with the part and output this through one of the AI tools.

Financial you may want to write a program to detect when is the best time to sell a stock from time series data of similar stocks or you may want to predict a single stock's price in the future. For the former you could use many of the AI tools, but for the latter you might use something like a recurrent neural network to model x(t+1) = f(x(t),a) where x(t) is the stock price. Same thing for weather, but instead of stock prices you might try to predict rain from past daily temperature readings. May not work well though.


The machinery failure recognition is good, but like I said we are already making an expert system as a class and so we're expected to do something different.
The other ones sound a bit intimidating, there's the problem of getting reliable data, and I find myself struggling to find an interest in the first place :(
Good food for thought though.

You said something in another thread that sounded more along my lines:

Quote:
Use a recurrent neural network to try and predict player movements in an FPS.


Without explaining recurrent neural networks (I have plenty of textbooks/web-resources to answer that question), could you explain a bit more about how this would work?
Quote: Original post by Timkin

If you're into graphics and AI then here's a suggestion for you that will showcase several of the techniques in your list.

Generate a very simple domain: an agent in a square room. On each of the walls is a random pictogram (i.e., a letter, number, symbol, etc) from a small but finite set (let's say 10 in total). Model the domain and create wall textures for each of the pictograms. Define for each wall a point in front of the wall that the agent must be standing on and a facing toward the wall. As a first task the agent is presented with a pictogram sample and asked to move to the wall on which the pictorgram is depicted. The agent will need to move to viewing states, look at the wall texture and perform a classification, returning a 1 when the viewed pictogram matches the sample pictogram. You could use any of the applicable OCR classifer techniques (e.g. neural net) to solve this task along with very simply path planning for controlling the agents movements. This task is a test that your classifier works.

Now we make it harder for the agent. Extend the domain to multiple rooms and corridors (or one big room with long walls and multiple pictograms on each wall). Penalise the agents movement by giving it bounded resources, such that it doesn't have enough resource to check every wall for a given pictogram. Give it the same task: present it with a pictogram and ask it to find where it is hung. Presumably the likelihood of finding the pictogram before running out of fuel will be proportional to the distance between the starting position and goal position. See if you can improve on this by using domain knowledge to maximise the likelihood of finding the pictogram (hint: the likelihood is higher if you can view more pictograms per unit of fuel, which equates to distance travelled between each one).

Now, we make it smart. Generate a conditional probability distribution describing the possible sequences of pictograms around the walls of the domain (from a known starting point...known to the agent too). Teach the agent this distribution by showing it samples from the distribution. Now select an ordering and place the pictograms into the domain in this order. Show the agent a sample pictogram and ask it to find it (given all of the aforementioned knowledge). You should find that the improvement in success is proportional to how well the agent learned the probability distribution and how peaked that distribution is (i.e., if P(picto_i | picto_j) is high and P(picto_k | picto_j) is low for all k!=i), then it should be easy to find picto_i if you see picto_j (it's next along the wall).



This is good. We've got OCR, pathfinding, heuristics for choosing the next wall to inspect, and the ability for the agent to improve by learning the probability distribution. The project is worth 40% so I am willing to do something this ambitious...
My only problem with it is that it really only serves to demonstrate the techniques and solves no real world problem (except the OCR part). I'll try to think of a way to change it so that it does, or maybe just go with this if I can't.

Quote:
I've got plenty of other ideas if you don't like this one... like implementing a vision system for targeting in games...or performing opponent analysis in strategy games by constructing Dynamic Bayesian Networks...


Could you explain the targeting system? The other one sounds good but then I'd have to first implement an RTS... Then again, if I stripped it down enough (ie. no sounds or textures) it might be feasible. I'll see if I can dig up some ideas here.

Lots of stuff to look into here, keep 'em coming =)
Quote: Original post by Timkin
or performing opponent analysis in strategy games by constructing Dynamic Bayesian Networks... or... the list goes on! ;)


Mind elaborating on this one? It sounds quite interesting. ( My [too-often delayed] long term project is playing around with various ideas for RTS AI )

and averisk, there are a few RTS out there you could most likely use instead of making your own ( TA Spring for example ).
Quote: Original post by averisk
My only problem with it is that it really only serves to demonstrate the techniques and solves no real world problem (except the OCR part).

Actually, it relates to many real world problems in automated manufacturing. Imagine a robot arm that had to pick up certain pieces from a production line. There are constraints about how it can view the pieces (maybe they aren't all lying flat), constraints about how it can grab them and costs for movement. It needs to be able to visually detect the class of piece it wants to pick up. I just mapped that problem into something a little more 'gamey'! ;)

Quote:
Could you explain the targeting system?


The visual cortex of many animals/insects can learn to detect the orientation and velocity of moving objects. So, presumably, you could train a neural-like architecture to be able to detect moving objects in a visual field (pixel map) (and indeed people have done this successfully). Now consider a bunch of aircraft/spacecraft/whatever flying around. There are two classes of objects: Team A and Team B. Each craft uses the same AI and has the goal to shoot down as many of the other team as possible. They need to detect and destroy appropriate objects using only visual recognition for control decisions.

The tasks involved are:

(1) Identification of objects in the visual field (pattern recognition)
(2) Movement control to place objects in the visual field (pathfinding under the constraint of sensing costs)
(3) Tracking control to obtain optimal firing position against a moving target (planning/control/constraint satisfaction)
(4) Resource bounded decision making (craft have limited fuel and bullets).

If you're interested in this sort of thing, start by reading up how a fly's visual cortex and flight direction are linked.

Cheers,

Timkin

This topic is closed to new replies.

Advertisement