テクノロジー

2020.04.20

出品をもっと手軽に 〜 ヤフオク!の出品時タイトル推薦機能の裏側

ヤフオク!の出品時タイトル推薦機能の裏側

こんにちは。サイエンス統括本部でヤフオク!やPayPayフリマの検索や出品支援機能の改善を担当している土井です。

ヤフオク!やPayPayフリマには、出品時に商品の写真から商品名候補となるキーワードを推薦する機能があります(アプリ版のみ提供中)。
出品画像と類似した過去の商品を高速に検索し、その商品のタイトルに基づいて下図のようにタイトル候補となるキーワードをユーザーに推薦します。

title_recommendation_demo

この記事では本機能を実現するために必要となる、商品画像を特徴ベクトル化する仕組み、NGTにより類似度の高い画像(特徴ベクトル)を高速に検索する類似画像検索基盤等を紹介したいと思います。

※本記事はYahoo! JAPAN Tech Conference 2019での発表「ヤフオク!における出品時タイトル推薦機能の裏側」をベースとした資料となっています。興味のある方は、以下発表資料もご覧ください。

出品時タイトル推薦の処理概要

出品時タイトル推薦処理全体の流れをざっくり説明すると以下の通りです。
まず、ユーザーが出品時に商品の写真をアップロードした時点で、あらかじめインデックスしてある過去の出品画像の中から出品画像に似ている商品を検索します。
次に、検索された画像のタイトルに出現するキーワードを集約し、出現頻度の高いものを推薦タイトルの候補としてユーザーに表示します。

recommendation_flow

ここで気になるのは、どうやって似ている画像を探すのかという点だと思います。

どうやって類似画像を探す?

画像同士が似ているかどうかをどのように判定すれば良いでしょうか?
これには、特徴ベクトル(画像のもつ特徴を固定長のベクトルに変換したもの)を利用します。

画像の特徴ベクトルとは画像を固定長のベクトルに変換したもので、下図のようなイメージです。(3次元の場合)

feature_vector_01

このとき、類似画像を精度良く検索できるようにするために、異なる物(りんごとスマホ)は異なる特徴ベクトルとなり、似ている物(色違いのスニーカー)は類似した特徴ベクトルになっている必要があります。

画像の類似度を判定する際には、ベクトルのコサイン類似度(2つのベクトルがどの程度同じ向きを向いているかを示す指標)を計算します。
下図の例では、りんごとスマホのコサイン類似度が0.0733となっているのに対して、色違いのスニーカーのコサイン類似度は0.9935となり、値が1に近いほど画像が類似していると判断します。

feature_vecotr_02

画像を特徴ベクトルに変換するニューラルネットワークを学習する

実際に画像を特徴ベクトルに変換する際には、CNN(畳込みニューラルネットワーク)を利用します。
CNNを学習する際に、類似した画像の特徴ベクトルのコサイン類似度は大きくなるように、異なった画像の特徴ベクトルのコサイン類似度は小さくなるように過去の大量の出品画像を使って学習します。

feature_extraction※ニューラルネットワークの画像はイメージ(実際に利用しているものとは異なります)

CNNの学習時には以下のような工夫をしています

  • 画像が類似しているかどうかは出品されたカテゴリーをもとに判断
    ヤフオク!のカテゴリー(約3万3000種類)を画像の見た目に基づくカテゴリー体系にマッピング(約1300種類)して学習データとして利用
  • ディープラーニング向けスパコン「kukai」を利用
    過去の数千万件の出品画像を高速に学習可能(最大80GPUで分散並列学習)
  • 重複した画像の除去(dedupe)
    出品画像には、リサイズや再圧縮によりバイナリが一致しない重複画像が大量に含まれているため、知覚ハッシュ関数などを使って重複除去しておく(phashのハミング距離4以下の画像を除去する等)
    ※ 知覚ハッシュ関数:画像の見た目が類似しているほど類似したハッシュ値を生成するハッシュ関数

学習手法の詳細については、前述のスライド資料を御覧ください。

特徴ベクトルの近傍探索

CNNを使って画像から特徴ベクトルへの変換が可能となっても、過去の数千万件の商品画像から類似画像を検索するためにはさらなる工夫が必要です。

画像同士のコサイン類似度による判定を素朴に行うと、1回の出品ごとに出品画像と検索対象画像全件との組み合わせについて計算を行う必要があります。
例えば、検索対象の商品画像が5千万枚ある場合に、出品画像と最も類似している過去の商品画像を検索したい場合には、5千万回のコサイン類似度の計算が必要となり、計算遅延が非常に大きくなってしまいます。

そこで、入力特徴ベクトルに最も類似した特徴ベクトルを近似的に高速に検索できるようにするための仕組みとして、近似最近傍探索(Approximeate Nearest Neighbor search)という技術があります。

今回のタイトル推薦機能では、Yahoo! JAPAN研究所で研究された技術NGTを利用しています。

類似画像検索基盤の開発

タイトル推薦機能の開発に先立って、過去の出品データから画像の見た目が類似した商品の各種メタデータを検索可能な類似画像検索基盤を構築しました。

類似画像検索基盤を使ってタイトル推薦機能を提供する際のフローは以下の通りです。

image_search_pf

上図の通り、類似画像検索基盤はこれまで説明してきた要素技術を基に構成されています。
商品のメタデータについては、商品のタイトルだけでなくカテゴリーや落札価格など、さまざまな情報を取得可能な設計となっています。

タイトル推薦機能の開発にあたり以下のような工夫も行っています。

  • 類似画像の検索結果上位100件のメタデータをもとにタイトルを推薦
    • カテゴリー情報による絞り込み
    • 画像の類似度に応じた重み付け
    • 同一単語の出現頻度によるスコアリング
  • メタデータインデックス構築時の前処理
    • ストップワードの除去(美品、送料無料、etc)
    • 商品タイトルの形態素解析、表記揺れ解消やブランド名の名寄せ

まとめ

出品時タイトル推薦機能をテーマに商品画像を特徴ベクトル化する仕組みや類似画像検索基盤について紹介しました。

本機能を導入することにより、出品ドロップ率(出品ユーザーのうち途中で出品をやめてしまう割合)が低下しており、以前よりも出品を手軽にすることができたのではないかと思います。

類似画像検索基盤はタイトル推薦機能の提供のためだけでなく、今後幅広く活用することを想定して開発されました。
今後、タイトル推薦だけでなく、カテゴリー推薦、価格推薦、類似画像検索等、さまざまな活用を見込んでいます。

今後のヤフオク!とPayPayフリマの改善にご期待下さい!


土井 賢治
機械学習エンジニア
機械学習を活用してヤフオク!とPayPayフリマのサービスを改善しています。
Yahoo! JAPAN アドベントカレンダー2020

Qiita(外部サイト)の「購読する」ボタンを押しておくと更新通知を受け取れます

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

関連記事

このページの先頭へ