Monday, December 12, 2016

OpenMind goes crowdfounding

You might heard about OpenMind project. The only open source C++ library for general purpose AI.
If not then I introduce:

  • Ambitious project with purpose not to hide AI from everyone like it made IBM (Watson), Google and Apple (Siri), but to make it applicable in every aspect of software development starting from games and ending with huge management solutions.
  • C++
  • Free&OpenSource
  • Result oriented goal management system
  • With support for both games and chatbots
The bed thing there is still lots of things to implement until it might be used properly. And that is why the project goes to Indiegogo! Lets support this brave ambitious project.
Presentation text:
OpenMind

An AI Library



Rationale



  • We need effective open source AI system
  • Watson is great diagnostics system, but can everyone use it? Is it moral to hide AI and retain progress when we still have hunger on our Earth?

OpenMind
Rationale


  • Game bots AI
  • Thousands of games with new AI algorithms. Generic AI system that may become standard solution for gaming AI.
  • Good test field for generic AI solution.


    OpenMind Rationale

  • Automated management systems is one of the main goals for the OM library.
  • Programming your goals will help you do not miss anything in any size business.

OpenMind Rationale
  • Techsupport
  • Keeping context of conversation is something lacks even Siri and Something everyone needs during conversation with tech support.
  • Emerging client phrases to client context gives effect of understanding client needs.

OpenMind​ Features

Trie​ is the base class of data structure for contexts.
It gives great speed for both insert and access operations for huge amount of data.
Same iterations count as each comparison in map search has.


Here is example of trie like structure. Common items are really common. By reading the key we are coming to its data. This is fastest algorithm for search by text key. Standard C++ library STL has data structure called map for this purposes. Each comparison of map during key search takes same iterations as whole search operation in trie. This is so because we use direct access to go through trie.


OpenMind Features

  • GoalGenerator to make goals
  • Faculties to reach goals
  • Goals are to be reached 

OpenMind Features
Context

  • Context is Trie
  • Context for conditions
  • Context for requirements

OpenMind
Result oriented algorithm

In human language it sounds simple: We need to do things that would make our needed conditions.
ToDo = Requirement - Conditions
So we need current conditions context described. We need context requirement described as well. And we need information on context modification for all faculties.

OpenMind
Example
Car racing game bot control
In such an example, a car conditions context should contain its position and speed information. It also should refer road trajectory information. Closest to car objects could be simply gathered from loaded map object information.
What is required? Basically speaking, we only require position and speed to be the same as the best race trajectory has. Assuming the best trajectory includes an object speed information. This is the bot goal to keep as much closer to the best trajectory as it can. 
The best algorithm would cause exact match of the car trajectory to an estimated best trajectory path. This is called the win strategy.
Each iteration of the OpenMind AI powered game would have subgoals needed to reach the main goal to win. 

OpenMind Example
Bot race control : provide faculties
  • Implement «turn», «change speed» and other faculties
  • Initialize the Mind object with contexts and faculties.
  • Voila!​ An AI is ready.



OpenMind
Predictions
The OpenMind library has fully support custom predictions currently. This is good enough to implement a car racing game bot AI control. But it might be not as cozy to use to predict complex events like weather for example.
In plan to implement swappable dynamic neural network powered prediction system.
There is also an idea to implement original compile-time neural network training based on boost MPL views. Such an algorithm would allow to generate an optimized code for build in win strategy for predefined conditions.


Thanks for watching.

No comments:

Post a Comment