いないち日記

大阪で Information Retrieval を勉強する大学生の日記。

2019/10/14-2019/10/20

ここ最近はプログラミングが楽しくなってきて全然提案手法に移れていない。。

Github に研究ノートを移す関係で過去の Evernote を回ることがあって、いろいろな復習ができた。去年に勉強した Autoencoder はこんなにいろいろあったっけというぐらいたくさんの亜種がメモられていた。

前はあまり気が進まなかった一人 pull-request, issue, branch も気持ちがわかってきた気がする。論理的な差分が目に見えやすいので、週ごとの作業をまとめたりもやりやすい。

2019/10/07-2019/10/17

タイトルがいつの間にか日曜区切りでなくなっていたので出直し。

人生のあらゆるメモを Github に集約させようと考え始めた。

まずは文献管理。1 bibtex = 1 file としてプレーンテキストで保存。メモは Issue。Issue ID を primary key にして、Issue <-> PDF (Dropbox) <-> bibtex の管理をする。するとなんと、論文もモダンに

> XXX et al (#3) introduces...

とかかけてしまう (TODO だけど)。これは便利で、Overlief の便利さ凌駕する。
これが楽しくて、週の大半はこれに費やした。

あとはメモ帳。今まで Evernote で書いていたが、Markdown やスレッドに対応している Github の方がより魅力的に見えた。

2019/09/30-2019/10/06

10月に入ったというのに一向に涼しくならない... と嘆いていると、$さんにもうすでに涼しいと言われる。太ってから体感温度が一気に上がってるせいだろうか、痩せないと..

重い腰を上げて WMD を実装してみた。PuPL というライブラリを使うと線形計画法が簡単に実装できて、コードも数行で済んだ。便利。

最先端 NLP に発表資料一覧が上がっていたのでざっと見てみる。実行委員の@さんにも誘われたことだし、スケジュールの問題が無ければ発表したかったなぁ。気になったのは % さんの Don't Settle for Average, Go for the Max: Fuzzy Sets and Max-Pooled Word Vectors. これは文の類似度を集合演算で測る方法。BoW でJaccard 係数みたいな集合演算を使う場合に (元が BoW なので) 各単語が意味的に独立してしまうという問題を解決するため、word embedding を使ってもっと fuzzy にしていくというストーリー。

2019/09/23-2019/09/29

 \mathbf{\mathrm{R}}^d に対する TF-iDF (あるいはそも smoothing) のようなものをぼんやり考えている。結局 word embedding はそのままだと密すぎて使えないので (# さんにもこの間のフィレンツェで false positive が多くでそうと言われていて、その通りになった)、やっぱりベースは BoW にしたいという思いがある。TF IDF もつまるところ単語の出現頻度を確率とみなしたエントロピーなので、近い概念を連続量かつ多次元に拡張できればいいんだけど...

Github の issue ベースで開発をしてみた。チケット管理ベースだと全タスクが一望できるのでいい。今までの失敗も踏まえて、できるだけスムーズにコーディングに移れるようにする (例えば asignee とか tag とかはつけない)。ソロプレイにはソロプレイなりの使い方があるはず。

研究室旅行で城崎温泉に行った。昭和の町並みが色濃く残っていて良い。

2019/09/16-2019/09/22

学部時代の研究室の # 先生の還暦パーティーがあった。さすがはバイオ系の研究室で、集まった人たちもそちらが多かった。ちょうど理化学研究所のチームリーダーの $ さんと関西大学の教授の & さんと話していたとき、ある論文の話題になる。

Suzanne Rohrback, et al. Genomic mosaicism in the developing and adult brain. Developmental Neurobiology. 2018.

なんと人間の脳細胞中のゲノムは同一でないという現象が確認されたらしく驚く。遺伝子発現レベルならわかるけど、まさかゲノムまで違うとは。

研究の方では行き詰まりが出てきたので、気分転換にソフトウェアエンジニアリング的なことに足を突っ込んでいた。AI2 のリポジトリを見ながら (悩んだときは AI2 の Github, というのはアメリカでのメンターの教えでもある)、テストはこういう構造でこう書けばいいのか、なんてことをまねたりしていた。型レベルのバグは mypy のおかげで見つからなかったけど、型が同じで内容が違う、というのは結構見つかる。

2019/09/09-2019/09-15

同志社大学で経済学の研究をされている%先生のところにお邪魔して、Python のレクチャーをしてきた。それにしても同志社はきれいで、学食は本当にレストランという感じで、学生より30代~のお客さんが目立つ。

先週考えていた von Mises Fisher 分布を早速試してみると、数値が思いのほかすぐオーバーフローしてしまうことがわかった。もちろん本当は確率分布なので最終的にはオーバーフローは起こらないが、 \kappa^{n/2} とかベッセル関数とか個々のパーツがどうしても極端に大きくなる。とりあえずこのアイデアは凍結。

#さんが研究でクラスタ数をよしなに推定するクラスタリング手法について探しているときいて、個人的にも興味があったのでいろいろ調べてみると、PRML の著者が書いた論文を見つけた。

Adrian Corduneanu & Christopher M. Bishop. Variational Bayesian Model Selection for Mixture Distributions. AISTAT. 2001.

(ざっとしか見てないけど) この手法は厳密にはクラスタ数はハイパーパラメータだけど、混合係数を変分推定で推定することで説明力の乏しいクラスタの係数が 0 に近づいていくので結局無視できる、みたいなことを書いてある。なぜだと思っていろいろ調べてみると、こんな資料を見つけて、変分下限が近似分布における観測データの尤度 (の対数) と、事前分布と近似分布の Kullback–Leibler divergence との和に分解できること知る。後者は MAP 推定と本質的に同じで、ここが正則化の役割を果たしているからかな、と思う (間違っているかもしれない...)。

2019/09/02-2019/09/08

修論を書き始めた。いつものように目標は高い方がいいということで、関連分野でネットに上がっている Ph.D. thesis なんかを読んで様式を学ぶ。今週はほとんどを論文執筆に費やした。

位相・集合・多様体勉強会 (学内) で発表した。自分の担当範囲は一様連続を位相的に定義した後、距離空間の完備性やプレコンパクトを定義していく箇所。メインは  (\mathbf{R}, d^1) は完備であるという証明。教科書の証明方法がすごくて、  N(x) = \{ n | n \in \mathbf{N}, a_n \leq x\} なる  N(x) が有限集合となる  x の集合  M = \{ x | x \in \mathbf{R}, \mathrm{card} < \aleph_0\} の上限が実は  (a_n) n \to \infty 極限であるという示し方を取っている。この集合の定義の裏にあるアイデアがなかなかわからない。

研究の方はいくつか新しい側面を思いつく。1つは query expansion と embedding search の関係。query expansion が word embedding + k-NN で実装されているなら、もしかして実は両者は等価だったり、あるいは何らかの包含関係があったりするんじゃないかなぁ。だとしたら何かパラダイムシフトを起こせるんじゃないかなぁ。とか。もう1つはパラメトリックな手法について。先週は alignment をとって半ば強制的に部分空間をとっていたけど、もっとシンプルに、文書中のすべての embedding をプロットしてパラメトリックに分布を推定したらいいんじゃないかなぁという話。例えば word embedding とかは方向のみ意味を持つ (ノルムには多分意味がない、少なくとも最適化はされていない) ので、von Mises Fisher 分布で最尤推定とかして分布同士の KL divergence とかとればどうなるんだろう。少なくともグラスマン多様体のアプローチでうまくいっているなら筋は悪くなさそう。とか、そんなことを考えていた。NTT のインターンで von Mises Fisher 分布のパラメータ推定式は導出したはずなんだけど、すっかり忘れたので以下の論文で復習。

Clustering on the Unit Hypersphere using von Mises-Fisher Distributions. JMLR. 2005.