Neural Net with Backpropagation
Some Simple Neural Nets with Gradient Descent Algorithm
Handout ‚Introduction to A.I.‘
Alle Unterrichtseinheiten, die wir im Kurs durchgenommen haben:
Introduction to Artificial Intelligence (statistical ML)
IntroductionOverview_NeuralNets_9May22
KI-Algorithmen: Demos in Javascript
1. Linear Regression
(ML-Algorithm using Batch Gradient Descent)
https://iludis.de/LinearRegression/index.html
2. kNN (k-nearest-neighbour)
https://iludis.de/kNNDemo/index.html
3. SVM (Hard-Margin Support Vector Machine)
https://iludis.de/svmDemo/index.html
4. NeuralNet-Dinosaur: Perceptron with SGD
https://iludis.de/Perceptron/index.html
5. k-Means-Clustering
https://iludis.de/kMeansClustering/index.html
6. no-AI, but helper-App:
generate points for export
Inf 4Stünder Abi-Training, Teil 2
Wiedereinstieg „Endliche Automaten und Formale Sprachen“
Bitte bis kommenden Montag an mich zurück:
JFLAP für die Bearbeitung der Aufgaben:
Lösungen:
Ueb_Inf4St_KW12_Do19Maerz_Loesun
Inf4Stünder Abitraining, Teil 1
Übungsaufgabe in Java: Baue eine App zur Sortierung von Arrays
0. Schaut euch diese Aufgaben an, sie ähneln denjenigen auf SoloLearn:
https://www.w3schools.com/java/java_exercises.asp
- Erstelle (mit UML) ein kleines Klassensystem aus maximal drei Klassen. Tools dazu:
Online UML-Editor von VisualParadigm:
https://online.visual-paradigm.com/drive/#diagramlist:proj=0&new=ClassDiagramDrawIO, haben wir auch für die ER-Diagramme verwendet, kann Class-Diagramme:
https://app.diagrams.net/oder per Modelio, wie im Unterricht:
https://www.modelio.org/downloads/download-modelio.html - Baue die App in einer IDE deiner Wahl nach. Tool dazu:
Online-Java-Compiler: repl.it
(hier lassen sich verschiedene Klassen anlegen und referenzieren! Sehr hübsch) Oder IntelliJ, wie im Unterricht:
https://www.jetbrains.com/de-de/idea/download/other.html - Erzeuge ein Array mit 20 Zufallszahlen
- Sortiere die Liste mittels BubbleSort oder SelectionSort oder Quicksort
- Gib die sortierte Liste aus.
Zum Ausprobieren, ob die IDE funktioniert, wie sie soll, hier ein kleines Klassensystem
aus drei Klassen, erstellt in Repl.it:
class Main { private subclass[] subclassarray = new subclass[10]; public static void main(String[] args) { System.out.println("Ein Array von Subklassen"); subclassholder SuClHo = new subclassholder(10); } }
public class subclass{ private int parameter; public subclass(int x){ System.out.println("Parameter: " + x); this.parameter = x; } public int getParameter(){ return this.parameter; } public void setParameter(int y){ this.parameter = y; } }
public class subclassholder{ private subclass[] subclassarray; public subclassholder(int anzahl){ subclassarray = new subclass[anzahl]; for(int i=0; i<anzahl; i++){ subclassarray[i] = new subclass(i*10); } } }
Zusatzaufgabe: Was macht dieser Code und wieso? 😉
Kellerautomat in Python
L(PDA) = {anbn | n>0}
class Stack: def __init__(self): self.stackliste = [] self.stacklistenlaenge = 0 def pop(self): if self.istLeer() == False: self.stacklistenlaenge = self.stacklistenlaenge - 1 return self.stackliste.pop() def peek(self): if self.istLeer() == False: return self.stackliste[self.stacklistenlaenge - 1] def push(self, inhalt): self.stackliste.append(inhalt) self.stacklistenlaenge = self.stacklistenlaenge + 1 def getStacklistenlaenge(self): return self.stacklistenlaenge def istLeer(self): if self.stacklistenlaenge <= 0: return True else: return False #--------------------------------------------------- def Zustandsuebergangsfunktion(symbol): global state if state == "q0": if symbol == "a": state = "q1" pdaStack.pop() pdaStack.push("Z") pdaStack.push("P") return True else: return False if state == "q1": if symbol == "a": pdaStack.pop() pdaStack.push("P") pdaStack.push("P") state = "q1" return True elif symbol == "b": pdaStack.pop() state = "q2" return True else: return False if state == "q2": if symbol == "b": if pdaStack.peek() == "P": state = "q2" pdaStack.pop() if pdaStack.peek() == "Z": state = "q3" return True else: return False if state == "q3": if pdaStack.peek() == "Z": pdaStack.pop() return True else: return False #--------------------------------------------------- def Akzeptor(wort): global state for i in range(len(wort)): testsymbol = wort[i] aktzustand = Zustandsuebergangsfunktion(testsymbol) print("Zustand: ", state, "\tAktueller Stack: ", pdaStack.stackliste) if aktzustand == False: return False if pdaStack.peek() == "Z" and state == "q3": return True else: return False #--------------------------------------------------- pdaStack = Stack() pdaStack.push("Z") state = "q0" print("Startzustand:", state, "\tLeerzustand Stack:", pdaStack.stackliste) ergebnis = Akzeptor("aaaaabbbbb") print("---------\nAkzeptiert?", ergebnis)
Musterlösung Haha-Automat (Akzeptor)
L(DEA) ={(ha)n! | n>0)
state = "q0" def Zustandsuebergangsfunktion(symbol): global state if state == "q0": if symbol=="h": state = "q1" return True else: return False if state == "q1": if symbol=="a": state = "q2" return True else: return False if state == "q2": if symbol=="!": state = "q3" return True elif symbol =="h": state = "q1" return True else: return False if state == "q3": return False def Akzeptor(wort): global state for i in range(len(wort)): testsymbol = wort[i] aktzustand = Zustandsuebergangsfunktion(testsymbol) if aktzustand == False: print("war nix") return False if state == "q3": print("stimmt!") return True ergebnis = Akzeptor("hahahaha!") print(ergebnis)