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

神野さんに言われました。

AIの勉強をしています @sesenosannko

Show and Tell: A Neural Image Caption Generatorを読んだ

画像認識 論文

https://arxiv.org/abs/1411.4555

画像に注釈をつけるという有名な課題の2015年4月のGoogleの論文。 画像をCNNに入力し、中間層の出力をそのままRNNLMに入力するという半ば強引な手法で精度が向上した。

NLPを勉強するにあたって、文章に性格(人格?)を付与するというのを目標に考えようと思ったんですが、end-to-endの画像注釈問題は文章への文章以外による情報付与ということで参考になるかなと思いました。 この手法では画像と文章が同じ空間のベクトルに表されることが前提とされているので、性格をどのように落としこむかというのが大きな問題ですね。

まぁ、できる予定は全くないです。 単純に論文として面白いので読んでいきます。 括弧内は僕のコメントです。


Abstract

教師データの画像脚注のみで正確な情報と言語モデルを持った画像脚注を生成。 訓練画像に関する脚注の最尤推定を行う。


1. Introduction

物体認識だけでなく、物体間の関係性も学習しないといけないので難しい。 もちろん、言語モデルも学習しないといけない。

従来は画像処理、言語モデルに関して既存の技術を用いて画像注釈にアプローチしていた。 しかし、提案手法では画像を入力して文章を出力するひとつながりのモデルが使われている。

RNNを用いた機械翻訳に着想を得ている。

CNNによって領域検出や物体検出などの画像認識タスクに使える固定長ベクトル表現が得られることが知られている。

提案手法の特徴は以下のとおり。

  1. SGDで訓練可能なend-to-endシステムによる手法
  2. 画像と言語モデルに関する最新のNN構造を融合させた
    • 事前学習や追加データの利用が可能
  3. 精度が高い


2. Related Work

物体検出技術の向上などにより多くの脚注付け手法が提案されたが、その多くは文章生成の段階は人の手に頼っており柔軟性に欠けていた。

画像検索の順位付けに関する研究は大規模に行われており、これは画像と文章が同じベクトル空間に埋め込めるという前提に立脚している。 ただし、長文の生成を目指したものではない。 これらの手法はそれぞれの物体を学習していたとしても、未知の物体構成を描写することはできない。 また、精度評価が行われていない。

MaoらもRNNを画像注釈課題に用いたが、提案手法は以下の点が優れている。 大きな違いには見えないかもしれないが、大幅な精度向上に成功している。

  • より効果的なRNNのモデルを用いてる
  • CNNの出力をRNNに直接入力している


3. Model

画像入力を「翻訳」することで注釈を得るという発想。

画像に対する文章の尤度を最大化するにあたり、LSTMを用いたRNNを使用する。

また、画像の特徴抽出にCNNを用いたが、ILSVRC2014において分類問題で最良のモデル*1を用いる。 このモデルは場面認識などの転移学習においても用いられている。


3.1. LSTM-baesd Sentence Generator

(peepholeは使われていないようだ。peepholeについては効果が薄いという検証もあり、chainerのLSTMも標準ではpeepholeを含んでいないらしい。)


Training

t番目の単語S_tの確率は画像Iとt個の単語列S_0, \cdots , S_{t-1}の条件付き確率でp \left( S_t | I, S_0, \cdots , S_{t-1} \right)と定義される。

LSTMへの時刻tの入力をx_tとすると、 x_{-1} = \rm{CNN} (I) そして x_t = W_e S_t, t \in \left\{0 \cdots N-1 \right\}となる。

S_tは辞書データと同じサイズのone-hotベクトルであり、S_0は開始記号、S_tは文末記号となる。

ここで、IからCNNによって写像されたx_{-1}S_tから W_eによって写像されたx_tは同じ空間に写像されたベクトルとなる。 なお、画像は全時間で入力するよりもt=-1でのみ入力した方がノイズの影響を受けづらく、過学習しづらいことが分かった。

誤差関数はp_{t+1}=\rm{LSTM}\left(x_t \right), t\in \left\{0\cdots N-1\right\}を用いた各時間における正解単語による負の対数尤度関数の合計である。LSTM、CNN、そして入力時に単語を写像するW_eの全てのパラメータについて最小化する。

L\left(I, S\right) = - \sum_{t=1}^{N}\log p_t \left( S_t \right)


Inference

