{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Maschinelles Lernen (ML) - Übung 3\n", "# Perzeptronen und mehrschichtige Perzeptronen\n", "## 3.1 Das einfache Perzeptron als linearer Klassifikator\n", "\n", "In dieser Übung wird ein einfaches Perzeptron (engl. perceptron) programmiert, trainiert und als linearer Klassifikator eingesetzt.\n", "\n", "![perceptron.pdf](Handout/fig/perceptron/perceptron.png)\n", "\n", "Weitere Informationen zur Wirkweise des einfachen Perzeptrons sind im PDF-Handout für diese Übung zu finden." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 1:** In dieser Übung sollen Sie ein Perzeptron objektorientiert erstellen. Dazu ist bereits eine vorstrukturierte Klasse *Perceptron* mit den Methoden *_init_* zur Initialisierung des Perzeptrons (z.B. Gewichte, Lernrate), *predict* zur Klassifizierung eines Datenpunktes und *fit* zum Trainieren des Perzeptrons vorbereitet.\t\tVervollständigen Sie diese Methoden." ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "# matplotlib: Modul zum Plotten von Daten\n", "from matplotlib import pyplot as plt \n", "# numpy: Mathematikbibliothek\n", "import numpy as np \n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Hilfen für die Klasse Perzeptron\n", "\n", "##### Allgemein\n", "Verwendete Variblenbezeichnungen:\n", "- inputs $\\hat{=} \\textrm{ } \\lbrace x_1, \\ldots x_n \\rbrace$; Sollte als Numpy Array definiert werden.\n", "- eta $\\hat{=} \\textrm{ } \\eta$\n", "\n", "##### Methode _init_(self, number_of_inputs, epochs, learning_rate):\n", "In Python entspricht \\_\\_init\\_\\_ dem Konstruktor. Die \\_\\_init\\_\\_() Methode initialisiert die Klasse Perceptron. Definiere und initialisiere hier die folgenden Variablen: \n", "- die zu lernenden Gewichte $\\textbf{w}$,\n", "- die maximale Anzahl der Epochen (Lernzyklen), die der Lernalgorithmus durchlaufen darf und\n", "- die Lernrate, die den Grad der Veränderung der Gewichte bei jedem Schritt durch die Trainingsdaten bestimmt.\n", "\n", "##### Methode predict(self, inputs):\n", "Die predict(...) Methode enthält die Aktivierungsfunktion h(z) (hier: die Signum-Funktion):\n", "\n", "\\begin{equation}\n", " h(z) =\n", " \\begin{cases}\n", "\t\t\t-1 \\textrm{ falls } z < 0 \\textrm{,} \\\\\t\n", "\t\t\t0 \\textrm{ falls } z = 0 \\textrm{,} \\\\\t\n", "\t\t\t1 \\textrm{ falls } z > 0 \\textrm{.} \\\\\n", "\t\t\\end{cases}\n", "\\end{equation} \n", "Die Eingabe der Methode (inputs) sollte als NumPy Array/Vektor definiert werden.\n", "\n", "##### Methode fit(self, training_inputs, labels):\n", "Die Methode fit(...) benötigt zwei Argumente:\n", "- training_inputs ist eine Liste von numpy-Vektoren und\n", "- labels ist ein Array von erwarteten Ausgabewerten.\n", " \n", "Beim Trainieren des Perzeptrons soll folgende Funktionalität implementiert werden: \n", "Ein einzelner Trainingsdatenpunkt wird betrachtet und eine Vorhersage (Methode predict) getroffen. Auf Basis der Vorhersage $\\hat{y}$ werden die Gewichte nach folgender Regel aktualisiert (siehe auch Handout):\n", "\\begin{equation}\n", "\\textbf{w} \\leftarrow \\textbf{w} + \\eta \\cdot \\left( y - \\hat{y} \\right) \\cdot \\textbf{x} \\textrm{.} \n", "\\end{equation}\n", "\n", "Der Block aus predict und update der Gewichte wird solange iterativ ausgeführt bis die maximale Anzahl der Epochen erreicht ist (oder optional bis die Fehlerfunktion konvergiert ist). \n" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [], "source": [ "class Perceptron(object):\n", " def __init__(self, number_of_inputs, epochs, eta):\n", " \"\"\"\n", " Beispielaufruf des Konstruktors:\n", " >>> Perceptron(2, 100, 0.1)\n", " \"\"\"\n", " ### Dein Code kommt hierhin:\n", " self.weights = np.ones(number_of_inputs+1)\n", " self.epochs = epochs\n", " self.eta = eta\n", " self.bias = 1\n", " ##########################\n", " pass\n", " \n", " def predict(self, inputs):\n", " \"\"\"\n", " Beispiel des Funktionsaufrufes:\n", " >>> inputs = np.array([0, 1])\n", " >>> h = perceptron.predict(inputs) \n", " \"\"\"\n", " # Dein Code kommt hierhin:\n", " #bias\n", " sum = self.bias * self.weights[0]\n", " for i in range(len(inputs)):\n", " sum += self.weights[i+1]*inputs[i]\n", " return np.sign(sum)\n", " ########################## \n", " pass\n", "\n", " def fit(self, training_inputs, labels):\n", " \"\"\"\n", " Beispiel des Funktionsaufrufs:\n", " >>> perceptron.fit(train_input, labels)\n", " \"\"\"\n", " # Dein Code kommt hierhin:\n", " for i in range(len(training_inputs)):\n", " for j in range(len(training_inputs[i])+1):\n", " #bias\n", " if j == 0:\n", " self.weights[j] = self.eta * (labels[i] - self.predict(training_inputs[i])) * self.bias\n", " self.weights[j] += self.eta * (labels[i] - self.predict(training_inputs[i])) * training_inputs[i,j-1]\n", " ##########################\n", " pass\n", " \n", " def status(self):\n", " \"\"\"\n", " Die Methode status(...) gibt die aktuellen Gewichte aus.\n", "\n", " Beispiel des Funktionsaufrufes und der Ausgabe:\n", " >>> perceptron.status()\n", " Perceptron weights: [0. 1. 1.]\n", " \"\"\"\n", " print(\"Perceptron weights: \", self.weights)\n", " \n", " def getWeights(self):\n", " return self.weights" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 2:** Wenden Sie das implementierte Perzeptron auf das `AND`, `OR` und `XOR` Problem im zweidimensionalen Raum an. Berechnen Sie anhand der gelernten Gewichte $\\mathbf{w}$ des Perzeptrons die Geradengleichung der Diskriminanzgeraden und plotten Sie diese zusammen mit den Datenpunkten des jeweiligen Problems." ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[0. 0.8 0.8]\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 86 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Beispiel mit AND\n", "train_input_AND = np.array([\n", " [0, 0],\n", " [0, 1],\n", " [1, 0],\n", " [1, 1]\n", " ])\n", "\n", "labels_AND = np.array([-1, -1, -1, 1])\n", "\n", "# Dein Code kommt hier hin:\n", "# Perceptron anlegen und trainieren\n", "perceptron_AND = Perceptron(len(train_input_AND[0]),100,0.1)\n", "perceptron_AND.fit(train_input_AND,labels_AND)\n", "\n", "# Geradengleichung berechnen und plotten\n", "weights = perceptron_AND.getWeights()\n", "print(weights)\n", "#x = list()\n", "#disc = list()\n", "#for i in range(len(train_input_AND)):\n", "# x.append(train_input_AND[i].dot(2**np.arange(train_input_AND[i].size)[::-1]))\n", "# sum = weights[0]\n", "# for j in range(len(train_input_AND[i])):\n", "# sum -= 2**j * train_input_AND[i,-j-1] * weights[j+1]\n", "# disc.append(sum)\n", "#plt.plot(x,labels_AND,'o')\n", "#plt.plot(x,disc)\n", "\n", "x_AND = [1-weights[1],1]\n", "y_AND = [1+weights[0],1-weights[2]+weights[0]]\n", "\n", "fig, ax = plt.subplots()\n", "ax.scatter(train_input_AND[(labels_AND==-1),0] , train_input_AND[(labels_AND==-1),1])\n", "ax.scatter(train_input_AND[(labels_AND==1),0] , train_input_AND[(labels_AND==1),1])\n", "plt.plot(x_AND,y_AND)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[0. 1. 1.]\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 87 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Beispiel mit OR\n", "train_input_OR = np.array([\n", " [0, 0],\n", " [0, 1],\n", " [1, 0],\n", " [1, 1]\n", " ])\n", "\n", "labels_OR = np.array([-1, 1, 1, 1])\n", "\n", "# Dein Code kommt hier hin:\n", "# Perceptron anlegen und trainieren\n", "perceptron_OR = Perceptron(len(train_input_OR[0]),100,0.1)\n", "perceptron_OR.fit(train_input_OR,labels_OR)\n", "\n", "# Geradengleichung berechnen und plotten\n", "weights = perceptron_OR.getWeights()\n", "print(weights)\n", "\n", "x_OR = [1-weights[1],1]\n", "y_OR = [1+weights[0], 1-weights[2]+weights[0]]\n", "\n", "fig, ax = plt.subplots()\n", "ax.scatter(train_input_OR[(labels_OR==-1),0] , train_input_OR[(labels_OR==-1),1])\n", "ax.scatter(train_input_OR[(labels_OR==1),0] , train_input_OR[(labels_OR==1),1])\n", "plt.plot(x_OR,y_OR)" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[-0.4 0.8 0.8]\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 88 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Beispiel mit XOR\n", "train_input_XOR = np.array([\n", " [0, 0],\n", " [0, 1],\n", " [1, 0],\n", " [1, 1]\n", " ])\n", "\n", "labels_XOR = np.array([-1, 1, 1, -1])\n", "\n", "# Dein Code kommt hier hin:\n", "# Perceptron anlegen und trainieren\n", "perceptron_XOR = Perceptron(len(train_input_XOR[0]),100,0.1)\n", "perceptron_XOR.fit(train_input_XOR,labels_XOR)\n", "\n", "# Geradengleichung berechnen und plotten\n", "weights = perceptron_XOR.getWeights()\n", "print(weights)\n", "\n", "x_XOR = [1-weights[1],1]\n", "y_XOR = [1+weights[0], 1-weights[2]+weights[0]]\n", "\n", "fig, ax = plt.subplots()\n", "ax.scatter(train_input_XOR[(labels_XOR==-1),0] , train_input_XOR[(labels_XOR==-1),1])\n", "ax.scatter(train_input_XOR[(labels_XOR==1),0] , train_input_XOR[(labels_XOR==1),1])\n", "plt.plot(x_XOR,y_XOR)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 3:** Warum wird im Perzeptron der Bias $x_0$ benötigt beziehungsweise wieso werden bei $n$ Merkmalen ($x_1, \\ldots, x_n$), $n+1$ Gewichte ($w_0, \\ldots, w_n$) benötigt? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Antwort:**\n", "Das Bias stellt einen Schwellwert dar. \n", "Die Summe der Produkte von Eingabewerten und ihren Gewichtungen müssen diesen Schwellwert überschreiten, damit das Perzepton einen Effekt hat." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 4:** Wenden Sie das Perzeptron auf den Iris-Datensatz der letzten Übung an.\n", "Wählen Sie dazu wieder zwei Merkmale und zwei Zielklassen des Datensatzes. Wie gut funktioniert Ihr Perzeptron?\n" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Hier wird der Iris-Datensatz geladen und vorbereitet (siehe letzte Übung)\n", "\n", "# Datensatz laden\n", "names = [\"sepal-length\", \"sepal-width\", \"petal-length\", \"petal-width\", \"class\"]\n", "iris_data = pd.read_csv(\"iris.csv\", names = names)\n", "\n", "# Klassen auswählen (Bei Bedarf ändern)\n", "iris_data = iris_data.loc[lambda x: x['class'] != 'Iris-setosa']\n", "\n", "# Merkmale auswählen (Bei Bedarf ändern)\n", "iris_features = ['petal-length', 'petal-width']\n", "X = iris_data[iris_features]\n", "\n", "# Pandas-Datenformat in reine Liste umwandeln\n", "X = X.values\n", "\n", "# Label vorbereiten\n", "from sklearn.preprocessing import LabelEncoder\n", "lb_make = LabelEncoder()\n", "iris_data[\"class_code\"] = lb_make.fit_transform(iris_data[\"class\"])\n", "y = iris_data.class_code\n", "# Pandas-Datenformat in reine Liste umwandeln\n", "y = y.values\n", "# Die Signum-Funktion unseres Perzeptrons benötigt die Label -1, 1\n", "y[y==0] = -1\n", " \n", "# Trainings- und Testdatensplit\n", "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = (\n", " train_test_split(X, y, test_size=.2, random_state=np.random.seed(42)))\n", "\n", "# Scatterplot der ausgewählten Merkmale und Klie das Perzeptron auf das Problem der Banknotenklassifizierung der letzten Übung an. Wählen und berechnen Sie dafür wieder zwei geeignete Merkmale der Trainingsbanknoten (Momentenberechnung auf den Farbkanälen mit `banknotes[i].compute_feature(moment, color)`). Mit welcher Genauigkeit (engl. *accuracy*) werden die Testbanknoten klassifiziert? Wie sind die erreichten Ergebnisse des Perzeptrons im Vergleich zum linearen Klassifikator der letzten Übung zu bewerten?assen\n", "fig, ax = plt.subplots()\n", "ax.scatter(X[(y==-1),0] , X[(y==-1),1])\n", "ax.scatter(X[(y==1),0] , X[(y==1),1])\n", "ax.set(xlabel = iris_features[0], ylabel = iris_features[1])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[ 0.38 -0.12 0.14]\n" ] } ], "source": [ "# Perzeptron auf Iris-Datensatz trainieren und anwenden\n", "# Dein Code kommt hierhin:\n", "percepton_iris = Perceptron(2, 100, 0.1)\n", "percepton_iris.fit(X_train,y_train)\n", "\n", "weights = percepton_iris.getWeights()\n", "print(weights)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 5:** Welche(n) Nachteil(e) könnte die symmetrische Aktualisierungsfunktion in Bezug\n", "auf das Anlernen der Gewichte haben?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Antwort:** \n", "- Ausreißer haben einen großen Effekt auf die Gewichtung\n", "- Die Lernfähigkeit lässt nach" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6-final" } }, "nbformat": 4, "nbformat_minor": 2 }