20170216
今日はバイト。 tensorflowでの画像処理の勉強をしてた。
tensorflowがv1.0にアップデートされ、メンターの人のテンションがちょっと高めだった。 どうアップデートされたのかは知らないのだが、とりあえず書くのが簡単になってるといいな。 でもtf.kerasが見つからないってマジ…? 期待してたんだけどな…。
昼食は「かつや」に行った。ロース定食とヒレ定食が150円引きの日だったので混んでてちょっと並んだ。 いつも安いロース定食を選ぶのだが、150円引きだったのでヒレ定食にした。 しかしロースの方が好みだったかもしれない。
昼食後にコーヒー飲みながら気分転換に散歩した。 歩道橋の上は風情があるかと思ったのだが、意外とそうでもなかった。 いいコースを開拓したい。
晩飯はつけ麺。
帰ってサークルカットを描いて、 tensorflowのMNISTチュートリアルを、新しく来たPCで試してみた。 コードを写経して、書かれた通りのaccuracyが出た。
tensorflow初学者が詰まるのって、モデル作りよりかは、自前のデータをモデルに流し込む方じゃないかと思うので、 そのあたりがアップデートで良くなっててくれ、と思った。
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でアナロジー計算でレコメンデーションを行うという話も聞いた(気がする)。
Exploiting Image Generality for Lexical Entailment Detection
http://aclweb.org/anthology/P/P15/P15-2020.pdf
単語ベクトルを用いるのではなく、画像を利用して語のgeneralityを測ったアプローチの論文。
対象の単語をグーグル画像検索に入力し、そこにある画像のバリエーションから、その単語のgeneralityを評価する。
画像のバリエーションが多いようだったら、さまざまな外延を持つ一般的な単語っぽいし、バリエーションが少なければ、外延が少ない具体的な語っぽいという直観に基づく。