{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "这段程序帮我们理解什么是期望更新。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-02-01T13:53:04.858054Z", "start_time": "2020-02-01T13:53:02.439031Z" } }, "outputs": [], "source": [ "#######################################################################\n", "# Copyright (C) #\n", "# 2018 Shangtong Zhang(zhangshangtong.cpp@gmail.com) #\n", "# Permission given to modify the code as long as you keep this #\n", "# declaration at the top #\n", "#######################################################################\n", "\n", "import numpy as np\n", "import matplotlib\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from tqdm import tqdm\n", "\n", "# for figure 8.7, run a simulation of 2 * @b steps\n", "def b_steps(b):\n", " # set the value of the next b states\n", " # it is not clear how to set this\n", " distribution = np.random.randn(b)\n", "\n", " # true value of the current state\n", " true_v = np.mean(distribution)\n", "\n", " samples = []\n", " errors = []\n", "\n", " # sample 2b steps\n", " for t in range(2 * b):\n", " v = np.random.choice(distribution)\n", " samples.append(v)\n", " errors.append(np.abs(np.mean(samples) - true_v))\n", "\n", " return errors" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2020-02-01T13:53:41.152569Z", "start_time": "2020-02-01T13:53:25.756005Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|████████████████| 100/100 [00:00<00:00, 4359.48it/s]\n", "100%|████████████████| 100/100 [00:00<00:00, 3458.39it/s]\n", "100%|█████████████████| 100/100 [00:00<00:00, 257.87it/s]\n", "100%|██████████████████| 100/100 [00:14<00:00, 6.98it/s]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "runs = 100\n", "branch = [2, 10, 100, 1000]\n", "for b in branch:\n", " errors = np.zeros((runs, 2 * b))\n", " for r in tqdm(np.arange(runs)):\n", " errors[r] = b_steps(b)\n", " errors = errors.mean(axis=0)\n", " x_axis = (np.arange(len(errors)) + 1) / float(b)\n", " \"\"\"\n", " 为什么要 np.zeros((runs, 2 * b)) ?\n", " 为了将不同的 b 的数画在 0, 1b, 2b 的坐标上\n", " x_axis 将其横坐标都归一化到了 (0,2b) 的范围\n", " \"\"\"\n", " plt.plot(x_axis, errors, label='b = %d' % (b))\n", "\n", "plt.xlabel('number of computations')\n", "plt.xticks([0, 1.0, 2.0], ['0', 'b', '2b'])\n", "plt.ylabel('RMS error')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 对于期望更新来讲,在进行了 b 次运算可以将误差降为 0 ;\n", "- 但是如果 b 很大,使用采样更新,无需 b 次运算,就可让误差贴近 0 。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.0" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }