DROBEプロダクト開発ブログ

DROBEのプロダクト開発周辺の知見や考え方の共有をしていきます

ファッションドメインにおけるLLMの未知の知識獲得可能性

DROBEで機械学習エンジニアをしております、藤崎です。

概要

  • 大規模言語モデル(LLM)に未知の知識を獲得させることができるかを検証しました。

  • LLMにとっての未知の知識はモデルの重みがリリースされた日付以降に公開された、ファッションドメインにおける商品の価格や規格の詳細情報としています。

  • その結果、ドメインの難易度が低く、使用者の専門性が高いようなユースケースにおいて、LLMを活用することは可能だと判断できました。

  • ただし、未知の知識の定義の難しさやハルシネーションへの対策の難しさなどの課題も明らかになりました。

背景・目的

近年、大規模言語モデル(LLM)の発展により、自然言語処理の分野が大きく進歩しました。LLMは膨大な量のテキストデータから言語の構造や意味を学習し、高度な言語理解と生成能力を持っています。しかし、LLMにはいくつかの課題があります。

  • 秘匿性の高い情報の取り扱い: 企業は新製品の開発段階で機密情報を扱う必要があり、その情報をLLMに安全に学習させる方法が求められています。

  • コストと効率性: 大規模なLLMを学習し、運用するには、膨大な計算リソースが必要です。なので、小規模なLLMでも同様の機能を実現できれば、コストと効率性が大幅に向上します。

本ブログで検証する問いは、現実的な学習と運用コストの中で、一定の汎化性能を保ちながら、小型のLLMに未知の知識を獲得させることができるか?です。具体的には、LLMにとって未知の、秘匿性の高い企業の製品情報等をローカルでLLMに学習させ、その知識が獲得できるかを検証します。

本検証の結果としては上記問いは条件付きでYesだと思っております。

関連研究

事後学習を通じた知識の獲得

事前学習を行なった大規模言語モデル(LLM)に事後の学習で新しい知識を獲得させることの難しさが、複数の研究で指摘されています。

一つの見解は、LLMの知識の大部分は事前学習の段階で獲得されており、Instruction Tuningの主な役割は、新しい知識を教え込むのではなく、事前学習で獲得された豊富な知識を適切に引き出し、活用することにあるということです。つまり、Instruction Tuningは知識の注入というよりも、既存の知識を引き出すためのアラインメント手法だと位置づけられます。*1

一方、別の研究では、Instruction TuningやAdditional Trainingなどで、LLMに日本語の新しい知識を獲得させられることが確認されています。ただし、この場合の「新知識」は言語の違いを指しており、他の言語ではその知識に触れている可能性があることに注意が必要です*2

さらに他の研究では、一定の条件下でLLMに新しい科学的知識を獲得させることは可能でしたが、正解率が低く(Fig. 6のgenに注目)、「LLMに新知識を入れるのは難しい」と総括されています。ここでの「新知識」は、LLMの基本的な一般知識とは別の、特定の専門分野における最新で高度な知識を指しています。*3

一方で、LLMをどのようにファインチューニングするかによって、新しい知識を獲得させられるかどうかは大きく変わる可能性があります。 例えば、LoRA (Low-Rank Adaptation)と呼ばれる効率的なファインチューニング手法を適用した場合、新しい知識を完全に獲得させることの難しさは認められていますが、この研究ではLoRAが元のLLMの知識を比較的よく維持できる"正則化"の効果があることも確認されています。つまり、LoRAを通じて新しい知識を完全に獲得することは難しいものの、元の知識を失わずに部分的な新知識を獲得させられる手法であると議論されています。*4

未知の知識をどう定義するか

事前学習済みのLLMにとって、ある知識が本当に未知の知識なのかを判断することは非常に難しい課題です。研究者たちはこの問題に対して、さまざまなアプローチを提案しています。

  • MIN-K% PROB*5は、テキスト内の最も低い確率を持つトークンの平均対数尤度を計算することで、そのテキストがLLMの学習データに含まれていたかどうかを判別します。学習データに含まれていないテキストは、一部の単語が非常に低い確率を示す傾向があるのに対し、学習データに含まれているテキストはそのような極端に低い確率の単語を含む可能性が低いという仮説に基づいています。この手法の利点は、LLMの学習データや学習方法に関する情報を必要とせず、モデルの出力だけから判断できる点にあります。

  • LatestEval*6は、最新のウェブ上のテキストを収集し、その中から重要な情報を抽出して質問を作成することで、LLMの訓練データとの重複を回避しています。これにより、LLMが訓練データを単に記憶しているのではなく、実際に推論できるかどうかを評価できます。

実験

ある情報がLLMにとって新知識であるかの確認

本検証ではある知識が本当にLLMにとって未知の知識なのかを判別する必要があります。 そこで、獲得させたい情報が果たしてLLMにとって未知の知識であるかを検証しました。

上述したMIN-K% PROBの手法をGemma-7B-itに適用した結果、日本語の場合はほとんど機能しないことがわかりました。 具体的には、英語の場合では未知の知識の平均尤度と既知と考える知識の平均尤度に明確な差が生まれ、閾値を定めることでこれらの境界を設定することができましたが、日本語ではこのような差が生じませんでした。

この原因として、LLMの事前学習で使用した日本語データの量が関係している可能性が考えられたため、CyberAgentLM2-7B-ChatやELYZA-japanese-Llama-2-7bなど事前学習や追加事前学習のデータに日本語のデータを多く含んだモデルも試しましたが、Gemma-7B-itと同様にうまくいきませんでした。

そこで本取り組みでは、単純化した新知識の定義を採用しました。 具体的には、モデルの重みがリリースされた日付以降に公開された、商品の価格や規格の詳細情報を新知識として扱うことにしました。

QAデータセット

本検証では、新知識を獲得できたかどうかを測るために、QA形式のデータセットを用いました。 上記の3.の手法を参考に、一つの文書に対して複数のQA形式での質問ペアをGPT-4を用いて作成しました。 具体的には、一つの文書に対して8つのQAペアを作成しました。QAの例は以下の通りです(QAの具体的な内容は権利の関係上XXでマスクをしています)。

# Q A
1 XX の新作 XX のXXサイズを教えてください。 XXの新作XXのXXサイズは、直径XXミリ、厚さXXミリです。
2 XXの発売に関する問い合わせ先を教えてください。 XXの発売に関する問い合わせ先は、XXで、電話番号は03-XX-XXです。
3 XXとXXのコラボレーションXXサンダルの価格はいくらですか? XXとXXのコラボレーションXXサンダルの価格はXX円です

実験の設定

今回はアプリケーションを念頭に置いていたため、運用コストを低く抑えることが重要な指標の一つでした。それを実現するために、LLMを量子化することで重みのサイズを小さくし、計算コストを下げました。また、ファインチューニングの手法としては、学習の効率性に優れるLoRAを選択しました。 以下のハイパラは実験のハイパラです。3. などを参考にしつつ、ヒューリスティックで決めており、このあたりは探索の余地が多いに残されていることに注意が必要です。

# 項目 内容
1 Model google/gemma-7b
2 LoRA rank 64
3 LoRA alpha 32
4 LoRA dropout 0.1
5 量子化 4-bit
6 LR 2e-4
7 ファインチューニングに使ったQAのペア数 1200 (150文書 × 8QA)

また、以下はGemmaの元論文のtable4で紹介されていたInstruction Tuning時のpromptであり、我々の取り組みでもこのpromptを用いました。そしてpromptを用いてSFT trainerを使って学習しました。*7

<bos><start_of_turn>user
{Question}<end_of_turn>
<start_of_turn>model
{Answer}<eos>

結果

自作したQAデータセットでの結果

自作したQAデータセットの性能としては独自QAデータセットを使ってepochを3で学習した試行が最も性能が高かったです。

試行の内容としては新知識を注入できたのかを検証するために、学習に使ったQAのペアに関して、Qを投げることでそのAに答えられるかを一部のデータを使って検証しました。また、評価は目視で行い、GPT-4などは使っていません。

一点、注意が必要なのがGPT-4を使った7や8の試行の性能を上回る結果となっていますが、GPT-4はクローズドな情報にアクセスできるはずがなく、GPT-4に不利な実験設定です。そんな中でもGPT-4は単純に類推によって問題を解いていることが印象的でした。

# dataset epoch accuracy(%)
1 ichikara-instruction 1 18
2 ichikara-instruction 3 13
3 独自QAデータセット 1 41
4 独自QAデータセット 3 65
5 ichikara-instruction + 独自QAデータセット 1 31
6 ichikara-instruction + 独自QAデータセット 3 61
7 gpt-4-turbo-2024-04-09 - 39
8 ChatGPT4o(2024/05/20) - 43

