[実施の形態1]
図1に、第1の実施の形態に係るシステム概要を示す。例えば生産場所、採取場所、登録場所などに設置される情報処理装置100と、例えば流通経路上に設置される複数の検出装置200とが、例えばインターネットなどのネットワークを介して接続するようになっている。
図1で示すように、複数の対象(図1ではA乃至Dなど)を生産、採取、登録などする場面において、情報処理装置100では、当該複数の対象に対して測定などを行った上で、複数の対象の各々を識別するユニークなデータ(以下では、固定値ベクトルと呼ぶ)を生成するための変換関数として、測定データなどを表す空間を複数の対象の各々を異なる部分空間に含まれるように分割する超曲面を生成し、当該超曲面のパラメータを検出装置200に配信する。
検出装置200は、例えば対象の流通経路上で、特定の対象について測定などを行った上で、情報処理装置100から配信された超曲面のパラメータを用いて測定データなどに対して評価を行うことで、特定の対象を識別するユニークな固定値ベクトルを生成する。固定値ベクトルが得られれば、当該固定値ベクトルをIDとして用いることで例えば生産等に関するデータなど属性データを別途抽出できるようになる。
情報処理装置100は、測定部110と、第1データ格納部120と、パラメータ生成部130と、第2データ格納部140と、登録部150と、配信部160と、対象DB170とを有する。
測定部110は、対象に対する所定の測定を行い、測定データを第1データ格納部120に格納する。なお、測定部110は、測定だけではなく、測定データに対する特徴抽出などの追加的な処理を行って、その処理結果を第1データ格納部120に格納するようにしてもよい。パラメータ生成部130は、第1データ格納部120に格納されているデータを用いて、要件を満たす超曲面を生成し、当該超曲面のパラメータを第2データ格納部140に格納する。
登録部150は、第2データ格納部140に格納されている超曲面のパラメータを用いて、第1データ格納部120に格納されている測定データなどを評価して、各対象について固定値ベクトルを生成すると共に、各対象の属性データ(例えば生産場所、生産時刻その他)を対応付けて、対象DB170に格納する。なお、パラメータ生成部130によって各対象の固定値ベクトルが生成されて第2データ格納部140に格納されている場合には、第2データ格納部140に格納されている各対象の固定値ベクトルを読み出す場合もある。配信部160は、第2データ格納部140に格納されている超曲面のパラメータを、検出装置200に配信する。
検出装置200は、測定部210と、測定データ格納部220と、抽出部230と、後処理部240と、設定部250と、パラメータ格納部260とを有する。
設定部250は、情報処理装置100から配信された超曲面のパラメータを、パラメータ格納部260に格納する。オフラインで超曲面のパラメータを受け取った場合にも同様にパラメータ格納部260に格納する。
測定部210は、情報処理装置100における測定部110と同じ処理を行って、処理結果を測定データ格納部220に格納する。抽出部230は、測定データ格納部220に格納された測定データなどを、パラメータ格納部260に格納されている超曲面のパラメータを用いて評価し、特定の対象を識別するユニークな固定値ベクトルを生成する。後処理部240は、固定値ベクトルをIDとして用いて、当該IDに対応付けられている属性データを取得するなどの処理を行う。
次に、情報処理装置100の処理の内容を図2乃至図16を用いて詳細に説明する。
まず、測定部110は、各対象iに対して所定の測定を行って、測定結果に基づき、L1次元のベクトルXiを生成し、第1データ格納部120に格納する(図2:ステップS1)。
ここで、対象は全部でL3個あるものとする。また、測定部110は、単なる測定ではなく、測定データに対して所定の特徴抽出などの処理を行うようにしてもよい。そして、L3個ある対象のうちi番目の対象に対して、L1次元のベクトルXi=(x1,x2,...,xL1)が生成される。
説明を分かりやすくするため、L3=4且つL1=2の例を図3に示しておく。L1=2なので、図3に示すようにベクトルXiは2次元の空間、すなわち平面上で表される。ここでは、対象1のベクトルX1=(x1,x2)=(0.5,1)、対象2のベクトルX2=(x1,x2=(1,0.5)、対象3のベクトルX3=(x1,x2)=(0,0.5)、対象4のベクトルX4=(x1,x2)=(0.5,0)であるものとする。
この例では、図3の平面において、いずれの軸についても、0.5を閾値として、それ以上であれば「1」、それ未満であれば「0」を割り当てるものとする(以下、これを実現する関数をround()と表すものとする)。図3の平面において、このような閾値のラインを二点鎖線で表しているが、対象1乃至4はそれぞれ閾値のライン上に載っている。このため、少しでも測定結果にノイズがあると、「0」と「1」とが入れ替わってしまい、検出誤りが生ずることになる。
本実施の形態では、L1次元の空間をn個の部分空間に分割するための超曲面を生成する。各軸の値を0又は1の2種類に分類する場合、nとユニークな超曲面の数L2との関係は、n=2L2で表される。L2=log2L3以上であり、n≧L3である。L2が大きいほど、ノイズ耐性が高い。
図3の例では、例えば図4のような超曲面y1及びy2(平面の場合には直線)を生成することを目指す。図4の例では、L2=2、n=4であり、2本の点線で表される超曲面y1及びy2を生成する。そして、各対象は、これらの超曲面で分割された4つの部分空間A乃至Dのうち互いに異なるものに含まれるようになっている。
以下、このような超曲面に対応する関数をf()と表し、f()の出力範囲を0以上1以下とする。また、二値化、量子化又は離散化の閾値を0.5、すなわちf()の出力の小数点第一位を四捨五入する関数round()をf()に適用し、round(f())を行うものとして説明するが、当然それ以外の場合にも拡張可能である。
図2の処理の説明に戻って、次に、パラメータ生成部130は、対象の個数L3に応じて空間を分割する超曲面数L2等を設定する(ステップS3)。上で述べたとおりの関係があるので、これに従ってL2等が決定される。また、パラメータ生成部130は、超曲面についてのカウンタjを1に初期化する(ステップS5)。
そして、パラメータ生成部130は、超曲面生成処理を実行する(ステップS7)。この超曲面生成処理については、後に詳細に説明する。生成された超曲面のパラメータは、第2データ格納部140に格納される。
その後、パラメータ生成部130は、カウンタjを1インクリメントして、jがL2以下であるか否かを判断する(ステップS11)。この条件を満たす場合には、まだ超曲面を生成するので、処理はステップS7に戻る。
一方、jがL2を超えるようになると、登録部150は、生成されたパラメータに係る超曲面で、各ベクトルXiを評価して、対象iの固定値ベクトルZiを生成し、属性データと共に対象DB170 に登録する(ステップS13)。なお、固定値ベクトルZiについては、j番目の超曲面が決まるたびにZiのj番目の値を求め、または、j番目の超曲面が決まる際に同時に定まったZiのj番目の値を、対象DB170 において対応する場所に登録してもよい。後に固定値ベクトルZiから属性データを抽出するためである。
ここでは、L2個の超曲面を表す関数f1乃至fL2の集合F()=(f1(),f2(),...,fL2())を用いて、ベクトルYi=(yi,1,yi,2,...,yi,L2)=F(Xi)=(f1(Xi),f2(Xi),...,fL2(Xi))を算出し、さらに各要素yi,jについてround()を適用することで離散化し、固定値ベクトルZiを生成する。
さらに、配信部160は、生成された超曲面のパラメータを、第2データ格納部140から読み出して、所定の検出装置200に配信する(ステップS15)。なお、配信ではなく、オフラインで配布するようにしてもよいし、検出装置200の製造部門に送信して、検出装置200の製造段階でパラメータ格納部260に記録するようにしてもよい。
このような処理を行うことで、対象にはID等を付すことなく、検出装置200において固定値ベクトルを確実に抽出することができるようになる。
次に、図5乃至図16を用いて、超曲面生成処理について詳細を説明する。
まず、パラメータ生成部130は、全ベクトルXiを写像するj番目の超曲面を表す関数fj()をランダムに生成する(図5:ステップS21)。
そして、パラメータ生成部130は、fj()に対して度数偏り調整処理を実行する(ステップS23)。この度数偏り調整処理については、図6及び図7を用いて説明する。
図2に対して図3とは異なり図6に示すような超曲面を表す点線y1=0.5及びy2=0.5が生成されたものとする。ここで、超曲面を表す点線yj=0.5 は、yj=fj(x1,x2)=0.5を満たす(x1,x2)であり、f1(x1,x2)は、点線y1=0.5より右上にある点を、「1」に分類される、0.5以上の値に写像し、点線y1=0.5より左下にある点を、「0」に分類される、0.5未満の値に写像する。同様に、f2(x1,x2)は、点線y2=0.5より左上にある点を「0」に分類される、0.5未満の値に写像し、点線y2=0.5より右下にある点を、「1」に分類される、0.5以上の値に写像する。
このような場合、点線y1=0.5の左右で対象の数は2個ずつだが、点線y2=0.5については、その左上の領域(round(y2)=0の領域)に4つの対象が含まれるのに対して、右下の領域(round(y2)=1の領域)には0個となってしまう。すなわち、超曲面で分割される部分空間において対象の分布に偏りがある。
このような場合、例えば、超曲面のパラメータ(直線y2=f2(Xi)=f2(x1,x2)=ax1+b2=cのパラメータa、b及びc)をそれぞれ+又は-方向に変化させて、例えば図6の例では、点線y2=0.5を平行に左上方向に移動させれば、分布の偏りを是正できる。
より具体的には、点線y2=0.5に近い対象2及び4が点線y2=0.5の右下に属し、対象1及び3が点線y2=0.5の左上に属するように点線y2=0.5を移動させれば、分布が均等化される。
対象2及び4は、X2=(1,0.5)、X4=(0.5,0)であるから、y2,2=f2(X2)=a+0.5b+cとなるので、round(y2,2)が0から1に変わるように、bよりa及びbに重みをつけてa、b及びcをいずれも増加する方向に変更する。同様に、y2,4=f2(X4)=0.5a+cとなるので、round(y2,4)が0から1に変わるように、aよりcに重みをつけてa及びcを増加させる方向に変更する。
このような例を念頭にして、図7に示す度数偏り調整処理を実行する。
まず、パラメータ生成部130は、ローカルなカウンタcounterを0に初期化する(ステップS51)。
また、パラメータ生成部130は、fj()を各ベクトルXiに適用して、YT
jベクトルを生成する(ステップS53)。以下に示すYT
jベクトルは、Yの転置行列のj行目のベクトルを表し、Yはyi,j=fj(Xi)をi行j列目の要素とするL3行L2列の2次元行列である。
YT
j=(y1,j,y2,j,...,yL3,j)=(fj(X1),fj(X2),...,fj(XL3))
その後、パラメータ生成部130は、YT
jベクトルの各要素を閾値に応じて0と1とのいずれかに分けて、0と1の度数を計数し、度数差biasを算出する(ステップS55)。
図6の例では、YT
2ベクトルは(0,0,0,0)となるので、bias=|4-0|=4となる。ここでスカラー値wに対して、|w|は、wの絶対値を表す。
そして、パラメータ生成部130は、度数差biasが、予め定められた閾値bias_threshold2より小さいか否かを判断する(ステップS57)。完全に均一の分布にするのであれば度数差bias=0であるから、bias_threshold2=1となる。この要件を満たす場合には、呼び出し元の処理に戻る。
一方、度数差biasが、予め定められた閾値bias_threshold2以上であれば、パラメータ生成部130は、度数差biasが、予め定められたもう一つの閾値bias_threshold1より大きいか否かを判断する(ステップS59)。あまりに度数差biasが大きい場合には、今回の超曲面は許容できないので、ステップS59の要件を満たす場合には、パラメータ生成部130は、今回の超曲面を破棄して(ステップS67)、呼び出し元の処理に戻る。
一方、度数差biasが、予め定められた閾値bias_threshold1未満であれば、パラメータ生成部130は、ローカルなカウンタcounterを1インクリメントして(ステップS61)、counterの値が、予め定められた閾値bias_threshold3を超えたか否かを判断する(ステップS63)。bias_threshold3回、パラメータの変更を行ってもステップS57の要件を満たすことができない場合には、今回の超曲面は適切ではない。従って、ステップS63の要件を満たす場合には、処理はステップS67に移行する。
一方、counterの値が、予め定められた閾値bias_threshold3以下であれば、パラメータ生成部130は、fj()を表す各パラメータを度数差biasが小さくなる方向に変化させる(ステップS65)。その後、処理はステップS53に戻る。
このようにすれば、追加した超曲面で空間を区切った場合における度数偏りを適切に是正できる。
図5の処理の説明に戻って、ステップS23の後に、パラメータ生成部130は、今回の超曲面が破棄されたか否かを判断する(ステップS25)。破棄された場合には、処理はステップS21に戻って、超曲面の生成から再開する。一方、破棄されなかった場合、パラメータ生成部130は、類似性調整処理を実行する(ステップS27)。この類似性調整処理については、図8及び図9を用いて説明する。
図2に対して図3とは異なり図8に示すような超曲面を表す点線y1=0.5及びy2=0.5が生成されたものとする。ここで、超曲面を表す点線yj=0.5 は、yj=fj(x1,x2)=0.5を満たす(x1,x2)であり、f1(x1,x2)は、点線y1=0.5より右上にある点を、「1」に分類される、0.5以上の値に写像し、点線y1=0.5より左下にある点を、「0」に分類される、0.5未満の値に写像する。同様に、f2(x1,x2)は、点線y2=0.5より左にある点を「0」に分類される、0.5未満の値に写像し、点線y2=0.5より右にある点を、「1」に分類される、0.5以上の値に写像する。
この場合、y1とy2とを単独で判断すると、y1で分けられる2つの領域で対象の数は2個ずつであり、同様に、y2で分けられる2つの領域で対象の数は2個ずつであるから、度数差biasで判断すれば問題は無い。しかし、2つの超曲面により空間全体を分割することにより得られる部分空間のそれぞれに対象が含まれるのではなく、対象1及び2が同じ部分空間に含まれ、対象3及び4が同じ部分空間に含まれるようになってしまっている。すなわち、偏った分布が形成されている。
この問題を解消するには、超曲面間の類似度を考慮すればよい。ここでは、今回の超曲面について計算されたYT
jベクトルと、既にj2番目として設定されている他の超曲面についてのYT
j2ベクトルとの類似度Similarityを、超曲面間の類似度として以下のように定義する。
Similarity(YT
j,YT
j2)=2・max(HD(YT
j,YT
j2),L3-HD(YT
j,YT
j2))/L3-1
max(A,B)は、AとBとのうち大きい方の値を出力する関数である。HD(YT
j,YT
j2)は、YT
jベクトルと、YT
j2ベクトルのうち、round()を適用した場合に値が一致しない要素数である。図8の例では、y1が既設定の超曲面とするとYT
j2ベクトルはround()を適用すると(1,1,0,0)となり、y2が今回の超曲面とするとYT
jベクトルもround()を適用すると(1,1,0,0)となるので、HD(YT
j,YT
j2)=0となる。よって、Similarityは、2・max(0,4-0)/4-1=1となる。
なお、類似度Similarityについては、各ベクトルの要素値が0又は1については上で述べたような関数を用いても良く、実数である場合には、コサイン類似度を採用するようにしてもよい。コサイン類似度は、ベクトルV1とV2について、V1・V2/(|V1||V2|)の絶対値である。なお、V1・V2はV1とV2の内積を表しており、|V|は、ベクトルの各要素の値の自乗和の平方根を表す。
このような類似度を用いた類似性調整処理について、図9を用いて説明する。
まず、パラメータ生成部130は、既設定の各超曲面fj2()を各ベクトルXiに適用して、j2それぞれについてYT
j2ベクトルを生成する(ステップS71)。また、パラメータ生成部130は、ローカルなカウンタcounterを0に初期化する(ステップS73)。
そして、パラメータ生成部130は、全てのj2(<j)について、YT
jベクトルとYT
j2ベクトルとの類似度Similarityを算出して、当該類似度Similarityが、予め定められた閾値sim_threshold1未満であるか否かを判断する(ステップS75)。ステップS75の要件を満たしている場合には問題が無いので、処理は呼び出し元の処理に戻る。
一方、ステップS75の要件を満たしていない、すなわち既設定の超曲面の一つでもその類似度Similarityが閾値sim_threshold1を超えている場合には、パラメータ生成部130は、全てのj2(<j)について算出された、YT
jベクトルとYT
j2ベクトルとの類似度Similarityが、予め定められた閾値sim_threshold2を超えている否かを判断する(ステップS77)。これは、どの既設定の超曲面とも類似度があまりに高い場合には、超曲面の調整を行わずに破棄するためである。
よって、ステップS77の条件を満たす場合には、パラメータ生成部130は、今回の超曲面を破棄する(ステップS87)。そして、処理は呼び出し元の処理に戻る。
一方、ステップS77の条件を満たしていない場合には、パラメータ生成部130は、ローカルなカウンタcounterを1インクリメントして、このcounterの値が、予め定められた閾値sim_threshold3を超えているか否かを判断する(ステップS81)。sim_threshold3回、パラメータの変更を行ってもステップS75の要件を満たすことができない場合には、今回の超曲面は適切ではない。従って、ステップS81の要件を満たす場合には、処理はステップS87に移行する。
一方、ステップS81の要件を満たしていない場合には、パラメータ生成部130は、fj()を表すパラメータを、類似度Similarityが小さくなる方向に変化させる(ステップS83)。
より具体的には、YT
jベクトルとYT
j2ベクトルの要素(対象)のうちround()を適用した場合に一致する要素(対象)であって閾値(=0.5)に近い要素(対象)から順番に、例えばその要素値にround()を適用した場合に値が反転することで類似度Similarityが閾値sim_threshold1より小さくなる数だけ、要素i(対象i)を選択する。そして、選択した要素iについて、fj()及びround()を適用した場合に、値が反転するように超曲面のパラメータを調整する。
図8の例で、今回の超曲面がy2であるとすると、対象1及び4がy2に近いので選択され、X1=(0.5,1)、X4=(0.5,0)でround(y1,2)=round(f2(X1))=1であり、round(y4,2)=round(f2(X4))=0であるので、それぞれ0と1に反転するように超曲面のパラメータを調整する。そうすると、round(YT
2ベクトル)は(0,1,0,1)となる。round(YT
j2ベクトル)は(1,1,0,0)であるから、HD(YT
j,YT
j2)=2であり、類似度Similarityは、2・max(2,4-2)/4-1=0となるので、類似度Similarityは下がる。
なお、対象1のX1をf2(x1,x2)で写像すると、y1,2=f2(x1,x2)=ax1+bx2+c=0.5a+b+cであるので、aよりb及びcに重みをつけてa、b及びcいずれも減少させる方向で変化させる。また、対象4のX2をf2(x1,x2)で写像すると、y4,2=f2(x1,x2)=ax1+bx2+c=0.5a+cであるので、aよりcに重みをつけてa及びcを増加させる方向で変化させる。
そして、パラメータ生成部130は、変更後のパラメータに係る関数fj()を各Xiに適用して、新たなYT
jベクトルを生成する(ステップS85)。そして、処理はステップS75に戻る。
以上のような処理を行うことで、個々の対象がいずれか1つの異なる部分空間に含まれるように超曲面が調整されるようになる。
図5の処理の説明に戻って、ステップS27の後に、パラメータ生成部130は、今回の超曲面が破棄されたか否かを判断する(ステップS29)。破棄された場合には、処理はステップS21に戻る。一方、破棄されなかった場合には、パラメータ生成部130は、距離調整処理を実行する(ステップS31)。距離調整処理については、図10及び図11を用いて説明する。
距離調整処理では、閾値として取り扱われる超曲面付近に当該超曲面による対象の写像先が存在しているとノイズによってround()の結果が変わってしまう可能性があるので、閾値(超曲面)と対象の写像先との距離を広げるように超曲面のパラメータを変更するものである。
例えば、図2に対して図3とは異なり図10に示すような超曲面を表す点線y1=0.5及びy2=0.5が生成されたものとする。このような超曲面で空間を分割することで得られる部分空間のいずれかにいずれかの1つの対象が含まれているが、対象1及び4が点線y2=0.5にとても近い。このような場合には、矢印で示すように点線y2=0.5を回転させれば、対象1及び4が点線y2=0.5から離れるので好ましい。
図11に、距離調整処理の処理フローを示す。
まず、パラメータ生成部130は、ローカルなカウンタcounterを0に初期化する(ステップS91)。そして、パラメータ生成部130は、超曲面の関数fj()を表すパラメータを、YT
jベクトルの各要素と閾値との差が大きくなるように変化させる(ステップS93)。
図10の例では、対象1についてはy1,2が0.5より小さいため、y1,2がより小さくなる方向にパラメータを修正し、対象4についてはy4,2が0.5より大きいため、y4,2がより大きくなる方向にパラメータを修正する。
より具体的には、対象1のX1をf2()で写像すると、y1,2=f2(X1)=ax1+bx2+c=0.5a+b+cであるので、aよりb及びcに重みをつけてa、b及びcいずれも減少させる方向で変化させる。また、対象4のX4をf2()で写像すると、y4,2=f2(X4)=ax1+bx2+c=0.5a+cであるので、aよりcに重みをつけてa及びcを増加させる方向で変化させる。
なお、パラメータの修正を行うと、他の対象の写像先が閾値(超曲面)に近づくこともあるので、そのような場合には、他の対象の写像先についても閾値(超曲面)から離れるようにパラメータを変更する。
そして、パラメータ生成部130は、変更後の関数fj()を各Xiに適用して、新たなYT
jベクトルを生成する(ステップS95)。
そうすると、パラメータ生成部130は、YT
jベクトルにおいて全ての又は一定数以上の要素と閾値との差が所定値以上離れているか否かを判断する(ステップS97)。|yi,j-0.5|が所定値以上であるか否かを判断するものである。全ての要素なのか、一定数以上の要素なのかについては、予め設定しておくものとする。
ステップS97の要件を満たしている場合には、好ましい超曲面が生成できたことになるので、パラメータ生成部130は、今回の超曲面の関数fj()を要件充足と設定する(ステップS101)。そして処理は、呼び出し元の処理に戻る。
一方、ステップS97の要件を満たしていない場合には、パラメータ生成部130は、ローカルなカウンタcounterを1インクリメントし(ステップS99)、counterの値が閾値dis_thresholdを超えたか否かを判断する(ステップS103)。counterの値が閾値dis_threshold以下である場合には、処理はステップS93に戻る。一方、counterの値が閾値dis_thresholdを超えた場合には、呼び出し元の処理に戻る。
このような処理を行うことで、全ての対象又は一定数以上の対象の写像先が閾値(超曲面)から十分離れるように調整できる。なお、この要件を満たすことができない場合でも、これ以降の処理を行うことで、今回の超曲面を活用できる場合もある。
図5の処理の説明に戻って、ステップS31の後に、パラメータ生成部130は、今回の超曲面に対して要件充足が設定されたか否かを判断する(ステップS33)。要件充足が設定されていれば、次の超曲面を生成するために、端子Cを介して呼び出し元の処理(図2)に戻る。一方、要件充足が設定されていなければ、端子Aを介して、図12の処理に移行する。
図12の処理の説明に移行して、パラメータ生成部130は、適応的距離調整処理を実行する(ステップS35)。この適応的距離調整処理については、図13及び図14を用いて説明する。
適応的距離調整処理は、超曲面からなかなか離れない対象の集合がある場合に、round()を適用した後の度数分布が大幅に変わらない範囲で、当該集合に含まれる対象のround()後の値が反転するように超曲面のパラメータを変更するものである。例えば、m個程度の対象のround()後の値を0から1に反転させ、m個程度の対象のround()後の値を1から0個に変えるものである。0から1に反転させる個数と1から0に反転させる個数は厳密に同じでなくても良い。
図13に適応的距離調整処理の処理フローを示す。
まず、パラメータ生成部130は、ローカルなカウンタcounterを0に初期化する(ステップS111)。また、パラメータ生成部130は、|fj(Xi)-0.5|が一定値以下となる対象iの集合Sを特定する(ステップS113)。これによって今回の超曲面からなかなか離れない対象iの集合を特定する。
そして、パラメータ生成部130は、集合Sに含まれる対象iに対して目標値Ci,jを算出する(ステップS115)。
目標値は、1-round(fj(Xi))に設定する。これは、図14に模式的に示すように、fj(Xi)が0.5より小さい場合には、round(fj(Xi))=0であるから、目標値Ci,jは1になる。すなわち、fj(Xi)が0.5以上となるようにパラメータを変更させる。
一方、fj(Xi)が0.5より大きい場合には、round(fj(Xi))=1であるから、目標値Ci,jは0になる。すなわち、fj(Xi)が0.5を下回るようにパラメータを変更させる。
ここまでの処理は、適応的距離調整処理の前提処理であり、ステップS117以降の処理を行っても集合S及び目標値Ci,jを変更しない。
そして、パラメータ生成部130は、超曲面の関数fj()を表すパラメータを、YT
jベクトルにおいて、集合Sに含まれる対象iについての要素値と目標値Ci,jとの差が小さくなるように、且つ、それ以外の対象の要素値と閾値との差が大きくなるように変化させる(ステップS117)。この処理は、基本的にステップS93と同様であるが、一部の対象に係る要素については、目標値との差を小さくするという方向が異なっている。
そして、パラメータ生成部130は、新たな超曲面の関数fj()を各Xiに適用して、新たなYT
jベクトルを生成する(ステップS119)。
そうすると、パラメータ生成部130は、YT
jベクトルにおいて全ての又は一定数以上の要素と閾値との差が所定値以上離れているか否かを判断する(ステップS121)。本ステップはステップS97と同様である。
ステップS121の要件を満たしている場合には、次の処理を行うべく、呼び出し元の処理に戻る。
一方、ステップS121の要件を満たしていない場合には、パラメータ生成部130は、ローカルなカウンタcounterを1インクリメントし(ステップS123)、counterの値が閾値dis_thresholdを超えたか否かを判断する(ステップS125)。counterの値が閾値dis_threshold以下である場合には、処理はステップS117に戻る。一方、counterの値が閾値dis_thresholdを超えた場合には、パラメータ生成部130は、今回の超曲面を破棄する(ステップS127)。そして、呼び出し元の処理に戻る。
このようにすれば、度数分布をほぼ維持した上で、距離についての要件を満たすことができるようになる。但し、適応的距離調整処理を行うと、類似性調整処理で得られた状態がもはや崩れている可能性がある。
図12の処理の説明に戻って、ステップS35の後に、パラメータ生成部130は、今回の超曲面が破棄されたか否かを判断する(ステップS37)。今回の超曲面が破棄されている場合には、端子Bを介して図5のステップS21に戻る。
一方、今回の超曲面が破棄されていない場合には、パラメータ生成部130は、類似性再判定処理を実行する(ステップS39)。類似性再判定処理については、図15を用いて説明する。
パラメータ生成部130は、全てのj2(<j)について、YT
jベクトルとYT
j2ベクトルとの類似度Similarityを算出して、当該類似度Similarityが、予め定められた閾値sim_threshold1未満であるか否かを判断する(ステップS131)。これはステップS75と同様である。この要件を満たしている場合には問題が無いので、処理は呼び出し元の処理に戻る。
一方、ステップS131の要件を満たしていない、すなわち既設定の超曲面の一つでもその類似度Similarityが閾値sim_threshold1を超えている場合には、パラメータ生成部130は、今回の超曲面を破棄する(ステップS133)そして、呼び出し元の処理に戻る。
図12の処理の説明に戻って、ステップS39の後に、パラメータ生成部130は、今回の超曲面は破棄されたか否かを判断する(ステップS41)。破棄された場合には、端子Bを介して図5のステップS21に戻る。
一方、今回の超曲面が破棄されていない場合には、今回の超曲面を採用するので、呼び出し元の処理に戻る。
以上のような超曲面生成処理を実行することで、L2個の超曲面を適切に生成できる。
なお、上で述べた超曲面生成処理は一例であって、様々な変形が可能である。特に、超曲面を一つずつ追加する処理例を示したが、複数の超曲面を一度に生成して、それらについて類似性調整処理などを行っても良い。度数偏り調整処理、類似性再判定処理、距離調整処理などを直列的に実行してその都度パラメータを変更しているが、これらの処理の要件を満たしているか否かをまとめて判定して、その結果に基づきパラメータの変更を一度に行うようにしてもよい。
なお、上で述べた超曲面生成処理において、j=1の場合には、類似性調整処理及び類似性再判定処理は行われない。
図4に好ましい超曲面y1及びy2の例を示したが、より具体的には、これらの超曲面は閾値=0.5であるから、y1=0.5=x2+x1-0.5であり、y2=0.5=x2-x1+0.5となる。y1のパラメータは、a=1、b=1、c=-0.5である。y2のパラメータは、a=-1、b=1、c=0.5である。
そして、このようなy1及びy2を用いて、対象1乃至4の入力ベクトルX1乃至X4を評価すれば、図16に示すようになる。すなわち、対象1には固定値ベクトルZ1=(1,1)が算出され、対象2には固定値ベクトルZ2=(1,0)が算出され、対象3には固定値ベクトルZ3=(0,1)が算出され、対象4には固定値ベクトルZ4=(0,0)が算出される。これによって、対象1乃至4の測定結果などから得られる入力ベクトルX1乃至X4のみから、対象の各々を識別するユニークなベクトルが得られるようになる。
次に、検出装置200の処理内容について、図17を用いて説明する。
まず、測定部210は、特定の対象に対して所定の測定を行って、測定結果に基づき、L1次元のベクトルXを生成し、測定データ格納部220に格納する(図17:ステップS201)。測定部210は、情報処理装置100の測定部110と同じ処理を行う。
抽出部230は、情報処理装置100から配信され且つパラメータ格納部260に格納されているパラメータに係る超曲面で、ベクトルXを評価して、対象の固定値ベクトルを生成する(ステップS203)。
パラメータ格納部260には、fj()(1≦j≦L2)のパラメータが格納されているので、Y’=(y1,y2,...,yL2)=(f1(X),f2(X),...,fL2(X))を算出し、yjのそれぞれについてround()を適用することで、固定値ベクトルZが得られる。
抽出部230は、この固定値ベクトルを後処理部240に出力し、後処理部240は、例えばネットワーク300を介して情報処理装置100における対象DB170などから、固定値ベクトルに対応する属性データを抽出し、属性データなどに関連する処理を実行する(ステップS205)。
このように、本実施の形態では、パラメータ格納部260に格納されているパラメータに係る超曲面は、どの対象についても同一の超曲面であり、個々の対象に対してID等を付することなく、固定値ベクトルを得ることができるようになる。
[実施の形態2]
第1の実施の形態でも十分なノイズ耐性を有しているが、誤り訂正機能を追加するようにしてもよい。
本実施の形態では、例えば図18に示すように、情報処理装置100bは、誤り訂正データ生成部180及び第3データ格納部190をさらに有し、配信部160の代わりに超曲面のパラメータと誤り訂正データとを配信する配信部160bを有する。
また、各検出装置200bは、誤り訂正データ格納部270をさらに有し、設定部250及び抽出部230の代わりに、パラメータ格納部260に超曲面のパラメータを格納すると共に誤り訂正データ格納部270に誤り訂正データを格納する設定部250bと、誤り訂正機能を有する抽出部230bとを有する。
次に、情報処理装置100bの誤り訂正データ生成部180の処理内容について、図19を用いて説明する。この処理は、例えば、図2のステップS15の前又は後に実行する。
まず、誤り訂正データ生成部180は、生成された超曲面に基づき、各対象iの固定値ベクトルZiを生成する(ステップS301)。このステップは、図2のステップS13における処理の一部と同じである。
すなわち、超曲面を表す関数f1乃至fL2の集合F()=(f1(),f2(),...,fL2())を用いて、ベクトルYi=(yi,1,yi,2,...,yi,L2)=F(Xi)=(f1(Xi),f2(Xi),...,fL2(Xi))を算出する。さらに、このベクトルYiの各要素yi,jについてround()を適用することで離散化し、固定値ベクトルZiを生成する。
そして、誤り訂正データ生成部180は、各固定値ベクトルZiに対して、誤り訂正のための冗長データを生成する(ステップS303)。具体的には、BCH符号、RS符号、LDPC符号、ターボ符号などの既存の誤り訂正符号に従い、Ziを情報シンボルとする組織符号の冗長データを生成する。
例えば、Xi=(0.5,0.5)に対して固定値ベクトルZi=(1,1)が得られた場合には、Ziに対して所定の誤り訂正符号に従って、冗長データZr,i=(0,0,1,0,1,0,0)を生成する。
そして、誤り訂正データ生成部180は、入力ベクトルXiを入力とし、その冗長データZr,iを教師データとする機械学習を実施し、学習済みモデルを生成する(ステップS305)。例えばニューラルネットワークに基づく所定のモデルを用意して既存のアルゴリズムによって学習を行うことで学習済みモデルを生成する。誤り訂正データ生成部180は、学習済みモデルのパラメータを、第3データ格納部190に格納する。
配信部160bは、第3データ格納部190に格納されている学習済みモデルのパラメータを、各検出装置200bに配信する(ステップS307)。このデータについても、オフラインで配布するようにしてもよい。
これに対して、検出装置200bでは、図20に示すような処理を実行する。
まず、測定部210は、特定の対象に対して所定の測定を行って、測定結果に基づき、L1次元のベクトルXを生成し、測定データ格納部220に格納する(ステップS311)。このステップは、図17のステップS201と同じである。
抽出部230bは、情報処理装置100bから配信され且つパラメータ格納部260に格納されているパラメータに係る超曲面で、ベクトルXを評価して、対象の固定値ベクトルを生成する(ステップS313)。このステップは、図17のステップS203と同じである。
さらに、抽出部230bは、誤り訂正データ格納部270に格納されている学習済みモデルのパラメータから学習済みモデルを構築して、ベクトルXに対する冗長データを生成する(ステップS315)。
そして、抽出部230bは、固定値ベクトル及び冗長データで誤り訂正処理を行って、最終的な固定値ベクトルを生成する(ステップS317)。
例えば、上で述べた例と同じ対象についてステップS313でX=(0.4,0.6)が得られて、固定値ベクトルZ=(1,0)が得られたとしても、ステップS315で冗長データ(1,0,1,0,1,0,0)又はそれに近いデータが得られれば、誤り訂正処理にて、Z=(1,1)に訂正できるようになる。
なお、ステップS317の後に、図17におけるステップS205のような処理を行うようにしてもよい。
以上のような誤り訂正データを検出装置200bに配布しておくことにより、検出装置200bにおける測定に対するノイズ耐性が高くなる。
[実施の形態3]
第2の実施の形態とは異なる態様で誤り訂正データを生成し、それを用いた誤り訂正処理を行ってもよい。
本実施の形態に係る誤り訂正データ生成部180の処理内容について、図21を用いて説明する。この処理は、例えば、図2のステップS15の前又は後に実行する。但し、L2は冗長性を持たせ長めに設定する。
まず、誤り訂正データ生成部180は、生成された超曲面に基づき、各対象iの固定値ベクトルZiを生成する(ステップS321)。このステップは、図2のステップS13における処理の一部と同じである。
そして、誤り訂正データ生成部180は、固定値ベクトルの各要素iについて、当該要素i以外の要素の値を入力とし、当該要素iの値を教師データとする機械学習を実施し、学習済みモデルを生成する(ステップS323)。例えばニューラルネットワークに基づく所定のモデルを用意して既存のアルゴリズムによって学習を行うことで学習済みモデルを生成する。誤り訂正データ生成部180は、学習済みモデルのパラメータを、第3データ格納部190に格納する。
ここで、固定値ベクトルZi=(a,b,c,d,e,f,g,h,k)(a乃至kは全て1又は0)が得られたとすると、第1の要素「a」を教師データとして、残りの要素「b,c,d,e,f,g,h,k」を入力とする機械学習を行って、学習済みモデルg1を生成する。また、第2の要素「b」を教師データとして、残りの要素「a,c,d,e,f,g,h,k」を入力とする機械学習を行って、学習済みモデルg2を生成する。同様にして、L2=9番目の要素「k]を教師データとし、残りの要素「a,b,c,d,e,f,g,h」を入力とする機械学習を行って、学習済みモデルg9を生成する。
なお、これは一例であって、複数の要素を教師データとし、当該複数の要素の残りの要素を入力とするようにしてもよい。例えば、「a,b,c」を教師データとして、残りの要素「d,e,f,g,k」を入力とする機械学習を行い、「d,e,f」を教師データとして、残りの要素「a,b,c,g,h,k」を入力とする機械学習を行い、「g,h,k」を教師データとし、残りの「a,b,c,d,e,f」を入力とする機械学習を行う、といったように変形することも可能である。要するに、複数の学習済みモデルを生成して、それらを用いて全ての要素を相補的に推測できるようにする。
そして、配信部160bは、第3データ格納部190に格納されている学習済みモデルのパラメータを、各検出装置200bに配信する(ステップS325)。このデータについても、オフラインで配布するようにしてもよい。
これに対して、検出装置200bにおける処理を図22に示す。
まず、測定部210は、特定の対象に対して所定の測定を行って、測定結果に基づき、L1次元のベクトルXを生成し、測定データ格納部220に格納する(ステップS331 )。このステップは、図17のステップS201と同じである。
また、抽出部230bは、パラメータ格納部260に格納されているパラメータに係る超曲面に基づき、ベクトルXから、対象の第1評価ベクトルを生成する(ステップS333)。
本実施の形態では、パラメータ格納部260には、fj()(1≦j≦L2)のパラメータが格納されているので、Y’=(y1,y2,...,yL2)=(f1(X),f2(X),...,fL2(X))を算出し、これを初期的な第1評価ベクトルとして用いる。
さらに、抽出部230bは、誤り訂正データ格納部270に格納されている複数の学習済みモデルのパラメータから複数の学習済みモデルを構築し、第1評価ベクトルに対して当該複数の学習済みモデルを適用して、第2評価ベクトルを生成する(ステップS335)。
例えば、第1評価ベクトルがY’=[0.9,0.1,0.5,0.3,0.8,0.5,0.7,0.1,0.6]が得られたとすると、上の例では、g1(0.1,0.5,0.3,0.8,0.5,0.7,0.1,0.6)、g2(0.9,0.5,0.3,0.8,0.5,0.7,0.1,0.6)、...g9(0.9,0.1,0.5,0.3,0.8,0.5,0.7,0.1)を計算する。そうすると、例えば、第2評価ベクトルY”=(0.8,0.1,0.5,0.3,0.8,0.5,0.7,0.1,0.6)が得られる。
そして、抽出部230bは、第1評価ベクトルと第2評価ベクトルとから、候補ベクトルを生成する(ステップS337)。ここでは、第1評価ベクトルと第2評価ベクトルの同一要素について閾値との差が大きい方を採用するか、同一要素の間の任意の値(予め定められたルールに従って決定される値。例えば実験的に定める。)を採用する関数G2(Y’,Y”)を適用する。
例えば、Y’=[0.9,0.1,0.5,0.3,0.8,0.5,0.7,0.1,0.6]で、Y”=(0.8,0.1,0.5,0.3,0.8,0.5,0.7,0.1,0.6)が得られた場合、異なる値は第1要素だけである。ここでは、0.9と0.8のうち、例えば閾値0.5との差が大きい方である「0.9」を採用する。そうすると、Y'''=(0.9,0.1,0.5,0.3,0.8,0.5,0.7,0.1,0.6)が得られる。
そうすると、抽出部230bは、候補ベクトルY'''の全要素が閾値から所定値以上離れているか否かを判断する(ステップS339)。例えば、各要素について、|要素値-閾値|≧所定値であるか否かを判断する。
この要件を満たしていない場合には、抽出部230bは、候補ベクトルを新たな第1評価ベクトルに設定する(ステップS341)。そして、処理はステップS335に戻って、新たな第1評価ベクトルから新たな第2評価ベクトルを生成する。
一方、ステップS339の要件を満たす場合には、抽出部230bは、候補ベクトルに対して離散化処理(round())を行い、最終的な固定値ベクトルを生成する(ステップS343)。
なお、ステップS343の後に、図17におけるステップS205のような処理を行うようにしてもよい。
以上のような誤り訂正データを検出装置200bに配布する場合でも、検出装置200bにおける測定に対するノイズ耐性が高くなる。
なお、ステップS339の要件を複数回チェックしても要件を満たさない場合には、エラーを出力するなどしても良い。
[実施の形態4]
第2及び3の実施の形態とは異なる態様で誤り訂正データを生成し、それを用いた誤り訂正処理を行ってもよい。
本実施の形態に係る誤り訂正データ生成部180の処理内容について、図23を用いて説明する。この処理は、例えば、図2のステップS15の前又は後に実行する。
まず、誤り訂正データ生成部180は、生成された超曲面に基づき、各対象iの固定値ベクトルZiを生成する(ステップS351)。このステップは、図2のステップS13における処理の一部と同じである。
すなわち、超曲面を表す関数f1乃至fL2の集合F()=(f1(),f2(),...,fL2())を用いて、ベクトルYi=(yi,1,yi,2,...,yi,L2)=F(Xi)=(f1(Xi),f2(Xi),...,fL2(Xi))を算出する。さらに、このベクトルYiの各要素yi,jについてround()を適用することで離散化し、固定値ベクトルZiを生成する。
配信部160bは、この固定値ベクトルZiそのものを誤り訂正データとして、各検出装置200bに配信する(ステップS353)。Ziについては全ての対象i(1≦i≦L3)について各検出装置200bに送信してもよいし、本実施の形態以外の実施の態様において誤り訂正能力が低い対象のみに限定して各検出装置200bに配信し、他の実施の形態の誤り訂正方式と組み合わせても良い。
このデータについても、オフラインで配布するようにしてもよい。
これに対して、検出装置200bでは、図24に示すような処理を実行する。
まず、測定部210は、特定の対象に対して所定の測定を行って、測定結果に基づき、L1次元のベクトルXを生成し、測定データ格納部220に格納する(ステップS361)。このステップは、図17のステップS201と同じである。
そして、抽出部230bは、情報処理装置100bから配信され且つパラメータ格納部260に格納されているパラメータに係る超曲面で、ベクトルXを評価して、対象の候補ベクトルを生成する(ステップS363)。このステップは、図17のステップS203と同じであるが、以下で誤り訂正のための処理を行うので候補ベクトルとして示している。
その後、抽出部230bは、誤り訂正データ格納部270に格納されている固定値ベクトルと候補ベクトルとを比較して、候補ベクトルに最も近い固定値ベクトルを特定して、出力する(ステップS365)。
このような処理を行うようにしても、確実に対象の固定値ベクトルを得ることができるようになる。また、Xi自体を保存するよりデータサイズを削減でき、Xiに特徴が無いようなランダムなデータに対してもデータサイズを削減できる。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、処理フローは一例であって、処理結果が変わらない限り、ステップの順番入れ替えや複数ステップの並列実行を行うようにしてもよい。
なお、上で述べた情報処理装置100及び100b並びに検出装置200及び200bの少なくとも一部は、コンピュータ装置であって、図25に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。なお、HDDはソリッドステート・ドライブ(SSD:Solid State Drive)などの記憶装置でもよい。オペレーティング・システム(OS:Operating System)及び本発明の実施の形態における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
なお、上で述べたような処理を実行することで用いられるデータは、処理途中のものであるか、処理結果であるかを問わず、メモリ2501又はHDD2505等の記憶装置に格納される。
以上述べた実施の形態をまとめると以下のようになる。
本実施の形態の第1の態様に係る情報処理方法は、(A)複数の対象の各々を表す入力ベクトルを取得するステップと、(B)入力ベクトルを包含する空間を複数の対象の各々を表す入力ベクトルが異なる部分空間に含まれるように分割し、且つ複数の対象の各々を識別するユニークなベクトルを生成するのに用いられる複数の超曲面を生成するステップとを含む。
このような性質を有する超曲面を生成して保持しておくことにより、対象にID等が付されていない状況や対象を変更したり加工したりできない状況においても、後の抽出フェーズ(又は検出フェーズ)において、対象から固有のデータを確実に抽出できるようになる。
なお、上記情報処理方法は、(C)生成された複数の超曲面のパラメータを、複数の対象の少なくともいずれかに対して当該対象を識別するユニークなベクトルを生成する装置に出力するステップをさらに含むようにしてもよい。このような装置に超曲面のパラメータを出力しておけば、当該装置で対象を識別するユニークなベクトルを生成できるようになり、当該ユニークなベクトルを基に属性データの抽出その他の後処理を容易にできるようになる。
さらに、上記情報処理方法は、(D)上記ユニークなベクトルの誤り訂正のためのデータを生成し、上記装置に出力するステップをさらに含むようにしてもよい。上記装置における測定におけるノイズにより適切に対処できるようになる。
なお、上で述べた複数の超曲面を生成するステップにおいて、複数の超曲面又は複数の超曲面のうち一定数以上の超曲面が、複数の対象の各々を表す入力ベクトルを当該超曲面で写像した点と閾値との距離が所定値以上離れるように生成されるようにしてもよい。ノイズ耐性が高まる。
さらに、上で述べた複数の超曲面を生成するステップにおいて、複数の超曲面が、互いの類似度が閾値未満であるように生成されるようにしてもよい。分布の偏りを是正できるようになる。
さらに、上で述べた誤り訂正のためのデータを生成する処理が、(d1)複数の対象の各々を表す入力ベクトルを、生成された前記複数の超曲面を用いて評価することで、複数の対象の各々を識別するユニークなベクトルを生成するステップと、(d2)上記ユニークなベクトルの各々に対して、誤り訂正符号による冗長データを生成するステップと、(d3)複数の対象の各々を表す入力ベクトルを入力とし、当該対象についてのユニークなベクトルに対する冗長データを出力とするモデルに対して機械学習を実行し、学習済みモデルを生成するステップとを含むようにしてもよい。既によく知られている誤り訂正符号を活用するものである。
また、上で述べた誤り訂正のためのデータを生成する処理が、(d4)複数の対象の各々を表す入力ベクトルを、生成された複数の超曲面を用いて評価することで、複数の対象の各々を識別するユニークなベクトルを生成するステップと、(d5)複数の対象の各々を識別するユニークなベクトルにおける一部の要素を出力とし、当該ユニークなベクトルにおける上記一部の要素以外の要素を入力とするモデルに対して機械学習を実行し、上記ユニークなベクトルの全ての要素を推測できるように複数の学習済みモデルを生成するステップとを含むようにしてもよい。このようにすれば、対象を識別するユニークなベクトルを相補的に復元するための学習済みモデルが得られるようになる。
さらに、上で述べた誤り訂正のためのデータを生成する処理が、(d6)複数の対象の各々を表す入力ベクトルを、生成された複数の超曲面を用いて評価することで、複数の対象の各々を識別するユニークなベクトルを生成するステップを含むようにしてもよい。対象の個数分のユニークなベクトルが誤り訂正データとして生成されるためデータサイズは大きくなる場合があるが、誤り訂正データ生成のための処理負荷は低い。
本実施の形態の第2の態様に係る情報処理方法は、(A)複数の対象に含まれる特定の対象を表すベクトルを取得するステップと、(B)上記ベクトルを包含する空間を複数の対象の各々が異なる部分空間に含まれるように分割し且つ予め保持している複数の超曲面を用いて、特定の対象を表すベクトルを評価することで、特定の対象を識別するベクトルを生成する生成ステップとを含む。
このように、上記のような性質を有する超曲面のデータを予め得ておけば、対象にID等が付されていない状況においても、対象から固有のデータを確実に抽出できる。そして、生成されたベクトルを用いれば、例えば、対応付けられた属性データなどを取得して、様々な処理を行うことができるようになる。
なお、上記情報処理方法は、(C)予め保持している、誤り訂正のためのデータを用いて、生成された上記ベクトルに対する誤り訂正処理を行うステップをさらに含むようにしてもよい。
例えば、誤り訂正のためのデータが、ある対象を表す入力ベクトルを入力とし、当該ある対象についての、誤り訂正符号による冗長データを出力とする機械学習の学習済みモデルである場合、上で述べた誤り訂正処理が、(c1)特定の対象を表す入力ベクトルから、学習済みモデルにより、誤り訂正符号による冗長データを生成するステップと、(c2)誤り訂正符号に基づき、特定の対象を識別するベクトルと生成された冗長データとから、特定の対象を識別する訂正後のベクトルを生成するステップとを含むようにしてもよい。このような学習済みモデルを用いることで誤り訂正のための冗長データを復元でき、既によく知られている誤り訂正符号を活用して対象を識別するベクトルの誤りを訂正できるようになる。
また、誤り訂正のためのデータが、複数の対象の各々を識別するユニークなベクトルである場合、上で述べた誤り訂正処理が、(c3)複数の対象の各々を識別するユニークなベクトルのうち、特定の対象を識別するベクトルと最も近いユニークなベクトルを特定するステップを含むようにしてもよい。
さらに、誤り訂正のためのデータが、ある対象のためのベクトルにおける一部の要素を出力とし、当該ある対象のためのベクトルにおける上記一部の要素以外の要素を入力とし、ある対象のためのベクトルの全ての要素を推測できるように複数生成された学習済みモデルである場合、上で述べた生成ステップが、(b1)複数の超曲面により入力ベクトルを変換することで得られる第1ベクトルから、上記学習済みモデルにより、第2ベクトルを生成する第1ステップと、(b2)第1ベクトルと第2ベクトルとの要素毎の比較に基づき、候補となるベクトルを生成する第2ステップと、(b3)候補となるベクトルの各要素が、要素毎の離散化処理における閾値との差が所定値以上となるか判定する第3ステップと、(b4)候補となるベクトルの各要素が、要素毎の離散化処理における閾値との差が所定値以上となる場合には、候補となるベクトルの各要素に対して離散化処理を実行するステップと、(b5)候補となるベクトルの各要素が、要素毎の離散化処理における閾値との差が所定値未満である場合には、候補となるベクトルを第1ベクトルとして、第1ステップ乃至第3ステップを実行するステップとを含むようにしてもよい。
以上述べた情報処理方法をコンピュータに実行させるためのプログラムを作成することができて、そのプログラムは、様々な記憶媒体に記憶される。
また、上で述べたような情報処理方法を実行する情報処理装置は、1台のコンピュータで実現される場合もあれば、複数台のコンピュータで実現される場合もあり、それらを合わせて情報処理システム又は単にシステムと呼ぶものとする。