m2/Archis Applications/Exercices/.ipynb_checkpoints/Exercice 1-checkpoint.ipynb

357 lines
42 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"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": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 9,
"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": 10,
"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": 11,
"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": [
"# plot de J(theta)\n",
"plt.plot(theta,J(theta), label='Fitted line - closed form')\n",
"plt.xlabel('x')\n",
"plt.ylabel('J(x)')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-1.0"
]
},
"execution_count": 12,
"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": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 13,
"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": 14,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fab8eb08438>]"
]
},
"execution_count": 14,
"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": 15,
"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": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-1.0000000100978041"
]
},
"execution_count": 16,
"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": 24,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Minimum = {min:2f}\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"
}
],
"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
}