相対的な汎化性能(定量)

上記の実験では単に過学習しているから性能が高くなった可能性がありました。

そこで、基本的な知識の応答能力(=いわば汎化性能)がどれだけ低下しているか(あるいは依然として保持しているか)の検証が必要と感じました。 そのためJGLUE*8のうちJSQuADとMARC-jaを使って汎化性能がどれだけ落ちたかを検証し、1の設定での結果を基準とした相対値を確認しました。

ここで注意が必要なのが、学習したモデルの汎化性能を相対で比較したいだけなのでprompt等をlm-evaluation-harness*9の設定に合わせていません。 結果として、4の試行で最もスコアが高いことがわかります。

# dataset epoch relative-score
1 ichikara-instruction 1 1
2 ichikara-instruction 3 0.93
3 独自QAデータセット 1 1.10
4 独自QAデータセット 3 1.17
5 ichikara-instruction + 独自QAデータセット 1 1.02
6 ichikara-instruction + 独自QAデータセット 3 0.93

相対的な汎化性能(定性)

4の設定で基本的な質問に対してどれだけの性能で受け答えができるかを念のため確認しました。読み手の好みに依りそうですが、基本的には問題なく受け答えができている印象でした。

# Q A
1 おいしいご飯ってどうやって作るの? おいしいご飯は、水と米の割合を1.5:1で設定し、鍋に入れて長い間まろやかに温めることで作れます。
2 お笑いの面白さは? お笑いの面白さは、日常生活のさまざまな場面をネタにして、それを超えるようなギャップを作ることにあります。お笑い芸人が日々の暮らしの中で見た出来事や人間関係をネタにして、それを超えるような punchline を提示することで、観客の驚愕や喜びを招き、その瞬間に人間が共有する「面白さ」を演出します。この手法により、お笑い芸人は観客との深い共感と記憶に残るエンターテインメントを提供し続けています。
3 なぜ汗をかくのが良いの? 汗をかくのは、夏の日差しの中で体を冷やす良い方法の一つです。汗をかくことで、体内の熱を逃し、快適な状態に保つことができます。

考察

未知の知識の定義の難しさ

未知の知識の定義の難しさは、この検証における大きな課題の一つでした。

例えば、GPT-4にとって未知の情報と思われる、データカットオフ以降に発売された商品の寸法や価格を質問した場合でも、答えられることがありました。調査の結果、この商品は前のシーズンと寸法や価格が同じであり、類推が可能な状態であったことがわかりました。

つまり、LLMにとって真に未知の知識がどの程度存在するのかを判断することは極めて困難であり、未知の知識の定義自体が曖昧であることが浮き彫りになりました。 この問題は、LLMの性能評価や新知識の獲得を検証する上で大きな障壁となります。未知の知識の定義を明確にし、その特定方法を確立することが、今後のLLM研究における重要な課題の一つであると言えるかもしれません。

ハルシネーションの対策の難しさ

ハルシネーションへの対策も、未知の知識の定義と同様に難しい問題であることが明らかになりました。今回の検証では、ハルシネーションが確実に発生していることを確認しましたが、ハルシネーションした単語を機械的に検出することは非常に困難でした。

具体的にはサンプリングされたトークンの尤度に特別な傾向は見られず、ハルシネーションの特定に有効な手がかりは得られませんでした。 ハルシネーションについては、現在も活発に研究が行われていますが、未だ効果的な対策手法は確立されていないのが現状です。そのため、LLMを実際に活用する際には、情報の真贋性を見極められる専門知識を持つ人が使用し、本来の作業時間を短縮させるというユースケースが現実的であると考えられます。

今回の検証では、先行研究とは異なり一定の性能が得られましたが、これはファッションというドメインの難易度が3. などと比べて低いという特徴によるものだと推察されます。 以上を総括すると、現時点ではドメインの難易度が低く、かつ使用者の専門性が高いようなユースケースにおいて、LLMを活用することは十分に可能であると判断できます。ただし、ハルシネーションの問題は依然として残されており、その対策手法の確立が今後のLLM研究における重要な課題の一つであると言えると思いました。

ドメイン自体の難しさが高い ドメインの難しさが低い
使用者の専門性が高い 今回の取り組みで一定の有効性が示せた
使用者の専門性が低い

今後の発展

LLMという便利なツールを広く業務に浸透させていくためには、先ほどお示しした表の中で、ドメインの難しさが低く、使用者の専門知識もあまり必要とされない場合について、どのような活用例が考えられるのか検討していくことが重要そうです。そのような活用例を実現するには、意思決定をサポートするツールを一緒に使うことが大切かもしれません。

例えば、RAG(Retrieval-Augmented Generation)と呼ばれる手法を使えば、AIが出力した文章の根拠となる元の文章を参照できるようになります。これにより、AIの出力が信頼できるものかどうかを判断する際の手がかりが得られ、専門性が低い場合の意思決定をサポートできるかもしれません。 これらの選択肢について、どのような場合にどの方法が適しているのかを、引き続きよく検討していく必要がありそうです。

*1:C. Zhou et al., “LIMA: Less Is More for Alignment,” arXiv [cs.CL], May 18, 2023. [Online]. Available: http://arxiv.org/abs/2305.11206

*2:K. Suzuki, “[No title].” Accessed: May 21, 2024. [Online]. Available: https://tech.preferred.jp/ja/blog/llm-fine-tuning-for-domain-knowledge/

*3:K. Hatakeyama-Sato, Y. Igarashi, S. Katakami, Y. Nabae, and T. Hayakawa, “Teaching Specific Scientific Knowledge into Large Language Models through Additional Training,” arXiv [cs.CL], Dec. 06, 2023. [Online]. Available: http://arxiv.org/abs/2312.03360

*4:D. Biderman et al., “LoRA Learns Less and Forgets Less,” arXiv [cs.LG], May 15, 2024. [Online]. Available: http://arxiv.org/abs/2405.09673

*5:W. Shi et al., “Detecting Pretraining Data from Large Language Models,” arXiv [cs.CL], Oct. 25, 2023. [Online]. Available: http://arxiv.org/abs/2310.16789

*6:Y. Li, F. Guerin, and C. Lin, “LatestEval: Addressing data contamination in language model evaluation through dynamic and time-sensitive test construction,” arXiv [cs.CL], Dec. 19, 2023. [Online]. Available: https://github.com/liyucheng09/LatestEval

*7:W. Shi et al., “Detecting Pretraining Data from Large Language Models,” arXiv [cs.CL], Oct. 25, 2023. [Online]. Available: http://arxiv.org/abs/2310.16789

*8:“日本語言語理解ベンチマークJGLUEの構築 〜 自然言語処理モデルの評価用データセットを公開しました,” Yahoo! JAPAN Tech Blog. Accessed: May 22, 2024. [Online]. Available: https://techblog.yahoo.co.jp/entry/2022122030379907/

*9:lm-evaluation-harness: A framework for few-shot evaluation of language models. Github. Accessed: May 21, 2024. [Online]. Available: https://github.com/EleutherAI/lm-evaluation-harness

OpenAI の GPT-4-vision-preview (VLM) を利用した商品画像のタグ付け

はじめに

OpenAIが Dev Day で発表したGPT-4-Vision-Previewは、画像処理と自然言語処理を組み合わせた最先端の技術です。

このモデルは、画像を理解し、その内容に基づいてテキスト情報を生成する能力を持っています。例えば、写真やイラストから物体を識別し、それに関連する説明や情報をテキストとして提供できます。この技術は、画像とテキストの間のギャップを橋渡しするものであり、多様な応用が可能です。

DROBEは、多様なファッション商品を取り扱うECサイトを運営しています。我々の挑戦の一つは、膨大な数の商品画像と説明文から、正確で有用なタグを抽出し、整理して保存しておく事です。このプロセスは従来、時間がかかり、人手に依存していましたが、GPT-4-Vision-Previewを導入する事でこの課題を解決できないかを検討しようと考えました。

DROBE の課題と GPT-4-Vision-Preview を試すモチベーション

ファッションの商品情報は多岐にわたりますが、特に検索や商品管理に重要な要素をあげると以下のようなものになります。

項目名 概要 対象カテゴリ
価格 共通
サイズ S, M, L など 共通
季節 SS, FW など 共通
無彩色、中間色、など 共通
テイスト カジュアル、綺麗め、など 共通
半袖、長袖、など トップス
シルエット ワイド、スリム、など パンツ
デザイン ストレート、など パンツ
シルエット タイト、フレア、など スカート

価格やサイズなどは商品に記載されているテキスト情報にたよるしかないですが、一方で色や袖などは画像を見る事で判断が可能になります。

テイストなどはテキストと画像を一緒に見る事で判断ができるようなものです。