画像から脚注を生成するには幾つかの方法がある。

  • Sampling
    • 単純に最初のp_1を次の時間の入力としてp_2を得て、以下同様に文末記号まで進める。
  • BeamSearch
    • 各時間tにおいてスコア上位k個の文章を候補として保持し、t+1の文章を生成して改めて上位k個のみを残す。提案手法ではk=20を用いた。


4. Experiments

4.1 Evaluation Metrics

画像脚注の評価手法は多数存在する。

  • Amazon Mechanical Turk
    • 客観的な人間による評価が最も正確であると考えられる
  • BLEUスコアである。
    • 最も有名な自動評価手法で、n-gramによって正確性を測る。明らかに問題が有る手法だが、人間の評価との相関がある。
  • perplexity
    • 文章の複雑さを評価するもので、言語モデルの評価に一般的に使われる指標らしい。詳しくは調べてください。モデル分布やハイパーパラメーターの調整に使われた。
  • ランキング
    • 検索のランキング付け問題として評価する。注釈の評価としては不十分であるが、既存の評価手法が活用できる。


4.2. Datasets

多くのデータセットは1枚の画像につき5文の注釈がつけられている。


4.3. Results

4.3.1 Training Details

過学習は大きな問題であった。 高質なデータは100000枚程度であり、物体認識よりも難しい注釈付与に対しては不足していると考えられる。 今後の訓練データの増加によって精度は向上されるだろう。

過学習を解決するために様々な手法を検討した。

  • CNNの事前学習は最も効果があった
  • 単語を入力する際の重み W_eの事前学習も試みたが、改善は見られなかった
  • ドロップアウトとアンサンブル学習によりBLEUスコアに多少の向上が見られた

すべての重みにおいて学習率を固定し、モメンタムを用いずにSGDで学習した。 CNN以外の重みはランダムに決定された。 また、CNNの重みは更新しない。 LSTMの入力とメモリは512次元である。

訓練データに5回以上出現するすべての単語を保持する。


4.3.2. Generation Result

BLEU等の評価手法では従来手法よりも精度が高く、人間とも大差がないように見える。 但し、人間による評価では依然として大きな差が見られた。


4.3.3 Trasfer Learning, Data Size and Label Quality

複数のデータセットを用いたので転移学習について考察する。

Flickr8kについて、Flickr30kは同じ手法で作られたデータ数4倍のデータセットであるため、Flickr30kを用いると精度向上が見られる。 単純にデータ量の増加により過学習が防がれたと考えられる。 しかし、MSCOCOはデータ量はFlickr30kより5倍多いが、収集手法が異なるため語彙の不一致により精度は落ちた。

また、PASCALをFlickr30kとMSCOCOのモデルで評価すると、Flickr30kはMSCOCOよりも悪い結果であった。

訓練データの質が低いSBUをMSCOCOモデルで評価すると、結果は悪化した。

(結論は書かれていないが、このタスクではデータ間の類似度が転移学習の精度に大きく関わるということだろう)


4.3.4 Generation Diversity Discussion

BeamSearchによる上位文を見ると、同じ画像を異なる観点から描写していることがわかる。 たとえば、以下はある画像に対する生成文の一部である。

  1. 男性がフリスビーを投げている。
  2. 男性がフリスビーを手に持っている。
  3. 男性がフリスビーを持って芝生に立っている。

最もスコアの高い文章は80%の確率で訓練群に含まれていた。 訓練データの小ささを鑑みれば自然な結果である(確かにそうだが、それで良いのかは疑問ではある)。


4.3.5 Ranking Results

ランキングの評価方法でも提案手法は良い結果を残した。


4.3.6 Human Evaluation

上述の通り、人間による評価では提案手法も人間の付ける注釈に大きく劣る。 BLEUでは差が小さかったので、この評価手法にも依然として問題があることを示唆している。


4.3.7 Analysis of Embeddings

単語を入力する際にMikolovらが考案したword embedding vectors*2を用いたが、これは辞書サイズに依存しないという利点がある。 また、埋め込み部分の重み(W_e)を残りの部分と独立して訓練できるのも利点である。 そのうえ、学習された特徴のうちの幾つかは意味の近い単語を近い値で表現していた。


5. Conclusion

画像から良い脚注が自動で生成できました。


読み終わった

とりあえずMikolovさんの論文を読まないといけないけれど、ChainerとかでシンプルなRNNLMを実装してみたいですね。

*1:https://arxiv.org/pdf/1502.03167v3.pdf

*2:まだ読んでいないが、Skip gramやCBOWの話のようだ https://arxiv.org/pdf/1301.3781.pdf