Neural Network – really easy explained – I mean: really!


, , , , ,

There is a lot talking going on about neural networks, deep learning, artifical intelligence. When people talk about neural networks I sometimes get the impression, that they think it’s

  1. either some almost lifelike thing : „it’s like the brain!“
  2. or that it’s really complicated math stuff, which no „normal“ person can understand.

Well first things first: it’s nothing lifelike at all.

It is actually just math: just adding and multiplying numbers. And it really looks complicated. But if you bite through all this math formulas, some books and some online video tutorials you get the impression, that the basics are not some kind of „higher math“ – it’s just complicated because you have a lot of numbers to calculate with.


If you have a bunch of numbers on a page, you can get really confused, what to multiply and add with what and where. To learn this stuff and to understand it sustainably(!) I needed some simple examples with which I can repeat this stuff again and again. And I learn best, if I explain it to someone else – therefore I wanted to create a presentation about neural networks.

A couple of month ago I stumbled over Trask’s article in which he wrote a neural network in just 11 lines of code.1 That really helped me a lot in doing my slides. I reused his code to calculate the numbers you find in this article. I plan to publish my IPython notebook corresponding to this article as well. It’s just not ready yet :-)

So, have fun!


And yeah it reeeeally looks complicated in math :-)

Andrew Ng explains Neural Network Backpropagation in the coursera machine learning MOOC

Andrew Ng explains neural network backpropagation in the coursera machine learning MOOC

But do not get me wrong: Andrew Ng is a really good and really pleasant teacher and I really like his course. I still look at it form time to time, if something is unclear to me (again :-). If you had a view at my slides and still want to know more about neural networks, I highly recommend his course. The math formulas do really have their rights here, because there is no better language to encapsulate the whole calculation process in just some tiny symbols. Understanding the formulas makes it much easier to talk about changes in the calculations in different implementations of neural networks. And in the course there is more stuff about neural networks. For example how to avoid errors like the one on my last screens.

  1. In case you wonder, how you can calculate so many numbers in just 11 lines of code: That’s another story about matrix multiplication, which is just like a „writing simplification“ of doing all the equations manually – if you need to refresh your school knowledge about matrix multiplication, I highly recommend the Khan-Academy. []

Analysing DATA2 – Star Trek and Predict Who Said What via Multinomial Naive Bayes


, , , , , , , , ,

In Part 1 of analysing the „Star Trek: The Next Generation“ transcripts, I performed some statistical analysis of the characters and episodes: who has the most lines and appears in which episodes, etc.

In my new Ipython notebook I concentrated on the text itself. This was actually my first motivation to work with the Star Trek: The Next Generation transcripts from I wanted to try out some machine learning algorithms. I came up with the idea to predict which STNG character is the speaker of a text-line or just any word.

Predicting Who Said What

I would say the results are pretty convincing if you look at some phrases:

  • „My calculations are correct“ is ascribed to Data with 78% probability.  
  • Who would not have thought, that it is Troi uttered a sentence like „Captain, I’m sensing a powerful mind.“ with 73% probability
  • And who would use the word „Mom“? Obviously Wesley with 88% probability.
  • Where instead „Mother“ is a word used by Deanna Troi with 60% probability.
  • But „Deanna!“ is used by Riker, not that exclusively (just 48% probability)
  • And he is called „Number One“ by no other than Picard with almost 100% probability

Some more examples:


Also, the characters most used words are very descriptive for the characters, as we know them:


But have a look for yourself.

How to get there

To do all this, there where some steps included, which have been a real good practice in python, numpy, pandas and sklearn.

  1. I had to download and clean the data, which was a good practice in startrekng-episodes-analysis_01.ipynb.
  2. I did some statistical analysis of dataset with python, numpy and pandas in startrekng-episodes-analysis_02.ipynb.
  3. Finally we arrived in startrekng-episodes-analysis_03.ipynb, where I concentrate on predicting the speakers with the use of 2 algorithms: the „Term Frequency – Inverse Document Frequency“  and „Multinomial Naive Bayes“ („sklearn.feature_extraction.text.TfidfVectorizer“ and „sklearn.naive_bayes.MultinomialNB“)

Practical Background

To do all this, I learned a lot from the „pandas“-book and from the scikit-learn-examples like the MLComp-text-classification. And obviously almost nothing could have been done without stackoverflow.

Theoretical Background

