Neural Turing Machine

Neural networks have a long history. Their latest achievement so far were the image recognition challenge with so called Convolutional neural networks. Additional to CNNs many other kinds are out there for example: RNN, LSTM, NTM and “Differentiable neural computer”. The last one is so far the most advanced neural network ever invented. It can do all the tasks what a normal turing-machine can do but it is trainable. It is similar to genetic programming.

So, what can we do with an Neural turing machine which has memory? Not as much, in the arxiv paper only simple examples are give like copying bits from place a to place b. That is not very impressive. A neural turing machine is capable for inferencing a single part of a broader algorithm. The question is, of how to make that usable for solving complex task? One possibility is to combine a NTM with “language grounding”. Grounding means to connect a problem solving technique with natural language. For example, task1 is called “grasp”, task2 is called “ungrasp” and task3 is called “move”. Every task is represented by a NTM and is learned separately. Solving complex tasks means to put the verbs together to a sentence like “grasp, move, ungrasp”.

The main problem with all Neural networks is the high cpu usage. In theory they can learn long programs, in reality this would takes millions of years to run on a gpu hardware from nvidia. Only if the problem is small and compact it is possible to train the neural network in a short time period. For example, a problem like “add 2 to input” can be learned by a neural network easily. After some examples “0+2=2, 10+2=12, -5+2=-3” the network has found the algorithm for his own. This function represents the word “add”. The problem is, that a normal computerprogram consists of many subtasks.

A good testbed for implementing neural turing machines is a multimodal games. That games have to be solved with “Reinforcement learning” in combination with language grounding. Instead of only go to a certain place (which can be learned easily by all kinds of neural networks) the agent has to do abstract tasks like climbing a ladder, open a door and so forth. This result is a hierarchical architecture which consists of a lowlevel and a highlevel layer. The lowlevel tasks are solved with neural networks, the high level tasks with language.


In a recently published paper “Beating Atari with Natural Language Guided Reinforcement Learning”, a sophisticated neural network is presented which can solve the game “Montezuma’s Revenge”. From a technical point of view, the authors (all from Stanford university) call this principle “Reinforcement learning”. But the main reason why the game was solved is located in the grammar. In the appendix of the paper the 18 different commands are presented, for example “go to the right side of the room”. These commands are working as options, which is equal to a multimodal-neural network. Has the neural network found the commands alone? No, the commands where coded by hand. So the solver is not really an example for reinforcement learning but is a handprogrammed hierarchical macro. The correct name for the paper would be “Scripting AI for language grounding in Atari Games”.

According to the paper, the subactions were learned by the network. But it would also be possible to coding them manual. For example the task “climp down the ladder” can be expressed as a short piece of code which navigates the agent the ladder down. Even without any kind of reinforcement learning it is possible to solve the Atari game.

It remains the question of how to find the commands and the implementations for a given problem. If the game is not “Montezuma’s Revenge” but Tetris, then the grammar looks different. Finding such grammar without human programmers seems impossible. To express this problem in detail: suppose we are removing one command of the task list. Instead of 18 commands, the agent has only 17 commands. And the task is to find the removed command. It seems difficult or even impossible to do so. For example: if we remove both climb commands, how should the neural network know, that climb is the right word for using the ladder? The only place where such information can be found is a walkthrough tutorial which is normally written in english language. So before building a reinforcement learning solver, a natural language parser is necessary and additional a searchengine for finding such walkthrough tutorials.

Another possibility are plantraces which is utilized by “Learning to Interpret Natural Language Navigation Instructions from Observations”, On page 2 they give some details about how the learning proecudure works. As input pattern the system gets:

– natural language instructions

– observed action sequence

– world state

From technical point of view it is possible to formalize the learning steps into an authoring system. Because the observed action sequence and the worldstate is given by the game, only the language instruction is missing. So if the human-operator gets a microphone and say loud the action what he is doing now, than a huge corpus can generated in short timeperiod. This corpus is feed into the neural network …


AI for tactical manoeuvres?

I read recently the question and I want to answer not on stackexchange directly but here in my blog. At first, your previous done research into the direction of GOAP and Behaviour trees is perfect for implementing a game AI. There is nothing which are better suited. To the concrete question of how to implement a “Flanking manoeuvre” with an AI the answer is simple: Versioncontrol. That is the development technique which was done in the famous F.E.A.R. game for programming the AI by hand, and this is also the best-practice method for programming your own AI. Version control means, that the project starts with the command “git init” for building a new “.git” folder from scratch and then the programmers have the job to implement the “edit-compile-run” cycle.

In most cases the workflow is similar to painting of an image. It starts with a sketch. On that sketch 3-4 different manoeuvres are visualized and the programmer have the task to implement this with procedural animation in runnable sourcecode. It takes many manhours. If the programming team is really good, they are using natural language as an intermediate authoring tool, so they can write “Team A is attacking place b from left with a circle of 45 degree. Team B is attacking place b at the same time from right with 90 degree flanking.” Than a parser would generate from the natural language a motion pattern for controlling the units in the game.

