Monday, 8 February 2016

Vision Behind Knowledge Engine

Vision Behind Knowledge Engine

Knowledge And Information:
  There is difference between information that computer store and process and knowledge that human process and think. Information is bound within framework of formats like image formats (JPEG, BMP, GIF, ..), video formats (MP4, 3GP, AVI, ..) and so on.. whereas we (humans) do not need any fixed format to process knowledge, facts are flowing freely in our mind without any boundaries or restrictions of format. We can structure the same information as vision (image+video), audio or text. Thought process is continuously digesting the information in our mind, trying to co-relate information, restructure it and evolve into better formats of knowledge. In the language of computer science, we can say, thought is an unified format that is at the top of all other data structures. The question that remains unanswered to all of us is what guides our thinking process.

Wiki Says About Machine Learning and Computational Creativity:
  Machine learning is a scientific discipline that explores the construction and study of algorithms that can learn from data. Such algorithms operate by building a model based on inputs and using that to make predictions or decisions, rather than following only explicitly programmed instructions. Computational creativity is located at the intersection of the fields of artificial intelligence, cognitive psychology, philosophy, and the arts. The goal of computational creativity is to model, simulate or replicate creativity using a computer, to achieve one of several ends:
1. To construct a program or computer capable of human-level creativity.
2. To better understand human creativity and to formulate an algorithmic perspective on creative behavior in humans.
3. To design programs that can enhance human creativity without necessarily being creative themselves.

My Perspective About Machine Creativity:
  A computer by itself can never be creative, because it always goes by a fixed formula. Creativity has no fixed formula. One is required to think out of the box to be really creative. Machine will be required to try random patterns of code for a problem and learn from them to get the best solution. In the language of machine learning, hypothesis space needs to be expanded to create new patterns of data from observed patterns.

Vision behind Knowledge Engine:
  Knowledge Engine aims to create knowledge representations that are self-adaptive, flexible (like human knowledge) and can evolve and digest the new information as knowledge, with interaction to multiple users over the web interface.
  This knowledge will act as an expert system that can be used for online learning and interactive problem solving in engineering, finance, medical and research domain.

Philosophy behind Knowledge Engine:
  Machines have capability to store and process large amount of data. We have capability to understand our world, model our problems into computer and get better solutions from knowledge of science, engineering or social domains.

Role of Knowledge Engine:
  The role of computer in problem solving has changed from 'calculator' to 'data processing equipment' in last few decades (1950's to 2010). Knowledge engine is an attempt to get a step ahead in this model where computers not only understand data getting processed, but the boundaries between data and code itself is vanished. Data will generate new code and drive new thoughts into computer (data driven complexity) or computer will generate new code by using creativity on learned code (code driven complexity).

Challenge of Knowledge Engine:
  To define some basic rules that govern the knowledge digestion and creation process to drive new thoughts and collaborate with humans with minimum friction of human computer interface.

In the next blog, we will see the state of the art tools and technologies for knowledge engine in different domains.

Wednesday, 12 March 2014

My Journey Into Computer Simulations and Knowledge Engine

Background:
As a kid I was very much interested in creating new forms of games. Besides mechanical and electrical toys, I was very much interested in designing computer games. In 8th standard, I worked upon my first programming language Q-BASIC and designed games like Ping-Pong, Hide&Seek. In my college days, I designed some games based on physics and mathematics like projectile motion, particle interaction. During my graduation in computer science and engineering, I worked on a series of lots of exciting software projects:

1. Computerized Simulation of Electronic Hardware Kit
=> I started this project with a belief that everything that electronics hardware can perform, can be expressed into mathematical form and hence can be simulated. In this app, we could make connections between electronic components and rule engine would compute (predict) result that would be produced by actual electronic circuits. I call this module as rule engine, because
Rule: Every component had a set of mathematical rules regarding how inputs affect output of the component
Engine: It needs to apply the rules onto connections data considering input/output dependency and efficient order of applying rules to get results efficiantly.
Let us call this approach of simulation as: 'Rule Based Artificial Intelligence'

2. Computerized Simulation of Path Finding Robot
=> The inspiration for this project was a group of students who aspired to build an automated robot for a competition (http://en.wikipedia.org/wiki/Micromouse). The group consisted of 3 people: one electrical engineer(Arpit), one mechanical engineer(Ganesh) and one computer engineer (me). My part was to program the autonomous robot such that it travels the whole maze and calculate the shortest path to center. I designed the algorithm assuming that its me who is lost and need to find a way out. Later I found that what I designed was a part of my studies as 'Backtracking Algorithm'(http://en.wikipedia.org/wiki/Backtracking) and 'Dijkstra's Algoritm'. (http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm).
Let us call this approach of simulation as: 'Procedure Based Artificial Intelligence'

3. Computerized Simulation Tool
=> During my graduation, I worked on simulation of a number of systems like Database System, Universal Turing Machine, Expert System. All of them involved use of programming languages to express and model the real world. Once I had a debate with my friend (Bhushan), "Is it possible to build a software without programming?". Questions of type "Is it possible.. always inspire me to try things and see if they are really impossible (Mostly they are not). But, the software to create any type of simulation was never built in full, instead the software was built to create any type of animation. The application provided a set of tools to draw basic graphics shapes and animate them. I wanted to provide a set of tools to mathematically relate graphical objects as in Adobes Flash Design Tool, but the design was not well thought to take the application to such level. Tool available in market similar to what I dreamed is: https://www.wolfram.com/system-modeler/features/modeling-simulation.html
Let us call this approach of simulation as: 'Tool Based Artificial Intelligence'

4. Computerized Simulation of Human Eye ( Optical Character Recognition)
=> Working of Human Mind has been a biggest fascination for me for all the time. Inside human mind, a neuron process electrical signals by building a neural network. Neuron is building block of this network and it functions like a pattern recognizer. Our brain is always trying to predict future and perform actions. It senses things and adjust motor activities accordingly. This learning and classification of data is a classical way to solve many AI problems. Based on this approach, we tried to implement (http://www.pranavmistry.com/projects/quickies/) intelligent sticky notes as our graduation project. It was not fully successful in terms of accuracy of image processing of characters and was not of practical use, But I got to implement 3 things that I wanted to implement in the field of artificial intelligence:
1. Use of Artificial Neural Networks to identify patterns in image ( Optical Character Recognition )
2. Use of Natural Language Processing to identify purpose of paragraph ( Email, Remainder, Calculations )
3. Use of Agent Based Architecture for natural human interaction ( http://en.wikipedia.org/wiki/Intelligent_agent )
Let us call these approaches of simulation as: 'Classifier Based Artificial Intelligence', 'Pattern Based Artificial Intelligence' and 'Agent Based Intelligence' respectively.

5. Computerized Simulation of Human Mind
=> I tried to model human mind's different functions like knowledge digestion, reasoning, creative thinking into computer, But in the end it all seems like we are feeding a program to computer to get some task automated from the computer. Computer can never function like a human mind because its underlying hardware is designed to minimize errors and human mind is designed to learn from errors and evolve. Knowledge Engine is an attempt to determine exact gap between the two things. It is like semantic web concept which aims to remove the rigidity in the data over internet and define a universal thought format. It is like a generalized expert system that simulates consciousness of human mind and is able to relate the information over internet just like a human mind does. Like a normal search engine, it improves with each user using the system to share knowledge and learns from them about different ways to analyze, learn and represent knowledge.

Details about 'How knowledge engine will work' will follow in later posts.
I invite all readers to share their views and later help in developing this search engine.

Existing Knowledge Engine: https://www.wolframalpha.com/ ( Computational Knowledge Engine )