If anyone is interested in the foundation of the algorithms, I recommend the coursera MOOC „Probabilistic Graphical Models“ by Stanford Professor Daphne Koller and the „Natural Language Processing“ course by Dan Jurafsky and Christopher Manning. Also the udacity course about Machine Learning is pretty helpful.

Analyzing DATA – Pandas, Python and Star Trek: The Next Generation


, , , ,

In the last couple of month I worked on getting my head around Numpy, Python and Pandas. Before I get into the technical challenges and talk about the steep learning curve in a following blog post – it is first frustrating but than en-lighting :-) – I need to show some results first!

I thought, before I am the 1 millionth person working on a Kaggle project, I try to get my own data set to play with…
So I came up with the idea of analyzing the transcripts of STNG. I did not have to google very long and I found some nice looking transcripts at I did some web scraping to download all the text files, and put them into a Pandas DataFrame.

Thanks to the author of the transcripts: I had to do a little data cleaning – some misspellings here, deleting some line breaks there… But there wasn’t much necessary. It’s pretty good quality!

Long story short: Have a look! Here are some examples:

The „line-pie“: the distribution of spoken lines for the 25 characters with the most spoken lines in STNG:

Picard hat obviously a lot to say…

the lines-pie


The number of episodes a character had the most lines in:

Picard not suprisingly dominated 76 episodes. But who was K’EHLEYR again ??

PICARD       76 episodes
DATA         20
RIKER        16
LAFORGE      10
CRUSHER       9
WORF          8
TROI          4
LWAXANA       3
BARCLAY       2
WESLEY        2
K'EHLEYR      2 (who was that again??)
CLARA         1
CLEMENS       1
CONOR         1
JEV           1
ARMUS         1
DURKEN        1
FAJO          1
AMANDA        1
JAMESON       1
JELLICO       1
MADRED        1
MARR          1
OKONA         1
Q             1
RAL           1
RIKER 2       1
RO            1
SALIA         1
SCOTT         1
SITO          1
SPOCK         1
ALKAR         1

Picard lost his words

In the last 50 episodes Picard had more episodes with far less spoken lines than average.


The „Crusher-Pulaski-Gap“ – Episodes 26 to 47:

And she was never seen afterwards?

the crusher-pulaski-gap


„The Timescape“-Epsiode

The one where three main characters at once talk highly over average:


What you always wanted to know about Wesley


And more, and more and more diagrams and insights

in the IPython notebook…/startrekng-episodes-analysis_02.ipynb

Have fun! Any feedback is more than welcome!



No one can tell you you can’t learn about yourself!

Rest In Peace, Scott.
Thanks for the inspiration.

These three pillars, they all have one thing in common more than anything else. They are 100 percent in our control:

No one can tell you you can’t learn about yourself.

No one can tell you you can’t push your limits and learn your own impossible and push that.

No one can tell you you can’t surround yourself with inspiring people or get away from the people who bring you down.

You can’t control a recession. You can’t control getting fired or getting in a car accident. Most things are totally out of our hands. These three things are totally on us, and they can change our whole world if we decide to do something about it.


Traust du deiner Intuition?

Teste dich selbst mit diesem kleinen Rätsel. Versuche nicht es zu lösen – folge deiner Intuition und las dich überraschen.

Ein Baseballschläger und ein Ball kosten zusammen 1,10 Euro.
Der Baseballschläger kostet 1 Euro mehr als der Ball.

Wieviel kostet der Ball?

Ich weiß was Sie jetzt denken, und sie haben Recht:
Wenn ich schon so frage, dann ist die intuitive Antwort sicher falsch.

Umso erstaunlicher, dass selbst in Aufnahmetests von Universitäten 50-80% der angehenden Studenten diese Frage falsch beantworteten. Daniel Kahneman erklärt das in seinem Buch „Schnelles Denken, langsames Denken1  mit 2 Systemen, die wir in uns haben:

  • System 1 – das intuitive, schnelle System, dass immer sofort reagieren kann – und das normalerweise stereotypisch
  • System 2 – das langsame, berechnende, denkende System, das wir immer dann anwerfen, wenn System 1 nicht weiterkommt –  und: es ist faul – es meidet jede Anstrengung.

System 1 neigt zu Denkfehlern, da es mit den „groben“ Schablonen kommt: „1,10 Euro? 1 Euro? Ja, klar: 1,10 – 1 = 0,10 Euro – feddisch!“.  Aber leider falsch. In den meisten Fällen des Alltags reichen die Urteile von System 1 völlig aus. Muss ja, sonst wären wir längst ausgestorben. Und ausgestorben wären wir wohl auch, wenn wir System 1 nicht hätten.

System 2: „Warte mal – Mähne, blitzende Augen – stimmt, das ist ein Löwe! Süß. Oh er kommt direkt auf mich zu. Ähh ..“

Aber das schnelle Urteil ist nicht immer das bessere, wie wir an dem kleinen Rätsel sehen. Provokant schreibt Kahneman weiter:

Failing these minitests appears to be, at least to some extent, a matter of insufficient motivation, not trying hard enough.


„Also bitte!“, sagt mein intuitves System 1 mit seiner political correctness.  „Hmmm…“ sagt mein System 2.


Ach so, die Lösung? 0,05 Euro – aber da sind Sie ja mittlerweile selbst drauf gekommen. :-)2


  1. Danke, Domme für die Buchempfehlung :-) []
  2. Der Baseballschläger kostet 1 Euro MEHR. Das bedeutet, dass er wieder Ball auch 5 Cent kostet plus 1 Euro:  0,05+ 1,05 = 1,10 Euro []

Ausländer sind krimineller! Statistisch erwiesen!



Folgende Tabelle stellt die kriminellen Straftaten pro Jahr von Ausländern und Inländern dar.


51 Straftaten von Ausländern und nur 59 von Inländern pro Jahr. Und pro 1000 Einwohner begehen die Ausländer DOPPELT so viele Straftaten wie die Inländer – glasklar zu sehen. Was soll daran falsch sein?

Schaut man sich das Ganze aber nach Stadtteilen getrennt an, dann fällt auf, dass der Anteil an Straftaten pro Stadtteil für beide Bevölkerungsgruppen genau gleich ist!


Das Problem entsteht, wenn man die Zahlen aus verschiedenen Quellen in unterschiedlichen Mengengrößen mischt, was leicht passieren kann!

Deutlich wird das, wenn man – vermutlich auf Grund der ersten Statistik – alle Ausländer aus der Innenstadt vertreibt.
Nun wird der Anteil an Straftaten der Ausländer fast nur noch durch das „Ghetto“ Aschefeld bestimmt.


Man vergleicht Äpfel mit Birnen und merkt es vielleicht gar nicht…

Mal angenommen ich habe einen Korb voll unverdorbenem Obst mit vielen Äpfeln und nur einer Birne. Dann habe ich einen zweiten Korb der nur verdorbenes Obst enthält – aber in gleichen Anteilen.

Nun mische ich die beiden Körbe: Man, dann sehen die Birnen danach aber alt aus…


Das war: Das Simpson-Paradox.1 Vielen Dank für den Denkstolperstein und das Beispiel von Timm Grams 

Anbei noch eine Excel-Datei zum Rumprobieren.

  1. mal wieder []

Galeere oder Kommune – Was für ein Fussballclub sind Sie?


, , ,

Heute geht es mal wieder um ein Führungsthema. Mit einem Kollegen diskutierte ich darüber, wie stark man darauf achten muss, dass in der Kernarbeitszeit alle Mitarbeiter strikt bei der Arbeit bleiben. Kernarbeitszeit bedeutet erstmal nur Anwesenheitspflicht, aber es ist diskussionswürdig, ob ein Mitarbeiter eine Stunde etwas Privates erledigt. Ich bin da ein wenig liberaler unterwegs, aber die Diskussion brachte mich zum Nachdenken – danke dafür lieber Kollege! :-)

Nehmen wir mal zwei typische Jobs: Ruderer auf einer Galeere und ein freischaffender Künstler.

Continue reading »

Automatisches Planen und künstlichen Intelligenz


, , , , ,

Planen ist ein wichtiges Teilgebiet der künstlichen Intelligenz. Zum einen aus theoretischen Gründen: wir möchten besser verstehen, wie menschliches Planen funktioniert, zum anderen aus ganz praktischen Gründen: wir möchten unsere Ressourcen effizient verplanen.

Im Alltag werden Pläne fast ausschließlich von Menschen erstellt. Sicherlich unterstützen uns Computer dabei: sie berechnen Dauern, überwachen den Bedarf an Mitteln und helfen uns beim Visualisieren von Plänen. Die  Kernfunktionen, die Entscheidung, was beim Planen beachtet werden muss und ob der Plan wirklich funktioniert, treffen wir in der Regel selbst.

