学習の詳細設定
PHYSBOではガウス過程のハイパーパラメータ学習 ("learning") を行いますが、学習手法自体にも例えばadamの学習率など、ハイパーパラメータが存在します。
これらのハイパーパラメータを変更する場合には physbo.misc.SetConfig を使用します。
なお、基本的には既定値から変更する必要はありません。
SetConfig の使い方
まずは config = physbo.misc.SetConfig() としてインスタンスを作成します。すべてのパラメータに既定値が設定されているので、変更したいパラメータを直接変更します。
作成した config を、 Policy のコンストラクタの config 引数に渡します。
例えばadamの学習率を0.01に変更する場合は、以下のようになります。
config = physbo.misc.SetConfig()
config.learning.alpha = 0.01
policy = physbo.search.discrete.Policy(test_X, config=config)
パラメータをINIファイルに保存し、 config.load("config.ini") で読み込むこともできます。
例えば以下のようなINIファイルを作成します。
[learning.adam]
alpha = 0.01
設定可能パラメータ
INIファイルはセクションとキーの階層構造になっています。
これに対応して、 SetConfig も階層構造を持っています。
例えば [learning.adam] セクションの alpha キーは、 config.learning.alpha メンバ変数に対応します(メンバ変数の方は learning.adam ではなく learning であることに注意)。
セクションやパラメータについて詳しくは以下のとおりです。
[learning] -- 学習の共通設定
ガウス過程回帰モデルの学習に関する共通設定です。
現在、学習手法 method は adam, bfgs, batch の3種類をサポートしています。
adamはオンライン学習で、bfgsとbatchはバッチ学習です。
キー |
型 |
既定値 |
説明 |
|---|---|---|---|
|
str |
adam |
学習手法。 |
|
bool |
True |
学習時の表示の有無。 |
|
int |
10 |
表示間隔(何反復ごとに表示するか) |
|
int |
20 |
初期ハイパーパラメータ探索の反復数 |
[learning.online] -- オンライン学習の共通設定
オンライン学習の共通設定です。
method=adam のときに使われます。
キー |
型 |
既定値 |
説明 |
|---|---|---|---|
|
int |
500 |
最大エポック数 |
|
int |
50 |
初期ハイパーパラメータ探索の最大エポック数 |
|
int |
64 |
バッチサイズ |
|
int |
5000 |
評価用サンプル数 |
[learning.adam] -- adam 学習
adamの設定です。
method=adam のときに使われます。
キー |
型 |
既定値 |
説明 |
|---|---|---|---|
|
float |
0.001 |
学習率 |
|
float |
0.9 |
一次モーメントの減衰率 |
|
float |
0.999 |
二次モーメントの減衰率 |
|
float |
1e-6 |
数値計算を安定化させるための微小量 |
[learning.batch] -- batch / BFGS 学習
bfgsとbatchの設定です。
method=bfgs または method=batch のときに使われます。
キー |
型 |
既定値 |
説明 |
|---|---|---|---|
|
int |
200 |
最大反復数 |
|
int |
20 |
初期ハイパーパラメータ探索の最大反復数 |
|
int |
5000 |
バッチサイズ |
[search] -- ベイズ最適化でつかうパラメータ
キー |
型 |
既定値 |
説明 |
|---|---|---|---|
|
int |
20 |
|
|
float |
1.0 |
Thompson Samplingのハイパーパラメータ。 サンプリング時に事後分布の標準偏差をリスケールする係数 |