GPTP-4-vision-preview を試すモチベーションは、テキストと画像を一緒に取り扱えるという事でファッションにおけるデータ構造化問題に対して有効な解決策になり得る可能性があると考えました。

ケーススタディ

以下にケーススタディの概要と結果を記載します。 利用した SDK は *1 openai-python v1.3.3 です

入力するデータ

入力としては以下のようなものを使います

商品画像

説明文

■デザイン

上品な仕上がりで高見え効果抜群のオーバーサイズカーディガン

アクセントとなる大ぶりの配色ボタンがこなれ感をアップ。

前を閉じた状態、羽織の状態どちらでもスタイリングを確立してくれる万能アイテムです。

■素材

もっちりとした手触り。しっかりとした肉感を持ち合わせた素材。

やや硬めに仕上げ、シルエットを崩さずキープしてくれます。

ポケット: なし

裏地: なし

伸縮性: なし

透け感: なし

光沢感: なし

モデル身長:165cm/Mサイズ着用

素材

表地 ポリエステル:60% アクリル:40% 裏地 ポリエステル:100

メーカー公称の色

グリーン

こういった情報を入力として利用します。 今回は問題を難しくするため、 メーカー公称の色 を グリーン ではなく ブラックとし、画像とテキストに矛盾があるデータに対するモデルの挙動を確認します。

推論周辺部分のコード

画像は以下のようなコードで base64 にして投げる方式にしました

def image_url_to_base64(url, new_width):
    try:
        # URL から画像をダウンロード
        response = requests.get(url)
        response.raise_for_status()

        # PIL を使って画像を処理
        with Image.open(io.BytesIO(response.content)) as image:
            # resize
            width, height = image.size
            aspect_ratio = height / width
            new_height = int(new_width * aspect_ratio)
            image = image.resize((new_width, new_height), Image.ANTIALIAS)
            print(f"resized to width:{new_width}, height:{new_height}")

            # バイト配列に変換
            buffered = io.BytesIO()
            image_format = "PNG"
            image.save(buffered, format=image_format)
            img_byte = buffered.getvalue()

            # Base64 にエンコード
            img_base64 = base64.b64encode(img_byte).decode()

        # 正しいフォーマットでBase64データを返す
        return f"data:image/{image_format.lower()};base64,{img_base64}"

    except Exception as e:
        return f"Error: {str(e)}"

推論する部分のコードは以下です

def extract_tag(system_prompt, category, material, description, maker_color_name, image_url):

    base64_image = image_url_to_base64(image_url, 1000)
    prompt = f"{system_prompt}\n\nカテゴリは{category}です\n\n説明文は以下です\n{description}\n\n素材は以下です\n{material}\n\nメーカー公称のこのアイテムの色は{maker_color_name}です"

    response = client.chat.completions.create(
        model="gpt-4-vision-preview",
        messages=[
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": prompt},
                    {
                        "type": "image_url",
                        "image_url": {
                            "url": f"{base64_image}",
                            "detail": "low",
                        },
                    }
                ],
            },
        ],
        max_tokens=300
    )

    return response.choices[0].message.content

プロンプト

基本となるプロンプトは以下です。 extract_tag 関数の system_prompt 変数として入力します。

あなたはアパレルの商品管理エージェントです

与えられた説明文や画像から以下の情報を抽出してください
color, occasion, sleeve_length で定義されている中の情報を取得できなければ空文字にしてください

color
- 無彩色
- 中間色
- 寒色
- 暖色
- その他

occasion
- カジュアルマニッシュ
- きれいめマニッシュ
- カジュアルフェミニン
- きれいめ
- フェミニン
- ニュートラル
- その他

sleeve_length
- ノースリーブ
- フレンチ
- 半袖
- 7分袖
- 長袖

結果は以下の json で返してください
{
   "color": "",
   "occasion": "",
   "sleeve_length": ""
}

これを基本形として、以下のように画像を優先する旨の指示や、タグを選択した理由を言語化してもらうバージョンのプロンプトも準備しました。

色に関しては、与えられるメーカー公称の色の名前と画像の両方から判断してください
カテゴリとして与えられた商品に着目してください
画像と公称で矛盾がある場合は画像からの判断を優先してください
結果は以下の json で返してください
{
   "color": "",
   "occasion": "",
   "sleeve_length": ""
   "reason_color": "" // colorタグを選んだ理由を記載してください
   "reason_occasion": "" // occasionタグを選んだ理由を記載してください
   "reason_sleeve_length": "" // sleeve_lengthタグを選んだ理由を記載してください
}

実験結果

試行# プロンプト output
1 基本 color: 無彩色
occasion: きれいめマニッシュ
sleeve_length': 長袖
2 基本 + 画像優先の指示 + 理由の言語化 color: 寒色
occasion: ニュートラル
sleeve_length 長袖
reason_color: メーカー公称の色がブラックであるため無彩色と判断したが、画像で見ると緑のような寒色に見えるため、寒色とした。
reason_occasion: デザインから判断して、オーバーサイズカーディガンでありどちらのスタイリングにも適応可能なため、ニュートラルな装いに適していると考えられます。
reason_sleeve_length: モデルが着用しているカーディガンは長袖であることが明確なため

この商品の期待結果は以下です

color: 寒色
occasion: ニュートラル
sleeve_length: 長袖

期待結果との比較を踏まえると、画像と文章のどちらを優先するかを明確に指示しつつ、その判断結果を言語化してもらうという指示を出したパターンの方が良いという結果となりました。

今回取り組んだタスクは、画像とテキストの推論結果に基づいて最終判断を下す必要があります。これは、多段階の推論を要するタスクです。 このような多段階の推論を必要とするタスクにおいて、推論を促すようなプロンプトが性能を高めるというのはLLM を対象とした研究である *2 Large Language Models are Zero-Shot Reasoners で報告されています。

具体的には、「Let's think step by step.」というZero-shot Chain of Thought(CoT)プロンプトや、「Let's think about this logically.」などのプロンプトを使うことで多段階の推論が必要なタスクでの性能向上が確認されています。このようなプロンプトは、LLM の Zero-shot での推論能力を向上させる、推論を促すような(instructive)プロンプトとされています。 今回の reason を述べさせるプロンプトも推論を促すようなプロンプトであり、それが VLM(Vision Language Model)での Zero-shot での推論能力の向上につながった可能性があると考えています。

とはいえこのような挙動がVLMでも起こるかはまだ十分に検証されていないように思えます。今後さらに論文のサーベイや手元のデータを使った実験によって調査を進めたいと思っています。

最後に、その他いくつかの商品を試した結果を載せておきます。

image desc material maker_color_name output
image 長袖ブラウスです。ほのかな光沢と滑らかな風合いの生地を使用。斜めに切り替えたペプラムがアイキャッチ。動きのある表情を演出します。ラウンドネックがすっきとした佇まい。ドロップショルダーが柔らかな雰囲気を演出します。バックネックの涙開きもポイント。ベーシックな無地デザインで、程よく抜け感のあるスタイリングが楽しめる一枚です。

フリル・ボートネック・ペプラム・長袖・パフスリーブ・ポリエステル・サテン・通勤・オフィス・オンオフ・休日・カジュアル・フェミニン・きれいめ・大人・上品
ポリエステル100% ライトグリーン color: 中間色
occasion: きれいめ
sleeve_length: 長袖
reason_color: メーカー公称の色がライトグリーンで、画像もライトグリーンのような中間色に見えるため
reason_occasion: 説明文に「オフィス」「オンオフ」「休日」「カジュアル」「フェミニン」「きれいめ」とあるが、上品なデザインと袖やペプラムのディテールから特に「きれいめ」に分類する
reason_sleeve_length: 説明文に「長袖」とあるため
image ややゆったりとしたシルエットなので、腰まわりを自然にカバーできます◎
ナチュラル加工が施された、デイリーに着回ししやすい一枚です。
インディゴブルーカラーはシーズンやトレンドに左右されずにお召しいただけます。
ボタンとファスナーは金属のシルバーカラーを使用しています。

■素材
柔らかい綿100%デニム素材を使用。
ナチュラルな加工を施しています。

ポケット: あり
裏地: なし
伸縮性: ややあり
透け感: なし
光沢感: なし

