説明

ハッシュ関数生成方法、ハッシュ値演算方法、ハッシュ関数生成装置、ハッシュ値演算装置、ハッシュ関数生成プログラム及びハッシュ値演算プログラム

【課題】従来より少ないリソースでも、より高い精度で類似するコンテンツを検索する。
【解決手段】異なる2つのコンテンツを関連付けるべきか否かを示す関連情報と、これら2つのコンテンツの特徴量をハッシュ関数により変換したバイナリ値が一致するか否かを示す情報の差異を鑑みてハッシュ関数を生成する。これにより、関連情報が示す本来あるべき結果に、ハッシュ関数により変換したバイナリ値の一致・不一致を反映したハッシュ関数が生成できるので、より少ないハッシュ関数数でも、より高い精度で類似するコンテンツが検索できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、類似コンテンツの検索に用いるハッシュ値を求めるハッシュ関数を生成し、そのハッシュ関数を用いてハッシュ値を求める技術に関する。
【背景技術】
【0002】
通信網、ストレージ、分散環境の高度化により、オンラインで流通するマルチメディアコンテンツの数は膨大な量となっている。例えば、ある検索エンジンが検索可能としているウェブページ数は数十億とも数兆ともいわれている。集合知による事典として有名なWikipediaでは350万以上の記事が閲覧可能となっている。あるソーシャルメディアサイトでは、毎月25億の画像がアップロードされているとの報告があり、また、ある動画共有サイトでは、1分当たり48時間分の映像が新規公開されているとの報告がある。
【0003】
マルチメディアコンテンツを閲覧・視聴しようとする利用者は、このような膨大な量のコンテンツの中から、閲覧したい・興味のあるコンテンツを探し出す必要がある。探したいコンテンツが明確であるような場合などには、検索エンジンを利用して能動的に問い合わせを行う(クエリを入力して検索結果を得る)ことができる。しかしながら、例えば、空いている時間に閲覧するコンテンツを探す場合などは、適当な問い合わせを形成することが難しい場合が多く、能動的な検索は非効率な場合が多い。
【0004】
こうした場合に有益な手段が推薦である。推薦は、利用者が現在閲覧している、あるいは、過去に閲覧していたコンテンツ(以下,閲覧コンテンツと呼ぶ)を手掛かりに、その利用者が未だ閲覧していないコンテンツ(以下,未閲覧コンテンツと呼ぶ)の中から興味を持つであろうコンテンツを推測し、提示することである。陽に問い合わせを要求する検索とは異なり、探したいコンテンツが明確ではないような場合でも興味のあるコンテンツを得ることができる。また、いちいち問い合わせをせずともコンテンツ(のリスト)を得ることができるため、利用の障壁も低い。さらに、利用者がこれまでに気付かなかった新しいコンテンツに出会うことができる可能性もある。このような多くの利点から、推薦は、コンテンツ共有・配信サイトはもちろん、eコマースサイトなどでは需要・購買意欲を喚起する手段としても注目され、積極的な導入が進んでいる技術である。
【0005】
閲覧コンテンツを基に未閲覧コンテンツの中から興味のあるものを発見する推薦を実現する一つの典型的なアプローチは、「閲覧コンテンツと似た“内容”を持つ未閲覧コンテンツは利用者の興味に合う」と仮定し、閲覧コンテンツと「類似度」の高い未閲覧コンテンツを推薦するものである。言い換えれば、内容の類似度を測ることができれば、推薦を実現することができる。通常はコンテンツをある特徴量として表現し、この特徴量の近さを測ることで類似度を計算する。単純な例を挙げれば、コンテンツが画像であれば、画像の色ヒストグラムを特徴量としてその類似度を測ることができる。コンテンツが文書であれば、単語の出現頻度をヒストグラム化したもの(Bag-of-Wordsヒストグラムなどと呼ぶ)を特徴量として類似度を測ることができる。
【0006】
しかしながら、大量のマルチメディアコンテンツを対象にしようとした場合、下記2つの重要な課題がある。
【0007】
(1)計算時間がかかる
(2)メモリを大量に消費する
通常、コンテンツの特徴量は多次元になることが多く、その類似度の計算には時間を要する。一般に、文書のBag-of-Wordsヒストグラムの次元は、単語の種類(語彙)と同次元になるし、画像の色ヒストグラムは一般に数百〜数千次元の実数値ベクトルとなる。さらに、全てのコンテンツの組に対してその類似度を計算する必要があるため、どのような類似度計算手段を用いようとも、コンテンツがN個あったとするとO(N)の計算量を要する。また、即時検索を実行するためには、特徴量あるいはその類似度をメモリに蓄積しておくことが好ましいが、これを行うためにはO(N2)のメモリが必要となる。
【0008】
このような課題に対して、コンテンツを低容量な特徴量で表現し、かつ類似度を求めずに類似したコンテンツを発見する技術に関する取り組みがなされてきた。
【0009】
この課題を解決するため、従来いくつかの発明がなされ、開示されてきている。
【0010】
特許文献1に開示されている技術では、コンテンツの特徴量を、主成分分析により次元圧縮して低次元化し、この低次元な特徴量同士の距離を測ることで、特徴量の低容量化、高速化を図っている。
【0011】
非特許文献1に開示されている技術では、近接する任意の2つのコンテンツ(特徴量)において、元の特徴量の類似度と衝突確率が等しくなるようなハッシュ関数群を生成する。典型的な類似度としてコサイン類似度を考えており、その場合のハッシュ関数生成の基本的な手続きは、特徴量空間にランダムな超平面を複数生成することによる(random projectionと呼ばれる)。各超平面のどちら側に特徴量が存在するかによって特徴量をハッシュ化し、全てのコンテンツ間で類似度を求めることなく、近似的に類似コンテンツを発見することができる。
【0012】
非特許文献2に開示されている技術は、非特許文献1が考えるコサイン類似度とは異なり、Shift-Invariant Kernelによる類似度を考えるハッシュ関数生成技術である。基本的な手続きこそ非特許文献1と似ており、やはりランダムな写像を生成し、これに基づいて特徴量をハッシュ化する。一方で、その性質は非特許文献1とは異なっており、非特許文献1が「元の特徴量の類似度と衝突確率が等しくなるようなハッシュ関数群を生成する」のに対して、非特許文献2では、ハッシュ値間のハミング距離が、Shift-Invariant Kernelによる類似度に依存したバウンド(上界・下界)によって抑えられるようなハッシュ関数を生成する。一般に、非特許文献1のものよりも、類似度の再現性(精度)が高いことが知られている。
【0013】
なお、上記非特許文献1、2双方とも、ハッシュ関数あたり1bitのバイナリコードを割り当てることになる。すなわち、ハッシュ関数の数をBとすると、ハッシュ値はBbitとなる。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特許第3730179号公報
【非特許文献】
【0015】
【非特許文献1】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
【非特許文献2】M. Raginsky, S. Lazebnik, “Locality-Sensitive Binary Codes from Shift-Invariant Kernels”, Advances in Neural Information Processing Systems 22, 2009, p.1509-1517
【発明の概要】
【発明が解決しようとする課題】
【0016】
上記の特許文献1に記載の技術は、特徴量を圧縮表現するものの、圧縮された特徴量間の類似度をユークリッド距離で求めていたため、大幅な計算時間削減を実現できなかった。
【0017】
非特許文献1、2に開示されている技術では、ハッシュ関数(超平面)の生成はランダムであるため、そのコンテンツ同士を関連づけるべきかどうか、すなわち、推薦すべきコンテンツであるかどうかという観点を考慮してハッシュ関数を生成するものではなかった。このため、十分な精度を得るためには、ハッシュ値を十分に大きく取り、多数のハッシュ関数を生成する必要があった。
【0018】
本発明は、この課題を鑑みてなされたものであり、従来より少ないリソースでも、より高い精度で類似するコンテンツが検索できる技術を提供することを目的とする。
【課題を解決するための手段】
【0019】
第1の本発明に係るハッシュ関数生成方法は、複数のコンテンツ、当該複数のコンテンツ中の2つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、前記コンテンツのハッシュ値を求めるためのハッシュ関数を生成するハッシュ関数生成方法であって、前記コンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出するステップと、異なる2つのコンテンツの前記特徴量それぞれをハッシュ関数を用いて変換して2つのバイナリ値を求めるとともに、前記2つのコンテンツ間の関連付けを示す前記関連情報を前記コンテンツデータベースから取得し、前記2つのバイナリ値が一致するか否かを示す一致情報と前記関連情報に基づいて前記ハッシュ関数を定めるステップと、を有することを特徴とする。
【0020】
上記ハッシュ関数生成方法において、前記ハッシュ関数を定めるステップは、複数の前記ハッシュ関数を生成する際に、過去に生成されたハッシュ関数により得られるハッシュ値の一致率に基づき、サンプリングされる前記異なる2つのコンテンツの分布を変化させることを特徴とする。
【0021】
第2の本発明に係るハッシュ値演算方法は、複数のコンテンツを登録したコンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出するステップと、上記ハッシュ関数生成方法により生成されたハッシュ関数を用いて前記特徴量をハッシュ値に変換するステップと、を有することを特徴とする。
【0022】
第3の本発明に係るハッシュ関数生成装置は、複数のコンテンツ、当該複数のコンテンツ中の2つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、前記コンテンツのハッシュ値を求めるためのハッシュ関数を生成するハッシュ関数生成装置であって、前記コンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出する特徴抽出手段と、異なる2つのコンテンツの前記特徴量それぞれをハッシュ関数を用いて変換して2つのバイナリ値を求めるとともに、前記2つのコンテンツ間の関連付けを示す前記関連情報を前記コンテンツデータベースから取得し、前記2つのバイナリ値が一致するか否かを示す一致情報と前記関連情報に基づいて前記ハッシュ関数を定めるハッシュ関数生成手段と、を有することを特徴とする。
【0023】
上記ハッシュ関数生成装置において、前記関数生成手段は、複数の前記ハッシュ関数を生成する際に、過去に生成されたハッシュ関数により得られるハッシュ値の一致率に基づき、サンプリングされる前記異なる2つのコンテンツの分布を変化させることを特徴とする。
【0024】
第4の本発明に係るハッシュ値演算装置は、複数のコンテンツを登録したコンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出する特徴抽出手段と、上記ハッシュ関数生成装置により生成されたハッシュ関数を用いて前記特徴量をハッシュ値に変換するハッシュ化手段と、を有することを特徴とする。
【0025】
第5の本発明に係るハッシュ関数生成プログラムは、上記ハッシュ関数生成方法をコンピュータに実行させることを特徴とする。
【0026】
第6の本発明に係るハッシュ値演算プログラムは、上記ハッシュ値演算方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【0027】
本発明によれば、従来より少ないリソースでも、より高い精度で類似するコンテンツが検索できる技術を提供することができる。
【図面の簡単な説明】
【0028】
【図1】本実施形態に係る情報処理装置の構成の一例を示す機能ブロック図である。
【図2】ハッシュ関数生成処理の流れを示すフローチャートである。
【図3】ハッシュ化処理の流れを示すフローチャートである。
【図4】従来技術と本実施形態について、画像推薦精度を比較した結果を示すグラフである。
【発明を実施するための形態】
【0029】
以下、本発明の実施の形態について図面を用いて説明する。
【0030】
図1は、本発明の実施形態に係る情報処理装置1の構成の一例を示す機能ブロック図である。同図に示す情報処理装置1は、入力部11、特徴抽出部12、ハッシュ関数生成部13、ハッシュ関数記憶部14、ハッシュ化部15、および出力部16を備える。情報処理装置1は、コンテンツデータベース2と通信手段を介して接続され、入力部11、出力部16を介して相互に情報通信し、コンテンツデータベース2に登録されたコンテンツに基づいてハッシュ関数を生成するハッシュ関数生成処理と、生成したハッシュ関数を用いてコンテンツのハッシュ値を求めるハッシュ化処理を行う。情報処理装置1が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは情報処理装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0031】
コンテンツデータベース2は、情報処理装置1の内部にあっても外部にあっても構わず、通信手段は任意の公知ものを用いることができるが、本実施形態においては、外部にあるものとして、通信手段は、インターネット、TCP/IPにより通信するよう接続されているものとする。コンテンツデータベース2は、いわゆるRDBMS (Relational Database Management System)などで構成されているものとしてもよい。コンテンツデータベース2には、少なくともコンテンツそのもののデータ(以降、コンテンツデータと呼ぶ)、あるいは、当該データの所在を一意に示すアドレスが格納されている。コンテンツデータは、例えば、文書であれば文書ファイル、画像であれば画像ファイル、音であれば音ファイル、映像であれば映像ファイルなどである。また、コンテンツデータベース2には、格納されている全て、あるいはその一部のコンテンツのペアについては、そのコンテンツ同士が関連付けられるべきか否かを示す情報(以降、関連情報と呼ぶ)が格納されている。さらに、好ましくは、コンテンツデータベース2には、各コンテンツを一意に識別可能な識別子が含まれているものとする。その他、メタデータとして、例えばコンテンツの内容を表現するもの(コンテンツのタイトル、概要文、キーワード)、コンテンツのフォーマットに関するもの(コンテンツのデータ量、サムネイル等のサイズ)などを含んでいても構わない。これらのメタデータの全て、あるいは一部が一致しているか否かを判定することによって、前記の関連情報を定めるものとしても構わない。
【0032】
本実施の形態における情報処理装置1の各部について説明する。
【0033】
入力部11は、コンテンツデータベース2からコンテンツデータを取得して特徴抽出部12に伝達する。加えて、ハッシュ関数生成処理時には、コンテンツデータベース2から関連情報を取得してハッシュ関数生成部13に伝達する。
【0034】
特徴抽出部12は、入力部11より得たコンテンツデータを解析し、コンテンツを特徴的に表す特徴量を抽出する。特徴量は、ハッシュ化処理時にはハッシュ化部15に、ハッシュ関数生成処理時にはハッシュ関数生成部13に伝達される。
【0035】
ハッシュ関数生成部13は、入力部11より伝達された関連情報と、特徴抽出部12から伝達された特徴量とを基に、1つ以上のハッシュ関数を生成してハッシュ関数記憶部14に記憶する。具体的には、コンテンツペアの特徴量それぞれをハッシュ関数を用いて変換してバイナリ値を求めるとともに、そのコンテンツペア間の関連付けを示す関連情報をコンテンツデータベース2から取得し、求めたバイナリ値がコンテンツペア間で一致するか否かを示す情報と関連情報に基づいてそのハッシュ関数を定め、これを繰り返して複数のハッシュ関数を生成する。
【0036】
ハッシュ関数記憶部14は、ハッシュ関数生成部13が生成した1つ以上のハッシュ関数を記憶する。
【0037】
ハッシュ化部15は、ハッシュ関数記憶部14に格納された1つ以上のハッシュ関数に基づいて、特徴抽出部12から伝達された特徴量を有限個のバイナリ値であるハッシュ値に変換し、出力部16に伝達する。
【0038】
出力部16は、ハッシュ化部15で求めたハッシュ値をコンテンツデータベース2に伝達、格納する。
【0039】
次に、本実施の形態における情報処理装置1の処理について説明する。本実施の形態における情報処理装置1は、ハッシュ関数を生成するハッシュ関数生成処理と、特徴量をハッシュ化するハッシュ化処理を実行する。以下、これら2つの処理について説明する。
【0040】
最初に、ハッシュ関数生成処理について説明する。
【0041】
図2は、ハッシュ関数生成処理の流れを示すフローチャートである。ハッシュ関数生成処理は、実際にコンテンツデータをハッシュ化する前に、少なくとも1度実施しておく処理である。
【0042】
まず、入力部11が、コンテンツデータベース2からコンテンツデータ、関連情報を得て、コンテンツデータは特徴抽出部12に、関連情報はハッシュ関数生成部13に、それぞれ伝達する(ステップS101)。
【0043】
続いて、特徴抽出部12が、コンテンツデータから特徴量を抽出してハッシュ関数生成部13に伝達する(ステップS102)。
【0044】
そして、ハッシュ関数生成部13が、特徴量と関連情報に基づいて1つ以上のハッシュ関数を生成し、ハッシュ関数記憶部14に格納する(ステップS103)。
【0045】
以上の処理により、コンテンツデータベース2に格納されたコンテンツのデータからハッシュ関数を生成することができる。なお、特徴量の抽出、ハッシュ関数の生成の詳細については後述する。
【0046】
続いて、ハッシュ化処理について説明する。
【0047】
図3は、ハッシュ化処理の流れを示すフローチャートである。ハッシュ化処理は、ハッシュ関数記憶部14に格納されたハッシュ関数を用いてコンテンツの特徴量をハッシュ化する処理である。
【0048】
まず、入力部11が、コンテンツデータベース2からコンテンツデータを得て特徴抽出部12に伝達する(ステップS201)。
【0049】
続いて、特徴抽出部12が、コンテンツデータから特徴量を抽出してハッシュ化部15に伝達する(ステップS202)。この処理は、ハッシュ関数生成処理のステップS102と同じである。
【0050】
そして、ハッシュ化部15が、ハッシュ関数記憶部14に格納された1つ以上のハッシュ関数を用いて、特徴量をハッシュ値に変換し、出力部16に伝達する(ステップS203)。1つのハッシュ関数で特徴量は1bitに変換されるので、ハッシュ関数記憶部14にB個のハッシュ関数が格納されている場合は、特徴量はBbitのハッシュ値に変換される。
【0051】
最後に、出力部16が、ハッシュ値をコンテンツデータベース2に格納する(ステップS204)。
【0052】
以上の処理により、入力したコンテンツのハッシュ値を求めることができる。
【0053】
[特徴量の抽出]
次に、特徴量の抽出について説明する。特徴量を抽出する処理は、コンテンツの種類に依存する。例えば、コンテンツが文書であるか、画像であるか、音であるか、映像であるかによって、抽出する/できる特徴量は変化する。ここでは、各種コンテンツに対する特徴抽出処理の一例を説明するが、これに限るものではなく、一般に知られた公知の特徴抽出処理を用いて構わない。
【0054】
コンテンツが文書である場合には、文書中に出現する単語の出現頻度を用いることができる。例えば、公知の形態素解析を用いて、名詞、形容詞等に相当する単語ごとに、その出現頻度を計数すればよい。
【0055】
コンテンツが画像である場合には、例えば、明るさ特徴、色特徴、テクスチャ特徴、コンセプト特徴、景観特徴などを抽出する。
【0056】
明るさ特徴は、HSV色空間におけるV値を数え上げることで、ヒストグラムとして抽出することができる。
【0057】
色特徴は、L*a*b*色空間における各軸(L*、a*、b*)の値を数え上げることで、ヒストグラムとして抽出することができる。各軸のヒストグラムのビンの数は、例えば、L*に対して4、a*に対して14、b*に対して14などとすればよく、この場合、3軸の合計ビン数は、4×14×14=784となる。
【0058】
テクスチャ特徴としては、濃淡ヒストグラムの統計量(コントラスト)やパワースペクトルなどを求めればよい。あるいは、局所特徴量を用いると、色や動きなどと同様、ヒストグラムの形式で抽出することができるようになるため好適である。局所特徴としては、例えば下記の参考文献1に記載されるSIFT(Scale Invariant Feature Transform )や、下記の参考文献2に記載されるSURF(Speeded Up Robust Features)などを用いることができる。
【0059】
[参考文献1]D.G. Lowe, “Distinctive Image Features from Scale-Invariant Keypoints ”, International Journal of Computer Vision, pp.91-110, 2004
[参考文献2]H. Bay, T. Tuytelaars, and L.V. Gool, “SURF: Speeded Up Robust Features”, Lecture Notes in Computer Science, vol. 3951, pp.404-417, 2006
これらによって抽出される局所特徴は、例えば128次元の実数値ベクトルとなる。このベクトルを、予め学習して生成しておいた符号長を参照して、符号に変換し、その符号の数を数え上げることでヒストグラムを生成することができる。この場合、ヒストグラムのビンの数は、符号長の符号数と一致する。符号数は任意のものを用いてよいが、例えば512あるいは1024などとしてもよい。
【0060】
コンセプト特徴とは、画像中に含まれる物体や、画像が捉えているイベントのことである。任意のものを用いてよいが、例を挙げれば、「海」、「山」、「ボール」などのようなものである。もし、ある画像に「海」が映っていた場合、その画像は「海」コンセプトに帰属する画像であるという。その画像が、各コンセプトに帰属するか否かは、コンセプト識別器を用いて判断することができる。通常、コンセプト識別器はコンセプト毎に一つ用意され、画像の特徴量を入力として、その画像があるコンセプトに帰属しているか否かを帰属レベルとして出力する。コンセプト識別器は、予め学習して獲得しておくものであり、決められた画像特徴、例えば先に述べた局所特徴と、予め人手によって、その画像がどのコンセプトに帰属しているかを表した正解ラベルとの関係を学習することによって獲得する。学習器としては、例えばサポートベクターマシンなどを用いればよい。コンセプト特徴は、各コンセプトへの帰属レベルをまとめてベクトルとして表現することで得ることができる。
【0061】
景観特徴は、画像の風景や場面を表現した特徴量である。例えば参考文献3に記載のGIST記述子を用いることができる。
【0062】
[参考文献3]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
コンテンツが音である場合には、音高特徴、音圧特徴、スペクトル特徴、リズム特徴、発話特徴、音楽特徴、音イベント特徴などを抽出する。
【0063】
音高特徴は、例えばピッチを取るものとすればよく、下記の参考文献4に記載される方法などを用いて抽出することができる。
【0064】
[参考文献4]古井貞熙, “ディジタル音声処理, 4. 9ピッチ抽出”, pp.57-59, 1985
音圧特徴としては、音声波形データの振幅値を用いるものとしてもよいし、短時間パワースペクトルを求め、任意の帯域の平均パワーを計算して用いるものとしてもよい。
【0065】
スペクトル特徴としては、例えばメル尺度ケプストラム係数(MFCC:Mel-Frequency Cepstral Coefficients )を用いることができる。
【0066】
リズム特徴としては、例えばテンポを抽出すればよい。テンポを抽出するには、例えば下記の参考文献5に記載される方法などを用いることができる。
【0067】
[参考文献5]E.D. Scheirer, “Tempo and Beat Analysis of Acoustic Musical Signals ”, Journal of Acoustic Society America, Vol. 103, Issue 1, pp.588-601, 1998
発話特徴、音楽特徴は、それぞれ、発話の有無、音楽の有無を表す。発話・音楽の存在する区間を発見するには、例えば下記の参考文献6に記載される方法などを用いればよい。
【0068】
[参考文献6]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
音イベント特徴としては、例えば、笑い声や大声などの感情的な音声、あるいは、銃声や爆発音などの環境音の生起などを用いるものとすればよい。このような音イベントを検出するには、例えば下記の参考文献7に記載される方法などを用いればよい。
【0069】
[参考文献7]国際公開第2008/032787号
コンテンツが映像である場合、映像は、一般に画像と音のストリームであるから、上記説明した画像特徴と音特徴を用いることができる。映像中のどの画像、音情報を分析するかについては、例えば、予め映像をいくつかの区間に分割し、その区間ごとに1つの画像、音から特徴抽出を実施する。
【0070】
映像を区間に分割するには、予め決定しておいた一定の間隔で分割するものとしてもよいし、例えば下記の参考文献8に記載される方法などを用いて、映像が不連続に切れる点であるカット点によって分割するものとしてもよい。
【0071】
[参考文献8]Y. Tonomura, A. Akutsu, Y. Taniguchi, and G. Suzuki, “Structured Video Computing”, IEEE Multimedia, pp.34-43, 1994
望ましくは、後者の方法を採用する。映像区間分割処理の結果として、区間の開始点(開始時刻)と終了点(終了時刻)が得られるが、この時刻毎に別々の特徴量として扱えばよい。
【0072】
以上のように抽出した特徴量は、一つあるいは複数を利用してもよいし、その他の公知の特徴量を用いるものとしてもよい。
【0073】
[ハッシュ関数の生成]
次に、ハッシュ関数の生成について説明する。コンテンツiの抽出された特徴量をxi∈Rdと表す。このとき、ステップS103では、h:Rd→{0,1}となるハッシュ関数の集合を求める。各hによって、特徴量xi∈Rdは0または1を取るバイナリ値に写像されるから、特徴量xiは、ハッシュ関数集合H={h1,h2,・・・,hB}によってB個のバイナリ値、すなわち、B bitのハッシュ値に変換されることになる。
【0074】
本発明の目的は、このハッシュ値によって時間のかかる類似度計算を省略することである。したがって、ハッシュ関数は、元の特徴量間の類似度s:Rd×Rd→Rと関連したハッシュ値への写像であることが要請され、高い類似度を持つコンテンツほど、ハッシュ値の距離(ハミング距離)が近くなることが好ましい。このようなハッシュ関数の1つであるShift-Invariant Kernelsに基づくハッシュ関数の例を示す。Shift-Invariant Kernel K(xi,xj)=Φ(xi)・Φ(xj)は、Mercer kernelであり、K(xi,xj)=K(xi−xj)となるようなものである。これを達成するカーネルKは、Rd上の確率測度μのフーリエ変換であることが知られている。参考文献9に開示されている技術では、写像Φ:Rd→Rとして下記のRandom Fourier Feature (RFF) を与えている。
【0075】
[参考文献9] A. Rahimi, B. Recht, “Random Features for Large-Scale Kernel Machines”, Advances in Neural Information Processing Systems 20}, pp. 1177-1184, 2008
【数1】

