データ化学工学研究室物語
第I部 研究室配属前夜のデータ化学工学
研究室配属前の学部三年生が、AI・機械学習を化学・化学工学の研究に使う考え方を学ぶ。
第10章 欲しい性質から考える
新人トレーニングの九週目に与えられた課題は、物性を予測する向きを、反対側から眺めることだった。
virtual_polymer_candidates.csv を共有します。
各候補について、二酸化炭素透過係数と二酸化炭素・窒素選択性を予測してください。
各予測モデルの AD 内か AD 外かも判定してください。
目標を満たす候補の中で、予測値は特に良いが AD 外の候補と、予測値は少し低いが AD 内の候補を比較してください。
次に検討する候補を、理由とともに提案してください。
第9章の報告会が終わった日の夕方、先輩から slack に届いた課題を、遥は研究室の席でもう一度読んだ。
この候補の性質は何か。
欲しい性質をもつ候補はどれか。
第7章から第9章までは、与えられた高分子膜の構造記述子と製膜温度をモデルへ入力し、その候補がもつと考えられる物性を予測してきた。
今回は、先に欲しい物性を決め、多数の候補の中から、その目標を満たしそうなものを探す。
予測に使うモデルは同じでも、問いの向きが違っていた。
遥は virtual_polymer_candidates.csv を開いた。
candidate_0001。
candidate_0002。
candidate_0003。
縦には、5,000 個の仮想的な高分子候補が並んでいた。
横には、繰り返し単位の SMILES、121 個の構造記述子、製膜温度がある。二酸化炭素透過係数と選択性の実測値はない。まだ実験されていない候補だからだった。
同じ slack のスレッドに、今回の練習で用いる目標値も示されていた。
二酸化炭素透過係数:1,000 Barrer 以上。
二酸化炭素・窒素選択性:25 以上。
ただし、この値は、あらゆる用途で高性能な膜を決める普遍的な基準ではない。今回の仮想的な設計課題で、候補を比較するために置かれた目標だった。
実際の用途では、分離する混合気体、温度、圧力、必要な処理量、膜の耐久性、製造コストなどによって、望ましい性能は変わる。
遥は、目標値をコードの最初に書いた。
target_co2_permeability = 1000
target_co2_n2_selectivity = 25
数値を後から変えて、都合よく候補を増やさないようにするためだった。
もちろん、目標値を変えた場合の候補数を調べることには意味がある。ただし、その場合は、最初に決めた目標と、追加で行った感度分析を区別して報告する必要がある。
遥は、まず二酸化炭素透過係数のモデルを準備した。
第8章で行った構造グループ分割とダブルクロスバリデーションの手順を使い、近傍数を選び、最終的には利用できる実測データすべてでモデルを構築する。
選択性についても、同じ考え方で別の回帰モデルを構築した。
ただし、選択性が欠損していたサンプルは、そのモデルの構築には使えない。二つのモデルでは、トレーニングサンプルの集合が少し異なっていた。
そのため、二酸化炭素透過係数モデルでは AD 内でも、選択性モデルでは AD 外になる候補があり得る。
モデルが直接予測する値は、これまでと同じように対数へ変換された物性だった。遥は、候補を比較する表では、予測値を元の単位へ戻した。
estimated_log_p = permeability_model.predict(autoscaled_candidates)
estimated_co2_permeability = 10 ** estimated_log_p
選択性についても同様に、対数値の推定後に元の値へ戻す。
5,000 個の候補すべてについて、二つの推定値が計算された。
遥は、最初に予測値の大きい順に表を並べた。
一番上に現れたのは candidate_0317 だった。
二酸化炭素透過係数の予測値:4,800 Barrer。
二酸化炭素・窒素選択性の予測値:38.7。
二つとも目標を大きく上回っている。
第4章で見た透過性と選択性のトレードオフを考えると、魅力的な組み合わせだった。
遥は一瞬、次に検討する候補はこれで決まりだと思った。
しかし、表の右側には、AD の判定があった。
透過係数モデル:AD 外。
選択性モデル:AD 外。
第9章で計算した5近傍平均距離は、どちらのモデルでもしきい値を大きく超えていた。
モデルは数字を返した。けれど、同じ程度の誤差で予測できると期待する根拠は弱い。
遥は、目標を満たす候補だけを抽出するコードを書いた。
meets_target = (
(candidate_results[“estimated_co2_permeability”] >= target_co2_permeability)
& (candidate_results[“estimated_co2_n2_selectivity”] >= target_co2_n2_selectivity)
)
数値上、二つの目標をともに満たした候補は114個あった。
そのうち、二つのモデルでともに AD 内だった候補は18個。
片方だけが AD 外だった候補は29個。
両方とも AD 外だった候補は67個だった。
予測値が特に良い候補の多くは、現在のトレーニングデータから離れた場所にあった。
それは、新しい材料を探したいという目的には魅力的に見える。
一方で、遠い候補ほど予測の根拠は弱くなる。
遥は、二酸化炭素透過係数の予測値を横軸、選択性の予測値を縦軸とした散布図を作った。
目標を満たす右上の領域を薄い枠で囲み、二つのモデルで AD 内の候補、片方だけ AD 外の候補、両方 AD 外の候補を分けて表示する。
右上の目立つ場所には、AD 外の点が多かった。
ただし、AD 内の18個にも、目標をわずかに超える候補だけでなく、ある程度余裕をもって目標を満たす候補があった。
その一つが candidate_0731 だった。
二酸化炭素透過係数の予測値:1,520 Barrer。
二酸化炭素・窒素選択性の予測値:27.8。
透過係数モデル:AD 内。
選択性モデル:AD 内。
candidate_0317 ほど高い予測値ではない。
けれど、今回設定した二つの目標は満たしている。
さらに candidate_1842 は、その中間のような候補だった。
二酸化炭素透過係数の予測値:2,300 Barrer。
二酸化炭素・窒素選択性の予測値:31.2。
透過係数モデル:AD 内。
選択性モデル:AD 外。
どれが最も良い候補なのだろう。
透過係数と選択性という二つの値があるため、単純に一列を大きい順へ並べるだけでは決まらない。
遥は対話型 AI に尋ねた。
二つの目的変数を同時に大きくしたいとき、複数の候補を一つの順位に並べる方法と、その注意点を説明してください。
回答には、標準化した二つの予測値を重み付きで足し合わせる方法、目標値からの距離を使う方法、Pareto 最適解を求める方法などが示された。
遥は、まず重み付き和を試した。
weight_permeability = 0.5
weight_selectivity = 0.5
二つの予測値は数字の範囲が異なるため、そのまま足すと透過係数の影響が大きくなる。そこで、それぞれを同じ尺度に変換してから足し合わせた。
重みを0.5ずつにすると、ある候補が最上位になった。
透過係数を重視して0.8と0.2にすると、別の候補が最上位になった。
選択性を重視して0.2と0.8にすると、また別の候補が選ばれた。
モデルの予測値は変わっていない。
変わったのは、人が何を重視したかだった。
遥はノートに書いた。
順位は、モデルだけが決めるものではない。
目的変数の尺度、重み、目標値を人が決める。
それに、今回の目標は「できるだけ大きくする」ではなく、「透過係数1,000 Barrer以上、選択性25以上を満たす」だった。
目標を十分に超えた候補が、必ずしも用途としてさらに優れているとは限らない。
より高い透過係数を得る代わりに、機械的強度、長期安定性、加工性、費用など、まだモデルに入っていない性能を失う可能性もある。
予測していない性質について、モデルは何も保証しない。
次に遥は、Pareto 最適という考え方を調べた。
ある候補より、透過係数も選択性も同じか高く、少なくとも一方が明らかに高い別の候補があるなら、最初の候補は二つの目的において劣っている。
反対に、透過係数を上げようとすれば選択性が下がり、選択性を上げようとすれば透過係数が下がるため、どちらが一方的に優れているとも言えない候補が残る。
それらが、今回の予測値に基づく Pareto 候補だった。
遥は注意書きを加えた。
これは、実測値による Pareto 最適ではない。二つのモデルが出した予測値による候補の整理であり、実験すれば位置は変わる可能性がある。
さらに、Pareto 候補になったからといって、一つの候補が自動的に選ばれるわけではない。
何を重視し、どの程度の失敗を許容し、実験から何を学びたいかは、別に決める必要がある。
遥は、候補の表に新しい列を追加した。
目標を満たすか。
二つのモデルで AD 内か。
既知材料までの距離。
製膜温度がトレーニングデータの範囲内か。
SMILES を化学構造として読み込めるか。
合成可能性と膜形成性を確認したか。
最後の列は、ほとんどが「未確認」になった。
SMILES を構造として読み込めて、記述子を計算できることは、その高分子を実際に合成できることを意味しない。
適切なモノマーが準備できるか。重合できるか。十分な分子量になるか。膜として成形できるか。測定中に安定か。
それらは、仮想候補の表だけからは分からなかった。
遥は、候補生成の方法も確認した。
virtual_polymer_candidates.csv の候補は、研究室が事前に用意した部分構造と接続規則を組み合わせ、製膜温度の候補を加えて作られていた。
つまり、5,000 個の中から最良の候補を選んでも、最初の生成規則に含まれていない構造は見つからない。
候補空間も、人が決めていた。
遥は対話型 AI に、次の質問をした。
目標物性を満たす材料を、あらかじめ生成した候補に回帰モデルを適用して選ぶ方法は、モデルの逆解析と呼べますか。順解析との違いも説明してください。
回答には、「逆設計」という言葉が広い意味で使われる場合もある一方、計算の流れとしては、候補の説明変数 x を先に用意し、モデルへ入力して目的変数 y を予測する順解析を繰り返している、と書かれていた。
遥は研究室の入門資料でも確認した。
順解析:候補の x から、その候補の y を予測する。
候補スクリーニング:多数の x を順解析し、望ましい y の候補を選ぶ。
モデルの逆解析:目標とする y から、それを実現する x を探索・設計する。
今回行ったのは、5,000 個の候補に対する順解析とスクリーニングだった。
実験より計算がはるかに速いなら、多数の候補を一度に評価できる。それだけでも十分に有用である。
しかし、候補数が何百万、何億と増えたり、連続的な作製条件を自由に考えたりすると、すべてを先に列挙することは難しくなる。
さらに、事前に作った候補の外側に、本当に欲しい材料がある可能性もある。
目標から候補を考えるためには、何を目標とし、どの説明変数を変えられ、どんな制約を守るかを定めなければならない。
予測モデルを逆向きに使う前に、研究者が設計問題そのものを作る必要があった。
翌日の午後、遥は紺色のパーカーの先輩に、三つの候補の比較表を見せた。
「予測値が一番良いのは candidate_0317 です。でも、二つのモデルで AD 外でした」
先輩は表を見た。
「では、選びませんか」
「捨てるつもりはありません。ただ、予測値が4,800と38.7になることを、AD 内の候補と同じ程度には信頼できません」
「candidate_0731 はどうですか」
「予測値は1,520と27.8で、どちらも目標を満たし、二つのモデルで AD 内です。最初にモデルを使って目標達成を確認する実験なら、こちらを優先したいです」
「AD 内だから、実験は成功しますか」
遥は首を横に振った。
「保証はできません。AD は予測を支える既知データが比較的あることを示すだけです。合成できるか、膜にできるかも、まだ確認が必要です」
「では、candidate_0317 を選ぶ理由はありますか」
遥は少し考えた。
「既知材料から離れた構造で、予測値が特に高いので、新しい領域を探索したいなら価値があります。実験結果が予測と違っても、データを追加すれば、モデルが知らない領域を広げる情報になります」
「二つの候補のどちらが良いのでしょう」
「一回の実験で目標を満たす確率を重視するなら candidate_0731。大きな性能向上や新しい構造を探索することを重視するなら candidate_0317 も候補です。目的によって変わります」
以前なら、「目的によります」とだけ答えていたかもしれない。
今回は、どの目的なら、どちらを選ぶかまで説明できた。
先輩は、候補比較表の「合成可能性」の欄を指した。
「ここが未確認ですね。どうしますか」
「繰り返し単位の構造だけで判断せず、想定するモノマー、重合法、既知の類似高分子を調べます。実験を担当する人にも相談します。構造式として成立することと、実験できることは分けます」
先輩はうなずいた。
「では、モデルが candidate_0731 を提案した、と発表しますか」
遥は言葉を選んだ。
「モデルは、各候補の予測値を計算しました。候補の生成規則、目標値、AD のしきい値、選択条件を決めて、最終的に candidate_0731 を優先したのは私たちです」
「その表現がよいと思います」
モデルが選んだ。
AIが発見した。
そう言えば短くて目立つ。
けれど、その言葉の中には、人が決めた候補空間、目標、制約、信頼性の基準が隠れてしまう。
遥は発表スライドの題名を修正した。
修正前:AI が発見した高性能高分子膜。
修正後:予測値、適用範囲、設計条件に基づく次候補の選択。
長くなった。
でも、何をしたのかは、前より正確だった。
新人トレーニング九回目の進捗報告会で、遥は最初に、今回の目標を示した。
二酸化炭素透過係数:1,000 Barrer 以上。
二酸化炭素・窒素選択性:25 以上。
先生が尋ねた。
「なぜ、その値を目標にしたのですか」
「今回の仮想課題で、研究室から指定された比較用の目標です。すべての用途で優れた膜を意味する値ではありません。実際の設計では、プロセスの要求や測定条件から決める必要があります」
「候補を予測した後で、達成できそうな値へ目標を変えましたか」
「変えていません。最初に設定した値で候補を抽出しました。目標を変えた結果も追加で比較しましたが、感度分析として分けました」
遥は、5,000 個の予測結果を示した。
数値上、目標を満たした候補:114 個。
二つのモデルで AD 内:18 個。
片方だけ AD 外:29 個。
両方とも AD 外:67 個。
先生は candidate_0317 と candidate_0731 の行を見た。
「予測値が最も良い candidate_0317 を選ばなかったのは、なぜですか」
「選ばなかったというより、最初に検討する候補としての優先順位を下げました。二つのモデルで AD 外であり、既知データから離れていたからです」
「AD 外なら、価値が低い候補ですか」
「いいえ。新しい領域を探索する候補として価値があります。ただし、モデルが示した高い予測値をそのまま根拠にはできません。探索枠として、実験や追加計算で確認する候補です」
「candidate_0731 は、安全な候補ですか」
「予測上のリスクは比較的小さいと考えますが、化学的・実験的に安全という意味ではありません。AD 内でも予測は外れますし、合成可能性や膜形成性は別に確認します」
先生は、二つの目的変数の散布図を指した。
「二つのモデルが、それぞれ良い値を返しました。二つの性能が同時に実現することは保証されますか」
遥は、別々に構築した二つのモデルを思い出した。
「保証されません。それぞれの目的変数について予測性能を評価しただけです。同じ候補で二つの予測がともに当たるかは、実験で確認する必要があります」
「では、Pareto 候補とは何ですか」
「今回の予測値の上で、別の候補に二つの性能を同時に上回られていない候補です。実測値での最適性を保証するものではありません。また、Pareto 候補の中から一つを選ぶには、目的や制約が必要です」
先生はホワイトボードに書いた。
目標。
制約。
予測値。
信頼性。
実験から得たい情報。
「候補選択では、これらを分けて考えてください」
先生は続けた。
「今回、瀬戸さんは5,000個の候補へモデルを適用しました。これは、目標値から直接、構造を求めたのですか」
「いいえ。候補の構造と製膜温度を先に準備し、それぞれについて物性を順方向に予測して、目標を満たすものを選びました」
「では、何が制限になりますか」
「最初に作った候補空間です。生成規則に含まれない構造や条件は、どれだけモデルを使っても選ばれません」
「目標から説明変数を考える方法はありますか」
「モデルの逆解析があります。目標とする目的変数から、それを実現する説明変数を探索します。ただ、説明変数の範囲、組成や温度の制約、化学構造としての成立条件などを決める必要があります」
先生はうなずいた。
「候補を多数生成して順解析する方法も有用です。ただ、何を候補として許したかを忘れないでください。将来は、目標値から説明変数を直接考える方法も扱います」
直接。
遥は、その言葉をノートの端に書いた。
今はまだ、5,000 個の候補から選ぶだけで精一杯だった。
しかし、最初から候補を作り切らず、欲しい性質から構造や条件を導くことができれば、探索の形は変わる。
先生は、もう一つ尋ねた。
「candidate_0731 を実験して、目標を満たさなかったら、どうしますか」
「実測値をデータセットに追加し、モデルと AD を更新します。その後、次の候補を選びます」
「その繰り返しには名前がありますか」
遥は、研究室の入門資料で読んだ言葉を思い出した。
「適応的実験計画法です。モデルで候補を選び、実験し、結果を追加して、モデルを更新するサイクルです」
「ベイズ最適化とは同じですか」
「今回の予測値と距離による AD だけで候補を選ぶ操作を、そのままベイズ最適化とは呼べないと思います。ベイズ最適化では、予測値に加えて予測の不確かさなどを獲得関数で考え、次に評価する候補を選びます」
「よい区別です。AD 外と予測の不確かさも、同じ言葉ではありません。関係することはありますが、何を計算した指標かを明確にしてください」
遥は、候補比較表に「AD」と「予測不確かさ」を同じ欄へ入れかけていたことを思い出した。
分からないものを、すべて「不確か」と一つにまとめてはいけない。
AD は、説明変数空間におけるトレーニングデータとの関係から設定した。
予測分布の幅を計算したわけではない。
言葉の区別は、計算したものの区別だった。
遥は最後のスライドを示した。
予測は、候補の説明変数から物性を考える。
設計は、欲しい物性から候補を考える。
候補を選ぶには、目標、制約、予測値、AD、実験可能性を分けて確認する。
予測値が最大の候補と、次に実験すべき候補は同じとは限らない。
AD 内は成功を保証せず、AD 外は価値がないことを意味しない。
最終的な選択と、その理由に責任を持つのは研究者である。
先生は尋ねた。
「今回、自分で追加して試したことは何ですか」
「重みを変えた順位付けと Pareto 候補の整理を行いました。それから、最初に設定した目標値を変えたとき、候補数と AD 内の割合がどう変わるかを確認しました」
「何が分かりましたか」
「重みや目標を変えると、選ばれる候補は変わりました。モデルが同じでも、設計問題の決め方で答えが変わります。そのため、結果だけでなく、目標と選択規則も残す必要があります」
「次に検討する候補は、どれですか」
遥は、候補比較表の candidate_0731 を指した。
「今回の目的を、一回目の実験で目標達成の可能性を確認することと置き、candidate_0731 を優先します。二つの予測値が目標を満たし、二つのモデルで AD 内だからです。ただし、合成可能性と膜形成性を確認してから実験候補にします」
「candidate_0317 は、どうしますか」
「高い予測値をもつ探索候補として残します。候補の構造を調べ、実験コストと許容できる失敗の大きさを考え、探索用の実験枠があれば検討します」
先生は短くうなずいた。
「答えが一つでないときほど、選んだ理由を説明してください」
報告会のあと、遥は結果を保存した。
virtual_polymer_candidate_predictions.csv。
candidate_target_and_ad_summary.csv。
pareto_candidate_predictions.csv。
candidate_selection_rationale.txt。
最後のファイルには、選んだ候補だけでなく、選ばなかった有力候補と、その理由も残した。
結果が外れたときに、「なぜその候補を選んだのか」を後から都合よく書き換えないためだった。
画面には、5,000 行の候補が残っていた。
最初は、その中の最大値を探せばよいと思っていた。
今は、一つの候補を選ぶまでに、人が決めなければならないことの多さが見えていた。
どの性質を欲しいとするか。
どこまでを目標とするか。
何を変えてよいか。
どの制約を守るか。
どの予測を、どの程度信じるか。
失敗から何を学びたいか。
AI は、5,000 個の候補を、人より速く計算した。
けれど、何を良い候補と呼ぶかは、計算を始める前にも、終えた後にも、人が考え続けなければならない。
遥は、第1章で書いた言葉を思い出した。
目的を決めるのは研究者。
九週間のトレーニングを経て、その言葉は前より具体的になっていた。
目的とは、単なる目的変数の名前ではない。
目標、制約、信頼性、実験の意味まで含めて、研究の問いを作ることだった。
作業を終えると、先輩から slack に新しいメッセージが届いた。
次回は、新人トレーニングの最終発表です。
第1章で選んだ研究テーマについて、何を入力とし、何を予測し、どのように評価し、どこまで結果を信じ、次の候補をどう選ぶかを説明してください。
AI に尋ねたこと、資料で確認したこと、自分で試したこと、自分で判断したことを区別してください。
最後に、四月から研究室でどのように研究したいかを、自分の言葉でまとめてください。
遥は、これまで保存したフォルダを開いた。
データ辞書。
ヒストグラムと散布図。
構造記述子。
PCA とクラスタリング。
予測モデル。
クロスバリデーション。
AD。
候補選択。
一つ一つは、先輩から与えられた小さな課題だった。
しかし、並べてみると、一つの研究の流れになっていた。
最初の発表では、AI が整えた言葉を、自分の理解だと思いかけた。
今度は、どこまで自分の言葉で話せるだろう。
遥は新しいスライドを開いた。
白い画面に、題名を入力する。
データ化学工学による高分子分離膜の設計。
第2章と同じ題名だった。
けれど、その下に続く内容は、もう同じではなかった。
遥はノートの新しいページに、次の言葉を書いた。
自分の言葉で話す。
===
続きはこちら
