分子設計や材料設計やプロセス設計において、分子や合成条件や実験条件やプロセス条件などの説明変数 x と物性や活性などの目的変数 y との間でガウス過程回帰 (Gaussian Process Regression, GPR) モデルを構築し、
GPR モデルの予測値や予測値の分散を用いて獲得関数を計算し、獲得関数の値が大きくなるような分子や材料の合成方法やプロセスを設計します。設計された分子や合成方法やプロセスで実際に合成実験をして、その結果をふまえて GPR モデルを再構築したり、次の分子や合成方法やプロセスを設計したりします。ベイズ最適化 (Bayesian Optimization, BO) です。
一方で、特徴量選択・変数選択のときのように、モデルの評価指標が高くなる特徴量セットを選択するときは遺伝的アルゴリズム (Genetic Algorithm, GA) などの組合せ最適化問題のアルゴリズムが使用されます。GA では、特徴量の選択の有無が個体の染色体となり、モデルの評価指標 (クロスバリデーション後の r2 など) が適合度となります。
BO も GA も、ある対象を最適化するためのアルゴリズムです。上の最初の分子設計・材料設計・プロセス設計で GA を使用できますし、特徴量選択において BO を使用できます。GA の個体の染色体を、分子や合成方法やプロセスにして、適合度を材料の物性や活性とすれば、物性や活性を最大化もしくは最小化するような解、すなわち化学構造や材料の合成方法やプロセスを提案できます。また特徴量選択において、特徴量を使用するか否か (0 か 1) を x としてモデルの評価指標 (クロスバリデーション後の r2 など) を y として GPR モデルを構築することで、BO によりモデルの評価指標が高くなるように特徴量選択をすることもできます。BO と GA のどちらも使われる例としては、モデルのハイパーパラメータを決めるのに、ベイズ最適化を使う人もいれば遺伝的アルゴリズムを使用する人もいるでしょう。
では、BO と GA の違いは何でしょうか?
細かいアルゴリズムの違いは色々ありますが、本質的な違いとしては、BO では x と y の間の関係を考慮している一方で、GA ではそれを考慮していないことです。逆にいえば、BO は x と y の間の GPR モデルがないと使えませんが、遺伝的アルゴリズムではモデルがなくても使用できます。BO ではモデルを使用するため、それが有効なモデルであれば、一回一回 (GA での世代ごとに)、GA と比べて厳密に個別の問題 (材料ごと、プロセスごと) に特化して次の候補を選択できます。一方で、モデルがなかったり、有効なモデルが得られなかったりすると、何もできません。一方 GA は、モデルを使用しないためモデルがなくても使えます。しかし、世代ごとの選択は、生物の進化の過程を模倣するという汎用的な形になっており、材料ごと、プロセスごとの個別の問題については考慮されていません。ただ GA では回数を繰り返すことで、最適な解が得られるような仕組みがあります。
x と y の関係を考慮することが重要であり、あまり繰り返し回数 (GA での世代数) が取れない場合は、BO が有効でしょう。特に検証に実験が必要であったり、シミュレーションに多大な時間がかかったりする場合は、GA で何十世代も回せないため、x と y の間のモデルを作り込み、BO をするとよいです。一方で、シミュレーション等の計算があまりかからない場合など、繰り返し回数 (GA での世代数) が取れる場合は、GA が有効でしょう。たくさん計算を回して、最適解を探しましょう。
以上のような、BO と GA の特徴や違いを考えながら、両者を使い分けるとよいと思います。もちろん BO と GA を組み合わせて使用することもできます。例えば、GPR モデルを構築したあとに獲得関数の値が大きくなるような分子・合成条件・プロセスを GA で提案することもあります。これは BO と GA の両者の特徴をうまく考慮して活用した事例といえるでしょう。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。