Sind alle Bestandteile klar, die für den Plan benötigt werden, können Computer die Planung komplett autonom übernehmen. Eines der bekanntesten Beispiele aus dem Alltag dazu sind Navigations-Systeme. Das Finden einer optimalen oder zumindest einer sehr guten Route, sind Beispiele von automatischem Planen, wie es beim Problem des Handlungsreisenden auftritt (kam in diesem Artikel vor).

Viel schwieriger wird es im Umgang mit realen Objekten. Das klassische Beispiel aus dem Automated Planning ist ein Roboter-Kran, der Container von einer Palette auf eine andere Palette und auf einen LKW verladen kann.

Ein Kran verläd Container auf einen LKW

Ein Kran verlädt einen Container auf einen Roboter-LKW – aus Artificial Intelligence Planning

Hier wird, ähnlich wie bei der Navigation, ein Ziel-Zustand gesucht: Der Container liegt am Ende des Plans auf dem LKW.  Dazu hat das System verschiedene Aktionen wie take(Container von Palette), move(Roboter-LKW), load(Container auf LKW). Diese Aktionen müssen nun nur noch in der richtigen Reihenfolge kombiniert werden und schon hat das System seinen Plan.

Um nun zu wissen, welche Aktionen im Plan hintereinander passieren müssen, muss das System wissen, wann welche Aktionen ausgeführt werden können: Man muss modellieren, welche Aktionen welche Auswirkungen haben, und welche Vorbedingungen erfüllt sein müssen, damit eine Aktion ausgeführt werden kann.


  • take:
    • Vorbedingung: Container liegt auf Palette,
    • Effekt: Container hängt im Kran
  • load:
    • Vorbedingung: Container hängt an Kran,
    • Effekt: Container liegt auf LKW

Der findige Leser merkt aber schnell, dass das an Bedingungen nicht ausreicht. Für take muss bspw. der Kran auch leer sein. Für load muss auch der LKW leer sein und er muss an der richtigen Stelle stehen. Um von einem Start-Zustand zu einem Ziel-Zustand zu kommen, müssen die Zustände genau beschrieben sein.

Was weißt du eigentlich?!?…

Je mehr Möglichkeiten es gibt, desto mehr muss beschrieben werden, denn in der Planungs-Phase kann das System ja nicht einfach beobachten was passiert: Stehen Container in einem Stapel, dann muss der Container ganz oben sein, damit der Kran ihn nehmen kann. Habe ich zwei Paletten, dann muss der Container auf der richtigen Palette sein und so weiter und so fort.

Hier ist die Beschreibung eines solchen Zustandes. Für jeden Container ist einzeln angegeben, wo er sich gerade befindet, auf welcher Palette (in), welcher Container auf welchem steht (on) und welcher Container ganz oben steht (top).

Je mehr Container, desto mehr Schreibarbeit – aus Artificial Intelligence Planning

Bei einer Aktion muss exakt beschrieben werden, was sich alles dadurch ändert. Beispielsweise muss bei put auch festgelegt werden, welcher Container jetzt oben liegt. Das System kann in der Planungsphase ja nicht einfach beobachten, welche Container nach eine Aktion oben liegt – es muss es irgendwie „wissen“.


Was liegt jetzt oben? – aus Artificial Intelligence Planning

Man sieht schon, dass es relativ aufwändig werden kann, einen Zustand exakt genug zu beschreiben und auch die Effekt einer Aktion richtig festzulegen. Vergisst man beispielsweise bei der Operation put festzulegen, welcher Container jetzt oben liegt, dann entwirft das System einen völlig falschen Plan – oder findet gar keine Lösung.

Dass das sehr komplex werden kann, merkt man, wenn man sich überlegt, dass auf dem Container nochmal kleine Pakete liegen: Verschiebt man den Container, dann verschiebt man auch die Pakete. Das „weiß“ das System aber nicht einfach so. Für jedes einzelne Paket müsste dem System gesagt werden, wo es sich nach dem Verschieben des Containers befindet.

Man könnte sich Vereinfachungen dazu überlegen. Nach einem put könnte man automatisch berechnen, welche „Seiteneffekte“ die Aktion auf andere Objekte hat. D.h. man benötigt eine Art „Welt-Modell“, wie man es aus Computer-Spielen kennt. Bewege ich Objekt x, dann stößt es an Objekt y und bewegt dieses auch.

