[論文紹介]LLMを活用した説明性の高い画像分類フレームワーク「Classification by Description」を解説

# はじめに
この記事では勉強と備忘録を兼ねて、ICLR2023で発表された「Visual Classification via Description from Large Language Models」について解説します（notable top 5%）。
誤り等があればご指摘お願いいたします。


原論文へのリンク：https://openreview.net/pdf?id=jlAjNL8z5cs

# どんな研究？
どのような研究かを3行で書くと、
- GPT-3で生成したカテゴリに関する記述を用いた画像分類のフレームワーク「Classification by Description」を提案

- CLIPで画像分類をした時に、分類の根拠を自然言語の形で解釈可能

- 複数のデータセット（ImageNet、ImageNetV2、CUB、EuroSAT）において、CLIPを上回る性能を発揮


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/4c5e6fd3-7fd8-785b-1cf9-a2f3da498d5e.png)
> 画像：[Sachit Menon, & Carl Vondrick (2023). Visual Classification via Description from Large Language Models. In The Eleventh International Conference on Learning Representations .](https://openreview.net/pdf?id=jlAjNL8z5cs)

例えば、上の画像は雌鶏（Hen）ですが、two legsとかred,brownor white feathersを見て分類しているんだな～と解釈できます。このような記述子（descriptor）はGPT-3により生成されています。


# CLIPとは
CLIP（Contrastive Language-Image Pretraining）は画像とテキストの膨大なペアデータで事前学習されたマルチモーダル深層学習モデルです。

原論文：https://cdn.openai.com/papers/Learning_Transferable_Visual_Models_From_Natural_Language_Supervision.pdf

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/f92a807b-1d42-5096-aeb6-049c26eec8a8.png)
> 画像：[Radford, A., Kim, J., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., Sastry, G., Askell, A., Mishkin, P., Clark, J., & others (2021). Learning transferable visual models from natural language supervision. In International conference on machine learning (pp. 8748–8763).](http://proceedings.mlr.press/v139/radford21a)

まず、画像とテキストをそれぞれのエンコーダに入力して、特徴量を得ます。そして、画像特徴量とテキスト特徴量の類似度を計算するのですが、正しい画像-テキストのペアの類似度を大きく、異なるペアの類似度が小さくなるように学習を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/a2583d7b-dc73-5258-f86e-a4d56220c56d.png)
> 画像：[Radford, A., Kim, J., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., Sastry, G., Askell, A., Mishkin, P., Clark, J., & others (2021). Learning transferable visual models from natural language supervision. In International conference on machine learning (pp. 8748–8763).](http://proceedings.mlr.press/v139/radford21a)

例えば、「犬」の画像と「犬の写真」というテキストの距離は近くなるように学習されます。一方で、「犬」の画像と「自動車の写真」というテキストは遠くなるようにします。


推論時は、画像と最も類似したテキストを選ぶことでラベルを予測することができます。補足として、ラベルとなるテキストは、A photo of ○○の形に変換します（例：○○=dog）。このようなPrompt Engineeringにより、事前学習時のラベルとの乖離が小さくなり精度の改善が見られたようです。


一方で、紹介する論文では以下のようなCLIPの問題点を指摘しています。
- 説明可能性が低い。Grad-CAMのようにヒートマップで「入力画像のどの部分に基づいて判断したのか」を提示することができるものの、ヒートマップの理解には人間の解釈が必要

- 新規カテゴリに対して分類性能が良くない場合がある。例えば、流行りのゲーム「Wordle」を検索しようとすると、キーボードの画像がマッチしてしまう

- 文化的背景の偏りがある。例えば、様々な文化圏の結婚式の画像を用意し、「結婚式」というテキストで検索をかけると、タキシードやウェディングドレスを着た新郎新婦の画像がヒットしやすい

提案フレームワーク「Classification by Description」では、これらの問題に対応することができます。

# Classification by Description
## 何をやっているか
全体の概要は図の通りです。画像とテキストをエンコードして類似度を計算する流れはCLIPを踏襲しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/836b9d10-270d-3b7b-0925-e24762537309.png)


CLIPと明らかに異なる点は、カテゴリ名から記述子を生成しているところです。上図では、henというカテゴリ名からhenの特徴を表す記述子を複数生成しています。同様に、tigerやsyringe等のその他のカテゴリについても記述子を生成します。
カテゴリ名から記述子を生成するにはGPT-3を活用し、以下のようなプロンプトを与えます。
```
Q: What are useful features for distinguishing a {category name} in a photo?
A: There are several useful visual features to tell there is a {category name} in a photo:
-
```
{category name}はカテゴリ名で置き換えます。また、プロンプトの末尾に「-」がありますが、このようにすることで箇条書きでそのカテゴリの説明が列挙されます。

