Foren / Forums
Lösungsdiskussion - Druckversion

+- Foren / Forums (https://www.mathekalender.de/wp/forum)
+-- Forum: Lösungen / Solutions (https://www.mathekalender.de/wp/forum/forum-161.html)
+--- Forum: Aufgabe 21 / Challenge 21 (https://www.mathekalender.de/wp/forum/forum-224.html)
+--- Thema: Lösungsdiskussion (/thread-1301.html)



Lösungsdiskussion - Vegaskid - 12-30-2024

Processing Code zur Lösung dieser Aufgabe:

int vNo, vNu;                              // versteckte Neuronen der zweiten Schicht
float z, temp;                            // z und Merkvariable für größtes z
int xPos, yPos;                            // Krippenposoition

void setup() {
  size(400, 400);                          // Dimensionen Ausgabefenster
  noStroke();                              // keine Umrandung
  fill(255, 255, 0);                      // gelbe Füllung
  rectMode(CENTER);                        // Rechteckmodus Mittelpunkt, Seite, Höhe
}

void draw() {
  background(0, 0, 255);
  translate(width/2+100, height/2-200);    // Position -1|2 zentrieren
                                          // pro Einheit 100 Pixel
  for (int x = -200; x < 0; x++)          // für jede x Position zwischen -2 und 0
    for (int y = 100; y < 300; y++) {      // für jede y Position zwischen 1 und 3
      vNo = max(0, x + 100)  * (-1) +      // Werte der versteckten Neuronen der
        max(0, - x -100)    * (-1) +      // ersten Schicht und zweiten Schicht
        max(0, y - 200)      * (-1) +      // berechnen
        max(0, - y + 200)    * (-1) + 100;

      vNu = max(0, -x + y -300) * (-1) +
        max(0, x - y + 300)    * (-1) +
        max(0, -x - y + 100)    * (-1) +
        max(0, x + y - 100)    * (-1) + sqrt(2) * 100;

      if (vNo > 0 || vNu > 0)              // Skizze des Bereichs in der
        rect(x, y, 1, 1);                  // xy-Ebene mit z > 0 visualisieren

      z = vNo + vNu ;                      // z für die aktuelle Position berechnen

      temp = max(temp, z);                  // größtes z merken
      if (z == temp) {                      // Position mit dem größten z merken
        xPos=x;
        yPos=y;
      }
    }
                                          // Ergebnisse ausgeben
  println("Maximalwert für z:", temp/100);
  print("Krippenposition  : P(", xPos/100, "|", yPos/100, ")");
  fill(255, 0, 0);                        // blaue Füllung
  ellipse(xPos, yPos, 10, 10);            // Krippenposition vergrößert visualisieren
  noLoop();
}


RE: Lösungsdiskussion - pierrot - 12-30-2024

Auch eine wunderbare Aufgabe, den Stern nur mittels Zettel und Stift mit Hilfe von Ungleichungen zu konstruieren, hat echt Spaß gemacht!! Es ergeben sich zwei Qadrate, die aufeinander gelegt, Stern 5 ergeben.

Hier mein Lösungsvorschlag:
https://www.dropbox.com/scl/fi/ae2o00gkmntd5w0ufnn9o/21_KI_neuronale-Netze-Stern-Martin-Skutella.jpeg?rlkey=3tis2rl2k43y96k6lnlgrp9xz&st=d8dex8d9&dl=0


RE: Lösungsdiskussion - DerAlteHeinz - 12-30-2024

Ja, ging mir genauso! Es hat richtig Spaß gemacht, auch wenn es dann gar nicht so schwer war.
Ich hab den gleichen Lösungsweg, aber ich versuche die einzelnen Schritte etwas anschaulicher zu machen:

1. Koordinatentransformation
Die 8 Ausdrücke für die Neuronen-Werte lassen erkennen, dass man das Koordinatensystem in die Mitte des erwarteten Sterns verschieben kann:
x+1 => x
y-2 => y
Daraus ergibt sich, dass der Sternmittelpunkt im alten Koordinatensystem bei (-1,2) lag. Und offensichtlich liegt dort auch das Maximum des z-Werts.

Die Neuronen-Werte werden dadurch einfacher:

max{0,x+1}      => max{0,x}
max{0,−x−1}    => max{0,−x}
max{0,y−2}      => max{0,y}
max{0,−y+2}    => max{0,−y}
max{0,−x+y−3} => max{0,−(x-y)}
max{0,x−y+3}   => max{0,x−y}
max{0,−x−y+1} => max{0,−(x+y)}
max{0,x+y−1}   => max{0,x+y}

2. Betragsfunktion
Wenn man das paarweise addiert, wie es in den Neutronen der 2. Ebene geschieht, dann ergeben sich 4 Betrags-Funktionen:

max{0,x} + max{0,-x} = |x|
max{0,y} + max{0,-y} = |y|
max{0,x−y} + max{0,-(x−y)} = |x−y|
max{0,x+y} + max{0,-(x+y)} = |x+y|

Damit sehen die Ausdrücke in den Neutronen der 2. Ebene nun so aus:

1 - (|x|+|y|)
SQRT(2) - (|x−y|+|x+y|)

Dann gehts weiter wie bei pierrot, das finde ich anschaulich genug.


RE: Lösungsdiskussion - MatheJuergen - 01-02-2025

(12-30-2024, 09:24 PM)DerAlteHeinz schrieb: Ja, ging mir genauso! Es hat richtig Spaß gemacht, auch wenn es dann gar nicht so schwer war.
Ich hab den gleichen Lösungsweg, aber ich versuche die einzelnen Schritte etwas anschaulicher zu machen:

1. Koordinatentransformation
Die 8 Ausdrücke für die Neuronen-Werte lassen erkennen, dass man das Koordinatensystem in die Mitte des erwarteten Sterns verschieben kann:
x+1 => x
y-2 => y
Daraus ergibt sich, dass der Sternmittelpunkt im alten Koordinatensystem bei (-1,2) lag. Und offensichtlich liegt dort auch das Maximum des z-Werts.

Die Neuronen-Werte werden dadurch einfacher:

max{0,x+1}      => max{0,x}
max{0,−x−1}    => max{0,−x}
max{0,y−2}      => max{0,y}
max{0,−y+2}    => max{0,−y}
max{0,−x+y−3} => max{0,−(x-y)}
max{0,x−y+3}   => max{0,x−y}
max{0,−x−y+1} => max{0,−(x+y)}
max{0,x+y−1}   => max{0,x+y}

2. Betragsfunktion
Wenn man das paarweise addiert, wie es in den Neutronen der 2. Ebene geschieht, dann ergeben sich 4 Betrags-Funktionen:

max{0,x} + max{0,-x} = |x|
max{0,y} + max{0,-y} = |y|
max{0,x−y} + max{0,-(x−y)} = |x−y|
max{0,x+y} + max{0,-(x+y)} = |x+y|

Damit sehen die Ausdrücke in den Neutronen der 2. Ebene nun so aus:

1 - (|x|+|y|)
SQRT(2) - (|x−y|+|x+y|)

Dann gehts weiter wie bei pierrot, das finde ich anschaulich genug.
Das beschreibt genau, das Problem, das ich mit dieser Aufgabe hatte. So wie die Aufgabe gestellt ist muss nämlich z >=0 gelten, also 1+SQRT(2)-(|x| +|y|+|x-y|+|x+y|)>=0. Das liefert aber nicht die gezeigte Sternabbildung.
Der Lösungsstern passt zu folgender Aufgabenstellung: Mindestens ein Neuton 2.Stufe hat einen positiven Wert. Das ergibt nämlich die beiden getrennten Bedingungen (wie oben beschrieben). ==> Zwei verdrehte Quadrate.
Der "echte" Lösungsstern ist etwas kleiner. Denn wenn ein Neuronwert größer als 0 und der andere Neutonwert kleiner als 0 ist, kommt es darauf an wer "gewinnt".
Ich habe dann natürlich auch den Stern mit den verdrehten Quadraten ausgewählt, denn die eigentliche Lösung kommt leider nicht vor. 
Trotzdem war es eine wunderschöne Aufgabe.


RE: Lösungsdiskussion - Kosakenzipfel - 01-02-2025

Da das output-Neutron ebenfalls die max-funktion anwendet (im Text steht nichts anderes) ist z immer >=0. Es ist z = max(0,n1+n2). An der Begrenzung des Sterns ist Z noch 0, aber der Strich ist eh dicker wie eps und innen ist es dann größer null.


RE: Lösungsdiskussion - marac - 01-02-2025

(01-02-2025, 11:47 AM)MatheJuergen schrieb: So wie die Aufgabe gestellt ist muss nämlich z >=0 gelten, also 1+SQRT(2)-(|x| +|y|+|x-y|+|x+y|)>=0. Das liefert aber nicht die gezeigte Sternabbildung.
Der Lösungsstern passt zu folgender Aufgabenstellung: Mindestens ein Neuton 2.Stufe hat einen positiven Wert. Das ergibt nämlich die beiden getrennten Bedingungen (wie oben beschrieben). ==> Zwei verdrehte Quadrate.
Der "echte" Lösungsstern ist etwas kleiner. Denn wenn ein Neuronwert größer als 0 und der andere Neutonwert kleiner als 0 ist, kommt es darauf an wer "gewinnt".
Ich habe dann natürlich auch den Stern mit den verdrehten Quadraten ausgewählt, denn die eigentliche Lösung kommt leider nicht vor.

Wie kommst du auf x>=0? Es geht um >0, für x>=0 wäre die komplette Fläche gelb.

Du übersiehst, dass die Werte der Neuronen der zweiten versteckten Reihe nach denselben Regeln, wie bei der ersten versteckten Reihe gebildet werden sollten. Das beinhaltet auch, dass auch hier keine negativen Werte auftreten können, da ein Maximum von 0 und dem berechneten Wert gebildet wird. Daher ist z>0 identisch mit "eines der beiden inneren Neuronen der zweiten Spalte ist größer als 0".

(01-02-2025, 12:51 PM)Kosakenzipfel schrieb: Da das output-Neutron ebenfalls die max-funktion anwendet (im Text steht nichts anderes) ist z immer >=0. Es ist z = max(0,n1+n2). An der Begrenzung des Sterns ist Z noch 0, aber der Strich ist eh dicker wie eps und innen ist es dann größer null.

Nicht ganz... Bei z ist die Regel anders, hier wird in der Aufgabenstellung explizit von der Summe der beiden Neuronen der zweiten Schicht die Rede, keine Max-Funktion. Da es die Summe von zwei Werten >=0 ist, spielt das an dieser Stelle aber auch keine Rolle Smile


RE: Lösungsdiskussion - MatheJuergen - 01-02-2025

(01-02-2025, 12:54 PM)marac schrieb:
(01-02-2025, 11:47 AM)MatheJuergen schrieb: So wie die Aufgabe gestellt ist muss nämlich z >=0 gelten, also 1+SQRT(2)-(|x| +|y|+|x-y|+|x+y|)>=0. Das liefert aber nicht die gezeigte Sternabbildung.
Der Lösungsstern passt zu folgender Aufgabenstellung: Mindestens ein Neuton 2.Stufe hat einen positiven Wert. Das ergibt nämlich die beiden getrennten Bedingungen (wie oben beschrieben). ==> Zwei verdrehte Quadrate.
Der "echte" Lösungsstern ist etwas kleiner. Denn wenn ein Neuronwert größer als 0 und der andere Neutonwert kleiner als 0 ist, kommt es darauf an wer "gewinnt".
Ich habe dann natürlich auch den Stern mit den verdrehten Quadraten ausgewählt, denn die eigentliche Lösung kommt leider nicht vor.

Wie kommst du auf x>=0? Es geht um >0, für x>=0 wäre die komplette Fläche gelb.

Du übersiehst, dass die Werte der Neuronen der zweiten versteckten Reihe nach denselben Regeln, wie bei der ersten versteckten Reihe gebildet werden sollten. Das beinhaltet auch, dass auch hier keine negativen Werte auftreten können, da ein Maximum von 0 und dem berechneten Wert gebildet wird. Daher ist z>0 identisch mit "eines der beiden inneren Neuronen der zweiten Spalte ist größer als 0".

(01-02-2025, 12:51 PM)Kosakenzipfel schrieb: Da das output-Neutron ebenfalls die max-funktion anwendet (im Text steht nichts anderes) ist z immer >=0. Es ist z = max(0,n1+n2). An der Begrenzung des Sterns ist Z noch 0, aber der Strich ist eh dicker wie eps und innen ist es dann größer null.

Nicht ganz... Bei z ist die Regel anders, hier wird in der Aufgabenstellung explizit von der Summe der beiden Neuronen der zweiten Schicht die Rede, keine Max-Funktion. Da es die Summe von zwei Werten >=0 ist, spielt das an dieser Stelle aber auch keine Rolle Smile
Vielen Dank! Man sollte den Text genauer lesen.  Smile  Das mit dem Max. hatte ich da nicht mehr auf dem Schirm. Damit ist klar, dass z >=0 immer erfüllt ist.