モデル身長:cm/サイズ着用
綿100% ネイビー系 color: 寒色
silhouette: レギュラー
detail: ストレート
reason_color: 画像に写っているアイテムはインディゴブルーであり、寒色系に分類されるため。メーカー公称の色もネイビー系とのことで、これも寒色に分類される。
reason_silhouette: 説明文によるとややゆったりとしたシルエットなので、スリムでもワイドでもなく、中間にあたるレギュラーと判断。
reason_detail: 画像のパンツは裾にかけて広がりも狭くなりもせず、ストレートなシルエットが見て取れるため。
image ■デザイン
ボディラインをタイト見せてくれる着痩せ効果抜群のタートルネックニット。
袖は手の甲が隠れる長さに仕上げ、フィンガーホールを施しました。
シャツやベストのインナーとしても◎もちろん1枚着としてもご着用いただけます。
何枚あっても重宝する万能ニットです。
■素材
しっかりとした肉感でインナーのあたりの心配なし。
細畝のリブの編み地は伸縮性があり、タイトなシルエットながら柔らかな着用感です。
ポケット: なし
裏地: なし
伸縮性: あり
透け感: なし
光沢感: なし
モデル身長:167cm/Mサイズ着用
レーヨン50%、ポリエステル29%、ナイロン21% レッド color: 暖色
occasion: きれいめマニッシュ
sleeve_length: 長袖
reason_color: メーカー公称の色がレッドであり、画像にも赤色のトップスが確認できるため
reason_occasion: タートルネックニットで着痩せ効果があり、シャツやベストのインナーとしても着用可能なため、きれいめマニッシュに分類
reason_sleeve_length: 袖が手の甲を隠す長さで、フィンガーホールが施されていることから長袖と判断
image ■デザイン
リブハイネックがポイントのカットソープルオーバー。
ダンボール素材を使用しているので、ストレッチ性に優れ、軽やかな着心地がポイントです。
ボックスシルエットなので体のラインをひろいにくく、ゆったりと着ていただけます。
首元と袖口にはリブを使用しメリハリをプラスしています。
優しい印象を与える淡色展開です。

■素材
膨らみのあるダンボールカットソー素材を使用。
表面が滑らかで、柔らかな風合いが特徴です。

ポケット: なし
透け感: なし
光沢感: なし
本体:レーヨン74%、ナイロン17%、ポリウレタン9%、リブ:ポリエステル95%、ポリウレタン5% ライトブルー color: 中間色
occasion: カジュアルマニッシュ
sleeve_length: 長袖
reason_color: メーカー公称の色がライトブルーであり、画像からもライトブルーに見えるため
reason_occasion: ボックスシルエットで体のラインを拾いにくく、カジュアルながらもハイネックとリブがメリハリをつけており、マニッシュな印象を与えるため
reason_sleeve_length: 袖口にリブが見え、袖自体が長いため
image ■デザイン
オーバーサイズの片畦メランジニット。
身頃から裾までストレートシルエットなので、腰回りもゆったりとしてお召しいただけます。
サイドスリットを入れることで、大きめサイズに抜け感を取り入れています。
お袖はややパフシルエットで女子感をプラス◎

■素材
もちもちとした柔らかいメランジ糸を使用。
片畦で編み立てることで厚みをだし、暖かみのあるタッチです。

ポケット: なし
裏地: なし
透け感: なし
光沢感: なし
アクリル65%、ポリエステル32%、ポリウレタン3% カラシ color: 暖色
occasion: カジュアルフェミニン
sleeve_length: 長袖
reason_color: メーカー公称の色がカラシであり、画像においてもカラシ色、つまり暖色系の色が確認できるため
reason_occasion: オーバーサイズでリラックス感がありながら、ややパフシルエットの袖が女性らしさを加えるデザインなのでカジュアルフェミニンに該当する
reason_sleeve_length: 画像から見て手首まである袖であり、長袖に該当する

おわりに

現在 (2023年11月時点) ではまだ rate limit が厳しく、数十万枚もあるような画像を分類するタスクへの本番投入はできません。 ただしこの問題は (OpenAI が落ち着けば) 早晩解決すると思いますので、その際にはいち早く作業を自動化できると考えています。

本取り組みを通じてこの技術が商品画像からの情報抽出とそれに基づくタグ付けにおいて高い性能を発揮する事がわかりました。 これにより、商品の特徴を瞬時に識別し、顧客が求める正確な情報を提供することが可能になります。 また、スタイルやトレンドをテキストデータとして解析し、顧客の好みや市場動向を予測することもできます。

ファッション業界は常に変化し、新しいスタイルやトレンドが絶え間なく生まれています。 GPT-4-Vision-Previewのようなマルチモーダルモデルは、これらの動きをリアルタイムで捉え、ビジネスの意思決定やマーケティング戦略を支援します。 この技術の柔軟性と適応性は、ファッション業界の持続的な革新と成長を支える鍵となると考えています。

参考文献

プロダクトバックログアイテムに取り掛かるタイミングを勘違いしてたはなし

こんにちは、角田です。 今回はスクラムでの失敗談です。

PBIへ取り掛かるタイミング

みなさんは、プロダクトバックログアイテム(PBI)へ取り掛かるタイミングはいつでしょうか?DROBEでは以前は、 スプリントバックログへ移し、スプリントが始まったら でした。一見正しそうなのですが、肝心なことを見落としていたため、効率的にデリバリーできない状態になっていました。

遅かった影響範囲調査

というのも、スプリントバックログへ移しスプリントが始まった後で、影響範囲の調査や該当箇所の洗い出しをしていました。この影響範囲調査や該当箇所の洗い出しにより、スプリント内での作業時間が圧迫された結果、非効率になっていました。

ディスカバリー不足だった

この時のPBIは、ほぼ『やることリスト』化していたのが大きな原因ではないかと思っています。PBIを作る際に、開発チームとPBI作成者とのコミュニケーションが不足し、本来であればディスカバリーを行う必要があったところを、行わずにプロダクトバックログ・スプリントバックログに積んでいました。

改善したこと

これを受け、現在のDROBEでは以下のことを考えながら行動しています。

ディスカバリーを行う

影響範囲や該当箇所洗い出しなどの調査や、技術的な確認については『ディスカバリー』というで最小コストで学びを得るステップでやろうとチームに共有し、実践しています。PBI作成者にも作成時に悩むことがあれば、いつでも開発チームへ相談するよう連絡し、早い段階からコミュニケーションをとって、PBIの精査を行うようにしはじめました。

ディスカバリーとデリバリーの関係

ディスカバリーはデリバリーしようと思うアイデアやストーリーの『リスク』を軽減して学びを得る作業をスプリントに固執せず自由なタイミングで行っていきます。アイデアにユーザやビジネス的に価値があるか検証したり、技術的に実現が可能か調べたりして、リスクを軽減していきます。リスクが軽減していけば、あとはスプリントで開発を行う作業を行えばデリバリーするだけです。

前述のスプリント開始後に影響範囲の調査を行っていたのは、まだPBI的にリスクがある状態であり、スプリント開始よりも前にディスカバリーを行っていれば、開発作業だけに集中することができていました。

定期的な『次スプリントのPBI作成・精査』の促進

スプリントが始まって2,3日経ったあたりから、次のスプリントのPBIについて確認をとるようにしています。これにより、作成途中のPBIを早めに認識して、コミュニケーションをとりやすくしています。

まだまだこれから

上記の改善を行い、以前よりは効率的なデリバリーができるようになりました。とはいえ、まだまだな感じは拭えないですし、また別の課題が出てき始めています。課題が山積みだとは思いますが、以前参加したLeSSの夜明けで参加者の方とお話ししていた際、「常に課題にぶち当たる」とおっしゃってたので、こんなものだと思って、日々改善していこうと思います。

(続)ファッションにおける類似商品検索アルゴリズムの性能評価

DROBEで機械学習エンジニアをしております、藤崎です。

概要

  • ファッションアイテムを特徴づけるための情報として、画像とテキストがある。これらは異なる情報を含んでいると考えられる。
  • 類似のファッションアイテムを検索する場面で、画像とテキストの情報を両方活用することで、検索の精度を向上させることができると推測される。
  • 類似のファッションアイテムを検索するタスクで、両方の情報を活用した提案手法の性能を評価し、片方の情報だけを活用するよりも、大幅に性能が改善することを確認した。

背景・目的

  • この記事は以下の記事の続編です

tech.drobe.co.jp

以前の記事で、私たちはプロのスタイリストが作成した評価データセットを用いて、複数のアルゴリズムを類似商品検索の設定で定量的に評価しました。 その設定では、画像だけを入力とするアルゴリズムが最も優れた性能を持っていることを確認しました。

ただし、ファッションの領域においては、商品のすべての特徴を画像のみから抽出するのは困難であると感じています。その理由として、ファッション商品の情報には、色やカテゴリ、柄といった視覚的に判断できる要素だけでなく、どのような商品と組み合わせると良いのか、どのシーンでの使用が適しているのか、どんな素材かといった、視覚的には判断しづらい情報も含まれているからです。多くの場合、このような情報はテキストで表現され、画像だけでは完全に捉えるのは難しいのです。