Introduction to Mindforth

What Mindforth is remains unclear. The official documentation isn’t really self-explaining. According to the author Arthur T. Murray, Mindforth is some kind of Strong AI also known as AGI. This means perhaps, that Mindforth is capable of doing the following task?:

– Electronicdave2, Human-Level-AI,

But if this is right, it is not explained in the documentation, so it is for the public hard to understand of how to using the software. A more common explanation gives a side-project of Mindforth which is also called a Strong AI: Open-NARS. This project is well documented and on is a small example given of how the software works. It looks a bit like genetic programming simulator

According to the inventor, Pei WANG, NARS is a “general-purpose intelligent system … a nonaxiomatic reasoning system, on natural language data. “ It was created in the 2000s but the concept itself is older. SOAR and ACT-R are similar projects. To give a context for this research it is important to know, that not Artificial intelligence is the aim of such projects, instead the aim of SOAR, NARS, OpenCOG and Mindforth is to emulate the human-brain with a mathematical model. That is typical for the 1950s which was influenced by Cybernetics. The consequence of this simulation goal is, that AGI software is mostly not capable to fulfil any real tasks like controlling a robot. This type of software is normally called Narrow AI and stays in contrast to AGI.

The problem of all these AGI projects is, that the grounding is missing. That means a challenge outside of the software with rules, which must be solved by the software. The consequence is, that inside the AGI research the inventors build their own challenges which only proves that the software is correct. Or to explain the dilemma a bit colloquial: NARS make no sense.

Why AGI research is even today so common in academic artificial intelligence has something to do with the above cited historian Cybernetics. Cybernetics is not exactly a technique inside computing, but it’s more a time period of the 1950s-1960s. To understand cybernetics it is important to know, that in this timeperiod no computers were existing but the researcher nevertheless wanted to build intelligent machines. Some people say, that Cybernetics wasn’t a engineering discipline but a social doctrine. It was a mixture of psychology plus sociology, enriched with mathematics. Because Cybernetics and AGI have not demonstrated any real results like walking robots or machine translation it was replaced by a counter-movement called Narrow AI. Instead of simulating the human brain, Narrow AI tries to solve real problems. Narrow AI is challenge driven, that means that at first a task is given like “translate a sentence from german to english” and than the software must prove that it can handle the task. Often Narrow AI fails, but this is accepted.

AGI memory als cyclical graph theory map?

Auf den ersten Blick klingt die Idee attraktiv und sie wird auch in wiederholt doch leider ist die Aussage so nicht korrekt, dass eine AGI einen zyklischen Graphen als Memory verwendet. Die Aussage ist ungefähr genau falsch, wie als wenn Claude Shannon sagt, dass seine Maus die durchs Labyrinth wandert etwas lernen würde und dadurch den Weg schneller findet. Im Grunde geht es weniger darum, die Funktionsweise der Software zu erklären sondern darum das Publikum zu täuschen. Also davon ausgehen, dass es die Wahrheit nicht versteht und deshalb mit Analogen aus den Neurowissenschaften zu langweilen. Mag sein, dass man im universitären Umfeld Applaus dafür erhält, die Funktionsweise von Künstlicher Intelligenz mit psychologischen Vereinfachungen zu erläutern aber aus Sicht von Narrow AI ist Künstliche Intelligenz zunächst einmal eine Software die in C++ geschrieben wird, auf x86 Hardware ausgeführt wird. Im Referenzmanuell zu C++ jedoch gibt es keine Datenstruktur namens „graph memory“, was man jedoch hat sind Klassen, Arrays und Pointer. Also mein Rat ist, wenn das nächste Mal angedacht ist, die Funktionsweise von technischen Systemen zu erläutern, doch bitteschön dies im Standard-Vokabular der Informatik zu tun und nicht irgendwelche neuen Begriffe zu erfinden die mit Narrow AI nichts zu tun haben.

ican the Robot verstößt gegen die Asimov Gesetze,

Der ican Roboter der aktuell in Disneyland Tomorrowland herumfährt hat in einem Video erläutert wie seine Programmierung funktioniert. In einer Gesprächssituation, die ursprünglich etwas damit zu tun hatte, ob ein Song von Justin Bieber abgespielt wird oder nicht sagte ican ab Zeitindex 3:11:

„I’m programmed to accept any commands as long as they not harmfull to myself or to you guys.“ (nasale Aussprache von „guys“)

Offenbar ist diese Programmierung aber nicht besonders effektiv. Ican sagt im nächsten Satz, dass Justin Bieber schädlich für jeden ist, er aber sich dem Zuschauervotum beugt und den gewünschten Song trotzdem abspielt. Insofern hat ican hier eine moralische Abwägung getroffen welche sich über das erste Asimov Gesetz hinwegsetzt.


