{ "cells": [ { "cell_type": "markdown", "id": "297dacdd", "metadata": {}, "source": [ "## E2 236 Foundations of ML\n", "## Lab 3b - Optimization\n", "## Part B — Logistic Regression: IRLS vs SGD vs Adam\n", "\n", "**Learning objectives**\n", "- Derive and implement the logistic regression negative log-likelihood and its gradient\n", "- Implement three optimizers from scratch:\n", " - Iteratively Reweighted Least Squares (IRLS / Newton-Raphson)\n", " - Stochastic Gradient Descent (SGD) with momentum\n", " - Adam\n", "- Evaluate and compare all three on synthetic binary classification data\n", "\n", "**Instructions:** Complete every cell marked `# YOUR CODE HERE`.\n", "\n", "---" ] }, { "cell_type": "markdown", "id": "a98185a6", "metadata": {}, "source": [ "## Imports & Setup" ] }, { "cell_type": "code", "execution_count": 1, "id": "4d938874", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.colors import ListedColormap\n", "from sklearn.metrics import accuracy_score, log_loss\n", "from sklearn.model_selection import train_test_split\n", "\n", "np.random.seed(0)\n", "%matplotlib inline\n", "plt.rcParams.update({'figure.dpi':110, 'font.size':11})\n" ] }, { "cell_type": "markdown", "id": "10150c54", "metadata": {}, "source": [ "## 1. Synthetic Binary Classification Dataset\n", "\n", "**Q1** — Generate a 2-class dataset in $\\mathbb{R}^2$:\n", "- Class 0: $\\mathcal{N}(\\boldsymbol{\\mu}_0, \\Sigma)$ with $\\boldsymbol{\\mu}_0 = [-1, -1]^\\top$\n", "- Class 1: $\\mathcal{N}(\\boldsymbol{\\mu}_1, \\Sigma)$ with $\\boldsymbol{\\mu}_1 = [1, 1]^\\top$\n", "- $\\Sigma = 1.2^2 I_2$, 300 samples per class.\n", "\n", "Append a **bias column of ones** to $X$, then split 80/20 train/test.\n", "Plot the training data.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "03849b17", "metadata": {}, "outputs": [], "source": [ "def generate_binary_data(n_per_class=300, sigma=1.2, seed=0):\n", " \"\"\"\n", " Generate 2-class Gaussian data.\n", "\n", " Returns\n", " -------\n", " X : ndarray (2n, 3) features + bias column\n", " y : ndarray (2n,) binary labels\n", " \"\"\"\n", " # YOUR CODE HERE\n", " raise NotImplementedError\n", "\n", "\n", "X_all, y_all = generate_binary_data()\n", "X_tr, X_te, y_tr, y_te = train_test_split(\n", " X_all, y_all, test_size=0.2, random_state=1)\n", "\n", "print(f\"Train: {X_tr.shape}, Test: {X_te.shape}\")\n", "\n", "# Plot training data\n", "# YOUR CODE HERE" ] }, { "cell_type": "code", "execution_count": null, "id": "ebd9641e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train: (480, 3), Test: (120, 3)\n" ] }, { "data": { "image/png": "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h9u2OLhdi4PbtTjsvl11XUdvby9uuOGGae9bULhYvnw5Xn755Zzuu3LlSgBAS0sLTp06hblz5477++jvg4ODOT+/y+XCLbfcMu39mpub0dramvPjUm64XYuH27Y4uF2Lg9u1OOy8XRcvXpzT/QoKF01NTfjOd76T1//cfPPNePfddzMTOkd1dHQAABobGwtpChEREdlMyVaLPPTQQwCAX/7yl+Nu/9d//VfIsow777yzVE0hIiKiIirZapF169Zh27ZteOmll5BKpbBp0yYcOHAAu3fvxve//30sXbrUsucKBAJ45plnxs3ToJnjdi0ebtvi4HYtDm7X4qim7SoJIUSpniyVSuH555/HSy+9hMuXL2PBggV4/PHH8aMf/YgVO4mIiKpEScMFERERVT92FxAREZGlGC6IiIjIUgwXREREZCmGCyIiIrIUwwURERFZalaFi2PHjmHr1q2or6+Hx+PBqlWr8LOf/azczaoau3btgiRJcLlc5W5KRfvwww/xN3/zN7j++uvh9XqxcOFCPPTQQzhz5ky5m1YREokEfvKTn2D+/Plwu91Yv3499uzZU+5mVTzul6VRLcfRWbMUde/evdiyZQvWrVuHhx9+GD6fD+fPn0c4HMY//dM/lbt5FS8cDmPFihUIBoPQdR3xeLzcTapYf/EXf4G2tjY8+OCDWLNmDbq7u/GLX/wC4XAYBw8ezOmiQbPZt771Lbz66qv427/9Wyxfvhy//vWvcfjwYbz33nu44447yt28isX9sviq6jhayCXXK00wGBRz584Vf/7nf565BDxZ68c//rFYsWKFeOSRR4TT6Sx3cypaW1ubSCQS4247c+aMcDqd4pvf/GaZWlUZDh8+LACIF154IXNbLBYTS5cuFbfccksZW1b5uF8WXzUdR2fFsMju3bvR09OD5557DrIsIxwOwzTNcjerapw9exY7d+7Ejh07oKolqyhftW6//XZomjbutmXLluH666/Hp59+WqZWVYZXX30Vsizj8ccfz9zmcrnw2GOP4cMPP8SFCxfK17gKx/2yuKrtODorwsW+ffsQCAQyV2T1+/3w+/347ne/i2g0Wu7mVbwf/OAH2LRpE+67775yN6VqCSHQ09ODhoaGcjfF1o4dO4alS5dizpw5425fv3595u9kHe6X1qm242jlx6McnD17FrquY+vWrXjsscfw/PPP48CBA/j5z3+O3t5evP766+VuYsV6++23sXfvXpw4caLcTalqu3btQmdnJ5555plyN8XWurq60NzcfNXto7ddvny51E2qatwvrVGNx9GKCxdCCCQSiZzuq2laZhgkGo3iiSeewIsvvggAeOCBBwAAO3fuxIkTJ7B27dqitbkSFLJdk8kknnrqKTzxxBNYtWpVkVtYmQrZrhOdPn0aTz75JDZs2IBt27ZZ3cSqEovF4HQ6r7p9dOZ9LBYrdZOqFvdLa1TrcbTihkXa2trgdrtz+nn//fcBAG63G0B6FvlYjzzySOYxZ7tCtuvOnTvR19eH7du3l7n19lXIdh2ru7sbmzdvRk1NDV577TUoilKGV1E53G531jA3Out+9FhAM8P90jrVehytuJ6L5cuX4+WXX87pvitXrgQAtLS04NSpU5g7d+64v4/+Pjg4aG0jK1C+2zUYDOLZZ5/F9773PYRCIYRCIQDppVRCCFy4cAEejwdNTU3FbLbtFbK/jgoGg7j33nsxNDSEDz74AC0tLcVoYlVpbm7GxYsXr7q9q6sLALgNLcD90jpVfRwt40qVkvnJT34iAIj33ntv3O0HDx4UAMS//Mu/lKllleuLL74QAKb82bx5c7mbWbFisZjYuHGj8Hg84o9//GO5m1Mx/u7v/k7IsiwGBgbG3f7cc88JAOL8+fNlall14H5prWo+js6KIlrHjh3DTTfdhG9/+9vYtWtX5vbHHnsMv/rVr3DmzBksXbq0jC2sPNFoFHv37r3q9hdffBEHDhzAK6+8gnnz5mHDhg1laF1lMwwDDzzwAN555x38/ve/r5rZ46Vw+PBhbNiwAS+88AJ+/OMfA0hX7Fy9ejVqampw9OjRMrewcnG/tF41H0crblikEOvWrcO2bdvw0ksvIZVKYdOmTThw4AB2796N73//+wwWBfB4PLj//vuvuv3111+HLMtZ/0a5+eEPf4g33ngDW7ZswcDAAH7zm9+M+/ujjz5appbZ36233ooHH3wQP/3pT9HX14dly5bh3/7t3/DFF1/g3XffLXfzKhr3S+tV9XG03F0npZJMJsX27dvFokWLhMPhEEuWLBEvvPACK3Za7K/+6q8qvrJcud1xxx1TdpPS1GKxmPjRj34kmpubhdPpFDfffLN45513yt2sisf9snSq4Tg6K4ZFiIiIqHQqbikqERER2RvDBREREVmK4YKIiIgsxXBBRERElmK4ICIiIksxXBAREZGlGC6IiIjIUgwXREREZCmGCyIiIrIUwwURERFZiuGCiIiILMVwQURERJZiuCAiIiJL/X+2hR9DJ72XJQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [] }, { "cell_type": "markdown", "id": "a6ada23e", "metadata": {}, "source": [ "## 2. Logistic Regression Objective\n", "\n", "The negative log-likelihood (NLL) for logistic regression with parameters $\\boldsymbol{w}$ is\n", "\n", "$$\\mathcal{L}(\\boldsymbol{w}) = -\\frac{1}{n}\\sum_{i=1}^n\n", " \\bigl[y_i \\log \\sigma(\\mathbf{x}_i^\\top \\boldsymbol{w})\n", " + (1-y_i)\\log(1 - \\sigma(\\mathbf{x}_i^\\top \\boldsymbol{w}))\\bigr]$$\n", "\n", "Its gradient is\n", "\n", "$$\\nabla \\mathcal{L} = \\frac{1}{n} X^\\top (\\boldsymbol{\\pi} - \\mathbf{y})$$\n", "\n", "where $\\pi_i = \\sigma(\\mathbf{x}_i^\\top \\boldsymbol{w})$ and $\\sigma(z) = 1/(1+e^{-z})$.\n", "\n", "**Q2** — Implement the sigmoid, NLL, and gradient.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "6cc74e14", "metadata": {}, "outputs": [], "source": [ "def sigmoid(z):\n", " \"\"\"Numerically stable sigmoid.\"\"\"\n", " # YOUR CODE HERE\n", " raise NotImplementedError\n", "\n", "\n", "def nll(w, X, y):\n", " \"\"\"\n", " Negative log-likelihood of logistic regression.\n", "\n", " Parameters\n", " ----------\n", " w : ndarray (d,)\n", " X : ndarray (n, d)\n", " y : ndarray (n,) — binary {0, 1}\n", "\n", " Returns\n", " -------\n", " loss : float\n", " \"\"\"\n", " # YOUR CODE HERE\n", " raise NotImplementedError\n", "\n", "\n", "def nll_gradient(w, X, y):\n", " \"\"\"\n", " Gradient of NLL w.r.t. w.\n", "\n", " Returns\n", " -------\n", " grad : ndarray (d,)\n", " \"\"\"\n", " # YOUR CODE HERE\n", " raise NotImplementedError\n", "\n", "\n", "# Sanity checks\n", "w0 = np.zeros(X_tr.shape[1])\n", "assert 0 < nll(w0, X_tr, y_tr) < 2, \"NLL out of expected range\"\n", "assert nll_gradient(w0, X_tr, y_tr).shape == w0.shape, \"Gradient shape error\"\n", "print(\"NLL checks passed ✓\")\n" ] }, { "cell_type": "markdown", "id": "f5e3278e", "metadata": {}, "source": [ "## 3. Method 1 — IRLS (Newton-Raphson)\n", "\n", "For logistic regression, the Hessian is\n", "\n", "$$H = \\frac{1}{n} X^\\top W X, \\quad W = \\operatorname{diag}(\\pi_i(1-\\pi_i))$$\n", "\n", "The Newton update is\n", "\n", "$$\\boldsymbol{w}^{(t+1)} = \\boldsymbol{w}^{(t)} - H^{-1} \\nabla\\mathcal{L}$$\n", "\n", "which is equivalent to a **weighted least squares** problem solved at each step (IRLS).\n", "\n", "**Q3** — Implement IRLS. Use the working response formulation:\n", "$$\\mathbf{z} = X\\boldsymbol{w} + W^{-1}(\\mathbf{y} - \\boldsymbol{\\pi}), \\quad\n", " \\boldsymbol{w}^{\\text{new}} = (X^\\top W X)^{-1} X^\\top W \\mathbf{z}$$\n" ] }, { "cell_type": "code", "execution_count": null, "id": "5194372c", "metadata": {}, "outputs": [], "source": [ "def irls_logistic(X, y, n_iter=50, tol=1e-7, lam=1e-4):\n", " \"\"\"\n", " IRLS (Newton-Raphson) for logistic regression.\n", "\n", " Parameters\n", " ----------\n", " X : ndarray (n, d)\n", " y : ndarray (n,)\n", " n_iter: int\n", " tol : float convergence tolerance on ||Δw||\n", " lam : float L2 regularisation (added to diagonal of Hessian)\n", "\n", " Returns\n", " -------\n", " w : ndarray (d,)\n", " loss_hist : list[float] NLL at each full iteration\n", " \"\"\"\n", " # YOUR CODE HERE\n", " raise NotImplementedError\n", "\n", "\n", "w_irls, loss_irls = irls_logistic(X_tr, y_tr)\n", "print(f\"IRLS | Train NLL: {loss_irls[-1]:.4f} | \"\n", " f\"Test acc: {accuracy_score(y_te, (sigmoid(X_te@w_irls)>=0.5).astype(int)):.3f}\")\n" ] }, { "cell_type": "code", "execution_count": null, "id": "f7b12fcf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IRLS | Train NLL: 0.2764 | Test acc: 0.892 | Iters: 7\n" ] } ], "source": [ "\n" ] }, { "cell_type": "markdown", "id": "60d51918", "metadata": {}, "source": [ "## 4. Method 2 — SGD with Momentum\n", "\n", "Mini-batch SGD with momentum:\n", "$$\\mathbf{v}^{(t+1)} = \\mu \\mathbf{v}^{(t)} - \\eta \\, \\hat{\\nabla}\\mathcal{L}(\\boldsymbol{w}^{(t)})$$\n", "$$\\boldsymbol{w}^{(t+1)} = \\boldsymbol{w}^{(t)} + \\mathbf{v}^{(t+1)}$$\n", "\n", "where $\\hat{\\nabla}$ is the gradient on a random mini-batch.\n", "\n", "**Q4** — Implement mini-batch SGD with momentum. Track the **full-batch NLL** every epoch.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "8d67e8ab", "metadata": {}, "outputs": [], "source": [ "def sgd_logistic(X, y, lr=0.1, momentum=0.9, n_epochs=200,\n", " batch_size=32, lam=1e-4, seed=1):\n", " \"\"\"\n", " Mini-batch SGD with momentum for logistic regression.\n", "\n", " Parameters\n", " ----------\n", " X : ndarray (n, d)\n", " y : ndarray (n,)\n", " lr : float learning rate η\n", " momentum : float μ\n", " n_epochs : int\n", " batch_size : int\n", " lam : float L2 regularisation\n", " seed : int\n", "\n", " Returns\n", " -------\n", " w : ndarray (d,)\n", " loss_hist : list[float] full-batch NLL per epoch\n", " \"\"\"\n", " # YOUR CODE HERE\n", " raise NotImplementedError\n", "\n", "\n", "w_sgd, loss_sgd = sgd_logistic(X_tr, y_tr)\n", "print(f\"SGD | Train NLL: {loss_sgd[-1]:.4f} | \"\n", " f\"Test acc: {accuracy_score(y_te, (sigmoid(X_te@w_sgd)>=0.5).astype(int)):.3f}\")\n" ] }, { "cell_type": "markdown", "id": "f7d8bdad", "metadata": {}, "source": [ "## 5. Method 3 — Adam\n", "\n", "Adam update (Kingma & Ba, 2015):\n", "\n", "$$\\mathbf{m}^{(t)} = \\beta_1 \\mathbf{m}^{(t-1)} + (1-\\beta_1)\\mathbf{g}^{(t)}$$\n", "$$\\mathbf{v}^{(t)} = \\beta_2 \\mathbf{v}^{(t-1)} + (1-\\beta_2)(\\mathbf{g}^{(t)})^2$$\n", "$$\\hat{\\mathbf{m}} = \\mathbf{m}^{(t)} / (1-\\beta_1^t), \\quad \\hat{\\mathbf{v}} = \\mathbf{v}^{(t)} / (1-\\beta_2^t)$$\n", "$$\\boldsymbol{w}^{(t)} = \\boldsymbol{w}^{(t-1)} - \\alpha \\, \\hat{\\mathbf{m}} / (\\sqrt{\\hat{\\mathbf{v}}} + \\varepsilon)$$\n", "\n", "**Q5** — Implement Adam. Track the full-batch NLL every epoch.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "c575649c", "metadata": {}, "outputs": [], "source": [ "def adam_logistic(X, y, lr=0.01, beta1=0.9, beta2=0.999, eps=1e-8,\n", " n_epochs=200, batch_size=32, lam=1e-4, seed=2):\n", " \"\"\"\n", " Adam optimizer for logistic regression.\n", "\n", " Parameters\n", " ----------\n", " X, y : data\n", " lr : float α (step-size)\n", " beta1, beta2: float exponential decay rates\n", " eps : float numerical stability term\n", " n_epochs : int\n", " batch_size : int\n", " lam : float L2 regularisation\n", "\n", " Returns\n", " -------\n", " w : ndarray (d,)\n", " loss_hist : list[float] full-batch NLL per epoch\n", " \"\"\"\n", " # YOUR CODE HERE\n", " raise NotImplementedError\n", "\n", "\n", "w_adam, loss_adam = adam_logistic(X_tr, y_tr)\n", "print(f\"Adam | Train NLL: {loss_adam[-1]:.4f} | \"\n", " f\"Test acc: {accuracy_score(y_te, (sigmoid(X_te@w_adam)>=0.5).astype(int)):.3f}\")\n" ] }, { "cell_type": "code", "execution_count": null, "id": "99788763", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Adam | Train NLL: 0.2764 | Test acc: 0.892 | Epochs: 200\n" ] } ], "source": [ "\n" ] }, { "cell_type": "markdown", "id": "145a21fd", "metadata": {}, "source": [ "## 6. Convergence Comparison\n", "\n", "**Q6.1** — On a single figure, plot training NLL vs **wall-clock iteration** (epoch or Newton step)\n", "for all three methods.\n", "\n", "**Q6.2** — Plot the decision boundaries learned by each method side-by-side on the test set.\n", "\n", "**Q6.3** — Fill in the comparison table (test accuracy, final NLL, number of iterations/epochs).\n" ] }, { "cell_type": "code", "execution_count": null, "id": "1334d395", "metadata": {}, "outputs": [], "source": [ "# Q6.1 — Convergence plot\n", "# YOUR CODE HERE\n" ] }, { "cell_type": "code", "execution_count": null, "id": "13ce901b", "metadata": {}, "outputs": [ { "data": { "image/png": "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M6BWq5GTk4Pk5OSguJMmTcKYMWOwevVqFBcX45prrsG//vUvfPDBB1iwYEFY90aFIy8vD+PHjw+6h6oxJ06cwNatW4PCExISAh4Br1Kp8NVXX2HGjBkYMWIEdu/ejR07dmD+/PnyPWADBw7E3XffjTfeeANmsxk5OTn473//iy1btmD8+PFyZ81oNGLTpk2YN28ehgwZghkzZiAhIQE///wzzp07hw8//PA35gQhhFzlWu25jIQQQtq8UI+o93q97P7772cpKSlMEISgx8R/9NFH7Prrr2dRUVFMr9eznj17soULF7LDhw/LcUaOHMl69eoV8juPHTvGxo0bx4xGI4uLi2PTp09npaWlDABbvXp1QNz169ezzp07M1EUGQC2e/duef11H1HPGGM1NTVs+fLlrGPHjkylUrHu3buzJ598knk8noB4ANiCBQuC0pWRkcFmz57dYF6ZTCamVCrZu+++22Cc+tDII+qzsrLkeLNnz2YajYadOnWK5ebmMr1ez5KSktiKFSuYy+UKWKfH42FPPPEE69atG1OpVKxTp05sxYoVQY+iZ4yxvLw8NmLECKbX61l0dDTLyspiW7ZskT9vaD/Nnj2bZWRkhL2dhBBytREYo3kFhBBCSEvbvn07pk+fjosXLyI+Pr5Z1z1nzhz8/e9/h8PhaNb1EkIIaRl0TxghhBASATExMdi0aVOzd8AIIYS0PXRPGCGEEBIBY8eOxdixY1s7GYQQQq4ANBJGCCGEEEIIIRFE94QRQgghhBBCSATRSBghhBBCCCGERBB1wgghhBBCCCEkgqgTRgghhBBCCCERRJ0wQgghhBBCCIkg6oQRQgghhBBCSARRJ4wQQgghhBBCIog6YYQQQgghhBASQdQJI4QQQgghhJAIok4YIYQQQgghhETQ/wPApGU1xhm6uAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "d0e0ea22", "metadata": {}, "outputs": [], "source": [ "def plot_boundary(ax, w, X, y, title=''):\n", " \"\"\"Plot decision boundary for a logistic model on 2-D + bias data.\"\"\"\n", " # YOUR CODE HERE\n", " # Tips:\n", " # - use h = 0.15 for the meshgrid step (smaller values hang the kernel)\n", " # - build grid as np.c_[xx.ravel(), yy.ravel(), np.ones(xx.size)]\n", " # - predict with (sigmoid(grid @ w) >= 0.5).astype(int)\n", " # - call ax.set_xlim / ax.set_ylim to clip to the data range\n", " pass\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "93fd7810", "metadata": {}, "outputs": [], "source": [ "def plot_boundary(ax, w, X, y, title=''):\n", " \"\"\"Plot decision boundary for a logistic model on 2-D + bias data.\"\"\"\n", " h = 0.15 # coarser grid — fast and still smooth enough to see the boundary\n", " x0_min, x0_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5\n", " x1_min, x1_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5\n", " xx, yy = np.meshgrid(np.arange(x0_min, x0_max, h),\n", " np.arange(x1_min, x1_max, h))\n", " grid = np.c_[xx.ravel(), yy.ravel(), np.ones(xx.size)]\n", " Z = (sigmoid(grid @ w) >= 0.5).astype(int).reshape(xx.shape)\n", " cmap_bg = ListedColormap(['#AAAAFF', '#FFAAAA'])\n", " ax.contourf(xx, yy, Z, alpha=0.35, cmap=cmap_bg)\n", " ax.scatter(X[y==0, 0], X[y==0, 1], s=12, alpha=0.7, c='steelblue', label='Class 0')\n", " ax.scatter(X[y==1, 0], X[y==1, 1], s=12, alpha=0.7, c='crimson', label='Class 1')\n", " ax.set_xlim(x0_min, x0_max)\n", " ax.set_ylim(x1_min, x1_max)\n", " ax.set_title(title); ax.legend(fontsize=8)\n" ] }, { "cell_type": "code", "execution_count": null, "id": "a18ce011", "metadata": {}, "outputs": [], "source": [ "# Q6.3 — Comparison table\n", "print(f\"{'Method':8s} | {'Test Acc':9s} | {'Test NLL':9s} | {'Iters/Epochs':12s}\")\n", "print(\"-\" * 50)\n", "for name, w, n_iters in [\n", " ('IRLS', w_irls, len(loss_irls)),\n", " ('SGD', w_sgd, len(loss_sgd)),\n", " ('Adam', w_adam, len(loss_adam)),\n", "]:\n", " preds = (sigmoid(X_te @ w) >= 0.5).astype(int)\n", " acc = accuracy_score(y_te, preds)\n", " t_nll = nll(w, X_te, y_te)\n", " print(f\"{name:8s} | {acc:.4f} | {t_nll:.4f} | {n_iters}\")\n" ] }, { "cell_type": "code", "execution_count": null, "id": "e85c0507", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Method | Test Acc | Test NLL | Iters/Epochs\n", "----------------------------------------------------\n", "IRLS | 0.8917 | 0.2678 | 7\n", "SGD | 0.9000 | 0.2679 | 200\n", "Adam | 0.8917 | 0.2678 | 200\n" ] } ], "source": [ "\n" ] }, { "cell_type": "markdown", "id": "2d30b5f3", "metadata": {}, "source": [ "## 7. Hyperparameter Sensitivity\n", "\n", "**Q7.1** — For SGD, sweep learning rates $\\eta \\in \\{0.001, 0.01, 0.1, 0.5\\}$ and plot\n", "the final test accuracy for each.\n", "\n", "**Q7.2** — For Adam, sweep $\\alpha \\in \\{0.001, 0.003, 0.01, 0.03\\}$ similarly.\n", "\n", "**Q7.3 (written)** — Compare the sensitivity of SGD and Adam to the learning rate choice.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "40d7ed46", "metadata": {}, "outputs": [], "source": [ "# Q7.1 — SGD LR sweep\n", "# YOUR CODE HERE\n" ] }, { "cell_type": "code", "execution_count": null, "id": "91a1433d", "metadata": {}, "outputs": [ { "data": { "image/png": "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WSwWLViwIMs4gILAzCrABMqXLy9J+u9//5vjPukJ2tNPP60qVarccn8Xl9z/uT/44INq2bKlduzYoTVr1ujZZ5/N9RhFQXoxxdXVNUf7X7lyRS1atNCxY8fUrl07Pfroo5Kk6Ohobd26VW3bttW9995r3X/ZsmUaNGiQ3Nzc1KVLF/n4+Ojo0aNasWKF1q9fr23btlmny99o9uzZ+vLLL9WlSxcFBwcrIiJCn3/+uX755Rft27dP7u7ukqSYmBg1bdpU8fHx6tixox577DFdu3ZNJ0+e1BdffKEnn3wyy0vvypYtqwkTJuiDDz7QpUuXNGHCBOu27NYD69+/v9544w2FhobqpZdestm+YsUKXbt2TQMGDMhyjYQGDRpo1KhRmjVrlmrUqJHhU9jWrVurbt26atOmjcLDw3X48GHVqVMnQ/9ffvlFERERateunQICArKMFQDgeC5cuKCwsDDVqFFDbdq0ka+vr9588019+umnGjFihM3+P/zwgx588EElJSXp8ccfV0BAgH799Ve1bt1abdu2zfQYY8aMkZOTk5o1a6Zq1arp0qVL+u677/TCCy9o165dWr58eab9PvroI23evFndunVTq1attH79es2cOVMXL15Up06d1K9fP3Xu3FnDhg3Tt99+q2XLlun8+fP6+uuv8/U5MpPc5lrS9eLNihUrVK9ePfXt21clS5bUmTNntGvXLv373//W448/bt13//79at++vc6ePasOHTqoa9euOn/+vNauXav27dtrwYIFGjx4sM0xfv75Z7377rtq3ry5hg4das2d2rVrp3379llzD8Mw1LFjR/3www8KCgrS4MGD5ebmptOnT+v777/X1q1bs11/c/To0Vq8eLF++eUXDRw4MEdrrt53332qW7euvvnmG509e1Z33HFHhu0HDhzQnj17FBwcbP3w72a3yvOcnZ01bNgwTZgwQcuXL9fw4cMz9E9OTlZISIi8vLzUp0+fW8YM5CsDQKHbu3ev4erqalgsFqNv377G6tWrjePHjxtpaWlZ9vHz8zMkGVu3brXrmAMHDjQkGSEhIdnuN27cOEOSMWDAALuOU1CioqIMSUaNGjVytH+NGjUMSUZUVFSG9j///NOoUqWKIckICwvL0VhffvmlIckYNWqUzbaUlBQjLi7O+vORI0cMd3d3o2bNmsapU6cy7BseHm44OzsbjRo1ytCe/rspXbq08euvv2bY1qdPH0OS8fnnn1vbPvzwQ0OSMXPmTJt4EhMTjb///jvDMSUZEyZMyLBf+vOTlRo1atg81x07djQkGXv37rXZv2nTpobFYjGOHz9ubZswYYIhyQgPD7e2pf8eg4ODMz3u6tWrDUnGCy+8YLPtmWeeMSQZq1evzjJuAIBjmjlzpiHJGD9+vLUtODjYkGTs2rUrw75paWlGnTp1Mn2v//jjjw1JNu9PhmEYR48etTluamqqMWDAAEOS8eOPP2bYlv7+Xa5cOePIkSPW9osXLxoVK1Y0nJycjAoVKmTol5SUZNSvX9+QZERGRub2aShwWeVPmckqt0xOTjbat29vSDJGjhyZo+NevHjRsFgsRuPGjY3k5GSb7efOnbN+n5KSYtSuXdtwd3c3tm3blmG/M2fOGNWrVzc8PT2Nv/76y9oeEhJi/b3fHO/cuXMNScaIESOsbb/++qshyejatatNLGlpaUZsbGyGtsxym/Tn5+bz7ObtNz7X06ZNMyQZM2bMsNn/lVdesYnfnjzvzJkzhqurq00+ahiGsXLlSkOS8X//93+Z9gUKEpcBAibQsGFDLV26VJUrV9ayZcvUo0cP1axZU+XKlVOnTp20cuVKpaWlZejz559/SlKmizD++uuvmjhxYoYve6fupo9/7tw5u/qbzQcffKCJEydq/PjxGjJkiO666y79+eef6tmzp/VywJzy9PS0aXN2dlbZsmWtP8+ZM0dJSUmaOXOmze+qdevW6tKli/bu3ZvpHRuff/553X333Rnahg0bJknatWtXjuJxd3dXqVKlcvR4cit9JtTixYsztB88eFC7d+9Wq1atsvykL6e6deumqlWrKjQ0VImJidb2y5cva9myZapSpYq6deuWp2MAAIqe9IXVb1xrMn3Jg/TZ5+l++OEHHT58WC1atNATTzyRYduIESOyXPA7s/UanZycNGrUKEnS5s2bM+33/PPPZxizTJky6tKli9LS0vToo4/qvvvus25zc3NTz549JSnTZQSKorVr11rzz5EjR6pevXrasmWL6tevr3/96185GiN90Xw3Nzc5OzvbbL9xDcyNGzfqv//9r5599lkFBwdn2M/b21uvvPKKrl69qrCwMJtx7r//fpu1WwcPHiwXF5cc51oWi0UVKlTI0ePKrf79+8vZ2dl6CWG61NRULV26VCVLlsz0Bkq54e3trW7dumnv3r02l2nOmzdPkvTMM8/k6RiAPbgMEDCJ9GJJeHi4duzYocjISO3YsUMbN27Uxo0btXjxYn355Zc5ulvdr7/+qkmTJmVoa9asmYYOHZrruIx/pm3n5Ha3a9eu1b59+3J9jJu1bt0626nUeTFr1iybtqFDh+rTTz/N8RjBwcGqVq2a3nnnHf3888/q1KmTWrRooUaNGtlcbpm+Htl//vMf7d2712asv/76S9L1u8bUq1cvw7YmTZrY7O/j4yNJGRbM79Kli15//XWNHDlS33zzjR566CE1b95cd999t5ycCu4ziW7duqls2bJavny53n//fevU/vSE6ubkzx4uLi4aNmyYJk2apLCwMPXr10/S9csM//77bz3//PN2XeIKACi6vv/+e/3+++8KDg5WzZo1re3du3fXyJEjtXLlSs2YMUOlS5eWJOv7782FDOl68ally5aZriF5/vx5vffee9q4caOOHz+uhISEDNszW0NSuv4h5M3SF87ObFvVqlUlSadOncp0vBvt27dPa9euveV+t+Lr65sv79OZWbdundatW5ehrVGjRgoPD8/x4vdeXl7q3Lmz1q9fr3vuuUePP/64WrZsqebNm9t8CJeea508edK6VtON0te1/P333222ZZZrubq6qnLlyhlyrXr16qlBgwZauXKlTpw4oa5du+r+++9X06ZN5eHhkaPHZI+qVauqffv2+uabb7Rv3z7rshGbN29WTEyMBg4cmC8fSj777LNavXq15s2bp6ZNm0q6vjxJeHi47r//fgUGBub5GEBukeEDJuLq6qoOHTqoQ4cOkq5/avLFF19o8ODB2rRpk+bMmWP9NK9KlSqKiorSmTNnbO760a9fP+t/6k+cOJGn2S1nzpyRJJvr5DOzdu1am09+7FVQxaqoqCj5+voqKSlJ+/fv1/PPP68FCxbI399fY8aMydEYXl5eioiI0KRJk/Tll19q69atkq6vCzB48GBNmTLFervi9AVTs1qIPF1mi1reOEMrXXph5saFXWvUqKHdu3dr0qRJ+uabb6xJbOXKlfXcc89pzJgxmX4qmVfu7u7q06eP5syZo40bN6pr1675+klfuuHDh+utt97S3Llzref1vHnz5OTkZLO2AgDA8aXP9ri52FKyZEn17NlTixYt0vLly/X0009Lki5duiTp+vti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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "5e197135", "metadata": {}, "outputs": [], "source": [ "# Q7.2 — Adam LR sweep\n", "# YOUR CODE HERE\n" ] }, { "cell_type": "markdown", "id": "639a3185", "metadata": {}, "source": [ "**Q7.3 — Written answer:**\n", "\n", "> *[Your answer here]*\n" ] }, { "cell_type": "markdown", "id": "8081aa09", "metadata": {}, "source": [ "## 8. Conceptual Questions\n", "\n", "**Q8.1** — Why does IRLS converge in far fewer iterations than SGD/Adam? What is the trade-off?\n", "\n", "**Q8.2** — What is the role of the bias-correction terms $(1-\\beta_1^t)$ and $(1-\\beta_2^t)$ in Adam?\n", "\n", "**Q8.3** — Suppose the two classes are **linearly separable**. What happens to the MLE weights,\n", "and how does L2 regularisation help?\n" ] }, { "cell_type": "markdown", "id": "75fcf892", "metadata": {}, "source": [ "**Q8.1:** > *[Your answer here]*\n", "\n", "**Q8.2:** > *[Your answer here]*\n", "\n", "**Q8.3:** > *[Your answer here]*\n" ] }, { "cell_type": "markdown", "id": "276d3303", "metadata": {}, "source": [ "---\n", "## End of Part B" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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.9.13" } }, "nbformat": 4, "nbformat_minor": 5 }