(57)【特許請求の範囲】
【請求項１】
複数のコンテンツ、当該複数のコンテンツ中の２つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、高い類似度を持つコンテンツほどハッシュ値の距離が近くなり、コンテンツから抽出される特徴量を引数としてパラメータｗ，ｂを含む三角関数によって規定されるハッシュ関数の集合を生成するコンピュータにより実行されるハッシュ関数生成方法であって、
前記コンテンツデータベースから２つのコンテンツｉ，ｊを読み出すステップと、
前記２つのコンテンツｉ，ｊそれぞれの特徴量ｘｉ，ｘｊを抽出するステップと、
前記２つのコンテンツｉ，ｊ間の関連付けを示す前記関連情報ｙｉｊを前記コンテンツデータベースから取得し、式
【数４】
0005596648.tif 000016
を最大にするパラメータｗ，ｂを求めて前記ハッシュ関数の集合に含まれるハッシュ関数のパラメータｗ，ｂを定めるステップと、
を有することを特徴とするハッシュ関数生成方法。
【請求項２】
前記２つのコンテンツｉ，ｊを読み出すステップは、ｋ番目のハッシュ関数のパラメータｗ，ｂを定めるときに出現確率Ｅｋ（ｉ，ｊ）に基づいて前記２つのコンテンツｉ，ｊを読み出すものであって、
出現確率Ｅｋ（ｉ，ｊ）は式
【数７】
0005596648.tif 000017
【数８】
0005596648.tif 000018
（ただし、Ｚｋは正規化係数、ηは予め定めた定数、Ｈｋはｋ番目以前に生成されたハッシュ関数の集合、Ｈａｍはハミング距離を求める関数である）によって更新されることを特徴とする請求項１記載のハッシュ関数生成方法。
【請求項３】
複数のコンテンツ、当該複数のコンテンツ中の２つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、高い類似度を持つコンテンツほどハッシュ値の距離が近くなり、コンテンツから抽出される特徴量を引数としてパラメータｗ，ｂを含む三角関数によって規定されるハッシュ関数の集合を生成するハッシュ関数生成装置であって、
前記コンテンツデータベースから２つのコンテンツｉ，ｊを読み出して当該２つのコンテンツｉ，ｊそれぞれの特徴量ｘｉ，ｘｊを抽出する特徴抽出手段と、
前記２つのコンテンツｉ，ｊ間の関連付けを示す前記関連情報ｙｉｊを前記コンテンツデータベースから取得し、式
【数４】
0005596648.tif 000019
を最大にするパラメータｗ，ｂを求めて前記ハッシュ関数の集合に含まれるハッシュ関数のパラメータｗ，ｂを定めるハッシュ関数生成手段と、
を有することを特徴とするハッシュ関数生成装置。
【請求項４】
前記特徴抽出手段は、ｋ番目のハッシュ関数のパラメータｗ，ｂを定めるときに出現確率Ｅｋ（ｉ，ｊ）に基づいて前記２つのコンテンツｉ，ｊを読み出すものであって、
出現確率Ｅｋ（ｉ，ｊ）は式
【数７】
0005596648.tif 000020
【数８】
0005596648.tif 000021
（ただし、Ｚｋは正規化係数、ηは予め定めた定数、Ｈｋはｋ番目以前に生成されたハッシュ関数の集合、Ｈａｍはハミング距離を求める関数である）によって更新されることを特徴とする請求項３記載のハッシュ関数生成装置。
【請求項５】
請求項１又は２に記載のハッシュ関数生成方法をコンピュータに実行させることを特徴とするハッシュ関数生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、類似コンテンツの検索に用いるハッシュ値を求めるハッシュ関数を生成し、そのハッシュ関数を用いてハッシュ値を求める技術に関する。
【背景技術】
【０００２】
通信網、ストレージ、分散環境の高度化により、オンラインで流通するマルチメディアコンテンツの数は膨大な量となっている。例えば、ある検索エンジンが検索可能としているウェブページ数は数十億とも数兆ともいわれている。集合知による事典として有名なWikipediaでは３５０万以上の記事が閲覧可能となっている。あるソーシャルメディアサイトでは、毎月２５億の画像がアップロードされているとの報告があり、また、ある動画共有サイトでは、１分当たり４８時間分の映像が新規公開されているとの報告がある。
【０００３】
マルチメディアコンテンツを閲覧・視聴しようとする利用者は、このような膨大な量のコンテンツの中から、閲覧したい・興味のあるコンテンツを探し出す必要がある。探したいコンテンツが明確であるような場合などには、検索エンジンを利用して能動的に問い合わせを行う（クエリを入力して検索結果を得る）ことができる。しかしながら、例えば、空いている時間に閲覧するコンテンツを探す場合などは、適当な問い合わせを形成することが難しい場合が多く、能動的な検索は非効率な場合が多い。
【０００４】
こうした場合に有益な手段が推薦である。推薦は、利用者が現在閲覧している、あるいは、過去に閲覧していたコンテンツ（以下，閲覧コンテンツと呼ぶ）を手掛かりに、その利用者が未だ閲覧していないコンテンツ（以下，未閲覧コンテンツと呼ぶ）の中から興味を持つであろうコンテンツを推測し、提示することである。陽に問い合わせを要求する検索とは異なり、探したいコンテンツが明確ではないような場合でも興味のあるコンテンツを得ることができる。また、いちいち問い合わせをせずともコンテンツ（のリスト）を得ることができるため、利用の障壁も低い。さらに、利用者がこれまでに気付かなかった新しいコンテンツに出会うことができる可能性もある。このような多くの利点から、推薦は、コンテンツ共有・配信サイトはもちろん、ｅコマースサイトなどでは需要・購買意欲を喚起する手段としても注目され、積極的な導入が進んでいる技術である。
【０００５】
閲覧コンテンツを基に未閲覧コンテンツの中から興味のあるものを発見する推薦を実現する一つの典型的なアプローチは、「閲覧コンテンツと似た“内容”を持つ未閲覧コンテンツは利用者の興味に合う」と仮定し、閲覧コンテンツと「類似度」の高い未閲覧コンテンツを推薦するものである。言い換えれば、内容の類似度を測ることができれば、推薦を実現することができる。通常はコンテンツをある特徴量として表現し、この特徴量の近さを測ることで類似度を計算する。単純な例を挙げれば、コンテンツが画像であれば、画像の色ヒストグラムを特徴量としてその類似度を測ることができる。コンテンツが文書であれば、単語の出現頻度をヒストグラム化したもの（Bag-of-Wordsヒストグラムなどと呼ぶ）を特徴量として類似度を測ることができる。
【０００６】
しかしながら、大量のマルチメディアコンテンツを対象にしようとした場合、下記２つの重要な課題がある。
【０００７】
（１）計算時間がかかる
（２）メモリを大量に消費する
通常、コンテンツの特徴量は多次元になることが多く、その類似度の計算には時間を要する。一般に、文書のBag-of-Wordsヒストグラムの次元は、単語の種類（語彙）と同次元になるし、画像の色ヒストグラムは一般に数百〜数千次元の実数値ベクトルとなる。さらに、全てのコンテンツの組に対してその類似度を計算する必要があるため、どのような類似度計算手段を用いようとも、コンテンツがＮ個あったとするとＯ（Ｎ）の計算量を要する。また、即時検索を実行するためには、特徴量あるいはその類似度をメモリに蓄積しておくことが好ましいが、これを行うためにはＯ（Ｎ2）のメモリが必要となる。
【０００８】
このような課題に対して、コンテンツを低容量な特徴量で表現し、かつ類似度を求めずに類似したコンテンツを発見する技術に関する取り組みがなされてきた。
【０００９】
この課題を解決するため、従来いくつかの発明がなされ、開示されてきている。
【００１０】
特許文献１に開示されている技術では、コンテンツの特徴量を、主成分分析により次元圧縮して低次元化し、この低次元な特徴量同士の距離を測ることで、特徴量の低容量化、高速化を図っている。
【００１１】
非特許文献１に開示されている技術では、近接する任意の２つのコンテンツ（特徴量）において、元の特徴量の類似度と衝突確率が等しくなるようなハッシュ関数群を生成する。典型的な類似度としてコサイン類似度を考えており、その場合のハッシュ関数生成の基本的な手続きは、特徴量空間にランダムな超平面を複数生成することによる（random projectionと呼ばれる）。各超平面のどちら側に特徴量が存在するかによって特徴量をハッシュ化し、全てのコンテンツ間で類似度を求めることなく、近似的に類似コンテンツを発見することができる。
【００１２】
非特許文献２に開示されている技術は、非特許文献１が考えるコサイン類似度とは異なり、Shift-Invariant Kernelによる類似度を考えるハッシュ関数生成技術である。基本的な手続きこそ非特許文献１と似ており、やはりランダムな写像を生成し、これに基づいて特徴量をハッシュ化する。一方で、その性質は非特許文献１とは異なっており、非特許文献１が「元の特徴量の類似度と衝突確率が等しくなるようなハッシュ関数群を生成する」のに対して、非特許文献２では、ハッシュ値間のハミング距離が、Shift-Invariant Kernelによる類似度に依存したバウンド（上界・下界）によって抑えられるようなハッシュ関数を生成する。一般に、非特許文献１のものよりも、類似度の再現性（精度）が高いことが知られている。
【００１３】
なお、上記非特許文献１、２双方とも、ハッシュ関数あたり１ｂｉｔのバイナリコードを割り当てることになる。すなわち、ハッシュ関数の数をＢとすると、ハッシュ値はＢｂｉｔとなる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特許第３７３０１７９号公報
【非特許文献】
【００１５】
【非特許文献１】M. Datar, N. Immorlica, P. Indyk, V.S. Mirrokni, “Locality-Sensitive Hashing Scheme based on p-Stable Distributions”, In Proceedings of the Twentieth Annual Symposium on Computational Geometry, 2004, p.253-262
【非特許文献２】M. Raginsky, S. Lazebnik, “Locality-Sensitive Binary Codes from Shift-Invariant Kernels”, Advances in Neural Information Processing Systems 22, 2009, p.1509-1517
【発明の概要】
【発明が解決しようとする課題】
【００１６】
上記の特許文献１に記載の技術は、特徴量を圧縮表現するものの、圧縮された特徴量間の類似度をユークリッド距離で求めていたため、大幅な計算時間削減を実現できなかった。
【００１７】
非特許文献１、２に開示されている技術では、ハッシュ関数（超平面）の生成はランダムであるため、そのコンテンツ同士を関連づけるべきかどうか、すなわち、推薦すべきコンテンツであるかどうかという観点を考慮してハッシュ関数を生成するものではなかった。このため、十分な精度を得るためには、ハッシュ値を十分に大きく取り、多数のハッシュ関数を生成する必要があった。
【００１８】
本発明は、この課題を鑑みてなされたものであり、従来より少ないリソースでも、より高い精度で類似するコンテンツが検索できる技術を提供することを目的とする。
【課題を解決するための手段】
【００１９】
第１の本発明に係るハッシュ関数生成方法は、複数のコンテンツ、当該複数のコンテンツ中の２つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、高い類似度を持つコンテンツほどハッシュ値の距離が近くなり、コンテンツから抽出される特徴量を引数としてパラメータｗ，ｂを含む三角関数によって規定されるハッシュ関数の集合を生成するコンピュータにより実行されるハッシュ関数生成方法であって、前記コンテンツデータベースから２つのコンテンツｉ，ｊを読み出すステップと、前記２つのコンテンツｉ，ｊそれぞれの特徴量ｘｉ，ｘｊを抽出するステップと、前記２つのコンテンツｉ，ｊ間の関連付けを示す前記関連情報ｙｉｊを前記コンテンツデータベースから取得し、式
【数４】
0005596648.tif 000002
を最大にするパラメータｗ，ｂを求めて前記ハッシュ関数の集合に含まれるハッシュ関数のパラメータｗ，ｂを定めるステップと、を有することを特徴とする。
【００２０】
上記ハッシュ関数生成方法において、前記２つのコンテンツｉ，ｊを読み出すステップは、ｋ番目のハッシュ関数のパラメータｗ，ｂを定めるときに出現確率Ｅｋ（ｉ，ｊ）に基づいて前記２つのコンテンツｉ，ｊを読み出すものであって、出現確率Ｅｋ（ｉ，ｊ）は式
【数７】
0005596648.tif 000003
【数８】
0005596648.tif 000004
（ただし、Ｚｋは正規化係数、ηは予め定めた定数、Ｈｋはｋ番目以前に生成されたハッシュ関数の集合、Ｈａｍはハミング距離を求める関数である）によって更新されることを特徴とする。
【００２２】
第２の本発明に係るハッシュ関数生成装置は、複数のコンテンツ、当該複数のコンテンツ中の２つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、高い類似度を持つコンテンツほどハッシュ値の距離が近くなり、コンテンツから抽出される特徴量を引数としてパラメータｗ，ｂを含む三角関数によって規定されるハッシュ関数の集合を生成するハッシュ関数生成装置であって、前記コンテンツデータベースから２つのコンテンツｉ，ｊを読み出して当該２つのコンテンツｉ，ｊそれぞれの特徴量ｘｉ，ｘｊを抽出する特徴抽出手段と、前記２つのコンテンツｉ，ｊ間の関連付けを示す前記関連情報ｙｉｊを前記コンテンツデータベースから取得し、式
【数４】
0005596648.tif 000005
を最大にするパラメータｗ，ｂを求めて前記ハッシュ関数の集合に含まれるハッシュ関数のパラメータｗ，ｂを定めるハッシュ関数生成手段と、を有することを特徴とする。
【００２３】
上記ハッシュ関数生成装置において、前記特徴抽出手段は、ｋ番目のハッシュ関数のパラメータｗ，ｂを定めるときに出現確率Ｅｋ（ｉ，ｊ）に基づいて前記２つのコンテンツｉ，ｊを読み出すものであって、出現確率Ｅｋ（ｉ，ｊ）は式
【数７】
0005596648.tif 000006
【数８】
0005596648.tif 000007
（ただし、Ｚｋは正規化係数、ηは予め定めた定数、Ｈｋはｋ番目以前に生成されたハッシュ関数の集合、Ｈａｍはハミング距離を求める関数である）によって更新されることを特徴とする。
【００２５】
第３の本発明に係るハッシュ関数生成プログラムは、上記ハッシュ関数生成方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２７】
本発明によれば、従来より少ないリソースでも、より高い精度で類似するコンテンツが検索できる技術を提供することができる。
【図面の簡単な説明】
【００２８】
【図１】本実施形態に係る情報処理装置の構成の一例を示す機能ブロック図である。
【図２】ハッシュ関数生成処理の流れを示すフローチャートである。
【図３】ハッシュ化処理の流れを示すフローチャートである。
【図４】従来技術と本実施形態について、画像推薦精度を比較した結果を示すグラフである。
【発明を実施するための形態】
【００２９】
以下、本発明の実施の形態について図面を用いて説明する。
【００３０】
図１は、本発明の実施形態に係る情報処理装置１の構成の一例を示す機能ブロック図である。同図に示す情報処理装置１は、入力部１１、特徴抽出部１２、ハッシュ関数生成部１３、ハッシュ関数記憶部１４、ハッシュ化部１５、および出力部１６を備える。情報処理装置１は、コンテンツデータベース２と通信手段を介して接続され、入力部１１、出力部１６を介して相互に情報通信し、コンテンツデータベース２に登録されたコンテンツに基づいてハッシュ関数を生成するハッシュ関数生成処理と、生成したハッシュ関数を用いてコンテンツのハッシュ値を求めるハッシュ化処理を行う。情報処理装置１が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは情報処理装置１が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【００３１】
コンテンツデータベース２は、情報処理装置１の内部にあっても外部にあっても構わず、通信手段は任意の公知ものを用いることができるが、本実施形態においては、外部にあるものとして、通信手段は、インターネット、TCP/IPにより通信するよう接続されているものとする。コンテンツデータベース２は、いわゆるRDBMS (Relational Database Management System）などで構成されているものとしてもよい。コンテンツデータベース２には、少なくともコンテンツそのもののデータ（以降、コンテンツデータと呼ぶ）、あるいは、当該データの所在を一意に示すアドレスが格納されている。コンテンツデータは、例えば、文書であれば文書ファイル、画像であれば画像ファイル、音であれば音ファイル、映像であれば映像ファイルなどである。また、コンテンツデータベース２には、格納されている全て、あるいはその一部のコンテンツのペアについては、そのコンテンツ同士が関連付けられるべきか否かを示す情報（以降、関連情報と呼ぶ）が格納されている。さらに、好ましくは、コンテンツデータベース２には、各コンテンツを一意に識別可能な識別子が含まれているものとする。その他、メタデータとして、例えばコンテンツの内容を表現するもの（コンテンツのタイトル、概要文、キーワード）、コンテンツのフォーマットに関するもの（コンテンツのデータ量、サムネイル等のサイズ）などを含んでいても構わない。これらのメタデータの全て、あるいは一部が一致しているか否かを判定することによって、前記の関連情報を定めるものとしても構わない。
【００３２】
本実施の形態における情報処理装置１の各部について説明する。
【００３３】
入力部１１は、コンテンツデータベース２からコンテンツデータを取得して特徴抽出部１２に伝達する。加えて、ハッシュ関数生成処理時には、コンテンツデータベース２から関連情報を取得してハッシュ関数生成部１３に伝達する。
【００３４】
特徴抽出部１２は、入力部１１より得たコンテンツデータを解析し、コンテンツを特徴的に表す特徴量を抽出する。特徴量は、ハッシュ化処理時にはハッシュ化部１５に、ハッシュ関数生成処理時にはハッシュ関数生成部１３に伝達される。
【００３５】
ハッシュ関数生成部１３は、入力部１１より伝達された関連情報と、特徴抽出部１２から伝達された特徴量とを基に、１つ以上のハッシュ関数を生成してハッシュ関数記憶部１４に記憶する。具体的には、コンテンツペアの特徴量それぞれをハッシュ関数を用いて変換してバイナリ値を求めるとともに、そのコンテンツペア間の関連付けを示す関連情報をコンテンツデータベース２から取得し、求めたバイナリ値がコンテンツペア間で一致するか否かを示す情報と関連情報に基づいてそのハッシュ関数を定め、これを繰り返して複数のハッシュ関数を生成する。
【００３６】
ハッシュ関数記憶部１４は、ハッシュ関数生成部１３が生成した１つ以上のハッシュ関数を記憶する。
【００３７】
ハッシュ化部１５は、ハッシュ関数記憶部１４に格納された１つ以上のハッシュ関数に基づいて、特徴抽出部１２から伝達された特徴量を有限個のバイナリ値であるハッシュ値に変換し、出力部１６に伝達する。
【００３８】
出力部１６は、ハッシュ化部１５で求めたハッシュ値をコンテンツデータベース２に伝達、格納する。
【００３９】
次に、本実施の形態における情報処理装置１の処理について説明する。本実施の形態における情報処理装置１は、ハッシュ関数を生成するハッシュ関数生成処理と、特徴量をハッシュ化するハッシュ化処理を実行する。以下、これら２つの処理について説明する。
【００４０】
最初に、ハッシュ関数生成処理について説明する。
【００４１】
図２は、ハッシュ関数生成処理の流れを示すフローチャートである。ハッシュ関数生成処理は、実際にコンテンツデータをハッシュ化する前に、少なくとも１度実施しておく処理である。
【００４２】
まず、入力部１１が、コンテンツデータベース２からコンテンツデータ、関連情報を得て、コンテンツデータは特徴抽出部１２に、関連情報はハッシュ関数生成部１３に、それぞれ伝達する（ステップＳ１０１）。
【００４３】
続いて、特徴抽出部１２が、コンテンツデータから特徴量を抽出してハッシュ関数生成部１３に伝達する（ステップＳ１０２）。
【００４４】
そして、ハッシュ関数生成部１３が、特徴量と関連情報に基づいて１つ以上のハッシュ関数を生成し、ハッシュ関数記憶部１４に格納する（ステップＳ１０３）。
【００４５】
以上の処理により、コンテンツデータベース２に格納されたコンテンツのデータからハッシュ関数を生成することができる。なお、特徴量の抽出、ハッシュ関数の生成の詳細については後述する。
【００４６】
続いて、ハッシュ化処理について説明する。
【００４７】
図３は、ハッシュ化処理の流れを示すフローチャートである。ハッシュ化処理は、ハッシュ関数記憶部１４に格納されたハッシュ関数を用いてコンテンツの特徴量をハッシュ化する処理である。
【００４８】
まず、入力部１１が、コンテンツデータベース２からコンテンツデータを得て特徴抽出部１２に伝達する（ステップＳ２０１）。
【００４９】
続いて、特徴抽出部１２が、コンテンツデータから特徴量を抽出してハッシュ化部１５に伝達する（ステップＳ２０２）。この処理は、ハッシュ関数生成処理のステップＳ１０２と同じである。
【００５０】
そして、ハッシュ化部１５が、ハッシュ関数記憶部１４に格納された１つ以上のハッシュ関数を用いて、特徴量をハッシュ値に変換し、出力部１６に伝達する（ステップＳ２０３）。１つのハッシュ関数で特徴量は１ｂｉｔに変換されるので、ハッシュ関数記憶部１４にＢ個のハッシュ関数が格納されている場合は、特徴量はＢｂｉｔのハッシュ値に変換される。
【００５１】
最後に、出力部１６が、ハッシュ値をコンテンツデータベース２に格納する（ステップＳ２０４）。
【００５２】
以上の処理により、入力したコンテンツのハッシュ値を求めることができる。
【００５３】
［特徴量の抽出］
次に、特徴量の抽出について説明する。特徴量を抽出する処理は、コンテンツの種類に依存する。例えば、コンテンツが文書であるか、画像であるか、音であるか、映像であるかによって、抽出する／できる特徴量は変化する。ここでは、各種コンテンツに対する特徴抽出処理の一例を説明するが、これに限るものではなく、一般に知られた公知の特徴抽出処理を用いて構わない。
【００５４】
コンテンツが文書である場合には、文書中に出現する単語の出現頻度を用いることができる。例えば、公知の形態素解析を用いて、名詞、形容詞等に相当する単語ごとに、その出現頻度を計数すればよい。
【００５５】
コンテンツが画像である場合には、例えば、明るさ特徴、色特徴、テクスチャ特徴、コンセプト特徴、景観特徴などを抽出する。
【００５６】
明るさ特徴は、ＨＳＶ色空間におけるＶ値を数え上げることで、ヒストグラムとして抽出することができる。
【００５７】
色特徴は、Ｌ＊ａ＊ｂ＊色空間における各軸（Ｌ＊、ａ＊、ｂ＊）の値を数え上げることで、ヒストグラムとして抽出することができる。各軸のヒストグラムのビンの数は、例えば、Ｌ＊に対して４、ａ＊に対して１４、ｂ＊に対して１４などとすればよく、この場合、３軸の合計ビン数は、４×１４×１４＝７８４となる。
【００５８】
テクスチャ特徴としては、濃淡ヒストグラムの統計量（コントラスト）やパワースペクトルなどを求めればよい。あるいは、局所特徴量を用いると、色や動きなどと同様、ヒストグラムの形式で抽出することができるようになるため好適である。局所特徴としては、例えば下記の参考文献１に記載されるＳＩＦＴ（Scale Invariant Feature Transform ）や、下記の参考文献２に記載されるＳＵＲＦ（Speeded Up Robust Features）などを用いることができる。
【００５９】
［参考文献１］D.G. Lowe, “Distinctive Image Features from Scale-Invariant Keypoints ”, International Journal of Computer Vision, pp.91-110, 2004
［参考文献２］H. Bay, T. Tuytelaars, and L.V. Gool, “SURF: Speeded Up Robust Features”, Lecture Notes in Computer Science, vol. 3951, pp.404-417, 2006
これらによって抽出される局所特徴は、例えば１２８次元の実数値ベクトルとなる。このベクトルを、予め学習して生成しておいた符号長を参照して、符号に変換し、その符号の数を数え上げることでヒストグラムを生成することができる。この場合、ヒストグラムのビンの数は、符号長の符号数と一致する。符号数は任意のものを用いてよいが、例えば５１２あるいは１０２４などとしてもよい。
【００６０】
コンセプト特徴とは、画像中に含まれる物体や、画像が捉えているイベントのことである。任意のものを用いてよいが、例を挙げれば、「海」、「山」、「ボール」などのようなものである。もし、ある画像に「海」が映っていた場合、その画像は「海」コンセプトに帰属する画像であるという。その画像が、各コンセプトに帰属するか否かは、コンセプト識別器を用いて判断することができる。通常、コンセプト識別器はコンセプト毎に一つ用意され、画像の特徴量を入力として、その画像があるコンセプトに帰属しているか否かを帰属レベルとして出力する。コンセプト識別器は、予め学習して獲得しておくものであり、決められた画像特徴、例えば先に述べた局所特徴と、予め人手によって、その画像がどのコンセプトに帰属しているかを表した正解ラベルとの関係を学習することによって獲得する。学習器としては、例えばサポートベクターマシンなどを用いればよい。コンセプト特徴は、各コンセプトへの帰属レベルをまとめてベクトルとして表現することで得ることができる。
【００６１】
景観特徴は、画像の風景や場面を表現した特徴量である。例えば参考文献３に記載のＧＩＳＴ記述子を用いることができる。
【００６２】
［参考文献３］A. Oliva and A. Torralba, “Building the gist of a scene: the role of global image features in recognition”, Progress in Brain Research, 155, pp.23-36, 2006
コンテンツが音である場合には、音高特徴、音圧特徴、スペクトル特徴、リズム特徴、発話特徴、音楽特徴、音イベント特徴などを抽出する。
【００６３】
音高特徴は、例えばピッチを取るものとすればよく、下記の参考文献４に記載される方法などを用いて抽出することができる。
【００６４】
［参考文献４］古井貞熙, “ディジタル音声処理, ４. ９ピッチ抽出”, pp.57-59, 1985
音圧特徴としては、音声波形データの振幅値を用いるものとしてもよいし、短時間パワースペクトルを求め、任意の帯域の平均パワーを計算して用いるものとしてもよい。
【００６５】
スペクトル特徴としては、例えばメル尺度ケプストラム係数（ＭＦＣＣ：Mel-Frequency Cepstral Coefficients ）を用いることができる。
【００６６】
リズム特徴としては、例えばテンポを抽出すればよい。テンポを抽出するには、例えば下記の参考文献５に記載される方法などを用いることができる。
【００６７】
［参考文献５］E.D. Scheirer, “Tempo and Beat Analysis of Acoustic Musical Signals ”, Journal of Acoustic Society America, Vol. 103, Issue 1, pp.588-601, 1998
発話特徴、音楽特徴は、それぞれ、発話の有無、音楽の有無を表す。発話・音楽の存在する区間を発見するには、例えば下記の参考文献６に記載される方法などを用いればよい。
【００６８】
［参考文献６］K. Minami, A. Akutsu, H. Hamada, and Y. Tonomura, “Video Handling with Music and Speech Detection”, IEEE Multimedia, vol. 5, no. 3, pp.17-25, 1998
音イベント特徴としては、例えば、笑い声や大声などの感情的な音声、あるいは、銃声や爆発音などの環境音の生起などを用いるものとすればよい。このような音イベントを検出するには、例えば下記の参考文献７に記載される方法などを用いればよい。
【００６９】
［参考文献７］国際公開第２００８／０３２７８７号
コンテンツが映像である場合、映像は、一般に画像と音のストリームであるから、上記説明した画像特徴と音特徴を用いることができる。映像中のどの画像、音情報を分析するかについては、例えば、予め映像をいくつかの区間に分割し、その区間ごとに１つの画像、音から特徴抽出を実施する。
【００７０】
映像を区間に分割するには、予め決定しておいた一定の間隔で分割するものとしてもよいし、例えば下記の参考文献８に記載される方法などを用いて、映像が不連続に切れる点であるカット点によって分割するものとしてもよい。
【００７１】
［参考文献８］Y. Tonomura, A. Akutsu, Y. Taniguchi, and G. Suzuki, “Structured Video Computing”, IEEE Multimedia, pp.34-43, 1994
望ましくは、後者の方法を採用する。映像区間分割処理の結果として、区間の開始点（開始時刻）と終了点（終了時刻）が得られるが、この時刻毎に別々の特徴量として扱えばよい。
【００７２】
以上のように抽出した特徴量は、一つあるいは複数を利用してもよいし、その他の公知の特徴量を用いるものとしてもよい。
【００７３】
［ハッシュ関数の生成］
次に、ハッシュ関数の生成について説明する。コンテンツｉの抽出された特徴量をｘi∈Ｒdと表す。このとき、ステップＳ１０３では、ｈ：Ｒd→｛０，１｝となるハッシュ関数の集合を求める。各ｈによって、特徴量ｘi∈Ｒdは０または１を取るバイナリ値に写像されるから、特徴量ｘiは、ハッシュ関数集合Ｈ＝｛ｈ1，ｈ2，・・・，ｈB｝によってＢ個のバイナリ値、すなわち、Ｂ bitのハッシュ値に変換されることになる。
【００７４】
本発明の目的は、このハッシュ値によって時間のかかる類似度計算を省略することである。したがって、ハッシュ関数は、元の特徴量間の類似度ｓ：Ｒd×Ｒd→Ｒと関連したハッシュ値への写像であることが要請され、高い類似度を持つコンテンツほど、ハッシュ値の距離（ハミング距離）が近くなることが好ましい。このようなハッシュ関数の１つであるShift-Invariant Kernelsに基づくハッシュ関数の例を示す。Shift-Invariant Kernel Ｋ（ｘi，ｘj）＝Φ（ｘi）・Φ（ｘj）は、Mercer kernelであり、Ｋ（ｘi，ｘj）＝Ｋ（ｘi−ｘj）となるようなものである。これを達成するカーネルKは、Ｒd上の確率測度μのフーリエ変換であることが知られている。参考文献９に開示されている技術では、写像Φ：Ｒd→Ｒとして下記のRandom Fourier Feature (RFF) を与えている。
【００７５】
[参考文献９] A. Rahimi, B. Recht, “Random Features for Large-Scale Kernel Machines”, Advances in Neural Information Processing Systems 20}, pp. 1177-1184, 2008
【数１】
0005596648.tif 000008
【００７６】
ここで、ｗはμに従うＲd上のサンプルである。RBFカーネルＫ（ｘ）＝ｅｘｐ（−‖ｘ‖2／２）を考えた場合、μは標準多次元正規分布であるため、標準多次元正規分布乱数からのサンプリングによってｗを得ることができる。ｂは[0, 2π]上の一様分布に従うＲ上のサンプルとして得る。
【００７７】
このようにして得られたΦ（ｘ；ｗ，ｂ）によって、次のようにハッシュ関数ｈ（ｘ；ｗ，ｂ）を求めることができる。
【数２】
0005596648.tif 000009
【００７８】
ハッシュ関数集合Ｈを得るためには、異なるｗ，ｂの組合せをＢ回サンプリングして得ればよい。以上の手続きにより、高い類似度を持つコンテンツほど、ハッシュ値の距離（ハミング距離）が近くなるようなハッシュ関数集合Ｈを得ることができる。
【００７９】
しかしながら、この技術では、ハッシュ関数のパラメータｗ，ｂをランダムに決定するため、十分な精度を得るためには、十分な数のハッシュ関数を得る必要がある。このため、Ｂの値を大きく取る必要があり、もう1つの重要な課題であった、低容量なハッシュ値を実現することができない。
【００８０】
そこで、本実施の形態では、互いに関連づけられるべきコンテンツ（特徴量）の組を示す関連情報に基づいてｗ，ｂを決定することで、より効率的なハッシュ関数を生成する。また、本実施の形態では、Ｂ個のハッシュ関数を生成する際に、類似したハッシュ関数が生成されないよう逐次的にサンプリングする特徴量ペアの分布に修正をかける。
【００８１】
まず、単一のハッシュ関数のｗ，ｂを決定する方法の一例について詳述する。
【００８２】
コンテンツのペア｛ｘi，ｘj｝に対して、関連情報に基づく関連情報ラベルｙijを与える。このラベルｙijは、任意の方法で与えてよいが、例えば、以下の規則によって与える。
【００８３】
（１）｛ｘi，ｘj｝が関連付けられるべきときｙij＝１
（２）｛ｘi，ｘj｝が関連付けられるべきでないときｙij＝−１
（３） そのいずれでもないときｙij＝０
この関連情報ラベルｙijを利用して、ハッシュ関数ｈのパラメータｗ，ｂを決定する。
【００８４】
一時的に、ｈに等価なハッシュ関数ｈ’（ｘ；ｗ，ｂ）＝２ｈ（ｘ；ｗ，ｂ）−１を定義しておく。ｈ’は、ｈが１のとき１、０のとき−１を取る。目的関数Ｊ（ｗ，ｂ）は下記のように与えられる。
【数３】
0005596648.tif 000010
【００８５】
このＪは、ハッシュ値の値が正しく出力されている場合にのみ大きくなる。すなわち、
（１）ｙij＝１であり、ｈ’（ｘi），ｈ’（ｘj）のハッシュ値が正しく一致するような場合に大きくなり、
（２）ｙij＝１であり、ｈ’（ｘi），ｈ’（ｘj）のハッシュ値が誤って一致しないような場合に小さくなり、
（３）ｙij＝−１であり、ｈ’（ｘi），ｈ’（ｘj）のハッシュ値が正しく一致しないような場合に大きくなり、
（４）ｙij＝−１であり、ｈ’（ｘi），ｈ’（ｘj）のハッシュ値が誤って一致するような場合に小さくなる。
【００８６】
よって、このＪを最大にするようなｗ，ｂを求めれば、正しい出力を得るハッシュ関数を生成することができる。
【００８７】
しかしながら、ハッシュ関数ｈ’（およびｈ）は解析的ではなく、直接解くことが出来ない。そこで、式（１）、式（２）の関係に基づき、ｈを除外する緩和を導入してＪを変形する。
【数４】
0005596648.tif 000011
【００８８】
コサイン関数はＲ上で解析的である。さらに、積和公式より、式（４）は次式（５）と変形できる。
【数５】
0005596648.tif 000012
【００８９】
ここで、ｘij+＝ｘi＋ｘj，ｘij-＝ｘi−ｘjである。これを最大化するｗ，ｂを求めればよい。種々の公知の方法を用いることができるが、例えば、最急降下法を用いてもよい。ｗ，ｂの初期値ｗ0，ｂ0、および、更新率αを適当に与え、下記の更新規則に基づいて、ｗ，ｂが収束するまで繰り返し計算を実施すればよい。
【数６】
0005596648.tif 000013
【００９０】
以上の処理によってハッシュ関数が一つ定まる。
【００９１】
上記の処理を繰り返して、Ｂ個のハッシュ関数が得られるまで順次ｗ，ｂを求めていくが、式（５）の目的関数を用いている限りは、同じあるいは限りなく似たハッシュ関数が生成されてしまうため、非効率的である。そこで、本実施の形態では、さらに、Bootstrapのアイディアに基づき、それまでに生成されたハッシュ関数の精度に基づいて特徴量ペアの分布（出現確率）を変化させ、効率的に異なったハッシュ関数を生成する仕組みを導入する。
【００９２】
ｋ番目のハッシュ関数ｈkを生成するとし、特徴量のペア｛ｘi，ｘj｝に対して、その出現確率Ｅk（ｉ，ｊ）を導入する。このとき、全ての特徴量ペアの集合から、この確率Ｅkに基づいて、全ての特徴量ペアの数と同数の特徴量ペアを、重複を許してリサンプリングする。このようにして得た特徴量ペアの集合は、元のそれからＥkに従い偏った集合となる。こうして偏りをかけた特徴量ペアに基づいて、上記の単一のハッシュ関数におけるｗ，ｂを決定する処理を繰り返すことで、毎ステップ異なったハッシュ関数が生成されることになる。
【００９３】
Ｅkを与えるやり方については、任意の確率を与えるものとしてよいが、好ましくは下記のように定める。Ｅkの高い特徴量ペアほどリサンプリングされやすく、ハッシュ関数生成の際に考慮されやすくなることになるため、ｋ−１番目以前に生成されたハッシュ関数の集合Ｈk-1によって誤って関連付けられてしまう特徴量ペアに対して高い確率を与えるようなＥkを与える方がよい。この理由は、ｋ番目のハッシュ関数が、よりこの誤った特徴量ペアに対してsensitiveになるからである。
【００９４】
具体的な方法の一例としては、例えば、Ｅ1は全ての特徴量ペアで等確率とし、以降、ｋが進むに従い以下の次式（７）で示す更新規則に基づいて更新を行う。
【数７】
0005596648.tif 000014
【００９５】
ただし、Ｚkは正規化係数、ηはパラメータである。ここで、θHk（ｘi，ｘj）はｋ番目までのハッシュ関数により定められるｘi，ｘjのハッシュ値Ｈk（ｘi），Ｈk（ｘj）の近さを表す関数であり、例えば、ハミング距離Ｈａｍを用いて次式（８）のようにすればよい。
【数８】
0005596648.tif 000015
【００９６】
以上の処理を繰り返すことにより、Ｂ個のハッシュ関数を得ることができる。生成されたハッシュ関数（具体的には、パラメータｗ，ｂ）は、ハッシュ関数記憶部１４に格納される。
【００９７】
［実施例］
ここでは、画像データベースを対象に、本発明で実施したハッシュ値に基づいて類似画像を推薦する一実施例について説明する。
【００９８】
この実施例の画像データベースには、約８，０００枚分の写真が登録されている。各写真は、１００種類の被写体のうち、いずれか一つを撮影したものである。
【００９９】
この実施例では、閲覧画像の被写体と同一の被写体を撮影した画像を画像データベースに登録された画像の中から推薦することを目的とした。通常のやり方であれば、画像データベースに登録された全ての画像から特徴量を抽出しておき、閲覧画像の特徴量と類似度の高い画像データベース中の画像を推薦結果として出力する。
【０１００】
本発明では、これをハッシュ値によって実施する。特徴量は任意のものを用いて構わないが、本実施例では景観特徴を用いた。景観特徴は、３２０次元の実数値ベクトルである。予め、画像データベース中の全ての画像から景観特徴を抽出しておく。さらに、本発明によって、景観特徴からハッシュ値を生成し、これを画像データベースに登録しておく。この際、予め被写体が一致している場合に１、そうでない場合に−１を取る関連情報ラベルが付与された約６，０００の特徴量ペアを用いてハッシュ関数の生成を行った。閲覧画像のハッシュ値と、画像データベース中のハッシュ値とのハミング距離が近いものを推薦結果として提示した。
【０１０１】
この実施例では、本発明によって生成したハッシュ値による推薦精度と、非特許文献２の技術によって生成したハッシュ値による推薦精度とを比較した。図４に、ハッシュ値のビット数（ハッシュ関数の数）を変化させたときの推薦精度を示す。白抜きが非特許文献１の推薦精度を示し、網掛けが本発明の推薦精度を示す。
【０１０２】
いずれのビット数においても、本発明による技術の方が高い精度を得ている。このことから、本発明による情報処理技術の高い効果が確認できる。また、ビット数毎の結果を見ると、ビット数が少ない場合の方が、相対的に大きく精度を改善している。このことから、本発明は、少ないビット数でも、関連づけられるべき特徴量ペアを適切に反映したハッシュ関数を生成し、精度を向上させることができることが確認できる。
【０１０３】
以上説明したように、本実施の形態によれば、異なる２つのコンテンツを関連付けるべきか否かを示す関連情報と、これら２つのコンテンツの特徴量をハッシュ関数により変換したバイナリ値が一致するか否かを示す情報の差異を鑑みてハッシュ関数を生成することにより、関連情報が示す本来あるべき結果に、ハッシュ関数により変換したバイナリ値の一致・不一致を反映したハッシュ関数が生成できるので、より少ないハッシュ関数数（Ｂ）でも、より高い精度で類似するコンテンツが検索できる。
【０１０４】
本実施の形態によれば、複数のハッシュ関数を生成する際に、過去に生成されたハッシュ関数によって生成される実際のハッシュ値の一致率に基づいてサンプリングされるコンテンツペアの分布を変化させることにより、過去のハッシュ関数では補いきれていない弱点、すなわち、相対的に精度が低いハッシュ値となる特徴量の集合を補うような、新たなハッシュ関数を効率的に生成することができる。
【符号の説明】
【０１０５】
１…情報処理装置
１１…入力部
１２…特徴抽出部
１３…ハッシュ関数生成部
１４…ハッシュ関数記憶部
１５…ハッシュ化部
１６…出力部
２…コンテンツデータベース
【図１】
0005596648.tif 000022
【図２】
0005596648.tif 000023
【図３】
0005596648.tif 000024
【図４】
0005596648.tif 000025