データ化学工学研究室物語
第Ⅱ部 高精度モデルの落とし穴
学部四年生から修士課程へ。実際の研究で調べ、試し、考え、自分の問いを育てていく。
第1章 卒業研究テーマが決まる
四月になっても、研究室のキーボードの音は変わらなかった。
変わったのは、遥が座る場所だった。
見学やトレーニングのときに使っていた打ち合わせ用の机ではなく、窓際の一角に、自分の席ができていた。机の上には、研究室のパソコンと、卒業研究用に買った新しいノートがある。
隣の席では、同期の学生が電源コードをほどいていた。
「いよいよ研究だね」
「うん」
返事をしてから、遥はパソコンを開いた。
slack のトレーニング用のやり取りには、先週の最終発表の資料が残っている。次の課題は、まだ届いていなかった。
十週間、毎週そこに書かれたことから一週間が始まった。
今度は、何から始まるのだろう。
午前中、四年生になった五人が打ち合わせ用の机に集まった。先生は、顔合わせで使った資料をもう一度開いた。
研究成果をあげること、ではなく。
研究成果をあげ続ける力をつけること。
遥は、新しいノートの最初のページに、その言葉を書いた。
「トレーニングが終わりました。これからは、実際の研究テーマを相談して決めます」
先生は、一人ずつ、どんな研究に興味があるかを尋ねた。
反応の収率を予測してみたいという学生がいた。プラントの運転データを扱いたいという学生もいた。卒業後についても、就職と進学の間で迷っている人、修士課程を考えている人と、答えはそれぞれ違っていた。
資料の後ろには、博士後期課程についてのページもあった。
博士を経て企業で研究する、という進路の矢印が、遥の目に入った。
「進路は、研究をしながら考えていってください。博士課程も、大学教員になる人だけの選択肢ではありません。関心が出てきたら相談しましょう」
博士課程。
まだ、遠かった。
遥はノートの端に、その言葉だけを書いた。今日決めなければならないのは、もっと手前にある気がした。
「瀬戸さんは、高分子膜でしたね」
先生に呼ばれ、遥は顔を上げた。
「はい。高分子の構造と、膜の作り方の両方から、性能を考える研究をしたいです」
「トレーニングで、どこが一番気になりましたか」
遥は、少し考えた。
「同じ構造でも値が違うところです。それから、新しい構造を予測したいのに、既知の構造から離れるほど予測の根拠が弱くなるところです」
先生は、手元の資料を一枚出した。
高分子構造と製膜条件を考慮した、二酸化炭素分離膜の性能予測。
仮の研究テーマだった。
「研究室に、先輩たちが文献から整理してきたデータがあります。構造だけでなく、作製条件をどこまで考慮できるかも調べていました。まず、その仕事を引き継ぐところから始めてみませんか」
遥は、その題名を見た。
前の発表と、言葉は似ている。
けれど、今度は演習用のデータではない。論文を読み、実験の条件を確かめながら、誰かが少しずつ集めてきた記録だった。
「お願いします」
答えると、先生は題名の下の空白を指した。
「では、このテーマで、瀬戸さんは何を明らかにしたいですか」
遥は、題名をもう一度読んだ。
「構造と製膜条件から、膜の性能を予測したいです」
「それができると、次に何を判断できるようにしたいのでしょう」
題名を言い換えただけでは、足りなかった。
「まだ作っていない構造と製膜条件の組み合わせについて、次に実験で確かめる候補を選びたいです」
「はい。そのために、今の方法で何ができて、何ができていないかを確認しましょう。題名が決まっても、研究する問いが全部決まったわけではありません」
遥は、題名の下に書いた。
まだ作っていない構造と製膜条件を、次の実験候補として比較できるか。
そのために、今のデータと方法には何が足りないか。
先生は、その二行を見た。
「最初は、それを調べるところからでよいです。調べた結果、問いを絞り直すこともあります」
研究テーマが決まるとは、あとは手順どおりに進めればよい状態になることだと、どこかで思っていた。
実際には、題名の下に、考えるための空白ができたところだった。
午後、紺色のパーカーの先輩が、遥の新しい席に来た。
「引き継ぎ用のフォルダを、slack に共有しました」
中には、データ、プログラム、過去の発表資料、文献の一覧が入っていた。
membrane_records_v02.csv。
membrane_descriptors_v02.csv。
baseline_prediction.ipynb。
analysis_notes.txt。
「この一式は、前に結果を出したときの版です。まず、同じデータと設定で、同じ結果になるか確認してください。今整理している新しいデータとは、混ぜないようにしましょう」
遥は、analysis_notes.txt を先に開いた。
使用するファイル名。目的変数の列。計算する記述子。分割の設定。過去の結果。
途中には、「確認中」と書かれた項目もあった。
「完成版ではないんですね」
「研究の途中なので。僕より前の先輩が集めた記録もあります。分かっていることは書いてありますが、全部の行を僕が原著論文まで確かめ終えたわけではありません」
遥は、表を開いた。
record_id、source_id、structure_group。
繰り返し単位の構造。
製膜条件、測定条件。
二酸化炭素と窒素の透過係数、選択性。
列名は、トレーニングで見たものと似ていた。
一方で、説明欄はずっと長かった。原著論文の表から取った値、本文中に書かれていた条件、別の文献で再掲されていた値。それぞれの記録に、違う来歴があった。
空欄もある。
ただ、その空欄が何を意味するかまで、すべて書かれているわけではなかった。
トレーニングのデータ辞書では、読めば一つずつ意味が分かった。今度は、説明を読んでも確認が必要な場所が残る。
遥は、ノートに小さく「出典」と書いた。
「今回も、目標は透過係数が 1,000 Barrer 以上、選択性が 25 以上ですか」
「そのままでは決めません。あれは演習用の値でしたね。今回は、対象にする条件と、何に使う予測かを整理してから相談しましょう」
先輩は、候補選択ではなく、既存の解析結果を開いた。
「二つの物性を扱う研究を目指しますが、引き継ぎの最初は、二酸化炭素透過係数のモデルを確認します。選択性まで一度に進めて、どこで違いが出たか分からなくなるのを避けたいので」
遥はうなずいた。
最初の仕事は、新しい高性能材料を選ぶことではなかった。
先輩がどのデータを、何の目的で、どう使ったのかを、自分の手元でたどれるようにすることだった。
翌日、遥は引き継いだフォルダを複製し、元の一式はそのまま残した。
Notebook に使われているのは、トレーニングでも扱った k 近傍回帰だった。透過係数は常用対数に変換されている。
解析用には、所定の測定温度で単一気体を測った記録から、透過係数と入力に必要な値がある行を取り出していた。収集した表の全行を、そのままモデルに渡しているわけではなかった。
前処理とモデルは Pipeline にまとめられ、近傍数はトレーニングデータの中で選ぶようになっていた。外側の評価には、グループを分ける処理があった。
遥は、少し安心した。
標準化を先に全データでしてはいけないことも、評価側を見ながら近傍数を選んではいけないことも、コードに反映されている。
原料や膜を準備する前に得られない値を、入力に入れている様子もない。
これなら、まず動かせそうだった。
実行すると、途中でファイルが見つからないというエラーが出た。
読み込むフォルダの場所を直し、どこを変えたかをメモする。別のエラーでは、研究室の実行環境の説明を確認した。値の計算を変える修正なのか、手元で動かすための修正なのかも、分けて残した。
ようやく最後まで動いたとき、実測値と推定値の散布図が表示された。
対角線の近くに、点が集まっていた。
外側の評価結果には、次の値があった。
MAE:0.10。
RMSE:0.15。
二つとも、二酸化炭素透過係数を常用対数に変換した尺度での誤差だった。
遥は analysis_notes.txt の数値と照らし合わせた。記載された桁では一致している。
対象サンプルの一覧と分割の記録も、保存されていたものと一致した。
自分のパソコンでも、先輩と同じ結果が出た。
ノートに「再現できた」と書くと、今まで新しい席で少し浮いていた自分が、研究の中へ入れたような気がした。
トレーニングで未知の構造を予測したときの MAE は 0.41 だった。今度の 0.10 は、それよりずっと小さい。
ただし、違うデータに対する値だった。
遥は二つの数字を並べかけて、やめた。サンプルも、含まれる構造も、作製条件の情報も違う。前より良いモデルになったと、それだけで言ってはいけない。
それでも、目の前の散布図は、うれしかった。
次には、この結果を少し良くしたい。
記述子を増やせば、まだ良くなるだろうか。別の回帰手法ならどうだろう。
遥は対話型AIを開き、考えられる追加検討を尋ねた。
入力の表し方を変える。別の回帰手法を比較する。誤差の大きいサンプルを調べる。データの偏りを確認する。
どれも、もっともらしかった。
新しい手法の名前を二つ、ノートへ写したところで、最初の進捗報告の日が近づいていることに気づいた。
今から動かせば、比較の図をもう一枚増やせるかもしれない。
その方が、報告らしくなる気がした。
四年生になって初めての進捗報告会で、遥は、再現した散布図を映した。
「引き継いだデータとプログラムを使い、過去の解析結果を再現しました。二酸化炭素透過係数の対数値について、外側の評価の MAE は 0.10、RMSE は 0.15 でした」
使ったデータの版と、評価手順も説明した。
先生はうなずいた。
「同じ結果までたどれたのはよいですね。では、何を予測できることを、この図で確認しましたか」
「高分子の構造と製膜条件から、未知の膜の透過係数を予測しています」
「この場合の『未知』は、何が未知ですか」
遥は、グループ分割の図を出した。
「構造ごとにグループを分けているので、未知の高分子構造です」
「構造のグループは、どう決めましたか」
「データにある structure_group の列を使いました」
先生は、コードではなく、データの説明を開くように言った。
structure_group:収集時に付与した構造のグループ番号。
そこには、そう書かれていた。
「同じ化学構造には、この表の全体で同じ番号が付いていますか」
遥は、すぐには答えられなかった。
同じ番号の行が評価側とトレーニング側に分かれていないことは、確かめた。
しかし、番号の違う行が、本当に違う化学構造を表しているかまでは確認していない。
「そこは、まだ調べていません」
声にすると、画面の端にある 0.10 が、さっきほど確かな数字には見えなくなった。
自分は、トレーニングで何を学んだのだろう。
同じ構造を両側に入れない。使いたい未来を再現する。言葉なら、何度も説明した。
今回は、グループ分割の処理があるのを見て、その言葉を確かめたつもりになっていた。
先輩が、隣から説明した。
「その番号は、文献ごとに整理していた表から引き継いだものもあります。同じ構造の表記を、文献をまたいでどこまでそろえたかは、確認が必要です」
先生は、遥のスライドへ視線を戻した。
「プログラムが行っているのは、与えられた番号でグループを分けることですね。それが、瀬戸さんの考える『未知の構造』と一致するかは、データの意味の側で確認する必要があります」
コードには、明らかにおかしい処理がなかった。
だからこそ、安心してしまった。
遥は、「未知構造への予測性能を確認した」という一文を見た。
その下に、修正する内容を書いた。
引き継いだグループ番号による評価結果を再現した。
番号と化学構造の対応は確認中。
先生は、そのメモを待ってから続けた。
「今日は、モデルが使えないと結論したわけではありません。まだ、何に使えるという根拠になっているかを、確かめ切れていないということです」
遥は、小さく息をついた。
「結果を再現することは必要です。ただ、その結果を自分の研究目的に使うには、もう一つ仕事がありますね」
「はい。前の解析の目的と、自分が予測したいものが同じかを確認します」
次のスライドには、追加で試そうとした手法の名前があった。
先生は、それを否定しなかった。
「手法の比較も候補です。ただし、その前に、比べた数字が何を意味するかをそろえたいです。今、一つだけ先に確かめるなら、何にしますか」
遥は、まだ白い部分の多いデータ辞書を見た。
「違うグループ番号になっている行の中に、同じ高分子構造がないかを確かめます」
今週の報告で、自分から置いた、最初の次の一歩だった。
報告会のあと、遥は席へ戻った。
再現したグラフを閉じる気になれず、そのまま見ていた。
先輩が、隣に椅子を寄せた。
「全部やり直しだと思っています?」
「少し」
「動くところまで確かめたことは、残っています。今回の結果が、どのファイルと設定から出たかも分かります。そこがそろっていれば、データの整理を変えたとき、何が変わったかを調べられます」
遥は、再現用に保存したフォルダを見た。
作業した意味が、なくなったわけではなかった。
「でも、また、言われたプログラムを動かしただけになっていました」
「動かすことが悪いわけではありません。それを何の確認として行ったか、次に何を自分で確かめるかですね」
先輩は、過去の発表資料の最後を開いた。
文献間の構造表記の対応付け。
重複する記録の確認。
作製条件の記載範囲の整理。
今後の課題として、三つの項目が残されていた。
遥は、そのスライドを先に読んでいなかった。モデルの説明と結果のページを見れば、解析の要点は分かると思っていた。
引き継がれたのは、完成した答えではない。
できたことと、まだできていないことが、一つのフォルダに入っていた。
「構造をそろえれば、MAE は大きくなりますか」
「そうなる可能性はあります。でも、まだ確かめていません。今の小さい誤差が何によるのかも、一つの理由に決めない方がよいです」
「先輩の結果が間違っていたということではないんですね」
「元の条件で得た結果と、それを別の目的へ使う判断は分けましょう。もし処理やデータに誤りが見つかったら、直す必要はあります。そのときは、どこがどう違ったかを残します」
遥はうなずいた。
先輩の結果を、疑わず受け取るのでもない。
間違いを見つけるためだけに読むのでもない。
自分の研究で使うために、根拠をたどる。
「まず、どの行から見ますか」
先輩に聞かれ、遥は表を開いた。
全体を一度に直すのは難しい。
最初に、番号が違うのに構造記述子の値がよく似ている二行を選んだ。
記述子が同じでも、構造が同じとは限らない。エタノールとジメチルエーテルの例を思い出し、繰り返し単位の構造も並べて表示した。
片方は左から右へ、もう片方は逆向きに描かれていた。見比べると、同じ原子のつながりに見える。
「同じかもしれません」
「では、どこを見れば確認できるでしょう」
「この構造式の出典です。共重合体なのか、単独の高分子なのかも、元の説明で確認したいです」
その二行の測定温度は同じだった。
透過係数と選択性も、表示された桁では一致していた。
一方で、source_id は違っている。
別の論文から集めた、別のサンプルなのだろうか。
それとも、同じ実験の結果が、別の論文でも引用されていたのだろうか。
遥は、source_id に対応する文献一覧を開いた。片方は高分子膜を作製して性能を報告した論文、もう片方は複数の膜の性能をまとめた論文だった。
まとめた論文の表には、小さな引用番号が付いていた。
引用先の題名を開くと、もう一方の出典と一致した。
画面の上では、二行に分かれていた。
けれど、その二行の向こうに、二回の独立した実験があるとは限らなかった。
遥は、二つの記録を削除しなかった。
新しい確認用の表に、record_id、構造、物性値、出典、元の表の位置を書いた。
確認できたこと:一方の表が、もう一方の論文を引用している。
まだ確認していないこと:同じ試料・同じ測定結果を再掲した値なのか。
次に見るもの:原著論文の表、実験方法、補足資料。
数値が一致するだけで、重複と決めてよいわけではない。
同じ構造でも、別々に作った膜かもしれない。同じ膜を繰り返し測った記録かもしれない。同じ測定結果を、資料だけ変えて収集したのかもしれない。
その区別は、モデルの種類を変えても分からなかった。
さらに、遥は保存された分割の一覧を見た。
ある外側の分割では、その二行がトレーニング側と評価側に分かれていた。
それだけで、全体の MAE 0.10 の理由が分かったわけではない。
しかし、「未知の構造を予測した」と説明する前に確認すべき場所が、具体的に一つ見つかった。
遥は先輩へ画面を見せた。
「この二行から、元の測定へ戻ってみます。あと、同じ構造と考えられるのに番号が違う行を、他にも探したいです。ただ、全部を自動で同じにする前に、いくつか元の論文で確かめます」
先輩は、メモの「まだ確認していないこと」を読んだ。
「よいと思います。構造が同じことと、観測記録が同じことも、別に整理しましょう。途中で判断に迷った行は、一緒に見ます」
遥は、その二つをノートに書き分けた。
同じ化学構造か。
同じ観測結果か。
トレーニングでは、「一行は何か」という課題が届いていた。
今度は、誰もその題名の課題を送っていない。
それでも、自分の結果を説明しようとしたら、その問いへ戻る必要があった。
夕方、隣の席の同期が、遥の画面を見た。
「モデル、できた?」
「先輩と同じ結果は出た」
「すごいじゃん」
遥は、散布図の下に開いていた文献の表を見た。
「でも、何を予測できたかは、まだ確認中」
そう答えても、前のように、何もできなかった一日だとは思わなかった。
新しいモデルは作っていない。誤差も小さくしていない。
その代わり、明日どの論文のどの表を読めばよいかが決まっていた。
机の向こうでは、別の先輩が学会発表の図を直していた。先生と二人で、一つの軸名について話している。
研究室の外で、自分の結果を説明する。
最終発表のあとに想像したことは、今も少し先にあった。
そのとき、あの二行を「二つの実験データです」と、根拠を持って言えるだろうか。
いま原著論文へ戻ることも、その発表につながっているのかもしれなかった。
遥は、slack に短い進捗を書いた。
引き継いだ版のデータと設定で、過去の評価結果を再現しました。
ただし、structure_group が文献をまたいで同じ構造をまとめているかは、未確認です。
異なる番号の二行について、構造と数値が一致して見え、出典同士にも引用関係があることを確認しました。
まず原著論文へ戻り、同じ構造なのか、同じ観測結果の再掲なのかを分けて調べます。元のデータは変更していません。
最後に、相談したいことを一つ加えた。
再掲された同じ測定結果と、独立に作製・測定された膜の結果を、解析用データでどう区別するか相談したいです。
先生から、返信が届いた。
その二行と、確認した出典を、次回一緒に見ましょう。
再現した結果と、そこから分かった確認事項を分けて書けていると思います。
分からないところは、調べた範囲と一緒に持ってきてください。
遥は、ノートの最初のページへ戻った。
高分子構造と製膜条件を考慮した、二酸化炭素分離膜の性能予測。
この春、決まった研究テーマだった。
その下には、まだ作っていない材料を比較したいという、少し大きな問いがある。
さらに下へ、小さな問いを足した。
この二行は、二つの独立した観測なのか。
題名から見ると、ずいぶん手前の話に思えた。
でも、ここを曖昧にしたままでは、先の予測を自分の言葉で説明できない。
引き継いだデータを使うことと、引き継いだ判断をそのまま使うことは、違っていた。
遥は、読む予定の原著論文を開いたまま、明日の作業を一行だけ書いた。
まず、この数字が生まれた場所を確かめる。
次の課題が届くのを待つ必要は、もうなかった。
===
続きはこちら
