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_18_2019_brandburger-tor_02

Multiplikation von Gleitkommazahlen in neuronalen Netzen

Als Rike und Ben am Sonntag die Siegessäule besteigen und die Straße des 17. Juni und Unter den Linden bewundern, kommen ihnen diese beiden Straßen wie eine Turingmaschine mit einem unendlich langen Speicherband vor.

Rike Die Straße des 17. Juni zusammen mit Unter den Linden sind ja verdammt lang! Fast wie das Speicherband einer Turingmaschine!

Ben Das Brandenburger Tor als Lesekopf! Haha!

Rike Die Autos darauf könnten sich gut als Felder für Informationen eignen.

Ben Jaja, ist ja gut!

Rike Aber sag mal, ich habe gehört, alle Rechner sind zur Turingmaschine isomorph! Dann ist ja die Turingzeit noch lange nicht vorbei.

Ben Stimmt.

Rike Trotzdem kann ich mir nicht vorstellen, wie die Multiplikation in neuronalen Netzen von Zahlen mit boolschen Werten auf Gleitkommazahlen erweitert werden kann.

Levels in neuronalen Netzen

Ben Rike, stimmt, das geht etwas anders, und zwar so: Wir nehmen wieder Eingangsvektoren x^{(0)} und Datenverarbeitungen vom i-ten Level zum i+1-ten Level mittels

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

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

Die A_i’s sind affine Transformationen wie beim letzten Mal. \sigma soll jetzt das Produkt von Vektorkomponenten sein.

Rike Aha, jetzt sollen wir dem neuronalen Netz eine Methode geben, Gleitkommazahlen zu multiplizieren, wenn es die Multiplikation veränderlicher Größen nicht kennt.

Multiplikation in neuronalen Netzen

Ben Stimmt. Lin, Tegmark und Rolnick schlagen wieder einen Trick vor – und zwar zunächst nur für das Produkt zweier Gleitkommazahlen u und v. Nehmen wir mal:

\sigma(u,\;v)\; := \;u\;\cdot\;v.

Das führen die Drei auf das Quadrat einer Funktion einer Veränderlichen zurück, Du brauchst also nur

y(x) \; =\;  x^2

zu implementieren.

iV_18_net_fkt_01-06
Neben der Addition, Subtraktion und Multiplikation mit festen skalaren Größen wäre noch eine Funktion y einer Veränderlichen zu implementieren – zum Beispiel das Quadrat einer Zahl.

Rike Aha!

Algorithmus der Multiplikation

Ben Der Trick ist: Du quadrierst Summen und Differenzen von u und v, addierst und subtrahierst die Quadrate geschickt miteinander. Das können sogar Informatiker ausrechnen!

  \frac{(u\;+\;v)^2\;+\;(\;-\;u\;-\;v)^2\;-\;( u\;-\;v)^2\;-\;(\;-\;u\;+\;v)^2 }{4}

 \; = \; \frac{(u^2\;+\;2uv\;+\;v^2)\;+\;(u^2 \;+\;2uv\;+\;v^2) \;-\;(u^2 \;-\;2uv\;+\;v^2)\;-\;(u^2 \;-\;2uv\;+\;v^2) }{4}

\; =\;  \frac{ 4uv }{4}

\; =\;  u\; \cdot\; v

\; =\;\sigma(u,\;v)

Rike Neuronale Netze mit binomischen Formeln!

Ben Klar, diese guten alten Sachen!

iV_18_net_II_02-07
Schematische Darstellung der 4 Levels für die Multiplikation zweier Zahlen u und v.

Rike Haha!

***

Übungsaufgaben

  1. Überprüfe, ob auch andere Funktionen statt des Quadrates in Frage kommen!
  2. Wenn ja, welche Funktionen könnten das sein?

Antworten

  1. Ja, es muss nur

    \sigma_2\; := \;\frac{d^2y}{dx^2}(0)\; \ne\; 0.

    Dann muss man allerdings u und v mit einem Faktor \lambda skalieren, sodass |\lambda u| und |\lambda v| klein werden:

    |\lambda u|,\; |\lambda v|\; \ll \;1

    Und das daraus berechnete (\lambda u\;\cdot\;\lambda v) noch durch den Faktor

    \lambda^2 \sigma_2

    teilen.

  2. Zum Beispiel:

    y(x)\;=\;1\;+\;x \;+\; x^2

    y(x)\;=\;-\; x^2

    y(x)\;=\;\exp(x)

    y(x)\;=\;\exp(-\;x)

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.