自分の最高の結果を、自分で再現できなかった

これまで自分が生み出した中で最も忘れがたい結果は、二度と再現できなかったものだった。プロジェクトの初期に、たった一度だけ、それまで見たどの数字よりもはるかに良い値を返してきた実行があった。私は有頂天になった。ところが、いざそれを足がかりにして先へ進もうとすると、その結果は消えていた——そして、そこへ戻る道を見つけられるだけの記録を、私はほとんど何も残していなかった。続く数週間、私は自分自身で生み出し、そして不注意に取り逃がした亡霊を追いかけて過ごすことになった。

これはプロジェクト全体の中でも、より示唆に富む失敗のひとつであり続けている。なぜなら、その教訓は市場やモデルについてのものではまったくなかったからだ。それは、科学をすることと、単に数字を生み出すこととの違いについての教訓だった。

取り戻せなかった結果

初期の頃、まだ何の規律も持っていなかった私は、緩いやり方で実験を回していた。一度にいくつもの要素を変え、出力をちらりと眺め、さらにいくつか変え、そのまま進み続ける。どの設定がどの結果を生んだのかを丁寧に記録することはせず、ただ速く反復し、重要なところは覚えているだろうと信じていた。覚えてはいなかった。

だから、ある実行がほかのものより劇的に良い結果を返してきたとき、私はその大きさをまだ理解していない問題を抱えることになった。それを再現し、確認し、その上に積み上げようとした——だが、できなかった。記憶を頼りに、おおよそ同じだと思える条件で再実行した。あの魔法は二度と現れなかった。私は本当に心躍るものをちょうど一度だけ生み出し、そしてそれを、鍵を捨てたことにも気づかぬまま、扉の向こうに閉じ込めてしまったのだ。

再現できない結果は、結果ではない

その厳しい現実がようやく訪れたとき、それは陰鬱であると同時に、同じくらい物事を明瞭にしてくれた。望んだときに再現できない数字は、ほとんど何も語ってくれない。あの素晴らしい結果は、本物の改善だったのか。乱数のサイコロが幸運に転がっただけだったのか。それとも、あの一度だけ、たまたま私を喜ばせてくれたバグだったのか。それを生んだ正確な条件を再実行する術がない以上、私にはこれらの可能性を見分けようがなかった。

そしてこれらは、まったく異なるものたちだ。ひとつは、一年分の仕事を積み上げる価値のある発見。もうひとつは、すぐに忘れるべきノイズ。三つ目は、突き止めて直すべき誤り。私のずさんな環境の中で、それらは一個の再現不能な数字へと崩れ落ち、そのどれであってもおかしくなかった——そして私は、それに本気の労力を賭けようとする寸前だった。再生成できない発見は、証拠ではない。それは、たまたま自分が目撃してしまった噂話にすぎない。

再現不能にする隠れた状態

私が理解しそこねていたのは、どれほど多くの目に見えないものが、結果を静かに決定づけているか、ということだった。すべてを初期化する乱数シード。データの正確なバージョン——その日に何がクレンジングされ、何がされなかったかまで含めて。設定(config)の中のすべての値。コミットしていない変更も含めた、その瞬間のコードの正確な状態。物事が実行された順序。

これらのうちどれか一つでも、たとえ無言のうちに、たとえ偶然に変わってしまえば、結果はずれうる。私はそのどれも固定していなかった。私の「実験」とは、動く部品がぐつぐつと煮立つスープであり、私はその出力を、校正済みの計器から得たクリーンで反復可能な測定値であるかのように扱っていた。それはそんなものではまったくなかった。それは、私が完全には制御できず、記録する手間もかけなかったシステムの中で起きた、一度きりの出来事だった。

決定性は、自分で選び取らねばならない

不都合な真実は、再現性はひとりでに生じたりはしない、ということだ。それは複雑なシステムのデフォルト状態ではない。デフォルトはむしろ、混沌であり、ドリフトであり、静かな再現不能性だ。もし同じものを二度走らせて同じ答えを得たいのなら、その性質を意図的に作り込まなければならない。

それはつまり、シードを固定して、少なくともランダム性を制御下に置くこと。データにバージョンを付けて、何で訓練し、何でテストしたのかを正確に把握すること。一つひとつの結果のそばに、正確な設定と正確なコードを記録し、数字が決して孤児にならないようにすること。一つの実行を、望んだときに意図的に、まったく同一に再実行できるものにすること。どれも華やかな作業ではない。だがそのすべてが、科学と、科学のふりをした賢しらな当て推量とを分かつものなのだ。

それを直した、退屈な規律

ようやくそれを取り入れたとき、その治療法はほとんど侮辱的なほどに退屈だった。私はあらゆる実験を、記録から再構成できなければならないものとして扱い始めた。どのデータか。どのコードか。どの設定か。何が何を生んだのか。もしある結果が、それを再生成できるだけの情報に結びついていないのなら、私にとってその結果は存在しないも同然だった。

これは最初、純然たる官僚仕事のように感じられた——本物の、心躍る仕事の邪魔をするオーバーヘッドだ、と。だがそれはオーバーヘッドではなかった。それこそが、私の焦りに満ちた、すぐ忘れ去られるもがきを、実際に積み上がっていけるものへと変換した、まさにその当のものだった。以前は、各結果は私が先へ進んだ瞬間に蒸発していた。以後は、結果が、信頼でき、比較でき、その上に積み上げられる記録へと積み重なっていった。官僚仕事こそが、科学だったのだ。

なぜこれが、ほかのほとんどどこよりもここで重要なのか

この規律を無視することが、この種の領域でとりわけ容赦なく罰せられるのには理由がある。この環境は並外れてノイズが多く、それはつまり、偶然がひっきりなしに、何の意味もない美しい数字を生み出し続けているということだ。まぐれ当たりはここでは珍しいものではない。それは絶え間なく降り続ける小雨だ。もし結果を再現できなければ、本物のシグナルを、こうした幸運な偶然のひとつから切り分ける術がない——そして幸運な偶然を追いかけ、それを発見だと取り違えることは、何カ月もの労力を何でもないことに注ぎ込む、私の知る限り最も効率的なやり方のひとつだ。

再現不能な最高の結果は、完璧な餌だ。それはまさに、ブレイクスルーのように感じられる類のものでありながら、実際にははるかに多くの場合、ただ一度だけこちらに微笑みかけてきたノイズにすぎないのだ。

より深い教訓——記憶ではなく、記録を信じよ

私が最終的にここから受け取ったのは、自分の記憶の中、あるいはスクリーンショットの中にしか存在しないあらゆる結果に対する、根深い不信だった。記憶は自分自身を編集する。切り上げて丸め、注意書きを忘れ、数字を覚えていながら条件を取りこぼす。再構成可能な来歴を持たない結果は、発見ではない。それは逸話であり、逸話こそが、この領域が人を破滅させるのに使うまさにそのものだ。

だから今、私が心躍る結果についてまず問うのは「それはどれくらい良いのか?」ではない。「それを、正確に、望んだときに取り戻せるか?」だ。もし答えがノーなら、それがどれほど良く見えたかはまだ問題にならない。なぜなら、私は自分が手にしているものが実際には何なのか、まだ分かっていないからだ。結果が再現できるようになるまで、それは私が所有する発見ではない。それは、かつて一度見た数字にすぎず、かつて一度見た数字は、ここでは何の価値もない。

— シグナルなし、リターンなし、投資助言ではない。