時間つっこみ力
Enhanced SuffixArrayのchildtabの定義に半日を溶かして思う事。
若い頃はどこまで時間を突っ込まずに目的を達成するか、という事を重視していた気がする。 無駄な事をなるべくしない。必要な所だけを読む事で、はやく教科書や論文を理解する。 効率的にトレーニングする。
でも、最近はあまり何かを効率的にする事には意義を感じない。 重要な事を短時間で終えても、あまった時間を無為に過すだけだよなぁ、と感じるシチュエーションが増えた気がする。
たぶん歳をとると、やらなきゃいけないたくさんの事、というのが無くなっているからに思う。 今の自分はほとんどやらなきゃいけない事は無い。
学生の頃はやらなきゃいけない事がたくさんあったのだろうか? 早く場の理論を理解したくて、そのためには相対論と量子論を理解したくて、その為には外微分だとか統計力学だとかいろいろな事を学ぶ必要があった。 それらを10年かけてやろう、と思ってはいなくて、どこの大学院とか研究室に行くかを決めるまでにすべてやりたいと思っていた。
もっとゆっくりやるのでは駄目だったのだろうか?駄目だっただろう。金が無かった。 大学院の入試の前に3年くらい勉強するかな〜、という選択肢は無かったように思う。
今は何事にも期限もなければ、やらなくてはいけない事も無い。 一応、やりたい事というのはあって、そこに関心などが続いている間に終えたい、とは思っている。 それが期限的なプレッシャーになるのだが、これはかつてよりもずっと弱い。
何かを学んだり練習したり、という事が、その結果のアウトプットではなく、 その過程が一日の時間を占める事、一日の過ごし方の方に重点が移ったように思う。 それらの時間は、減らしたいというよりはむしろ増やしたい。
塩野七生さんはローマ人の物語のポエニ戦争の所で、教科書では3行で終わる所を本2冊かけて味わうのが大人の歴史だ、 という趣旨の事を言っていた。 あれはとても良い言葉だな、と思った。
ポエニ戦争に限らず、必要という訳では無いが興味のある事にたくさんの時間を掛ける、 時間をつっこむ力のようなものの方が、 時間を短く何かを達成するよりも重要になっているように思う。 時間つっこみ力。
時間をたくさんつっこむのは、結構大変である。 集中を続けるのた大変だし、どうでもいい事で時間を浪費しがちだ。 時間つっこみ力は、 ある程度の個人差があり、また訓練で伸ばせるものにも思うし、 伸ばす事でしか得られないものもあると思う。
例えばさきほど数時間を費やした、Enahanced Suffix Array。 これはもともとは【書籍】原論文から解き明かす生成AIのSentence Pieceの所のコードがわからなくて読んでいた事だ。 この本は生成AIの本であり、そのうちのトークナイズは全体から見ればそこまで中心的なトピックでは無い。 Sentence Pieceのコードは理解出来なくても、 ユニグラム言語モデルでどう分割されるかを理解出来ていて、それを高速に行う方法があるらしい、 程度の理解があれば、先を読むには十分だろう。
ある程度理解するにしても、どの程度までやるかも自由度がある。 Enhanced Suffix Arrayをちゃんと理解しなくても、Suffix Arrayの高速な生成アルゴリズム、SA-ISというのがあって、 さらにSuffix Treeとの違いを理解しておいて、何かSA-ISにSuffix Treeと同じような事が効率的に出来る補助的な何かを生成して、 それを使っているらしい、程度の理解をしておけば、まぁこの辺の雰囲気はだいぶ分かる。 間違い無くそれ以上の理解が生成AIというものを理解するのに必要という事は無いだろう。
だが、Enhanced Suffix Arrayをちゃんと理解しよう、とするなら、ずっと多くの事を要求される。 まずはlcp-tableに慣れる必要がある。これはlcp-tableの定義を見てその先にどんどんでてくる定義を読んでいくだけではちょっと難しく、 実際にいろいろな例で使ってみる必要があるだろう。 いろいろな例でlcpインターバルなどを計算したり、 それを応用してみたりする過程で、lcpテーブルだけの参照でいろいろな問題が解けて、 元の文字列を走査する必要がない、という事を理解していく必要がある。
そうした解説が一番しっかりされている元論文を読むと、 かなりの部分がゲノムの解析の例で解説されている。 この辺の話題をかなり突っ込んで理解していないと、解説がほとんど理解出来ない。 どういう問題を解こうとしていて、普通にやるとどの程度のコストになるのか、E-coliでやるとどのいくらいのスケール感なのか、 など、話はどんどん膨らんでいく。
こういう、必要では無いけれど興味深い事、にどれだけ時間を突っ込めるか、というのは、時間つっこみ力が試される所に思う。 よーし、もう全部ちゃんと追うって決めたので今週は全部これやるぞ!と決意して、 ずっと図書館にこもったりする。我ながらなかなかの時間つっこみ力だな、と自画自賛。
そうした事を理解しなくても生きていくのには特に問題は無いが、 こうした時間を突っ込む事でしか遭遇出来ない感動がたくさんある。 Enhanced Suffix Arrayにはゲノム解析の長い積み重ねの果てにたどり着いたにふさわしい重厚さがある。 その長いゲノムの解析をトークンに応用する、この味わい深さ。 これを素通りするなんて、なんともったいない!
時間を削ってなにかを早くするのは若者がやればいいだろう。 我々おっさんは、ほとんど進まないものに時間をどれだけ突っ込めるか、 という所でこれまでの人生の経験を見せていきたい。