400 lines
60 KiB
Plaintext
400 lines
60 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 114,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# On importe les librairies\n",
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 1 - Créer une fonction J(theta qui implémente J(theta). Quelle est la valeur de de J(4) ?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 115,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"25"
|
|
]
|
|
},
|
|
"execution_count": 115,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"def J(theta_i):\n",
|
|
" return (theta_i + 1)**2\n",
|
|
"\n",
|
|
"J(4)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 116,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# On génère les points dans theta\n",
|
|
"theta = np.arange(-10.00, 10.00, 0.01)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 3\n",
|
|
"Plot theta vs J(theta). When do we reach the minimum?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 117,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x7f1cd4b98cc0>]"
|
|
]
|
|
},
|
|
"execution_count": 117,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"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": [
|
|
"# Plot de theta\n",
|
|
"plt.plot(theta,theta)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 120,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x7f1cd572d5c0>]"
|
|
]
|
|
},
|
|
"execution_count": 120,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"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": [
|
|
"# plot de J(theta)\n",
|
|
"plt.plot(theta,J(theta))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 121,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"-1.0"
|
|
]
|
|
},
|
|
"execution_count": 121,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"J_theta = [J(x) for x in theta]\n",
|
|
"# Valeur de theta à laquelle on obtien le plus petit J(theta)\n",
|
|
"round(theta[J_theta.index(min(J_theta))], 3)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 4\n",
|
|
"Create a function dJ_dtheta(x_i) which is computing the gradient\n",
|
|
"?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 122,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0"
|
|
]
|
|
},
|
|
"execution_count": 122,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# On calcule la fonction dérivée. D'après J(theta). Merci dcode.fr\n",
|
|
"def dJ_theta(x_i):\n",
|
|
" return 2 * (x_i + 1)\n",
|
|
"# Affichage de la valeur à 0\n",
|
|
"dJ_theta(-1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 123,
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x7f1cd462be10>]"
|
|
]
|
|
},
|
|
"execution_count": 123,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"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": [
|
|
"plt.plot(theta, dJ_theta(theta))\n",
|
|
"# dJ_t = [dJ_theta(x) for x in theta]\n",
|
|
"# plt.plot(theta, dJ_t)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 5\n",
|
|
"Create a function gradient_descent(theta_0, lr, nb_iters, df_dx, f) which returns the solution\n",
|
|
"of argmin f (θ). \n",
|
|
"x_0, lr, nb_iters, df_dx, f correspond respectively to the initial value of θ, the\n",
|
|
"θ\n",
|
|
"learning rate, the number of iterations allowed for solving the problem, the gradient of θ and the\n",
|
|
"function J(.).\n",
|
|
"\n",
|
|
"What is the solution θ̂ found by gradient descent to our problem? Note: assume that\n",
|
|
"x_0, lr, nb_iters = -7, 0.1, 100 while debugging"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 147,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def gradient_descent(theta_0, lr, nb_iters, dJ_t, J_theta):\n",
|
|
" # puis on reprend les étapes vues en cours\n",
|
|
" theta = theta_0\n",
|
|
" \n",
|
|
" for t in range(nb_iters): \n",
|
|
" # calcul de theta\n",
|
|
" theta = theta - lr * dJ_t(theta)\n",
|
|
"\n",
|
|
" return theta\n",
|
|
" "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 148,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"-1.0000000100978041"
|
|
]
|
|
},
|
|
"execution_count": 148,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# On appelle la fonction \n",
|
|
"gradient_descent(-7, 0.01, 1000, dJ_theta, J)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 6\n",
|
|
"Update your function gradient_descent for printing the optimization path (i.e. print the line between\n",
|
|
"θ t and θ t+1 and saving the figure at the end of the optimization process)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 192,
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"-1.0000000100978041"
|
|
]
|
|
},
|
|
"execution_count": 192,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"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": [
|
|
"def gradient_descent(theta_0, lr, nb_iters, dJ_t, J_theta):\n",
|
|
" # puis on reprend les étapes vues en cours\n",
|
|
" theta = theta_0\n",
|
|
" \n",
|
|
" # on initialise les séries pour le plot\n",
|
|
" x = [theta]\n",
|
|
" y = [J_theta(theta)]\n",
|
|
" \n",
|
|
" for t in range(nb_iters): \n",
|
|
" # calcul de theta\n",
|
|
" theta = theta - lr * dJ_t(theta)\n",
|
|
" # ajout de la valeur au plot\n",
|
|
" x.append(theta)\n",
|
|
" y.append(J_theta(theta))\n",
|
|
" \n",
|
|
" # affichage du plot\n",
|
|
" plt.plot(x,y)\n",
|
|
" \n",
|
|
" return theta\n",
|
|
"\n",
|
|
"# On appelle la fonction \n",
|
|
"gradient_descent(-7, 0.01, 1000, dJ_theta, J)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 7\n",
|
|
"Assuming that you are setting nb_iters equals to 100 what is the solution θ̂ when varying nb_iters in\n",
|
|
"[-8, -1, 7] and lr in [0.1, 0.01, 0.001, -0.01, 0.8, 1.01]. Does the estimated solution always\n",
|
|
"the same? What are pros and cons about these hyperparameters and GD in general?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 8\n",
|
|
"Now assume the function J(θ) = sin(2θ + 1), what is the solution θ̂ given by GD?"
|
|
]
|
|
},
|
|
{
|
|
"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.7.0"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|