weiter gehts auf http://www.kreatives-kreischen.de
Hier vielleicht auch – aber anders.
KopfDieKnack – Bis bald
25 Dienstag Sep 2018
Posted Uncategorized
inweiter gehts auf http://www.kreatives-kreischen.de
Hier vielleicht auch – aber anders.
KopfDieKnack – Bis bald
26 Samstag Mrz 2016
Posted Artificial Intelligence, Technologie
inThere 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
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
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.
24 Sonntag Jan 2016
Tags
AI, artificial intelligence, machinelearning, multinomial naive bayes, naive bayes, nlp, picard, star trek, stng, tfidf
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 chakoteya.net: 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.
I would say the results are pretty convincing if you look at some phrases:
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.
To do all this, there where some steps included, which have been a real good practice in python, numpy, pandas and sklearn.
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.
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
11 Montag Jan 2016
Posted Data Analytics, Technologie
inTags
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 chakoteya.net. 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 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 PICARD JR 1 Q 1 RAL 1 RASMUSSEN 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 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 github.com/…/startrekng-episodes-analysis_02.ipynb
Have fun! Any feedback is more than welcome!
17 Samstag Okt 2015
Posted Motivation
inRest 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.
27 Donnerstag Aug 2015
Posted Learning, Motivation
inTeste 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 Denken“1 mit 2 Systemen, die wir in uns haben:
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
17 Montag Aug 2015
Posted Data Analytics, Learning
inTags
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.
25 Donnerstag Jun 2015
Posted Leadership, Organisation
inTags
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.
26 Donnerstag Feb 2015
Posted Artificial Intelligence, Technologie
inTags
AI, intelligenz, ki, machinelearning, planning, programmieren
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ä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.
Beispielsweise:
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.
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 =
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“ – 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:
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.
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.
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:
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…
15 Donnerstag Jan 2015
Posted Artificial Intelligence, Technologie
inVor 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.
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.