ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社のコーポレートサイトはこちらです。
当ページに記載されている情報は、2023年9月30日時点の情報です。

企業情報

2022.06.29

ヤフーが独自開発した類似画像検索「NGT」のいままでとこれから Yahoo! JAPAN研究所

画像

Yahoo! JAPAN研究所は、ヤフーのサービスを先進技術で支える存在として、各サービス、数々の大学や研究機関と広く連携しながら研究開発を行っています。
ヤフーが独自に開発した画像認識技術とベクトル近傍検索技術「NGT(Neighborhood Graph and Tree for Indexing)」を20年以上研究している岩崎の研究の内容、これまで取り組んできたこと、研究者として考えてきたことなどを聞きました。

    目次:
  1. ヤフーの研究者になったのは、研究内容を自ら営業して回ったことがきっかけ
  2. NGT(Neighborhood Graph and Tree for Indexing High-dimensional Data)とは
  3. 研究・開発したものをあえてOSSで発信 幅広いフィードバックをサービスにも生かす
  4. 研究者としての葛藤があった時期も 社内の協力を得ながら研究を続けてきた
  5. やりたいことをやるための努力を惜しまないことが大事
  6. 「一生を通じてやりたいことがあるのが幸せ」NGTを世界トップクラスに
岩崎 雅二郎(いわさき まさじろう)
1987年早稲田大学理工学部工業経営学科卒業。1989年同大学院理工学研究科機械工学専攻修士課程修了。同年日本電気株式会社入社。1990年株式会社リコー入社。全文検索、構造化文書データベース、画像検索の研究開発に従事。2007年ヤフー株式会社入社。画像認識・高次元データ検索の研究開発に従事。博士(工学)。

どのように研究を進めているか
私は、自分でロジックを考えて、自分で開発まで行っています。ロジックを考えるのが本当に大好きです。今取り組んでいる類似画像検索の「性能をもっと上げたい」と思っているので、以前は布団の中で一晩中考えていることも。
紙に書きながら考えることもありますが、頭の中で「これがこうなると、こうなって…」とロジックを考えることが多いです。行き詰まった時は会社帰りや散歩で歩いていると良いアイデアが出ます。目の前にPCがあるとつい手を動かしてしまうため、思考への集中力が減るようです。
使用しているプログラミング言語はC++がメインです。とても歴史が長い言語で、C++の出始めのころ、便利な言語だなと思って使い始めました。まさか今でも通用する言語だとは思っていませんでしたが、高速性を追求するのには今でも適していると思います。
高校生の頃にプログラミングに最も魅了された理由は、自分の手一つで何でもつくれると思えたからです。「このディスプレーの中にもう1つの世界さえもつくれるかも」と可能性が無限大に広がっていると感じたことが一番心を引きつけたのだと思います。
実際、それが今ではたとえばメタバース(仮想空間で、「現実」として生活を送る)で可能になっていますよね。

ヤフーの研究者になったのは、研究内容を自ら営業して回ったことがきっかけ

ヤフーの研究者になったのは、類似画像検索の研究内容を売り込んだことがきっかけです。
当時、前職のサービスにも反映できる段階まで研究開発を進めたのですが、そのときの主力製品にはマッチせず、製品への搭載には至りませんでした。そこで、せっかくよいものができたのでぜひ誰かに使ってほしいと思い、自分でいろいろな会社にこの技術を売り込みに行きました。研究内容を自分で営業して回る研究者は、当時はいなかったですね。

複数社に提案をしていた中にヤフー(ヤフオク!)もあり、話を聞いてもらったのが2000年ごろです。「これは使えそうですね」と評価いただき、当時のヤフオク!で使ってもらうことになりました。

NGT(Neighborhood Graph and Tree for Indexing High-dimensional Data)とは

私が研究している類似画像検索「NGT」は、テキストや画像などから抽出される特徴を表すデータ(ベクトルデータ) を検索する技術です。
これは「ベクトル近傍検索」とも呼ばれ、大規模なデータベースでも高速に検索できる点が特徴です。具体的には、この技術を使うことで、たとえば自分が欲しい商品に似た画像を簡単に探せるようになります。現在、ヤフーではYahoo!ショッピングなどに搭載されています。

※商品詳細の画面から、虫眼鏡のアイコンを押すと見た目が似ているものが探せます。

詳しくは、こちらの記事もあわせてご覧ください。
「似ている商品が探せる」Yahoo!ショッピングアプリの類似画像検索機能(コーポレートブログ)
似た商品が見つかる! Yahoo!ショッピングの類似画像検索~近傍探索NGTの導入事例(Yahoo! JAPAN Tech Blog)

類似画像検索を行うためには、まず、人間がどうやって画像を見ているかシミュレーションをする必要があります。
たとば、洋服を見たら、「これは赤だ」、「これはTシャツだ」、「これは花柄だ」と色や形状や模様としてそれぞれ判断できますよね。このような色の特徴、形状の特徴、模様の特徴というバラバラの情報からその服の特徴を抽出することに取り組みました。

