B1 の授業といえど役に立つ

9月の毎週金曜日は仕事を少なくする日にしようと思っているのだが(月〜木まで集中授業があったりするので)、逆にいろんな勉強会が金曜日に入ってしまったので、ほとんど休めない(汗)

今日は NL 研の原稿1件と EACL の原稿1件を見る。

NL 研の原稿の方は、1つのタスクの結果が変なのだが、原因がよく分からない。訓練データの loss は下がっていて、開発データでも性能は高くなるのだが、テストデータでの性能は開発データでの性能と反比例する、という現象。このデータではアーリーストップするモデルがどうもいいようなのだが、なんでそうなるのかよく分からない。

データ数が少ないのでテストデータに変なものがあるのかと思い、テストデータを見てもらったら確かに明らかにラベルが間違っているものもあるったようだが、全然ダメというほどでもない。システム出力と正解ラベルの散布図を描いてもらったら、開発データとテストデータの正解ラベル分布は同じくらいなのに、なぜか学習したモデルがテストデータに対して出すラベルの分布が違う、みたいな……。

EACL の原稿の方は、TACL に投稿していた原稿が残念ながら不採録で返ってきたので出し直しなのだが、実験結果はよいのだが、論文の主張として解析の速度を主要な貢献にするならちゃんと計算量を示してほしい、というのが一番大きな指摘で、ちょっと考えてみよう、と思って紙と鉛筆を使って計算。こういうことを落ち着いてできるのが、割り込みのない日を作るメリット。

結局 B1 のアルゴリズムの授業で使っている下記の「アルゴリズムイントロダクション第3版1巻」の付録の部分を参考にしたところ、計算量を示すことができたっぽい(授業をする側なので、このあたりに書いてあったな、と思って読み返した)。

情報理論の授業も最初担当したときは「専門とかなり違う」と思ったものだが(専門に関係するのは1/3くらい)、実はその後の研究に役立ったこともあるし、データ構造とアルゴリズムの授業も専門とは違うと思ったものだが(専門に関係するのは1/4くらい)、ちょこちょこ基礎知識として役に立つことがある。なので、自分は割と授業を担当するのは好きである。

しかし元々の論文では計算量は O(n log n) だと主張していたのが、実験結果的にはほぼ O(n) で動作しているようで、n がそんな大きくならないので log n の項が小さいのかなと思っていたのだが、導出してみた計算量は O(n) だった(ただし隠れている係数の定数がデータによってはそこそこ大きくなるのと、計算のためいくつかの近似をしているので、厳密に示そうと思うともう少し考えないといけない)ので、実は想定以上に理論的にも速いようだった(実装は相当速かったのだけど)。査読のコメントがなかったら確認しなかったのだろうけど、これ最初から確認していればよかった……(共著者として申し訳ない)。