【0076】
ここで、wはμに従うRd上のサンプルである。RBFカーネルK(x)=exp(−‖x‖2/2)を考えた場合、μは標準多次元正規分布であるため、標準多次元正規分布乱数からのサンプリングによってwを得ることができる。bは[0, 2π]上の一様分布に従うR上のサンプルとして得る。
【0077】
このようにして得られたΦ(x;w,b)によって、次のようにハッシュ関数h(x;w,b)を求めることができる。
【数2】

【0078】
ハッシュ関数集合Hを得るためには、異なるw,bの組合せをB回サンプリングして得ればよい。以上の手続きにより、高い類似度を持つコンテンツほど、ハッシュ値の距離(ハミング距離)が近くなるようなハッシュ関数集合Hを得ることができる。
【0079】
しかしながら、この技術では、ハッシュ関数のパラメータw,bをランダムに決定するため、十分な精度を得るためには、十分な数のハッシュ関数を得る必要がある。このため、Bの値を大きく取る必要があり、もう1つの重要な課題であった、低容量なハッシュ値を実現することができない。
【0080】
そこで、本実施の形態では、互いに関連づけられるべきコンテンツ(特徴量)の組を示す関連情報に基づいてw,bを決定することで、より効率的なハッシュ関数を生成する。また、本実施の形態では、B個のハッシュ関数を生成する際に、類似したハッシュ関数が生成されないよう逐次的にサンプリングする特徴量ペアの分布に修正をかける。
【0081】
まず、単一のハッシュ関数のw,bを決定する方法の一例について詳述する。
【0082】
コンテンツのペア{xi,xj}に対して、関連情報に基づく関連情報ラベルyijを与える。このラベルyijは、任意の方法で与えてよいが、例えば、以下の規則によって与える。
【0083】
(1){xi,xj}が関連付けられるべきときyij=1
(2){xi,xj}が関連付けられるべきでないときyij=−1
(3) そのいずれでもないときyij=0
この関連情報ラベルyijを利用して、ハッシュ関数hのパラメータw,bを決定する。
【0084】
一時的に、hに等価なハッシュ関数h’(x;w,b)=2h(x;w,b)−1を定義しておく。h’は、hが1のとき1、0のとき−1を取る。目的関数J(w,b)は下記のように与えられる。
【数3】

