分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。
モデリングや予測、設計において最適化をする際、様々なアルゴリズムを活用できます。ここでは大きく分けて、強化学習、ベイズ最適化、メタヒューリスティックな最適化アルゴリズム (遺伝的アルゴリズムなど、とりあえず遺伝的アルゴリズムで進めます) を対象にします。何かを最適化したい時に、これらのどれを使えば良いのか、方針を確認したいと思います。
まず、強化学習は結果だけでなくそこに至る過程を最適化したい時に使用すると良いでしょう。例えば、特徴量選択・変数選択で遺伝的アルゴリズムを使用することがありますが、
最終的な特徴量セットが得られれば十分であり、その途中の選択される過程については特に必要ありません。そのため、強化学習ではなく、遺伝的アルゴリズムを使用します。
一方で、囲碁や将棋のように、次の一手だけでなく一手一手の過程を最適化したい場合には、強化学習が有効です。例えば、有機化合物の多段階の反応をプロセスと捉えれば、多段階反応を設計するため、強化学習が有効かもしれません。また、化学反応ではありませんが、原子を一つずつ増やす形で化学構造を生成するタイプの生成器では、強化学習で最適化可能です。
ベイズ最適化と遺伝的アルゴリズムの大きな違いは、途中でモデルを構築することにあります。そのモデルを使って、最適化する目的関数を計算するわけですが、対象の問題の中にあるパラメータ間に何らかの相関関係があり、それが目的関数に密接に関わっている時にはベイズ最適化を使用すると良いでしょう。ただし、最適化する途中、繰り返し計算の中で毎回モデル構築を行うため、その分計算時間はかかります。例えば材料設計等における実験条件やシミュレーション条件の最適化でベイズ最適化が用いられるのは、材料の特徴量Xと材料の特性や活性との間に相関関係があるためであり、また分子シミュレーションや実験の時間がかかるため、モデリングの時間が気にならない事が理由に挙げられます。
パラメータ間に相関関係がなさそうな時や、相関関係があっても目的関数とは関係なさそうな時には、よりスピーディーに計算を進めることができる遺伝的アルゴリズムが有効でしょう。例えば、変数選択においてクロスバリデーション後の r2 を目的関数にした時、変数の組み合わせと r2 の間に相関があると考えられるならばベイズ最適化が有効な手段になりますし、そうでないならば遺伝的アルゴリズムが有効になります。
以上のように、最適化する工程が重要かどうか、最適化する対象の中におけるパラメータ間に相関関係があるかどうかによって、強化学習、ベイズ最適化、遺伝的アルゴリズムを選択すると良いでしょう。
以上です。
質問やコメントなどありましたら、X, facebook, メールなどでご連絡いただけるとうれしいです。