雑談で聞けないことを話してる

今日も妻の出勤日なので上の子は保育園だが、ずっと晴れてそうだったので、自転車で保育園に行く。初めてだから30分くらいかかるかと思ったら、15分くらいで着いた。ちょっと怖いところもあるのだが、ほとんど車が通らない平坦な道なので、余裕のあるときは自転車で来てもいいなと思ったりする。(しかしそのような余裕の有無を上の子が理解してくれるかどうか不明なので、禁止したほうがいいのかもしれない)

午前中は論文紹介を聞く。本来は2人アサインしていたが直前に体調不良でキャンセルになったので、1人のみ。このようになることが時々あるので、論文紹介は2-3人をアサインしておいたほうがいいと思っている(1人だけにしていると、その人が都合悪くなると予定が全部流れてしまうので)。で、紹介してくれたのは下記の論文。スライド

  • Nikita Kitaev, Lukasz Kaiser, Anselm Levskaya. Reformer: The Efficient Transformer. ICLR2020.

これは Locality Sensitive Hash (LSH) を使って Transformer の速度を向上させるという論文。LSH 自体は10年くらい前に流行った記憶があり、自分もいくつかブログ記事を書いているようだが、推論時に類似度を高速に計算できるように、距離の近い事例はハッシュ値が同じになるようにする、という手法である。本論文は Transformer は全セルと他の全セルとの関係を計算するので O(n2) かかるが、全ての組み合わせを試すのではなく適当に切った近場のセルとだけ計算するようにすることで、計算量を O(n log n) に下げる、というアイデア(メモリ使用量を抑える話もあるが、それは割愛)。

Transformer の時間・空間計算量を減らしたいことは分かるのだが、近場だけ見るならそれは CNN でいいんじゃないか?という気もするし、系列長が2000トークン以上だと提案手法が高速と言われても、少なくとも自然言語処理タスクでそんな長いトークンを入れるタスクはあまりないし(実験も人工データで行っている)、言語というより画像関係のデータでないと使いどころがなさそうな気がしている(画像でも抽出された領域をトークンと考えると2000トークンも出てこないが)。

最近 Transformer を使っていて、(LSTM や GRU のような RNN と比較して)長い系列が苦手だなという感触があり、それは positional encoding のせいかと思っていたのだが(そのせいもあるだろうが)、どうもそれよりはデータとネットワーク構造の関係がポイントのような気がしている。

午後は研究会。B4 の人たちの自己紹介。色々な自己紹介があって面白かった。自分が B1 の授業で Aizu Online Judge を紹介したら、そこで初めてプログラミングに触れて競技プログラミングを始め、B3 のときには ACM IPCP に出た(アジア大会)、という話があり、とにかく B1/B2 の授業では授業の内容は軽くしておいて、調べたら分かるようなキーワード等のポインターを話すことにしているので、役に立っていてよかった。

別の学生も、B2 の自分の授業で最初は「この人雑談が長いな」と感じてたが(B1 だと1/2が雑談、B2 だと1/3が雑談、B3 だと1/4が雑談になるようにしている)、そのうち雑談こそ意味があるんじゃないかと思って聞くようになった、という話を披露してくれて、まさしくそういうつもりでやっているので、狙い通りに受け取ってくれて嬉しかった。ただ、意図通りに受け取ってくれない人もいて、そういう人は「雑談は聞きたくないからちゃんと授業しろ」と思うようで、「練習問題の解説をしないなら教員の意味がない」と授業アンケートに書かれたこともある(例題の解説はしているのだけど、問題とその答えを知ることが勉強だと思っている場合は、そう思うのは仕方ない)。

ちなみに、予備校時代に雑談が多めの授業を一緒に受けていた知り合いから、「あいつ自慢話とか雑談が多いからクソつまんねーし、授業料返せと思う」と言われて心底びっくりしたことがある。自分はむしろその雑談部分がものすごくおもしろくて、この雑談を聞くために授業に来ている(特待生だったので授業料は払っていない)くらいのつもりだったので……(授業の内容自体は予習しないと意味がない内容だったし、予習していれば例題の解説でしっかり分かるように作られていた)。

結局雑談部分で自分が伝えたいのは「なぜこの科目を(あるいはこの科目を含めた全体のカリキュラムで)勉強しているか」という部分であり、参加者に十分なモチベーションがあればあとは独学および相互学習するのが最善で(そのため研究室の基礎勉強会には教員は一切参加せず、予習段階は各自独習して、勉強会では相互に自分が勉強してきたことを他の人に説明する、という構成になっている)、教員が一から十まで教える必要はないと考えている。

予備校でも自分が受けて「これは受けて良かった」と思う授業はどれもかなりの授業(少なくとも春期講習は1週間の授業のほぼ半分、新学期も最初の2週間くらい、そして夏期講習も新規受講者がいるので1週間の授業の最初の1日のほとんど)をモチベーションの部分に割いていて、現役のときはポカーンと聞いていただけだったが、浪人してもう一度聞いてなるほどと納得したものである。モチベーションというのは、その科目がどう役に立つか、みたいな話ではなくて、そもそも勉強するというのはどういうことか(あまり勉強しないで入れるところに入るという選択肢もあるのに、わざわざ努力して勉強するという人生上の選択をする理由)、勉強をするとどのような世界が見えるようになるのか(実社会で話題のここにいま学んでいるこれが出てくるとか、こういう人が今こうしているのはこういうエピソードがあったとか)、というような話で、それは教科書には書かれていないし、本で読めるような話でもないので、ライブで話しているのである。学会の懇親会で聞けるような話、というべきか。まあ、聞いているときにそれが大事だということが分かる人は少数で、後になって(典型的には仕事をするようになってから)重要性に気がつく人がほとんどだろうが、時間差で学んだことの価値が分かるのも学校というものの醍醐味だと思うので、学生がその時には理解できなくてもこのスタイルで続けるつもりである。

一つできていないのは、難し目の問題を事前に解いてきてもらってそれを解説する、というやり方で授業をすることだが、これができるのはハイレベルの学生だけで、研究室内の勉強会ではこのスタイルでやっているのだが、B3 までの授業では本学だとこのスタイルは合っていないと思うので、易し目の問題を授業で解説してから復習で課題を解いてもらう、というスタイルにしている。意欲的な学生にはつまらない授業になっているのだが、そういう人は授業は普通に良い成績がつくようにしてあるので、他のことに時間を使ってほしい(雑談が聞きたい場合は雑談を聞いてほしい)、というメッセージである。

夕方はサーバ管理をしたり論文誌の原稿にコメントを入れたり。今週末が大学の法定停電なので、ディスクの整理をしていて研究室のファイルサーバを2日間止めてしまったりして申し訳なかったが、停電前に一応復旧し、卒業生のファイルのアーカイブを順次退避したりする。GPU よりディスク容量の方が最近は逼迫している気がする。