rm Adam for now

This commit is contained in:
Steven G. Johnson committed 2024-10-31 22:08:16 -04:00
1 parent 9ed7e009b2
commit e4ff01607e
1 file changed
+30 -147
+30 -147
View File
@@ -145,7 +145,7 @@
{
"data": {
"text/plain": [
"(100001, 2.1898661935779876e-7)"
"(100001, 8.283307337600646e-6)"
]
},
"execution_count": 3,
@@ -162,12 +162,12 @@
},
{
"cell_type": "code",
"execution_count": 19,
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA28AAAGHCAYAAAAnR2o6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAACwYElEQVR4nOzdeVwVVf8H8M9luyyyKQqiKGhuqGnikuZeoUiWWmnLQ9puWi7U84ialaWBLWYlaj1l/nrarEyz3MDKpaRyt1IzC8QFRFRW2Tm/Py4zzNw793Ivcr0sn/frxUuZc2bmzL3DzHzPOXOOTgghQERERERERPWak6MLQERERERERDVj8EZERERERNQAMHgjIiIiIiJqABi8ERERERERNQAM3oiIiIiIiBoABm9EREREREQNAIM3IiIiIiKiBoDBGxERERERUQPA4I2IiIiIiKgBqFXwlp+fj//85z+IjIxEy5YtodPp8MILL5jNf+DAAdxyyy1o1qwZ/Pz8MGHCBPzzzz+aed9++2107doVer0eYWFhWLhwIcrKympTTBNnzpzBrFmzMGzYMPj5+UGn02HNmjVm82/fvh0DBw6Ep6cnAgICMGXKFGRlZZnkKysrw8KFCxEaGgq9Xo+uXbvi7bffrpMyA8Ann3yCZcuW1dn26qOXX34ZGzZsuOrt7NixAzqdDjt27LjqbdUnK1assHiuEjmarX/DxveNhvy325DLTtQUTZkyBTqdzuJPaGioah0hBD755BOMHDkS/v7+0Ov16NChA6ZPn47Tp09r7sfWdaRyeXt7o6CgwCT91KlTcHJyqvG5mxq3WgVvFy9exLvvvouSkhKMGzfOYt7jx49j+PDhKC0txeeff47Vq1fjxIkTGDJkCC5cuKDKu3jxYsycORMTJkzAtm3bMG3aNLz88suYPn16bYpp4uTJk/j444/h5uaGMWPGWMy7c+dOREVFITAwEF9//TXefPNNbN++HTfffDNKSkpUeadNm4b4+HhMnz4d27Ztw/jx4zFz5ky8/PLLdVJuBm/E4I3qu6v9G+7Tpw9SUlLQp0+fuivUNdKQy07UFC1YsAApKSmaP48//jgAYPz48XL+yspK3Hvvvbj//vsRFBSENWvWYNu2bZg1axY2btyI66+/Hj/99JNqH7VZBwBcXV1RXl6OtWvXmqR98MEH8Pb2ruNPgxocUQuVlZWisrJSCCHEhQsXBADx/PPPa+a9++67RUBAgMjNzZWXpaWlCVdXV/Gf//xHXpadnS3c3d3FY489plp/8eLFQqfTiT/++EO1/OzZs2L37t1my/jll1+KsrIy1bKKigr5/3v37hUAxAcffKC5fr9+/UR4eLhqGz/99JMAIFasWCEv+/3334VOpxMvv/yyav1HH31UeHh4iIsXL5oto7Wio6NF+/btr3o79ZmXl5eYPHnyVW/nhx9+EADEDz/8cNXbqk+6d+8uhg0b5uhiOFx5ebkoLi52dDFIg61/w5buG0TkOIWFhY4ugsOkpKQINzc3MXToUNXz38svvywAiISEBJN1MjMzRfv27UVgYKC4fPnyVa0zefJk4eXlJe655x4xaNAg1TqVlZWiffv24tFHH+X1s4mrVfCmZCl4KysrEx4eHuLxxx83SYuMjBSdOnWSf//oo48EAJGSkqLKd+7cOQFALF68WLX8qaeeEh4eHmLbtm0m2543b54AIL799luz5bYUvJ05c0YAEPHx8SZpnTt3Frfeeqv8+6JFiwQAkZGRocq3Z88eAUB8/PHHZssghBBZWVni0UcfFW3bthVubm4iICBADBo0SCQnJwshhBg2bJgAYPIjKSkpES+99JLo0qWLvP6UKVNEVlaWyb4+++wzceONNwpPT0/h5eUlIiMjxYEDB1R5pAvH77//LkaOHCk8PT1FQECAmD59uskFvbKyUiQmJopevXoJd3d34efnJ+68807x999/q/IdOHBAREdHi5YtWwo3NzfRunVrMWbMGHH69GkhhNA8PmsClWPHjolRo0YJDw8P0aJFC/H444+LjRs3agZvycnJYuTIkcLb21t4eHiIQYMGie3bt9v0XUi2bNkiRo4cKXx8fISHh4fo2rWrSfC+d+9eMXbsWOHv7y/0er3o3bu3WLt2rSrPBx98IACI77//XkydOlW0aNFCNG/eXIwfP16cPXtWzte+fXuTz6emYL6iokK89dZb8nfj6+srBgwYIL7++mtVniVLlsjnTsuWLUVMTIz8vUiGDRsmunfvLn799VcxePBg4eHhIcLCwkR8fLxcIZKVlSVcXV3Fs88+q/k9ARBvvvmmvCwjI0M89thjok2bNsLV1VWEhoaKF154QXWzTE1NFQDEkiVLxEsvvSRCQ0OFs7Oz2LJlixBCiA0bNoiePXsKNzc3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 truncated
"text/plain": [
"Figure(PyObject <Figure size 1000x400 with 2 Axes>)"
]
@@ -178,10 +178,10 @@
{
"data": {
"text/plain": [
"(0.0, 9.264876845621783e-5)"
"(0.0, 0.0013784058155002347)"
]
},
"execution_count": 19,
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
@@ -223,7 +223,7 @@
{
"data": {
"text/plain": [
"6.650888617809801e-7"
"8.995093126267436e-5"
]
},
"execution_count": 5,
@@ -410,7 +410,7 @@
{
"data": {
"text/plain": [
"(100001, 2.2419170480036973e-7)"
"(100001, 2.594316141650972e-5)"
]
},
"execution_count": 8,
@@ -430,12 +430,12 @@
},
{
"cell_type": "code",
"execution_count": 18,
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Ztq0aWMX+/PPP2/c3d3Niy++aFatWmU+/fRTU758eRMYGGiioqJs1yFPnjymRo0a5osvvjAbN240ixYtMr179zaRkZHGGGN+/vln4+3tbVq1amV7f3f2EN4pKirK5M+f3xQuXNjMnz/frFy50nTq1MkULVo0UY/RwoULjcViMe3atTNLliwx33zzjWnTpo1xdXU169atS/PPwhhj5s6daywWi2nUqJH59NNPzbp168yMGTNM3759bXV++OEH4+HhYerXr28WLVpkVq1aZbp165bo8zZ//nwDmJIlS5oBAwaY1atXm7lz55pcuXKZxo0b2+rt3LnTlCxZ0lSrVs12fXbu3Jni9encubOxWCzmueeeM19//bX57rvvzLhx48zUqVNtdXr16mUA079/f7Nq1Soza9Ysky9fPhMUFGTOnDljq9ewYUOTJ08eU6ZMGTNr1iyzdu1a07dvXwOYDz/80Fbv8ccfN0FBQXY9s8YY89JLLxkPDw9z9uxZY4wxJ0+eNEFBQaZYsWLm/fffN+vWrTOvv/668fT0NN26dbO1O3TokAFM4cKFTePGjc3ixYvNmjVrzKFDh8x3331nXFxcTKNGjczSpUvNl19+aWrXrm2KFy9u7vwKTMvnND3vMzo62lSsWNH4+vqasWPHmtWrV5uvvvrKDBo0yPzwww/GmPT9bopjKDESh0kpMUoYevrss88Svfbmm28awJw4ccIYY/3j5enpmeQ5ypYta5o3b56oPDY21nTu3Nm4u7ubL774wvTt29e4uLiYBQsWpBp3SonRJ598YgBbAvJvvXr1Mh4eHrbnjzzyiClXrlyS5/Dw8Eg0NHinHDlymMGDB6dYJ7mhtM8++8wA5quvvrIrT3hvCUN+R48eNW5ubmbAgAF29S5fvmwKFChgnnzySVtZ165dDWD3BWqMNbECzI8//miMsSYzgHnnnXfs6h07dsx4e3vbhkm3b99uALNs2bIU32N6h9JefvllY7FYTEREhF35I488YpcYXb161eTOndu0bdvWrl5cXJypUqWKqVWrlq0stZ/F5cuXjb+/v3n44YdtQ8lJKV++vKlWrVqiodw2bdqYggUL2hKHhMTo30mVMcZMnDjRAObkyZO2svQMpW3atMkAZsSIEcnWOXDgQJLn/uWXXwxg/vvf/9rKGjZsaADzyy+/2NUNDg42LVq0sD1fvny5AcyaNWtsZbGxsaZQoULmiSeesJW98MILJkeOHObIkSN2x5s0aZIBbElxQmJUqlQpExMTY1e3Zs2aJigoyNy8edNWdvnyZZMnTx67xCitn9P0vM+xY8cawKxdu9YkJ62/m+I4GkqTLCWlYbd/v5bWeglcXV1ZsGAB3bp148knn2T27Nl88skndO3a9d4CTiWeO8vTG/e/1apViwULFvDGG2+wdevWdK3AW7FiBTlz5qRt27bExsbaHlWrVqVAgQK2lVmrV68mNjaWLl262NXz8vKiYcOGSa7g6tSpk93z//u//wOwDWOsWLECi8XCs88+a3fMAgUKUKVKFdsxS5cuTa5cuXj55ZeZNWsWkZGRaX5/gN2xY2NjMcbY4qhYsSJVqlRJMs4EW7Zs4fz583Tt2tXuOPHx8bRs2ZJt27Zx9epVIPWfxZYtW4iOjqZv377J/lz//PNPDh48aLt+/z5nq1atOHnyJL/99ptdm0cffdTueeXKlQE4cuRIei6VzXfffQeQ4qKFhJ9jt27d7Mpr1apFhQoVEg0zFihQgFq1aiWK898xhoWFUaBAAebPn28rW716NSdOnKBHjx62shUrVtC4cWMKFSpkd33CwsIA68KHf3v00Udxd3e3Pb969Srbt2+nXbt2eHh42Mpz5MhB27Zt7dqm9XOanvf53XffUbZsWZo1a0Zy0vq7KY6jxEiyhDx58gDWVWx3On/+PBaLhZw5c9rq3rhxI9E8loS6uXPnTvIc8fHxREdH4+LiQlxcHNHR0Zke979jyZMnT5L1rl69SkxMTLJxJ1i0aBFdu3Zl7ty51KlTh9y5c9OlSxeioqJSjfPUqVNcvHgRDw8P3N3d7R5RUVGcPXvWVg+gZs2aieotWrTIVi+Bm5ub7RokKFCggN01OXXqFMYYAgMDEx1z69attmMGBASwceNGqlatyn//+18qVqxIoUKFGDVqVJqSwDuP/eGHH9riSIgpqTj/fY0AOnTokOhYb731FsYYzp8/D6T+s0iYG1KkSJFk400437BhwxKdr2/fvgCJrved19rT0xOA69evp3p9knLmzBlcXV2TvD4JEn6OBQsWTPRaoUKFEn2m74wxIc5/x+jm5kbnzp1ZunQpFy9eBKzzqAoWLEiLFi1s9U6dOsU333yT6PpUrFgRSHx97ozxwoULts/ene4sS+vnND3v88yZMyl+BhLOm5bfTXEct9SriGS+UqVK4e3tzd69exO9tnfvXkqXLo2XlxcAlSpVspXXrl3bVi/hj0hISEiiY8TExPDUU0+xevVqVq5cycaNG+nduzc3btxg4MCBdx13wrn27t2baFn/3r177WKpVKkSn3/+OVFRUXZfRAnvOam4/y1v3rxMmTKFKVOLine truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAHFCAYAAAAXETaHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB95ElEQVR4nO3dd3yNZxsH8N+TPWSIEAmxZ8RIYtTesdtQqssetXeNqll7FRX7RXWhiqpaUbNFxUiNmG0IldgSCTLv949bTh2ZZ58kv+/nc9635znPuZ/rPDnkco/rVoQQAkREREQEC1MHQERERGQumBgRERERvcLEiIiIiOgVJkZERERErzAxIiIiInqFiRERERHRK0yMiIiIiF5hYkRERET0ChMjIiIioleYGJFBPXv2DGPHjkVgYCAKFy4MRVEwderUTM8/e/YsWrRogQIFCsDV1RWdOnXCP//8k+G5X331FSpVqgRbW1uULl0a06ZNQ1JSkl7ivnPnDkaMGIHGjRvD1dUViqJgw4YNmZ5/4MAB1K1bFw4ODnB3d0fPnj1x//79dOclJSVh2rRpKFWqFGxtbVGpUiV89dVXeokZAL7//nssXrxYb+2Zo1mzZmHHjh06t3P48GEoioLDhw/r3JY5Wb58eZbfVSLKGhMjMqhHjx5h9erVSEhIQFBQUJbnXrlyBU2aNEFiYiK2bNmCdevW4dq1a2jYsCEePHigdu7MmTMxfPhwdOrUCfv27cOgQYMwa9YsDB48WC9x37hxA9999x1sbGzQtm3bLM89cuQI2rRpAw8PD/z8889YsmQJDhw4gObNmyMhIUHt3EGDBmH27NkYPHgw9u3bh44dO2L48OGYNWuWXuJmYkRMjIh0JIgMKDU1VaSmpgohhHjw4IEAIKZMmZLhuV26dBHu7u4iJiZGdezmzZvC2tpajB07VnXs4cOHws7OTvTv31/t/TNnzhSKoohLly6pHf/333/FsWPHMo1x69atIikpSe1YSkqK6r9DQ0MFALF+/foM31+rVi3h4+Oj1sYff/whAIjly5erjl28eFEoiiJmzZql9v5+/foJe3t78ejRo0xjzKl27dqJkiVL6tyOOXN0dBQ9evTQuZ1Dhw4JAOLQoUM6t2VOqlSpIho3bmzqMEwuOTlZvHz50tRhUC7EHiMyKEVRoChKtuclJydj165dePfdd+Hs7Kw6XrJkSTRt2hTbt29XHdu7dy9evnyJXr16qbXRq1cvCCHS9SbMmTMHgYGB2L9/f7rrTpw4EZ07d8a+ffvUjltY5OyPxr///ovQ0FB069YNVlZWquP16tVDhQoV1OLesWMHhBAZxv3ixQvs3bs3y2s9ePAA/fv3h7e3N2xtbVG4cGHUr18fBw4cAAA0adIEv/76K27duqW676/f+8TERMyYMUM1/Fi4cGH06tUrXW8cAGzevBl169aFo6MjChQogFatWuHcuXNq5/Ts2RMFChTApUuX0Lx5czg6OqJw4cIYMmQInj9/rnauEALLly9HjRo1YG9vj4IFC6Jz587phknPnTuH9u3bo0iRIrC1tYWXlxfatWuHO3fuAJDfp/j4eHz99deqz9ekSZMs7xsgeyNbt26tGuocMGAAnj17luG5ab19zs7OcHBwQP369fHbb79p9LNIs3fvXjRv3hwuLi5wcHBA5cqVMXv2bLVzTp8+jbfffhtubm6ws7ODn58ftmzZonbOhg0boCgKDh06hIEDB8Ld3R2FChVCp06dcPfuXdV5pUqVwqVLl3DkyBHV/SlVqlSW9yY1NRVfffWV6mfj6uqKt956Czt37lQ7Z968earvTpEiRdC9e3fVzyVNkyZN4Ovri9DQUDRs2BAODg4oU6YM5syZg9TUVNW9s7GxwaRJk9LFcuXKFSiKgqVLl6qORUdH45NPPkHx4sVhY2OjGjZPTk5WnXPz5k0oioJ58+ZhxowZKF26NGxtbXHo0CEAwM8//4xq1arB1tYWZcqUwZIlSzB16tR0fzfl9Huak8+Z5unTpxg9ejTKlCmjundt27bFlStXVOdo8meTjMC0eRnlJ1n1GF25ckUAEMHBweleGzNmjFAURbx48UIIIcT48eMFABEXF5fuXHd3d/HBBx+oHUtKShLvvfeesLW1FTt37lQdHzVqlFAURaxcuTLLuLPqMdq7d68AIH799dd0r3Xu3Fl4enqqnr///vuicOHC6c6Li4sTAMSECROyjKNVq1aicOHCYvXq1eLw4cNix44dYvLkyWLTpk1CCCEuXbok6tevL4oWLSpOnDihegghe8Bat24tHB0dxbRp00RISIhYu3atKFasmPDx8RHPnz9XXSet5613795i165dYtu2baJu3brC0dFRrTeuR48ewsbGRpQoUULMnDlT7N+/X0ydOlVY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 truncated
"text/plain": [
"Figure(PyObject <Figure size 640x480 with 1 Axes>)"
]
@@ -446,10 +446,10 @@
{
"data": {
"text/plain": [
"PyObject <matplotlib.legend.Legend object at 0x7fc6b5565810>"
"PyObject <matplotlib.legend.Legend object at 0x7ff4b23d1cd0>"
]
},
"execution_count": 18,
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
@@ -656,16 +656,16 @@
},
{
"cell_type": "code",
"execution_count": 23,
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1388, 9.925971497572407e-9)"
"(1869, 9.892793280828157e-9)"
]
},
"execution_count": 23,
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
@@ -687,12 +687,12 @@
},
{
"cell_type": "code",
"execution_count": 29,
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"Figure(PyObject <Figure size 640x480 with 1 Axes>)"
]
@@ -706,7 +706,7 @@
"(0.0, 2000.0)"
]
},
"execution_count": 29,
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
@@ -730,7 +730,7 @@
},
{
"cell_type": "code",
"execution_count": 30,
"execution_count": 14,
"metadata": {},
"outputs": [
{
@@ -749,7 +749,7 @@
"PyObject Text(0.5, 1.0, 'convergence of 2x2 steepest-descent + momentum')"
]
},
"execution_count": 30,
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
@@ -792,7 +792,7 @@
},
{
"cell_type": "code",
"execution_count": 14,
"execution_count": 15,
"metadata": {},
"outputs": [
{
@@ -801,7 +801,7 @@
"CG (generic function with 2 methods)"
]
},
"execution_count": 14,
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
@@ -828,16 +828,16 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(100001, 2.1898661935779876e-7)"
"(100001, 8.283307337600646e-6)"
]
},
"execution_count": 15,
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
@@ -856,12 +856,12 @@
},
{
"cell_type": "code",
"execution_count": 16,
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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smXLSmJioqHswYMHUrx4cYuAwFRqaqokJyfL8uXLxdHRUe7evWt4rVOnTmb10axcuVIAyM8//2xWfuDAAQEgCxYseOzniYjcvXtXXF1dpU+fPmblf/31lwBIN4Bq1qzZE+cpIpKSkiLJycnSunVr6dGjh6F84cKFAkB++eUXs+lfffXVDAOoyMhIcXJykpEjR5q998GDB1KyZEnp3bu3oWzAgAECQFavXm02bceOHaVy5cqG57du3bLYfk8yY8YMASDbtm177DSLFi1K97NnzZolAGTr1q2GMgASEBBgCA5ERKKjo8XBwUFmzpxpKBs3bpwUKVLEsC+LiJw6dUoAyGeffWYoq1KlitStW1eSk5PNPrtz584SGBgoqampImIMoPr37282nTX7w8yZM8XBwUEOHDhgNu2aNWsEgGzatMnq5czM9/31118XT09PuXLliln5nDlzBIBZIE2UHjbhUYGXkJCAXbt2oXfv3oamlvT88ccfaN26NcqWLWtWPnDgQCQkJFh0RO7atavZ81q1agEArly5ku06x8fH4+DBg+jevTtcXFwM5Z6enujSpYvF9EeOHEHXrl1RvHhxODo6wtnZGf3790dqairOnTuX4edt2LABRYsWRZcuXZCSkmK41alTByVLljR0jtbr9Wavp6amAgD279+PxMRE9O7d22y+Tz/99GPPQnz++efTLV+0aBHq1asHNzc3ODk5wdnZGTt27MDp06cN04SFhcHLy8tiG7z88ssZLuuWLVuQkpKC/v37my2Lm5sbmjdvbtERXKfTWazzWrVqZWs7//7776hUqRKee+65x07zxx9/wMPDA7169TIr15oG0zbFtWzZEl5eXobnAQEB8Pf3N6vn4MGD8fDhQ6xatcpQtmTJEri6uhrW3YULF3DmzBn07dsXAMzWUceOHREVFWXRVJ12W1qzP2zYsAE1atRAnTp1zD6rXbt20Ol0Ftsjo+XM7Pd9w4YNaNmyJUqVKmX2uR06dAAA7Nq167HvJQLYB4oKgXv37iE1NTXDjsR37txBYGCgRXmpUqUMr5sqXry42XNXV1cAqhNtdt27dw8igoCAAIvX0pZFRkaiadOm+Pfff/Hpp59iz549OHDgAL744otM1+fGjRu4f/8+XFxc4OzsbHaLjo7G7du3AQAzZswwe03rJK+tm8zUV5Peup43bx7eeOMNNGrUCD///DP279+PAwcOoH379mbLcefOnXTnW7JkyUwtKwA0aNDAYllXrVplWFaNu7s73NzczMpcXV3x6NGjDD/rcW7dupWp/bFkyZIW/bf8/f3h5OSU4f6o1dN0vVWvXh0NGjTAkiVLAACpqan4/vvv0a1bN/j6+gIwrp8JEyZYrJ8333wTACzWUdptac3+cOPGDRw7dszis7y8vCAiFp+V0XJm9vt+48YN/PbbbxafW7169XSXkSgtnoVHBZ6vry8cHR1x7dq1J05XvHhxREVFWZRfv34dAODn55ftumgH4rSdgNMeDIsVKwadTmc4mJlK21F6/fr1iI+Px9q1axEcHGwoDw8Pz3S9/Pz8ULx4cWzevDnd17V//K+99ho6d+5sKNeCRu2g9rj6ppeFSq9j9/fff48WLVpg4cKFZuUPHjwwe168eHH8888/6X5WRrTtuGbNGrP1lZdKlCiRqf3x77//hoiYraubN28iJSUly/vjoEGD8Oabb+L06dO4dOkSoqKiMGjQIMPr2nwnTpyInj17pjuPypUrmz1Puy2t2R/8/PxQpEgRLF68ON3PsnY5M/t99/PzQ61atfDBBx+k+7r2x4nocRhAUYFXpEgRNG/eHD/99BM++OCDx/4gt27dGuvWrcP169fNfjyXL18Od3d3PP3009muS0BAANzc3MzOdgLU2XamPDw8UL9+faxfvx5z5swxNOPFxcVZnHGkHby0YAZQZ8R9/fXXFp+fNiOh6dy5M3788UekpqaiUaNGj61/qVKl0j2wNGrUCK6urli1apXZQXf//v24cuVKpgcT1el0ZssBAMeOHcNff/1l1rTasmVLrF69Gr/++qtZM94PP/yQ4We0a9cOTk5OuHjx4mObEa1lbfaxQ4cOmDJlCv744w+0atUq3Wlat26N1atXY/369ejRo4ehfPny5YbXs+Kll17CuHHjsHTpUly6dAmlS5dG27ZtDa9XrlwZFStWxNGjR/Hhhx9m6TOs2R86d+6MDz/8EMWLF0e5cuWy9HmmMvt979y5MzZt2oTy5cujWLFi2f5cKnwYQFGhMG/ePDz77LNo1KgR3n33XVSoUAE3btzAr7/+ii+//BJeXl6YOnWqoV/ElClT4OvrixUrVmDjxo34+OOP4ePjk+166HQ6vPLKK1i8eDHKly+P2rVr459//kn3wD9jxgx06tQJ7dq1w+jRo5GamorZs2fD09MTd+/eNUzXpk0buLi44KWXXsLbb7+NR48eYeHChbh3757FPGvWrIm1a9di4cKFCA0NhYODA+rXr48XX3wRK1asQMeOHTF69Gg0bNgQzs7OuHbtGsLCwtCtWzezg3havr6+GDduHGbOnIlixYqhR48euHbtGqZPn47Line truncated
"image/png": "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 truncated
"text/plain": [
"Figure(PyObject <Figure size 640x480 with 1 Axes>)"
]
@@ -872,10 +872,10 @@
{
"data": {
"text/plain": [
"PyObject <matplotlib.legend.Legend object at 0x7fc6b32cae10>"
"PyObject <matplotlib.legend.Legend object at 0x7ff4b622f290>"
]
},
"execution_count": 16,
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
@@ -899,7 +899,7 @@
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 18,
"metadata": {},
"outputs": [
{
@@ -918,7 +918,7 @@
"PyObject Text(0.5, 1.0, 'convergence of 2x2 conjugate-gradient: 2 steps')"
]
},
"execution_count": 17,
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
@@ -938,123 +938,6 @@
"title(\"convergence of 2x2 conjugate-gradient: 2 steps\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Adam algorithm\n",
"\n",
"A popular algorithm for machine learning is [*Adam* (Kingma & Ba, 2015)](https://arxiv.org/pdf/1412.6980.pdf), which is a momentum-like algorithm with some additional twists that make it easier to apply to arbitrary functions (without knowing eigenvalues of the Hessian).\n",
"\n",
"* It has a \"momentum\" or \"memory\" term, where the gradient is estimated by a weighted average of the current mini-batch gradient and the previous gradient estimate.\n",
"* It also estimates the variance of the gradient components in the same way, and essentially uses this as rough diagonal estimate of the Hessian: it takes a \"crude Newton\"-like step where the gradient components are weighed inversely by the square roots of their variances.\n",
"\n",
"It's quite simple to implement directly from the description in the paper linked above. Let's try it out on our quadratic optimization problem:"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"adam (generic function with 2 methods)"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function adam(A, b, x=zero(b); tol=1e-8, maxiters=1000,\n",
" α = 0.001, ϵ = 1e-8, β₁ = 0.9, β₂ = 0.999) # hyper-parameters from the paper\n",
" bnorm = norm(b)\n",
" var, mom, r = zero(x), zero(x), b - A*x # pre-allocate\n",
" rnorm = Float64[norm(r)] # return the array of residual norms\n",
" for i = 1:maxiters\n",
" # Adam update\n",
" @. mom = β₁*mom - (1-β₁)*r\n",
" @. var = β₂*var + (1-β₂)*r^2\n",
" # m̂ = mom / (1 - β₁^i) # normalize by total weights\n",
" # v̂ = var / (1 - β₂^i) # normalize by total weights\n",
" # x = @. x - α * m̂ / (√v̂ + ϵ)\n",
" @. x -= α * (mom / $(1 - β₁^i)) / (√(var / $(1 - β₂^i)) + ϵ)\n",
" r .= b .- mul!(r, A, x) # b - Ax, in-place\n",
" push!(rnorm, norm(r))\n",
" rnorm[end] ≤ tol*bnorm && break # converged\n",
" end\n",
" return x, rnorm\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(100001, 0.004111429305032976)"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_adam, rnorm_adam = adam(A, b, maxiters=100000)\n",
"length(rnorm_adam), rnorm_adam[end]/norm(b)"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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 truncated
"text/plain": [
"Figure(PyObject <Figure size 640x480 with 1 Axes>)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"PyObject <matplotlib.legend.Legend object at 0x7fc6af71ad90>"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"semilogy(rnorm_fixed, \"b-\")\n",
"semilogy(rnorm_asd, \"r-\")\n",
"semilogy(rnorm_adam, \"g-\")\n",
"title(\"convergence of Adam\")\n",
"ylabel(\"residual norm\")\n",
"xlabel(\"iterations\")\n",
"legend([\"steepest descent\", \"+ momentum\", \"Adam\"])\n",
"#xlim(0, 2000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hmm, either Adam sucks for this problem or I have a bug?"
]
},
{
"cell_type": "code",
"execution_count": null,