{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Week 5: Introduction to neural Networks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Perceptron learning rule" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This week, we will start working with neural networks. For each of the exercises below you can use the method of your choice but you should display the final boundary of your classifier." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise 1. \n", "As a first exercise, load the binary dataset below and code a few steps of the perceptron learning rule. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import scipy.io as sio\n", "\n", "from matplotlib.colors import ListedColormap\n", "cm_bright = ListedColormap(['#0000FF', '#FF0000'])\n", "\n", "data1 = sio.loadmat('perceptron_data_class1.mat')\n", "data2 = sio.loadmat('perceptron_data_class2.mat')\n", "\n", "data1 = data1['perceptron_data_class1']\n", "data2 = data2['perceptron_data_class2']\n", "\n", "# put your code here\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "plt.scatter(data1[:,0], data1[:,1], c='r')\n", "plt.scatter(data2[:,0], data2[:,1], c='b')\n", "plt.show()\n", "\n", "\n", "# -sum_{misclassified points} t^(i) (beta_0+ beta_1x_1^i + beta_2x_2^i)\n", "\n", "# loop over the misclassified samples beta^{k+1} <-- beta^k + eta*...\n", "\n", "\n", "target1 = np.ones((np.shape(data1)[0], 1))\n", "target2 = -np.ones((np.shape(data2)[0],1))\n", "\n", "target = np.vstack((target1, target2))\n", "\n", "data = np.vstack((data1, data2))\n", "\n", "center_of_mass = np.mean(data, axis=0)\n", "\n", "center_of_mass = np.expand_dims(center_of_mass,1)\n", "\n", "centered_data = data - np.matmul(np.ones((np.shape(data)[0],1)), \\\n", " center_of_mass.T)\n", "\n", "\n", "\n", "Nclass1 = np.shape(data1)[0] \n", "Nclass2 = np.shape(data2)[0] \n", "\n", "centered_data1 = centered_data[:Nclass1,:]\n", "centered_data2 = centered_data[Nclass1:,:]\n", "\n", "# centered_data contains all the centered points (N1+N2)\n", "\n", "plt.scatter(centered_data[:Nclass1,0], \\\n", " centered_data[:Nclass1,1], c='r')\n", "plt.scatter(centered_data[Nclass1:Nclass1+Nclass2-1,0], \\\n", " centered_data[Nclass1:Nclass1+Nclass2-1,1], c='b')\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[2.70690289]\n", " [2.08111873]]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "beta = np.random.normal(0, 1, (2,1))\n", "print(beta)\n", "\n", "beta0 = 0\n", "\n", "beta = np.vstack((beta0,beta))\n", "\n", "\n", "x1min = np.min(centered_data[:,0])\n", "x1max = np.max(centered_data[:,0])\n", "\n", "x2min = np.min(centered_data[:,1])\n", "x2max = np.max(centered_data[:,1])\n", "\n", "xx, yy = np.meshgrid(np.linspace(x1min, x1max, 200), np.linspace(x2min, x2max, 200))\n", "\n", "\n", "\n", "Xtilde_tmp = np.hstack((np.expand_dims(xx.flatten(),1), np.expand_dims(yy.flatten(),1)))\n", "\n", "Xtilde = np.hstack((np.ones((len(xx.flatten()),1)) ,Xtilde_tmp))\n", "\n", "prediction = np.matmul(Xtilde, beta)\n", "\n", "# short trick to turn the real prediction into a +1/-1 value\n", "# if prediction is >0 then (prediction>0) = 1 ==> 2(prediction>0) -1 = 1\n", "# if prediction is <0 then (prediction>0) = 0 ==> 2(prediction>0)-1 = -1\n", "\n", "final_prediction = (prediction > 0) *2 -1\n", "\n", "\n", "plt.scatter(centered_data[:Nclass1,0], \\\n", " centered_data[:Nclass1,1], c='r')\n", "plt.scatter(centered_data[Nclass1:Nclass1+Nclass2-1,0], \\\n", " centered_data[Nclass1:Nclass1+Nclass2-1,1], c='b')\n", "plt.contourf(xx, yy, np.reshape(final_prediction, \\\n", " np.shape(xx)), levels = 2,alpha=0.2, cmap=cm_bright)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "target = np.squeeze(target)\n", "beta = np.squeeze(beta)\n", "\n", "dataTilde = np.hstack((np.ones((np.shape(data)[0],1)), centered_data))\n", "\n", "predicted_target_trainingData_tmp = np.matmul(dataTilde, beta)\n", "\n", "\n", "predicted_target_trainingData = \\\n", "(predicted_target_trainingData_tmp > 0) *2 -1\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "misclassified_points = \\\n", "centered_data[np.squeeze(np.not_equal(target, \\\n", " predicted_target_trainingData)),:]\n", "\n", "misclassified_targets = target[np.squeeze(np.not_equal(target, \\\n", " predicted_target_trainingData))]\n", "\n", "xi = misclassified_points[0,:]\n", "ti = misclassified_targets[0]\n", "xitilde = np.hstack((1, xi))\n", "\n", "lr = 0.1\n", "\n", "\n", "beta = np.add(beta,lr*ti*xitilde)\n", "\n", "prediction = np.matmul(Xtilde, beta)\n", "final_prediction = (prediction > 0) *2 -1\n", "plt.scatter(centered_data[:Nclass1,0], \\\n", " centered_data[:Nclass1,1], c='r')\n", "plt.scatter(centered_data[Nclass1:Nclass1+Nclass2-1,0], \\\n", " centered_data[Nclass1:Nclass1+Nclass2-1,1], c='b')\n", "plt.contourf(xx, yy, np.reshape(final_prediction, \\\n", " np.shape(xx)), levels = 2,alpha=0.2, cmap=cm_bright)\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "max_iter = 20\n", "\n", "predicted_target_trainingData_tmp = np.matmul(dataTilde, beta)\n", "\n", "predicted_target_trainingData = \\\n", "(predicted_target_trainingData_tmp > 0) *2 -1\n", "misclassified_points = \\\n", "centered_data[np.squeeze(np.not_equal(target, \\\n", " predicted_target_trainingData)),:]\n", "\n", "misclassified_targets = target[np.squeeze(np.not_equal(target, \\\n", " predicted_target_trainingData))]\n", "\n", "while(len(misclassified_targets)>0):\n", " \n", " xi = misclassified_points[0,:]\n", " ti = misclassified_targets[0]\n", " xitilde = np.hstack((1, xi))\n", "\n", " lr = 0.1\n", " beta = np.add(beta,lr*ti*xitilde)\n", " \n", " predicted_target_trainingData_tmp = np.matmul(dataTilde, beta)\n", "\n", " predicted_target_trainingData = \\\n", " (predicted_target_trainingData_tmp > 0) *2 -1\n", " misclassified_points = \\\n", " centered_data[np.squeeze(np.not_equal(target, \\\n", " predicted_target_trainingData)),:]\n", " \n", " misclassified_targets = target[np.squeeze(np.not_equal(target, \\\n", " predicted_target_trainingData))]\n", " " ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[]\n" ] } ], "source": [ "print(misclassified_targets)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prediction = np.matmul(Xtilde, beta)\n", "final_prediction = (prediction > 0) *2 -1\n", "plt.scatter(centered_data[:Nclass1,0], \\\n", " centered_data[:Nclass1,1], c='r')\n", "plt.scatter(centered_data[Nclass1:Nclass1+Nclass2-1,0], \\\n", " centered_data[Nclass1:Nclass1+Nclass2-1,1], c='b')\n", "plt.contourf(xx, yy, np.reshape(final_prediction, \\\n", " np.shape(xx)), levels = 2,alpha=0.2, cmap=cm_bright)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise 2.\n", "\n", "__2a.__ Load the data below. Using the neural_network module from scikit-learn and its MLPClassifier model, learn a classifier, for the dataset below using \n", "\n", "- One hidden layer with a linear activation function and \n", " - One neuron\n", " - Two neurons\n", " \n", " \n", " \n", "- One hidden layer with a non linear activation function (take Relu for example or a binary step)\n", " - One neuron\n", " - Two neurons\n", "\n", "How many neurons, hidden layers do you need to learn the distribution of the data? Do you have an idea why?\n", "\n", "Try increasing the number of neurons and hidden layers. Then try different values of the learning rate. \n" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import scipy.io as sio\n", "data1 = sio.loadmat('neural_net_class1.mat')\n", "data2 = sio.loadmat('neural_net_class2.mat')\n", "\n", "data1 = data1['neural_net_class1']\n", "data2 = data2['neural_net_class2']\n", "\n", "from sklearn.neural_network import MLPClassifier\n", "\n", "# put your code here\n", "\n", "\n", "plt.scatter(data1[:,0], data1[:,1], c='r')\n", "plt.scatter(data2[:,0], data2[:,1], c='b')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(172, 1)\n", "(195, 1)\n" ] } ], "source": [ "print(np.shape(target1))\n", "print(np.shape(target2))" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/validation.py:72: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", " return f(**kwargs)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "data = np.vstack((data1, data2))\n", "target1 = np.ones((np.shape(data1)[0],1))\n", "target2 = np.zeros((np.shape(data2)[0],1))\n", "\n", "target = np.vstack((target1, target2))\n", "\n", "\n", "\n", "from sklearn.neural_network import MLPClassifier\n", "from matplotlib.colors import ListedColormap\n", "cm_bright = ListedColormap(['#FF0000', '#0000FF'])\n", "\n", "my_classifier = MLPClassifier(max_iter=1000, \\\n", " hidden_layer_sizes = (1,), \\\n", " activation = 'logistic', solver = 'lbfgs')\n", "my_classifier.fit(data, target)\n", "\n", "\n", "x1min = np.min(data[:,0])\n", "x1max = np.max(data[:,0])\n", "x2min = np.min(data[:,1])\n", "x2max = np.max(data[:,1])\n", "\n", "xx, yy = np.meshgrid(np.linspace(x1min,x1max, 100), np.linspace(x2min, x2max, 100))\n", "\n", "Xprediction = np.vstack((xx.flatten(), yy.flatten()))\n", "Xprediction = Xprediction.T\n", "predicted_targets = my_classifier.predict(Xprediction)\n", "\n", "plt.scatter(data1[:,0], data1[:,1], c='r')\n", "plt.scatter(data2[:,0], data2[:,1], c='b')\n", "plt.contourf(xx, yy, np.reshape(predicted_targets>0.5, np.shape(xx)), levels = 2,alpha=0.2, cmap=cm_bright)\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/validation.py:72: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", " return f(**kwargs)\n", "/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:471: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", " self.n_iter_ = _check_optimize_result(\"lbfgs\", opt_res, self.max_iter)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.neural_network import MLPClassifier\n", "from matplotlib.colors import ListedColormap\n", "cm_bright = ListedColormap(['#0000FF', '#FF0000'])\n", "\n", "my_classifier = MLPClassifier(max_iter=2000, \\\n", " hidden_layer_sizes = (50,50), \\\n", " activation = 'logistic', solver = 'lbfgs', alpha = .1)\n", "my_classifier.fit(data, target)\n", "\n", "\n", "x1min = np.min(data[:,0])\n", "x1max = np.max(data[:,0])\n", "x2min = np.min(data[:,1])\n", "x2max = np.max(data[:,1])\n", "\n", "xx, yy = np.meshgrid(np.linspace(x1min,x1max, 100), np.linspace(x2min, x2max, 100))\n", "\n", "Xprediction = np.vstack((xx.flatten(), yy.flatten()))\n", "Xprediction = Xprediction.T\n", "predicted_targets = my_classifier.predict(Xprediction)\n", "\n", "plt.scatter(data1[:,0], data1[:,1], c='r')\n", "plt.scatter(data2[:,0], data2[:,1], c='b')\n", "plt.contourf(xx, yy, np.reshape(predicted_targets>0.5, np.shape(xx)), levels = 2,alpha=0.2, cmap=cm_bright)\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__2b.__ Keep the dataset from above. try to change the intialization of the training algorithm. Plot the resulting classifier for a couple of different initializations. What do you see?\n", "\n", "Do it for a small network first. Then repeat those experiments for larger architectures. I.e. increase the number of neurons and the number of layers. What do you see when you change the initialization?\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n", "# put your code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise 3. \n", "\n", "__3a.__Load the data below. Try to build the best neural network you can for this dataset. Split the data between a training and a test set and evaluate the models you built. What is the best validation error you can get?\n" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "import scipy.io as sio\n", "data1 = sio.loadmat('neural_net_ex2_class1.mat')\n", "data2 = sio.loadmat('neural_net_ex2_class2.mat')\n", "\n", "data1 = data1['neural_net_ex2_class1']\n", "data2 = data2['neural_net_ex2_class2']\n", "\n", "from sklearn.neural_network import MLPClassifier\n", "\n", "\n", "\n", "plt.scatter(data1[:,0], data1[:,1], c='r')\n", "plt.scatter(data2[:,0], data2[:,1], c='b')\n", "plt.show()\n", "\n", "# put your code here" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/validation.py:72: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", " return f(**kwargs)\n", "/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:471: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of f AND g EVALUATIONS EXCEEDS LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", " self.n_iter_ = _check_optimize_result(\"lbfgs\", opt_res, self.max_iter)\n" ] } ], "source": [ "data = np.vstack((data1, data2))\n", "target1 = np.ones((np.shape(data1)[0],1))\n", "target2 = np.zeros((np.shape(data2)[0],1))\n", "\n", "target = np.vstack((target1, target2))\n", "\n", "from sklearn.neural_network import MLPClassifier\n", "from matplotlib.colors import ListedColormap\n", "\n", "my_classifier = MLPClassifier(max_iter=40000, \\\n", " hidden_layer_sizes = (100,100), \\\n", " activation = 'tanh', solver = 'lbfgs', alpha=0.15)\n", "my_classifier.fit(data, target)\n", "\n", "\n", "x1min = np.min(data[:,0])\n", "x1max = np.max(data[:,0])\n", "x2min = np.min(data[:,1])\n", "x2max = np.max(data[:,1])\n", "\n", "xx, yy = np.meshgrid(np.linspace(x1min,x1max, 100), np.linspace(x2min, x2max, 100))\n", "\n", "Xprediction = np.vstack((xx.flatten(), yy.flatten()))\n", "Xprediction = Xprediction.T\n", "predicted_targets = my_classifier.predict(Xprediction)\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cm_bright = ListedColormap(['#0000FF', '#FF0000'])\n", "\n", "plt.scatter(data1[:,0], data1[:,1], c='r')\n", "plt.scatter(data2[:,0], data2[:,1], c='b')\n", "plt.contourf(xx, yy, np.reshape(predicted_targets>0.5, np.shape(xx)), levels = 2,alpha=0.2, cmap=cm_bright)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "__3b.__ With the same dataset, add additional features to your model, e.g. $\\sin(x), \\sin(y)$ or other monomials. Can you improve your classifier ?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# put your code here\n", "\n", "\n" ] } ], "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.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }