データ化学工学研究室物語
第Ⅱ部 高精度モデルの落とし穴
学部四年生から修士課程へ。実際の研究で調べ、試し、考え、自分の問いを育てていく。
第8章 予測の線から外れて
六月に入るころ、遥の机に、数字ではなく、小さなラベルが並んだ。
B01_X_2h。
B01_X_4h。
B01_Y_2h。
B01_Y_4h。
最初の作製回に用意する、四枚の膜の番号だった。同じ並びが、B02、B03 と続く。
画面の中で何度も描き直した四つの箱が、ようやく机の上へ出てきた気がした。
「そのラベル、全部貼ったら実験が始まるの?」
隣の同期に聞かれ、遥は手元の表を見た。
「手順と記録の確認が済んだら。まだ、予測を保存する仕事もある」
「測る前の答えだね」
答え、と言われると、少し違う気がした。
「測る前に、モデルがどう言っていたかを残すものかな」
本当の値は、まだどこにもなかった。
午後の打ち合わせでは、先生と先輩、実験を担当する大学院生と一緒に、前の週から残っていた確認事項を埋めた。
高分子 X と高分子 Y。乾燥に続く処理の保持時間を、2 時間と 4 時間で比べる。各作製回に四通りを含め、溶液の調製から別々に作る。それを日を変えて 3 回行う。
予定は、合計 12 枚だった。
温度、雰囲気、乾燥までの手順、測定条件は、担当者と確認した計画に従う。どこまで共通にでき、材料ごとに何を変えざるを得ないかも、図の横に残した。
材料の名前と時間だけを渡して、あとは任せる計画ではなくなっていた。
測定が成立したと判断する基準と、主な比較に用いる値の選び方も確認した。
今回は、決めた条件と手順で最初に成立した測定から、膜一枚ごとの代表値を得る。確認のために測り直した値は別に残し、予測に近い方へ入れ替えない。再測定で最初の測定の問題が分かった場合には、その根拠と変更の履歴を残す。
「最初の値なら、何でも正しいという意味ではないですね」
遥が言うと、大学院生はうなずいた。
「はい。どの測定が成立したかを、装置の記録や決めた基準で確かめます。予測値に近いかどうかは、その基準にしません」
遥は、予測の表と測定の確認表を、別々のファイルにした。
測る人が最初から期待される数字を見なくても、測定の確認を進められるように、手順書には条件と試料番号を載せ、予測値の欄は置かなかった。担当者と、その共有の仕方も相談した。
すべての先入観をなくせたわけではない。それでも、比べる前に混ぜなくてよい情報はあった。
席へ戻ると、遥は工程別の入力を使うモデルを準備した。
対象は、これまで整理してきた 44 個の報告結果。原著論文と構造の重なりを避けた検証で近傍数を選び、その後、44 行すべてで学習し直す。
四通りの計画について、入力の定義、値の範囲、区分の対応を確認した。予測のために、新しい膜の実測値を補って入れる場所はなかった。
計算すると、四つの数字が現れた。
高分子 X、2 時間:2.36。
高分子 X、4 時間:2.39。
高分子 Y、2 時間:2.55。
高分子 Y、4 時間:2.57。
透過係数を Barrer で表した数値の、常用対数の予測だった。表には元の単位へ戻した値も置いたが、評価用には、丸める前の対数値を保存した。
どちらの高分子も、長く処理する方が、わずかに大きい予測値になっている。
遥は、二本の短い上向きの線を描いた。
この向きに、実験の結果も並ぶだろうか。
「三枚作るのに、予測値は一つなんですね」
先輩が、作製予定との対応を見て言った。
「はい。同じ組み合わせでは、計画した入力が同じです。今のモデルは、まだ起きていない作製ごとの違いを見分けていません」
三枚の番号を付けたからといって、モデルが三枚それぞれの値を知るわけではない。
遥は、四つの予測を 12 枚の予定へ対応付け、学習データ、前処理、近傍数、入力の版、保存した時点も結び付けた。
最初の膜を作る前に、その一式を保存した。
先生と先輩にも slack で共有し、作製前の予測を保存したことが、後から確認できるようにした。
ファイルを閉じると、少し緊張した。
今までは、計算して、気になるところを直し、もう一度計算できた。
もちろん、このモデルも後で直せる。
ただ、これから得る値を見て考えたことを、測る前から分かっていたことにはできない。その境目が、今日ははっきりしていた。
最初の作製日、遥は教わった準備を済ませ、大学院生の案内で実験室に入った。
必要な保護具を着け、立ち入ってよい場所と、触れてはいけないものを確認する。装置や試料の操作は、手順を知る担当者が進めた。
遥が持っていたのは、四つの箱の図と、記録用の表だった。
パソコンの前では一行だった「乾燥までの手順」にも、いくつもの動作があった。何を用意し、どの容器を使い、いつ処理へ移ったのか。ラベルと記録を照合する時間もある。
一つの作業が終わるたび、大学院生は、次の操作へ移る前に記録を確かめた。
遥は、時計を見て、開始時刻を表へ入れた。
「それは、予定の時刻ではなく、実際に始めた時刻ですね」
確認され、計画の欄ではない方へ入力したことを、もう一度見た。
計画した条件。
実際に行った条件。
前の週には、書き分ける理由を説明できた。
今日は、どちらの欄へ手を動かすかという仕事になっていた。
別々に調製した溶液から、別々の膜を作る。一方で、同じ作製回には、装置やその日の環境を共有する部分もある。
四つの番号は横に並んでいたが、四枚が互いに何の関係もないものになるわけではなかった。
遥は、作業の順番も、計画した並びと照合した。装置の制約の中で相談して決めた順番であり、何も考えずに短い条件から片づけているわけではない。
やがて、手元に透明な膜が見えた。
薄いものだった。
これまで表で読んだ「膜」という一文字より、ずっと頼りなく見えた。
「この一枚が、あの一行になるんですね」
遥が言うと、大学院生は、膜の番号を確かめた。
「測れる状態になって、測定も確認できたら、ですね」
値が返るまでには、まだ仕事があった。
三つの作製回を進める間、遥は、自分の机で測定記録を結び付ける処理を試していた。
最初に使ったのは、実際の結果ではない、小さな確認用の表だった。
一枚の膜に測定を二つ付ける。測定のない膜も一枚残す。行の順番を変える。
それでも、膜の数が増えたり、測っていない膜が消えたりしないかを確かめた。
初めは、測定結果の表にある番号だけを取り出していた。
その処理では、測定結果のない膜の行が、一覧から見えなくなった。
遥は、実行前に書いた「12 枚の予定からたどる」というメモを見た。
結果があるものから表を作ると、なかった結果を数える場所が消える。
作製予定から実施記録、膜、測定へと番号をたどる形に直し、値のない欄にも状態と理由を残せるようにした。
その点検が役に立ったのは、二回目の作製回のあとだった。
高分子 Y の 4 時間の膜について、測定に使う部分を準備する際に破れが生じ、必要な領域を確保できなかったと連絡があった。
膜は作製されていた。
しかし、その一枚について、今回比較に使える透過係数は得られなかった。
遥は、報告を受けたとき、まず「もう一枚」と書きかけた。
四つの箱の一つだけ、点が二つになってしまう。
けれど、今日作り直せば、二回目の作製回と同じ日に行ったことにはならない。
「追加で作るかは相談したいです。ただ、今の番号を新しい膜に付け直さず、この一枚は、どこで測定へ進めなかったかを残します」
大学院生は、試料を準備したときの記録を示してくれた。
保持時間を長くしたから破れやすくなったのだろうか。
その考えは浮かんだが、一枚の出来事からは決められなかった。試料の扱い方など、他に確認すべきこともある。
遥は、「4 時間では膜を作れなかった」と書かず、実際に起きた場所を記録した。
作製済み。測定用の領域を確保できず。透過係数の有効な値なし。
透過係数が 0 だったわけではない。
モデルが外れたという結果でも、まだない。
測れていないことと、その材料の性能が低いことは、別だった。
先生との相談で、今回は、まず予定していた三つの作製回から得た結果を整理することにした。追加作製が必要なら、どの比較を補うかを決め、新しい計画と番号で残す。
そろわなかった点を隠さずに、一度全体を見る。
そのための欄を先に作っておいて、よかったと思った。
三回目までの測定記録がそろうと、遥はすぐに予測との散布図を作りたくなった。
まだ、予測のファイルは開かなかった。
先に、担当者と、膜の番号、測定条件、生データ、測定が成立したかの確認を照合した。
一つの膜には、確認のために測り直した記録も付いていた。
二つの測定値は近かったが、完全には一致していない。だからといって、測定値を二枚分の膜として扱うわけではない。
主な比較に使う値は、先に決めた規則から得る。確認用の測定も、間に行った操作や時点と一緒に残す。
測定の数が増えたことと、同じ条件で作り直した数が増えたことを、表の中でも分けた。
そして、全体の数を並べた。
計画した作製:12 枚。
実際に作製した膜:12 枚。
主な比較に使える透過係数が得られた膜:11 枚。
測定用の領域を確保できなかった膜:1 枚。
「欠損値を一つ除いた」とだけ書けば、短かった。
でも、それでは、何を作り、どこで値が得られなかったかが消えてしまう。
遥は、この四行を結果の最初に置いた。
膜ごとの代表値を確定してから、Barrer で表した透過係数を常用対数へ変換した。
それぞれの点から、元の測定値と生データへ戻れるようにする。
画面には、四通りの組み合わせが、ようやく実測の点を持って並んだ。
高分子 X、2 時間:2.12、2.24、2.18。
高分子 X、4 時間:2.00、2.15、2.09。
高分子 Y、2 時間:2.46、2.60、2.49。
高分子 Y、4 時間:2.48、値なし、2.47。
いずれも、作製回 B01、B02、B03 の順だった。表示は読みやすい桁で丸めたが、計算は丸める前の値で行う。
遥は、三つの作製回を点の形で分けた。
一つの箱には、モデルの予測値が一つだけ置かれていたはずだった。
実際に作った膜には、同じ箱の中でも、違う値が付いた。
「同じ条件なのに、そろわないんですね」
先輩が来ると、遥は最初にそう言った。
「今回は、何が同じでしたか」
「計画した入力と、そろえると決めた作製・測定の設定です。実際の記録も確認しましたが、それで膜の状態まで全部同じだと確かめたわけではありません」
「では、点の違いは、何のばらつきでしょう」
「作製ごとの違いも、測定の違いも、今の値には含まれます。作製回ごとに共有した事情もあります。同じ膜を測り直した記録だけから、作り直した膜のばらつきまでは決められません」
先輩は、点の形を見た。
「だから、平均の横へ棒を一つ付ける前に、何を何回行ったかを残してあるんですね」
遥はうなずいた。
ばらつきという言葉を使えば、それで説明したことになるわけではなかった。
次に、保持時間の違いを見た。
高分子 X では、三つの作製回のどれでも、4 時間の値が 2 時間の値より小さかった。作製回ごとの対数値の差は、−0.12、−0.09、−0.09。その平均は、−0.10 だった。
平均した対数の差を、元の透過係数の倍率へ戻すと、およそ 0.79 倍だった。今回の三つの作製回では、長い条件の方が二割ほど小さい、という大きさの違いである。
「これは、処理を長くすると性能が悪くなる、と言えますか」
遥が尋ねると、先輩は、図の縦軸を指した。
「今見ているのは、二酸化炭素の透過係数ですね。膜としてのよし悪しには、選択性など、他に必要なものもあります。それに、今回確かめたのは、X のこの二つの時間です」
長ければ長いほど下がる曲線を調べたわけでもない。
透過係数の差から、膜の内部で起きたことを特定できたわけでもない。
遥は、「性能が悪化した」を書かず、どの値が、どの範囲で小さかったかを残した。
高分子 Y は、違っていた。
B01 では、4 時間の方がわずかに大きい。
B03 では、4 時間の方がわずかに小さい。
B02 では、4 時間の有効な値がない。
「両方の時間の平均を出せば、Y も長い方が少し小さくなります」
遥は計算した欄を見せてから、点の形に戻った。
2 時間の平均には、値の大きかった B02 も入る。4 時間の平均には、その作製回が入らない。
その二つの平均の差を、そのまま保持時間だけの差として読んでよいだろうか。
「まずは、同じ作製回にそろっている二組の差を、別に見せたいです。B02 の 2 時間の値は消さず、対になる比較ができないことを書きます」
「そうしましょう。点を減らして都合よく見せるのではなく、何を組として比べたかを示すのですね」
Y の二組だけでは、変化の向きはそろわなかった。
差がないと証明できたのではない。今回の回数と範囲では、はっきりした向きを説明しにくいということだった。
もし最初の予定どおり、短い条件を先の週、長い条件を後の週に作っていたら、こうして同じ作製回の二つを並べることはできなかった。
遥は、前に自分から予定表を変える相談をしたことを思い出した。
点の形を分けるという小さな操作の後ろに、数字ができる前の判断があった。
夕方、ようやく作製前の予測を開いた。
実測値を横軸、予測値を縦軸へ置く。
同じ計画の三枚には同じ予測値を対応付けるため、一つの条件の点が、同じ高さに並んだ。
第4章では、文献の二つの膜に同じ入力が付いていた理由を調べた。
今日は、同じ計画で別々に作った膜に対し、今の入力では同じ予測を返している。その意味を、前より具体的に説明できた。
11 枚の誤差を同じ重みでまとめると、対数尺度の MAE は 0.17、RMSE は 0.20 だった。
前の文献を分けた点検では、工程別の入力の MAE は 0.36。
数字を見た瞬間、よくなった、と思った。
そのまま口に出しかけて、図の対象を書き直した。
今回の既知構造 X・Y で、新しく作製し、有効な値を得た 11 枚。
前の 44 行とは、構造も、条件も、学習に使った情報との関係も違う。学習されたモデル自体も、今回は全 44 行から作り直している。
0.36 から 0.17 へ改善した、という比較ではなかった。
ただし、測る前に保存した予測を、新しく得た値と比べられたことには意味がある。
遥は、うれしさまで消す必要はないと思い、対象の説明を数字の横へ残した。
「全体の誤差だけなら、思っていたより小さいです」
先輩にそう話してから、もう一枚の図を開いた。
四つの予測値を結んだ線と、各作製回の実測値を結んだ線。
高分子 X の予測は、2 時間から 4 時間へ、わずかに上がっていた。
実測の三本の線は、反対に下がっていた。
どの膜も、予測より透過係数が小さい。そして、保持時間を変えたときの向きも、予測と同じではない。
「このモデルを使って、時間を長くした方が透過係数を大きくできると勧めたら、今回の X では、逆向きでした」
遥は、予測の短い上向きの線を指した。
「小さい平均誤差が出たことと、条件をどう変えるかを正しく選べたことは、同じではありませんでした」
先輩は、二つの図を並べた。
「予測した値そのもののずれと、条件を変えたときの差のずれですね。どちらが必要かは、使い方によります」
「今回は、作製条件も設計したいので、後者を見落とせません」
二種類の高分子をまとめれば、大きい方と小さい方をある程度区別するだけでも、よい予測に見えることがある。
しかし、同じ高分子の作り方を選ぶためには、その中で、条件を変えたときの小さな違いも必要だった。
遥は、この図を報告の中心にしようと思った。
予測が当たった方の点だけを大きくするのではなく、今回確かめたかった二本の矢印へ戻る。
木曜日の報告会では、最初に作製数と測定の状況を示した。
12 枚を作製し、11 枚で比較に使える値を得たこと。値を得られなかった一枚についても、番号と、その後に進めなかった理由を残したこと。
続いて、保持時間の比較と、予測との比較を、別々の画面で説明した。
先生は、高分子 X の三本の線を見た。
「モデルが外れたなら、実験の失敗でしょうか」
「いいえ。測定は決めた基準で確認しています。今回の X では、比べた三つの作製回で、4 時間の透過係数が 2 時間より小さく、その向きを事前の予測は表せませんでした」
「原因は分かりましたか」
「まだです。保持時間の割り当てを変え、他の設定をそろえた比較はできました。ただ、残留溶媒や膜の内部の状態を測ったわけではありません。二種類の材料と、この設備・条件を超えて一般化することもできません」
「Y は変わらなかった?」
「そうは決めていません。比較できた二つの作製回では、差の向きが一致しませんでした。一枚は有効な値がなく、今回の情報だけで小さい差を十分に見分けられたかも分かりません」
遥は、まだ空いたままの欄を指した。
値がないことを、説明の最後の小さな注記にしなかった。
「予測を直して、今の点へ近づけてみますか」
先生に聞かれ、遥はうなずいた。
「次の検討としては、進めたいです。ただ、先に、この事前予測との比較を保存します。新しい値を学習へ追加してから同じ 11 枚を当てても、測る前の予測を評価したことにはしません」
「実際に行った条件へ入力を直した場合は?」
「計画した入力で保存した結果とは分けます。今回の実施記録を使う解析なら、その時点で得た情報を使った追加解析だと示します」
先生は、予測と実測を結んだ二つの図へ戻った。
「次は、どこから調べたいですか」
遥は、用意していたメモを開いた。
「まず、X の 2 時間と 4 時間で、どの近傍が選ばれ、どの記録を参考にこの上向きの差が出たのかを確認したいです。二つの入力のどこが違い、距離へどう入っているかも見ます」
回帰手法を変える案もある。
けれど、今の予測が何を根拠に動いたのかを知らずに、別のモデルを重ねたくはなかった。
「同時に、実験側でそろえた条件と、文献データの条件の対応も、担当者ともう一度確認します。X の値が全体に予測より小さい理由と、時間による差を捉えられなかった理由が、同じとは限らないので」
「それなら、次の比較の目的が分かりますね」
先生は、予測の数値を消すようには言わなかった。
当たらなかった予測にも、次に確かめる場所が残っていた。
報告会のあと、遥は実験を担当した大学院生へ、二つの図を見せた。
「予測と逆向きでした。でも、同じ作製回に両方の条件を入れてもらったので、この比較ができました」
「それなら、計画した意味がありましたね」
大学院生は、有効な値を得られなかった一枚の記録も確認した。
「追加するなら、何をそろえて比べたいか、また相談しましょう」
遥はうなずいた。
条件を渡せば、数字が返ってくる。
前は、実験とのやり取りをそう想像していた。
今は、数字にならなかった一枚にも、担当者が確かめたことと、自分が次に相談すべきことがある。
予定した十二枚は、十一個の点と、一つの空欄になった。
空欄まで含めて、今回得た記録だった。
席へ戻ると、遥は、保存先を分けて並べた。
pre_experiment_predictions_v01.csv。
membrane_preparation_log_v01.csv。
measurement_log_v01.csv。
membrane_results_v01.csv。
prospective_comparison_v01.csv。
作製前の予測は、上書きしていない。確認用の測定と、主な比較に使った膜ごとの代表値も、番号でたどれるようにした。
slack へ共有する文章には、次のように書いた。
予定した 12 枚を作製し、11 枚で主な比較に使える二酸化炭素透過係数を得ました。
X では、三つの作製回で 4 時間の値が 2 時間より小さく、その向きは事前予測と一致しませんでした。Y では、両条件の値がある二つの作製回で、差の向きがそろいませんでした。
作製前に保存した予測を 11 枚と比べた MAE は 0.17、RMSE は 0.20 です。いずれも常用対数の尺度で、未知構造への評価や、前の文献データからの精度改善を示す値ではありません。
次は、絶対値のずれと条件差のずれを分け、近傍の内訳と入力の対応を確認します。追加実験も、その確認したい内容から相談します。
送信すると、隣の同期が声をかけた。
「実験、どうだった?」
遥は、二本の予測の線を見た。
「当たったところもあった。でも、X の時間の違いは、逆だった」
「じゃあ、次はモデルを直す?」
「その前に、どうして今の予測になったかを見たい。それと、作った膜について、まだ確認したいこともある」
答えてから、最初の文献の二行を調べた日を思い出した。
あのときは、数字がどこから来たかをたどった。
今度の数字は、少しだけ、自分もその生まれる場所を知っていた。
窓の外では、雨が細く降り始めていた。机の端には、使わずに残ったラベルが数枚ある。
次に何を作るかは、まだ決めていない。
それでも、次に必要なものは、予測に合う点を増やすことだけではないと分かっていた。
遥は、上向きの予測と下向きの実測が並ぶ図を保存した。
その線を重ね直す前に、なぜ離れたのかを、自分の問いにしたかった。
===
続きはこちら
