{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using PyPlot\n", "using LinearAlgebra" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we want to solve a simple optimization problem over $\\mathbb{R}^d$ with objective function\n", "$$f(x) = \\frac{1}{2} \\| x \\|^2.$$\n", "Here, the gradient is\n", "$$f'(x) = x.$$" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "grad_f (generic function with 1 method)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function grad_f(x)\n", " return x\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose that our stochastic objective samples are of the form\n", "$$\\tilde f(x) = \\frac{1}{2} \\| x \\|^2 + x^T z$$\n", "where $z \\sim N(0,\\sqrt{d} \\cdot I)$ is a standard Gaussian random variable with expected norm-squared $1$. Then our gradient samples will be of the form\n", "$$\\nabla \\tilde f(x) = x + z.$$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sample_grad_f (generic function with 1 method)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function sample_grad_f(x)\n", " return x + randn(length(x)) / sqrt(length(x))\n", "end" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "stochastic_gradient_descent (generic function with 1 method)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function gradient_descent(x0, alpha, num_iters)\n", " dist_to_optimum = zeros(num_iters)\n", " x = x0\n", " for t = 1:num_iters\n", " x = x - alpha * grad_f(x)\n", " dist_to_optimum[t] = norm(x)\n", " end\n", " return dist_to_optimum\n", "end\n", "\n", "function stochastic_gradient_descent(x0, alpha, num_iters)\n", " dist_to_optimum = zeros(num_iters)\n", " x = x0\n", " for t = 1:num_iters\n", " x = x - alpha * sample_grad_f(x)\n", " dist_to_optimum[t] = norm(x)\n", " end\n", " return dist_to_optimum\n", "end" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "x0 = [5.0];\n", "alpha = 0.1;\n", "num_iters = 1000;\n", "gd_dist = gradient_descent(x0, alpha, num_iters);\n", "sgd_dist = stochastic_gradient_descent(x0, alpha, num_iters);" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Figure(PyObject