{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# PHYSBO の基本\n", "\n", "## はじめに\n", "\n", "\n", "本チュートリアルでは例として、一次元の関数の最小値を求める例題を解きます。\n", "はじめに、PHYSBOをインポートします。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:04.642474Z", "start_time": "2021-03-05T04:45:04.225565Z" } }, "outputs": [], "source": [ "import physbo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 探索候補データの準備\n", "\n", "最初に関数を探索する空間を定義します。\n", "以下の例では、探索空間``X``を ``x_min = -2.0``から``x_max = 2.0``まで``window_num=10001``分割で刻んだグリッドで定義しています。\n", "なお、``X``は ``window_num`` x ``d`` のndarray形式にする必要があります(``d``は次元数、この場合は1次元)。そのため、reshapeを行って変形しています。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:04.654902Z", "start_time": "2021-03-05T04:45:04.645777Z" } }, "outputs": [], "source": [ "#In\n", "import numpy as np\n", "import scipy\n", "import physbo\n", "import itertools\n", "\n", "#In\n", "#Create candidate\n", "window_num=10001\n", "x_max = 2.0\n", "x_min = -2.0\n", "\n", "X = np.linspace(x_min,x_max,window_num).reshape(window_num, 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## simulatorクラスの定義\n", "\n", "目的関数を定義するためのsimulatorクラスをここで定義します。\n", "\n", "今回は$f(x) = 3 x^4 + 4 x ^3 + 1.0$ が最小となるxを探索するという問題設定にしています(答えは$x=-1.0$)。\n", "\n", "simulatorクラスでは、``__call__``関数を定義します(初期変数などがある場合は``__init__``を定義します)。\n", "actionは探索空間の中から取り出すグリッドのindex番号を示しており、複数の候補を一度に計算できるように一般的にndarrayの形式を取っています。\n", "今回は一つの候補のみを毎回計算するため、``action_idx=action[0]``として``X``から候補点を一つ選んでいます。\n", "**PHYSBOでは目的関数値が最大となる**ものを求める仕様になっているため、候補点でのf(x)の値に-1をかけたものを返しています。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:04.663622Z", "start_time": "2021-03-05T04:45:04.657375Z" } }, "outputs": [], "source": [ "# Declare the class for calling the simulator.\n", "class simulator:\n", "\n", " def __call__(self, action):\n", " action_idx = action[0]\n", " x = X[action_idx][0]\n", " fx = 3.0*x**4 + 4.0*x**3 + 1.0\n", " fx_list.append(fx)\n", " x_list.append(X[action_idx][0])\n", "\n", " print (\"*********************\")\n", " print (\"Present optimum interactions\")\n", "\n", " print (\"x_opt=\", x_list[np.argmin(np.array(fx_list))])\n", "\n", " return -fx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 最適化の実行" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### policy のセット\n", "\n", "まず、最適化の `policy` をセットします。 \n", "\n", "`test_X` に探索候補の行列 (`numpy.array`) を指定します。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:04.675725Z", "start_time": "2021-03-05T04:45:04.669564Z" } }, "outputs": [], "source": [ "# policy のセット \n", "policy = physbo.search.discrete.policy(test_X=X)\n", "\n", "# シード値のセット \n", "policy.set_seed(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`policy` をセットした段階では、まだ最適化は行われません。\n", "`policy` に対して以下のメソッドを実行することで、最適化を行います。\n", "\n", "- `random_search` \n", "- `bayes_search`\n", "\n", "これらのメソッドに先ほど定義した `simulator` と探索ステップ数を指定すると、探索ステップ数だけ以下のループが回ります。\n", "\n", "i) パラメータ候補の中から次に実行するパラメータを選択\n", "\n", "ii) 選択されたパラメータで `simulator` を実行\n", "\n", "i) で返されるパラメータはデフォルトでは1つですが、1ステップで複数のパラメータを返すことも可能です。\n", "詳しくは「複数候補を一度に探索する」の項目を参照してください。 \n", "\n", "また、上記のループを PHYSBO の中で回すのではなく、i) と ii) を別個に外部から制御することも可能です。つまり、PHYSBO から次に実行するパラメータを提案し、その目的関数値をPHYSBOの外部で何らかの形で評価し(例えば、数値計算ではなく、実験による評価など)、それをPHYSBOの外部で何らかの形で提案し、評価値をPHYSBOに登録する、という手順が可能です。詳しくは、チュートリアルの「インタラクティブに実行する」の項目を参照してください。\n", "\n", "### ランダムサーチ\n", "\n", "まず初めに、ランダムサーチを行ってみましょう。\n", "\n", "ベイズ最適化の実行には、目的関数値が2つ以上求まっている必要があるため(初期に必要なデータ数は、最適化したい問題、パラメータの次元dに依存して変わります)、まずランダムサーチを実行します。 \n", "\n", "**引数** \n", "\n", "- `max_num_probes`: 探索ステップ数 \n", "- `simulator`: 目的関数のシミュレータ (simulator クラスのオブジェクト) " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:04.705741Z", "start_time": "2021-03-05T04:45:04.677024Z" }, "scrolled": true }, "outputs": [], "source": [ "fx_list=[]\n", "x_list = []\n", "res = policy.random_search(max_num_probes=20, simulator=simulator())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "実行すると、各ステップの目的関数値とその action ID、現在までのベスト値とその action ID に関する情報が以下のように出力されます。\n", "\n", "```\n", "0020-th step: f(x) = -19.075990 (action=8288)\n", " current best f(x) = -0.150313 (best action=2949) \n", "```\n", "\n", "\n", "### ベイズ最適化\n", "\n", "続いて、ベイズ最適化を以下のように実行します。\n", "\n", "**引数** \n", "\n", "- `max_num_probes`: 探索ステップ数 \n", "- `simulator`: 目的関数のシミュレータ (simulator クラスのオブジェクト) \n", "- `score`: 獲得関数(acquisition function) のタイプ。以下のいずれかを指定します。\n", " - TS (Thompson Sampling) \n", " - EI (Expected Improvement) \n", " - PI (Probability of Improvement) \n", "- `interval`: \n", "指定したインターバルごとに、ハイパーパラメータを学習します。 \n", "負の値を指定すると、ハイパーパラメータの学習は行われません。 \n", "0 を指定すると、ハイパーパラメータの学習は最初のステップでのみ行われます。 \n", "- `num_rand_basis`: 基底関数の数。0を指定すると、Bayesian linear modelを利用しない通常のガウス過程が使用されます。 " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:07.142492Z", "start_time": "2021-03-05T04:45:04.707345Z" }, "code_folding": [], "scrolled": true }, "outputs": [], "source": [ "res = policy.bayes_search(max_num_probes=50, simulator=simulator(), score='TS', \n", " interval=0, num_rand_basis=500)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 結果の確認\n", "\n", "探索結果 res は history クラスのオブジェクト (`physbo.search.discrete.results.history`) として返されます。 \n", "以下より探索結果を参照します。\n", "\n", "- `res.fx` : simulator (目的関数) の評価値の履歴。\n", "- `res.chosen_actions`: simulator を評価したときの action ID (パラメータ) の履歴。 \n", "- `fbest, best_action= res.export_all_sequence_best_fx()`: simulator を評価した全タイミングにおけるベスト値とその action ID (パラメータ)の履歴。\n", "- `res.total_num_search`: simulator のトータル評価数。\n", "\n", "各ステップでの目的関数値と、ベスト値の推移をプロットしてみましょう。 \n", "`res.fx`, `best_fx` はそれぞれ `res.total_num_search` までの範囲を指定します。" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:07.561032Z", "start_time": "2021-03-05T04:45:07.144324Z" } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:07.721097Z", "start_time": "2021-03-05T04:45:07.563374Z" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(res.fx[0:res.total_num_search])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:07.875556Z", "start_time": "2021-03-05T04:45:07.722679Z" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "best_fx, best_action = res.export_all_sequence_best_fx()\n", "plt.plot(best_fx)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 結果のシリアライズ\n", "\n", "探索結果は `save` メソッドにより外部ファイルに保存できます。" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:07.887135Z", "start_time": "2021-03-05T04:45:07.878666Z" } }, "outputs": [], "source": [ "res.save('search_result.npz')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:07.890553Z", "start_time": "2021-03-05T04:45:07.888487Z" } }, "outputs": [], "source": [ "del res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "保存した結果ファイルは以下のようにロードすることができます。" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:07.920747Z", "start_time": "2021-03-05T04:45:07.900980Z" } }, "outputs": [], "source": [ "res = physbo.search.discrete.results.history()\n", "res.load('search_result.npz')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "最後に、一番よいスコアを持つ候補は以下のようにして表示することができます。正しい解 x=-1に行き着いていることがわかります。" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:07.929301Z", "start_time": "2021-03-05T04:45:07.922695Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-1.002]\n" ] } ], "source": [ "print(X[int(best_action[-1])])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 回帰\n", "\n", "`get_post_fmean`, `get_post_fcov` メソッドでガウス過程(事後分布)の期待値と分散を計算可能です。" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:08.490337Z", "start_time": "2021-03-05T04:45:07.930904Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mean = policy.get_post_fmean(X)\n", "var = policy.get_post_fcov(X)\n", "std = np.sqrt(var)\n", "\n", "x = X[:,0]\n", "fig, ax = plt.subplots()\n", "ax.plot(x, mean)\n", "ax.fill_between(x, (mean-std), (mean+std), color='b', alpha=.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 獲得関数\n", "\n", "`get_score` メソッドで獲得関数を計算可能です。" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:08.992517Z", "start_time": "2021-03-05T04:45:08.491722Z" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "score = policy.get_score(mode=\"EI\", xs=X)\n", "plt.plot(score)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 並列化\n", "\n", "PHYSBO は全候補点に対する獲得関数の計算をMPI を用いて並列化出来ます。\n", "MPI 並列には `mpi4py` を用います。\n", "\n", "並列化を有効化するには、 `policy` のコンストラクタのキーワード引数 `comm` に MPI コミュニケータ、たとえば `MPI.COMM_WORLD` を渡してください。" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2021-03-05T04:45:08.996775Z", "start_time": "2021-03-05T04:45:08.993794Z" } }, "outputs": [], "source": [ "# from mpi4py import MPI\n", "# policy = physbo.search.discrete.policy(X=test_X, comm=MPI.COMM_WORLD)" ] } ], "metadata": { "anaconda-cloud": {}, "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.9.1" } }, "nbformat": 4, "nbformat_minor": 2 }