DROBEプロダクト開発ブログ

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

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

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


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