従って、画像とテキスト情報を組み合わせることで、さらに精緻に商品から特徴を抽出できると考えています。 この考えに基づき、我々はファッションにおける商品の画像情報とテキスト情報を組み合わせる手法の開発に取り組みました。後述するように類似の手法はすでに存在していますが、我々の取り組みの特長としては、画像とテキストの両方を活用することで、単一の情報源だけを使用するよりもどれだけ性能が向上するかを定量的に示した点にあります。

関連研究

JSAI2023で発表された 画像情報及び言語情報に基づくファッションコーディネート投稿の推薦*1 が我々と似た発想の手法を提案しております。 岩井らはコーディネートの推薦の手法では画像情報のような「見た目」の情報だけでは推薦の困難性が高いとし、コーディネートに関連するタグ情報、すなわち単語情報の活用を提案しています。 具体的には以下のような処理の流れで、画像と単語情報から得られるランキングを活用しています。

ここで、

  •  \text{Image Score} : 画像特徴ベクトルを元に計算したクエリに対する類似度のスコア
  •  \text{Text Score} : テキスト特徴ベクトルを元に計算したクエリに対する類似度のスコア
  •  \text{Image Ranking} : 類似度のスコアを元に計算したランキング
  •  \text{Text  Ranking} : 類似度のスコアを元に計算したランキング
  •  \alpha : 調整可能なハイパーパラメタ

論文内の図表2を参考に作成した処理の流れ

岩井らの研究では、画像の特徴ベクトルをImage2StyleGANを用いて、また単語の特徴ベクトルをDoc2Vecを使用して取得しています。このように、彼らは画像情報とタグ情報の両方を効果的に組み合わせることで、ユーザが求めるコーディネートを推薦する手法を提案しています。しかしながら、その手法における定量的な評価手法の確立は、今後の研究の課題とされていました。

提案手法

私たちの提案法では、岩井らが採用していたランキングを用いた手法とは異なり、その前段で得られる(何かしらの距離関数を用いて算出された)スコアのベクトルを活用します。このスコアは連続的な値として表現されるため、細かな差異も詳しく捉えることができます。これに対して、ランキングベースの手法は、微小な違いによっても順位が大きく変わる可能性があります。

改めて、スコアとランキングにはそれぞれ以下のような利点が考えられると認識しています。

  • スコア:連続的な数値を持つため、細かい違いや差異を精密に捉えることができる
  • ランキング:全体的なスケールが統一されているので、異なるタイプの距離関数を使っても、適用が容易である

提案手法の処理の流れ

  •  \text{Image Score} : 画像特徴ベクトルを元に計算したクエリに対する類似度のスコア
  •  \text{Text Score} : テキスト特徴ベクトルを元に計算したクエリに対する類似度のスコア
  •  \alpha : 調整可能なハイパーパラメタ[0, 1]

この実験では、以前のブログでも使用したアルゴリズムを使用しています。具体的には、テキストの特徴ベクトルの取得にはBERTを採用しています。一方、画像の特徴ベクトルの取得には複数の手法を試しています。

そして、特徴ベクトル間の類似度の計算にはコサイン類似度を使用しています。コサイン類似度は、ベクトルの向きの近さを計算する方法であり、0から1の範囲の値を取ります。この方法は、出力が特徴ベクトルのスケールの大きさに依存しないという利点があります。

実験

アルゴリズムの説明

実験で用いた深層学習モデルは以下の通りです。(使用するモデルは以前のブログと同じです)

# モデル名 推論時の入力 DROBEが持つデータでの学習
1 ResNet-50 画像 なし
2 ResNet-50
(自己教師あり学習での学習)
画像 あり
画像10万枚で学習)
3 CLIP 画像 なし
4 BLIP-2 画像 あり
画像と自然言語の1万ペアで学習)
5 BERT テキスト なし

上記各モデルの概要は以下の通りです。

  1. ResNet-50 は教師あり学習の文脈で、画像に対してその正解のラベルを正しく推定するように学習されたモデルです。

  2. ResNet-50を自己教師あり学習の文脈で学習したモデルです。そして、この自己教師あり学習をDROBEの画像データを使って行っています。ここで自己教師あり学習とはラベルデータを使わずに、大量の未ラベルデータから特徴を学習する手法です。1.のようなラベルデータを作成するのは手間なので、ラベルを使わずに1.のような性能を得ることはメリットが大きいです。(自己教師あり学習については、日本語で沢山の技術解説記事があります。*2) 自己教師あり学習では沢山の手法が提案されていますが、SimSiamという手法を使用しました。*3

  3. CLIPは、インターネットから収集した大量(4億)*1の画像とそれに対応する自然言語の説明文のペアを使用してモデルを学習する方法です。このモデルは、入力された画像と自然言語の対応関係の良さを識別する能力を持っており、特定のタスクに対する訓練なしで、多様な画像認識タスクに適用することができます。つまり、あらかじめ訓練された知識を用いて未知のタスクを解決する能力があります。

  4. BLIP-2とはVQAタスク(入力した画像に対する質問を言語モデルに答えさせるタスク)で一定の性能を示した手法です。BLIP-2の枠組みの中に画像と言語の処理を行う深層学習モデルが含まれており、この関係性を捉えるモデル(Q-Former)を学習します。 具体的には画像と質問を投げ、正解の文章を答えられるようにするように学習することで、質問に答えるための良い画像からの特徴の抽出法を学習します。*4

    BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Modelsより

  5. BERTは言語モデルの一種で、言語モデルといえばChatGPTのような言語生成にも活用できますが、文章を受け取ってその文章の意味性に基づいて固定長のベクトルに変換することにも応用できます。5.ではこのような方法で取得したベクトルを使用しました。使用したモデルではベンチマーク*5 において多言語にも対応できるかつ性能が良いMultilingual-E5-largeを選択しました。

順位相関の確認

以下の内容は、BERTと画像を入力とするアルゴリズムとの間の順位相関、すなわちKendall's tauの結果です。

Kendall's tauは、2つのランキング間の順序の相関を評価する指標で、その値が1であれば完全な正の相関が存在し、-1であれば完全に負の相関が存在することを示します。

ここでは、BERTと画像を入力とした他のモデルとの間には、正の相関は見られるものの、その相関は非常に弱いことが確認されました。このことから、テキストから得た特徴と、画像から得た特徴とでは、アイテムの類似性をどのように認識するかが大きく異なることが考えられます。

ResNet-50 ResNet-50(SSL) CLIP BLIP
BERT 0.1566 0.1122 0.1352 0.1435

定量評価

前回と同じく評価は3万件のDROBEのデータについて行い、上記の1 ~ 5のモデルが出力する類似度のtop K個に正解データが含まれている割合を計測しました。

すなわち、指標としては以下の通りです。

 \frac{top K個の候補に正解データが含まれていた数}{テストデータの合計}

これをKが10, 100, 1000の場合で確認しました。 前回のブログでも述べたとおり、単体の情報を使った場合では以下のような結果になります。

単体の情報(画像 or テキスト)を入力した場合の性能

まず前回の結果において、画像モーダルで性能が高かったCLIPについて、提案法を適用してみます。

CLIP + BERT
先ほどの結果と比較してみると、性能が大きく向上していることが確認できます。 特にtop10の場合でCLIP単体で23%ほど( \alphaが0の場合)、BERT単体で20%ほど( \alphaが1の場合)だった指標値が31%まで向上しました。

(注 : 実験設定が変更し、データが少し変わったため、以前のブログに記載したCLIP単体の性能に少し誤差が出ています。)

次に順位相関が相対的に高かったResNet-50について確認してみます。

resnet-50 + bert
こちらも性能が大きく向上していることが確認できます。 特にtop10の場合でResNet-50単体で16%ほど( \alphaが0の場合)、BERT単体で20%( \alphaが1の場合)だった指標値が30%まで向上しました。

(注 : 実験設定が変更し、データが少し変わったため、以前のブログに記載したResNet-50単体の性能に少し誤差が出ています。)

表にまとめると以下の通りです。

単体での性能(top10) 提案法の適用によって得られた性能 最適な α
ResNet-50 約16% 約30% 0.6
CLIP 約23% 約31% 0.5

また、ResNet-50を使った場合とCLIPを使った場合で正解したidの重複は85%ほどであり、モデルが異なっていても正解できる問題が似ていることも確認しました。

定量評価の内訳

定量評価の結果から気になるのは、画像やテキストの両方を使うことでどれだけ正解するようになったのか、です。

CLIPを用いた実験において、正解したidを検証した結果の内訳は以下のようになり、16%のケースにおいては、画像とテキストの情報を組み合わせることで初めて正解するようになることが確認されました。これは、画像だけやテキストだけの情報では不十分であり、両方の情報を組み合わせることではじめて充足することができることを示しています。

  • 正解したidの内訳
両方のtopKに入っている 画像のtopKにしか入っていない テキストのtopKにしか入っていない どちらのtopKにも入っていない
0.394% 0.289% 0.157% 0.16%

定性評価

定量評価では、top K個の候補に正解が含まれているかだけに注目していました。

すなわち、正解以外のtop K個の候補の類似性が考慮されていません。そこで次にtop K個の全体感を評価するために可視化を行い、定性評価を行います。 定性評価では複数の観点について分析しました。 具体的には、ある商品と同じ カテゴリ、色、丈、柄 の商品が正しくtop K個内に出現させることができたかを確認しています。

表中の表現の目安は以下の通りです。

  • 高 : 10個中7個以上 で商品に対して同じ観点のものを検出できた
  • 中 : 10個中4個 ~ 6個 でクエリに対して同じものを検出できた
  • 低 : 10個中3個 以下 でクエリに対して同じものを検出できた
CLIPのみ BERTのみ 提案手法(CLIP + BERT)
カテゴリに対するロバスト性
色に対するロバスト性
丈に対するロバスト性
柄に対するロバスト性

定性的な評価から、提案手法ではtopKの出力において「相対的に」視覚的な統一感が低いという結果になりました。

具体的には、画像情報を単独で用いる場合、色や柄などの視覚的な要素における一貫性や統一感が見られた一方、テキスト情報のみを用いる場合には、雰囲気やテイストの一貫性が感じられました。しかし、これらの情報を組み合わせて使用する提案手法では、そのような統一感が損なわれてしまいました

定量的には提案手法が優れた結果を示しているにも関わらず、実際にこれを目にするユーザーは、出力が「ランダム」と感じられる可能性があることが懸念されます。今後は定量的な向上だけではなく、ユーザーがシステムの出力をどう認識するかという側面も考慮する必要があることを示唆しています。

おわりに

画像とテキストの類似度のスコアを組み合わせることで、ファッションにおける類似検索の精度を向上させる手法の有望性を確認しました。従来の方法では、画像やテキストの情報を独立して使っていました。

しかし、私たちのアプローチでは、これら画像やテキストの情報を組み合わせることで、より総合的な視点からの類似検索を実現し、その結果として検索精度の向上を達成しました。 今後の議論の方向性としては、出力の統一感をどのように保証するかだと認識しています。

参考文献

*1:, [Online]. Available: https://www.jstage.jst.go.jp/article/pjsai/JSAI2023/0/JSAI2023_2L6GS303/_article/-char/ja/

*2:“2020年超盛り上がり!自己教師あり学習の最前線まとめ!,” Qiita, Dec. 01, 2020. https://qiita.com/omiita/items/a7429ec42e4eef4b6a4d (accessed Oct. 14, 2023).

*3:理由としては、ベンチマークでの性能が高いこと。“Benchmarks — lightly 1.4.20 documentation.” https://docs.lightly.ai/self-supervised-learning/getting_started/benchmarks.html (accessed Oct. 14, 2023). 低いバッチサイズでも良い性能となりそうなことです。X. Chen and K. He, “Exploring Simple Siamese Representation Learning,” arXiv [cs.CV], Nov. 20, 2020. [Online]. Available: http://arxiv.org/abs/2011.10566

*4:J. Li, D. Li, S. Savarese, and S. Hoi, “BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models,” arXiv [cs.CV], Jan. 30, 2023. [Online]. Available: http://arxiv.org/abs/2301.12597

*5:https://huggingface.co/spaces/mteb/leaderboard

ファッションにおける類似商品検索アルゴリズムの性能評価

DROBEで機械学習エンジニアをしております、藤崎です。

概要

  • 類似商品検索の基盤となる複数の特徴抽出アルゴリズムについて、DROBEの保有するデータで評価した
  • 定量評価によると、画像単体を入力とする ResNet-50(自己教師あり学習)とCLIPの性能が高かった
  • 定性評価によって、取り扱うモーダルの違いによる各モデル出力の顕著な差異が確認できた

背景・目的

小売において、商品の在庫は無数に存在しています。そのため、消費者やサービス提供者が商品に紐づく情報(画像、商品の説明文など)を解釈して、特定の商品と類似したアイテムを人手で行うのは困難です。

この課題を解決するために、機械学習手法の活用が注目されています。 機械学習を用いた処理の流れは、

  1. 商品に紐づく情報を適切に 「要約」 し、
  2. 1.で 「要約」 した商品情報同士が似ているものを探してくる

という以下の図のような流れです。

ある無地の黒Tと類似の商品を見つけるイメージ

図ではこの要約後の情報をベクトルとしていますが、これは商品情報のテキストや画像などの、そのままだと情報量が多く取り扱いが難しい情報を圧縮したものです。 特に1の工程で機械学習のうち深層学習モデルの活用が考えられます。なぜなら、深層学習モデルは入力された情報から適切な特徴の抽出を得意としているからです。

このような類似商品を手早く特定する手法の応用として、例えば以下が考えられます。

  • 消費者は、気に入った商品と類似した、より低価格な商品を即座に探すことができる。
  • サービス提供者は、ユーザーが購入を検討している商品と類似し、より利益率が高い商品を迅速に特定できる

本ブログでは、ファッションの設定において有効な商品情報の要約手法を探求し、プロのスタイリストによって作成したデータセットを使って、機械学習の手法のうち、自然言語や画像を処理する深層学習モデルの性能を検証しました。 この技術を使うことで、消費者とサービス提供者の双方にとって価値のある機能を提供することを目指します。

実験

実験の概要

実験ではプロのスタイリストが作成した評価データセットを使って、深層学習モデルの性能を検証しました。

この評価データセットは、ある商品と、類似度の高い商品がペアになっています。 このため深層学習モデルは与えられた商品に対して、評価データセットで示された類似商品を抽出して来ることが求められます。

実験で用いた深層学習モデルは以下の通りです。

# モデル名 推論時の入力 DROBEが持つデータでの学習
1 ResNet-50 画像 なし
2 ResNet-50
(自己教師あり学習での学習)
画像 あり
画像10万枚で学習)
3 CLIP 画像 なし
4 BLIP-2 画像 あり
画像と自然言語の1万ペアで学習)
5 BERT テキスト なし

上記各モデルの概要は以下の通りです。

  1. ResNet-50 は教師あり学習の文脈で、画像に対してその正解のラベルを正しく推定するように学習されたモデルです。

  2. ResNet-50を自己教師あり学習の文脈で学習したモデルです。そして、この自己教師あり学習をDROBEの画像データを使って行っています。ここで自己教師あり学習とはラベルデータを使わずに、大量の未ラベルデータから特徴を学習する手法です。1.のようなラベルデータを作成するのは手間なので、ラベルを使わずに1.のような性能を得ることはメリットが大きいです。(自己教師あり学習については、日本語で沢山の技術解説記事があります。*1) 自己教師あり学習では沢山の手法が提案されていますが、SimSiamという手法を使用しました。*2

  3. CLIPは、インターネットから収集した大量(4億)*1の画像とそれに対応する自然言語の説明文のペアを使用してモデルを学習する方法です。このモデルは、入力された画像と自然言語の対応関係の良さを識別する能力を持っており、特定のタスクに対する訓練なしで、多様な画像認識タスクに適用することができます。つまり、あらかじめ訓練された知識を用いて未知のタスクを解決する能力があります。

  4. BLIP-2とはVQAタスク(入力した画像に対する質問を言語モデルに答えさせるタスク)で一定の性能を示した手法です。BLIP-2の枠組みの中に画像と言語の処理を行う深層学習モデルが含まれており、この関係性を捉えるモデル(Q-Former)を学習します。 具体的には画像と質問を投げ、正解の文章を答えられるようにするように学習することで、質問に答えるための良い画像からの特徴の抽出法を学習します。*3

    BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Modelsより

  5. BERTは言語モデルの一種で、言語モデルといえばChatGPTのような言語生成にも活用できますが、文章を受け取ってその文章の意味性に基づいて固定長のベクトルに変換することにも応用できます。5.ではこのような方法で取得したベクトルを使用しました。使用したモデルではベンチマーク*4 において多言語にも対応できるかつ性能が良いMultilingual-E5-largeを選択しました。

定量評価

評価は3万件のDROBEのデータについて行い、上記の1 ~ 5のモデルが出力する類似度のtop K個に正解データが含まれている割合を計測しました。

例えば、

ID番号1の商品に対して、類似度の高い商品がID999とした場合、このID999の商品がID番号1の商品に対して計算された類似度ランキングでtop 10個以内に入っているかを確認します。入っていれば、そのペアは正確に識別されたと評価されます。

すなわち、指標としては以下の通りです。

 \frac{top K個の候補に正解データが含まれていた数}{テストデータの合計}

これをKが10, 100, 1000の場合で確認しました。

定量評価の可視化

結果はかなり均衡しています。

top 10では DROBEのデータで学習した2.と、 DROBEのデータで学習していない3.がほぼ同率となり、DROBEのデータに対するCLIPの汎化性能*5の高さを確認できました。

定性評価

定量評価では、top K個の候補に正解が含まれているかだけに注目していました。

すなわち、正解以外のtop K個の候補の類似性が考慮されていません。そこで次にtop K個の全体感を評価するために以下のような可視化を行い、定性評価を行います。

以下のように、商品(左上)に対してどのような商品が類似商品と挙げられたかをtop1 ~ top10まで可視化します。(著作権の関係でモデルが写った画像は例示できないので、物撮りの写真を掲載しております)

定性評価で使った画像のイメージ

このような画像を用いて複数の観点について分析しました。 具体的には、ある商品と同じ カテゴリ、色、丈、柄 の商品が正しくtop K個に出現させることができたかを確認しています。

表中の表現の目安は以下の通りです。

  • 高 : 10個中7個以上 で商品に対して同じ観点のものを検出できた
  • 中 : 10個中4個 ~ 6個 でクエリに対して同じものを検出できた
  • 低 : 10個中3個 以下 でクエリに対して同じものを検出できた
#1 #2 #3 #4 #5
カテゴリに対するロバスト性
色に対するロバスト性
丈に対するロバスト性
柄に対するロバスト性

特に差が顕著だった結果について補足します。

  • 入力ドメインへの依存性

定量評価には顕著な差が表れていませんでしたが、5.の手法の入力が自然言語であることの限界性が露呈しました。 具体的には5.の手法では多くの結果で、類似の色やカテゴリを抽出に課題があることが確認されました。 そもそも商品説明文には商品そのものに関する説明だけでなく、どのようなアイテムと合わせるべきかなど 「ノイズ」 も混じっているのでそのあたりの判別が難しいことが示唆されます。

  • 画像オーグメンテーションの影響

画像を入力とする2.でも色に対する相対的な精度の低下が確認されました。 しかし、これは学習データにバリエーションを出すために行う画像オーグメンテーション( = 学習データの水増し)の影響が大きい可能性があります。SimSiamの論文では色の変化に対するロバスト性を高めるために 強い Color Jitter*6を適用しています。これにより、色の違いに鈍くなってしまったことが示唆されます。

color jitterの例

おわりに

今回は類似商品検索の基盤のアルゴリズムについてさまざま探索しました。 定量・定性評価の結果としてDROBEのデータで自己教師あり学習の枠組みで学習したResNet-50や、CLIPの性能が最も良好でした。これらのモデルの性能はもっと大量のDROBEのデータを使って学習することで性能をさらに向上させることができると考えています。 引き続き実験を重ねていきます。

参考文献

*1:“2020年超盛り上がり!自己教師あり学習の最前線まとめ!,” Qiita, Dec. 01, 2020. https://qiita.com/omiita/items/a7429ec42e4eef4b6a4d (accessed Oct. 14, 2023).

*2:理由としては、ベンチマークでの性能が高いこと。“Benchmarks — lightly 1.4.20 documentation.” https://docs.lightly.ai/self-supervised-learning/getting_started/benchmarks.html (accessed Oct. 14, 2023). 低いバッチサイズでも良い性能となりそうなことです。X. Chen and K. He, “Exploring Simple Siamese Representation Learning,” arXiv [cs.CV], Nov. 20, 2020. [Online]. Available: http://arxiv.org/abs/2011.10566

*3:J. Li, D. Li, S. Savarese, and S. Hoi, “BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models,” arXiv [cs.CV], Jan. 30, 2023. [Online]. Available: http://arxiv.org/abs/2301.12597

*4:https://huggingface.co/spaces/mteb/leaderboard

*5:DROBEのデータで陽に学習していないと考えられる

*6:https://pytorch.org/vision/main/auto_examples/transforms/plot_transforms_illustrations.html#colorjitter

GPT-3.5に画像分類タスクを解かせる

DROBEで機械学習エンジニアをしております、藤崎です。

概要

  • ファッションの分野ではトレンドの変化とそれに伴う属性情報の変動に対応するため、画像分類AIモデルを頻繁にアップデートする必要性がある。
  • しかし、既存の画像分類AIモデルのアップデートには、労力と時間が掛かる。
  • 様々なタスクの遂行能力が高いGPT-3.5に画像処理能力を付与し、画像分類タスクに挑戦した。
  • 既存の研究(ex. HuggingGPT)と違って、GPT-3.5自体が画像分類の推論を行う点がユニークである。
  • 実験からは有望な結果が得られた。
  • 今後の性能向上はプロンプトを工夫するなど、比較的簡単な方法で達成できる可能性がある。

背景・目的

ファッションの業界は、トレンドの変化が早く、新しいスタイルが次々と提案されます。それに伴い、スタイルに付随する属性情報も常に変化しています、それに応じてモデルの衣服着用画像から、そこに映るラベル(=属性)情報を抽出する画像分類AIモデルもトレンドが変化すればアップデートすることが求められます。

ところが、画像分類AIモデルをアップデートするとなると、データセットの再構築、モデルの再学習、評価のプロセスなど、多大な労力と時間が必要となります。

このような背景から、トレンドの変化に柔軟に対応でき、かつ上記の労力を削減できる画像分類AIモデルの構築に対するニーズが高まっています。例えばCLIPのようなモデル(後述)は、多様なラベルの推定が可能であり、これらのニーズをある程度満たすものとして注目されています。しかし、従来の画像分類AIモデルに比べ、性能面での課題がまだ残っています

そこで、今回の実験での目的は、自然言語タスクの遂行能力が高いGPT-3.5に画像処理機能を与え、画像分類タスクを解かせる手法の有望性を確認することです。これにより、トレンドの移り変わりに柔軟に対応できる画像分類AI作成の土台になると考えています。

関連研究

  • 画像分類手法について

画像分類に関して、教師あり学習とOpenAIが開発したCLIPの2つのアプローチに注目します。

教師あり学習は、特定のラベルを持つ有限個のデータセットでモデルを学習する方法です。例えば、3クラス(ex. 犬、猫、鳥)の動物の画像を分類するAIを作成したい場合、それぞれのクラスに属する画像を収集し、各画像に対してラベル(ex. 犬、猫、鳥)を付けてモデルを学習します。この学習が完了すると、モデルはこれら3つのクラスを識別できるようになります。 しかし、教師あり学習の限界は明らかです。この方法では、学習データに含まれないクラス(ex. 象)の画像は識別できません。これは、教師あり学習が有限個のラベルでしか学習できないためです。

一方、CLIPは、インターネットから収集した大量(4億)*1の画像とそれに対応する自然言語の説明文のペアを使用してモデルを学習する方法です。入力された画像と自然言語の対応関係の良さを識別する能力を持っています。またCLIPは公開されているので、多くの開発者がこれを利用しています。 CLIPの利用例を挙げますと、ユーザーがCLIPに画像とラベルの候補(ex. 犬、猫、鳥)を入力すると、CLIPはどのラベルが画像に最も適しているかを判定します。 さらに、CLIPのもう一つの利点は、ラベルの候補の数に制限がないことです。ある時は「犬、猫、鳥」という3つのラベルで試行を行い、次には「犬、猫、鳥、象、トラ」といったように、ラベルを追加したり変更したりすることが容易にできます。これにより、CLIPは多様なラベルに対して汎用的な予測を行うことが可能となっています。

しかし、重要な違いとして、基本的には教師あり学習の方がCLIPのような汎用的な画像分類モデルと比較して性能が高いです。

性能 汎化性能
教師あり学習
CLIP 中 ~ 高
  • GPTについて

GPTはLLM(Large Language Models、大規模言語モデル)の一種であり、大量の文書データを元に学習され、その結果、一般常識を問うタスク、翻訳、要約など、自然言語を入力とした多様なタスクを効率的に処理する能力を有しています。2023年10月時点で、画像処理能力も備えたモデルがChatGPTには順次公開され、更なる多様な応用が期待されていますが、まだAPIとしては提供されていません。*2

最新のGPT-4はその推論能力において、特定のタスクに於いては人間と比較しても遜色がないとされています。例として、日本の医師国家試験に合格するレベルの能力があることが報告されています*3

これらのモデルが高いパフォーマンスを発揮する理由として、多段階の学習プロセスが挙げられます。これは、膨大な量のテキストデータに基づいて初期の学習を行った後、人間の専門家がモデルに対してさらに具体的、かつ、精緻な指導を行うことで、その性能を引き上げています。これにより、GPTは非常に高い精度と汎用性を持ったツールとして、多岐にわたる分野での応用が可能となっているのです。

  • LLM(Large Language Model)を使った画像分類タスクの実行

