自然言語処理 画像キャプションのデータセット Cornell NLVR

Hacker Newsで取り上げられていた自然言語処理のデータセット Cornell NLVRの紹介です。

公式ページ:http://lic.nlp.cornell.edu/nlvr/

データセット:https://github.com/clic-lab/nlvr

論文:http://alanesuhr.com/suhr2017.pdf

これは、色の付いた図形が複数描かれた画像とキャプションのセットが与えられて、そのキャプションが正しく図を説明しているかを true/ falseで判定するタスクのためのデータセットです。データ数は92,244個でクラウドソーシングでデータを集めたそうです。

例えば、以下の画像のキャプションとして「There is exactly one black triangle not touching any edge」(他のエッジに触れていない黒い三角形がただ一つある)が与えられており、この正解ラベルは「true」となっています。

他にも、例えば次の画像のキャプションとして「There is a box with multiple items and only one item has a different color」(複数アイテムとともに一つ箱があり、ただ一つのアイテムが異なった色を持つ)が与えられ、この正解ラベルは「false」といったようになっています。

 

現在の、トップのテスト精度は公開データに対して約67%程度であり、ランダムに答えた場合よりも少し良いといった程度でしょうか。まだまだ、発展させる余地があるテストデータのようです。

Rustで書かれたNeural Network実装:Jaggernaut

Rust言語で書かれたJaggernautというNeural Networkの実装を見つけた。WebAssemblyに変換されて、ブラウザ上で動作させることが出来る。

Juggernaut: Neural Networks in a web browser

デモページでは3種類のデータセットに対して、学習率とエポック数を設定して、データが分類されていく過程が見れる。デモの実装にはReactとD3.jsを使っているが、Neural Networkの学習部分にはJavaScriptは一切使っておらずRustのみで書かれているとのこと。

まだ機能的にはフィードフォワードネットワークのみ対応しているようだが、数種類の活性化関数やコスト関数を用意しているとのこと。

こういったアプリケーションが増えて、将来的にRustは果たしてC/C++を置き換える言語に成りえるのか見守っていきたい。

「Machine Learning – A Probabilistic Perspective」第5章を読んだ

前回(「Machine Learning – A Probabilistic Perspective」第4章を読んだ)の続き。

第5章はベイジアン統計について。基本的に著者はベイジアンの立場を取っているようで、本書はここまでベイズ統計の立場から機械学習モデルの解説をしている。次の章は、頻度統計の立場の話だが、そこではなぜ頻度統計ではなくベイジアンの見方を取るべきなのかということが語られている。

分かりやすい解説スライドへのリンクを張っておきます。

目次は以下の通り。

  • 5 Bayesian statistics
    • 5.1 Introduction
    • 5.2 Summarizing posterior distributions
      • 5.2.1 MAP estimation
      • 5.2.2 Credible intervals
      • 5.2.3 Inference for a difference in proportions
    • 5.3 Bayesian model selection
      • 5.3.1 Bayesian Occam’s razor
      • 5.3.2 Computing the marginal likelihood (evidence)
      • 5.3.3 Bayes factors
      • 5.3.4 Jeffreys-Lindley paradox *
    • 5.4 Priors
      • 5.4.1 Uninformative priors
      • 5.4.2 Jeffreys priors *
      • 5.4.3 Robust priors
      • 5.4.4 Mixtures of conjugate priors
    • 5.5 Hierarchical Bayes
      • 5.5.1 Example: modeling related cancer rates
    • 5.6 Empirical Bayes
      • 5.6.1 Example: beta-binomial model
      • 5.6.2 Example: Gaussian-Gaussian model
    • 5.7 Bayesian decision theory
      • 5.7.1 Bayes estimators for common loss functions
      • 5.7.2 The false positive vs false negative tradeoff
      • 5.7.3 Other topics *

最初の方はベイズ統計を使って、どのようにモデルを決めていくかといった内容。MAP推定など。

5.6に経験ベイズの話があり、少し理解しきれていない箇所があるので調べた。以下のページが詳しい。

経験ベイズ

つまりは、事前確率が良く分かっていない状況で、データをもとにして事前確率分布を求めるということだろうか。

最後の方はFalse positiveとFalse negativeについてや、ROCカーブなどについて。この辺は適宜必要な時に見返せば良さそう。