Skip to content

Instantly share code, notes, and snippets.

@fredriccliver
Created January 3, 2019 03:10
Show Gist options
  • Save fredriccliver/0e5c79a2c0c277de332aa85bf686312a to your computer and use it in GitHub Desktop.
Save fredriccliver/0e5c79a2c0c277de332aa85bf686312a to your computer and use it in GitHub Desktop.
Easiest understanding about Gradient descent
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 226,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 41, 35],\n",
" [ 78, 84],\n",
" [ 48, 56],\n",
" [ 11, 4],\n",
" [ 12, 22],\n",
" [ 61, 41],\n",
" [ 87, 78],\n",
" [ 30, 44],\n",
" [ 17, 10],\n",
" [ 53, 43],\n",
" [ 44, 63],\n",
" [ 87, 77],\n",
" [ 91, 88],\n",
" [ 55, 45],\n",
" [ 34, 39],\n",
" [ 37, 25],\n",
" [ 69, 59],\n",
" [ 2, 15],\n",
" [ 8, 12],\n",
" [ 87, 82],\n",
" [ 87, 73],\n",
" [ 27, 7],\n",
" [ 51, 41],\n",
" [ 73, 70],\n",
" [ 45, 38],\n",
" [ 95, 79],\n",
" [ 33, 32],\n",
" [ 21, 3],\n",
" [100, 104],\n",
" [ 50, 64],\n",
" [ 1, -2],\n",
" [ 80, 99],\n",
" [ 99, 79],\n",
" [ 43, 38],\n",
" [ 81, 80],\n",
" [ 48, 67],\n",
" [ 57, 54],\n",
" [ 61, 56],\n",
" [ 1, -13],\n",
" [ 51, 44],\n",
" [ 85, 80],\n",
" [ 34, 47],\n",
" [ 52, 53],\n",
" [ 91, 90],\n",
" [ 41, 27],\n",
" [ 64, 75],\n",
" [ 63, 53],\n",
" [ 20, 33],\n",
" [ 72, 91],\n",
" [ 25, 12],\n",
" [ 74, 82],\n",
" [ 9, 0],\n",
" [ 98, 106],\n",
" [ 98, 101],\n",
" [ 5, 2],\n",
" [ 75, 55],\n",
" [ 18, 37],\n",
" [ 28, 48],\n",
" [ 68, 69],\n",
" [ 16, 24],\n",
" [ 60, 67],\n",
" [ 74, 91],\n",
" [ 45, 27],\n",
" [ 76, 86],\n",
" [ 90, 102],\n",
" [ 73, 70],\n",
" [ 70, 75],\n",
" [ 68, 85],\n",
" [ 30, 35],\n",
" [ 31, 22],\n",
" [ 60, 69],\n",
" [ 54, 59],\n",
" [ 68, 83],\n",
" [ 30, 45],\n",
" [ 87, 68],\n",
" [ 75, 73],\n",
" [ 94, 104],\n",
" [ 29, 14],\n",
" [ 7, -9],\n",
" [ 40, 59],\n",
" [ 18, 34],\n",
" [ 70, 81],\n",
" [ 66, 78],\n",
" [ 60, 76],\n",
" [ 13, 11],\n",
" [ 56, 70],\n",
" [ 42, 62],\n",
" [ 96, 101],\n",
" [ 60, 64],\n",
" [ 41, 22],\n",
" [ 12, 29],\n",
" [ 11, -3],\n",
" [ 64, 76],\n",
" [ 78, 81],\n",
" [ 67, 64],\n",
" [ 63, 55],\n",
" [ 66, 84],\n",
" [ 38, 45],\n",
" [ 5, -15],\n",
" [ 47, 34]])"
]
},
"execution_count": 226,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"\n",
"#%% making dummy data ----------------------------------------\n",
"from random import *\n",
"import math\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"def get_biased_point_randomly():\n",
" x = randint(1, 100) \n",
" y = x + randint(1,20) * pow(-1, x)\n",
" y = math.floor(y)\n",
" return [x,y]\n",
"\n",
"points = []\n",
"for i in range(100):\n",
" points.append(get_biased_point_randomly())\n",
"\n",
"points = np.asarray(points)\n",
"points\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 244,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"\n",
"#%% plotting dummy data ----------------------------------------\n",
"def draw_points():\n",
" plt.scatter(points.T[0], points.T[1])\n",
"draw_points()\n"
]
},
{
"cell_type": "code",
"execution_count": 245,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"#%%\n",
"b = randint(-100,100)\n",
"b = 0 # If you want learn for 'b', escape this line.\n",
"w = randint(-2,2)\n",
"\n",
"def draw_regLine():\n",
" linear_line = [\n",
" [0,b],\n",
" [100,100*w]\n",
" ]\n",
" linear_line = np.asarray(linear_line)\n",
" plt.plot(linear_line.T[0], linear_line.T[1])\n",
"\n",
"draw_points(); draw_regLine()\n"
]
},
{
"cell_type": "code",
"execution_count": 246,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss is : 12813\n"
]
}
],
"source": [
"#%% calculate loss ----------------------------------------\n",
" # ex : estimated x\n",
" # rx : real x\n",
" \n",
"def calLoss(w):\n",
" loss_arr = []\n",
" for point in points:\n",
" rx = point[1]\n",
" ex = w * point[0]\n",
" loss_arr.append(pow( (ex-rx ), 2))\n",
" \n",
" return math.floor(\n",
" sum(loss_arr)/ len(points)\n",
" )\n",
" \n",
"\n",
"print('loss is : ', calLoss(w))\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 247,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'Loss:11564 W:-0.9')"
]
},
"execution_count": 247,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"#%% manualy w updating ----------------------------------------\n",
"w = w+.1\n",
"draw_points(); draw_regLine()\n",
"plt.title(\"Loss:\"+str(calLoss(w))+ \" \" +\"W:\"+str(w))\n"
]
},
{
"cell_type": "code",
"execution_count": 248,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-12125.0\n"
]
}
],
"source": [
"\n",
"#%% auto gradient descent ----------------------------------------\n",
" # gradient is (delta loss) over (delta w)\n",
"\n",
"# delta = .1; learning_rate = .0001\n",
"delta = .1; learning_rate = .0001\n",
"def get_gradient():\n",
" return ( (calLoss(w+delta) - calLoss(w-delta)) / (2*delta) )\n",
"print(get_gradient())\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 258,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'Loss:1579 W:0.9010000000000001 gradient:-10.0')"
]
},
"execution_count": 258,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"#%% auto gradient descent ----------------------------------------\n",
" # if you repeat this Block Cell, w will be adjust automatically\n",
"w = w - (learning_rate*get_gradient())\n",
"draw_points(); draw_regLine()\n",
"plt.title(\"Loss:\"+str(calLoss(w)) + \" \" + \"W:\"+str(w)+\" \" + \"gradient:\"+str(get_gradient()))\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 250,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x124fec1d0>]"
]
},
"execution_count": 250,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"#%% draw loss=f(w) graph ----------------------------------------\n",
" # this is not countinuously\n",
" # this is computational function\n",
"\n",
"loss_graph = []\n",
"i = -3\n",
"while i < 3:\n",
" loss_graph.append([i, calLoss(i)])\n",
" i = i + .1\n",
"loss_graph\n",
"\n",
"loss_graph = np.asarray(loss_graph)\n",
"plt.plot(loss_graph.T[0], loss_graph.T[1])\n",
"\n",
"\n",
"# below expression is not correct\n",
"# plt.plot(loss_graph.asarray()T)\n"
]
},
{
"cell_type": "code",
"execution_count": 251,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x124bc3630>"
]
},
"execution_count": 251,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#%% get points more complex\n",
"\n",
"def get_biased_point_randomly():\n",
" x = randint(1, 100) \n",
" y = x + randint(1,20) * pow(-1, x)\n",
" y = math.floor(y)\n",
" return [x,y]\n",
"\n",
"def get_biased_point_randomly2():\n",
" x = randint(1, 100)\n",
" y = -x + randint(1,20) * pow(-1, x) + 100\n",
" y = math.floor(y)\n",
" return [x,y]\n",
"\n",
"points = []\n",
"for i in range(50):\n",
" points.append(get_biased_point_randomly())\n",
"for i in range(50):\n",
" points.append(get_biased_point_randomly2())\n",
"\n",
"points = np.asarray(points)\n",
"points\n",
"plt.scatter(points.T[0], points.T[1])\n",
"\n",
"## back to the 'plotting dummy data' block and try again all."
]
},
{
"cell_type": "code",
"execution_count": 195,
"metadata": {},
"outputs": [],
"source": [
"#%% draw (x, loss, grad)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment