Skip to main content


Zutaten: Zucker, Kakaomasse (50%), Milchzucker, Weizenmehl, Vollmilchpulver, Magermilchpulver, Butterreinfett, Sahnepulver, Butter (1,4%)
Kann Spuren von Analysis und Geometrie enthalten.

IV_16_2019_neuronale_netze_titel

Multiplikation in neuronalen Netzen

Ben soll morgen Allen genauer den Unterschied flacher und tiefer neuronaler Netze erklären. Er versucht wieder, Rikes Katze Molly zu fotografieren und aus verschiedenen Katzenfotos Molly digital zu rekonstruieren. Doch die Katze ist manchmal unscharf fotografiert, Ben ist ja nur Informatiker. Wie kann man das dann aus unscharfen Fotos entscheiden?

Ben Stell Dir vor, ich habe 1-Megapixel-Bilder und soll von jedem Bild entscheiden, ob das Molly ist oder nicht, dann habe ich eine "tolle" Aufgabe! Jeder Pixel hat 256 Grauwerte, nehmen wir mal nur ein Schwarz-Weiß-Bild!, dann sind prinzipiell

256^{\;1\; 000\; 000}

verschiedene Bilder als Eingang in mein Programm möglich!

Aufgabenstellungen für neuronale Netze

Rike Wow!

Ben Das sind mehr als das Universum Atome hat!

Rike Also gibt es keinen Rechner in diesem Universum, der das entscheiden kann?

Ben Doch! Wir müssen das intelligenter machen, wir lassen verschiedene Abstraktionsniveaus zu, das nennt man Deep Learning. Es sind einige Arbeiten herausgekommen, die untersuchen, was tiefe neuronale Netze leisten können. Die Grundideen kann ich Dir erklären.

Rike Dann mal los!

Ben Lass uns das erstmal prinzipiell diskutieren, bevor wir zur Bilderkennung kommen. Bisschen mathematisch, das gefällt Dir bestimmt!

Rike Klar!

Ben Die Eingangsdaten sollen die Vektoren

x\;=\;(x_1,\; x_2,\; \dots\;,\; x_n)

sein und

y\;=\;(y_1,\; y_2,\; \dots\;,\; y_m)

die Modellparameter, die Katzenparameter. Mit normalen, klassischen Straight Forward-Methoden kann man die Wahrscheinlichkeit des Eintretens der Ereignisse x und y berechnen.

Klassifikation

Eine typische Aufgabe ist die der Klassifikation, das ist die Wahrscheinlichkeit des Auftretens des konkreten y-Katzenmodells für gegebene Eingangsdaten x, das schreibt man

p(y|x)

Rike Klar.

Vorhersage

Ben Die Vorhersage der Daten x für ein Modell y schreibt man

p(x|y).

Das ist die Wahrscheinlichkeit des Bildes – also der x-Werte für eine y-Katze, also für Molly. Katzen bleiben ja nie still sitzen und werden unter verschiedenen Bedingungen, Perspektiven und mit verschiedenen Kameras fotografiert.

Rike Und Fotografen lernen noch.

Ben Hm, jedenfalls ist es gar nicht so leicht, in einem Molly-Bild, Molly zu entdecken.

Rike Mann, es hört sich kompliziert an, mathematisch sind das aber nur bedingte Wahrscheinlichkeiten.

Satz von Bayes

Ben Stimmt. Mit dem Satz von Bayes kann man dann das eine aus dem anderen berechnen:

p(y|x)\;=\;\frac{p(x|y)\;\cdot\;p(y)}{p(x)}

Und wenn Du mehrere verschiedene Katzenmodelle y^{(i)} hast, dann geht der bayessche Satz so

p(y^{(i)}|x)\;=\;\frac{p(x|y^{(i)})\;\cdot\;p(y^{(i)})}{\sum_i p(x|y^{(i)})\;\cdot\;p(y^{(i)})}

Rike Alles klar!

Ben Das ist die Mathematik der flachen neuronalen Netze.

Rike Gut, und die tiefen?

Mathematische Beschreibung neuronaler Netze

Ben Du weißt ja schon, dass es verschiedene Levels gibt.

x\;=\;x^{(0)}\;=\;(x_1^{(0)},\; x_2^{(0)},\; \dots\; ,\; x_{n^{(0)}}^{(0)})

sollen die Eingangsdaten sein,

x^{(i)}\;=\;(x_1^{(i)},\; x_2^{(i)},\; \dots\; ,\; x_{n^{(i)}}^{(i)})

sollen die Daten des i-ten Levels sein. Vom i-ten Level kommt man zum i+1-ten Level durch

 x^{(i+1)}\;=\;A_{i+1}\; \sigma\; ( A_i \;x^{(i)}).

 A_i\;:\; \mathbf{R}^{n_i}\; \rightarrow\; \mathbf{R}^{n_{i+1}}

sind Transformationen

 A_i x\;=\;W_i x\;+\;b^{(i)},

 W_i sind Matrizen,  b^{(i)} sind Vektoren und

 \sigma\;:\; \mathbf{R}\; \rightarrow \; \mathbf{R}

wird komponentenweise angewendet. Diese Transformationen A_i beschreiben das Sortieren von Daten, das Multiplizieren mit konstanten Faktoren und die Addition von Konstanten. Das lässt sich gut implementieren. Der wirkliche Knackpunkt ist die Funktion \sigma. Sie steht für Entscheidungen oder Berechnung von Wahrscheinlichkeiten.

Rike Verstehe.

Ben Nun stellt sich die Frage, welche mathematischen Funktionen \sigma überhaupt durch neuronale Netze dargestellt oder angenähert werden können.

Rike Na, ich würde mit Polynomen anfangen. Mit Polynomen kannst Du jede stetige Funktion auf einem endlichen Intervall gleichmäßig annähern, das garantiert der Approximationssatz von Weierstraß. Lineare Abbildungen hast Du ja schon.

Ben Stimmt. Die erste nichtlineare, nichttriviale Funktion mehrerer Veränderlicher wäre das Produkt von Zahlen. Da habe ich die Arbeit von Lin, Tegmark und Rolnick gefunden, die untersuchen genau das.

Rike Erzähl' mal!

Eine Methode für das Produkt mehrerer boolschen Werte

Ben Stell' Dir vor, Du sollst ein Programm schreiben, um k Zahlen x_i miteinander zu multiplizieren. Als einfachsten Einstieg haben die Drei nur Zahlen x_i genommen, die nur boolesche Werte annehmen, also nur 1 oder 0.

Rike Na, gut, das macht es einfacher. Du fragst alle Werte ab, und wenn alle x_i\;=\;1, dann ist das Produkt auch 1.

\prod_i\; x_i\;=\;1,\;\mathrm{ falls\; alle}\; x_i\;=\;1

\prod_i\;x_i\;=\;0, \;\mathrm{ falls\; ein}\; x_i\;=\;0

Ben Rike, das ist richtig, doch es ist nur ein flaches neuronales Netz. Da musst Du für große k zu viele Fälle abfragen.

iV_16_net_07-02
Flaches neuronales Netz (Shallow Network) für die Multiplikation von Zahlen

 

Rike Stimmt. Was haben sich die Herren ausgedacht?

Ben Das Produkt ist genau dann 1, wenn alle x_i\;=\; 1 sind, und das ist der Fall, wenn die Summe k ist:

\prod_i\; x_i\;=\;1\; \leftrightarrow\; \sum_i\; x_i\;=\;k

Dieser Test, ob die Summe von k Zahlen k ist, macht man mit der Sigmoidfunktion S:

S(x)\;=\;\frac{1}{1\;+\;e^{-x}}

Rike Warte mal. Okay. Sieht so aus:

iV_16_net_kurve_08-05
Sigmoidfunktion S

Ben Richtig. Diese Sigmoidfunktion muss ich für einige x-Werte implementieren, aber es reicht schon von -10 bis 10. Wenn ich nun k Zahlen x_i habe und das Produkt bestimmen will, dann berechne ich zuerst

k\;-\;\sum _{i=1}^k \;x_i

Die Frage, ob das entweder 0 oder 1, 2, 3, ... ist, prüfe ich, indem ich 1/2 abziehe, dann kriege ich entweder -1/2 oder 1/2, 3/2, 5/2, ... Mit einem Faktor -\beta, \beta soll sehr groß sein, na, 10 reicht schon, kann ich die Differenz zwischen den beiden Fällen noch verstärken. Darauf wende ich dann die Sigmoidfunktion an:

T\;=\;S\;[\;-\beta\;\cdot\;(-\; \frac{1}{2}\;+\;k\;-\;\sum _{i=1}^k \; x_i\; )]

Rike Warte, ist die Summe gleich k, wird T zu

T\;=\;S[-\beta\;\cdot\;(-\; \frac{1}{2}\;+\;0)]

\;\;=\;S(+\;\frac{\beta}{2})

 \; \approx 1

Ben Stimmt.

Rike Und falls nicht alle x_i =1 sind, kriegen wir

k\;-\;\sum _{i=1}^k \; x_i \;=\;z \ge 1

T\;=\;S[-\beta\;\cdot\;(-\; \frac{1}{2}\;+\;z)]

\; \le \;S[-\beta\;\cdot\;\frac{1}{2}\;]

\; =\; S[-\;\frac{\beta}{2}\;]

 \; \approx 0

Produktformel

Ben Super, Rike! Du hast gerade deren Produktformel hergeleitet:

\prod_{i=1}^k \; x_i\;=\;\lim_{\beta \rightarrow +\infty} S[-\beta\;\cdot\;(- \frac{1}{2}\;+\;k\;-\;\sum _{i=1}^k \;x_i )]

Rike Hey!

Ben Wir haben nun ein neuronales Netz, indem wir erst die Zahlen addieren, dann die Sigmoidfunktion anwenden und Beta groß werden lassen. Das sind zwei Levels und geht recht schnell.

iV_16_net_II_07-02
Tiefes neuronales Netz (Deep Network) für die Multiplikation von Zahlen mit boolschen Werten nach obigem Schema, zuerst die Addition und dann die Sigmoidfunktion.

 

Rike Hey, mir gefallen neuronale Netze und so eine coole Produktformel!

***

Übungsaufgabe

Ist die Methode an die konkrete Sigmoidfunktion gebunden? Wenn nein, mache einen anderen Vorschlag und korrigiere die Produktformel!

Lösungen

1. Eine verifizierte Heaviside-Funktion H(x)

III_16_formel_02

 

erfüllt die Bedingungen:

 \lim_{x\; \rightarrow\; +\infty} H(x) = 1

 \lim_{x\; \rightarrow\; -\infty} H(x) = 0

Die Produktformel bleibt unverändert:

\prod_{i=1}^k \; x_i\;=\;\lim_{\beta \rightarrow +\infty} H[-\beta\;\cdot\;(- \frac{1}{2}\;+\;k\;-\;\sum _{i=1}^k \;x_i )]

2. Auch die verifizierte Arcustangensfunktion

H(x)\; =\; \frac{1}{2}\; +\; \frac{1}{\pi} \;\arctan\; x

hat diesen Eigenschaften. Die Produktformel bleibt unverändert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Wir freuen uns, dass Du einen Kommentar hinterlassen möchtest. Denk bitte daran, dass Du dich durch das Abschicken des Kommentars mit unseren Nutzungsbedingungen einverstanden erklärst.