LLMには画像情報を処理する機構がないため、LLMと外部の画像認識モデルを組み合わせ、画像処理の能力を付加するアイデアが存在しています。しかし、現在のところ、多くの研究がLLMを「指揮官(コントローラー)」の役割に徹しさせ、与えられた入力に対してどの画像認識タスクを解かせるのかを判断させる役割に徹しさせている認識です。

例として、Hugging GPT*4はLLMを中心に据え、ユーザーのリクエストに応じて複数のAIタスクを解決するフレームワークを提供しています。これにおいて、LLMはタスクの計画、モデルの選択等を担当しています。そのため、最終的に推論を行うのは、LLMによって選択された具体的な画像認識モデルとなります。

一方、提案手法においては、画像情報を処理するAIモデルを効果的に活用しながら、最終的な推論はLLM自体が行う、というアプローチを採っています。このアイデアは、新規性があると考えられます。

提案手法

画像分類のタスクにおいて、LLMの推論能力を活用できないかを検証します。

具体的な処理の流れは、以下の通りです。

  1. GPT-3.5でCLIPに入力すべきラベルの候補を作成する
  2. CLIPは画像と1.で作成したラベルの候補を入力して各ラベルのもっともらしさを計算する
  3. GPT-3.5は2.で得られたもっともらしさを元に次のラベルの候補を作成する
  4. 2 ~ 3.をくり返す(本実験では5回)
  5. GPT-3.5は1.~4.の全てのやりとりの履歴を踏まえてもっともらしいラベルを一つ回答する

GPT-3.5にはCLIPから得られたもっともらしさを勘案して、臨機応変に次の質問にうつっていく必要があります。 つまり、GPT-3.5は自身が持つ知識を前提として、CLIPというツールを駆使しながら、様々な観点について網羅的に画像から情報抽出を行なっていきます。 最終的にはGPT-3.5がCLIPを通して集めた情報を元に、自身の知識を活用して画像に何が映るのかを言い当てます。

  • CLIP + GPT-3.5のやりとりのイメージ
GPT-3.5の質問 CLIPの回答
1回目のやりとり 脊椎動物ですか?無脊椎動物ですか? 脊椎動物の確率は75%です。無脊椎動物の確率は25%です。
2回目のやりとり 魚類ですか?両生類ですか?爬虫類ですか?鳥類ですか?哺乳類ですか? 魚類の確率は10%です。両生類の確率は10%です。爬虫類の確率は10%です。鳥類の確率は10%です。哺乳類の確率は60%です。
: : :
n回目のやりとり 犬ですか?猫ですか? 犬の確率は40%です。猫の確率は60%です。
  • 図を使った処理の流れの説明

    • Interaction Phase(上記説明の1~4)ではCLIP + GPT-3.5が何度もやりとりをします。
    • Classification Phase(上記説明の5)ではInteraction Phaseで収集したCLIP + GPT-3.5のやりとりを踏まえて、画像に何が写っていそうかをGPT-3.5が判断します。

処理の流れ

実験

  • 設定

提案した画像分類手法の有効性を検証するために、公開データセットCIFAR-10の評価データから300枚の画像をランダムにサンプリングしました。CIFAR-10は、飛行機、自動車、鳥、猫、鹿、犬、カエル、馬、船、トラックといった10種類のラベルが付与されたデータセットです。

  • 試行1ではベースラインとしてCLIPのみを使用してCIFAR-10の10個のラベルの候補と画像を入力し、画像がどのラベルであるかを判定させました。

  • 次に、試行2では、CLIP + GPT-3.5を使用してClassification Phaseでクラス名が既知の設定で実験しています。これは、Classification Phaseが分類の出力がCIFAR-10の10個のラベルに絞られており、そのラベル名も知っている設定です。

  • 試行3では、CLIP + GPT-3.5を使用してClassification Phaseでクラス名が未知の設定で実験しました。これは、Classification Phaseが分類の出力がCIFAR-10の10個のラベルに絞られておらず、そのラベル名も知らない設定です。

これらの評価を通じて、CLIPとGPT-3.5を組み合わせた提案手法が、画像分類タスクにおいてどの程度の性能を発揮するのか、その有効性を明らかにすることを目指しています。

  • 結果

試行3において、他の設定に比べて性能が低下する結果となりました。しかし、クラス名を明示的に指示しないこの設定でも、一定の性能を示しています。これは、提案手法の有望さを示しており、後述するような考察を踏まえて改良することで性能向上が見込めると考えています

# 内容 Accuracy
試行1 CLIP単体 88.9
試行2 提案手法(Classification Phaseでクラス名が既知の設定) 84.3
試行3 提案手法(Classification Phaseでクラス名が未知の設定) 80.4
  • 考察
Phase 内容 内容の補足 改善案
Interaction Phase 収集した履歴の重要性 履歴中の情報を全てふんだんに使っており、履歴を活用できている。

例えば試行3の設定において、Interaction Phaseでの最終的なやり取りでは自動車であることがもっともらしいと言われながら、Classification Phaseではトラック予想し、正解していた。
Interaction Phase 良くないラベルの候補の生成 提案法では早い段階で具体性の高い質問に移行してしまったことが見られた。

例えば試行2, 3の設定などで序盤の質問で特定のジャンル(ex. 家電)を問うような質問に移行してしまっており、CIFAR-10の設定では問うべき動物や乗り物に関する質問に移行できなかった。
CLIPからの回答でもっともらしさが均衡していれば、より抽象的な質問に戻るなどのプロンプトの工夫が必要。
Interaction Phase 適切な回数のInteractionの実行 提案法ではまだ肝心な質問に移行する前にClassification Phaseにうつってしまっていた。 Classification Phaseに移るべきかを評価する仕組みの導入が必要。
Classification Phase 最終出力の形式 ラベルとして単語を出力して欲しいが、文章を生成してしまうことが見られた。 出力は単語であることをデモンストレーションによって見せる(ex. few-shot learning)などのプロンプトの工夫が必要。

終わりに

本ブログでは、GPT-3.5に画像処理能力を付与し、汎化的な画像分類能力を開発するための実験を行いました。期待の持てる結果が得られましたがこの試みの過程で、様々な改善点が明らかになりました。それらの改善点の多くは、プロンプトの工夫など、比較的簡易な方法で性能向上が期待できるものが多いと考えています。

今回は触れることができませんでしたが、新しいトレンドや変化にどれだけ迅速にGPT-3.5が適応できるかという点も今後検証していきます。 実験で得られた発見は特に、ファッション業界のように、画像分類AIの定期的な更新が求められる分野で、価値があると考えています。これらの知見をもとに、より高品質な画像分類モデルの開発を目指し、引き続き実験を重ねていく所存です。

参考文献

*1:A. Radford et al., “Learning Transferable Visual Models From Natural Language Supervision,” arXiv [cs.CV], Feb. 26, 2021. [Online]. Available: http://arxiv.org/abs/2103.00020

*2:2023/10より画像機能がChatGPTでは公開されている https://openai.com/blog/chatgpt-can-now-see-hear-and-speak

*3:J. Kasai, Y. Kasai, K. Sakaguchi, Y. Yamada, and D. Radev, “Evaluating GPT-4 and ChatGPT on Japanese medical licensing examinations,” arXiv [cs.CL], Mar. 31, 2023. [Online]. Available: https://github.com/jungokasai/IgakuQA

*4:Y. Shen, K. Song, X. Tan, D. Li, W. Lu, and Y. Zhuang, “HuggingGPT: Solving AI tasks with ChatGPT and its friends in Hugging Face,” arXiv [cs.CL], Mar. 30, 2023. [Online]. Available: https://github.com/microsoft/JARVIS

PHP Conference Japan 2023で登壇します

こんにちは。角田です。 DROBEは2023年10月8日(日)に開催される、PHP Conference Japan 2023で登壇します。

2000年より年に1回開催されている日本最大のPHPのイベントです。初心者から上級者まで幅広くたくさんの参加者が蒲田に集結します。今回の登壇もとてもバラエティに富んだ内容になっており、あと数日ですがワクワクが止まりません!

登壇内容

『25分で理解する!Symfonyの魅力とその実践的活用法』というタイトルで、Symfonyの魅力についてお話ししていきたいと思います。限られた時間ですが、しっかりお伝えできればと思います。

fortee.jp

ブース出展もします

今回はゴールドスポンサーとして協賛しており、ブースも出展いたします。ブースにお越しの方にはプレゼントをご用意しております。 登壇後のご質問などにもお答えできると思いますので、ぜひお立ち寄りください!

PHP Conference Japan 2023について

phpcon.php.gr.jp


DROBE開発組織の紹介
組織情報ポータル