Hat man ein solches Welt-Modell, dann wird es einfacher. Aber das Welt-Modell muss man eben erst einmal haben. Es muss exakt genug sein, um die Werte aller Prädikate eines Welt-Zustands herauszubekommen, wie:

Zustand x =

  • „Container1 ist in Stapel1“
  • „Container1 liegt auf der Palette2“
  • „Container2 ist auch in Stapel1“
  • „Container2 liegt auf Container1“
  • „Container2 ist ganz oben in Stapel1“
  • usw…

Auch in Computerspielen entsprechen solche 3D-Welt-Modelle nie exakt der Wirklichkeit: manche Dinge kann man nicht bewegen, manchmal kann ein Spieler durch einen graphischen Fehler scheinbar in eine Wand laufen, usw.

"Alle Modelle sind falsch - aber einige sind nützlich"

„Alle Modelle sind falsch – aber einige sind nützlich“ – aus Scott Page’s MOOC „Model Thinking“

Ob man nun jedes Prädikat von Hand angibt oder von einem Welt-Modell berechnen lässt – es gibt weitere wichtige Herausforderungen:

  • Effekte – nicht alles wird durch Aktionen des Systems hervorgerufen. Vieles passiert von ganz alleine! In einer Umgebung, in der es spontane Bewegung gibt, kann es recht kompliziert sein. Wie berücksichtige ich in meinem Plan beispielsweise, ob ein Hindernis vor meinen Roboter auftaucht?
  • Replanning – wenn ein Plan nicht funktioniert – also einer der geplanten Zustände nicht erreicht wird – muss der Plan angepasst werden.
  • Zeitliche Abläufe – wartet der Plan darauf, dass ein Zustand erreicht wird, oder kann eine Aktion bereits parallel ausgeführt werden.
  • Wiederverwendbarkeit – muss berücksichtigt werden, dass Ressourcen nur einmal verwendet werden können? Wenn ein Koch-Plan das Salzen der Suppe einplant, dann muss auch Salz da sein.
  • etc.

Einfach ausprobieren?

Im letzten Artikel ging es um Reinforcement Learning. Ein System kann dort durch Ausprobieren lernen, in welchem Zustand welche Aktion am besten ist. Wenn man es oft durchlaufen lässt, dann könnte ein System doch einfach lernen, wie es seine Aktionen planen kann?

Mal abgesehen vom zeitlichen Aufwand kann man ein Programm nicht in 1000 Durchläufen versuchen lassen Container ins Leere zu stapeln oder LKWs zu beladen, die nicht da sind, bis ein passender Algorithmus gefunden ist. Das ist vielleicht doch ein wenig zu kostspielig… Dagegen kann es lohnend sein, den Lernprozess erstmal nur in einem Welt-Modell zu simulieren und nur das, was dort funktioniert, auf die Welt loszulassen. Solche Hybrid Systeme zwischen Reinforcement Learning und Automated Planning werden erforscht.

Was machen eigentlich Menschen?

Auch wir lernen durch Ausprobieren. Im Gegensatz zur „Reinforcement Learning“-Technologie probieren wir aber in einer Situation nicht erstmal alle Möglichkeiten aus. Wir nutzen interne Modelle. In unserem Kopfe drehen und wenden wir Gegenstände und setzen sie zusammen.

Menschen verbessen ihr Welt-Modell (oder eher: ihre Welt-Modelle) ständig und sind auch zu Generalisierungen und Übertragungen von (Teil-) Modellen auf andere Situationen fähig. Wir orientieren uns dabei an unserer Erfahrung, probieren Bewegungen aus, und lernen aus neuen Beobachtungen an.

Wie funktioniert das mit den Modellen beim Menschen?

Das wüssten wir gerne. Dieses konzeptionelle, übertragungs- und anpassungsfähige Lernen wird eifrig erforscht und ist noch ein großes Rätsel. Alle bisher entwickelten Systeme sind Lösungen für spezielle Probleme und Situationen. Es gibt kein System das in einer Vielzahl von Situationen oder gar im Alltag plan- und handlungsfähig wäre.

