Skip to main content

Working towards to creating AI to writing programs for humans

In this blog, I will talk about how to create an AI to write programs for us.  This is a forward looking, exploratory note about how we should take the next step.

Goal:
1) We want software that we will have to write only once.
2) This software will write all future applications.
3) When people want a new application, we simply collect the data for every specific task.
4) Then, through observation, this master program creates a new application for us.


Current Computer Limitations
- Our computer languages are created to support the CPU hardware structure and the memory structure in 1950s.
- Our computer languages have evolved several times over.
   note: they are a functional language, a structural language, object-oriented language and declarative language.
-  They all require humans to write the code in logical and specific ways.

Different Paradigm

Current Situation:
- Humans instructs a computer on rules of processing of input data.
- Then, a computer generates some output.
- The output is in form of text, sound, motion and graphics.

Future Situation:
- Humans should tell a computer what input data we have.
- Humans should tell a computer what output data we want.
- Then, a computer should automatically come up with rules of processing to generate the expected data output.


Future is Here:
- Machine Learning and Deep Learning is about guiding a computer to figure out the rules of processing.

Current AI Limitations:
- Still difficult for an ordinary person to guide a computer with AI Library to figure out the rules of processing on a given input dataset to generate the expected dataset.
- Current AI libraries or tools are still primitive to generate a set of arbitrary rules.
- Current AI libraries or tools are narrow domain specific.
   note: eg) classify a dog vs a cat, identify an object, process spoken or written words, etc.

Next Step:
eg) Differential Programming

Note:
- This computer language was introduced with a hope of addressing the current limiations.
- Its language syntax and semantics are still stuck in back in time of 1950s.


What should be:
- We shouldn't be using a computer language to write an application.
- We should create a master program which will write all applications.
- The master program should observe to collect the data.
- The master program should generate a new application from the input data.
- Then, it should figure out the rules of processing for a new application.


Reference:
- A simple automatica derivative evaluation program. (1964)
- Evaluating Derivatives: ::: Principles & Techniques of Algorithmic Differentiation (2008)
- Automatic Differentiation in Machine Learning: A survey (2017)

Comments

Popular posts from this blog

How to use Convolution Neural Network to predict SIFT features

A feature locator is essential in all CV domain.  It's the basis of the germetric transformation, epipolar geometry, to 3D mesh reconstruction. Many techniques - SIFT and other SLAM technologies, are available, but they require ideal environments to work in. To address the short comings: - sensitive to low texture environment - sensitive to low light envonrment - sensitive to high light environment (like outdoor day light with above 20k lux) - and many other issues I propose a CNN based neural network to detect 4 correspondences in an image A and an image B. Since it is tricky to have a neural network to predict a 4x4 affine matrix of rotation and translation, I separated the translation vector from the rotation vector. Basically, the ground truth data will be precalcalated with a generic SIFT with RANSAC to calculate the correspondences set P and P'. The L2 (Eucledean) distance will be used between a predicted value.  They are 4 points, so an averaged will ...

How to improve the traditional ASR using Connectionist Temporal Classification

The traditional Automatic Speech Recognition (ASR) performs at about 85% accuracy rate.  At this rate, ASR users are often frustrated with the experience with using such a system. The tradition ASR is often fragile: 1) requires extensive modification of parameters, just to make it work. 2) requires extensive understanding of a language model and a acoustic model. 3) doesn't scale well to multiple languages. 4) hyper-sensitive to speaker variants. Deep Learning on the acoustic model has been introduced, but not much of gain in the accuracy. What if, we can do a DL from end to end? Connectionist Temporal Classification (2006) introduces an idea of using FFT on the frequency of a recording of a voice command and constructs a spectrogram at 8kHz.  At each spectrogram interval, a DL neural network can be assigned, individually. The basic idea is to have RNN output neurons to encode distribution over "symbols". The traditional ASR uses a phone...

How to train a neural network to retrieve 3D maps from videos

This blog is about how to train a neural network to extract depth maps from videos of moving people captured with a monocular camera. Note: With a monocular camera, extracting the depth map of moving people is difficult.  Difficulty is due to the motion blur and the rolling shutter of an image.  However, we can overcome these limitations by predicting the depth maps by the model trained with a generated dataset using SfM and MVS from the normalized videos. This normalized dataset can be the basis of the training set for the neural network to automatically extract the accurate depth maps from a typical video footage, without any further assistance from a MVS. To start this project with a SfM and a MVS, we will use TUM Dataset. So, the basic idea is to use SfM and Multiview Stereo to estimate depth, while serves as supervision during training. The RGB-D SLAM reference implementation from these papers are used: - RGB-D Slam (Robotics OS) - Real-time 3D Visual SLAM ...