{"id":16674,"date":"2020-08-28T07:16:25","date_gmt":"2020-08-28T05:16:25","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=16674"},"modified":"2025-07-24T17:15:30","modified_gmt":"2025-07-24T15:15:30","slug":"ki-fast-alles-was-ich-darueber-weiss-teil-2-neuronen","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2020\/08\/ki-fast-alles-was-ich-darueber-weiss-teil-2-neuronen.htm","title":{"rendered":"KI: Fast alles, was ich dar\u00fcber wei\u00df (Teil 2: Neuronen)"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2020\/08\/ki-fast-alles-was-ich-darueber-weiss-teil-2-neuronen.htm#comments'>7 Kommentare.<\/a>)<\/small> <\/div>\n<p><a href=\"https:\/\/www.herr-rau.de\/wordpress\/2020\/08\/ki-fast-alles-was-ich-darueber-weiss-teil-1.htm\">Im ersten Teil<\/a> ging es um allgemeine Gedanken, diesmal will ich etwas konkreter werde. Der Ausgangspunkt war der: Ein Computersystem soll lernen, Muster zu erkennen, also f\u00fcr uns eine Reihe von Datens\u00e4tzen zu kategorisieren. Das k\u00f6nnen eine Menge als Farbwerte interpretierbare Zahlen sein, die das System als Ziffer erkennen soll:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"231\" height=\"218\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_mnisttest1.png\" alt=\"\" class=\"wp-image-16657\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_mnisttest1.png 231w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_mnisttest1-150x142.png 150w\" sizes=\"auto, (max-width: 231px) 100vw, 231px\" \/><\/figure>\n\n\n\n<p>Das kann ein Punkt in einem zweidimensionalen Koordinatensystem sein, bei dem das System entscheiden soll, ob der Punkt &#8222;links oben&#8220; sein soll. Hier ist eine Darstellung von ein paar hundert solcher Punkte:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"282\" height=\"256\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_kleinundlaut2.png\" alt=\"\" class=\"wp-image-16649\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_kleinundlaut2.png 282w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_kleinundlaut2-150x136.png 150w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><\/figure>\n\n\n\n<p>Genau genommen geht es nicht um Punkte, sondern um zwei Werte, x und y, von denen der erste eher klein und der zweite eher gro\u00df sein soll &#8211; &#8222;links oben&#8220; ist nur die Kurzfassung. <\/p>\n\n\n\n<p>Diese letzte Art der Kategorisierung ist sch\u00f6n einfach, fangen wir mal mit der an. F\u00fcr die reicht n\u00e4mlich ein ganz einfaches Modell, das an eine menschliche Nervenzelle angelehnt ist.<\/p>\n\n\n\n<div class=\"wp-block-group has-pale-cyan-blue-background-color has-background is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Perzeptron<\/h2>\n\n\n\n<p>Eine Nervenzelle oder Neuron ist eine Zelle, die ein Signal empf\u00e4ngt und dieses dann an weitere Zellen weiterleitet, oder auch nicht &#8211; je nach St\u00e4rke der Eingangsreize. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"509\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_nervenzelle_bio.jpg\" alt=\"\" class=\"wp-image-16724\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_nervenzelle_bio.jpg 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_nervenzelle_bio-300x218.jpg 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_nervenzelle_bio-150x109.jpg 150w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>An den Dendriten kommen Signale von anderen Zellen an, hier sind es zwei, es k\u00f6nnten auch mehr sein. Je nachdem, ob an den Dendriten gen\u00fcgend starke Signale ankommen, diese also einen bestimmten Schwellenwert \u00fcbersteigen, wird \u00fcber das Axon ein neues Signal an die n\u00e4chste Zelle weitergeleitet. (Die Verbindung zwischen zwei Neuronen hei\u00dft synaptischer Spalt, an den Biologieunterricht dazu kann ich mich noch gut erinnern, und weil ganz viele, vor allem biologische Gifte die Signalweitergabe um den synaptischen Spalt herum blockieren.)<\/p>\n\n\n\n<p>Neuronale Netze als Algorithmus arbeiten ebenfalls mit Neuronen. Ein einzelnes Neuron hei\u00dft auch einfaches Perzeptron. Es funktioniert ein bisschen wie ein abstrahiertes biologisches Neuron und es kann schon eine ganze Menge.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"315\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neruon_skizze.jpg\" alt=\"\" class=\"wp-image-16702\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neruon_skizze.jpg 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neruon_skizze-300x135.jpg 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neruon_skizze-150x68.jpg 150w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Das Neuron ist nur ein bisschen mathematischer: F\u00fcr jeden Eingang gibt es eine Gewichtung, die mit dem jeweiligen Eingangswert multipliziert wird. Die Produkte werden zusammengez\u00e4hlt, und wenn sie gr\u00f6\u00dfer als ein bestimmter Schwellenwert sind, wird ein hoher Wert weitergeleitet (standardm\u00e4\u00dfig 0.99), ansonsten ein niedriger Wert (0.01). Ist die Gewichtung f\u00fcr einen Eingang 0, spielt dessen Wert f\u00fcr das Ergebnis keine Rolle, ist sie negativ, macht sie das Weiterleiten schwieriger, ist sie positiv, erleichtert sie das Weiterleiten &#8211; immer abh\u00e4ngig von den konkreten Eingangswerten. <\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Herumspielen mit einem einfachen Perzeptron<\/h2>\n\n\n\n<p>Weil ich mir das dann besser vorstellen kann, habe ich mir ein Programm gebaut und damit herumgespielt. Mein Neuron hat erst einmal nur zwei Eing\u00e4nge, damit man das grafisch in einem Koordinatensystem zeigen kann.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"451\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java1-700x451.png\" alt=\"\" class=\"wp-image-16704\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java1-700x451.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java1-300x193.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java1-150x97.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java1.png 859w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Die Position des gezeichneten Punktes stellt die Eingangswerte dar: x = 0.92443, also recht hoch, und damit ziemlich weit rechts, und y = 0.3325, also unteres Drittel. Die Farbe des Punktes, schwarz, stellt dar, dass das Neuron f\u00fcr diese Eingangswerte einen niedrigen Wert ausgibt, 0.01. Wie das Neuron zu dieser Entscheidung kommt, liegt an der Gewichtung und Bias, mit umgekehrtem Vorzeichen am Schwellenwert genannt: Die Produkte der Eingangswerte und der Gewichtungen werden zum Bias addiert (das deswegen bei mir meist negativ ist), und wenn das Ergebnis gr\u00f6\u00dfer ist als 0 (hier ist es: -0.35034), dann entscheidet das Neuron auf 0.99. Alle niedrigen Werte sind rot, alle hohen gr\u00fcn markiert.<\/p>\n\n\n\n<p>Wenn ich das mit 400 zuf\u00e4lligen Punkten mache, kommt das heraus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"451\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java2-700x451.png\" alt=\"\" class=\"wp-image-16707\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java2-700x451.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java2-300x193.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java2-150x97.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java2.png 859w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Man k\u00f6nnte auch sagen: Dieses Neuron \u00fcberpr\u00fcft, ob ein Punkt eher links oben ist, vielleicht mit einem Stich nach Mitte oben hin. Das liegt an den Gewichtungen. Das gleiche Neuron zeigt bei anderen Gewichtungen ein ganz anderes Entscheidungsverhalten:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"451\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java3-700x451.png\" alt=\"\" class=\"wp-image-16708\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java3-700x451.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java3-300x193.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java3-150x97.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java3.png 859w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Hier entscheidet das Neuron, ob die Punkte eher in der oberen H\u00e4lfte sind, wobei es bei gr\u00f6\u00dferen x-Werten (also dem ersten Eingangswert) ein bisschen mehr y-Wert verlangt (den zweiten Eingangswert) als bei niedrigen.<\/p>\n\n\n\n<p>Durch Herumspielen kriegt man heraus, welche Art Entscheidungen so ein Neuron grunds\u00e4tzlich zu treffen in der Lage ist: Alle Unterscheidungen, die anhand einer Linie quer durchs Koordinatensystem vorgenommen werden k\u00f6nnen. F\u00fcr manche davon muss der Bias-Wert allerdings positiv sein, etwa f\u00fcr &#8222;nur die linke H\u00e4lfte&#8220;: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"451\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java4-700x451.png\" alt=\"\" class=\"wp-image-16709\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java4-700x451.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java4-300x193.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java4-150x97.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java4.png 859w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Das w\u00e4re eine denkbare Aufgabe f\u00fcr Sch\u00fcler und Sch\u00fclerinnen: Finde heraus, welche Muster sich \u00fcberhaupt erzeugen lassen beziehungsweise welche Entscheidungen ein Neuron \u00fcberhaupt treffen kann. Und dann gibt man ein paar Muster vor und l\u00e4sst sie Werte suchen, die diese Muster erzeugen. Und dann m\u00fcssen sie erkl\u00e4ren, warum das so ist: Im Bild oben sieht man an der Gewichtung, dass der y-Wert gar keine Rolle spielt, er wird immer zu 0 umgerechnet. Der y-Wert wird mit negativem Vorzeichen versehen, bewegt sich also zwischen 0 und -1 &#8211; und wenn man dann den Bias abzieht, also 0.5 addiert, hat man eine 50%-Chance, \u00fcber 0 zu kommen.<\/p>\n\n\n\n<p>(Kann man nicht einfach den Bias negativ lassen und den y-Eingang mit +1 gewichten? Ausprobieren macht klug!)<\/p>\n\n\n\n<p>\u00dcbrigens: Bei drei Eingangswerten kann ein solches Neuron eine Unterscheidung machen zwischen allen Punkten, die getrennt werden durch eine Ebene, die ein dreidimensionales Koordinatensystem, also einen W\u00fcrfel, schneidet. Und so weiter in h\u00f6here Dimensionen, aber das l\u00e4sst sich alles schlecht zeichnen.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<p><strong>Hier das ganze als Video:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Ein Neuron mit zwei Eing\u00e4ngen und Visualisierung\" width=\"500\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/9-3sJJIbfZU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-pale-cyan-blue-background-color has-background is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Was mit einem einfachen Perzeptron geht<\/h2>\n\n\n\n<p>Wenn beide Eingangswerte hoch sind, und nur dann, soll das Neuron mit 0.99 reagieren. Das entspricht der<strong> logischen UND-Funktion: <\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"451\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_und-700x451.png\" alt=\"\" class=\"wp-image-16711\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_und-700x451.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_und-300x193.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_und-150x97.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_und.png 859w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>(Wie hoch die Werte dabei genau sein m\u00fcssen, das l\u00e4sst sich \u00fcber Bias und Gewichtung regeln. Bei der Grafik oben m\u00fcssen sie schon beide recht hoch sein.)<\/p>\n\n\n\n<p>Wenn mindestens einer der beiden Eingangswerte hoch ist, soll das Neuron mit 0.99 reagieren. Das entspricht der<strong> logischen ODER-Funktion<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"451\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_oder-700x451.png\" alt=\"\" class=\"wp-image-16712\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_oder-700x451.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_oder-300x193.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_oder-150x97.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_oder.png 859w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>(Man sieht: Nur in F\u00e4llen, wo die Eingabewerte beide ziemlich klein sind, reagiert das Neuron mit 0.01.)<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Was mit einem einfachen Perzeptron <em>nicht <\/em>geht<\/h2>\n\n\n\n<p>Wenn genau einer der beiden Eingangswerte hoch ist, aber nicht beide, soll das Neuron mit 0.99 reagieren. Das entspricht der <strong>logischen XOR-Funktion. <\/strong>Und das kann ein Neuron nicht.  Schade! Auch das letztlich \u00e4quivalente Problem der Entscheidung, ob die beiden Eingangswerte <em>\u00e4hnlich<\/em> sind, also beide eher gro\u00df oder beide eher klein, kann ein einfaches Perzeptron bestehend aus einem Neuron nicht l\u00f6sen.<\/p>\n\n\n\n<div class=\"wp-block-group has-pale-cyan-blue-background-color has-background is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Was mit einem etwas komplexeren Perzeptron dann <em>doch <\/em>geht<\/h2>\n\n\n\n<p>Ich kann mir ein logisches XOR zusammenbauen aus drei einfachen Neuronen. Dazu brauche ich ein Neuron, das &#8222;ist rechts unten&#8220; \u00fcberpr\u00fcft, logisch: X AND (NOT Y), also hohes x und niedriges y. Und ein Neuron, das &#8222;ist links oben&#8220; \u00fcberpr\u00fcft, logisch: (NOT X) AND Y, niedriges x und hohes y. Und das dritte Neuron kennen wir schon, das ist auf &#8222;oder&#8220; eingestellt:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1384\" height=\"554\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_xoder.png\" alt=\"\" class=\"wp-image-16730\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_xoder.png 1384w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_xoder-300x120.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_xoder-700x280.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_xoder-150x60.png 150w\" sizes=\"auto, (max-width: 1384px) 100vw, 1384px\" \/><\/figure>\n\n\n\n<p>Die Ergebnisse der neuen vorgelagerten Neuronenschicht, zwischen Eingang und Ausgangsneuron, werden an die Eing\u00e4nge des Ausgangsneurons weitergeleitet. Damit gibt mir das Gesamtkonstrukt 0.99 aus, wenn genau einer der Eingangswerte hoch ist, sonst 0.01. Grenzwerte anpassbar.<\/p>\n\n\n\n<p>Damit kann man dann auch so etwas bauen, wo Punkte im rechten oberen Quadranten akzeptiert werden:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"280\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_rechtsundoben-700x280.png\" alt=\"\" class=\"wp-image-16870\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_rechtsundoben-700x280.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_rechtsundoben-300x120.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_rechtsundoben-150x60.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_rechtsundoben.png 1384w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Das obere Neuron \u00fcberpr\u00fcft, ob ein Punkt rechts ist (x gro\u00df, y egal). Das untere Neuron \u00fcberpr\u00fcft, ob ein Punkt unten ist (x egal, y gro\u00df). Und das rechte Neuron ist wieder ein schlichtes <em>und<\/em>-Neuron. Ergebnis: Die Punkte, die sowohl in der oberen als auch in der rechten H\u00e4lfte sind, werden erkannt.<\/p>\n\n\n\n<p>Auch hier k\u00f6nnte man wieder sch\u00f6n Muster vorgeben und experimentieren lassen, wie sie sich erzeugen lassen. Oder als Textaufgaben stellen: Alle Punkte, die rechts oben <em>oder <\/em>links oben sind &#8211; was muss man da einstellen? Geht das mit drei Neuronen \u00fcberhaupt? (Klar.)<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Erweiterungen<\/h2>\n\n\n\n<p>Wenn etwas nicht geht, dann k\u00f6nnte man ja weitere Neuronen einf\u00fchren, zus\u00e4tzlich zu den beiden neuen. Oder gar eine weitere Schicht Neuronen davor einf\u00fcgen. Aber dann sind wir schon beim neuronalen Netz und nicht mehr beim Perzeptron: Aus den kleinen Neuronen-Bausteinen kann ich mir wie aus Logikgattern ganze Schaltkreise zusammenbauen, mit denen ich beliebige Funktionen umsetzen kann. Wenn jedes Neuron ein UND- oder ODER- oder vergleichbarer Baustein ist, und ich genug Neuronen miteinander verbinde, kann ich mir beliebig komplexe Funktion daraus bauen: wenn Eingang 1, aber nicht Eingang 2, au\u00dfer wenn Eingang 3&#8230; Die &#8222;Programmierung&#8220; dieses Neuronenhaufens besteht dann nur aus den Gewichtungen und Bias-Werten der Neuronen. Dann kann mir dieser Neuronenhaufen, wenn er gro\u00df genug ist, auch aus beliebigen 748 Eingangswerten berechnen, ob sie einer Ziffer entsprechen, und wenn ja, welcher:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"231\" height=\"218\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_mnisttest1.png\" alt=\"\" class=\"wp-image-16657\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_mnisttest1.png 231w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_mnisttest1-150x142.png 150w\" sizes=\"auto, (max-width: 231px) 100vw, 231px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group has-pale-cyan-blue-background-color has-background is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Wo das Problem ist<\/h2>\n\n\n\n<p>Ich kann mir also einen Quasicomputer aus Neuronen zusammenbauen, der f\u00fcr mich rechnet&#8230; ich muss ihn nur programmieren, also die Neuronen mit den richtigen Werten versehen. Und das sind sehr viele. (Das muss so sein, weil es eine schwierige Aufgabe ist.) Wenn ich 10 Ausgangsneuronen und 784 Eingangswerte und, sagen wir, 100 Zwischenneuronen habe, dann sind das 796000 Gewichtungen (jeweils Eing\u00e4nge und Bias) in 110 Neuronen. Wenn ich von vornherein w\u00fcsste, mit welchen Werten ich diese Gewichtungen versehen muss, dann w\u00e4re ich fein heraus. <\/p>\n\n\n\n<p>Ich habe noch dazu wenig Ahnung, was eine Ziffer 7 eigentlich ausmacht. Ich meine, ich erkenne sie, aber in einem Algorithmus festzuhalten, woran ich sie erkenne&#8230; das ist schwierig. Irgendwo gibt es vielleicht am Ende ein Neuron, das entscheidet, ob ein halbwegs waagrechter Strich da ist, und ein weiteres, das einen halbwegs senkrechten erkennt (aber wie halbwegs genau?) und ein drittes, das ihr Verh\u00e4ltnis beurteilt&#8230; aber wie dahin kommen?<\/p>\n\n\n\n<p>Die L\u00f6sung: Es gibt eine M\u00f6glichkeit, dass diese 796000 Gewichtungen (oder drei, wie meist in meinen Beispielen oben) sich <em>quasi von selbst<\/em> einstellen. Dazu muss ich das Netz oder das Perzeptron mit genug Beispielen f\u00fcttern, an denen es dann lernt. Und darum wird es vermutlich im n\u00e4chsten Teil gehen, falls ich mich dazu aufraffe: Was ein neuronales Netz ist, was man damit machen kann, und wie man es trainiert.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Fu\u00dfnote: Was ich weggelassen habe<\/h2>\n\n\n\n<p>Mein Neuron oben gibt immer nur 0.99 oder 0.01 zur\u00fcck, abh\u00e4ngig von der Summe von Bias und Gewichtung*Eingangswert. In einem neuronalen Netz ist das etwas eleganter, da k\u00f6nnen auch Werte dazwischen ausgegeben werden, obwohl die Ausgabe schon h\u00e4ufig zu sehr gro\u00dfen oder sehr niedrigen Werten neigt. Au\u00dferdem will ich nicht den Eindruck erwecken, dass Neuronen nur auf streng logische Funktionen begrenzt sind, in den Beispielen oben sind ja auch welche f\u00fcr &#8222;hm, ein bisschen was vom einen und nicht zuviel vom anderen&#8220;. Und drittens haben Neuronen meist mehr als zwei Eing\u00e4nge. Und zuletzt gibt es mehrere M\u00f6glichkeiten, sie miteinander zu verkn\u00fcpfen, aber dazu vielleicht sp\u00e4ter mehr.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Fu\u00dfnote: Die drei XOR-Neuronen von oben in der Tabellenkalkulation<\/h2>\n\n\n\n<p>Ich kann mir die drei Neuronen von oben auch in eine Tabellenkalkulationsdatei schreiben. Dann sieht das so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"659\" height=\"138\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_xor_spreadsheet.png\" alt=\"\" class=\"wp-image-16739\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_xor_spreadsheet.png 659w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_xor_spreadsheet-300x63.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_xor_spreadsheet-150x31.png 150w\" sizes=\"auto, (max-width: 659px) 100vw, 659px\" \/><\/figure>\n\n\n\n<p>Man sieht, wenn man sich die M\u00fche des Vergleichs macht, dass Calc zu den gleichen Ergebnissen und Zwischenergebnissen kommt wie oben. F\u00fcr jedes Neuron ein paar Zahlen, die Neuronen &#8211; der Einfachheit halber &#8211; nach einem starren Feed-Forward-System ohne Abk\u00fcrzungen miteinander verkn\u00fcpft, gar nicht so viel Aufwand, aber viele, viele Zeilen. Und ja, es gibt Anleitungen f\u00fcr neuronale Netze in Excel. <\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Links<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Perzeptron\">Wikipedia zu Perzeptron<\/a> (auch die Diskussionsseite ist interessant)<\/li>\n\n\n\n<li><a href=\"https:\/\/medium.com\/@stanleydukor\/neural-representation-of-and-or-not-xor-and-xnor-logic-gates-perceptron-algorithm-b0275375fea1\">Neural Representation of AND, OR, NOT, XOR and XNOR Logic Gates (Perceptron Algorithm)<\/a> (wobei dort eine andere L\u00f6sung f\u00fcr XOR ist als die oben vorgestellte)<\/li>\n<\/ul>\n\n\n\n<p><em>(Gerne auf Fehler hinweisen. Ich bringe mir das nach und nach selber bei und versuche es gleichzeitig herunterzubrechen auf ein Niveau, wie ich es vielleicht mal im allgemeinbildenden Pflicht- oder Wahlpflichtfach Informatik verwenden kann.)<\/em><\/p>\n\n\n\n<p><a href=\"https:\/\/www.herr-rau.de\/wordpress\/2020\/09\/ki-fast-alles-was-ich-darueber-weiss-teil-3.htm\">Fortsetzung hier.<\/a><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vg08.met.vgwort.de\/na\/00959f5b0ce44447a56af807145bd1a4\" alt=\"\" width=\"1\" height=\"1\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(7 Kommentare.) Im ersten Teil ging es um allgemeine Gedanken, diesmal will ich etwas konkreter werde. Der Ausgangspunkt war der: Ein Computersystem soll lernen, Muster zu erkennen, also f\u00fcr uns eine Reihe von Datens\u00e4tzen zu kategorisieren. Das k\u00f6nnen eine Menge als Farbwerte interpretierbare Zahlen sein, die das System als Ziffer erkennen soll: Das kann ein [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":16730,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25],"tags":[227,254],"class_list":["post-16674","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatik","tag-informatik","tag-ki"],"jetpack_featured_media_url":"https:\/\/www.herr-rau.de\/wordpress\/archiv\/ki_neuron_java_xoder.png","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/16674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=16674"}],"version-history":[{"count":3,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/16674\/revisions"}],"predecessor-version":[{"id":66069,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/16674\/revisions\/66069"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media\/16730"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=16674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=16674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=16674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}