{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "using PyPlot\n", "using LinearAlgebra\n", "using Statistics\n", "using Random\n", "import Base.MathConstants.e" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Adaptive Learning Rates\n", "\n", "Let's look at using stochastic gradient descent with various methods to optimize logistic regression.\n", "First, we'll generate a training set at random from the generative model associated with logistic regression.\n", "(The same generative model we used for Notebook 6.)\n", "\n", "Except: here to create some imbalance in the examples, we'll adjust the sampled $X$ to have different variances in different coordinates." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# generate the data\n", "Random.seed!(424242)\n", "d = 50;\n", "N = 10000;\n", "wtrue = randn(d);\n", "wtrue = d^2 * wtrue / norm(wtrue);\n", "X = randn(N, d);\n", "X ./= sqrt.(sum(X.^2; dims=2));\n", "Y = (1 ./ (1 .+ exp.(-X * wtrue)) .>= rand(N)) .* 2 .- 1;\n", "sigma = 1e-4;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's do logistic regression with regularization here, just as we did before to study hyperparameter optimization." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "w0 = randn(d);" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "adagrad_logreg (generic function with 1 method)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function sgd_logreg(w0, alpha0, gamma, X, Y, sigma, niters, wopt)\n", " w = w0\n", " (N, d) = size(X)\n", " dist_to_optimum = zeros(niters)\n", " for k = 1:niters\n", " alpha = alpha0 / (1 + gamma * (k-1));\n", " i = rand(1:N)\n", " xi = X[i,:];\n", " yi = Y[i];\n", " w = (1 - alpha * sigma) * w + alpha * xi * yi / (1 .+ exp.(yi * dot(xi, w)));\n", " dist_to_optimum[k] = norm(w - wopt);\n", " end\n", " return (w, dist_to_optimum);\n", "end\n", "\n", "function adagrad_logreg(w0, alpha, X, Y, sigma, niters, wopt)\n", " w = w0;\n", " (N, d) = size(X);\n", " r = zeros(d);\n", " dist_to_optimum = zeros(niters);\n", " for k = 1:niters\n", " i = rand(1:N)\n", " xi = X[i,:];\n", " yi = Y[i];\n", " g = sigma * w - xi * yi / (1 .+ exp.(yi * dot(xi, w)));\n", " r += g.^2;\n", " w -= alpha * g ./ (sqrt.(r) .+ 1e-10); \n", " dist_to_optimum[k] = norm(w - wopt);\n", " end\n", " return (w, dist_to_optimum);\n", "end" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "newton_logreg (generic function with 1 method)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# find the true minimum\n", "function newton_logreg(w0, X, Y, sigma, niters)\n", " N = size(X, 1);\n", " d = size(X, 2);\n", " w = w0;\n", " for k = 1:niters\n", " g = -X' * (Y ./ (1 .+ exp.(Y .* (X * w)))) + N * sigma * w;\n", " H = X' * ((1 ./ ((1 .+ exp.(Y .* (X * w))) .* (1 .+ exp.(-Y .* (X * w))))) .* X) + N * sigma * I;\n", " w = w - H \\ g;\n", " println(\"gradient norm: $(norm(g))\")\n", " end\n", " return w\n", "end" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gradient norm: 2500.000416184221\n", "gradient norm: 568.5321463634123\n", "gradient norm: 162.2081388505692\n", "gradient norm: 59.13057294638611\n", "gradient norm: 16.10911785249323\n", "gradient norm: 1.864245478061334\n", "gradient norm: 0.02947084402265636\n", "gradient norm: 7.507787778566566e-6\n", "gradient norm: 4.872576446772484e-13\n", "gradient norm: 2.613891556799585e-14\n", "gradient norm: 2.3055729862370177e-14\n", "gradient norm: 2.4584296439553133e-14\n", "gradient norm: 2.184594791303772e-14\n", "gradient norm: 2.5875997830454982e-14\n", "gradient norm: 2.391654643720554e-14\n", "gradient norm: 2.1902789798638662e-14\n", "gradient norm: 2.138310873593704e-14\n", "gradient norm: 2.6659125626953916e-14\n", "gradient norm: 2.3794672214487743e-14\n", "gradient norm: 2.3505105453973415e-14\n" ] } ], "source": [ "wopt = newton_logreg(wtrue, X, Y, sigma, 20);" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "best sgd: (alpha = 0.1)\n", "best adagrad: (alpha = 1.0)\n" ] } ], "source": [ "# do some simple hyperparameter optimization\n", "best_distance_sgd = 1e8;\n", "alpha_best_sgd = 0.0;\n", "for alpha in [0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1.0, 3.0, 10.0, 30.0, 100.0, 300.0, 1000.0]\n", " (w, dto) = sgd_logreg(w0, alpha, 0.0, X, Y, sigma, 100000, wopt);\n", " if dto[length(dto)] < best_distance_sgd\n", " best_distance_sgd = dto[length(dto)];\n", " alpha_best_sgd = alpha;\n", " end\n", "end\n", "\n", "println(\"best sgd: (alpha =$alpha_best_sgd)\")\n", "\n", "best_distance_adagrad = 1e8;\n", "alpha_best_adagrad = 0.0;\n", "for alpha in [0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1.0, 3.0, 10.0, 30.0, 100.0, 300.0, 1000.0]\n", " (w, dto) = adagrad_logreg(w0, alpha, X, Y, sigma, 100000, wopt);\n", " if dto[length(dto)] < best_distance_adagrad\n", " best_distance_adagrad = dto[length(dto)];\n", " alpha_best_adagrad = alpha;\n", " end\n", "end\n", "\n", "println(\"best adagrad: (alpha = \$alpha_best_adagrad)\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "Random.seed!(123456);\n", "(w, dto) = sgd_logreg(w0, alpha_best_sgd, 0.0, X, Y, sigma, 100000, wopt);\n", "(w2, dto2) = adagrad_logreg(w0, 0.5*alpha_best_adagrad, X, Y, sigma, 100000, wopt);" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Figure(PyObject