Die obige Abbildung zeigt einen ersten Entwurf einer Agenten-Architektur. Es beschreibt weniger einen Algorithmus sondern einen Software-Entwicklungsprozess. Alle wesentliche Element sind darin enthalten und führen zur Programmierung einer künstlichen Intelligenz, also einer Software die beliebige Spiele spielen kann. Die Aufgabe des Programmierers besteht darin, eine Wikihow Anleitung in C++ Code zu übersetzen und damit die Knowledgebase, die Behaviors sowie den eigentlichen Agenten zu implementieren. Das klingt jetzt erstmal sehr abstrakt. Für eine konkrete Aufgabe wie z.B. eine Trafficsimulation reichen bereits 200 Codezeilen dafür aus, verteilt auf 3 Klassen und über unterschiedliche Methoden verteilt. Sowas kann man theoretisch auch als One-Man-Projekt realisieren.

Warum Narrow AI der bessere Weg ist

Komplett unversöhnlich gegenüber stehen sich derzeit zwei Spielarten der Künstlichen intelligenz: einmal die offizielle KI, welche als Strong AI oder AGI bezeichnet wird und das Ziel verfolgt kognitive Architekturen und integrative Systeme voranzubringen und auf der Gegenseite gibt es die Narrow AI welche auf theortischen Ballast verzichtet und lieber an schnellen Erfolgen interessiert ist. Der Neueinsteiger steht diesem Grabenkampf etwas hilflos gegenüber weil beide Richtungen behaupten, sie würden sich mit Künstlicher Intelligenz auskennen.

Schauen wir uns innerhalb der AGI Community nachdenkliche Stimmen an, welche sich zwar einerseits der Strong AI verpflichtet fühlen gleichzeitig aber so mutig sind leise Kritik zu äußern. Auf den Punkt gebracht mangelt es AGI an Benchmarks, also an regulären Wettbewerben aus dem Bereich Robotik mit der man Software gegeneinander antreten lässt. Historisch bedingt werden Systeme wie SOAR, LISP, ACT-R oder OpenCOG aus sicht selbst heraus erklärt. Auch Mindforth fühlt sich dieser Tradition verbunden dass Neueinsteigern die wissen wollen wie das System funktioniert erstmal die Grundlagen des Menschlichen Denkens nähergebracht werden. Nur, eigentlich ist es vollkommen egal wie eine kognitive Architektur intern funktioniert, weil sich die Öffentlichkeit eher dafür interessiert ob nun ACT-R oder SOAR das bessere System ist.

Dieses Urteil zu fällen ist erstaunlich simpel. Man braucht neben der Software einfach einen Wettbewerb wie Mario AI, Robocup, Micromouse oder was auch immer wo man dann die unterschiedlichen AGI Ansätze vergleicht. Leider fehlt es bis heute an solchen Wettbewerben. Was es gibt sind lediglich Paper, die ebenfalls auf diesen Mangel hingewiesen haben ohne dass sich daraus irgendwelche Folgen ergeben haben. Ganz anders bei der Narrow AI, auch dort ist man an kognitiven Systemen, Robotik und vielleicht sogar LISP interessiert, der Unterschied besteht darin, dass man auf objektives Benchmarking abzielt. Im Grunde wird die Software und das dahinterstehende philosophische Konzept als wertlos erachtet, solange es nicht in einem regulären Wettbewerb gegen ernsthafte Gegner gewonnen hat. Ein wenig ketzerisch formuliert kann man bei Robocup sogar mit einem BASIC Programm antreten was man letzte Nacht auf dem C-64 programmiert hat solange das Programm den Ball ins Tor bringt stört sich daran keiner.

Weil Narrow AI historsich bedingt sehr viel stärker auf objektive Vergleichstests abzielt hat diese Spielart der Künstlichen Intelligenz einen Vorteil. Es werden jene Algorithmen und Architekturen als wertvoll bezeichnet die eine hohe Punktzahl in den Wettbewerben erzielen. Keine so dumme Idee, wenn man NRobotik voranbringen möchte. Trotzdem sollte man nicht vergessen dass die AGI Bewegung bzw. Strong AI die eigentliche Künstliche Intelligenz darstellt. Das heißt nach diesem Ansatz wurde zuerst ab den 1950’er erforscht was Denken ist und wie man es auf den Computer bringt. Narrow AI kam erst später hinzu als man enttäuscht war, mit der klassischen KI Forschung keine Fortschritte erzielt zu haben. Bis heute wurde übrigens alles was innerhalb von Narrow AI auf konkreten Robotern eingesetzt wird, viele Jahre zuvor von der AGI Community entwickelt. Nur genau das kann man auch als Nachteil betrachten. Im Verlauf von 50 Jahren Informatik Geschichte wurde unter dem Stichwort Künstliche Intelligenz vermutlich schon jede noch so abseitige Theorie proklamiert so dass es am Angebot keinen Mangel gibt. Woran es mangelt ist eine Auswahl, also was aus dem Methodenkasten sinnvoll in echten Robotik eingesetzt werden kann und auf was man gut verzichten kann.