分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。
x の選択、サンプルの生成、分子構造の生成、ハイパーパラメータの最適化、モデルの逆解析などに、遺伝的アルゴリズムなどのメタヒューリスティクスが用いられます。
![](https://datachemeng.com/wp-content/uploads/hito_jinrui_shinka.png)
![](https://datachemeng.com/wp-content/uploads/SnapCrab_NoName_2018-9-15_15-54-28_No-00.png)
![](https://datachemeng.com/wp-content/uploads/camera_lens_set-160x90.png)
![](https://datachemeng.com/wp-content/uploads/アートボード-135.jpg)
![](https://datachemeng.com/wp-content/uploads/zaiko_kakaeru-160x90.png)
![](https://datachemeng.com/wp-content/uploads/20190616_172748.png)
![](https://datachemeng.com/wp-content/uploads/アートボード-141.jpg)
とても便利な方法で、私もよく活用していますが、使い方や出てきた結果の解釈の仕方を間違うと、誤った結論を導いてしまう恐れがありますので、ここでは遺伝的アルゴリズムなどのメタヒューリスティクスの特徴や使用する際の注意点について説明します。
結果が収束しているか確認する
例えば遺伝的アルゴリズムでは、基本的に世代を重ねるごとに適合度が上がっていき、いずれ収束します。世代数が十分でないと収束しないまま終了してしまう、すなわち、まだ適合度が向上する余地があるにもかかわらず、中途半端な状態で終了してしまいます。計算が終了したら、結果が収束しているか確認しましょう。
計算するごとに結果が変わる
ちゃんと収束していても、改めて、初期値や乱数のシードが変わった後に計算すると、収束した結果が変わることがあります。場合によっては、全く同じ結果が出ることがほとんどないこともあります。これはメタヒューリスティクスを活用した最適化の特徴として仕方がありません。
例えば、特徴量選択・変数選択の時に、ある x と相関の高い x が代わりに選ばれてしまったり、目的関数を計算する際のクロスバリデーションで評価する際の分割の仕方で結果が変わったり、初期値によって収束する結果が変わったりします。
目的関数を最大化、もしくは最小化しているに過ぎない
遺伝的アルゴリズムなどのメタヒューリスティクスでは、目的関数を向上させることにおいて非常に優秀です。ただし、優秀だからこそ、本来の解析の目的と、目的関数を最大化する方向とがズレていると、間違った方向に最適化されてしまいます。例えば、x の選択をする際に、回帰分析におけるクロスバリデーション後の r2 乗を目的関数とすると、他の方法と比較して、クロスバリエーション後の r2 乗の値は大きくなることが多いです。ただし、回帰分析の本来の目的は外部データに対する予測性能を上げることであり、クロスバリデーション後の r2 が高いからと言って、その外部データに対する予測性能が高いとは限りません。もちろん、近いところにはあると思いますが、クロスバリデーション後の r2 乗を上げれば上げるほど、外部データに対する予測精度が上がるわけではなく、クロスバリデーションの結果だけが良くなるといった可能性もあります。
![](https://datachemeng.com/wp-content/uploads/アートボード-146-1.jpg)
目的関数を適切に設定することはもちろんのこと、目的関数と本来の目的とが完全に一致しているわけではない時には、繰り返し計算をする中で、上で一つ前に述べたように結果が変わりますが、その中で目的関数が最大のものを選択するのではなく、複数の結果を一つ一つ眺めて全体で議論する方が良いでしょう。
以上です。これらの特徴や注意点を踏まえて、是非メタヒューリスティクスを活用していただければと思います。
以上です。
質問やコメントなどありましたら、X, facebook, メールなどでご連絡いただけるとうれしいです。