Posts Tagged ‘Ondrej Florian’

How to Use ai-one’s Machine Learning SDK: Insights from an expert programmer

Friday, July 8th, 2011

Ondrej Florian is one of ai-one’s leading experts in developing machine learning applications. Ondrej joined the ai-one Consulting Partner program in February 2011 and is currently building systems for financial services clients from his office in Basel, Switzerland. (Since this interview was posted, Ondrej has joined the ai-one team full-time).

Olin Hyde, ai-one’s VP of Business Development, recently interviewed Ondrej Florian who answered questions about his experience using ai-one’s Topic-Mapper SDK for machine learning.

Interview with Ondrej Florian GER Version- Für eine deutsche Version dieses Interviews finden Sie hier

What has been your experience using ai-one’s technology?

It has been a long journey. I was one of the first developers to use Topic-Mapper. At first I confused by what it actually does, more then anything. Now I love it. It is amazing because it opens so many possibilities to build really cool, smart applications.

What changed your mind about ai-one? Isn’t it hard to like a system after you have a rough start?

First I had to understand that artificial intelligence (AI) is not a magic bullet. Instead, it is a completely different way to look at programming.

They key is:  You need to find the core problem then see how to use AI to build a solution.

When I first started using it, I was frustrated with the results that Topic-Mapper gave me. It felt like the answers were wrong. The system seemed to have a life of its own. I fed it data and it gave me very perplexing answers. I thought, “That cannot be right.”

Then I realized that the system was only learning what it was exposed to.

If you feed it a little, then it only knows a little. The more you feed it, the more it knows.

I love it now. It makes me think in a different way. The possibilities for developing AI applications are only limited by my imagination.

What is so different about programming with ai-one technology?

It is more like a conversation than programming. You can think of AI as giving the computer an empty brain. With AI, it has the capacity to learn and act independently.

As a programmer, I am used to computers doing what I tell them to do. They only follow directions. With AI they start to find relationships independently.

With ai-one, I had to start thinking in a different way. You must think like teaching the computer – not programming it.

Inspiration is really important. The technology allows you to do so much more than what I understood at the beginning. It is not a problem with the technical documentation as such.  The API is very simple. Very straightforward.

The hardest part is to really understand two things:

  1. What are the core problems you want to solve with AI?
  2. What data is necessary for the system to solve the problem?

Forget your ‘assumptions’ you may have about how the system should work, don’t force it.

Once you have these two questions answered, then you can think about lower level questions, like: How can I make it easier for the system to read the data the same way I do?

The key to getting the most from the technology is to think about solving problems in a totally different way. I was told this at the start by Tomi Diggelmann (ai-one’s VP of Technology). He said: “It is important to get programmers to think differently or they will not understand what they can do with ai-one.”

How they should they think about problems? What is so different about it?

ai-one is very different than the traditional API – which is just a functional technology stack (e.g., LAMP). Traditional systems have a simple goal — to extract results. Programmers look for algorithms to solve a problem, using code to sort, match, extract data.  All you need to do is read the documentation, develop test cases, then build the application to meet the test cases. The hardest part is often making sure the data is in the right format, complies with your structure, and so on.

ai-one is different. It is very dynamic. First, you don’t have to worry about data formats. You just feed data into the holosemantic space. This is may be possibly the import command. It will accept any kind of data. It makes associations among all the elements as it ingests the data.

You curate the data by asking the system questions. It will reveal a lot of associations. You teach the system to know the data the way you know it by providing it with commands for context, associations and keywords.

Are there a lot of commands to know?

Really there are just four general functions you must understand: association, reverse_association, association_check and keyword. You use these commands to ask the system to tell you what it has learned from ingesting the data. It will give you results back. And they are sometimes confusing. At beginning you get nothing or things that are seemingly irrelevant. This is a sign that you have given the system too little information. If you give the system enough information it will give you easily over 80% correct answers the first time, without any teaching. The more data, the more accurate it becomes.

ai-one” listens” to the data then tells you what the data means. This eliminates the editorial bias of the programmer.

Yes, you can teach ai-one to give you the right answer – but this must be done carefully. Like an obedient child, the system will learn exactly what you tell it.

So you just feed the system information and it gives you meaning? That sounds too simple.

You must structure the data in the right way. Teaching is only to correct mistakes. Associations that should not be there.

I understand you were frustrated when you first used the SDK?

Yes. It was confusing to me because I had to teach rather than program. Under normal circumstances the machine will only do what it is programmed to do. In a way, ai-one’s SDK has a life of its own. It learns associations based only on the inherent semantic value of the data.

Programmers must learn why the data gives them the results. Programming with ai-one’s Topic-Mapper is almost like a conversation between the programmer and the system.

So how can programmers get up to speed quickly?

Working with ai-one is interactive. The machine will tell you what it sees – the programmer must be able to set aside assumptions and see how the machine is learning. The advantage of ai-one is that it will tell you how it is forming associations.

When you interact with the system – you must think past “bugs.” The results are not bugs – they are what the machine is seeing!  It sees the data from an inherent meaning – must be structured in way that the machine sees in the way you want it to see. Remember, the machine has no bias.

You must observe and learn from the results you are getting back.

People are still trying to determine how to use AI. It has been around for a long time. And it has failed many times. What makes this different?

From a programmer’s perspective, it comes down to inspiration. Rather than programming, you are influencing. Teaching the machine to augment human understanding.  ai-one’s SDK enables the programmer to find unknowns at the start – rather than when the program breaks from having an inadequate algorithm.

Do you have a case example where ai-one’s SDK has solved an unknown problem?

Many. For example, in risk management there are many ways for a person to cheat and steal from a financial institution. So how do you monitor and prevent it?

Traditionally, programmers would use SQL to run queries against a database and use rules to isolate variance then model the variance using algorithms. Risk evaluation is essentially static – you only program what you can know. This is doomed to fail. You can’t possibly know all the risk factors.

ai-one allows you to find the unknown – the unexpected relationships between data elements that are associated with risk. You let the system tell you what data elements are associated with risk then model those!

A lot of people don’t believe ai-one’s claims. They consider them too good to be true. How do you address this doubt and mistrust?

You can’t address it by arguments. Programmers like control. This is the problem. To control something, you must know a lot about it. When data gets really big and complex, it becomes impossible to know it enough to control it.

What changed my mind about ai-one is when I understood that the SDK enables me to understand big data so that I can use machine learning to augment systems to model data more accurately.

Statistical approaches are great at handling what is known.

ai-one’s technology is not a replacement for algorithms or programming – rather it is a way to enhance the value of all the great things programmers can do!

The way to address this skepticism is with demonstration, to take them through the same experience and let them discover it for themselves.  That’s why I signed up to help ai-one with the training for new programmers.