データ化学工学研究室物語
第Ⅱ部 高精度モデルの落とし穴
学部四年生から修士課程へ。実際の研究で調べ、試し、考え、自分の問いを育てていく。
第4章 同じ温度、違う工程
ノートに引いた二本の線は、次の朝も、ほとんど空白だった。
この膜は、どのように作られたのか。
遥は、前の報告会のあとに書いた問いを読み返した。画面には、同じ高さに並んだ二つの点が残っている。
同じ構造記述子。同じ作製条件の入力。同じモデルが返した、同じ推定値。
けれど、報告された二酸化炭素透過係数は違う。
二つの膜が、同じ報告結果の再掲ではないことは確認した。今度は、その二つをモデルが同じものとして受け取った理由を、調べる番だった。
遥は、照合中に取り違えないよう、ノートの上の線を膜A、下の線を膜Bと呼ぶことにした。横には、それぞれの record_id と、原著論文の試料名を書いた。
AとBは、説明のための仮の呼び名だった。モデルへ加える新しい特徴量ではない。
原著論文の実験方法を開き、表の試料から、対応する作製手順へ戻る。
膜Aについて、まず目に入ったのは、乾燥条件だった。
80 ℃、減圧下で 12 時間。
引き継いだ表の製膜温度の欄にも、80 と入っている。
合っている。
そう思って、もう一方の論文へ進みかけた。けれど、今日は数字だけを照合するつもりではなかった。
80 ℃にしたとき、そこには何があり、その前に何をしていたのだろう。
遥は、少し前の文章へ戻った。
高分子を溶媒に溶かす。溶液を基板の上へ広げる。その後、減圧下で乾燥する。
その順に、ノートへ小さな四角を書き足した。80 ℃と 12 時間は、乾燥の四角の下へ置く。
冷却して保管した後、透過試験を行うことも読み取れた。ただし、保管から測定までの時間は、この試料に対応する記載を見つけられなかった。
最後の矢印の横に、「時間の記載を確認できず」と書いた。
膜Bの実験方法には、同じ 80 ℃が別の場所にあった。
溶液を基板に広げ、室温で溶媒を蒸発させる。その後、得られた膜を窒素雰囲気で 80 ℃に保ち、2 時間処理する。
最初に溶媒を蒸発させた時間は、明記されていなかった。
遥は、膜Aと同じ位置に書きかけた 80 ℃を、右へ移した。
膜A:溶液を広げる → 減圧下、80 ℃で 12 時間乾燥 → 冷却・保管 → 測定。
膜B:溶液を広げる → 室温で溶媒を蒸発 → 窒素雰囲気、80 ℃で 2 時間処理 → 冷却・保管 → 測定。
二本の線は、もう同じ形ではなかった。
表の中では、どちらも 80 だった。
一方の論文では、乾燥の条件として書かれた温度。もう一方では、室温での溶媒蒸発に続く処理の温度。
温度計の目盛は同じでも、その数字が置かれた工程は違っていた。
今回のモデルの入力には、この時間や雰囲気、工程の順番は入っていなかった。
遥は、二つの 80 を囲んだ。
転記した数字は、どちらも原著論文にある。
間違いはない、と言いたくなったところで、ノートの線へ目を戻した。
数字を正しく写したことと、同じ意味の列に入れたことは、別だった。
昼前、紺色のパーカーの先輩が席に来た。
「作り方は見つかりました?」
遥は、ノートを先輩の方へ向けた。
「値が違う理由が、少し分かった気がします。同じ製膜温度として入っていた 80 ℃が、違う工程の条件でした」
先輩は二本の線を見比べ、原著論文の該当箇所にも目を通した。
「ここまでは、何が確認できたことになりますか」
「膜Aは減圧下の乾燥で、膜Bは室温での溶媒蒸発の後、窒素雰囲気で処理しています。時間も違います」
「では、その違いが、透過係数の違いの原因ですか」
遥は、二つの報告値を見た。
片方の値を、乾燥の四角と線で結びたくなった。
しかし、その線を引く根拠は、まだなかった。
「原因の候補です。今回は、他の条件をそろえて、その工程だけを変えた実験ではありません」
「そうですね。まず、入力が同じでも、原著論文に書かれた手順まで同じだったわけではない、と言えます」
先輩は、膜Bの「処理」という言葉を指した。
「乾燥と加熱処理を、名前だけで完全に別の現象だと考える必要もありません。加熱する間に溶媒がさらに抜ける可能性もあります。今は、何を、どの順番で、どの条件に置いたと書かれているかを残しましょう」
遥は、「違いの原因が分かった」を消し、書き直した。
今の入力には残っていなかった、作製手順の違いを確認した。
その違いが物性にどう関係したかは、まだ分からない。
説明は少し控えめになった。
それでも、昨日の「何かが違うかもしれない」よりは、先へ進んでいた。
午後、遥は二つの論文について、作製手順以外の記載も並べた。
測定した気体と測定温度は、前の解析でそろえている。一方で、同じ繰り返し単位と確認したことは、原料のロット、分子量分布、膜の状態まで等しいと確認したことではない。
測定圧力や、測定前に膜をどのような状態に置いたかも、改めて対応を確かめる必要があった。
表にないから違う、とも言えない。
書いていないから同じ、とも言えない。
遥は、「比較した項目」と「まだ比べられない項目」を分けた。
残留溶媒が違ったのだろうか。分子鎖の詰まり方が違ったのだろうか。それとも、測定や試料ごとのばらつきが大きいのだろうか。
仮説はいくつも考えられたが、それを確かめる測定結果が、この二つの記録にそろっているわけではなかった。
「自由体積が違うため」と書けば、化学らしい考察に見える。
けれど、その言葉を入れただけでは、二つの膜で何が違うかを測ったことにはならない。
遥は、仮説を消さずに、別の欄へ移した。
構造と作製条件から、膜の状態が変わった可能性。
試料や測定に伴うばらつきの可能性。
記録に残っていない他の条件の可能性。
今は、それぞれを区別するために、どの情報が必要かを考えたかった。
画面を見ていると、隣の同期が尋ねた。
「今週は、その二つだけを調べてるの?」
「まずは。入力が全部同じなのに、値が違うから」
「もっと複雑なモデルなら、別々の値になるんじゃない?」
遥も、少し前なら、そう考えたかもしれない。
「同じモデルに、まったく同じ入力を渡したら、今の回帰モデルでは同じ値になるよね。手法を変えても、区別するための情報が入っていなかったら、どっちの膜かは分からないと思う」
同期は、二つの record_id を指した。
「この番号は違うけど」
「その二行を学習に使って、番号ごとに答えを覚えさせれば、別の値を返せるかもしれない。でも、新しい膜の番号は、その膜の作り方や性能を教えてくれないから」
話しながら、遥は、原著論文の二本の手順をもう一度見た。
ばらつきを予測する方法はあっても、どちらの膜がどの値になるかを見分ける手がかりが、今の入力へ自動的に加わるわけではない。
必要なのは、二行を区別するためだけの札ではない。
これから作る膜についても、同じ意味で準備できる情報だった。
二つの値を平均して、一つにすれば、同じ入力に違う答えがあるという問題は見えなくなる。
しかし今回は、別に作られた膜の違いを考えたい。その違いを先に消すのは、研究の問いを変えてしまう気がした。
遥は二行を残し、入力の整理を進めることにした。
最初に考えたのは、温度を表す列を増やすことだった。
乾燥温度。
処理温度。
膜Aの 80 は乾燥温度へ、膜Bの 80 は処理温度へ入れる。
それぞれの反対側は、空欄になった。
ここを 0 にすれば、プログラムには渡しやすい。
そう思って、遥は入力する指を止めた。
0 ℃で処理したわけではない。
それに、膜Aの説明に独立した後処理が書かれていないことは、後処理を行わなかったと確かめたこととも違った。
記載がない。
行っていないと明記されている。
そもそも、その工程の条件が当てはまらない。
空欄の向こうに、別々の状態がある。
膜Bの「室温」も、勝手に 25 ℃へ置き換えることはやめた。数値へそろえる処理を考えるとしても、原著論文に具体的な温度が書かれていたかどうかは、残す必要があった。
遥は、途中まで作った特徴量の表を閉じなかった。
ただ、その前に置く表が必要だと思った。
一行に一つの膜を押し込む前に、その膜を作るための工程を、順番に残す表。
先輩へ相談すると、隣に座って一緒に列名を考えてくれた。
「モデルへ渡す表とは、分けてよいですよ。元の情報を保存する形と、最初のモデルで使う形を、同じにする必要はありません」
遥は、新しい表の左端に record_id を置いた。
同じ record_id に、工程の順番が違う行が複数つながる。
その右には、何をしたか、温度、時間、雰囲気、原著論文のどこに書かれていたかを並べた。
step_order。
operation。
temperature_C。
duration_h。
atmosphere。
evidence_location。
温度や時間の数値が書かれていない場合は、その状態と原文の表現も残す。後で単位をそろえても、どの記載から変換したかへ戻れるようにする。
record_id と出典の情報は、膜と工程を結び付けるためのものだった。工程の条件とは役割が違う。
「工程を一行ずつにしたら、同じ膜が何行もできますね」
遥が言うと、先輩はうなずいた。
「では、予測に使うサンプル数が増えますか」
「増えません。一つの膜の作り方を、複数の工程として保存しただけです」
三つの工程を持つ膜に、三つの透過係数を測ったわけではない。
工程の表をそのまま学習データへ足せば、今度は別の形で、同じ報告結果を何度も数えてしまう。
遥は、表の上に「工程の記録用」と書いた。予測用の一行をどう作るかは、この表から必要な情報を取り出す、次の処理だった。
先輩は、冷却・保管から測定へ続く部分を見た。
「どこまでを作製条件にするかも、決めておきたいですね」
「膜を作る前に決められる温度や時間は、設計の入力候補です。でも、測って初めて分かる膜の状態とは分けます」
例えば、作製後に測定した残留溶媒の量は、二つの膜の違いを理解する手がかりになるかもしれない。
一方で、これから作る膜の性能を予測するとき、その実測値がすでに分かるわけではない。
「原因を調べるために欲しい情報と、作る前の予測に渡せる情報は、同じではないんですね」
遥が言うと、先輩はうなずいた。
「どちらも大切です。使う目的を分けましょう。それから、設定した温度と、試料が実際に経験した温度を測った値も、同じものとは限りません」
遥は、論文に書かれた値が何の温度なのかも、分かる範囲で記録することにした。
知りたいことを増やせば、すべてが表に埋まるわけではない。
それでも、同じ一つの空欄に戻さずにおくことはできた。
翌朝、遥は対話型AIへ、二つの工程を自分で整理した文章を示した。
記載されている操作と条件を、時間の順に整理してください。
書かれていない温度や時間は推定せず、未記載としてください。
工程の違いが透過係数に与える影響は、ここでは判断しないでください。
返ってきた整理は見やすかった。
ただ、膜Aについて、本文に書かれていない後処理の欄に「なし」と入っていた。
遥は、そこを自分の確認表と見比べた。
未記載と、実施しなかったことを分けてほしい、と条件を加えて尋ね直す。修正された表も、原著論文の該当箇所ともう一度照合した。
細かく頼んでも、確認が不要になるわけではなかった。
一方で、AIが挙げた「何をしたか」と「どの条件か」を分ける列は、自分の表にも使いやすそうだった。
採用する項目を決め、根拠のない補足は入れなかった。
昼過ぎには、工程の表から、モデル用の数字を取り出す小さな処理を書き始めた。
最初の案では、工程を通して最も高い温度と、加熱した時間の合計を残すことを考えた。
一つの温度だけよりは、情報が増える。
でも、膜Aと膜Bを見比べて気になったのは、最高温度だけだっただろうか。
遥は、実際の二つの膜とは別に、表の作り方を確かめるための仮の工程を作った。
例1:工程aを 80 ℃で 12 時間行い、その後、工程bを 120 ℃で 2 時間行う。
例2:工程bを 120 ℃で 2 時間行い、その後、工程aを 80 ℃で 12 時間行う。
これは、膜を作る実験計画ではなかった。その順番で材料を作れるか、どんな性能になるかも考えていない。
記録の順序を変えたとき、その違いが表に残るかを調べるためだけの例だった。
最高温度は、どちらも 120 ℃。
合計時間は、どちらも 14 時間。
二つの数字だけにすると、例1と例2は同じになった。
遥は、処理が間違っているのではないことを、手計算でも確認した。
最高温度と合計時間を求める処理としては、合っている。
残すと決めたものの中に、順番がなかった。
続いて、工程の種類ごとに温度と時間を並べる案も試した。今度は、工程aと工程bの条件を区別できる。しかし、同じ工程名の条件だけを決まった列へ入れると、前後を入れ替えた違いは、やはり消えた。
「列を増やせば、全部残るわけじゃないんだ」
声に出すと、隣の同期が顔を上げた。
「また、同じ数字?」
「うん。でも、今度は自分で順番を変えた例。何を消してしまうか、先に試してる」
遥は、工程の記録には step_order を残し、同じ種類の操作が二度出てきても、一つへまとめない形にした。
その記録から作る最初の入力候補では、乾燥と、それに続く処理の条件を分ける。さらに複雑な順序や繰り返しがある記録は、その単純な形だけで表し切れるかを確認する対象として残した。
すべての工程を扱う万能な記述子ができたわけではない。
元の手順を残しておけば、今の入力で足りないと分かったとき、そこへ戻って別の表し方を試せる。
遥は、仮の工程を使った点検で、何が残り、何が消えたかを保存した。
実際の物性を予測したわけではない。それでも、試した前後で、自分が作る表の意味は変わっていた。
木曜日の報告会で、遥は最初に、前の週と同じ二つの点を映した。
推定値の高さは、変わっていない。
その右へ、今回たどった二本の作製手順を置いた。
「モデルへ渡した入力は同じでした。しかし、原著論文の工程を時間の順に整理すると、80 ℃が使われている位置と、時間、雰囲気が違いました」
先生は、二つの工程に目を移した。
「今回、予測誤差は小さくなりましたか」
「まだ、新しい入力での予測はしていません。前回の 72 個の報告結果に対する MAE 0.34、RMSE 0.46 は、そのまま残しています。二酸化炭素透過係数を常用対数にした尺度での評価です」
「では、今日は何が進みましたか」
「今の入力では同じになっていた二つの膜について、モデルに残せていなかった工程の違いを、資料の記載から一つ具体的にできました。それを記録する表と、入力に取り出す候補を作りました」
先生は、原著論文の記載と対応付けた表を見た。
「この違いを入れれば、二つの物性値を説明できそうですか」
「説明できる可能性はあります。ただ、この二つだけから、工程のどの違いが原因だったかは決められません。別の構造や文献にも使える情報なのかは、これから確かめます」
「それなら、文献名で二つを分けるのとは、どう違いますか」
遥は、新しい表から、温度と時間の列を指した。
「文献名ではなく、作製時に何をするかを残したいです。新しい膜の工程を計画したときにも、同じ定義で入力できる形を考えています。ただ、今のデータで工程の違いと文献の違いが重なっていれば、モデルが何を手がかりにしたかは、慎重に確認する必要があります」
温度や時間という、化学的に意味のある列にすれば、それだけで因果関係が分かるわけではない。
ある工程を報告した文献が一つしかなければ、工程と、その文献に共通する他の事情を切り離せないこともある。
先生は、仮の二つの工程を見た。
「順番が変わると、透過係数が変わることも確認しましたか」
「そこは確認していません。この例には物性値を付けていません。表し方によって、順番の違いが残らないことを点検しただけです」
「よい区別です。入力で違いを表せることと、その違いが予測に役立つことは、別に確かめましょう」
遥は、発表の題名に書きかけていた「新しい記述子による精度向上」を思い出した。
今日は、その題名にはしていない。
作製手順の照合と、入力に残す情報の検討。
今したことに合う言葉を、自分でも選べた気がした。
「次は、どの記録について工程を整理しますか」
先生に聞かれ、遥は、二行だけの表から、72 行の一覧へ画面を戻した。
「同じ入力で値が違う組から始めましたが、その組だけに特別な列を付けるつもりはありません。定義を決めて、今回の暫定版の他の記録にも、同じ項目で照合を進めたいです。誤差が小さかった記録も対象にします」
「必要な条件が書かれていないものは?」
「未記載として、その範囲も数えます。記載のあるものだけで最初の比較をする場合は、元の入力を使う方法も、その同じ記録と分割で計算します。対象が減った結果を、前の 72 行全体の誤差と並べて、改善したとは判断しません」
同じ尺度の MAE と RMSE でも、どの記録に対する数字かは外せなかった。
「条件を推測して、表を埋めますか」
「まずは埋めずに残します。値を補う方法を試す場合も、補った値を文献に記載された事実としては扱いません。モデルで必要な前処理は、学習側のデータだけで決める手順にします」
先生はうなずいた。
「もう一つ。この入力の案は、何を見て思いつきましたか」
「前回の外側の予測誤差と、同じ推定値になった二つの記録です」
答えてから、遥は次の質問に気づいた。
評価の結果を見て、入力の作り方を考え直した。
これまでの 72 行は、もう、その検討と無関係なデータではなかった。
「同じデータでもう一度評価するときは、探索中の比較として示します。分け直しただけで、今まで見ていない最終評価になるわけではありません」
「はい。研究では、結果を見て方法を考え直します。それ自体は必要です。ただ、どこまでその結果を使って考えたかを、忘れないでください」
新しい入力で誤差が小さくなったとしても、その数字だけで一般的な改善を証明したことにはならない。
入力の定義と評価手順を固めた後で、新たに得る独立した記録や実験でも確かめる。そのために、今の検討と、後で確かめたいことを分けて残す。
まだ、その追加のデータが手元にあるわけではなかった。
遥は、それも次の研究計画に必要なこととして書いた。
報告会が終わると、先輩が二本の手順の図をもう一度開いた。
「この図、実験を担当する人にも見てもらいたいですね」
「工程の分け方が、変ではないかを確かめたいです。それから、どの条件なら作る前に決められて、どの情報は測定しないと分からないかも」
「相談するときは、どこを原著論文で確認して、どこを自分で分類したかが分かるようにしておきましょう」
遥は、操作の名前を自分の言葉でまとめた欄の隣に、原文と位置を残してあることを確かめた。
工程の名前をそろえるところにも、判断が入っていた。その判断を誰かと相談できるようにするには、元の言葉へ戻れる必要があった。
「全部埋まってから見てもらおうと思っていました」
「迷っているところが分かれば、その段階でも相談できますよ。同じ間違いで何十行も整理する前に、少し見てもらう方がよいこともあります」
遥は、二つの膜だけを取り出した説明用の資料を保存した。
未記載の欄も、そのまま残した。
先輩に、先生と相談する際の資料へ加えてもらうことにした。まだ、実験を依頼する段階ではない。まず、同じ手順を想像して話せるようにしたかった。
夕方、窓の外を歩く学生たちの服が、四月の初めより薄くなっていることに気づいた。
遥は、机の上の新しい表を見た。
モデルに渡す数字が増えた、というより、数字の前後が戻ってきた気がした。
何を温めたか。
その前に、何をしたか。
どのくらい、どんな環境に置いたか。
その後、何をしてから測ったか。
これまでは、記述子が材料を表し、温度が作り方を表すと思っていた。
今は、一つの温度の数字だけで作り方を表すには、何が足りないかが、少し見えている。
遥は、process_steps_v01.csv と process_feature_dictionary_v01.csv を保存した。新しく作り始めた工程記録と、入力候補の定義だった。
前の membrane_modeling_v03.csv や、予測結果のファイルは、変更していない。
slack へ共有する文章には、今回分かったことと、まだしていないことを並べた。
同じ入力となっていた二つの膜について、作製手順を照合しました。
同じ 80 ℃でも、原著論文では工程の位置、時間、雰囲気が異なっていました。
工程の順番と記載の根拠を残す表を作り、モデル入力へ取り出す情報を検討しています。
この違いが物性差の原因であること、また新しい入力で予測誤差が改善することは、まだ確認していません。
次は、定義をそろえて他の記録も整理し、比較に使える範囲を確認します。
送信した後、遥は二つの点の図へ戻った。
点の位置は、朝と変わっていない。
ただ、その横には、同じ数字に縮められていた二つの手順がある。
別々の報告値を当てる方法を探す前に、別々の膜として何を伝えるべきかを考える。
それは、新しい構造と作製条件を提案するときにも、必要になるはずだった。
遥は、二本の線の下へ、次の問いを書いた。
この違いを、まだ作っていない膜についても使える入力にできるか。
80 という数字は、もう、二つとも同じには見えなかった。
===
続きはこちら
