{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Illustration de l'agorithme du gradient\n", "\n", "Soit une fonction simple f(x) = x^4 + 3 x ^3 + c\n", "\n", "On cherche le minimum de cette fonction en regardant comment l'algorithme converge en fonction du parametres learning rate\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Gamma 0.001 min 2.2547 f(min) 0.0965\n", "Gamma 0.002 min 2.2523 f(min) 0.0470\n", "Gamma 0.003 min 2.2515 f(min) 0.0306\n", "Gamma 0.004 min 2.2511 f(min) 0.0220\n", "Gamma 0.005 min 2.2509 f(min) 0.0178\n", "Gamma 0.006 min 2.2507 f(min) 0.0132\n", "Gamma 0.007 min 2.2494 f(min) -0.0118\n", "Gamma 0.008 min 2.2495 f(min) -0.0102\n", "Gamma 0.009000000000000001 min 2.2496 f(min) -0.0084\n", "Gamma 0.01 min 2.2497 f(min) -0.0069\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "max_iters = 10000\n", "precision = 0.0001\n", "\n", "# liste des valeurs du learning rate que l'on va observer\n", "gammas = np.linspace(0.001, 0.01, 10)\n", "\n", "# Dérivée de la fonction dont on veut trouver le minimum\n", "\n", "fct = lambda x: 4 * x**3 - 9 * x**2\n", "\n", "\n", "\n", "def gradient(gamma):\n", " '''\n", " x_0 = 6\n", " x_t+1 = x_t - gamma * fct(x_t)\n", " '''\n", " \n", " iters = 0\n", " cur_x = 6\n", " previous_step_size = 1\n", " x = [] \n", "\n", " while (previous_step_size > precision) & (iters < max_iters):\n", " x.append(cur_x)\n", " prev_x = cur_x\n", " cur_x -= gamma * fct(prev_x)\n", " previous_step_size = abs(cur_x - prev_x)\n", " iters+=1\n", "\n", " print(\"Gamma {} min {:.4f} f(min) {:.4f}\".format(gamma, cur_x, fct(cur_x)))\n", " return x\n", "\n", "\n", "# Afficher les courbes de convergence pour les différentes valuers du learning_rate\n", "\n", "fig, ax = plt.subplots(1,1, figsize = (12,6))\n", "for gamma in gammas:\n", " x = gradient(gamma)\n", " plt.plot(x, label = gamma)\n", "\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.2" } }, "nbformat": 4, "nbformat_minor": 2 }