ベイズ最適化において一度に複数の実験をするときに候補を選択するシンプルな方法

ベイズ最適化において、複数の実験候補を選択するお話です。ベイズ最適化についてはこちらをご覧ください。

ベイズ最適化(Bayesian Optimization, BO)~実験計画法で使ったり、ハイパーパラメータを最適化したり~
ガウス過程による回帰をうまく使って、実験計画法における新しい実験候補を探索したり、回帰モデルやクラス分類モデルのハイパーパラメータ (学習では求まらないため事前に決めるべきパラメータ) を決定する方法が、ベイズ最適化 (Bayesian O...
ベイズ最適化で期待できること
材料の活性・物性・特性は、化学構造だけで変化するものではなく、材料の作り方、つまり実験条件や製造条件によっても変化します。例えば高分子設計において、単量体 (モノマー) の化学構造だけでなく、そのモノマーの種類・組成比や、反応温度や反応時間...

 

ベイズ最適化では、以下の 1. – 4. を繰り返すことで、物性や活性などの目的変数 Y が向上したり目標値を達成したりできる、実験条件などの説明変数 X を探索します。

 

  1. データセットを用いてガウス過程回帰によりモデル Y=f(X) を構築する
  2. 獲得関数の値が大きい X の値の候補を選択する
  3. 2. で選択された候補で実際に実験して、Y の値を得る
  4. X と Y の値をデータセットに追加する

 

選択する際の多数の候補群は、たとえばこちらの方法で生成できます。

[Pythonコードあり] 特徴量ごとや特徴量間に制限があるときの、モデルの逆解析用のサンプル生成
回帰モデルやクラス分類モデルを構築した後の、モデルの逆解析の話です。上の 既存のサンプルの分布に従うように、モデルの逆解析用のサンプルをたくさん生成する方法 では、既存のサンプルのデータ分布を求めて、その分布に従うようにして新たなサンプルを...

 

ちなみにベイズ最適化は Y が複数あっても OK です。

目的変数が複数のときに実験計画法のベイズ最適化(Bayesian Optimization, BO)が対応!
実験計画法やベイズ最適化 (Bayesian Optimization, BO) についてはこちらに書いたとおりです。Python コードもあります。今回は実験計画法の BO について目的変数が複数のときに対応しましたので報告します。プログ...

 

上の 3. の実験において、一度に複数回の実験ができれば、4. において複数のサンプルをデータセットに追加できます。そこで、2. において、複数の X の値の候補を選択することを考えます。

すぐに思いつくのは、獲得関数の値の大きい順に X の値の候補を並び替え、上から (大きい順に) 複数個、選択する方法です。ただ、X の値が似ていると、獲得関数の値も似たものになり、その逆 (獲得関数の値が似ていると、X の値も似ている) は必ずしもいえませんが、獲得関数の値が似ていると、X の値も似ている可能性はあります。複数個選択したとき、どれも似たような実験候補になってしまうことがあるのですね。同じような実験では、実験結果 (Y の値) も似たようになる可能性が高く、面白みがありません。有望そうな実験候補の中で、似ていないものを選びたいですね。

複数の候補を選択する手法はいろいろありますが、その中でもシンプルな方法を紹介します。

Y の予測値を用いてデータベースにサンプルを追加して、2, 3, 4, … 個目の候補を選択するとよいです。

 

 

類似した候補が選ばれにくくなります。具体的な手順は以下のとおりです。

 

  1. 獲得関数の値が最大となる X の値の候補を 1 つ選択する
  2. 選択された候補の Y の予測値を実測値とみなして、データベースにサンプルを追加する
  3. 再度モデルを構築し、 1. に戻る

 

選びたい実験候補の数だけ、1. – 3. を繰り返します。基本的に、既存のサンプルに X の値が似ているものがあるときは、予測値の分散が小さくなりますので、選ばれにくくなることから、異なる X の値が選ばれやすくなります。

なお、選択された複数の候補の実験が終了したら (真の Y の実測値が得られたら)、Y の予測値のサンプルを削除します。

 

 

このようにすることで、一度に複数回の実験ができる状況でも、効率的にベイズ最適化を行えます。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました