{ "cells": [ { "cell_type": "markdown", "id": "f2aa1842", "metadata": {}, "source": [ "# 第 6 章:随机近似 (Stochastic Approximation)\n", "\n", "在学习 TD 算法之前,我们必须掌握如何“增量式”地更新数据。\n", "\n", "## 1. 增量式均值估计 (Incremental Mean Estimation)\n", "求均值不必等所有数据到齐。如果我们依次收到数据 $x_k$,我们可以通过以下公式不断更新当前的均值估计 $w_{k+1}$:\n", "$$w_{k+1} = w_k - \\alpha_k (w_k - x_k)$$\n", "\n", "## 2. Robbins-Monro (RM) 算法\n", "当我们想解方程 $g(w) = 0$,但我们不知道 $g(w)$ 的具体表达式,且每次观测到的结果都有随机噪声时(即观测值为 $\\tilde{g}(w_k, \\eta_k) = g(w_k) + \\eta_k$),我们可以使用 RM 算法:\n", "$$w_{k+1} = w_k - a_k \\tilde{g}(w_k, \\eta_k)$$\n", "\n", "**收敛的魔法条件**:\n", "步长 $a_k$ 必须满足 $\\sum a_k = \\infty$(不能衰减太快,保证能走到终点)且 $\\sum a_k^2 < \\infty$(最终要衰减到 0,保证能收敛),最经典的步长就是 $a_k = 1/k$。\n", "\n", "## 3. 随机梯度下降 (SGD)\n", "大名鼎鼎的 SGD 其实就是 RM 算法的特例\n", "SGD 用于最小化目标函数 $J(w) = \\mathbb{E}[f(w, X)]$。它无需计算真实的期望梯度,而是直接使用单个样本的随机梯度来更新:\n", "$$w_{k+1} = w_k - \\alpha_k \\nabla_w f(w_k, x_k)$$" ] }, { "cell_type": "markdown", "id": "34f1c8c7", "metadata": {}, "source": [ "增量式均值估计 vs 传统均值估计" ] }, { "cell_type": "code", "execution_count": 1, "id": "50d3faaa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--- 传统方法 (非增量式) ---\n", "一次性求平均结果: 10.0387\n", "\n", "--- 增量式均值估计 (Incremental) ---\n", "收到 10 个样本后的均值估计: 10.8961\n", "收到 100 个样本后的均值估计: 9.7923\n", "收到 1000 个样本后的均值估计: 10.0387\n", "\n", "结论:增量式更新完美逼近了真实均值,且不需要保存历史样本!\n" ] } ], "source": [ "import numpy as np\n", "\n", "# 生成 1000 个随机样本,假设它们是某个状态的奖励\n", "np.random.seed(42)\n", "samples = np.random.normal(loc=10.0, scale=2.0, size=1000)\n", "\n", "print(\"--- 传统方法 (非增量式) ---\")\n", "true_mean = np.mean(samples)\n", "print(f\"一次性求平均结果: {true_mean:.4f}\")\n", "\n", "print(\"\\n--- 增量式均值估计 (Incremental) ---\")\n", "w_k = 0.0 # 初始猜测\n", "for k, x_k in enumerate(samples, start=1):\n", " alpha_k = 1 / k # 步长 (对应公式 1/k)\n", " # 核心公式: 新估计 = 老估计 - 步长 * (老估计 - 新样本)\n", " w_k = w_k - alpha_k * (w_k - x_k)\n", " \n", " if k in [10, 100, 1000]:\n", " print(f\"收到 {k} 个样本后的均值估计: {w_k:.4f}\")\n", "\n", "print(\"\\n结论:增量式更新完美逼近了真实均值,且不需要保存历史样本!\")" ] }, { "cell_type": "markdown", "id": "b0ac2d46", "metadata": {}, "source": [ "运行一个 Robbins-Monro (RM) 算法" ] }, { "cell_type": "code", "execution_count": 11, "id": "c2e13c9c", "metadata": {}, "outputs": [ { "data": { "image/png": "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REVFYcyYMQgODkb37t3x6aefIjU1FVOnTgUgn46QlpaGrVu3ApAnvmPHjkVMTAy6deumHDV2d3eH9//WBlu0aBG6deuG5s2bIycnB6tXr8b58+exdu1a6+ykAR48kP/kBS6IiIiITMOmkt+RI0fi7t27WLx4MdLT09GuXTvs378fjRo1AgCkp6errPn7ySefoLi4GK+88gpeeeUVZfm4ceMQGxsLAHjw4AH+85//ICMjA97e3ujYsSOOHj2KLl26WHTfjHHvnnyuM0d+iYiIiEzDppJfAJg2bRqmTZum8TFFQqtw+PDhcutbtWoVVq1aZYKWWR5HfomIiIhMy2bm/JI6zvklIiIiMi0mvzbs/n35tAeO/BIRERGZBpNfG1b68sZEREREVHFMfm2UEI+TX478EhEREZkGk18bVVDghOJirvZAREREZEpMfm3Uw4fyq5S4ugLu7lZuDBEREVElweTXRuXmypNfHx9AIrFyY4iIiIgqCSa/NiovzwUA5/sSERERmRKTXxtVeuSXiIiIiEyDya+NysuTJ78c+SUiIiIyHSa/Nio3Vz7tgSO/RERERKbD5NdGceSXiIiIyPSY/NoojvwSERERmR6TXxulWOeXI79EREREpsPk10Y9fMiRXyIiIiJTY/JrozjyS0RERGR6TH5tlCL55cgvERERkekw+bVRimkPHPklIiIiMh0mvzaouBjIz+fILxEREZGpMfm1QQ8ePP6dyS8RERGR6TD5tUH378t/Vq8u4ORk3bYQERERVSZMfm3Q/fsSAJzvS0RERGRqTH5tkGLkt0YNqzaDiIiIqNJh8muD7t2T/6xZU1i3IURERESVDJNfG/TggXzaA0d+iYiIiEyLya8Nejzya912EBEREVU2TH5tkGKpsxo1OO2BiIiIyJSY/Nqge/e42gMRERGROTD5tUGK1R58fDjyS0RERGRKTH5t0OPk17rtICIiIqpsmPzaIMVFLpj8EhEREZkWk18bI5MBGRny369fl98nIiIiItOwueR33bp1CAwMhJubGzp16oRjx47pjD9y5Ag6deoENzc3NGnSBBs2bFCL2b17N9q0aQNXV1e0adMGe/bsMVfzKyQ+Hmjc+PEJb9OmOaFxY3k5EREREVWcTSW/cXFxmDFjBt566y0kJycjJCQEkZGRSE1N1RifkpKCgQMHIiQkBMnJyfi///s/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# 真实函数 (我们假装不知道它的表达式)\n", "def g(w):\n", " return w**3 - 5\n", "\n", "# 带噪声的黑盒观测器\n", "def noisy_observation(w):\n", " noise = np.random.normal(0, 1) # 标准正态分布噪声\n", " return g(w) + noise\n", "\n", "w_k = 0.0 # 初始猜测 w1 = 0\n", "w_history = [w_k]\n", "\n", "# 迭代 100 次\n", "for k in range(1, 101):\n", " a_k = 0.1 / k # 满足 RM 定理的收敛步长,减小初始步长防止发散\n", " \n", " # 观测带噪声的输出\n", " g_tilde = noisy_observation(w_k)\n", " \n", " # RM 核心更新公式\n", " w_k = w_k - a_k * g_tilde\n", " w_history.append(w_k)\n", "\n", "# 绘图展示收敛过程 (类似图 6.3)\n", "plt.figure(figsize=(8, 4))\n", "plt.plot(range(101), w_history, marker='o', linestyle='-', color='b')\n", "plt.axhline(y=5**(1/3), color='r', linestyle='--', label='True Root (~1.71)')\n", "plt.title('Robbins-Monro Algorithm: Finding root of $w^3 - 5 = 0$ with noise')\n", "plt.xlabel('Iteration index k')\n", "plt.ylabel('Estimated root $w_k$')\n", "plt.legend()\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "3cc50d1f", "metadata": {}, "source": [ "BGD, MBGD, 与 SGD 收敛性对比" ] }, { "cell_type": "code", "execution_count": null, "id": "c91caa6f", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq8AAAGHCAYAAACedrtbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAmWtJREFUeJzs3Xl8VNX9//HXnX0m+54QIGGTHcQNQWWpBQXFfcWquNVWW2utXdSfFluL1bbWWqtWq6hfBXHBXVGqgiBocUEBEdnCEhIC2ZPZZ87vjzszZCeTTJghfJ6PxzyS3Llz77lnbpL3nHvuOZpSSiGEEEIIIcRhwBDvAgghhBBCCNFZEl6FEEIIIcRhQ8KrEEIIIYQ4bEh4FUIIIYQQhw0Jr0IIIYQQ4rAh4VUIIYQQQhw2JLwKIYQQQojDhoRXIYQQQghx2JDwKoQQQgghDhsSXoUQQgghxGFDwqs44jz99NNomhZ52Gw28vPzmTp1Kvfeey8VFRWtXjN37lw0TYtqP06nk7lz57Js2bIYlTy+euJ45syZ0+y9aO8xZ86cmO2zK5qeM20dv1KKwYMHo2kaU6ZMOeTli5bP52PYsGH8+c9/bra8oaGBm2++mT59+mCz2Tj66KN54YUXOr3dzr5+0qRJ3Hzzzd09jIQzZ84ciouLmy2bN28er732WlzK05lyLFu2rN3zWoiEpYQ4wsyfP18Bav78+Wr16tXq448/Vi+//LK6+eabVVpamsrMzFRLly5t9ppdu3ap1atXR7Wfffv2KUD9/ve/j2Hp46cnjmfLli1q9erVkce//vUvBah58+Y1W75ly5aY7bMrwudMSkqK+tGPftTq+Y8++ijy/OTJkw99AaP04IMPqtzcXNXQ0NBs+bRp01R6erp67LHH1IcffqiuvfZaBajnn3++U9vt7OuXLVumzGaz+u6772J2TIlgy5Yt6ssvv2y2LCkpSV155ZXxKVAnylFbW6tWr16tamtrD32hhOgiCa/iiBMOImvWrGn13I4dO1S/fv1USkqKKi8v79Z+JLxGLxwCX3rppQ7XczqdKhgM9lg5WgqfM9dee62y2+2t/tH/6Ec/UhMmTFAjR45M+PDq8/lUYWGh+t3vftds+dtvv60AtWDBgmbLp02bpvr06aP8fn+H24329aNGjVLXXXddN44kPpxOZ1Tr90R49fv9yu12x70cQsSLdBsQoon+/fvzt7/9jfr6ev79739HlrfVbeDDDz9kypQpZGVlYbfb6d+/P+effz5Op5OSkhJycnIAuPvuu1td/t6yZQtXXXUVQ4YMweFwUFhYyKxZs1i3bl2zfYQv6S1cuJA77riDPn36kJqayg9/+EM2bdrUqvxLlizh1FNPJS0tDYfDwfDhw7n33nubrfP5559z1llnkZmZic1mY9y4cbz44osd1svBjgdg5cqVnHrqqaSkpOBwOJg4cSJvv/12xxXeCeFL9u+//z5XX301OTk5OBwOPB5Pm5dpoe33SynFI488wtFHH43dbicjI4MLLriAbdu2dbosl156KQALFy6MLKutreWVV17h6quvbvM1Xq+Xe+65h2HDhmG1WsnJyeGqq65i3759zdZbtGgR06dPp6CgALvdzvDhw/nd735HY2Njs/XmzJlDcnIyW7ZsYebMmSQnJ9OvXz9+9atf4fF4DnoMb7zxBqWlpVx++eXNlr/66qskJydz4YUXNlt+1VVXsWfPHj777LMOtxvt6y+//HIWLFhAfX39QctcVVXFDTfcQGFhIRaLhYEDB3LHHXc0O95x48ZxyimntHptIBCgsLCQ8847L7Kss+9JcXExZ555JosXL2bcuHHYbDbuvvvudsvZ8nzUNI3GxkaeeeaZyO9M024l5eXlXH/99fTt2xeLxcKAAQO4++678fv9kXVKSkrQNI3777+fe+65hwEDBmC1Wvnoo49wu9386le/4uijjyYtLY3MzEwmTJjA66+/3qxcHZWjvW4Db7zxBhMmTMDhcJCSksK0adNYvXp1s3XCv2cbNmzg0ksvJS0tjby8PK6++mpqa2ubrfvSSy8xfvz4yN+mgQMHtvs7I8TBSHgVooWZM2diNBr5+OOP212npKSEM844A4vFwlNPPcWSJUv485//TFJSEl6vl4KCApYsWQLANddcw+rVq1m9ejV33nknAHv27CErK4s///nPLFmyhH/961+YTCbGjx/fZii9/fbb2bFjB//5z394/PHH2bx5M7NmzSIQCETWefLJJ5k5cybBYJDHHnuMN998k5tuuondu3dH1vnoo4846aSTqKmp4bHHHuP111/n6KOP5uKLL+bpp59u93gPdjzLly/nBz/4AbW1tTz55JMsXLiQlJQUZs2axaJFizpf+R24+uqrMZvN/N///R8vv/wyZrM5qtdff/313Hzzzfzwhz/ktdde45FHHmHDhg1MnDiRvXv3dmobqampXHDBBTz11FORZQsXLsRgMHDxxRe3Wj8YDHL22Wfz5z//mdmzZ/P222/z5z//maVLlzJlyhRcLldk3c2bNzNz5kyefPJJlixZws0338yLL77IrFmzWm3X5/Nx1llnceqpp/L6669z9dVX8/e//5377rvvoMfw9ttvk5uby4gRI5otX79+PcOHD8dkMjVbPmbMmMjzHYn29VOmTKGxsfGgfS3dbjdTp07l2Wef5ZZbbuHtt9/mRz/6Effff3+zQHrVVVexcuVKNm/e3Oz177//Pnv27OGqq64ContPAL788kt+/etfc9NNN7FkyRLOP//8Dsvb1OrVq7Hb7cycOTPyO/PII48AenA94YQTeO+997jrrrt49913ueaaa7j33nu57rrrWm3roYce4sMPP+Svf/0r7777LsOGDcPj8VBVVcWtt97Ka6+9xsKFCzn55JM577zzePbZZztVjrYsWLCAs88+m9TUVBYuXMiTTz5JdXU1U6ZMYeXKla3WP//88znqqKN45ZVX+N3vfseCBQv45S9/2Wz/F198MQMHDuSFF17g7bff5q677moW0oWISrybfoU41DrqNhCWl5enhg8fHvn597//vWr66/Lyyy8rQK1du7bdbURzmd3v9yuv16uGDBmifvnLX0aWhy+jz5w5s9n6L774ogIi/XDr6+tVamqqOvnkkzu8nD5s2DA1btw45fP5mi0/88wzVUFBgQoEAl06nhNPPFHl5uaq+vr6Zsc0atQo1bdv305f4m+r20D4/briiitarX/llVeqoqKiVstbvl+rV69WgPrb3/7WbL1du3Ypu92ufvOb33RYrqbnTLiM69evV0opdfzxx6s5c+YopVSrbgMLFy5UgHrllVeabW/NmjUKUI888kib+wsGg8rn86nly5crQH399dfNjhlQL774YrPXzJw5Uw0dOrTD41BKqeHDh6vTTz+91fIhQ4ao0047rdXyPXv2RPohdyTa13u9XqVpmvrtb3/b4XYfe+yxNo/3vvvuU4B6//33lVJK7d+/X1ksFnX77bc3W++iiy5SeXl5kXM+mvekqKhIGY1GtWnTpg7LGNbW+dje5frrr79eJScnqx07djRb/te//lUBasOGDUoppbZv364ANWjQIOX1ejvc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pRTwju8Utu1LIteh2LqvkWdXlfCzHwyJdwmFEEKIHiFhUkQjVueLnHXd5amF6hI8377Lcd/cxa1qPsPZTobdxLvry1lTUhXvEgohhBBC9BoSXmMgoBTbfZk4sXG85zN+7XmYG52P0s+zmX8v20qd2xfvIgohhBAJaU1JFTc8/4U09ohOk/DaTUpBZYMXly9AwJyCCvpJVg2Mdn/O77wPM2P3g7zz/nvxLqYQQgiRcOrcPv69fCtf7Kjm38u3HXGNPU8++STTp0+PdzFaefjhhzn77LPjXYx2SXjtpvI6Nw0ePwaDPh9vQDMRwEillokBxaTAp2RtfJbSGle8iyqEEEIkDKUUz6wqYdu+RgbnJLNtXwPPrirp0X1WVFRw/fXX079/f6xWK/n5+Zx22mmsXr262XpfffUVF198MQUFBVitVoqKijjzzDN58803UUoBUFJSgqZpkUdKSgojR47kxhtvZPPmzQcti8fj4a677uLOO+/skWNtj9vtZs6cOYwePRqTycQ555zTap3rrruOzz//vFW9JAoJr92Un2oj2WoiGNR/EYPKgJEAOcF9BNH42HgilcOvoDDdHu+iCiGEEAljTUk1S9aXk+EwYzMbyXCYe/xekfPPP5+vv/6aZ555hu+//5433niDKVOmUFV1YJ+vv/46J554Ig0NDTzzzDN8++23vPTSS5xzzjn8v//3/6itrW22zf/+97+UlZXx9ddfM2/ePDZu3MjYsWP54IMPOizLK6+8QnJyMqecckqPHGt7AoEAdrudm266iR/+8IdtrmO1Wrn00kt54oknDmnZOktGG+gmTYOsZAuVfiM+Xz0pNGIkyCZjMU9bLiOQM5q/TT863sUUQggheoxSCo8/2On1690+Hl22BY8vQE6KlYBSJNtM1FS7eHTZForPH0NKaKhJFQzi8Qfx+AJoBtVqW1aToVNjzNbU1LBy5UqWLVvG5MmTASgqKuKEE06IrNPY2Mg111zDGWecweLFiyPLBw0axAknnMC1114baXkNy8rKIj8/H4CBAwcya9YsTj31VK655hq2bt2K0WhsszwvvPACZ511VrNlc+bMoaamhhNOOIF//OMfeDwefvnLX3LHHXdw22238eSTT+JwOPjDH/7A1VdffdBjbktSUhKPPvooAJ988gk1NTVtrjdr1ixOP/10XC4XSUlJXdpXT5HwGgNG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Q4cObfaam2++mf/85z8ApKens3v37oOWadiwYbz//vvtPl9SUkJeXl6bXQauuuoqLrroIgB++9vfMmHCBO68805OO+00AH7xi19w1VVXRdY/7rjjWLt2bYflSU9Pj3w/fvx4nn32WY466ij27t3LPffcw8SJE9mwYUMkxAMUFhayc+dOgsFgj3ZtkPDaAwIGGyaDhoai0SkTFQghhOjlTFa9BbQzqkvglWvAlgZmh97y6qkH534w5+vdB8ZeCvmjAFAqSGNdHampqWjtdRuIUnZ2NmeccQbPPPMMSinOOOMMsrOz21x36tSpPProowBUVVXxyCOPMGPGDP73v/9RVFQEtG5dveOOO/jZz37G4sWLmTdvXqfKpJTqsJXW5XJhs7XdwjxmzJjI93l5eQCMHj262TK3201dqB7tdjuDBw/usDzBYJC6On2a+6attKNHj2bChAkMGjSIZ555hltuuSXynN1uJxgM4vF4sNvtHW6/OyS89oCgZsJktgAu3I0yRawQQoheTtM6f+neFOq7qhnA2wCN+8FshyE/hLGzoWBs8+4BwSCYvPrslTFszQtfSgf417/+1e56SUlJzYLescceS1paGk888QT33HMPQ4YM4bvvvmv2mpycHHJycsjNze10eTZu3MiAAQPafT47O5vq6uo2nzObzZHvwwG4rWXhkQC60m2gqaSkJEaPHs3mzZubLa+qqsLhcPRocAUJrz1D0zDZkoBafM66g36aEkIIIY44tbvAmgqDf9B2aO1hp59+Ol6v3rUvfHm9MzRNw2AwREYruPTSS5k9ezavv/46Z599dpfK8t1337FkyRJuu+22dtcZN24c5eXlVFdXk5GR0aX9hEXbbaAlj8fDxo0bOeWUU5otX79+Pcccc0y3ytYZcQ2v9957L4sXL+a7777DbrczceJE7rvvvmZ9R+bMmcMzzzS/FDF+/Hg+/fTTQ13cqJjsqcAejH4nLl8Ah0U+JwghhBBY0yCjGFIL4hJaw4xGIxs3box83x6Px0N5eTkA1dXVPPzwwzQ0NDBr1iwALrnkEhYvXswll1zCbbfdxmmnnUZeXh47duxg0aJFrbbt9/spLy8nGAxSWVnJsmXLuOeeezj66KP59a9/3W45xo0bR05ODp988kmzobq6ItpuA7feeiuzZs2if//+VFRUcM8991BXV8eVVza/SW/FihVM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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "结论:离真值越远,SGD下降得越快;靠近真值时,SGD 会有一定的波动,而 MBGD (使用更多样本) 波动更小 [cite: 7129-7134]。\n" ] }, { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n", "\u001b[1;31m请查看单元格中的代码,以确定故障的可能原因。\n", "\u001b[1;31m单击此处了解详细信息。\n", "\u001b[1;31m有关更多详细信息,请查看 Jupyter log。" ] } ], "source": [ "# 目标: 寻找二维平面上一堆散点的中心 (均值)\n", "# 对应优化问题: 最小化均方误差 J(w)\n", "np.random.seed(0)\n", "n_samples = 100\n", "# 在边长 20 的正方形内均匀分布采样,中心(期望)为 [0,0]\n", "X = np.random.uniform(-10, 10, size=(n_samples, 2)) \n", "\n", "# 初始化\n", "w_init = np.array([20.0, 20.0]) # 故意从很远的地方开始\n", "w_sgd = w_init.copy()\n", "w_mbgd_5 = w_init.copy()\n", "\n", "dist_sgd = [np.linalg.norm(w_sgd)]\n", "dist_mbgd_5 = [np.linalg.norm(w_mbgd_5)]\n", "\n", "# 模拟前 30 步迭代\n", "for k in range(1, 31):\n", " alpha_k = 1 / k\n", " \n", " # SGD: 每次随机抽 1 个样本 [cite: 7173]\n", " idx_sgd = np.random.choice(n_samples, 1)\n", " grad_sgd = w_sgd - X[idx_sgd[0]] # 梯度: w - x\n", " w_sgd = w_sgd - alpha_k * grad_sgd\n", " dist_sgd.append(np.linalg.norm(w_sgd))\n", " \n", " # MBGD (m=5): 每次随机抽 5 个样本\n", " idx_mbgd = np.random.choice(n_samples, 5)\n", " grad_mbgd = w_mbgd_5 - np.mean(X[idx_mbgd], axis=0) \n", " w_mbgd_5 = w_mbgd_5 - alpha_k * grad_mbgd\n", " dist_mbgd_5.append(np.linalg.norm(w_mbgd_5))\n", "\n", "plt.figure(figsize=(8, 4))\n", "plt.plot(dist_sgd, marker='d', label='SGD (m=1)', alpha=0.7)\n", "plt.plot(dist_mbgd_5, marker='>', label='MBGD (m=5)', alpha=0.7)\n", "plt.title('Distance to True Mean (0,0) over iterations')\n", "plt.xlabel('Iteration step')\n", "plt.ylabel('Distance to mean')\n", "plt.legend()\n", "plt.grid(True)\n", "plt.show()\n", "\n", "print(\"结论:离真值越远,SGD下降得越快;靠近真值时,SGD 会有一定的波动,而 MBGD (使用更多样本) 波动更小。\")" ] } ], "metadata": { "kernelspec": { "display_name": "GymRL", "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.13.9" } }, "nbformat": 4, "nbformat_minor": 5 }