Supervised Multimodal Bitransformers for Classifying Images and Textを読んだ
概要
BERTをベースにしたテキストと画像のマルチモーダルネットワークを提案。画像をResNet-152でベクトルに変換した後に、average poolingで作成したN個のベクトルをtokenとしてBERTへ入力する。単一モーダルのBaselineや、BERTとResNet-152のベクトルを単純に結合したモデルよりも若干だが高い精度がエられることを示している。
arXivによるとEMNLP 2019でrejectされている。
リンク
arXiv
pdf
facebook researchのGitHub
huggingface/transformersの実装
Architecture
著者らはMultimodal Bitransformersと呼んでいるが、画像をN個の分割された特徴ベクトルに変換したものを単語tokenとみなしてBERTの入力としていると考えれば良い。 Architectureの全体像は以下のFigure 1を参照。
token
tokenはtextはtorkenizeされたものを用いる。
Imageの方はResNet-152を利用してencodeしたものを用いるが、ResNetの出力をそのままtransformerの入力にできないので変換を行う(変換方法は下図参照)。Average Poolingは1つの画像ファイルを複数のtokenに分割するもので、Affine Layerは次元数をBERT内のembeddingの次元数に合わせるためのもの。
[CLS]や[SEP]などの特殊トークンは恐らく挿入されていない(論文中に表記が見当たらなかったため)。
huggingface/transformersの実装を確認すると、Average Poolingの出力次元数は以下の通り。
N | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
K | 1 | 2 | 3 | 2 | 5 | 3 | 7 | 4 | 3 |
M | 1 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 3 |
segment
segmentは1つ目は0、2つ目は1にする(BERTと同じ)。
V-SNLIでは入力がテキストが2つと画像1つとなるため、segmentが2を超える。pretrain済みのBERTはsegmentが2つなので、segmentが2以上の場合は以下の数式でsegment embeddingを作成する。
where
classification
クラス分類では最終層の0 token目の出力を用いる。
最終層の出力をとすると、classification layerは where となる。Dはtransformerの次元数、Cはクラス数。
multilabel分類の場合は1つ以上正しい答えがある場合はシグモイド関数を適用してbinary cross-entropy lossを各出力クラスに対して算出し学習を行う(予測の場合は閾値を0.5とする)。
multiclass分類の場合はsoftmaxを適用し、regular cross-entropy lossを算出して学習を行う。
結果
検証用データセット
MM-IMDB
映画のプロットの要約、映画のポスター、ジャンルがセットになっている。タスクではプロットの要約(text)とポスター(image)を与えて、ジャンルを予測する。
FOOD101
レシピの説明文とメイン画像、ラベルのセットになっている。レシピ説明文(text)とメイン画像(image)を与えてラベルを予測する。
V-SNLI
前提(text)、仮説(text)、画像(image)とラベルのセット。前提(text)、仮説(text)、画像(image)を与えられた時のラベルが"entailment(仮説が正しい)"、"neutral(どちらともいえない)"、"contradiction(仮説が矛盾)"のいずれになるかを予測する。
MM-IMDBとFOOD101はtext1つとimage1つが入力だが、V-SNLIのみtextを2つとimage1つを入力としてクラス分類を行う。
データセットの例はTable 2を参照。
Baseline
クラス分類は各手法でencodeしたものを素性として、1層のネットワークで行う。
Bag of Words(BoW)
textの全単語をGloveで300次元に変換し、合計したものを素性として用いる。
imageはクラス分類に利用しない。
Text-only BERT(BERT)
textを入力として、事前学習済みのbase-uncased BERTの出力を素性として用いる。
imageはクラス分類に利用しない。
Image-only(Img)
標準的な事前学習済みのResNet-152とsingle average poolingの出力を素性として用いる。各画像は2048次元のベクトルになる。
textはクラス分類に利用しない。
Concat Bow + Img(ConcatBow)
BaselineのBowとImgのベクトルを結合したものを素性として用いる。
素性は300(Bow)+2048(Img)=2348次元になる。
Concat BERT + Img(ConcatBow)
BaselineのBERTとImgのベクトルを結合したものを素性として用いる。
素性は768(BERT)+2048(Img)=2816次元になる。
検証用データセットでの精度
乱数シードを変更して5試行を実施し、平均を取った結果がTable 3。 一応提案手法が一番精度が良いが、数ポイントしか変わらない。
Hard Subsetsでの検証
マルチモーダルの検証ではテキストの素性が支配的になり、異なるマルチモーダルの手法を正しく比較したり、マルチモーダルを組み込む価値があるのか評価することが困難になる場合が多い。そのため、著者らはテキストの素性が支配的にならないサブセットを作成し、精度検証を実施している。
hard ground-truth
BowとImgのそれぞれの予測結果がground truthの結果から最も異なるデータをサブセットとする。例えば、 の上位10%をサブセットとする。は予測されたクラス、は正解のクラス、は画像情報、はテキスト情報。
disagreement
BowとImgの分類結果が異なるもののうち、最も結果が異なるものの上位10%をサンプリングしてサブセットとする。
上記のhard ground-truthは予測と正解が異なることを基準にサンプリングしており、こちらはTextとImageのそれぞれの予測結果が異なることを基準にサンプリングしている
V-SNLI(hard) (Gururangan et al. 2018)が作成した、テキスト情報のみでは分類が困難だったサブセットを用いる
hard ground truth, disagreementはMM-IMDBとFOOD101でのみサブセットを作成し、V-SNLIでは(Gururangan et al. 2018)のサブセットのみを使用。
評価結果は下記のTable 4を参照。
※ hard subsetは難しいサンプルをサブセットとしているので、データセット全体を対象に評価する場合よりも精度が下がることが予想される。しかし、データセット全体での評価(Table 3の結果)よりも精度が高い理由が不明。論文中には特に記載なし。
MM-IMDB Hard (ground truth)で実際にクラス分類した場合の差はTable 5を参照。 ムーランをImgがAnimationを予測できないのはちょっと意外。
weightのfreezing
pretrainした重みを、学習初期にfreezingしておくことがどうかの分析を行った(画像の埋め込み数は固定にしておく)。
Figure2はTextとImagそれぞれを学習の何エポックまでfreezingしておくかを軸に取ったもの。セルの数値は論文中に記載が無いが恐らくMicro-F1。
Figure2を確認すると、Imageの重みはfreezingしておくエポック数が少ない方が効果的なことが分かる(できるだけ最初からunfreezingしておいた方が良い)。textの重みのfreezingしておくエポック数はタスクに依存している。