Files
FYS-STK4155/doc/Programs/ANN/Ann3.ipynb
T
2018-04-08 15:31:03 -04:00

495 lines
73 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## <p style=\"text-align: right;\"> Nicolas Dronchi </p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Day 23 Pre-Class assignment: Back propagation\n",
"This pre-class assignment finishes out the videos from \"Neural Networks Demystified\" module. Please watch the videos. Again, you do not have to understand the equations but the math is included for completeness.\n",
"\n",
"If you are lost, I highly recommend reviewing the entire \"Neural Networks Demystified\" module which can be downloaded from github:\n",
"\n",
" git clone https://github.com/stephencwelch/Neural-Networks-Demystified\n",
"\n",
"\n",
"<img src=https://www.pyimagesearch.com/wp-content/uploads/2016/08/simple_neural_network_header.jpg width=400px>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Goals for this pre-class assignment:\n",
"</p>\n",
"1. Reviewing gradient descent\n",
"1. Performing Back Propagation\n",
"1. Training at network\n",
"\n",
"## Assignment instructions\n",
"\n",
"**This assignment is due by 11:59 p.m. the day before class** and should be uploaded into the appropriate \"Pre-class assignments\" dropbox folder in the Desire2Learn website.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Gradient Decent\n",
"\n",
"&#9989; Do This - watch the following video:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/jpeg": "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\nsO2P6OF7ZEqJJJGV64iyWaOimeyeSFIJkYssC5mejInq5LOR0SKipqN/jmBUNbJTS1UbZZKR+2U7\nttkZtb85j860b0R/pRM3196QYUVLDh6wRriUUEe2LLPHOtNG+pgbTR4bTwor7bXG1/miq9qXc9rU\nuiPsrA8MhzaTzSqiqo6WrSaWRr43r/RjqKnialOmajtpmpn3W109L85C/lFk/BXVFJUPnkjfRK50\nO1LEnpPmpp3ZznsVytXzRjFZeyo9VtdGq3HyWyXiw6GKnp62faWSrK+J6UjmTNWijomwPTabxwNW\nJkyNjVlnJm3zPQJFYj+yRSsYx6MyTDcOr54K5NrqJaR7mQTRyqrWSROznt9B2a9Udr1mxqKVXzwS\npLmpBtl40a1UftrczS5dLbW4DydHkBRRNpWtnVPNGtZHaGhYlmSrOxUayBEhVXLmv2vN21iI1+ci\nIY8WxlhzG0iMnliWlp0p3OgSjhSq2psvmlRVMjgzZKiF8yytkRE9Jt1vdUWzCzGXr4cPftlNI6pd\nK6COWNVcyJFnWbNVXu2tqIxU2ttkaiJoUvYZicNSs20vSRKed1NI5qordujZG+RiKi62rKjVvazm\nuTgPG0WxxQxxtiWpke2OmrqWJXx0TpImYjLJPK+KZ0CuY5j5XZulUsqoqOut93kPk9FhcVTCyZJG\nT1s1Y30KeHMWoZDtkaRU0bI2MSVkiojW6nJdVW6kiIgiuPD0lwha21v6TfvQnbW/pN+9AyXFPHV7\nv5S9vGetWVv6TfvQ8ZjszW1GdnJ96GtuPRu7P/t+yh2hS1UPREUr25jtOc370LdWjFTfN+9Dz4w9\n4t9Wmll0qYVY/wDaXKx7Wrvk+9DCnqGu4U+9Dy1IiIbOnac9L1Ktjz+XsGfC72KbvbW21p96Gux5\nyPhcl01caGnEOjFsTEuTtkmgzZVcicKmZsRZbvw+obDK5dpe5E0/mqbrZTpEVHqltCqp8ombazk/\n0p09Ckaulxs42/vOjuOdfV3NgGJMmY17VRUciKip6zcoc1bBWX2araOpfpT8m5y8HFpOiaGrY9qK\njk0+tDlaunOnbjLpaWtXUrFoXcQb+Kf7E/xIzeU62RDS1j0dE+y3s1t7adcsduw3KLZEPPC5+af2\nj/1mQzG1o5rnnmyWU2FJOVk37ZLFaTmuZNdC26fSZWlIrlvIpi+1bmjpKq6m0hfe1i1nLDU0sJqK\n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\nAAAAAAAAAAAAAAB//9k=\n",
"text/html": [
"\n",
" <iframe\n",
" width=\"640\"\n",
" height=\"360\"\n",
" src=\"https://www.youtube.com/embed/5u0jaA3qAGk\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" ></iframe>\n",
" "
],
"text/plain": [
"<IPython.lib.display.YouTubeVideo at 0x1d9775b5eb8>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import YouTubeVideo\n",
"YouTubeVideo('5u0jaA3qAGk',width=640,height=360)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Question 1**: In simple terms, explain the \"Curse of Dimensionality\"?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to grid search/brute force solve for the best variables for all dimensions it would take N^D operations where D is the dimension. This can quickly reach amounts of time that aren't reasonably computable. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"## 2. Back Propagation:\n",
"\n",
"Now watch the following video:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/jpeg": "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\n",
"text/html": [
"\n",
" <iframe\n",
" width=\"640\"\n",
" height=\"360\"\n",
" src=\"https://www.youtube.com/embed/GlcnxUlrtek\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" ></iframe>\n",
" "
],
"text/plain": [
"<IPython.lib.display.YouTubeVideo at 0x1d9775d8160>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"YouTubeVideo('GlcnxUlrtek',width=640,height=360)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Question 2**: The gradient decent algorithm in Neural Networks is often called \"back propagation.\" What is being passed back though the algorithm and causing the weights to be updated? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The weights of how much they contribute to the error. The goal is to find out where the most error came from and then change that."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here is a link to the entire code so far:\n",
"\n",
"https://raw.githubusercontent.com/stephencwelch/Neural-Networks-Demystified/master/partSix.py"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"&#9989; Do This - Download and inspect the partSix.py file and run the following command:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.3 1. ]\n",
" [0.5 0.2]\n",
" [1. 0.4]]\n",
"[[0.75]\n",
" [0.82]\n",
" [0.93]]\n"
]
}
],
"source": [
"from partSix import *\n",
"print(X)\n",
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"&#9989; Do This - Create an instance of the Neural Network and apply forward function to estimate $\\hat{y}$:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.52155376],\n",
" [0.41215014],\n",
" [0.41576012]])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# put your code here\n",
"NN = Neural_Network()\n",
"NN.forward(X)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Question 3**: How good is this initial estimation?"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0.24148593])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"NN.costFunction(X, y )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"pretty bad. The cost function gives an error of 0.241. It only guesses variables around 0.5."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"## 3. Training:\n",
"\n",
"Please watch the following video:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUDBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI\nCAgIChANCAgOCQgIDRUNDhERExMTCA0WGBYSGBASExIBBQUFCAcIDwkJDxUPEBQVFRQSFRQVEhQV\nFBIVEhUUFBQUFRQWFBIUEhQUEhQUFRUUFBQUFBQUFBQUFBQUFBQUFP/AABEIAWgB4AMBIgACEQED\nEQH/xAAdAAEAAQUBAQEAAAAAAAAAAAAABQECAwQGBwgJ/8QAXBAAAgEDAgIDBg8LCgMHAwUAAQID\nAAQRBRITIQYUMRgiMkFRYSNSVFVxgZGTlKWx0tPU1QczQlNjcpKhssHRCBUWJDQ1YnN0s4K08CVD\nZKKjwuGDw/FEhIXi8v/EABsBAQEBAQEBAQEAAAAAAAAAAAABAgMEBgUH/8QAOxEAAgIAAgYJBAAF\nAQkAAAAAAAECEQMhBBIxQVFxBQYyYYGRobHBIkLR8BMUI1LhMwcVYnKCorLC8f/aAAwDAQACEQMR\nAD8A+MqUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQC\nlKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUp\nQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAK\nUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAKV7H3MHTn1j+M9H+u07mDpz6x/Gej/AF2gPHKV\n7H3MHTn1j+M9H+u07mDpz6x/Gej/AF2gPHKV7H3MHTn1j+M9H+u07mDpz6x/Gej/AF2gPHKV7J3M\nHTn1j+M9H+u07mDpz6x/Gej/AF2gPG6V7J3MHTn1j+M9H+u07mDpz6x/Gej/AF2gPG6V7J3L/Tn1\nj+M9H+u07mDpz6x/Gej/AF2gPG6V7J3L/Tn1j+M9H+u07l/pz6x/Gej/AF2gPG6V7J3L/Tn1j+M9\nH+u07l/pz6x/Gej/AF2gPG6V7J3L/Tn1j+M9H+u07l/p16x/Gej/AF2gPG6V7J3L/Tr1j+M9H+u0\n7l/p16x/Gej/AF2gPG6V7J3L/Tr1j+M9H+u07l/p16x/Gej/AF2gPG6V7J3L/Tr1j+M9H+u07l/p\n16x/Gej/AF2gPG6V7J3L/Tr1j+M9H+u07l/p16x/Gej/AF2gPG6V7J3L3Tr1j+M9H+u07l/p16x/\nGej/AF2gPG6V7J3L/Tr1j+M9H+u1XuXunXrH8Z6P9doDxqley9y9069Y/jPR/rtO5e6desfxno/1\n2gPGqV7L3L3Tr1j+M9H+u07l7p16x/Gej/XaA8apXsvcvdOvWP4z0f67TuXunXrH8Z6P9doDxqle\ny9y9069Y/jPR/rtO5e6desfxno/12gPGqV7L3L3Tr1j+M9H+u07l7p16x/Gej/XaA8apXsvcvdOv\nWP4z0f67TuXunXrH8Z6P9doDxqley9y9069Y/jPR/rtO5e6desfxno/12gPGqV7L3L3Tr1j+M9H+\nu07l7p16x/Gej/XaA8apXsvcvdOvWP4z0f67TuXunXrH8Z6P9doDxqley9y9069Y/jPR/rtO5e6d\nesfxno/12gPGqV7L3L3Tr1j+M9H+u07l7p16x/Gej/XaA8apXsvcvdOvWP4z0f67TuXenXrH8Z6P\n9doDxqley9y7069Y/jPR/rtO5d6desfxno/12gPGqV7L3LvTr1j+M9H+u07l3p16x/Gej/XaA8ap\nXsvcu9OvWP4z0f67Rv5L3ToAk6HyHM/9p6P4v/3tAfpRSlYbmfZt71nLttVV25ztZySXYADah8dA\nZqVrdYf1PL+lB9LTrD+p5f0oPpalks2aVrdYf1PL+lB9LVrXpHIwuD5DJbg/7tLFm5StLr/5JvfL\nb6anX/yTe+W301LFm7StLr35JvfLb6Wq9f8AyTe+W301LFm7VK0+v/km98tvpadf/JN75bfS0sWb\ntK0uv/km98tvpqdf/JN75bfTUsWbtK0uv/km98tvpqdf/JN75bfTUsWbtK0uvfkm98tvpqdf/JN7\n5bfTUsWbtVrR6/8Akm98tvpqr1/8k3vlt9LSxZu0rS6/+Sb3y2+mqvX/AMk3vlt9LSxZuUrT6/8A\nkm98tvpadfP4pvfLb6WlizcpWn1/8k3vlt9NTr5/FN75bfTUsWbtK0uv/km98tvpadf/ACTe+W30\n1LFm9SsBuQImlYFVRXdhlWICAk+AxBOB5at6xJ6nl/St/paWLNmla3WJPU8v6Vv9LTrEnqeX9K3+\nlpYs2aVqPdsO2GQey9uPllq3r/5JvfLb6alizdqtaPX/AMk3vlt9NTr/AOSb3y2+mpYs3qVpdfP4\np/fLb6anX/yT++W301LFm7StLr/5J/fLb6anXz+Kf3y2+mpYs3aVpdfP4p/fLb6anXz+Kf3y2+mp\nYs3aVpdf/JP75bfTVXr/AOSf3y2+mpYs3KVp9f8AyT++W301Ov8A5J/fLb6alizcpWn18/in98tv\npqdf/JP75bfTUsWblK0+vfkn98tvpqde/JP75bfTUsWblK0+vfkn98tvpqde/JP75bfTUsWblVrS\n69+Sf3y2+mp178k/vlt9NSxZu1WtHr35J/fLb6aq9f8AyT++W301LFm7StIX5/FP75bfTU6/+Sf3\ny2+mpYs3asn8FvzW+Q1S3k3ru2le3kShPLzoxH66rP4Dfmt8hqlMVa1598t/85v+XnrZrWvPvlv/\nAJzf8vPUZGaGuXN8ksYtYVmjMMpfKpym4kKxDeZ1KrsadiAjZ4YGRnnsdZnK2JMXDaZ1F1GVMpgz\naTSsm+M7VxMkabzlTnHawNSFK3eWwpG391cJKyxQ8ZQluQMFMGS64czcZmCNtgLPsHP0Px7gK1ek\nkt2q4so0eV5kVmkOFii2AvJtPhtgYC+VhU5XPdJ4pneARXAt1F2jXB4ojMkAhO6FMqdzM2wcipHM\n5OMGWSrIqLUda2MHsIjJs3K0csaqXzGBHh5D24lJPLG5QM4yZa1u71o7ppLVI5I+ILVOKG4+0NsL\n4OEDEIcZ5byPFk6en2c501Ip9RdbjAMt7DJCxD792xHePYVxhM7BnmcAmrel1rduim0v0tpVtrpU\nSVgqzzNEBDK7g96sbAsSFbwuzlSyKL4v0Mq3upAheqrIN3OQmOIlSu8HhiZsH8A8zgru5hsK6/qI\nC5slY9r7ZIxyMjghAZebKgQ88bt5OV24Opq9jdNawK+qQwqstqTPwWBmO44jLi4G4NI0O3HaEO7f\nu5YIbG4RZy2sRzP1MBwXMSxhZpTx1ZZWMIb0VGkwSNnIjYAFjV7yetLm7aKZ5IAkiqeDEGVmdgmf\nC37dpc4GSvZk4zy0o7rU1Xv7dJZNkWeGyJCHJuGfaXk3kAC2Q5HIuzDcBgxi6bdMZTBraJG1zqBR\nQgcxSNM7GEF5+fBwUKHkBuICHGMo0+9JTOtRhhcWbkIg2vEiYktzG8x+/OVYMDnxc80Lq950emST\nMhM6COTfINq4xsDHYeTH8HHk9gVtVwuh2EyRAR66k79Xy0rM80Xod0HeVSbk4U7zExLEgFOeeZ2b\n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\nSgFKUoBSlKAUpSgFKUoD/9k=\n",
"text/html": [
"\n",
" <iframe\n",
" width=\"640\"\n",
" height=\"360\"\n",
" src=\"https://www.youtube.com/embed/9KM9Td6RVgQ\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" ></iframe>\n",
" "
],
"text/plain": [
"<IPython.lib.display.YouTubeVideo at 0x1d9775b5da0>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import YouTubeVideo\n",
"YouTubeVideo('9KM9Td6RVgQ',width=640,height=360)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"&#9989; Do This - Now, create an instance of the ```trainer``` class from the partSix.py file. Call the objects ```train``` function by passing it the original ```X``` and ```y``` data:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Optimization terminated successfully.\n",
" Current function value: 0.000000\n",
" Iterations: 36\n",
" Function evaluations: 39\n",
" Gradient evaluations: 39\n"
]
}
],
"source": [
"#Put your code here\n",
"T = trainer(NN)\n",
"T.train(X,y)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.74998259]\n",
" [0.82002105]\n",
" [0.93000224]]\n",
"[3.75622733e-10]\n",
"[[0.75]\n",
" [0.82]\n",
" [0.93]]\n"
]
}
],
"source": [
"print(NN.forward(X))\n",
"print(NN.costFunction(X, y ))\n",
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"&#9989; Do This - If done correctly, the ```NN``` object should now be trained. Apply the forward function again to see the new estimation of $\\hat{y}$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Question 4**: Hopefully this worked and the estimation is better than the previous one. How close are these values to the original grades? What shortcomings are there to testing using this approach?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These are very close values. I think some short comings is when there are local minimums in the data as well as when you have a low amount of data. I think it takes a large amount of data to train to be something useful and not just spit back out the same answers you trained it on."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----\n",
"# Assignment wrap-up\n",
"\n",
"Please fill out the form that appears when you run the code below. **You must completely fill this out in order to receive credit for the assignment!**"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"<iframe \n",
"\tsrc=\"https://goo.gl/forms/SIRHykeawcq3Ip753\" \n",
"\twidth=\"80%\" \n",
"\theight=\"600px\" \n",
"\tframeborder=\"0\" \n",
"\tmarginheight=\"0\" \n",
"\tmarginwidth=\"0\">\n",
"\tLoading...\n",
"</iframe>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import HTML\n",
"HTML(\n",
"\"\"\"\n",
"<iframe \n",
"\tsrc=\"https://goo.gl/forms/SIRHykeawcq3Ip753\" \n",
"\twidth=\"80%\" \n",
"\theight=\"600px\" \n",
"\tframeborder=\"0\" \n",
"\tmarginheight=\"0\" \n",
"\tmarginwidth=\"0\">\n",
"\tLoading...\n",
"</iframe>\n",
"\"\"\"\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---------\n",
"### Congratulations, you're done with your pre-class assignment!\n",
"\n",
"Now, you just need to submit this assignment by uploading it to the course <a href=\"https://d2l.msu.edu/\">Desire2Learn</a> web page for today's dropbox (Don't forget to add your name in the first cell)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"&#169; Copyright 2017, Michigan State University Board of Trustees"
]
}
],
"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.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}