【0085】
このJは、ハッシュ値の値が正しく出力されている場合にのみ大きくなる。すなわち、
(1)yij=1であり、h’(xi),h’(xj)のハッシュ値が正しく一致するような場合に大きくなり、
(2)yij=1であり、h’(xi),h’(xj)のハッシュ値が誤って一致しないような場合に小さくなり、
(3)yij=−1であり、h’(xi),h’(xj)のハッシュ値が正しく一致しないような場合に大きくなり、
(4)yij=−1であり、h’(xi),h’(xj)のハッシュ値が誤って一致するような場合に小さくなる。
【0086】
よって、このJを最大にするようなw,bを求めれば、正しい出力を得るハッシュ関数を生成することができる。
【0087】
しかしながら、ハッシュ関数h’(およびh)は解析的ではなく、直接解くことが出来ない。そこで、式(1)、式(2)の関係に基づき、hを除外する緩和を導入してJを変形する。
【数4】

【0088】
コサイン関数はR上で解析的である。さらに、積和公式より、式(4)は次式(5)と変形できる。
【数5】

【0089】
ここで、xij+=xi+xj,xij-=xi−xjである。これを最大化するw,bを求めればよい。種々の公知の方法を用いることができるが、例えば、最急降下法を用いてもよい。w,bの初期値w0,b0、および、更新率αを適当に与え、下記の更新規則に基づいて、w,bが収束するまで繰り返し計算を実施すればよい。
【数6】

【0090】
以上の処理によってハッシュ関数が一つ定まる。
【0091】
上記の処理を繰り返して、B個のハッシュ関数が得られるまで順次w,bを求めていくが、式(5)の目的関数を用いている限りは、同じあるいは限りなく似たハッシュ関数が生成されてしまうため、非効率的である。そこで、本実施の形態では、さらに、Bootstrapのアイディアに基づき、それまでに生成されたハッシュ関数の精度に基づいて特徴量ペアの分布(出現確率)を変化させ、効率的に異なったハッシュ関数を生成する仕組みを導入する。
【0092】
k番目のハッシュ関数hkを生成するとし、特徴量のペア{xi,xj}に対して、その出現確率Ek(i,j)を導入する。このとき、全ての特徴量ペアの集合から、この確率Ekに基づいて、全ての特徴量ペアの数と同数の特徴量ペアを、重複を許してリサンプリングする。このようにして得た特徴量ペアの集合は、元のそれからEkに従い偏った集合となる。こうして偏りをかけた特徴量ペアに基づいて、上記の単一のハッシュ関数におけるw,bを決定する処理を繰り返すことで、毎ステップ異なったハッシュ関数が生成されることになる。
【0093】
kを与えるやり方については、任意の確率を与えるものとしてよいが、好ましくは下記のように定める。Ekの高い特徴量ペアほどリサンプリングされやすく、ハッシュ関数生成の際に考慮されやすくなることになるため、k−1番目以前に生成されたハッシュ関数の集合Hk-1によって誤って関連付けられてしまう特徴量ペアに対して高い確率を与えるようなEkを与える方がよい。この理由は、k番目のハッシュ関数が、よりこの誤った特徴量ペアに対してsensitiveになるからである。
【0094】
具体的な方法の一例としては、例えば、E1は全ての特徴量ペアで等確率とし、以降、kが進むに従い以下の次式(7)で示す更新規則に基づいて更新を行う。
【数7】

【0095】
ただし、Zkは正規化係数、ηはパラメータである。ここで、θHk(xi,xj)はk番目までのハッシュ関数により定められるxi,xjのハッシュ値Hk(xi),Hk(xj)の近さを表す関数であり、例えば、ハミング距離Hamを用いて次式(8)のようにすればよい。
【数8】

【0096】
以上の処理を繰り返すことにより、B個のハッシュ関数を得ることができる。生成されたハッシュ関数(具体的には、パラメータw,b)は、ハッシュ関数記憶部14に格納される。
【0097】
[実施例]
ここでは、画像データベースを対象に、本発明で実施したハッシュ値に基づいて類似画像を推薦する一実施例について説明する。
【0098】
この実施例の画像データベースには、約8,000枚分の写真が登録されている。各写真は、100種類の被写体のうち、いずれか一つを撮影したものである。
【0099】
この実施例では、閲覧画像の被写体と同一の被写体を撮影した画像を画像データベースに登録された画像の中から推薦することを目的とした。通常のやり方であれば、画像データベースに登録された全ての画像から特徴量を抽出しておき、閲覧画像の特徴量と類似度の高い画像データベース中の画像を推薦結果として出力する。
【0100】
本発明では、これをハッシュ値によって実施する。特徴量は任意のものを用いて構わないが、本実施例では景観特徴を用いた。景観特徴は、320次元の実数値ベクトルである。予め、画像データベース中の全ての画像から景観特徴を抽出しておく。さらに、本発明によって、景観特徴からハッシュ値を生成し、これを画像データベースに登録しておく。この際、予め被写体が一致している場合に1、そうでない場合に−1を取る関連情報ラベルが付与された約6,000の特徴量ペアを用いてハッシュ関数の生成を行った。閲覧画像のハッシュ値と、画像データベース中のハッシュ値とのハミング距離が近いものを推薦結果として提示した。
【0101】
この実施例では、本発明によって生成したハッシュ値による推薦精度と、非特許文献2の技術によって生成したハッシュ値による推薦精度とを比較した。図4に、ハッシュ値のビット数(ハッシュ関数の数)を変化させたときの推薦精度を示す。白抜きが非特許文献1の推薦精度を示し、網掛けが本発明の推薦精度を示す。
【0102】
いずれのビット数においても、本発明による技術の方が高い精度を得ている。このことから、本発明による情報処理技術の高い効果が確認できる。また、ビット数毎の結果を見ると、ビット数が少ない場合の方が、相対的に大きく精度を改善している。このことから、本発明は、少ないビット数でも、関連づけられるべき特徴量ペアを適切に反映したハッシュ関数を生成し、精度を向上させることができることが確認できる。
【0103】
以上説明したように、本実施の形態によれば、異なる2つのコンテンツを関連付けるべきか否かを示す関連情報と、これら2つのコンテンツの特徴量をハッシュ関数により変換したバイナリ値が一致するか否かを示す情報の差異を鑑みてハッシュ関数を生成することにより、関連情報が示す本来あるべき結果に、ハッシュ関数により変換したバイナリ値の一致・不一致を反映したハッシュ関数が生成できるので、より少ないハッシュ関数数(B)でも、より高い精度で類似するコンテンツが検索できる。
【0104】
本実施の形態によれば、複数のハッシュ関数を生成する際に、過去に生成されたハッシュ関数によって生成される実際のハッシュ値の一致率に基づいてサンプリングされるコンテンツペアの分布を変化させることにより、過去のハッシュ関数では補いきれていない弱点、すなわち、相対的に精度が低いハッシュ値となる特徴量の集合を補うような、新たなハッシュ関数を効率的に生成することができる。
【符号の説明】
【0105】
1…情報処理装置
11…入力部
12…特徴抽出部
13…ハッシュ関数生成部
14…ハッシュ関数記憶部
15…ハッシュ化部
16…出力部
2…コンテンツデータベース

【特許請求の範囲】
【請求項1】
複数のコンテンツ、当該複数のコンテンツ中の2つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、前記コンテンツのハッシュ値を求めるためのハッシュ関数を生成するハッシュ関数生成方法であって、
前記コンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出するステップと、
異なる2つのコンテンツの前記特徴量それぞれをハッシュ関数を用いて変換して2つのバイナリ値を求めるとともに、前記2つのコンテンツ間の関連付けを示す前記関連情報を前記コンテンツデータベースから取得し、前記2つのバイナリ値が一致するか否かを示す一致情報と前記関連情報に基づいて前記ハッシュ関数を定めるステップと、
を有することを特徴とするハッシュ関数生成方法。
【請求項2】
前記ハッシュ関数を定めるステップは、複数の前記ハッシュ関数を生成する際に、過去に生成されたハッシュ関数により得られるハッシュ値の一致率に基づき、サンプリングされる前記異なる2つのコンテンツの分布を変化させることを特徴とする請求項1記載のハッシュ関数生成方法。
【請求項3】
複数のコンテンツを登録したコンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出するステップと、
請求項1又は2に記載のハッシュ関数生成方法により生成されたハッシュ関数を用いて前記特徴量をハッシュ値に変換するステップと、
を有することを特徴とするハッシュ値演算方法。
【請求項4】
複数のコンテンツ、当該複数のコンテンツ中の2つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、前記コンテンツのハッシュ値を求めるためのハッシュ関数を生成するハッシュ関数生成装置であって、
前記コンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出する特徴抽出手段と、
異なる2つのコンテンツの前記特徴量それぞれをハッシュ関数を用いて変換して2つのバイナリ値を求めるとともに、前記2つのコンテンツ間の関連付けを示す前記関連情報を前記コンテンツデータベースから取得し、前記2つのバイナリ値が一致するか否かを示す一致情報と前記関連情報に基づいて前記ハッシュ関数を定めるハッシュ関数生成手段と、
を有することを特徴とするハッシュ関数生成装置。
【請求項5】
前記関数生成手段は、複数の前記ハッシュ関数を生成する際に、過去に生成されたハッシュ関数により得られるハッシュ値の一致率に基づき、サンプリングされる前記異なる2つのコンテンツの分布を変化させることを特徴とする請求項4記載のハッシュ関数生成装置。
【請求項6】
複数のコンテンツを登録したコンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出する特徴抽出手段と、
請求項4又は5に記載のハッシュ関数生成装置により生成されたハッシュ関数を用いて前記特徴量をハッシュ値に変換するハッシュ化手段と、
を有することを特徴とするハッシュ値演算装置。
【請求項7】
請求項1又は2に記載のハッシュ関数生成方法をコンピュータに実行させることを特徴とするハッシュ関数生成プログラム。
【請求項8】
請求項3に記載のハッシュ値演算方法をコンピュータに実行させることを特徴とするハッシュ値演算プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate