"複数のコンテンツ、当該複数のコンテンツ中の2つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、前記コンテンツのハッシュ値を求めるためのハッシュ関数を生成するハッシュ関数生成方法であって、前記コンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出するステップと、異なる2つのコンテンツの前記特徴量それぞれをハッシュ関数を用いて変換して2つのバイナリ値を求めるとともに、前記2つのコンテンツ間の関連付けを示す前記関連情報を前記コンテンツデータベースから取得し、前記2つのバイナリ値が一致するか否かを示す一致情報と前記関連情報に基づいて前記ハッシュ関数を定めるステップと、を有することを特徴とするハッシュ関数生成方法。前記ハッシュ関数を定めるステップは、複数の前記ハッシュ関数を生成する際に、過去に生成されたハッシュ関数により得られるハッシュ値の一致率に基づき、サンプリングされる前記異なる2つのコンテンツの分布を変化させることを特徴とする請求項1記載のハッシュ関数生成方法。複数のコンテンツを登録したコンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出するステップと、請求項1又は2に記載のハッシュ関数生成方法により生成されたハッシュ関数を用いて前記特徴量をハッシュ値に変換するステップと、を有することを特徴とするハッシュ値演算方法。複数のコンテンツ、当該複数のコンテンツ中の2つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、前記コンテンツのハッシュ値を求めるためのハッシュ関数を生成するハッシュ関数生成装置であって、前記コンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出する特徴抽出手段と、異なる2つのコンテンツの前記特徴量それぞれをハッシュ関数を用いて変換して2つのバイナリ値を求めるとともに、前記2つのコンテンツ間の関連付けを示す前記関連情報を前記コンテンツデータベースから取得し、前記2つのバイナリ値が一致するか否かを示す一致情報と前記関連情報に基づいて前記ハッシュ関数を定めるハッシュ関数生成手段と、を有することを特徴とするハッシュ関数生成装置。前記関数生成手段は、複数の前記ハッシュ関数を生成する際に、過去に生成されたハッシュ関数により得られるハッシュ値の一致率に基づき、サンプリングされる前記異なる2つのコンテンツの分布を変化させることを特徴とする請求項4記載のハッシュ関数生成装置。複数のコンテンツを登録したコンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出する特徴抽出手段と、請求項4又は5に記載のハッシュ関数生成装置により生成されたハッシュ関数を用いて前記特徴量をハッシュ値に変換するハッシュ化手段と、を有することを特徴とするハッシュ値演算装置。請求項1又は2に記載のハッシュ関数生成方法をコンピュータに実行させることを特徴とするハッシュ関数生成プログラム。請求項3に記載のハッシュ値演算方法をコンピュータに実行させることを特徴とするハッシュ値演算プログラム。上記の特許文献1に記載の技術は、特徴量を圧縮表現するものの、圧縮された特徴量間の類似度をユークリッド距離で求めていたため、大幅な計算時間削減を実現できなかった。非特許文献1、2に開示されている技術では、ハッシュ関数超平面の生成はランダムであるため、そのコンテンツ同士を関連づけるべきかどうか、すなわち、推薦すべきコンテンツであるかどうかという観点を考慮してハッシュ関数を生成するものではなかった。このため、十分な精度を得るためには、ハッシュ値を十分に大きく取り、多数のハッシュ関数を生成する必要があった。本発明は、この課題を鑑みてなされたものであり、従来より少ないリソースでも、より高い精度で類似するコンテンツが検索できる技術を提供することを目的とする。第1の本発明に係るハッシュ関数生成方法は、複数のコンテンツ、当該複数のコンテンツ中の2つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、前記コンテンツのハッシュ値を求めるためのハッシュ関数を生成するハッシュ関数生成方法であって、前記コンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出するステップと、異なる2つのコンテンツの前記特徴量それぞれをハッシュ関数を用いて変換して2つのバイナリ値を求めるとともに、前記2つのコンテンツ間の関連付けを示す前記関連情報を前記コンテンツデータベースから取得し、前記2つのバイナリ値が一致するか否かを示す一致情報と前記関連情報に基づいて前記ハッシュ関数を定めるステップと、を有することを特徴とする。上記ハッシュ関数生成方法において、前記ハッシュ関数を定めるステップは、複数の前記ハッシュ関数を生成する際に、過去に生成されたハッシュ関数により得られるハッシュ値の一致率に基づき、サンプリングされる前記異なる2つのコンテンツの分布を変化させることを特徴とする。第2の本発明に係るハッシュ値演算方法は、複数のコンテンツを登録したコンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出するステップと、上記ハッシュ関数生成方法により生成されたハッシュ関数を用いて前記特徴量をハッシュ値に変換するステップと、を有することを特徴とする。第3の本発明に係るハッシュ関数生成装置は、複数のコンテンツ、当該複数のコンテンツ中の2つのコンテンツ同士が関連付けられるべきであるか否かを示す関連情報を登録したコンテンツデータベースを接続し、前記コンテンツのハッシュ値を求めるためのハッシュ関数を生成するハッシュ関数生成装置であって、前記コンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出する特徴抽出手段と、異なる2つのコンテンツの前記特徴量それぞれをハッシュ関数を用いて変換して2つのバイナリ値を求めるとともに、前記2つのコンテンツ間の関連付けを示す前記関連情報を前記コンテンツデータベースから取得し、前記2つのバイナリ値が一致するか否かを示す一致情報と前記関連情報に基づいて前記ハッシュ関数を定めるハッシュ関数生成手段と、を有することを特徴とする。上記ハッシュ関数生成装置において、前記関数生成手段は、複数の前記ハッシュ関数を生成する際に、過去に生成されたハッシュ関数により得られるハッシュ値の一致率に基づき、サンプリングされる前記異なる2つのコンテンツの分布を変化させることを特徴とする。第4の本発明に係るハッシュ値演算装置は、複数のコンテンツを登録したコンテンツデータベースからコンテンツを読み出して当該コンテンツの特徴量を抽出する特徴抽出手段と、上記ハッシュ関数生成装置により生成されたハッシュ関数を用いて前記特徴量をハッシュ値に変換するハッシュ化手段と、を有することを特徴とする。第5の本発明に係るハッシュ関数生成プログラムは、上記ハッシュ関数生成方法をコンピュータに実行させることを特徴とする。第6の本発明に係るハッシュ値演算プログラムは、上記ハッシュ値演算方法をコンピュータに実行させることを特徴とする。本発明によれば、従来より少ないリソースでも、より高い精度で類似するコンテンツが検索できる技術を提供することができる。以下、本発明の実施の形態について図面を用いて説明する。図1は、本発明の実施形態に係る情報処理装置1の構成の一例を示す機能ブロック図である。同図に示す情報処理装置1は、入力部11、特徴抽出部12、ハッシュ関数生成部13、ハッシュ関数記憶部14、ハッシュ化部15、および出力部16を備える。情報処理装置1は、コンテンツデータベース2と通信手段を介して接続され、入力部11、出力部16を介して相互に情報通信し、コンテンツデータベース2に登録されたコンテンツに基づいてハッシュ関数を生成するハッシュ関数生成処理と、生成したハッシュ関数を用いてコンテンツのハッシュ値を求めるハッシュ化処理を行う。情報処理装置1が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは情報処理装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。コンテンツデータベース2は、情報処理装置1の内部にあっても外部にあっても構わず、通信手段は任意の公知ものを用いることができるが、本実施形態においては、外部にあるものとして、通信手段は、インターネット、TCPIPにより通信するよう接続されているものとする。コンテンツデータベース2は、いわゆるRDBMSを与えている。参考文献9ARahimiBRechtRandomFeaturesforLargeScaleKernelMachinesAdvancesinNeuralInformationProcessingSystems20pp117711842008ここで、wはμに従うRd上のサンプルである。RBFカーネルKx=exp-∥x∥2/2を考えた場合、μは標準多次元正規分布であるため、標準多次元正規分布乱数からのサンプリングによってwを得ることができる。bは02π上の一様分布に従うR上のサンプルとして得る。このようにして得られたΦx;w,bによって、次のようにハッシュ関数hx;w,bを求めることができる。ハッシュ関数集合Hを得るためには、異なるw,bの組合せをB回サンプリングして得ればよい。以上の手続きにより、高い類似度を持つコンテンツほど、ハッシュ値の距離ハミング距離が近くなるようなハッシュ関数集合Hを得ることができる。しかしながら、この技術では、ハッシュ関数のパラメータw,bをランダムに決定するため、十分な精度を得るためには、十分な数のハッシュ関数を得る必要がある。このため、Bの値を大きく取る必要があり、もう1つの重要な課題であった、低容量なハッシュ値を実現することができない。そこで、本実施の形態では、互いに関連づけられるべきコンテンツ特徴量の組を示す関連情報に基づいてw,bを決定することで、より効率的なハッシュ関数を生成する。また、本実施の形態では、B個のハッシュ関数を生成する際に、類似したハッシュ関数が生成されないよう逐次的にサンプリングする特徴量ペアの分布に修正をかける。まず、単一のハッシュ関数のw,bを決定する方法の一例について詳述する。コンテンツのペア{xi,xj}に対して、関連情報に基づく関連情報ラベルyijを与える。このラベルyijは、任意の方法で与えてよいが、例えば、以下の規則によって与える。1{xi,xj}が関連付けられるべきときyij=12{xi,xj}が関連付けられるべきでないときyij=-13そのいずれでもないときyij=0この関連情報ラベルyijを利用して、ハッシュ関数hのパラメータw,bを決定する。一時的に、hに等価なハッシュ関数h’x;w,b=2hx;w,b-1を定義しておく。h’は、hが1のとき1、0のとき-1を取る。目的関数Jw,bは下記のように与えられる。このJは、ハッシュ値の値が正しく出力されている場合にのみ大きくなる。すなわち、1yij=1であり、h’xi,h’xjのハッシュ値が正しく一致するような場合に大きくなり、2yij=1であり、h’xi,h’xjのハッシュ値が誤って一致しないような場合に小さくなり、3yij=-1であり、h’xi,h’xjのハッシュ値が正しく一致しないような場合に大きくなり、4yij=-1であり、h’xi,h’xjのハッシュ値が誤って一致するような場合に小さくなる。よって、このJを最大にするようなw,bを求めれば、正しい出力を得るハッシュ関数を生成することができる。しかしながら、ハッシュ関数h’およびhは解析的ではなく、直接解くことが出来ない。そこで、式1、式2の関係に基づき、hを除外する緩和を導入してJを変形する。コサイン関数はR上で解析的である。さらに、積和公式より、式4は次式5と変形できる。ここで、xij=xixj,xij=xi-xjである。これを最大化するw,bを求めればよい。種々の公知の方法を用いることができるが、例えば、最急降下法を用いてもよい。w,bの初期値w0,b0、および、更新率αを適当に与え、下記の更新規則に基づいて、w,bが収束するまで繰り返し計算を実施すればよい。以上の処理によってハッシュ関数が一つ定まる。上記の処理を繰り返して、B個のハッシュ関数が得られるまで順次w,bを求めていくが、式5の目的関数を用いている限りは、同じあるいは限りなく似たハッシュ関数が生成されてしまうため、非効率的である。そこで、本実施の形態では、さらに、Bootstrapのアイディアに基づき、それまでに生成されたハッシュ関数の精度に基づいて特徴量ペアの分布出現確率を変化させ、効率的に異なったハッシュ関数を生成する仕組みを導入する。k番目のハッシュ関数hkを生成するとし、特徴量のペア{xi,xj}に対して、その出現確率Eki,jを導入する。このとき、全ての特徴量ペアの集合から、この確率Ekに基づいて、全ての特徴量ペアの数と同数の特徴量ペアを、重複を許してリサンプリングする。このようにして得た特徴量ペアの集合は、元のそれからEkに従い偏った集合となる。こうして偏りをかけた特徴量ペアに基づいて、上記の単一のハッシュ関数におけるw,bを決定する処理を繰り返すことで、毎ステップ異なったハッシュ関数が生成されることになる。Ekを与えるやり方については、任意の確率を与えるものとしてよいが、好ましくは下記のように定める。Ekの高い特徴量ペアほどリサンプリングされやすく、ハッシュ関数生成の際に考慮されやすくなることになるため、k-1番目以前に生成されたハッシュ関数の集合Hk1によって誤って関連付けられてしまう特徴量ペアに対して高い確率を与えるようなEkを与える方がよい。この理由は、k番目のハッシュ関数が、よりこの誤った特徴量ペアに対してsensitiveになるからである。具体的な方法の一例としては、例えば、E1は全ての特徴量ペアで等確率とし、以降、kが進むに従い以下の次式7で示す更新規則に基づいて更新を行う。ただし、Zkは正規化係数、ηはパラメータである。ここで、θHkxi,xjはk番目までのハッシュ関数により定められるxi,xjのハッシュ値Hkxi,Hkxjの近さを表す関数であり、例えば、ハミング距離Hamを用いて次式8のようにすればよい。以上の処理を繰り返すことにより、B個のハッシュ関数を得ることができる。生成されたハッシュ関数具体的には、パラメータw,bは、ハッシュ関数記憶部14に格納される。[実施例]ここでは、画像データベースを対象に、本発明で実施したハッシュ値に基づいて類似画像を推薦する一実施例について説明する。この実施例の画像データベースには、約8,000枚分の写真が登録されている。各写真は、100種類の被写体のうち、いずれか一つを撮影したものである。この実施例では、閲覧画像の被写体と同一の被写体を撮影した画像を画像データベースに登録された画像の中から推薦することを目的とした。通常のやり方であれば、画像データベースに登録された全ての画像から特徴量を抽出しておき、閲覧画像の特徴量と類似度の高い画像データベース中の画像を推薦結果として出力する。本発明では、これをハッシュ値によって実施する。特徴量は任意のものを用いて構わないが、本実施例では景観特徴を用いた。景観特徴は、320次元の実数値ベクトルである。予め、画像データベース中の全ての画像から景観特徴を抽出しておく。さらに、本発明によって、景観特徴からハッシュ値を生成し、これを画像データベースに登録しておく。この際、予め被写体が一致している場合に1、そうでない場合に-1を取る関連情報ラベルが付与された約6,000の特徴量ペアを用いてハッシュ関数の生成を行った。閲覧画像のハッシュ値と、画像データベース中のハッシュ値とのハミング距離が近いものを推薦結果として提示した。この実施例では、本発明によって生成したハッシュ値による推薦精度と、非特許文献2の技術によって生成したハッシュ値による推薦精度とを比較した。図4に、ハッシュ値のビット数ハッシュ関数の数を変化させたときの推薦精度を示す。白抜きが非特許文献1の推薦精度を示し、網掛けが本発明の推薦精度を示す。いずれのビット数においても、本発明による技術の方が高い精度を得ている。このことから、本発明による情報処理技術の高い効果が確認できる。また、ビット数毎の結果を見ると、ビット数が少ない場合の方が、相対的に大きく精度を改善している。このことから、本発明は、少ないビット数でも、関連づけられるべき特徴量ペアを適切に反映したハッシュ関数を生成し、精度を向上させることができることが確認できる。以上説明したように、本実施の形態によれば、異なる2つのコンテンツを関連付けるべきか否かを示す関連情報と、これら2つのコンテンツの特徴量をハッシュ関数により変換したバイナリ値が一致するか否かを示す情報の差異を鑑みてハッシュ関数を生成することにより、関連情報が示す本来あるべき結果に、ハッシュ関数により変換したバイナリ値の一致不一致を反映したハッシュ関数が生成できるので、より少ないハッシュ関数数Bでも、より高い精度で類似するコンテンツが検索できる。本実施の形態によれば、複数のハッシュ関数を生成する際に、過去に生成されたハッシュ関数によって生成される実際のハッシュ値の一致率に基づいてサンプリングされるコンテンツペアの分布を変化させることにより、過去のハッシュ関数では補いきれていない弱点、すなわち、相対的に精度が低いハッシュ値となる特徴量の集合を補うような、新たなハッシュ関数を効率的に生成することができる。"