読者です 読者をやめる 読者になる 読者になる

Hyper-Восток

ずるずると進学した大学院生が自然言語処理について。

20170218

今日は早く起きすぎたせいか、 午前中に「けものフレンズ」とかを観てダラダラしたのに、 午後は寝てしまった。

夜は煮干しラーメンを食べに行ってから論文をひとつ読んだ。

やりたい実装があるのだが、どうもtensorflowの勝手がわかっておらず、難儀している。

あとは寝る前に絵を描かないとな。

20170216

今日はバイト。 tensorflowでの画像処理の勉強をしてた。

tensorflowがv1.0にアップデートされ、メンターの人のテンションがちょっと高めだった。 どうアップデートされたのかは知らないのだが、とりあえず書くのが簡単になってるといいな。 でもtf.kerasが見つからないってマジ…? 期待してたんだけどな…。

昼食は「かつや」に行った。ロース定食とヒレ定食が150円引きの日だったので混んでてちょっと並んだ。 いつも安いロース定食を選ぶのだが、150円引きだったのでヒレ定食にした。 しかしロースの方が好みだったかもしれない。

昼食後にコーヒー飲みながら気分転換に散歩した。 歩道橋の上は風情があるかと思ったのだが、意外とそうでもなかった。 いいコースを開拓したい。

晩飯はつけ麺。

帰ってサークルカットを描いて、 tensorflowのMNISTチュートリアルを、新しく来たPCで試してみた。 コードを写経して、書かれた通りのaccuracyが出た。

tensorflow初学者が詰まるのって、モデル作りよりかは、自前のデータをモデルに流し込む方じゃないかと思うので、 そのあたりがアップデートで良くなっててくれ、と思った。

20170213

今日は新しく研究用に買ってもらったマシンのセットアップだった。 置き場所作りとOSのインストールから、tensorflowがGTX-1080を認識してくれるようにするまで。 入れたubuntuが16.10だったため、kernel driverと合ったlibcuda1-*が自動的に入らず、手動で入れないといけないところとかで難儀したが、 ひとまずなんとかなった。

マシンのセットアップは意外に疲れるため、今日は論文一本読んで数学の勉強はサボってしまった。

あとは深夜までデレステをやっていた。

20170212

午前中は移動中に線形代数の勉強をした。 教科書は「ストラング線形代数イントロダクション」。 移動中に読んだだけなので、豊富な練習問題が解けてない。

あとは昼寝をして、絵の練習をして論文を1つ読んだ。

明日は指導教官とマシンのセットアップをする。 うちにもとうとうGPUが。 しかしtensorflowとかは使いこなせてない。 Kerasとかに期待。

WORD REPRESENTATIONS VIA GAUSSIAN EMBEDDING

概要

単語の表現をベクトル(点)ではなく、ガウス分布として獲得する手法を提案した論文。

従来手法との比較

従来の点で表現する手法は、ターゲットとするコンセプトのuncertaintyが表現できない。 ベクトル同士は内積もしくは余弦類似度で比較されるが、非対称性を持つ比較手法が定義しづらい。 平均と分散をデータから学習するガウス埋め込みを行うことで、uncertaintyが表現できる。 また、KLダイバージェンスを用いることで自然に非対称性を捉えたり、 楕円のinclusionなどを空間に持たせたりすることができる。

メソッド

手法の肝はガウス埋め込みを学習する際の距離関数の定義と、損失関数の定義。 SGNSだと語と文脈の距離は内積シグモイド関数に入れたものを使ってるが、 この手法では対称的なsimilarity measureとKLダイバージェンスの二通りがある。 学習方法自体はSGNSに似ている。

単純な共起から分布包含性を見ることの問題(哺乳類は意味が広いが出現する文脈が少ない)、などの問題をクリアできる?

評価

検証・評価は定量的評価と定性的評価。 ガウス埋め込みは50次元空間で獲得し、ベースラインはSGNSで獲得した50次元のベクトル。 一つのpositive exampleに対しnegative sampleをひとつ用意(少ない?)。

Specificity and Uncertainty

各ジャンルの語に対する最も近傍にある語100語を定性的に評価。 共分散行列の行列式の降順に並べると、小さいバリアンスを持つ語はちゃんと具体的な語になっている。 →specificityとuncertaintyの関係がちゃんと捉えられている。

Entailment

Entailmentのデータセットひとつで評価。 CosやKLダイバージェンスなどの教師なし指標のオプティマルな敷居値でのAP、F1を比較。 基本的に学習したガウス埋め込みで、KLダイバージェンスを用いた方が性能がよい。

Directly learning Asymmetric Relationships

人工的なツリーを、適当な初期値の二次元ガウス埋め込みで学習。 KLダイバージェンスの距離関数を使ってやると、うまいことツリーが空間に埋め込まれている。

Word Similarity Benchmarks

7つの類似度データセットで検証。 基本的にガウス埋め込みを使ったほうが性能がよい。

感想

パラメータが多くなってしまうのが重そう。 しかし、共分散行列で各次元の交互作用的なものが捉えられるのは結構おいしいのだが、 一語に対して平均ベクトルの次元数に加えて、その二乗個のパラメータが必要になってしまう。 対角行列を使えば二倍で済むが、その分リッチさは失われる。

著者ではないがgithubで実装が公開されている。 github.com

Multi-Prototype Vector-Space Models of Word Meaning

http://aclweb.org/anthology/N/N10/N10-1013.pdf

単語ベクトルの欠点である多義性に対応するために、表層系、基本形ごとに単語ベクトルを作るのではなく、単語の意味ごとにベクトルを作る。

具体的には、ターゲット語と共起した文脈語のベクトルをクラスタリングし、クラスタの重心を、その単語の一つの意味のベクトルとする。

二語の類似度計算は重心ごとの平均をとったり、もっとも類似度が高い重心間のものを採用したり。

クラスタリングのパラメータにクラスタ数があるが、 1クラスタの場合からKクラスタの場合まで、すべてのクラスタリングの各重心を考慮してもよく(なるほど)、 そうするとなかなかいい結果が出るようだ。

ちょっと重そうだけど。

Item2Vec Neural Item Embedding for Collaborative Filtering

[1603.04259] Item2Vec: Neural Item Embedding for Collaborative Filtering

バスケット分析などに使うため、同じカートに入った商品を文脈にして、 対象の商品を予測するようにNNを学習し、商品をベクトル化。

これにを用いて類似商品間の類似度を測り、レコメンデーションに用いる。

SIGAM13でアナロジー計算でレコメンデーションを行うという話も聞いた(気がする)。