Basic Implementation of Gradient Descent Algorithm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Importing required libraries\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"f_x = lambda x: (x**3)-4*(x**2)+6 " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"f(x) = $x^{3}$ - 4$x^{2}$ + 6" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.linspace(-1,4,1000)\n", | |
"\n", | |
"#Plot the curve\n", | |
"plt.plot(x, f_x(x))\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"f_x_derivative = lambda x: 3*(x**2)-8*x" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Derivative of f(x) : f'(x) = 3$x^{2}$ - 8x.<br>\n", | |
"Let's write functions to plot gradient descent and also calulate minimum using gradient descent algorithm.We will be passing x_start(starting value of x), iterations, learning rate as parameters." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def plot_gradient(x, y, x_vis, y_vis):\n", | |
" plt.subplot(1,2,2)\n", | |
" plt.scatter(x_vis, y_vis, c = \"b\")\n", | |
" plt.plot(x, f_x(x), c = \"r\")\n", | |
" plt.title(\"Gradient Descent\")\n", | |
" plt.show()\n", | |
"\n", | |
" plt.subplot(1,2,1)\n", | |
" plt.scatter(x_vis, y_vis, c = \"b\")\n", | |
" plt.plot(x,f_x(x), c = \"r\")\n", | |
" plt.xlim([2.0,3.0])\n", | |
" plt.title(\"Zoomed in Figure\")\n", | |
" plt.show()\n", | |
" \n", | |
"def gradient_iteration(x_start, iterations, learning_rate):\n", | |
" \n", | |
" # These x and y value lists will be used later for visualisation.\n", | |
" x_grad = [x_start]\n", | |
" y_grad = [f_x(x_start)]\n", | |
" # Keep looping until number of iterations\n", | |
" for i in range(iterations):\n", | |
" \n", | |
" # Get the Slope value from the derivative function for x_start\n", | |
" # Since we need negative descent (towards minimum), we use '-' of derivative\n", | |
" x_start_derivative = - f_x_derivative(x_start)\n", | |
" \n", | |
" # calculate x_start by adding the previous value to \n", | |
" # the product of the derivative and the learning rate calculated above.\n", | |
" x_start += (learning_rate * x_start_derivative) \n", | |
" \n", | |
" x_grad.append(x_start)\n", | |
" y_grad.append(f_x(x_start))\n", | |
"\n", | |
" print (\"Local minimum occurs at: {:.2f}\".format(x_start))\n", | |
" print (\"Number of steps: \",len(x_grad)-1)\n", | |
" plot_gradient(x, f_x(x) ,x_grad, y_grad)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now , let's run gradient_iteration function with <br>\n", | |
"x_start = 0.5, iterations = 1000, learning rate = 0.05" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Local minimum occurs at: 2.67\n", | |
"Number of steps: 1000\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAALwAAAEICAYAAADlZZ58AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAfhElEQVR4nO2deXxVVZbvvyuQMAiigiIyBUUssEVQpBQcuEEGFRyqcERb7Kqy7FJb+/n0qdjVWtX2h35tW2WXQ8mzPpYtKI6oWJSCAoKAzFGKeQoJhFFAERmT9f5Y50oISUhyz7nn3Hv29/O5n8M9w97rhN/dZ529115bVBWHIy7khG2Aw5FOnOAdscIJ3hErnOAdscIJ3hErnOAdscIJPgVEpEhELvf+/aiIvBS2TY6ayVrBi8hNIjJHRPaIyFbv378SEQmiPlX9d1X9earliEi+iKiINKzhnMdF5KCI7PY+K0XkWRFpk2r9QeHdU+ew7chKwYvIA8AzwH8CpwKtgbuAvkBeNdc0SJuB/vCGqjYHTgKuw+5zQZRFHwlUNas+QAtgD/DTY5z3Z+AFYKJ3/uXAVcAi4FugBHi80jW3AeuBr4GRQBFwuXfscWBMhXMvBGYBu4AvgX4Vjk0DfgvMBHYDk4BW3rFiQIHvvM9FVdh+RF3evgZePU9V2DcEKPRsmAV0r3Ds/wAbvfpXAP0rlPMosMY7tgBo7x37ETAZ2OFdc0Olv+dzwF+86+YAZ3jHpnv3tMe7pxtD00fYAg1A8IOBQ0DDWgj+G6zVzwEaA/2Ac7zv3YEtwLXe+d28/6xLgUbA0149RwkeaOv9KK70yhrgfT+5guDXAF2AJt73Ud6xfE8c1dpfleC9/b8B5nj/7glsBX7sifh27AfaCDgL+0GfVqHOpDgfBBZ75whwLtASOM675g6goVf+dqBbhb/n10Bv7/hYYFwF2xToHLY+stGlaQVsV9VDyR0iMktEdonIXhG5tMK576vqTFUtV9V9qjpNVRd7378CXgcu884dBnyoqtNVdT/wL0B5NTbcCkxU1YleWZOB+dgPIMnLqrpSVfcCbwI9fLj3UszFAbgTeFFV56hqmaq+AuzHnjxlmPC7iUiuqhap6hrvup8Dj6nqCjW+VNWvsadFkaq+rKqHVHUR8A5wfYX6x6vqXO9vP9ane/KVbBT810Crii99qtpHVU/wjlW855KKF4rIj0VkqohsE5FvML+/lXf4tIrnq+oer7yq6Ahc7/3IdonILuBioKJ/vbnCv78HmtXlJquhLeZuJG14oJIN7bFWfTVwP/ak2Coi40TkNO+69tjTp6p7+nGl8oZj7w5B3pOvZKPgZ2Mt2TW1OLdyqOhrwAeYz9oC+CP2WAfYhIkBABFpij3qq6IEeFVVT6jwOU5VR9XDplohIjnAUGBGBRuerGRDU1V9HUBVX1PVizEhK/AfFa47o5p7+qxSec1U9R/rY29YZJ3gVXUX8ATwvIgME5HmIpIjIj0wP7QmmgM7VHWfiPQGbqlw7G1giIhcLCJ5mL9c3d9vDDBURAaJSAMRaSwi/USkXS1uYRvmKp1ei3MRkYYi0hVzv07F3i0A/h9wl/fUEhE5TkSu8v4eZ4lIgYg0AvYBeznsnr0E/FZEzvSu6y4iLYEPgS4icpuI5HqfC7y6a8OW2t5TkGSd4AFU9f8C/wt4CPtDbwFexHomZtVw6a+A34jIbuDXmG+dLHMJcDf2FNgE7AQ2VFN/CfaEeRQTcAn2MnjMv7eqfg88Ccz0XIcLqzn1RhH5Dnvx/gBzr85X1VKvnPnAL4BnPVtXAyO8axsBo7CXzs3AKcAj3rGnvfuehPVW/Qlooqq7gYHATdi7wmbsqdDoWPfk8TjwindPN9TyGt8R7w3a4YgFWdnCOxzV4QTviBVO8I5Y4QTviBXVRuQFSatWrTQ/Pz+Mqh0xYMGCBdtV9eSqjoUi+Pz8fObPnx9G1Y4YICLrqzvmXBpHrHCCd8QKJ3hHrHCCd8QKJ3hHrPBF8CJygoi8LSLLRWSZiFzkR7kOh9/41S35DPCRqg7zQmeb+lSuw+ErKQteRFpg8zxHAKjqAeBAquUGyoYNMGkSlJbCKafAgAHQqVPYVjlqy6RJMGcOjBwJOXV0UlKdFIvNW5yLTeJdhE0gOK6K8+7E5nXO79Chg4bC7t2qd92l2rChKhz5+elPVYuLw7HLUTfuu0+1efNqDwPzNcBJ3A2B84AXVLUnlorh4Sp+WKNVtZeq9jr55CpHfYNl40bo3RtGj4a77oIlS2D/fli5Eh57DCZOhJ49YcaMY5flCJetW+3JXA/8EPwGYIOqzvG+v439AKLD9u3Qvz+UlMDkyfCHP0C3bpCXB2eeCb/9LXz5JbRqZe7N1KlhW+yoiTAFr6qbgRIROcvb1R9Ymmq5vlFeDrfeCkVF1ooXFFR93plnwsyZ0LkzXH01LF6cVjMddWDbtlBbeIB7gbEi8hXm0/+7T+Wmzu9/Dx9/bNtLLqn53JYt7dxmzWDYMNi9Oz02OupGyC4Nqlro+efdVfVaVd3pR7kps2ED/PrXMGQI/PKXtbumbVsYNw5Wr4Z77w3WPkfdKS+PRAsfTR58EA4dgmeegbokDb7sMnjkEXjlFfP5HdFh504oK4N6dnxkr+ALC62lfvBBOL0e6VAeewy6dLEnw/ff+2+fo35s3Wpb18JX4t/+DY4/Hh54oH7XN24Mf/wjrFtnTwhHNHCCr4KlS+Gdd8wHP+GE+peTSMDQoTBqlHVtOsLHCb4K/vAHaNQI7r8/9bJGjYLvvrMnhiN8tm2zrRO8x+7dMGYM3HijDSSlSrduMGKEuTebNx/zdEfAbN1qHRAtq8tjWzPZJ/gxY6xF/tWv/CvzkUfg4EH43e/8K9NRP7ZuNbE3rF/cY/YJfvRoi4np3du/Mjt3hhtugOeft24xR3ikMOgE2Sb4JUusO/KOO+rW714bHn7YnhzPPedvuY664QRfgddft/joGwLIxnzuuZR2H8yWx58nTw6Snw9jx/pfjeMYbN1a70EnyCbBq5rg+/eH1q19L37sWLhnxb20LtvEtYxn/Xq4804n+rSTQlgBZJPg586FtWvhlluOfW49GDkS3ts/mDWczj08C9gA7MiRgVTnqIqDB2HHDid4AMaPtzf3a68NpPjiYlByeI67uZQZdOfLH/Y70kSKffCQTYKfMMGCvlIZWa2BDh1s+zJ38D1N+EdeOGK/Iw0kx0FOPbXm82ogOwS/Zo2FEwwdGlgVTz4JTZvCLk7kbYZxE+M4qclennwysCodldmyxbaxF/yECbYNUPDDh1sXf8eO8Gfu4AS+4f073mP48MCqdFQm2cKn0CmRPYLv1q1+YcB1YPhwmyk4pewyyM/n4lUvB1qfoxLJFj7Wgv/2W5g+3WY1pYucHLj9dvjkE/fWmk42b4bmzc23rCeZL/gZM2xW06BB6a339tut7//VV9Nbb5zZsiUl/x2yQfCffmqhwBelOZ1lp07Qr59NA3Rr3aaHzZtTHlTMfMFPmQJ9+0KTJumv+5ZbYNUqi99xBE/sW/ht2yyBUv/+4dT/k5/YYNcbb4RTf9yIfQs/bZptq0uuFDQtW7Lx7AGUPPUGOaIuoCxI9u+30OxYt/Cffmpv7b16hVL92LHw+LKbaF9WxAXMdQFlQZKcyxrrFn7qVAsnqOfsl1QZORLePHAN+8njJsYBLqAsMHwIK4BMFvz27Zb591jp8wKkuBi+pQUTuZIbeBOh/If9Dp/xYdAJMlnws2fbtk+f0ExIBo69wY20pZQ+zDpiv8NHYt/Cz5wJublw/vmhmZAMKJvIlewnj2t4n6ZNcQFlQZBs4VMIDYZMFvysWXDeeeH0v3skA8pO6ng8n9Kf6xuOZ/SL6gLKgmDzZgv9btw4pWIyU/AHDsC8eaG6M0mSAWVXvngt+YfWMLzHkrBNyk62bPFl6mZmCr6wEPbtsxHWqHD11ZYp4b33wrYkO9m8OWX/HTJV8LPs5TDt8TM1ceqpcOGFNtXQ4T+xbuFnz7aZGKedFrYlR3LddbBwoeuXDIKotfAi0kBEFonIh36VWS3z58MFFwReTZ1JTiB///1w7cg29u61eQ9REjxwH7DMx/KqZudOS8cRYndktZx5ps28cn68v/g06AQ+CV5E2gFXYYsSB8vChbaNouDB5tVOn24tksMffJi8ncSvFv73wEPgja1XgYjcKSLzRWT+tmR+kfqwYIFtz4vWUrA/cNVVNgPrk0/CtiR78GHydpKUBS8iQ4CtqrqgpvN8W4l7/nzIz693fvDAuegiaNEC/vKXsC3JHqIkeKAvcLWIFAHjgAIRGeNDuVWzYEFo4cC1omFDm187caKb+ucXmzbZGEcUBK+qj6hqO1XNB24CpqjqrSlbVhVRfmGtyFVXWavkpv75Q2mpxdDk5qZcVGb1wyf994gL/u3vBlOO8C/n/cXNgvKDTZt8G3PxVfCqOk1Vg0sQE/UXVkzctz94CvO4gCuY6GZB+UFpKbRp40tRmdXCFxZasHlUX1ix2U7ff28hwxfyBS3Z7mZBpUppaTRb+MD56is499ywraiRZFTBRK4kB2UQHx+x31FHDh2yfvjYCX7/flixAs45J2xLaiQ522kB57OFU7iSiUfsd9SRLVustyt2gl++HMrKIi/45CwoJYePGMwgPua4JuVuFlR92bTJtrET/Fdf2bZ793DtOAYV02pPZiCt+Jq3Hl3kZkHVl9JS28ZO8IsXQ16eBWhFnOQsqDGbLwfgigaTwjUok0kKPna9NF99ZZGIPgw+pI3Wre0le/LksC3JXEpLLT15ipO3k2SO4Bcvjrz/XiUDB8Lnn8OePWFbkpmUllrD4VOyrcwQ/Ndf241nouAHDLDlFqdPD9uSzMTHUVbIFMEvXmzbiL+wVsnFF1tqiUnOj68XPg46QaYJPhNb+CZNLB2g8+Prh49hBZApgl+yBE480dcbTysDB9o9bNwYtiWZxcGDljU4di388uXQtavFRGciAwbY1rXydSM58SOWgv/Rj8K2ov6cc471NDjB1w2fR1khEwS/c6fFU2Sy4HNyrJWfPBnKq53266iMz6OskAmCX77ctl27hmtHqgwYYGtSJUMkHMcmloJf5qW6yeQWHg778a57svaUlkKDBpDKpP9KRF/wy5dbDE2nTmFbkhpt2thTaurUsC3JHEpLLRdNjn8yjb7gly2DLl3sl57pFBTYyuEHDoRtSWbg8ygrZILgM72HpiIFBRZTM29e2JZkBhs2xEzw+/dbWo5Mf2FNctllNpYwZUrYlmQGGzZA+/a+Fhltwa9aZd142dLCt2wJPXo4P742fPcd7NoVM8FnS5dkBZa2KWD/1Fk0lb0uZ01NbNhg23btfC022oJPdkl26RKuHT4xdiw89mkBjdjPhcx2OWtqIpaCX7nSHmnHHRe2Jb4wciRM3n8Jh2hAAebHu5w11VBSYttYuTSrVmXEHNbaUlwM39GceVzwg+CT+x2VSLbwseqlWb0aOncO2wrfSOammUIBvZlLM3Yfsd9RgZISC7hr1MjXYqMr+J07bWpfFrXwyZw1UyigIWVcwgy3cnd1bNjgu/8OURb8mjW2zaIWPpmzZkP7Puwnj2uPn8Lo0bicNVVRUhIzwa9ebdssEjyYuFcUN6FRvz7c2XmqE3t1BDDoBJkg+NNPD9eOoCgogEWLYMeOsC2JHslBp1i18KtWQdu25vRmIwUFliT0s8/CtiR6JHtootjCi0h7EZkqIktFZImI3OeHYaxenVUvrEdxwQU2vuDiao4moEEn8KeFPwQ8oKrdgAuBu0WkW8qlZlmX5FHk5VnOGif4o0kOOkVR8Kq6SVUXev/eja3G3TalQr/91tIzZLPgwdyapUsPz853GMkWvm1qMqoKX314EckHegJzUiooC7skqySRsO20aaGaETlKSix5qs+DTuCj4EWkGfAOcL+qHrXuep1W4l61yrbZLviePeH44124cGUC6pIEnwQvIrmY2Meq6rtVnVOnlbiTXZJnnOGHedGlYUO49FIn+MoENMoK/vTSCPAnYJmqPp26SZjg27SBZs18KS7SJBL2RHNp+A4T0Cgr+Lf0/G3YkvOF3ufKlEpcuzbzsxTUlqQf71p5Y/duG3QKKKLOj16az1VVVLW7qvbwPhNTKnTduvgI/txzLVGs65401q+3bceOgRQfvZHWgwfNh4uL4HNyoF8/18InKSqybX5+IMVHT/AlJTZxOy6CB3NriooO/2fHmdi18AH/wiOJ8+MPU1RkK6a0bh1I8dET/Lp1to1TC3/22ZY/0QneWvgOHQJbCyB6gi8qsrR6AQ08RBKRw368atjWhEtRUaBP9+gJft0664P1aZnCjCGRsJf1ZFhFXFm/PjD/HaIq+Di5M0mcHw9791rQYKwEH/AjLbKcdZalho6z4JM9NLFxafbts5zgcWzhRayVj7MfH3CXJERN8MmMRHEUPPBF0wRs3kzXnBXxzDuZhi7paAk+2SUZQ5dm7Fj4xVjz4xNMiWfeyfXrrbMiwPV4oyn4GLbwI0fC3/adQTHtSWB+fOzyTib74ANc7SVagi8qgtzczF1xOwXMmxOmkqAf0xDKK+yPCUVFgfrvEDXBr1tnN5wN6znVkWQ07FQSnMx2zmbJEftjQcB98BA1wRcVxdKdgcN5J6eS9OOnxivv5IED1kMX8PtbtAS/bl0sX1jhcN5J6diRtXTiqiZT45V3sqTEumMDbuGjNX6/dq0tZBZThg/3BP6zBKePHw83lxO1Nikw0tRhEa2/ZrNmtvBX3EkkLF34l1+GbUn6SMYQBTxxP1qCdxhxjKtZs8by0Pi84kdlnOCjSNu2llczboLv1MnXZearwgk+qiQSMH06HDoUtiXpYc2atOQhcoKPKomE5dhcuDBsS4JH1Qk+9sTJj9+2zRZBcIKPMa1bQ7du8RD82rW2TcNqL07wUSaRgM8/t1w92UyauiTBCT7aJBKwZw/Mmxe2JcGyZo1NgElDWIkTfJS57DLbZrtbs2aNdcU2bhx4VU7wUaZVK+jePR6CT1NqdCf4qJNIwMyZ2R1j5ATv+IFEwia3z0ltFaHIsmePrXGVpvV4neCjzqWX2gtdtro1yShJ18I7AMsd37Nn9go+zcsbOcFnAgUFMHu2ZebKNlassG2XLmmpzq9FzQaLyAoRWS0iD/tRpqMCiYRNgZs1K2xL/GflShtVbtEiLdX5sahZA+A54AqgG3CzLytxOw5zySU2sT0b3ZoVKyzNYJrwo4XvDaxW1bWqegAYB1zjQ7mOJM2bQ69eTvA+4Ifg2wIlFb5voIql5+u0MLHjaBIJmDvXogqzhR07YPv2tPnvkMaX1jotTOw4mkTCJoPMnBm2Jf6xcqVtM6yF3whUXK6jnbfP4SPjSvpygFz+Y/DU7Em0muYeGvBH8POAM0Wkk4jkATcBH/hQrsNj7Fj42T8dx1x604+p2ZNodeVKexlP0ygr+LMw8SHgHuBjYBnwpqouSbVcx2FGjrTEqlNJcD4LaM632ZFodcUKE3tubtqq9MWHV9WJqtpFVc9Q1bgkh0sbyYSqU0nQkDIuYcYR+zOWNPfQgBtpzQiSCVVncxH7yaOAKUfsz0jKy2HVqrT67+AEnxEkE63uowmz6JMdiVaLiy3k2bXwjsokE6127AjTSNCDQv789I7MTrS6fLltneAdVTF8uGUTf2J6ghyU61tPD9uk1Fji9WucfXZaq3WCzzR694YmTTI/zGDJEjjlFJvGmEac4DONRo2gb9/sEHyaW3dwgs9MEglYvNgydmUiqrB0qRO8o5Yk0/B99lm4dtSX4mILgnOCd9SKXr1s8YhPPw3bkvoR0gsrOMFnJrm5Nu3vo48yc5l6J3hHnRk82PopV60K25K6s2QJnHoqnHRS2qt2gs9UBg2y7ccfh2tHfQiphwac4DOX00+3ZXE++ihsS+pGeXloPTTgBJ/ZDB4M06ZZZrJMYf16i3V2gnfUmUGDTDyffx62JbUnuRTnueeGUr0TfCbTrx/k5WWWH19YaCv1nXNOKNU7wWcyxx1nOWsyyY8vLLQY+KZNQ6neCT7TGTwY/vY32Jgh8+YXLbJcmSHhBJ/pDB5s20xwa3bssLCCHj1CM8EJPtM5+2xbLiYT3JrkC6sTvKPeiFhvzeTJ0V+1u7DQtiH10IATfHZw5ZWwa1f0swsXFkKbNpYtOCSc4LOAN3YOZD95PHXZhGhnJVu0KFR3BpzgM56xY+Ef7mvONPoxhAnRzUq2dy8sWxZqDw04wWc8yaxkExjKj1jBmayMZlayRYvsHaN371DNcILPcJLZxyYwFIChTDhif2SYO9e2TvCOVEhmHyumI1/S/QfBRy4r2bx50K6dvbSGiBN8hpPMSgbWyl/M57RtsiN6Wcnmzg29dQcn+IynYlayDxlKQ8p4Y8Rfo5WVbMcOW57SCd7hB8msZF+UXQCtW9N3x4SwTTqSefNs6wTv8JWcHBgyxMIMDhwI25rDzJ1rI8Lnnx+2JU7wWce118I338CUKWFbcpg5c6BrVzj++LAtcYLPOgYMsGUu3347bEuM8nILeejTJ2xLgBQFLyL/KSLLReQrERkvIif4ZZijnjRqBFdfDePHw8GDYVtjGQp27rSJKhEg1RZ+MvB3qtodWAk8krpJjpQZNsx6RqZNC9sSmGHL82SF4FV1kreoGcAX2JKVjrAZNMhS8UXBrZkxw+L18/PDtgTw14f/B+Cv1R10K3GnkSZNrLdm/PhwY+RVYfp0a91FwrOjAscUvIh8IiJ/q+JzTYVzRgKHgGpj9NxK3Glm2DBLpz09xJVC1q2D0lK49NLwbKhEw2OdoKqX13RcREYAQ4D+qpmY2TNLueIKizl46y1LvBoGyR9bRPx3SL2XZjDwEHC1qn7vj0kOX2ja1Hpr3nwzvEGoTz6Bk0+Gbt3Cqb8KUvXhnwWaA5NFpFBE/uiDTQ6/uO022LGDX7T7Kzk5pHc2VHm5CX7AABsBjgjHdGlqQlU7+2WIw39e2z6QyzmFQdte5SWu+WE2FBB8cNnixbBlCwwcGHBFdSM6Pz2H7zz664a8xs0MZQInsBMgfbOhJk+27eU1vgKmHSf4LKa4GF7lNhpxgOt564j9gTNp0uGcORHCCT6L6dABFnIeS+nKbbx6xP5A2bvXBpwGDAi4orrjBJ/F2Gwo4X/4ey7hc85kJU2bEvxsqE8+sZz1V1wRcEV1xwk+i0nOhvq03QgO0pAHm7/I6NFpeGF97z1o0cLSeUcMJ/gsZ/hwmFdyKrnXX8cvcv/M8J/sDbbCsjL44APLhpaXF2xd9cAJPi7cdZdFUAYdUDZrFmzfbhNRIogTfFxIJGwhghdeCLae8eOtZU+m8Y4YTvBxQcRa+dmzLQtYEJSVwbhxJvYITOerCif4ODFihMXJ/9d/BVP+lCmwaZOFNEQUJ/g4ceKJcOedlL8+jr7t1vsfX/Pqq9Y7M2SITwX6jxN8zBjf8X7KyoUbNj6NKv5lG96zB959F66/Hho39sXWIHCCjxn//HR7XuMWfs5LtGQ74FN8zZgxJvoRI1K2MUic4GNGcTGM4mEas4+HGXXE/nqjCs8+a4sdRCQdR3U4wceMDh1gOV35H/6ee3iW9hT/sL/eTJ9uS2fee29k5q5WhxN8zEhmG36cxxGUf+WJ1ONrRo2Cli3h5pt9szMonOBjRjK+Rjp25Hnu5g5epk/uPG67rZ49Nl98YbksH3zQsiVEHVVN++f8889XR/i8MXqXlkobXUgPbcBBBdWmTVXHjKllAeXlqgMHqrZqpbp7d6C21gVgvlajPdfCx5iHnmzBvfrf9KSQf+Z3QB17bD74wCZ6PPqoDWhlAE7wMaa4GN7hp7zLdTzJSHozB7C++WO6N999B/fdZ7Oa7rknLfb6gRN8jLGeGeFn/ImNtOVNbqA1m4FjDEipwi9/CSUl8OKLkJubTrNTwgk+xiR7bHZxItfzFq3YzmQGcBJfA+be3HprFa39U0/Ba6/Bb34DffuGYnu9qc65D/LjXlqjw5gxqh07qoJqfybrPvJ0OV20K0vUmvLDH6FM9Ykn7MsNN6iWlYVtfpVQw0urE7xDVQ+L/mKm62ZO0X3k6X9zj17CZ3oWy3QYb+pMLrKTbr1V9cCBsE2uFid4xzEZM+ZwS96aTfon7tD95B7RxJfQVm/nZeuOjDA1CV7seHrp1auXzp8/P+31OmqmVSv4+uvD309gJ32YRQu+oYh85vBjymlACJKpEyKyQFV7VXUspVR7juzimWesZ+Z7Ly3uLk5kIleFa5TPuF4axw8kww5atgzbkuBwgnccwfDhlnRgzJiqj0fdnTkWTvCOKhk+vHKnZOaLHZzgHTHDCd4RK5zgHbHCCd4RK5zgHbEilJFWEdkGrE97xVXTCrx8FdlHXO+to6pWuRhwKIKPEiIyv7ph6EzH3dvROJfGESuc4B2xwgkeRodtQIC4e6tE7H14R7xwLbwjVjjBO2JFbAUvIoNFZIWIrBaRh8O2xy9EpL2ITBWRpSKyRETuC9umIBCRBiKySEQ+rMt1sRS8iDQAngOuALoBN4tIt3Ct8o1DwAOq2g24ELg7i+6tIvcBy+p6USwFD/QGVqvqWlU9AIwDrgnZJl9Q1U2qutD7925MFG3DtcpfRKQdcBXwUl2vjavg2wIlFb5vIMtEASAi+UBP8HLoZQ+/Bx4Cyut6YVwFn/WISDPgHeB+Vf02bHv8QkSGAFtVdUF9ro+r4DcC7St8b+ftywpEJBcT+1hVfTdse3ymL3C1iBRhrmiBiFQzA/doYjnwJCINgZVAf0zo84BbVHVJqIb5gIgI8AqwQ1XvD9ueIBGRfsD/VtVar5MZyxZeVQ8B9wAfYy91b2aD2D36ArdhLV+h97kybKOiQixbeEd8iWUL74gvTvCOWOEE74gVTvCOWOEE74gVTvCOWOEE74gV/x9/Ahr6hAYB7gAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"gradient_iteration(0.5, 1000, 0.05)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We are able to find the Local minimum at 2.67 and as we have given the number of iterations as 1000, Algorithm has taken 1000 steps. It might have reached the value 2.67 at a much earlier iteration. But since we don't know at what point will our algorithm reach the local minimum with the given learning rate, we give a high value of iteration just to be sure that we find our local minimum.<br>Let's define another function which takes precision as input instead of iterations . Since we know the dataset, we can define the level of precision that we want and stop the algorithm once we reach that level of precision." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def gradient_precision(x_start, precision, learning_rate):\n", | |
" \n", | |
" # These x and y value lists will be used later for visualisation.\n", | |
" x_grad = [x_start]\n", | |
" y_grad = [f_x(x_start)]\n", | |
"\n", | |
" while True:\n", | |
" \n", | |
" # Get the Slope value from the derivative function for x_start\n", | |
" # Since we need negative descent (towards minimum), we use '-' of derivative\n", | |
" x_start_derivative = - f_x_derivative(x_start)\n", | |
" \n", | |
" # calculate x_start by adding the previous value to \n", | |
" # the product of the derivative and the learning rate calculated above.\n", | |
" x_start += (learning_rate * x_start_derivative)\n", | |
" \n", | |
" \n", | |
" x_grad.append(x_start) \n", | |
" y_grad.append(f_x(x_start))\n", | |
" # Break out of the loop as soon as we meet precision.\n", | |
" if abs(x_grad[len(x_grad)-1] - x_grad[len(x_grad)-2]) <= precision:\n", | |
" break\n", | |
"\n", | |
"\n", | |
" print (\"Local minimum occurs at: {:.2f}\".format(x_start))\n", | |
" print (\"Number of steps taken: \",len(x_grad)-1)\n", | |
" plot_gradient(x, f_x(x) ,x_grad, y_grad)\n", | |
" " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now let's call this function with parameters <br>x_start = 0.5, precision = 0.001, learning rate = 0.01" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Local minimum occurs at: 2.66\n", | |
"Number of steps taken: 85\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"gradient_precision(0.5, 0.001, 0.01)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Since learning rate was lesser, which means the number of steps taken to reach local minimum was higher (85). As we can see in the graph, 85 x values plotted in blue, meaning our Algorithm was slower in finding local minimum.<br> Let's increase learning rate to 0.05 and check results." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Local minimum occurs at: 2.67\n", | |
"Number of steps taken: 20\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"gradient_precision(0.5, 0.001, 0.05)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"For the same precision value and x_start value, but learning rate = 0.05, we see that our Algorithm was able to find local minimum in just 20 steps. This shows that by increasing learning rate , the algorithm reaches local minimum faster. Let's increase the learning rate to 0.14 and note results again." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Local minimum occurs at: 2.67\n", | |
"Number of steps taken: 6\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"gradient_precision(0.5, 0.001, 0.14)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"By increasing the learning rate to 0.14, the Algorithm was able to find local minimum in just 6 steps. Lets increase it by 0.01 to see if the trend continues." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Local minimum occurs at: 2.67\n", | |
"Number of steps taken: 8\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"gradient_precision(0.5, 0.001, 0.15)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The number of steps taken increased this time! . Looks like learning rate = 0.14 is the sweet spot for precision = 0.001." | |
] | |
} | |
], | |
"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.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment