faecher:informatik:oberstufe:machine_learning:einfuehrung:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:machine_learning:einfuehrung:start [03.03.2023 13:46] – [Was ist "maschinelles Lernen"?] Frank Schiebelfaecher:informatik:oberstufe:machine_learning:einfuehrung:start [04.03.2023 18:08] (aktuell) – [Eine Vorhersagemaschine] Frank Schiebel
Zeile 12: Zeile 12:
 | Tausende Zahlen multiplizieren | Einfach und schnell | Schwer und langsam | | Tausende Zahlen multiplizieren | Einfach und schnell | Schwer und langsam |
 | Zebrabilder unterscheiden | Schwer | Einfach und schnell | | Zebrabilder unterscheiden | Schwer | Einfach und schnell |
 +
 +==== Was können Computer gut? ====
 +
 +Die „klassische“ Programmierung durch kluge
 +Aneinanderreihung einzelner Anweisungen, Verzweigungen oder
 +Schleifen nennt man imperative Programmierung. Eine
 +Rechenaufgabe zu programmieren ist beispielsweise in so ziemlich jeder
 +Programmiersprache ein Kinderspiel. Das Navi so zu programmieren, dass es die
 +kürzeste Route berechnen kann, ist schon komplexer – aber auch für dieses
 +mathematische Problem lässt sich die Lösung noch immer gut in (vielen) einzelnen
 +expliziten Anweisungen formulieren.
 +
 +Es gibt aber trotzdem viele Aufgaben, die man nicht einfach lösen kann, indem man
 +einzelne Befehle geschickt aneinanderreiht.
 +
 +Ein Regelwerk, das bei unbekannten Bildern beispielsweise durch Betrachtung jedes einzelnen Pixels und seiner Relation zu anderen Pixeln entscheiden soll, welches der drei Bilder oben ein Zebra darstellt ist nahezu undenkbar und fast sicher unmöglich imperativ zu programmieren.
 +
 +Auch ein Mensch kann diese Frage erst beantworten, nachdem er Dinge **gelernt** hat - ein 2 Jähriger könnte die Bilder wohl kaum unterscheiden, eine Zehnjährige ziemlich sicher.
 +
 +Wie kann man einem Computer aber beibringen zu lernen, was also soll "maschinelles Lernen" sein - und wie kann das funktionieren?
 +
 +===== Eine Vorhersagemaschine =====
 +
 +Als erstes Beispiel soll die Umrechnung von Zentimeter in Inch dienen((Die "gewöhnliche" Herangehensweise wäre, herauszufinden, welcher Faktor ''c'' diese beide Einheiten ineinander umrechnet und anschließend (imperativ) die Gleichung ''inch=c*zentimeter'' in einer Programmiersprache deiner Wahl zu implementieren)).
 +
 +Als einzige Information sei die folgende Tabelle gegeben:
 +
 +
 +^ Zentimeter  | -42         | -11.2          5.5 | 8        | 15       | 22       | 38        |
 +^ Inch        | -16.53543,  | -4.40945  | 2.16535  | 3.14961  | 5.90551  | 8.66142  | 14.96063  |
 +
 +Wir wollen nun eine //**"Vorhersagemaschine"**// verwenden, die wir mit diesen Daten füttern. Dabei soll die Maschine "lernen", welcher Zusammenhang zwischen Eingabe und Ausgabe besteht und für einen angegebenen Wert eine Vorhersage für den zugehörigen Wert bestimmen.
 +
 +---- 
 +{{:aufgabe.png?nolink  |}}
 +=== (A1) Die Vorhersagemaschine als "Black Box" ===
 +
 +**(A)** Lade den vorbereiteten Code von https://codeberg.org/qg-info-unterricht/tf-vorhersagemaschine herunter oder klone das Repo. Anschließend musst du die python-Abhängigkeiten für das Projekt installieren - unter Linux kannst du einfach das Skript ''mkvenv.sh'' ausführen, das richtet ein Virtual-Environment ein, installiert alle Abhängigkeiten und aktiviert es anschließend. FIXME Windows?
 +
 +  * Führe als ersten Test den Befehl ''./vorhersagemaschine.py -i datensatz01.csv -t 10 -x 8'' aus.
 +  * Vergleiche den vorhergesagten Wert für x=8 mit dem tatsächlichen Wert aus der Tabelle.
 +  * Wiederhole den Befehl mit einer 
  • faecher/informatik/oberstufe/machine_learning/einfuehrung/start.1677851218.txt.gz
  • Zuletzt geändert: 03.03.2023 13:46
  • von Frank Schiebel