Well, last months we've here a big problem about our daily technical work. As you possibly already know (if you read my another blog), I'm working in a big system which automatizes all our Software Quality Assurance (SQA) procedures and test cases for our (complex, have to say) products.
We always have a issue related with interface's dependent test cases. Basically, they're scripts that perform clicks and keyboard strokes automatically in an (web) interface, with our own technology. Due to integration interface/application, sometimes we've test cases that have failed, but is very difficult to know why?. We have logs, real time traces, statistics, control points, snapshots, ... a lot of information about fails and script execution, but in any case, a team's member (an human) has to review the script or the execution itself, with an own debugger doing something like a step-by-step execution.
Sometimes it can be a several hours work, and even we store that knowledge in wiki or talking in group, but I think there is a general knowledge base which can re-use, in an automatic manner.
Well, lastly I'm thinking about some kind of Expert System (Rules based or a Bayesian network) to store all that knowledge. Currently I'm trying to represent rules and information, because we have a lot of input, mostly in natural language representation. Anyway, I think the idea is not bad, because we can model the overall knowledge and avoid the hard work.
The system could give us diffuse information (something like fuzzy sets), in the form: This fail can be generated by an interface change, which doesn't invoke the soap calls to server, with 75% probability. The smtp server is not running with 33% probability. This would be a big forward step in our work.
I'll talk you about it when have some advances. What do you think?
Thursday, October 01, 2009
An AI's application in my daily work?
0
comentarios
by
gyakoo on Thursday, October 01, 2009
tags: bayesian network, expert system, natural language
tags: bayesian network, expert system, natural language
Tuesday, September 22, 2009
Fantastic AI
In the middle of 2005 I started to work in a company called Gextech where we were developing for 3 years, a non-interactive, bet-oriented soccer game: Fantastic League. I was the AI senior programmer there, and I'll try to explain how we did it.
It was interesting and motivating for us. One of the challenges was to create a sort of "artificial intelligence" for football players. I say "sort of" because the product's architecture was a little different from a normal interactive football game.
Briefly, we've a statistics engine, which creates the match's events, depending on several stats distribution functions and other variables. After that (and other complex computations), as result we have a list of predefined football sequences, perfectly fitted in time and space in the entire match. Sequences are using the ball and some players while they're playing, but the other ones have to act like "real" football players following the match, but without taking part of those sequences. Here comes the player's artificial intelligence.
It's very basic. Actually we've two levels of AI:
To compute that we use a fixed rules base system and vectorial operations to create something similar to attractors. This is a very simple AI, but results were good enough to follow the match while sequences are playing. The most important part is the low level AI for players.
The physical AI is in charge of movement, blending and animations of players. We've a big finite state machine with about fifty different states. Depending on current velocity, acceleration, target position (computed by the high-level AI previously), ball's position and current state, we compute a target player's state, which represents an animation and its playing speed, a velocity change in movement, ... Also, all this information takes into account the transition animation states with its blending times and different angles for target location, ball's position... "For example, you're running at middle running velocity, and you must to go to a specific place, while you're facing to ball. So finally you should to select a middle turning to left ninety degrees animation and then select the strafe to right, with a specific direction to target place."
At this low level AI we use too, a special action which rotates manually the spines and neck player's bones, representing the looking at ball action dynamically, giving a more realistic match immersion when player is running.
But the most difficult part in low-level AI was the time-space constraints. We need to perform the player's AI only during a period of time, so the player must to be placed in a specific location just in a specific time. These constraints are represented by an homogeneous matrix and a time value. So, the difficult was to serve these constraints while you're playing like a real football player. We use several kind of approximations to the end point (and time), making real time spline paths to move the player, resolving inverse matrix operations to select the best animation to the player's turn, selecting the exact time when to start to play animations to minimize blending, ... and sometimes we'd a 2 seconds AI's window to do all.
Another stuff related with that low-level AI (actually in a lower level) was the collision detection and response between players, which was performed by surrounding the players with cylinders. We shift the cylinders while players are going along their paths.
And another interesting lower level AI was the AI's path-sequence intersection. In the AI, we avoid to generate a path for player intersecting any sequence or ball trajectory, because the sequences are, as I said before, the match's soul, and we can't intercede them.
Below you have the final result, where is difficult to detect when a player is in a sequence or playing with AI, that was the main goal:
It was interesting and motivating for us. One of the challenges was to create a sort of "artificial intelligence" for football players. I say "sort of" because the product's architecture was a little different from a normal interactive football game.
Briefly, we've a statistics engine, which creates the match's events, depending on several stats distribution functions and other variables. After that (and other complex computations), as result we have a list of predefined football sequences, perfectly fitted in time and space in the entire match. Sequences are using the ball and some players while they're playing, but the other ones have to act like "real" football players following the match, but without taking part of those sequences. Here comes the player's artificial intelligence.
It's very basic. Actually we've two levels of AI:
- Positional
- Movement or physical
To compute that we use a fixed rules base system and vectorial operations to create something similar to attractors. This is a very simple AI, but results were good enough to follow the match while sequences are playing. The most important part is the low level AI for players.
The physical AI is in charge of movement, blending and animations of players. We've a big finite state machine with about fifty different states. Depending on current velocity, acceleration, target position (computed by the high-level AI previously), ball's position and current state, we compute a target player's state, which represents an animation and its playing speed, a velocity change in movement, ... Also, all this information takes into account the transition animation states with its blending times and different angles for target location, ball's position... "For example, you're running at middle running velocity, and you must to go to a specific place, while you're facing to ball. So finally you should to select a middle turning to left ninety degrees animation and then select the strafe to right, with a specific direction to target place."
At this low level AI we use too, a special action which rotates manually the spines and neck player's bones, representing the looking at ball action dynamically, giving a more realistic match immersion when player is running.
But the most difficult part in low-level AI was the time-space constraints. We need to perform the player's AI only during a period of time, so the player must to be placed in a specific location just in a specific time. These constraints are represented by an homogeneous matrix and a time value. So, the difficult was to serve these constraints while you're playing like a real football player. We use several kind of approximations to the end point (and time), making real time spline paths to move the player, resolving inverse matrix operations to select the best animation to the player's turn, selecting the exact time when to start to play animations to minimize blending, ... and sometimes we'd a 2 seconds AI's window to do all.
Another stuff related with that low-level AI (actually in a lower level) was the collision detection and response between players, which was performed by surrounding the players with cylinders. We shift the cylinders while players are going along their paths.
And another interesting lower level AI was the AI's path-sequence intersection. In the AI, we avoid to generate a path for player intersecting any sequence or ball trajectory, because the sequences are, as I said before, the match's soul, and we can't intercede them.
Below you have the final result, where is difficult to detect when a player is in a sequence or playing with AI, that was the main goal:
Wednesday, July 15, 2009
Computer vision, pattern recognition and hot dogs
Is impressive how the flex-pickers recognize and classify the hot dogs.
There are a lot of variables to take into account as well as recognition of forms, robotics, IK, the conveyor belt, optimization to select the best place where to put the hot dogs ... all in realtime. You can see how some pieces can't be processed, but surely they're used to feed back the pipeline.
There are a lot of variables to take into account as well as recognition of forms, robotics, IK, the conveyor belt, optimization to select the best place where to put the hot dogs ... all in realtime. You can see how some pieces can't be processed, but surely they're used to feed back the pipeline.
Wednesday, March 25, 2009
Technological Singularity
What do the movies the matrix and terminator have in common? They're a very famous films where computers take self-conscience and become more intelligent than the human being. There are a lot of more sci-fi novels and films using this main story-line, but really do you know where this idea come from?
Now is when Singularity comes on the scene. I don't mean that new set of operating system, languages, techniques and tools being developed by Microsoft, a research project also known as Singularity, I don't. I actually mean the theory about Technological Singularity:
As all future predictions of this type, was formulated ambiguous enough to be right, so, could we see someday a Skynet-like system?, but not that such Skynet-Research company which is now calling for robots' designs around the world.
Anyway, this tech singularity is very interesting and a never ending source of thoughts and stories.
Now is when Singularity comes on the scene. I don't mean that new set of operating system, languages, techniques and tools being developed by Microsoft, a research project also known as Singularity, I don't. I actually mean the theory about Technological Singularity:
The technological singularity is a theoretical future point of unprecedented technological progress—typically associated with advancements in computer hardware or the ability of machines to improve themselves using artificial intelligence.The father of this curious theory (result of futurology), Vernor Vinge wrote an essay in 1993, where he argues that exponential growth in technology will reach a point beyond which we cannot even speculate about the consequences:
Within thirty years, we will have the technological means to create superhuman intelligence. Shortly after, the human era will be ended.I think that it is a hard to believe prediction, mainly because it leaves a lot of things unsaid such as energy resource usage or physical limits of current computer architectures, with no mention of all of those exposed by Roger Penrose in his wide essay: The emperor's new mind.
-- The coming technological singularity: how to survive in the post-human era. Vernor Vinge. 1993
As all future predictions of this type, was formulated ambiguous enough to be right, so, could we see someday a Skynet-like system?, but not that such Skynet-Research company which is now calling for robots' designs around the world.
Anyway, this tech singularity is very interesting and a never ending source of thoughts and stories.
Saturday, March 21, 2009
Asimov's The Last Question
Wow, what a great story!
Maybe, most of you have read this amazing Asimov's short story.
I know it through a good workmate, Antonio, who is a follower of this blog, and have to say that is one of my favorites sci-fi story I've read.
It's a very short tale (19 pages, 10-15 minutes) about mankind, an intelligent computer, and the universe entropy (something like cosmic energy consumption). I don't want to spoil you because I advise to read it.
It make me think about Kardashev scale, the Halting problem, AI ... , the big-bang theory, universe creation, religion...
I can't believe how Asimov has been capable to synthesize this story in only a few pages. By the way he said it was his best short story ever:
- The Last Question (english)
- La Última Pregunta o en pdf (español)
Maybe, most of you have read this amazing Asimov's short story.
I know it through a good workmate, Antonio, who is a follower of this blog, and have to say that is one of my favorites sci-fi story I've read.
It's a very short tale (19 pages, 10-15 minutes) about mankind, an intelligent computer, and the universe entropy (something like cosmic energy consumption). I don't want to spoil you because I advise to read it.
It make me think about Kardashev scale, the Halting problem, AI ... , the big-bang theory, universe creation, religion...
I can't believe how Asimov has been capable to synthesize this story in only a few pages. By the way he said it was his best short story ever:
This is by far my favorite story of all those I have written.You can read it here:
After all, I undertook to tell several trillion years of human history in the space of a short story and I leave it to you as to how well I succeeded. I also undertook another task, but I won't tell you what that was lest l spoil the story for you.
It is a curious fact that innumerable readers have asked me if I wrote this story. They seem never to remember the title of the story or (for sure) the author, except for the vague thought it might be me. But, of course, they never forget the story itself especially the ending. The idea seems to drown out everything -- and I'm satisfied that it should.
- The Last Question (english)
- La Última Pregunta o en pdf (español)
Friday, March 20, 2009
Turing Test, Loebner Prize and Elbot.
As you know, Alan Turing proposed in the 1950 follow test to check a machine's ability to demonstrate intelligence:
Since 1990 exists a special competition, called Loebner Prize, which awards to the most human-like chatterbot. It's similar to a Turing Test and last October 2008, a bot program called Elbot convinced three of the 12 human interrogators.
A human judge engages in a natural language conversation with one human and one machine, each of which tries to appear human. All participants are placed in isolated locations. If the judge cannot reliably tell the machine from the human, the machine is said to have passed the test. In order to test the machine's intelligence rather than its ability to render words into audio, the conversation is limited to a text-only channel such as a computer keyboard and screenHere you have a good wikipage about this test.
Since 1990 exists a special competition, called Loebner Prize, which awards to the most human-like chatterbot. It's similar to a Turing Test and last October 2008, a bot program called Elbot convinced three of the 12 human interrogators.
If Elbot had convinced one other, it would have passed the 30% mark - the threshold set by Alan TuringIn any case, some people think that the limit of 5 minutes and the use of untrained/unsophisticated interrogator/judges has resulted in some wins that may be due to trickery rather than to plausible intelligence.
Wednesday, March 18, 2009
ART-Linux
Did you know that there was a special implementation of Linux Kernel, specifically to real time applications and even more specific to robots?
Its name is ART-Linux and I found it via robots.net, reviewing news about HRP-C4 the first robot super model.
ART-Linux is developed by Youichi Ishiwata.
Its name is ART-Linux and I found it via robots.net, reviewing news about HRP-C4 the first robot super model.
ART-Linux is developed by Youichi Ishiwata.
Tuesday, March 17, 2009
Content Filtering
We inaugurate this blog with a first post about intelligent web and mail filtering.
Today, with all the world posting data over the net, with good and bad purposes, and all the available categories for adult and children existent, we need robust methods to detect mail spamming or to categorize web content into porn, gaming, betting ... It's not a trivial work. Filtering algorithms are continuously changing, as well as the content's generators like spammers. So we need learning algorithms, with "artificial intelligence" to try maximize the efficiency and to minimize the false positives.
There are a lot of techniques to do this filtering, in fact, not only those based on AI are used. Other ones like black or white lists are very effective, but one important technique is the content analysis, whereby content is blocked or allowed based on analysis of its content, rather than its source or other criteria.
In my current company, Optenet, we are using (among others) a special form of Bayesian Network to do the content filtering stage. In general terms, by the analysis of words and their specific relations, specific values are computed for a text. These values are used to categorize a content (which can be a web page or a mail). Along time, the dictionaries are grown larger, and the network's weights trained. Results are impressive and give a very low false positives ratio.
It's curious how Artificial Intelligence can help us to make the web and mailing a more secure and controled place.
References:
http://en.wikipedia.org/wiki/Content_filtering
http://en.wikipedia.org/wiki/Bayesian_network
http://en.wikipedia.org/wiki/Bayesian_spam_filtering
http://en.wikipedia.org/wiki/Naive_Bayes_classifier
http://www.optenet.com
Today, with all the world posting data over the net, with good and bad purposes, and all the available categories for adult and children existent, we need robust methods to detect mail spamming or to categorize web content into porn, gaming, betting ... It's not a trivial work. Filtering algorithms are continuously changing, as well as the content's generators like spammers. So we need learning algorithms, with "artificial intelligence" to try maximize the efficiency and to minimize the false positives.
There are a lot of techniques to do this filtering, in fact, not only those based on AI are used. Other ones like black or white lists are very effective, but one important technique is the content analysis, whereby content is blocked or allowed based on analysis of its content, rather than its source or other criteria.
In my current company, Optenet, we are using (among others) a special form of Bayesian Network to do the content filtering stage. In general terms, by the analysis of words and their specific relations, specific values are computed for a text. These values are used to categorize a content (which can be a web page or a mail). Along time, the dictionaries are grown larger, and the network's weights trained. Results are impressive and give a very low false positives ratio.
It's curious how Artificial Intelligence can help us to make the web and mailing a more secure and controled place.
References:
http://en.wikipedia.org/wiki/Content_filtering
http://en.wikipedia.org/wiki/Bayesian_network
http://en.wikipedia.org/wiki/Bayesian_spam_filtering
http://en.wikipedia.org/wiki/Naive_Bayes_classifier
http://www.optenet.com
Saturday, March 14, 2009
Welcome
Neurogence is an attempt to compile a collection of articles, techniques, methods and ideas about Artificial Intelligence. In this website we'll post some of advances and news in AI, interesting books, useful links, and areas where AI is currently in use, as well as a few descriptions, myths and definitions.
Also, here we'll challenge to anyone who wants to share AI algorithms for specific minigames, playing automatically one against other, and we'll try to make some contest about it, with top
scorer's lists and even a hall of fame.
From here, I make a call for contributions. If you would like to make this web bigger and better, the only thing you have to do is to write an email to the webmaster, gyakoo@gmail.com.
Let's AI.
Also, here we'll challenge to anyone who wants to share AI algorithms for specific minigames, playing automatically one against other, and we'll try to make some contest about it, with top
scorer's lists and even a hall of fame.
From here, I make a call for contributions. If you would like to make this web bigger and better, the only thing you have to do is to write an email to the webmaster, gyakoo@gmail.com.
Let's AI.
Subscribe to:
Posts (Atom)