現在の「類似商品画像検索」では、この図のように商品部分を自動的に検出した後に特徴を抽出、インデックスに登録しています。

※参考)類似画像検索の特徴量について:
ヤフーの類似画像検索技術と特徴量モデル~Yahoo!ショッピングの事例紹介(Yahoo! JAPAN Tech Blog)

約20年前にヤフオク!に採用された「類似画像検索」では、画像全体から特徴を解析し、その画像の特徴を表現するたくさんの数値データを生成します。類似画像は特徴を表現する数値データも類似するので、類似する数値データを検索することで類似画像が検索できるというものでした。
前職からヤフーに転職後も研究を続け、ニューラルネットワーク(※以下、AI)と組み合わせることで、高速かつ高精度な類似画像検索が可能になり、Yahoo!ショッピングで類似商品画像検索がスタートしたときは感慨深いものがありました。
そして、この時期に画像の特徴抽出はAIに任せられると判断し、研究開発の軸足を近傍検索に移したことが、大きな転換点となっています。

※ニューラルネットワーク:
脳の神経細胞(ニューロン)のネットワーク構成を模した数学モデルのこと。データで学習させることにより、人間の脳と同じように音声や画像のパターンを認識できる。

NGTは
・画像の特徴を解析、それを表現する数値データを生成
・類似する数値データを検索することで、類似画像を高速に検索できる

効率的な検索のためには「インデックス」が必要

では、どうやって類似画像を判断しているかを説明します。たとえば(2次元の)地図上で、「東京駅に一番近いレストランはどこか」を探すことは、なんとなく簡単に感じられるのではないでしょうか? 
ですが、一番近いものを見つけるためには「東京駅からすべてのレストランまでの距離」を調べる必要があります。この方法ではレストランが何千万件以上もあったら、一番近いレストランを見つけるまでの時間が長くなってしまいます。

そこで、実際に検索するときには「インデックス(目的のレコードを効率よく取得するための、書籍の「索引」のようなもの)」を作っています。
効率的な検索のためにはインデックスが必要です。インデックスがあることで、すべてのレストランまでの距離を調べる必要がなくなり、検索結果が出るまでのスピードが速くなります。

東京駅からすべてのレストランまでの距離を調べて、一番短いものを見つける。レストランが何千万件以上あると、結果が出るまでの時間が長くなってしまう。
すべてのレストランまでの距離を調べる必要がなくなり、検索結果が出るまでのスピードが速くなる。

東京駅からの距離で一番近いレストランをランキングで出すことは2次元なので、従来あるインデックスを作成すれば非常に高速にできます。
それが3次元になると、少し難しくなり、4次元、5次元、6次元、7次元…となり100次元くらいになると、「次元の呪い」と言われる状態です。「呪い」と言われているのは、2次元ではうまくいくので100次元でもうまくいくと思って実装してみると、まったく効果がない、というような現象がさまざまな場面で表れることです。これを克服するためにNGTでは「グラフ型」のインデックスを利用しています。
詳しくはこちらのブログもあわせてご覧ください。
NGT -グラフ型インデックスによる近似近傍検索の基本-(Yahoo! JAPAN Tech Blog)

研究・開発したものをあえてOSSで発信 幅広いフィードバックをサービスにも生かす

ヤフー入社前にまずテキスト検索を研究したのち、類似画像検索について研究を開始。その後ヤフーに入社してからも研究し続け、気づけば20年以上になりました。

開発したものは社内に直接に広げていくのではなく、あえてOSS(※)の形で先に世に出しています。
※OSS(Open Source Software):
作成者がソースコードを無償で公開しており、利用や改変、再配布が自由に許可されているソフトウエアのこと。GitHub

このようにしている理由は、エンジニアは最先端の良いものを利用しようとするので、外で使われた実績があり、良い評価が得られている方が、より使ってもらえるのではないかと考えたためです。
社外で評価されているよい技術であれば、ヤフーの技術かどうかなど気にせず社内で使われます。そして、OSSで出すことで社外の人にも広く使ってもらい、そのフィードバックを反映することで、それがヤフーのサービスをよくしていくことにもつながります。
OSSに対して、「こういう機能を入れてほしい」「これはバグではないか」という声をいただきますが、なかには感謝の意だけをわざわざ書いてくださる方もいます。そんなときは涙が出そうになるほどうれしくなります。

研究者としての葛藤があった時期も 社内の協力を得ながら研究を続けてきた

私は44歳でヤフーの研究所に転職しました。前職の研究所では管理職になっていましたし、その年齢になってからの転職は、正直厳しいのではないかとも思い、かなり悩みました。
ですが、もっと技術に近い仕事をしたいという気持ちが大きかったので思い切ってヤフーに飛び込みました。
ただ、ヤフー入社後は、仕事の仕方が前職とはまったく違っていて、何もかもゼロから試行錯誤しながらで正直大変でした。今のようにサービスとの距離が近くなかったり、研究開発が思うように進められなかったりした時期もありました。
ただ、自由度の高いヤフーの社風は私にはあっていて、この時期に社内に向けて自分で掛け合い、自分でアウトプットを形にしていくというやり方が身についた気がします。入社後は、社内のエンジニアやデザイナーたちに掛け合って、ラボサービスとして多くのアプリを作りました。
今はYahoo!ショッピングに類似画像検索が利用されていますが、どれもまず「これおもしろそうでしょう?」と声をかけて、興味を持ってくれる人と一緒につくってきました。本業以外でやっていた人が多かったと思います。このやり方は、研究者としては珍しいかもしれません。

これまでの研究成果

ラボアプリ
FavNaviサイヤスカメラ、FashionNavi、monotagなど
サービス
ヤフオク!、Yahoo!ファイナンス(手書きチャート検索)、Yahoo!ショッピング、Yahoo!ブラウザアプリ、Vald(ベクトル検索エンジン)
※Yahoo!ショッピングやYahoo!ブラウザアプリでは、指定した(撮影した)商品と類似する商品を検索することが可能。現在はファッション、インテリア、家電に対応している。

やりたいことをやるための努力を惜しまないことが大事

私はこれまでずっと、「やりたい(=楽しい)」と感じることを研究してきました。
人生のうち、仕事をしている時間は長く、1日のなかで8時間ぐらいは仕事していますよね。それだけの時間を割くのであれば、せっかくだから楽しいことをしたい。それが楽しくなかったら、人生のかなりの部分が楽しくなくなってしまうのではないでしょうか。

これまでやりたい研究に取り組めたことは、運が良かったところもありますが、やりたい研究があったときは「これを研究することでこういうアウトプットになって、こういうところに使える」ということを全力でアピールしてきました。やりたいことをやるための努力を惜しまないことが大切だと思います。
ただ、多くの人はもしかしたら、自分が「やりたいこと」がなかなか見つからないのかもしれません。私には大学院生の息子がいますが、私たちの時代と比べて今は情報量が膨大なので、多いからこそ悩んでしまうのかもしれないとも思います。
また、多くのものがすでに完成していて、大きな発展を遂げそうと感じられる未熟なものがあまり見当たらないことも、その理由なのかもしれません。たとえば息子に「こういうアプリをつくってみたら?」と言っても「そんなの、もうあるよ」と言われてしまいます。
確かに、自分が思いつくものは、すでに世界の誰かが思いついていて、ある程度形にもなっている場合が多いので、やる気をなくしてしまうこともあるかもしれません。
それでも、みなさんにもぜひ、自分がやりたいことを見つける努力を続けてほしいと思います。

「一生を通じてやりたいことがあるのが幸せ」NGTを世界トップクラスに

これまでの検索では、基本的にデータをメモリ上に載せているので、メモリサイズの制限で、検索対象のデータ数が決まってしまっていました。今は、メモリに載らないようなデータも扱えるようなインデックスの研究開発に取り組んでいます。
具体的には、数千万規模の検索が今は可能ですが、それを数十億というデータを検索できるようしているところです。この技術を今後、Yahoo!ショッピングやヤフオク!をはじめとしたヤフーのサービスにも反映することでさらに便利にしていきたいと思います。
そして、この技術も世界トップクラスにするのが今の私の挑戦です。

高校生の時からコンピューターが大好きでした。当時はまだ高額だったので買えず、持っていた友人宅に毎日のように通っていました。そこでプログラミングの楽しさを知り、結果的に研究者になる道へとつながっていきました。
若い頃はこの年齢になってもプログラミングしているなんて思ってもいませんでしたが、プログラミングは今でも楽しいです。できるだけ長くやりたいですし、いつまで研究開発ができるかも、ある意味挑戦だと思っています。
やりたいことがこれからもある限り、研究者として「やり切った」と言えるときはこないのかもしれません。「一生を通じてやりたいこと」があり、これまで続けてこられた私は、とても幸せだと思います。

これまでの取り組み

1990年~2007年 前職で全文検索の研究開発を行う。その後、類似画像検索を開始
1999年~2000年 MPEG7標準化活動を経て画像特徴量が標準に採用される
2000年 ヤフオク!に類似画像検索の導入を提案し、採用される
2003年 類似画像検索でBest of WPC EXPO 2003受賞
2004年 類似画像検索システム(VISMeister)発売
2007年 ヤフー(Yahoo! JAPAN研究所)に転職
2016年 NGTをOSSとして公開
2018年 NGTが公開ベンチマークで世界トップレベルの性能を達成
2019年 Yahoo!ショッピングで類似画像検索機能を提供開始
2020年 NGTで情報処理学会業績賞受賞

【関連リンク】

このページの先頭へ