例えば、{category name}をlemur（キツネザル）としたときの出力は以下のようになります。
```
Q: What are useful visual features for distinguishing a lemur in a photo?
A: There are several useful visual features to tell there is a lemur in a photo:
- four-limbed primate
- black, grey, white, brown, or red-brown
- wet and hairless nose with curved nostrils
- long tail
- large eyes
- furry bodies
- clawed hands and feet
```
なお、生成した記述子（descriptor）は{category_name} which (is／has／etc) {descriptor}の形式に変換します。このようにカテゴリ名を付加することで、「象の短い尻尾」「ネズミの長い尻尾」のようなカテゴリに依存した相対関係を表現することができます。

このように生成した記述子をText Encoderに入力してベクトルにします。同様に、画像についてもエンコードしてベクトルを得ます。そして、ベクトル同士の内積を取りコサイン類似度を計算します。先ほどの図の例を用いると、雌鶏の画像と各カテゴリの記述子をベクトルにして類似度を計算することになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/778b697e-2b03-21be-3559-873e3eb8171e.png)



そして、式(1)、(2)により画像と記述子との類似度からカテゴリを求めます。
```math
\begin{align}
&s(c, x) = \frac{1}{|D(c)|}\sum_{d\in D(c)}\phi(d, x) \tag{1} \\

\newcommand{\argmax}{\mathop{\rm arg~max}\limits} 

&\argmax_{c \in C} s(c, x)\tag{2} \\
\end{align}
```
ここで、
- $ D(c)$：カテゴリ$c$の記述子の集合
- $\phi(d, x)$：画像xと記述子dのコサイン類似度の対数

です。$|D(c)|$で割ることで、各カテゴリの記述子の数の差による影響を排除しています。そして、$s(c, x)$が最も大きいカテゴリ$c$に画像を分類します。

## CLIPに対する優位性
冒頭で述べたようにClassification by DescriptionはCLIPの問題点を解消・改善しています。
### 説明可能性
提案フレームワークのいくつかの例に対する予測結果（左）を見ると、説明としてなかなか良さそうです。また、右はCLIPによる予測結果ですが、CLIPが間違えた例を提案フレームワークでは正しく予測できていることもわかります。棒グラフの値はコサイン類似度を100倍したもので、この値が大きい項目が予測に大きく寄与したということが読み取れます（右の棒グラフは提案フレームワークによるものです）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/bb1a7d82-b6fd-a8bf-db0f-61bcbe3ec3e0.png)
> 画像：[Sachit Menon, & Carl Vondrick (2023). Visual Classification via Description from Large Language Models. In The Eleventh International Conference on Learning Representations .](https://openreview.net/pdf?id=jlAjNL8z5cs)

### 新規カテゴリに対する分類性能
機械学習モデルの限界として、学習中に見たことのないデータに対して性能が低くなりがちというものがあります。CLIPはもともと2021年2月に訓練されているため、それ以降に登場したカテゴリに対しての性能が低くなる場合があります。
本論文では、2021年2月以降に広く表れた新しいカテゴリをImageNet検証セットに追加して、提案フレームワークの新規カテゴリに対する分類性能を確かめました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/d79dd883-3ffa-3477-6135-23301945e2c8.png)
> 画像：[Sachit Menon, & Carl Vondrick (2023). Visual Classification via Description from Large Language Models. In The Eleventh International Conference on Learning Representations .](https://openreview.net/pdf?id=jlAjNL8z5cs)

2021年3月にスエズ運河をふさいだ船である「Ever Given」と、2022年1月に流行したオンライン単語ゲームの「Wordle」の画像それぞれ5枚を50,000枚のImageNet検証セットに追加し、画像を検索したところ、上図のように提案フレームワークでは適切な画像が上位にヒットする結果になりました。
GPT-3が持つ知識を活かすことができていますね。

### バイアスの解消
先ほどCLIPは西洋中心のバイアスを持つ傾向があると述べましたが、提案フレームワークでもこの問題が発生します。これは、記述子を生成するLLMにもこのバイアスがあり、西洋に偏ったカテゴリの記述子を生成してしまうためです。しかし、人間が介入することで容易に対処することができます。
結婚式を例に挙げると、GPT-3が生成する結婚式の記述子は「タキシードを着た新郎」という偏ったものでしたが、「ダシキを着た新郎」「着物を着た新郎」のように手動で記述子を追加することでバイアスを効果的に補正することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/bf704bed-7123-da93-f69f-10568f0c06a0.png)
> 画像：[Sachit Menon, & Carl Vondrick (2023). Visual Classification via Description from Large Language Models. In The Eleventh International Conference on Learning Representations .](https://openreview.net/pdf?id=jlAjNL8z5cs)

上図を見ると、西洋以外の結婚式画像に関しても認識することができています。また、補正を行った提案フレームワークとCLIPのAccuracyを比較すると、複数の文化圏の結婚式画像の認識性能はCLIPを圧倒していることがわかります。


## 性能は？
### CLIPとの比較
複数のデータセットでCLIPとの性能を比較しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/59991077-16f4-0f88-3a0d-869ea3f22385.png)
> 画像：[Sachit Menon, & Carl Vondrick (2023). Visual Classification via Description from Large Language Models. In The Eleventh International Conference on Learning Representations .](https://openreview.net/pdf?id=jlAjNL8z5cs)

ImageNetとImageNetV2では、モデルサイズを問わず一貫して~3-5％、他のデータセットでは最大~7％のAccuracyの向上が読み取れます。EuroSATは衛星画像のデータセットですが、このようなドメインでも提案フレームワークが有効なのは興味深いですね。
### LLMのサイズによる変化
LLMのサイズは性能にどの程度影響するのでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/469abef5-7f63-d6b7-1ed1-17e9687c3ad2.png)
> 画像：[Sachit Menon, & Carl Vondrick (2023). Visual Classification via Description from Large Language Models. In The Eleventh International Conference on Learning Representations .](https://openreview.net/pdf?id=jlAjNL8z5cs)

上図を見ると、小さいLLMではCLIPの性能を下回る一方で、あるサイズを超えるとCLIPを超えることがわかります。
## 課題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/b1bfdc32-e5ed-a001-3a54-ecf837bf7a15.png)
> 画像：[Sachit Menon, & Carl Vondrick (2023). Visual Classification via Description from Large Language Models. In The Eleventh International Conference on Learning Representations .](https://openreview.net/pdf?id=jlAjNL8z5cs)

一方で、以下のような問題が起きることがあると指摘しています。
1. 視覚以外のモダリティに関する記述子の生成
    においや味のような視覚言語モデルにとって有用でない記述子が生成される場合があります（上図(a)の"Jackfruit"に関する記述）。

2. カテゴリ名が複数の意味を持つことによる無関係な記述子の生成
    上図(a)の"Vespa"はスズメバチを指していますが、ImageNetの"Vespa"はイタリアのデザイナーズブランドのスクーターを指しています。
    

3. 同一の記述子が繰り返し生成
    上図(a)の"Hair spray"のように同一の記述が繰り返される場合があります。

4. 他のカテゴリの記述子に強く反応
   生成した記述子が複数のカテゴリにマッチする場合、埋め込むテキストに意図したカテゴリ名が含まれていたとしても、意図したカテゴリ以外のカテゴリに対して強く反応するケースがあります。例えば、上図(b)のように"lion, which has tawny or golden fur"という記述は「チャウチャウ」の画像を上位で検索します。これはチャウチャウが "tawny or golden fur "と強く結びついている可能性が高いために起きていると考えられますが、GPT-3が多言語性を持っていることもその要因だと指摘しています。チャウチャウの中国語名にはライオンの意味を持つ漢字が含まれており、チャウチャウとライオンは中国語を介して関係していると考察されています。
    
5. 単語の曖昧さによる誤解
    上図(b)における"Jaguar, which is a large, stocky cat"の"stocky"は「がっちりした、ずんぐりした」のような意味を持ちますが、トップ10にランクインした画像を見ると、そこまで"stocky"感がないように見えます。これは"stocky"という単語が"cat"に適用されているのではなく、画像に適用されているためです。"stock photo"が「汎用的な画像」というニュアンスで使われることがあるため、このような"stock"の持つ意味の曖昧さにより、ジャガーの"stock photo"が反応してしまっていると考察されています。


# 終わりに
この記事では、ICLR2023で発表された「Visual Classification via Description from Large Language Models」について紹介しました。シンプルな手法ですが性能も説明性も優れており、追加学習不要なのも魅力的です。

# 参考
- [Sachit Menon, & Carl Vondrick (2023). Visual Classification via Description from Large Language Models. In The Eleventh International Conference on Learning Representations .](https://openreview.net/pdf?id=jlAjNL8z5cs)

- [Radford, A., Kim, J., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., Sastry, G., Askell, A., Mishkin, P., Clark, J., & others (2021). Learning transferable visual models from natural language supervision. In International conference on machine learning (pp. 8748–8763).](http://proceedings.mlr.press/v139/radford21a)

- https://www.youtube.com/watch?v=TRvY5g6XsNk
    （参考になった松尾研究室のDL輪読会の動画）