Bei meinen Recherchen bin ich bisher auf verschiedene Ansätze gestoßen und bin gespannt was da noch kommt. Mein Bild setzt sich gerade aus drei Bestandteilen zusammen:

  1. Logik und Planung –  Inferenz, Induktion, Suche: der klassische Ansatz, bei dem kognitive Fähigkeiten vor allem als Symbolmanipulationen angesehen werden: Das Welt-Modell liegt in seiner kompletten Beschreibung vor, wie oben diskutiert. Daraus lassen sich nun durch Kombination der Regeln und Suche in den Kombinationsmöglichkeiten alle Schlüsse ziehen und Regeln für die Handlungen ableiten.
  2. Wahrscheinlichkeit und Unsicherheit – Markov, POMDP, Hidden Markov, Particle Filter, Bayes Netze: Mittels Beobachtungen und modellierter Abhängigkeiten lassen sich Rückschlüsse über den aktuellen Zustand der Welt ziehen und welche Handlungen oder Urteile wahrscheinlich am besten wären.
  3. Feedback-Schleifen und Machine Learning –  Reinforcement Learning, Clustering, Support Vector Machines, Neurale Netze, Backpropagation: nach Bewertung eigener Aktionen oder durch Feedback eines Lehrers ändern sich die Werte der internen Variablen, die zur Beurteilung einer Situation genutzt werden. Man nutzt sie um Cluster und Muster in Daten zu finden, im Lernprozess von Bildererkennungssystemen oder eben Handlungsplanung.

In Anwendungen finden sich natürlich Mischformen. In der Spracherkennung (Natural Language Processing) beispielsweise, bei der Laute mit Wahrscheinlichkeiten auf Worte überführt werden und diese dann anhand von logischen Modellen in Sätzen gruppiert werden. Das Zusammenspiel der verschiedenen Ansätze kann sich gegenseitig korrigieren. So können Laute im Kontext eines Satzes neu bewertet und als andere Worte erkannt werden. Auch in der Bilderkennung werden nicht nur Neurale Netze eingesetzt und im Reinforcement Learning werden auch Wahrscheinlichkeiten beurteilt (wie wahrscheinlich ist es, dass Aktion a zu Zustand s geführt hat)

Die drei Ansätze lassen aber ganz gut erkennen, zwischen welchen Polen die  Forschung der künstlichen Intelligenz hin und her schwingt – zwischen Intern und Extern: interne Modelle müssen zu den externen Beobachtungen passen und werden über Wahrscheinlichkeiten und Feedback zugeordnet.

Die Herausforderung ist: wie dynamisch machen wir die Modelle und über welche Feedback-Schleifen verbinden wir Internes und Externes. Es ist offensichtlich unmöglich mit beschreibenden Modellen die Wirklichkeit komplett und auch noch richtig darzustellen, wie oben am Beispiel des Automated Planning klar wurde. Modelle müssen offensichtlich immer unvollständig sein und sich erweitern und verändern können, wenn neues beobachtet wird. Wie kann das technologisch möglich sein?

Mehr dazu beim nächsten Mal…

Eine Einführung in Reinforcement Learning – Ein kleines Beispiel für künstliche Intelligenz


, , , , , , ,

Vor einem halben Jahr habe ich das erste Mal die KI-Technologie Reinforcement Learning erwähnt – auf Deutsch: Bestärkendes Lernen.

Mittlerweile habe ich mich ein wenig tiefer eingearbeitet und ein kleines Beispiel programmiert, um auch ein besseres Gefühl für die Technologie zu gewinnen. Anhand dieses Mini-Progamms möchte ich Reinforcement Learning vorstellen.

Worum gehts?

Bei RL geht es im einfachsten Fall um einen Agenten, der die beste Strategie (Policy) ermittelt, um in einer Umgebung (Environment) ein Ziel (Goal-State) zu erreichen. Dabei kann er durch festgelegte Aktionen (Action) von einem Zustand (State) in den anderen wechseln, bis er letztlich den Goal-State erreicht.

Klingt noch ein wenig abstrakt. Nehmen wir ein einfaches Beispiel:
Wir haben eine Schachbrett ähnliche Fläche, in der sich ganz unten rechts (Feld „10,10“) der Agent befindet. Der Agent kann immer einen Schritt nach oben, unten, rechts oder links gehen. Er soll die beste Kombination von Schritten zum leuchtenden Ziel-Zustand (+) finden und dabei vermeiden in die schwarzen Löcher (-) zu fallen.


1- The Grid and a smiling agent

Wie kann Software das bewerkstelligen?



Continue reading »