IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 学校法人明星学苑の特許一覧

特開2022-133491圧縮データ検索エンジンを用いた情報処理装置およびその情報処理方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022133491
(43)【公開日】2022-09-14
(54)【発明の名称】圧縮データ検索エンジンを用いた情報処理装置およびその情報処理方法
(51)【国際特許分類】
   G06N 20/00 20190101AFI20220907BHJP
   G06T 7/00 20170101ALI20220907BHJP
【FI】
G06N20/00
G06T7/00 660A
G06T7/00 350B
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2019144872
(22)【出願日】2019-08-06
(71)【出願人】
【識別番号】500132214
【氏名又は名称】学校法人明星学苑
(74)【代理人】
【識別番号】100137969
【弁理士】
【氏名又は名称】岡部 憲昭
(74)【代理人】
【識別番号】100104824
【弁理士】
【氏名又は名称】穐場 仁
(74)【代理人】
【識別番号】100121463
【弁理士】
【氏名又は名称】矢口 哲也
(72)【発明者】
【氏名】大塚 寛治
(72)【発明者】
【氏名】佐藤 陽一
(72)【発明者】
【氏名】姫田 典子
(72)【発明者】
【氏名】小池 久美子
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA02
5L096CA02
5L096EA43
5L096GA55
5L096HA11
5L096KA04
(57)【要約】
【課題】膨大な繰返しや学習の必要な帰納的深層学習の欠点を排除し、より高速且つ低消費電力で確実な推論操作を行うことを可能とする。
【解決手段】汎用機械学習を行うための情報処理装置であって、特長を抽出するフィルタでデータをフィルタリングするフィルタと、学習メモリマット104と、フィルタリングしたデータを検索対象の学習部品とし、学習情報を付与して学習メモリマット104に登録する学習手段と、学習部品データの探索を行って学習情報を抽出する検索手段と、検索学習情報の多数決判定により正解学習情報を出力する手段と、を含む検索エンジンを備える。
【選択図】図29
【特許請求の範囲】
【請求項1】
汎用機械学習を行うための情報処理装置であって、
特長抽出用のフィルタでデータをフィルタリングするフィルタと、
学習メモリマットと、
フィルタリングしたデータを検索対象の学習部品とし、前記学習部品に学習情報を付与して学習メモリマットに登録する学習手段と、
学習部品の探索を行って前記学習メモリマットに登録した学習情報を抽出する検索手段と、
検索した学習情報から正解学習情報を多数決判定する手段と、
を含む検索エンジンを備えたことを特徴とする情報処理装置。
【請求項2】
追加データを学習して、追加の学習情報を登録する手段を更に備えたことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記データを拡散処理して圧縮・伸張する拡散処理手段を更に備えたことを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記拡散処理は、データの偏りを無くす変換処理であることを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記検索手段が、
データを入力するための入力部と、
入力データを分割するための分割部と、
複数の分割メモリにより構成される検索メモリマットと、
前記検索メモリマットに、分割した前記入力データをアドレスにして前記学習メモリマットの登録番号を登録するための検索メモリ書込部と、
分割した前記入力データをアドレスにして前記検索メモリマットをアクセスする検索手段と、
前記検索メモリマットからの読み出し結果により、前記学習メモリマットの前記学習情報を抽出する読出部と、
を備えたことを特徴とする請求項1乃至4のいずれかに記載の情報処理装置。
【請求項6】
前記検索メモリ登録部は、分割した上位入力データと下位入力データをアドレスとして、対応する両方の分割メモリに、前記学習メモリマットの同じ登録番号を登録することを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記上位入力データ又は下位入力データのアドレスが衝突したら、隣の分割データをアドレスとして前記学習メモリマットの登録番号を登録し、登録が終了したら元の前記上位入力データ又は下位入力データに戻り登録を続けることを特徴とする請求項6に記載の情報処理装置。
【請求項8】
前記分割メモリの登録データは、前記学習メモリの登録番号と、登録の有無を識別するためのフラグデータを含むことを特徴とする請求項6又は7に記載の情報処理装置。
【請求項9】
前記検索手段は、分割した前記入力データで対応する全ての分割メモリを同時に読み出し、一致する読み出しデータを学習メモリマットに登録したデータを読み出すアドレスとすることを特徴とする請求項5乃至8のいずれかに記載の情報処理装置。
【請求項10】
特長抽出用のフィルタでデータをフィルタリングするステップと、
フィルタリングしたデータを検索対象の学習部品とし、前記学習部品に学習情報を付与して学習メモリマットに登録するステップと、
学習部品の探索を行って、前記学習メモリマットから学習情報を抽出するステップと、
検索学習情報の多数決判定により正解学習情報を出力するステップと、
を含むことを特徴とする、汎用機械学習を行うための情報処理方法。
【請求項11】
特長抽出用のフィルタでデータをフィルタリングするステップと、
フィルタリングしたデータを学習部品とし、前記学習部品に学習情報を付与して学習メモリマットに登録するステップと、
学習部品の探索を行って、前記学習メモリマットから学習情報を抽出するステップと、
読み出した学習情報の多数決判定により正解学習情報を判定し出力するステップと、
を含むことを特徴とする情報処理方法。
【請求項12】
特長抽出用のフィルタでデータをフィルタリングするステップと、
フィルタリングしたデータを学習部品とし、前記学習部品に学習情報を付与して学習メモリマットに登録するステップと、
前記フィルタリングしたデータを分割して複数の分割入力データとするステップと、
前記分割入力データをアドレスとして前記学習メモリマットの登録番号を登録するステップと、
学習部品の探索を行って前記検索メモリマットから前記学習メモリマットの登録番号を読み出すステップと、
前記検索メモリマットからの読み出し結果により前記学習メモリマットから学習情報を読み出すステップと、
読み出した前記学習情報の多数決判定により正解学習情報を判定し出力するステップと、を含むことを特徴とする、汎用機械学習を行うための情報処理方法。
【請求項13】
請求項5乃至9のいずれかに記載の情報処理装置を用いた顔認特徴抽出方法であって、
元画像の輝度色差情報を取り出して加工する2値化/サイズ調整ステップと、
フィルタを複数作り、これをフィルタリング処理して、学習部品とするデータを抽出するステップと、
前記学習部品とするデータを圧縮拡散して前記学習メモリマットに登録するステップと、
前記学習部品とするデータを圧縮拡散して、これをアドレスとして検索メモリマットに前記学習メモリマットの登録番号を登録するステップと、
学習部品の探索を行って前記検索メモリマットから前記学習メモリマットの登録番号を読み出すステップと、
前記検索メモリマットからの読み出し結果により前記学習メモリマットから学習情報を読み出すステップと、を含む学習情報を検索するステップと、を含むことを特徴とする顔認識特徴抽出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、圧縮データ検索エンジンを用いた情報処理装置およびその情報処理方法に係り、特に、汎用機械学習・推論を可能として高速且つ低消費電力で確実な推論操作を行うことが可能な情報処理装置、情報処理方法、情報登録/抽出方法及び顔認特徴抽出方法並びにコンピュータプログラムに関する。
【背景技術】
【0002】
近年、クラウドコンピューティングの時代となり、情報処理性能が上がり、人工知能(AI:Artifitial Interigent)処理が可能になってきた。人工知能には歴史的に見て2つの方法があり、人間がある目的に応じた論理式あるいは論理手法を繰りしてその目的を果たす方法である。これは機械学習(Machine Learning)と呼び、これにより演繹的推論(Deductive inference)がおこなわれてきたが、人工知能の世界では特定目的に限定されているため、それぞれが特定目的以外に使えず、開発熱が冷めてきた。
【0003】
この欠点を排除するため、汎用的推論手段も考えられるようになってきた。そこで生まれたのが帰納的深層学習(Deep Leraning)であり、その方法論から見ると、帰納的推論(Inductive Inference)であり、現在の人工知能の主流となっている。しかし、帰納的手段(脳であれば一次本能、二次本能的)であるため、出てきた推論の論拠が不明となる。論理的裏付けが期待される用途が多くなり、深層学習は主流からの座を譲る機運になっている。
【0004】
過去の特定目的の機械学習ではない、論拠にもとづいた汎用学習(Super General purpose Machine Learning)手法の確立が緊急の課題(脳であれば高学年小学生から高等教育、それに続く生涯学習)であるとされている。脳のその手法は一事象に対する複数の曖昧フィルタリング(RAS、Reticular Activating System:網様体賦活系)の後、検索手段を用いている。
【0005】
帰納的深層学習にはない検索エンジンの一般的な方法の歴史的方法は特許文献1の連想メモリ(CAM:Contents Addrassable Memory)であり、そのCAM内に記憶されているデータ検索を行う際に、キーデータと呼ばれる検索データが入力される。そして、CAMは、キーデータと同じデータがメモリに記憶されている場合に、そのキーデータが記憶されているメモリのアドレス(番地)を出力する。このときのアドレスは、エントリアドレス(登録番号)とも呼ばれる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第5575997号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、汎用機械学習・推論を可能として、膨大な繰返しによる学習が必要な帰納的深層学習の欠点を排除し、すなわち、1回の学習で十分であり、1回の推論で正解が出ることで、より高速且つ低消費電力で確実な推論操作を可能にすることを課題とする。
【0008】
また、一般的に、特許文献1に記載されたCAMのような検索機能を実現するためには、CAM内の全メモリ空間へのアクセスが必要となり、大きな空間では回路構成が複雑になるだけではなく、消費電力が大きくなるという問題があった。特に、この消費電力が大きくなるという問題は、CAMの規模に伴って大きくなるものであるため、現在では非常に深刻な問題で、Hash関数変換によるソフトウエア処理が一般化している。これはWebによるキーワード検索と同じである。
【課題を解決するための手段】
【0009】
本発明の一形態は、汎用機械学習を行うための情報処理装置であって、特長抽出用のフィルタでデータをフィルタリングするフィルタと、フィルタリング後のデータを学習部品とし、前記学習部品に学習情報を付与して学習メモリマットに登録する学習手段と、学習部品の探索を行って前記学習メモリマットに登録した学習情報を抽出する検索手段と、検索した学習情報から正解学習情報を多数決判定する手段、を含む検索エンジンを備えたことを特徴とする情報処理装置である。
【0010】
ここで、追加データを学習して、追加の学習情報を登録する手段を更に備えることができる。
【0011】
又、前記データを拡散処理して確率的に圧縮・伸長する拡散処理手段を更に備えることができる。
【0012】
又、前記拡散処理で、データの正規分布上の位置を正規分布の中心付近に移動する変換処理とすることができる。
【0013】
又、前記検索手段を、データを入力するための入力部と、入力データを分割するための分割部と、複数のメモリ(分割メモリ)により構成される検索メモリマットと、前記検索メモリマットに、分割した前記入力データをアドレスにして前記学習メモリマットの登録番号を登録するための検索メモリ書込部と、分割した前記入力データをアドレスにして前記検索メモリマットの分割メモリをアクセスする検索手段と、前記検索メモリマットからの読み出し結果(学習メモリマットの登録番号)により、前記学習メモリマットの内容(学習部品と学習情報)を抽出する読出部と、を備えたものとすることができる。
【0014】
又、前記検索メモリ書込部が、分割した上位入力データと下位入力データ(即ち左右データ)をアドレスにして対応する両方の分割メモリに、学習メモリマットの同じ登録番号を登録する構成になっているものとすることができる。
【0015】
又、前記検索手段が、検索入力データを分割し、分割入力データで全ての分割メモリを同時に読み出すようにすることができる。
【0016】
又、分割入力データで対応する全ての分割メモリを同時に読み出し、一致する読み出しデータを学習メモリマットに登録したデータを読み出すアドレスとすることができる。
【0017】
又、対象となる分割入力データのアドレスが衝突したら、隣の分割入力データをアドレスにして隣の分割メモリに登録(学習メモリマットの登録番号を登録)し、登録が終了したら元の分割入力データに戻り登録を続けるようにすることができる。
【0018】
又、前記分割メモリの登録データに、前記学習メモリマットの登録番号と、登録の有無を識別するためのフラグデータを含むようにすることができる。
【0019】
本発明の他の形態は、又、特長抽出用のフィルタでデータをフィルタリングするステップと、フィルタリングしたデータを学習部品とし、前記学習部品に学習情報を付与して学習メモリマットに登録するステップと、学習部品の探索を行って、前記学習メモリマットから学習情報を読み出すステップと、読み出した学習情報の多数決判定により正解学習情報を判定し出力するステップと、を含むことを特徴とする、汎用機械学習を行うための情報処理方法である。
【0020】
本発明の他の形態は、又、特長抽出用のフィルタでデータをフィルタリングするステップと、フィルタリングしたデータを学習部品とし、前記学習部品に学習情報を付与して学習メモリマットに登録するステップと、前記フィルタリングしたデータを分割して複数の分割入力データとするステップと、前記分割入力データをアドレスとして前記学習メモリマットの登録番号を登録するステップと、学習部品の探索を行って前記検索メモリマットから前記学習メモリマットの登録番号を読み出すステップと、前記検索メモリマットからの読み出し結果により前記学習メモリマットから学習情報を読み出すステップと、読み出した前記学習情報の多数決判定により正解学習情報を判定し出力するステップと、を含むことを特徴とする、汎用機械学習を行うための情報処理方法である。
【0021】
又、前記情報処理装置を用いた顔認識特徴抽出方法であって、元画像の輝度色差情報を取り出して加工する2値化/サイズ調整ステップと、フィルタを複数作り、これをフィルタリング処理して、学習部品とするデータを抽出するステップと、前記学習部品とするデータを圧縮拡散して前記学習メモリマットに登録するステップと、前記学習部品とするデータを圧縮拡散して、これをアドレスとして検索メモリマットに学習メモリマットの登録番号(学習部品と学習情報の登録アドレス)を登録するステップと、学習部品の探索を行って前記検索メモリマットから前記学習メモリマットの登録番号を読み出すステップと、前記検索メモリマットからの読み出し結果により前記学習メモリマットから学習情報を読み出すステップと、を含むことを特徴とする顔認識特徴抽出方法を提供するものである。
【発明の効果】
【0022】
本発明によれば、汎用機械学習・推論が可能となり、膨大な繰返しによる学習が必要な帰納的深層学習の欠点を排除し、すなわち、1回の学習で十分であり、1回の推論で正解が出ることで、より高速且つ低消費電力で確実な推論操作を行うことが可能となる。
【図面の簡単な説明】
【0023】
図1】従来型アルゴリズムおよび本発明に係る多数決論理を用いたアルゴリズムを示す図
図2】本発明に係る検索エンジンの基本的な構成を示すブロック図
図3】本発明に係る汎用機械学習の特徴を脳モデルを用いて示す図
図4】本発明で用いられる学習メモリの登録データの構成例を示す図
図5】同じく検索メモリの構成例とデータの登録方法を示す図
図6】同じく検索メモリの検索方法を示す図
図7】同じく検索時に読み出したデータから登録データを絞り込む方法を示す図
図8】同じく拡散処理の有効性を説明する図
図9】同じく拡散処理を説明する図
図10】本発明に係る検索エンジンを用いた画像認識処理の手順を示す図
図11】本発明に係る顔認識の概略フローを示す図
図12】同じく顔パーツデータの作成処理を示す図
図13】同じく学習のためのプログラム処理を示す図
図14】同じく検索(推論)を行うためのプログラム処理を示す図
図15】同じく拡散処理の例を示す図
図16】作成された登録データの例を示す図
図17】同じくフィルタの種類の具体例を示す図
図18】同じくフィルタリングのデータを揃える手段の一例を示す図
図19】同じくフィルタリングの手書き入力数字「1」に対するデータ例を示す図
図20】同じく手書き入力数字「2」に対すデータ例を示す図
図21】同じく手書き入力数字「3」に対するデータ例を示す図
図22】同じく登録データとラベルの例を示す図
図23】同じく学習イメージの例を示す図
図24】同じく推論イメージの例を示す図
図25】同じく手書き入力数字1~3の学習例を示す図
図26】同じく推論例を示す図
図27】同じく検索メモリの動作例を示す図
図28(a)】同じく24ビットの拡散式の一例を示す図
図28(b)】同じく48ビットの拡散式の一例を示す図
図29】本発明を実施するための回路構成の一例を示すブロック図
図30】本発明を実施するための回路構成の他の例を示すブロック図
【発明を実施するための形態】
【0024】
以下、図面を参照して、本発明の実施形態について詳細に説明する。なお、本発明は以下の実施形態及び実施例に記載した内容により限定されるものではない。又、以下に記載した実施形態及び実施例における構成要件には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。更に、以下に記載した実施形態及び実施例で開示した構成要素は適宜組み合わせてもよいし、適宜選択して用いてもよい。
【0025】
先ず本発明の重要なアルゴリズムであり、あいまい検索を主体として入力データの認識処理を行う検索エンジンについて説明する。
【0026】
図1(a)に示される、深層学習の代表格であるCNNの従来型アルゴリズムに対して、図1(b)に示されるように、本発明は、学習情報の多数決論理を用いるアルゴリズムを採用し、あいまいな内容をそのまま処理することを可能とする。この例では、数字の画像データを入力し、それがどの数字であるかを推論している。入力データをA~Dの4つのフィルタを用いて処理し、その処理結果がどの数字を示唆しているかを多数決判定することで、その数字が3であると推論している。
【0027】
本発明の一実施形態は図2に示すように学習メモリマット(単に学習メモリとも称する)10と検索メモリマット(単に検索メモリとも称する)20で構成される、低電力で大規模・高速の検索エンジンを利用する。基本的な機能はCAM(連想メモリ)と同じである。
【0028】
基本的な機能がCAMと同じなので同じ名前を用いると検索エンジンに登録する入力データをキーデータ、登録アドレスはエントリアドレスとなる。しかし、例えば検索エンジンは前記2種類のメモリから構成され、入力データは登録目的により異なるデータ形式となるため、ここでは学習メモリの登録アドレスのことを登録番号(エントリアドレス)、検索メモリの入力データのことをキーデータと呼ぶことにする。
【0029】
検索エンジンに登録する入力データは特長抽出用のフィルタでフィルタリングした後、学習部品となる。したがって、入力データを加工して学習メモリに入力にするため、重要な概念として、元データはここで特徴データに変換され、元データは登録されないだけでなく元データはその後の処理工程から消滅する。
複数の、フィルタを用いるため学習部品のデータ長は一般に異なるデータ長となる。このため学習部品のビット長を合わせた後、データの偏りを取り除く拡散処理を行う。図4に示すように学習メモリには、後述する拡散処理をした後の学習部品(本体データ)と学習情報を付加したデータを学習メモリに登録する。また、図5に示すように検索メモリは複数の分割メモリ(図1では、n個の分割メモリ)により構成されており、その分割メモリの1つに学習部品から作成するキーデータを用いて学習メモリの登録番号を登録する。検索メモリの登録では後で述べる左右登録を行うため検索メモリを構成する複数の分割メモリの2つに同じ登録番号を登録する。検索メモリのキーデータは学習部品から拡散処理により生成する。検索メモリに登録できるデータ(学習メモリの登録番号)の総数は分割メモリのワード数と分割メモリの個数により決まる。分割メモリの登録アドレスはキーデータを分割したデータ(分割キーデータ)であり、各分割キーデータにはその分割キーデータ専用の分割メモリが割り当てられる。このため、登録するデータの最大数に応じてキーデータ長が決まる。
【0030】
本発明の一実施形態では80ビットから200ビットの学習部品の長さを合わせた後、拡散処理によりキーデータと学習メモリの登録データを作成する。キーデータ長は分割メモリの数と分割メモリのワード数に対応したアドレスビット(分割キーデータ)の積で表される。分かりやすくするため、例えば、キーデータを6区分に分割し、1区分20ビットとした場合、キーデータ長は120ビットとなる。分割メモリのワード数は、1区分が20ビットであるから、1Mとなる。検索メモリに実際に登録できるかどうかは別にして、登録番号が登録可能な最大の登録空間は、1Mワード×6区分となる。実際に登録できる登録番号の最大登録数は分割メモリのワード数 ×(分割メモリの数―3)が目安となる。
【0031】
キーデータを一定の長さで分割し、その分割データを用いて登録番号を登録する方法を用いるとアドレス(分割データ:この例では第1区分の20ビット)の衝突(同じ分割データを用いて既に登録済み)が発生した場合に、隣のメモリに登録先を移すのであるが、その際は隣の分割データ(この例では第2区分の20ビット)を用いることになる。
【0032】
ここで、nワードのメモリにデータを1個登録する場合の登録確率がP=1/nとすると、m回繰り返した場合にnワードのメモリに登録されない確率(アドレスが衝突する確率)は、(1-1/n)となり、これはnが十分大きい場合(例えばn=1M)に(1/e)m/nとなる。そこで、1Mワードの分割メモリを用いて419,430(1M×40%)個の登録番号を登録しようとした場合(m=1M)、先の確率を用いた計算によると、第1列目の分割メモリへの登録数は345,694個、第2列目の分割メモリへの登録数は71,204個、第3列目の分割メモリへの登録数は2,529個、第4列目の分割メモリへの登録数は3個となる。第4列目の分割メモリへの登録数は3個に過ぎず、本例の様に登録個数が大きい場合は、第4列目の分割メモリは不要と考えてよい。
【0033】
この目安は左右登録の場合は左右の片側分となる。したがって、この例で左右登録を行うためには、合計6列の分割メモリが必要となる。この目安の式は最大登録数を分割メモリのワード数単位で算出しており、分割数が3の場合は上式ではゼロになってしまうがこれは最大登録数がワード数単位で小数点以下の値になることを意味している。この目安から算出できる最大登録数が学習メモリに登録出来る登録番号の大きさを決めることなる。したがって、分割メモリのワード数を変えずに登録データの数を増やす場合は検索メモリのキーデータの分割区分を例えば8区分に増やし、キーデータ長を160ビットのように変更する必要がある。
【0034】
検索メモリへの登録は第1区分の分割キーデータをアドレスにして第1列目の分割メモリに学習メモリの登録番号を登録しこの登録を繰り返す。しかし、キーデータとしてはユニークであっても分割キーデータで見るとユニークではなくなるため、分割キーデータの衝突が発生することになる。この場合は第2区分の分割キーデータをアドレスとして、第2列目の分割メモリに学習メモリの登録番号を登録する。登録が終わったら第1区分に戻って登録を続ける。左右登録では第1区分の登録と同時に第6区分側についても同様な方法で、同じ登録番号の登録を行う。例えば第6区分の登録時に分割キーデータが衝突した場合、第5区分の分割キーデータを用いて隣の第5区分の分割メモリに第1区分と同じ登録番号を登録する。
【0035】
次に入力した入力データをフィルタリングし、複数の学習部品を作成し、この学習部品を用いて、学習メモリの学習情報を読み出す推論について説明する。
【0036】
推論では夫々の学習部品からキーデータを作成し、図6に示すようキーデータで検索メモリを検索し、検索結果を登録番号として、それに基づき学習メモリをアクセスし学習情報を読み出す。読み出した複数の学習情報を多数決判定し正解情報を抽出することになる。
【0037】
この一連の動作で学習と異なるのはキーデータを用いた検索メモリの検索方法である。図7に示すようにキーデータを分割した分割キーデータを用いて全分割メモリを同時に読み出す。このため読み出したデータは登録データではあるもののどれが読み出し対象の登録番号か分からない。この場合に左右登録が有効になる。
【0038】
2つの分割メモリにランダムデータを登録した場合、登録データが一致する確率は登録データ数の2乗に比例するため、登録データ数が大きければ意図的に同じデータを同時に登録しない限り一致する確率は極めて小さい。この原理を用いたのが左右登録である。左右登録では、図5に示すように、分割メモリに対して、左側の第1区分からの登録と右側の第8区分からの登録により、同じ登録番号の登録を行う。左右登録の場合、複数の読み出しデータの中で一致データが読み出し対象の登録番号となる。一致するデータがなければ読み出し対象の登録番号は無いということになる。この方法を用いれば1回の読み出し動作で読み出し結果が得られることになる。この検索メモリ20には、これらステップを制御する制御回路も備えている。
【0039】
検索メモリを用いずに学習メモリだけだと最悪、全ての登録番号をアクセスしなければならないが、本発明の検索エンジンでは、1回のアクセス時間(上記の例では登録エントリ数分の1)となる。Hash関数変換によるソフトウエア処理はこれと似ているが、データを完全に登録する場合、本発明に比べ分割メモリに相当するメモリの数が2倍以上なり、しかも演算が必要であるという欠点を有するため、本発明の検索エンジンの検索アクセス速度は10倍から1000倍速い。
【0040】
上記操作は学習部品に対応するキーデータ毎に一回行うことになり、推論処理ではこの操作を学習部品の数だけ繰り返えせばよく、追加キーデータがいくらあっても、その都度必要に応じて追加学習が行われれば、推論範囲が広がる。従来の深層学習と学習アルゴリズムと追加学習ができることが本質的に異なる。しかし過去の検索エンジンは入力データと学習メモリに登録されている学習部品の部分の完全な一致(Exact Match)が要求されるため、学習メモリには拡散処理無しの入力データと同じ形式のデータを登録する必要がある。このため、学習メモリのメモリ空間が入力データの大きさに応じて大きくなるという問題が発生する。例えば、画像(赤色、緑色、青色で表されるRGBデータ)や音声データのように3次元、3次元展開する多ビットキーデータとなる場合は扱うキーデータのビット数が大きくなり、それにつれて学習メモリが大きくなり、適切な方法とならない。例えば1366×786ドットの画像であればカラー1ドットが24ビットのため、画面1枚のビット数は25,768,224ビットとなり、64×64ドットを1単位としても、98,304ビットとなり拡散処理無しの入力データはとてつもない大きさとなる。
【0041】
次にフィルタリングとフィルタリング後の検索エンジンの入力データである学習部品について説明する。フィルタリング前の加工されていない画像(含む動画)や音声(時間軸区分が追加され、より複雑系)などは、非常に多くのビット数を含むものである。ここでは加工されていないデータのことを生データと表現し、この提案での加工後のデータを前処理データと呼ぶ。加工しない生データ群は一般に不揮発メモリであるSSDなどのストレージに保存される。ある目的の操作、たとえば自動運転(ADAS、Automatic Drive Assitant System)などが特定されれば、それの対象となる生データ群が抽出されるが、グルーピング格納などが一般的に行われているため、単純に抽出され、学習、推論を行う対象とする生データ群となり、DRAMなど、より高速処理可能なメモリに格納される。
【0042】
一つの生データを取り上げる。フィルタリング処理可能とするため、たとえば画像であれば、288ドット×288ドット程度の大きさに標準化し、この標準化した画像をRGB画像に分解し、夫々の分解画像を例えば4ドット×4ドットあるいは3ドット×3ドット単位で分割し、分割した画像の最大値あるいは平均値などで代表させるPooling処理のような特徴抽出に有効な荒い「ぼかし処理」を行った後、画像の分割処理を行い、各分割画像に対しさらに詳細な特徴抽出に有効な「ぼかし処理」を行う。この荒いぼかし処理までを前処理と呼び、詳細な特徴抽出に有効な「ぼかし処理」をここではフィルタリング処理と称することにする。このフィルタリング処理後のデータが、学習メモリと検索メモリの入力データである学習部品である。学習部品は拡散処理により検索エンジンの登録メモリに応じて適当なビット長に変換される。検索メモリの登録アドレスとなる拡散後の学習部品をここでは、キーデータと呼ぶ。
【0043】
この学習部品を作成し検索エンジンに登録する処理は、図1(a)に示されるような深層学習法の1つである畳み込みニューラルネットワークであるCNNにおいて、畳み込みとプーリングを繰り返しながら入力データの特徴を捉えその特徴をウエイトあるいはフィルタと称するデータに反映させ、最終的な学習済みのウエイトあるいはフィルタと称するデータを作成するのと同じ目的で行う処理である。
【0044】
荒いぼかし処理のなかにはRGBデータから明暗画像を作成し、適当な閾値を用いて明暗画像を「0」と「1」の2値画像に変換する操作も含まれる。フィルタリング後の学習部品群に拡散処理を行い検索メモリと学習メモリの登録データを作成し、その学習部品群で検索メモリと学習メモリを検索するだけなので、低消費電力で高速処理が可能となる。高速処理についてはソフト対応のHashアルゴリズムに比べ10倍から1000倍の高速検索が可能である。
【0045】
検索メモリの読み出しデータは学習メモリ10の登録番号となるため、このデータで学習メモリ10をアクセスし、学習情報を読み出すことになる。学習情報と一緒に登録される学習部品は2重登録不可の条件から、登録時にユニークであるかどうかの確認が必要で、追加登録を行う場合に不可欠なデータとなる。ただし、追加登録を行わない推論処理のみの場合はこの学習部品の部分を学習メモリから削除することが可能である。
【0046】
このため、同じ学習部品から拡散処理により作成するデータである検索メモリのキーデータより、学習メモリに登録する学習部品のビット長を小さくすることができる。例えば検索メモリ20のキーデータ長が120ビットに対し、3分の1の40ビット数にすることができる。
【0047】
<拡散処理>
拡散処理は、偏りのあるデータを、必要に応じて元データの圧縮・伸張も行い、データのどの部分にも確率論的に同じ情報が含まれるようにする処理である。本例の拡散処理には、BCH(Bose-Chaudhuri- Hocqenghem)を用いる。BCH符号は代表的な誤り訂正符号で元データと検査符号(検査ビット)から成り、1ビットでも元データと異なれば訂正することができる。この1ビットの違いを検出するのが検査ビットである。これは誤りがないとすれば元データと検査ビットが1対1に対応することを示しており、1対1に対応という観点からみれば元データを検査ビットに置き換えることができることを表している。元データの最大ビット長はnをパラメータとすると、2 - 1で表せ、検査ビットは訂正できる誤り数をtとすると、n×t ビットで表せる場合が多い。しかも、元データの最大ビット長は2 - 1であるが、上位ビットから順に“0”にすることで、元データのビット長を“0”の部分を除いたビット長として扱うことができる。この性質を利用すれば、nとtを選ぶことで任意の元データのビット長からの任意のビット長への拡散ができることになる。
【0048】
拡散処理前の入力データ(BCH符号の入力データ)のビット数をk、拡散処理後のビット数(いわゆるBCH符号の検査ビット)をmとすると総ビット数qは次式のようになる。
q = k + m
このqは2 - 1かこの値より小さくなる。
拡散処理前のkビットの入力データを
ak-1 、 ak-2 、 ・・・ a1、 a0
拡散処理後のmビットの出力データを
cm-1 、 cm-2 、・・・ c1、 c0
とすると、 このq ビットのデータは次の多項式F(x)で表すことができる。
F(x) = ak-1 xq-1 + ak-2 xq-2+ ・・・ + a1 xm+1+ a0 xm
+ cm-1 xm-1 + cm-2xm-2 + ・・・ + c1 x + c0
この式はさらに次のように置くことができる。
= xmP(x)+R(x)
ここで、生成多項式と呼ぶm次の多項式G(x)を導入すると、F(x)がBCH符号であれば常にG(x)で割り切れ次式が成り立つ。
F(x)=Q(x)G(x)
これを書き直すと
xmP(x)=Q(x)G(x)+R(x)
となる。(なお、上述の式はガロア体上の演算になるので、移項操作による符号の変化は考慮不要である)
この式から、 入力データであるxmP(x) をG(x)で割った余りが出力データR(x)であり、出力データを算出するには生成多項式が必要であることがわかる。
【0049】
BCH符号では1つの誤り訂正毎に最小多項式 Mi(x)が定義され、誤りの訂正数に応じて最小多項式を掛け合わせたものが生成多項式G(x)である。
拡散式のビット数は最小多項式 Mi(x)のxのべき数の最大値(次数)を掛け合わせたものになる。従って、生成多項式G(x)を求めるにはまず、最小多項式 Mi(x)を算出する必要があることが分かる。
【0050】
<最小多項式Mi(x)の算出>
ガロア体上の多項式F(x)では
(F(x))2 = F(x2)
が成り立つ。この関係を満たす根を共役根と呼ぶ。
ガロア体も一般の多項式と同様因数分解ができこれ以上分解できないxのべき乗(データの分割単位)に対応した既約関数が存在する。この既約関数を原始多項式と呼ぶ。
【0051】
最小多項式の算出はデータの分割単位ごとに定義されるガロア体の元を同じ共役根のグループ毎に分類することから始める。
【0052】
例えば分割単位を6ビットとすると、このガロア体の元はとα0、α1、α2、α3、・・・、α63 のようになる(ガロア体の多項式で表現では、xを0か1の2つの元しかない形式を用いるのが一般的である。この形式で表されるガロア体をGF(2)と表記する。例えば、元の数が26-1で表されるガロア体を拡大ガロア体と呼びこの場合はGF(26)のように表す)。
【0053】
これを共役根のグループとして分類すると、 α0 は除き α1 から始めると、
1)2= (α2) 、 (α2)2= (α4) 、(α4)2= (α8) 、・・・
となり、1から始まる共役根をグループをM1と呼び、αのべき数で表すと次のようになる。
1、2、4、8、16、32、64(=1)、128(=2)、・・・
同様にして3から始まる共役根をグループをM3と呼び、べき数で表すと次のようになる。
3、6、12、24、48、96(=33)、192(=3)、・・・
最小多項式は各グループの共役根の式を掛け合わせたものであるから次のようになる。
M1(x) = (x-α1) (x-α2) (x-α4) (x-α8) (x-α16) (x-α32)
M3(x) = (x-α3) (x-α6) (x-α12) (x-α24) (x-α33) (x-α48)



これらの式は原始多項式を適用することで、αの項は完全に消えると言う特徴がある。
Mi(x) の式を直接展開ようとする複雑な多項式になり、算出が困難になる。
そこで、下記の方法を用いる。
【0054】
手順(1)
Mi(x) はiが小さいところでは 2nの場合はn個の式の積で表せ、n=6の場合は下記のように6個の式で表される。
Mi(x) =(x+αA)(x+αB)(x+αC)(x+αD)(x+αE)(x+αF
6個の式で表される場合は下記のように式を2つずつの積に分解する。
P 1 (x) =(x+αA)(x+αB) = x2+(αAB)x+αA+B
= x2+(αAB)x+ ( a5α5+a4α4+a3α3+a2α2+a1α+a0 )( b5α5+b4α4+b3α3+b2α2+b1α+b0 )

P 2 (x) =(x+αC)(x+αD) = x2+(αCD)x+αC+D
= x2+(αCD)x+ ( c5α5+c4α4+c3α3+c2α2+c1α+c0 )( d5α5+d4α4+d3α3+d2α2+d1α+d0 )

P 3 (x) =(x+αE)(x+αF) = x2+(αEF)x+αE+F
=x2+(αEF)x+ ( e5α5+e4α4+e3α3+e2α2+e1α+e0 )( f5α5+f4α4+f3α3+f2α2+f1α+f0 )
【0055】
手順(2)
ここでは、求めたP 1 (x) 、P 2 (x) 、 P 3 (x) を2つずつ掛け合わせ最小多項式を算出する。
この場合αの次数が6以上になったら原始多項式を用いて5以下になるようにする。
GF(26)の原始多項式は
x6+ x + 1
のようになる。この式にGF(26)の元αを代入すると
α 6 + α + 1= 0
となり、
α 6 = α + 1
となる。
P 1 (x) 、P 2 (x) 、 P 3 (x)の積で表される最小多項式Mi(x)の計算過程で現れるαの次数は5以下の次数で表されることになる。
最小多項式Mi(x)は共役根の算出表から明らかなように共役根の数により次の3つの場合が考えられることになる。
Mi(x) = P1 (x) P2 (x) P3 (x)
Mi(x) = P1 (x) P2 (x)
Mi(x) = P1 (x)

生成多項式は最小多項式 Mn を掛け合わせることにより求められる。
【0056】
<GF(26)の生成多項式>
生成多項式G(x)は下記に示すように拡散出力のビット数に合わせて最小多項式Miを掛け合わせることにより求められる。各拡散出力を得るための生成多項式G(x)は次のようになる。
6ビットの拡散出力を得る生成多項式: G(x)=M1
12ビットの拡散出力を得る生成多項式: G(x)=M1×M3
18ビットの拡散出力を得る生成多項式: G(x)=M1×M3×M5
24ビットの拡散出力を得る生成多項式: G(x)=M1×M3×M5×M7
27ビットの拡散出力を得る生成多項式: G(x)=M1×M3×M5×M7×M9
また、2nBCH符号では符号長に下記の制約がある。

入力ビット+出力ビット ≦ 2n-1
この制約から上記の(1)~(5)のビット数以外の拡散処理を行う場合は、
26以外のBCH(例えば、28のBCHを用いることになる。
(拡散入力=拡散出力=27ビットの場合、BCHの符号長は拡散入力+拡散出力=54ビットとなり、26-1=63に近い値となり、27ビットが上限値となる。)
そして、生成多項式を求めると、例えば24ビット拡散の生成多項式G(x)は以下になる。
G(x)=x24+x23+x22+x20+x19+x17+x16+x13+x10+x9+x8+x6+x5+x4+x2+x+1
この24ビット拡散の生成多項式G(x)により39(63-24)ビットの入力データを24ビットの出力データとして拡散することができる。
【0057】
図28(a)に、上記生成多項式より求めた拡散式の一例(39ビット入力、24ビット出力のもの)を簡易表現で示す。この拡散式により、入力データ(a38 、 a37 、 ・・・ a1、 a0)から拡散処理後の出力データ(c23、 c22 、 ・・・ c1、 c0)を求めることができる。同図は、例えば拡散処理後の24番目のビットの出力データc23が入力データ(a38 、 a37 、 ・・・ a1、 a0)から以下の式で求められることを示している。
c23=a38+a37+a35+a33+a32+a30+a29+a27+a24+a23+a22+a21+a20+a19+a18+a17+a16+a15+a14+a11+a10+a9+a8+a6+a4+a2+a0

ここで、式中の+はEOR演算を表わしている。
EOR演算では、
0+0=0
0+1=1
1+0=1
1+1=0
となるが、難しく考えずに通常の加算を行い、偶数なら“0”、奇数なら“1” と置いても結果は同じである。
【0058】
また、図28(b)に、48ビット入力、48ビット出力時の拡散式を同様に示す。
【0059】
このような拡散処理を用いることで、元データを再現性のある任意のビット数に変換することが可能となる。
【0060】
本発明の一実施形態の説明に戻ると、学習メモリ10に登録するデータ長は拡散処理後の学習部品+学習情報となるため、たとえばDDR3のメモリインタフェースであれば40ビットのキーデータに24ビットの学習情報を追加し64ビット構成にすることができる。
【0061】
前記のように、複数のフィルタによるフィルタリングを高速かつ低消費電力で行い、多ビットデータを拡散処理により圧縮することで単純化し、学習部品と学習情報の学習メモリマットへの登録(これを学習と呼ぶ)を行い、目的キーデータの検索(これを推論と呼ぶ)を実現するために、本発明者らは、新規な情報処理装置を検討した。
【0062】
図3に本発明に係る汎用機械学習のアルゴリズム概念を示す。
まずフィルタリング処理を説明する。脳の網様体賦活系(RAS)と概念は同じであるが、アルゴリズムが異なる。CNN(畳み込みニューラルネットワーク)の畳み込み処理と同じことを、畳み込み処理を用いずに入力データから直接特長を抽出する特長抽出に特化した複数のフィルタを用いて行っている。この特徴抽出動作をフィルタリングと呼んでおり、フィルタリングは一回だけである。しかも抽出した結果を単純化し、検索エンジンに登録するだけである。推論はフィルタリング後の複数個のデータで検索エンジンを検索し登録の可否をチェックする。検索時のヒット数が設定した閾値を超えていれば登録されているデータと認識し、超えていなければ登録されていないデータと認識する。このような構造から本発明の検索エンジンでは脳と同じように追加学習が1回の作業で可能である。
【0063】
CNNの動作では、フィルタに論拠があるが、畳み込み演算で全ての関連付けがなされる結果、論拠についたフィルタリング結果は合成され、論拠が消失する。
【0064】
本発明の論拠の残る理由は、図3に示されるように、例えば画像処理の場合は目的に合う特徴が抽出できる程度まで、高精細画像の精細度を落とす。このときに、荒いフィルタリングを実施する。例えば、輝度、画像のRGB変換、輝度・色素変換、画像圧縮、回転、画像データの2値化処理、画像分割等の処理を必要に応じて行うが、人間がフィルタリング実施の判断基準となっている。ここに論拠が埋め込まれている。さらに詳細フィルタリングを行うことで図11のように、フィルタを適切に区分した画像別に100から1000部品(これが検索エンジンの入力データとなる学習部品である)が作られる。それらは、拡散処理によるデータの圧縮を行うことで120ビット程度の検索メモリのキーデータと40ビット程度の学習メモリ用の学習部品に変換され、夫々のメモリに登録される。学習メモリの登録では、学習部品以外にこの部品の特徴を表す学習情報が追加され、登録される。推論時の検索対象は学習情報であり、検索メモリの検索結果は通常1回の検索で1個の学習メモリの登録番号が読み出されるが、非常に低い確率で複数個検索されることがある。この検索された複数の検索結果を本発明では正しい検索データとして扱う。この複数個の学習情報を正しい検索データと見做しても発生率が少なく、学習情報の多数決判を行うので問題ないため、複数個の検索結果を正しい検索結果と認める扱いとする。
【0065】
学習メモリ10に登録される部品数は、1枚の登録画像に対し1000部品必要だとすると、600枚の画像を登録する場合、0.6M個となり、登録番号で現すと0.6Mエントリ(アドレスビットで表すと20ビット)となる。部品1個当たりのデータ長は拡散後の学習部品40ビット+学習情報24ビットの64ビットで表すことができる。この学習メモリを検索する検索メモリのキーデータは前記の120ビットで十分である。この部品登録動作が学習そのものであり、1枚の画像登録で生じる1000個の部品を登録することで1回の学習を完了したことになる。
【0066】
当然学習とは生涯学習であり追加学習が常に必要なもので、登録部品データが独立因子部品であるため、登録する学習部品データが増加するだけであり、CNNで必要となる追加学習に起因する再計算は不要である。また、その部品データは従来登録データと重なる場合もあるが、推論は多数決処理のため、それを気にすることはない。
【0067】
ここでは、画像認識を例にとって説明したが、言語理解や動画などあらゆるアーキテクチャに適応できることは言うまでもない。
【0068】
検索、すなわち推論は登録と同じように前処理を行い、フィルタリング処理により学習部品を作成する。その後、拡散処理により120ビットのキーデータを作成する。このキーデータで検索メモリを検索し、学習メモリの登録番号を読み出す。この登録番号を用いて学習メモリをアクセスし学習情報を読み出す。この操作を部品毎に行い、学習情報を読み出す。学習情報の登録に重なりがあるため読み出した学習情報の多数決判定する、という手段で正解推論に達する。このような方法は今までの世の中のシステムアーキテクチャとしてなく、本発明でこれを実現する。
【0069】
次に、検索エンジンの基本動作ついて説明する。前述のように、フィルタリング後の学習部品の長さは一般に異なる。このため学習部品のビット長を合わせるには拡散処理が必須である。ここでは話を簡単にするため検索エンジンの入力データは拡散後の入力データとする。しかも、検索メモリのキーデータと学習メモリの本体データ(学習部品)のデータ長は一般に異なるがこの例では同じとする。
【0070】
例えば80ビットの学習部品1k個登録する場合は次のようになる。この場合の学習メモリ10の登録データの構成は、図4のように学習部品である本体データとA~Nの学習情報から成る。学習情報は登録数が少ない単純構成の場合は、“B”という情報を登録したければ、A~Nまでの情報のうち、学習させたい情報を“1”とし、それ以外の部分を“0”としたデータになる。登録数が多い場合はこの領域に学習対象物が認識できる部品番号等を割り当てる等の対応が必要である。
【0071】
登録番号(エントリアドレス)は通常のメモリアドレスに対応しており、任意のアドレスを指定することができる。つまり、グルーピングしたあるデータは、ある登録番号から順に登録するなどの登録ができることになる。
【0072】
なお、本体データ(学習部品)はユニークであることが必要であり、画像認識の場合、登録する画像データを認識できれば良く画像データそのものである必要はない。そこで、登録する本体データには画像データを後で述べる拡散処理により圧縮したデータを用いる。1k個のデータを本発明の検索エンジン(学習メモリ+検索メモリ)に登録する場合、学習メモリには任意の登録番号を選択し1k個登録する。
【0073】
次に検索メモリ20の構成とデータの登録方法を説明する。最大1k個のデータを登録する場合の検索メモリ20の構成と登録データを示すと図5のようになる。80ビットの学習部品をそのまま検索メモリのキーデータとし、10ビット単位で分割すると、8個に分割でき、検索メモリの構成は1kワード(分割単位が10ビットなので 210 = 1kワード となる)の分割メモリ8個から構成されることになる。分割メモリのワード数は何ワードでも良いが、登録効率から1kワードとしている。左右登録の左側登録だけに着目すると、分割メモリ4個で1k個のデータが登録できるので、左右登録を実施すると80ビットの学習部品をそのまま検索メモリのキーデータとして使用できる。
【0074】
データの登録は、分割したキーデータ(分割キーデータ)をアドレスとして学習メモリの登録番号を登録するが分割キーデータのアドレスが衝突したら隣の分割キーデータをアドレスにして、隣の分割メモリに登録する。登録が終了したら元の分割キーデータに戻り登録を続ける。このような登録を分割したキーデータの左右から行う(左右登録)。
確率的に1k個のデータ同士のデータが同じデータになる確率は 1/M であるから意図的に同じデータを登録しない限り同じデータが現れる確率が極めて小さいことが分かる。分割メモリの登録時に発生する衝突の有無は、分割メモリの登録データである学習メモリの登録番号にフラグデータを付加することで記録される。登録したら“1”が立ち、未登録状態では“0”のフラグを付加すると、登録する分割キーデータで検索しフラグを見たとき、フラグが“1”ならば衝突ということになる。
【0075】
次に検索メモリ20の検索方法を説明する。図6に例示する如く、検索データ(キーデータ)を10ビット単位で8個に分割し、分割データで8個の分割メモリを全部同時に読み出す。分割メモリの登録データは学習メモリ10の登録番号である。
【0076】
データが登録されていれば(左右から分割メモリに学習メモリ10の同じ登録番号を登録している)ので8個の読み出しデータの中に一致するデータがある。一致したデータがあれば、それが検索データ(学習メモリの登録番号)で、無ければ登録データは無いと判断する。
【0077】
次に、図7を参照して、検索時にキーデータ(全分割キーデータ)で対応する分割メモリを全部同時に読み出す。検索メモリの登録時に分割キーデータを用いて左右から同じ学習メモリ10の登録アドレス(登録番号)を登録しているので、読み出しデータに同じデータがあれば、そのデータがキーデータに対応する学習メモリの登録番号になる(登録データの絞込み)。
【0078】
左右登録は検索メモリから読み出される複数の読み出しデータの中から入力したキーデータに対応する登録データを絞り込む方法で、未登録データ同士が一致する確率が分割キーデータのビットが大きくなるほど小さくなるため大規模データの検出に有効である。 入力データ(キーデータ)そのものがユニークであっても、入力データ(キーデータ)を分割するためデータの偏り(例えばデータの3/4が連続“0”のような場合)があると、分割キーデータで左右から登録を行っても検索メモリ20に正しくデータが登録されないという問題が発生する。
【0079】
しかし、この問題は拡散処理を行うことで完全に取り除くことができる。偏ったデータは確率的な観点から見ると、図8に例示する如く、正規分布の端に位置するデータと見ることができる。従って、登録データの正規分布上の位置を、再現性のある変換処理により正規分布の中心付近に移動できれば偏りによる問題は解決できる。拡散処理は登録データの正規分布上の位置を正規分布の中心付近に移動する変換処理と見ることができる。
【0080】
図8に示した如く、偏りデータの位置を正規分布の中心付近に持ってゆくと、0と1の数がほぼ同じ数になる。つまり、どの分割データにも確率論的に同じ情報が含まれるようになる。これは水に溶ける濃い色の液体をバケツの水に入れかき混ぜると水の色が薄い同じ色になる。しかし、バケツ全体で見ると濃い色に含まれている色素そのものの増減はないこれと同じ意味から拡散処理と呼んでいる。また、薄い水を煮詰めれば自由に色を変更できる。これから、拡散処理を用いることで確率論を満たす範囲で元データのビット長を伸長したり圧縮したり自由に変更可能である。
【0081】
拡散処理は、図9に示す如く、数学的には元データが存在する空間から拡散処理により得られるビット長空間への1対1写像である。このため、拡散処理を行うことで単に元データの偏りを無くすだけでなく、元データを再現性のある任意のビット数に変換することができる。ただし、この変換は元データから任意のビット数への不可逆的なものである。このため、学習メモリおよび検索メモリに記憶された情報をリバースエンジニアリングにより得ることができたとしても、それらから拡散処理前の情報を復元することはできない。これは、秘密保持の観点において有利に作用する。
【0082】
従って、拡散処理を学習メモリ10あるいは検索メモリ20の登録あるいは検索する前の入力データに適用すると、学習メモリ10や検索メモリ20の登録ビット長を自由に設定することができる。
【0083】
画像データの処理では、フィルタリング後の学習部品に変換しても学習部品のビット長が数百ビットから数千ビットになる。この学習部品に拡散処理を行うことで実用的なビット長に変換できる。例えばビット長が数百ビットの学習部品を拡散処理により40ビットに変換し、このデータを1M個登録する場合について考えると次のようになる。
【0084】
例えば220ビットの学習部品のビット長を40ビットに圧縮すると、圧縮後の登録データの組み合わせ数は
40=(210
=(1K)=1T
から1Tになる。この組み合わせに、1M個のデータを対応させると、1M個のデータが衝突する確率は
1M/1T=1/1M(これは平均確率で、実際に衝突する確率は1/(eM))
となる。学習部品の最大登録個数が8k個の場合、衝突個数はさらに上記のおよそ百分の一になる。
【0085】
次に、画像データ(複数の学習情報に分解される)が検索エンジンに登録されているか否か、登録されていれば、登録されている複数の学習情報から画像データを推論する方法について説明する。
【0086】
話を簡単にするため検索対象の学習部品のビット長を図4の本体データに合わせて80ビットとする。実際には拡散処理を行うことで、検索メモリ20や学習メモリ10の検索あるいは登録ビット長は自由に変更可能である。
【0087】
図4の説明に合わせて学習部品(本体データ)の最大登録数を1k個とし、登録データの種類(例えば人ならAさん、Bさん、動物なら、犬、猫、鳥等)を14種とすると、学習メモリについては80ビットの学習部品と14ビット(A~N)の学習情報を登録し、検索メモリのキーデータ(登録データ)は80ビットで検索メモリには1kワード×11ビットの分割メモリ(分割キーデータ10ビット、登録の有無を識別するフラグ1ビット)8個に登録番号を登録することになる。なお、確率理論から、1k個のデータを検索メモリに登録するには左右登録を行った場合8個の分割メモリが必要であることは上述の通りである。
【0088】
画像データの推論は画像データから学習部品(入力データ)を作成し、作成した学習部品を用いて検索メモリを検索し(分割キーデータで8個の分割メモリを同時に読み出し一致データを抽出する。この一致データが検索データになる。一致データが無ければ、この段階で登録されていないことが分かる。)、検索したデータを学習メモリの登録番号として学習メモリをアクセスし、学習情報を読み出し、読み出した学習情報の多数決判定により検索画像が登録されているかどうか推論することになる。
【0089】
推論では学習メモリに登録されている学習情報を読み出すことがメインになり、学習メモリの学習部品(本体データ)は推論には関係しない。学習メモリの学習部品(本体データ)は追加登録を行う場合に使用する。追加登録では学習情報の追加登録はできるが学習部品の2重登録ができないためその確認に不可欠である。従って追加登録が不要なら学習部品(本体データ)も不要で学習情報だけあればよい。
【0090】
しかし、画像データをフィルタリングし学習部品を作成し、学習部品を登録データとしてそのまま検索エンジンに登録すると、登録データが現実的でない大きさになる。今まで述べてきたようにAI処理では登録データそのものではなくとも、登録データであることが認識できる固有のデータに置き換えることができる。
【0091】
そこで、本発明では、拡散処理により登録データのビット長を登録データであることが識別可能な任意のビット長に変換する。数学的には、図9に示した如く、登録データのビット空間で表されるビット長のデータを拡散処理により生成される新たなビット長空間のデータに1対1で対応づける操作を行うことになる。
【0092】
次に、前記検索エンジンを用いて顔認特徴を抽出する方法について説明する。
本発明の検索エンジンを用いた顔認証では、認証を次の2つの部分に分けて実施する。
(1)顔の全体形状認証
(2)顔の部分的な特徴認証
顔の形状は髪型、照明などにより影響を受ける。このため、完全に同じ映像を得ることは困難である。そこで、顔の全体形状認証では顔の全体的な形状について認証する。
【0093】
顔の全体形状認証では、得られた顔の画像データを適切にぼかすことで、細かい差異が無視され、その人の特徴を捕まえることができる。
しかし、非常に似た人がいるなど、この方法だけで本人を特定することができない場合がある。その場合はその人特有の細かい差異、例えば目、鼻、口、皺の有無などを捕らえる必要がある。この認証が顔の部分的な特徴認証である。顔の部分的な特徴認証では、顔の全体形状認証の反対の処理である顔の部分に焦点を合わせた高い解像度を有する認証になる。
ただし、(1)の顔の全体形状認証だけでもかなり高いレベルの認証ができる。
【0094】
人はかなり離れた位置から顔を見分けることができる。これは目の解像度という観点から見ると、先に述べた(2)の顔の部分的な特徴認証を行っているのではなく、(1)の顔の全体形状認証により見分けていると考えることができる。
従って(1)の方法だけで、一般的な認証が行えることを示している。
【0095】
今、例えば家庭の玄関の呼び出しボタンに付属しているカメラで、家族と宅配サービスなど未知の人物の見分けをするため、画像から家族データを学習し登録するステップを説明する。大勢の中から顔だけを抽出する方法論はすでに無料ソフトが出回っているため、これを利用できるが、玄関カメラではこの必要はない。
【0096】
図10がその全体アルゴリズムのステップとなる。学習では、学習の最初の元画像(ステップS1000)はHD(1080×800画素)であり、この画像から輝度情報だけを取り出し、2値化と画素の調整を行う操作を次に行う。これを2値化/サイズ調整(ステップS1010)と呼ぶ。顔認識では顔全体で処理するには大きすぎるので顔をパーツに分解して処理する顔パーツデータの作成も含まれる。深層学習で通常行われている画素子の省略(画素の飛び飛びデータを抽出)などと同様である。
【0097】
次いでフィルタリング処理(ステップS1020)をして登録の元である学習部品となるデータを抽出する。フィルタリング処理後のデータが検索エンジンの登録データとなり、元画像データはこの作業で学習部品に変換される。
【0098】
フィルタリングの内容により学習部品のデータビット数が異なるので、フィルタリング後、最大のビット数をもつデータにそろえるため、下位ビットに“0”を加えビット数の調整を行う。本例では216ビットに標準化する(12×36画素のデータをフィルタリングする)。この揃えたビット数が大きく、データの偏りも大きいので、拡散処理を行い40ビットに変換し、学習メモリ10に登録する(ステップS1030)。
【0099】
一方検索メモリ20への登録は、分割メモリの登録数に合わせ拡散処理により120ビットとし(ステップS1050)、検索メモリに登録する(ステップS1060)。
推論ではフィルタリングし拡散処理するまでは学習と同じである。推論ではフィルタリングにより得られた学習部品を拡散処理しキーデータを作成した後、そのキーデータで検索メモリの検索を行う。検索メモリの検索は分割したキーデータで全分割メモリを同時検索し、一致データを求める。求めた一致データで学習メモリを検索し(ステップS1040)学習情報を取り出す。取り出した学習情報の多数決判定により推論結果を出力する。
【0100】
本アルゴリズムによる顔認識の概略フローを示すと図11のようになる。例えば1080×800の膨大なピクセル数の画像を処理する場合は、CNNであってもCNN処理に入る前に前処理として、画像処理ツールを用いて画像解像度調整や画像の2値化処理を行う。前処理の後、フィルタリング処理するが、学習のためには多くの学習部品の作成を行い、学習部品に論拠の埋め込みを行う。顔認識では顔全体を処理するには大きすぎるので顔全体をパーツに分割する顔パーツデータの作成が必要でその顔パーツデータの作成アルゴリズムを図12に示す。ここでは、前処理により作成した輝度変換後の顔写真(144×144の画素を有する)を2値画像(例えば、データ形式はBMPである)に変換し、2値信号化する(この場合、数値データは、R=G=Bである)。そして、プーリング処理により画像データを1/16に圧縮し、画像サイズ(ドット数)を36×36の画素に調整し、顔パーツデータを作成する。ここでは、36×36の画素を12×36×3の画素に3分割し、各データが入力データ(顔パーツデータ)となる。これら顔パーツデータをフィルタリングし、拡散処理後のデータ(学習部品)を学習情報と共に学習メモリ10に登録する。フィルタリング前の顔パーツデータの作成イメージを図12に記載している。例えば図12の左上の2値化顔データは髪の毛の部分が多いし、背景の部分が存在し髪形や背景の影響を受けることになる。このためこの図には示していないが、図の左下に示すように単純に顔の分割を行うのではなく、顔の特徴に関係する顔の一部分を複数の顔パーツデータとして取り出すことが多い。
【0101】
本例の顔認識では図13に示すように顔パーツデータに対して特長抽出のフィルタリング処理を行う。本例では9種類のフィルタを用いており、このフィルタを用いたフィルタリング後の各々のデータが学習部品になる。フィルタリング後のデータは様々なビット数になるため前記のビット長を同じ長さに合わせる処理を行う(ここでは、216ビットに合せている)。その後、拡散処理により学習メモリの40ビットの学習メモリの学習部品(図4の本体データに対応)と120ビットの検索メモリのキーデータ(図5の登録データに対応)を作成する。ここで、学習メモリの40ビットは、216ビットのデータから直接作成してもよいし、120ビットの検索メモリのキーデータから作成してもよい。
【0102】
推論では図14に示すように12×36画素の顔パーツデータをフィルタリング処理し、学習時と同じ方法で拡散処理を行い検索メモリの120ビットのキーデータを作成する。このキーデータを用いて検索メモリの分割メモリを全部読み出し、一致データを抽出し、この一致データを登録番号(エントリアドレス)として学習メモリをアクセスし学習情報を読み出す。
【0103】
検索メモリの読み出し結果に一致データが無ければ、学習情報は登録されていないと判断する。登録されていない場合は、その場で追加登録が必要なら追加登録することができる。追加登録をする場合は学習時の処理と同じ手順で学習処理を行う。その場で追加登録できる部分は従来のCNNと異なり、追加登録に起因する既登録の他データに関する膨大な再計算は不要である。
【0104】
拡散処理の具体例として、216ビットの入力データから検索メモリの登録データ(120ビット)を作成する例を示すと図16のようになる。前述したようにフィルタリング後のデータは54ビット~216ビットであり、ビット長がまちまちである。そこで、フィルタリング後のデータの下位に“0”を付加しデータ長を合わせるが、データに偏りが発生する。このため長さを合わせた216ビットのデータを均等な18ビットの長さで(1)から(12)の12列に分割する。上位1列から順番に3列目ごとのデータを抜き出し、Aとし、次に上位2列から順番に3列目ごとのデータをAと同様な方法でBとし、最後に上位3列から順番に3列目ごとのデータをAと同様な方法でCとする。このデータ列を3つ横にならべたものを(A、B、C)(B、C、A)(C、A、B)ビットとしシャッフル1~シャッフル3を作成する(A、B、Cを組み合わせて3倍のビット数にする操作をシャッフルと呼ぶ)。シャッフル1~シャッフル3をそれぞれ40ビットに拡散し、40ビットの拡散データD、E、Fを作成しそれを組み合わせて120ビットにする。ここでは、シャッフル1~シャッフル3の216ビットに5ビット(オール0)をそれぞれ追加し、221ビット入力、40ビット出力の拡散式を適用し、221ビットから40ビットをそれぞれ作成している。この120ビットのデータを検索メモリのキーデータとして使用する。このデータを図16のような形に変換し(ここでは、上位37ビットおよび下位64ビットは全て“0”としている)、拡散することで40ビットの学習メモリの学習部品として、これに学習情報を付加し登録する。学習情報は、顔認識の場合、登録する顔に番号を割り当て、その番号を学習情報とする等のように認識する顔が特定できるデータである。この検索メモリのキーデータの作成方法や学習メモリの学習部品や学習情報の作成方法は一つの例であり、いろいろな方法が考えられる。
学習と推論のアルゴリズムについて一通り画像認識を例にとって説明したが、このアルゴリズムはこれに限られたものではなく、言語認識は単語、フレーズ、コンテキストを会話テーマの別に群として画像のごとく扱い、フィルタリング登録すればよい。
【0105】
ここで、フィルタリング処理とは、登録データのCNNの特徴抽出と同じで、畳み込みとプーリングを繰り返しながら特徴の抽出を行う代わりに複数のフィルタを用いて特徴的なパターン(学習部品)に変換する処理を表している。
【0106】
フィルタパターンについては例えば画像ではなく、人の目と鼻に対応するT型や鼻と口に対応する逆T型など様々な特長的なフィルタを考えることができる。 推論データからフィルタリングにより複数の学習部品を得、複数の学習部品で検索メモリを検索し、検索結果から学習メモリの学習情報を求め、学習情報の多数決判断を行うことは、実効的にCNNと同じ結果となる。推論データから学習情報を得るフィルタリングの方法には目的に応じ色々な方法がある。
【0107】
フィルタリング方法の基本を示す具体例を次に示す。
図17に、5つのフィルタを用いた、フィルタリング処理の例を示す。 6×6の2次元入力データは、各フィルタパターン単位で、取り出され、その中に色ありのデータ(後述のデータ“1”に相当)があれば色(“1”)と置き換え、無ければ色なしのデータ(後述のデータ“0”に相当)と置き換えられる。
【0108】
図18に、6×6の2次元入力データ同じマトリクスを有するフィルタを用いた、フィルタリング処理の例を示す。 6行6列の2次元入力データは、フィルタ中の番号に相当するデータが取り除かれ、入力データの番号順に並べられる。フィルタリング後のデータはフィルタリングにより削除された部分を詰めた形式とする。そして、ビット長をそろえるために、18ビットを残してその他の部分を削除している。
【0109】
図17および図18の例と同様の処理をした結果として、手書き入力データの数字「1」に対するフィルタリングのデータ例を図19に、手書き入力データの数字「2」に対するフィルタリングのデータ例を図20に、手書き入力データの数字「3」に対するフィルタリングのデータ例を図21に示す。
【0110】
学習メモリの学習部品と学習情報の例を図22に示す。この例の学習・推論の方法については今まで述べてきた方法と同じである。
【0111】
使用するフィルタは図19に示すように6種類あり、すべての学習及び推論に同じフィルタを用いる。
本例の学習データは単純な6×6のマス目で表される数字であるため単純なフィルタでも学習・推論が可能である。
図19は3種類の1を登録する場合の例を示している。フィルタを用いてフィルタリングした結果が3種類の数字の下に記載しており、フィルタリング後のデータに番号を付けている。フィルタリング後のデータを一列に並べると当然であるが使用するフィルタによりビット数が異なることが分かる。そこで、フィルタリング後のデータを左詰めで配置し残りに0を配置し同じ長さに合わせる(学習部品)。これに学習情報を付加したものが図22の左側にあるデータである。
学習情報は数字1の場合は1、数字2の場合は2、数字3は3になる。学習情報はこの例から分かるように形状は異なっても1は1であり、形状によらない1という情報が学習情報になる。
今まで述べたように学習部品の2重登録はできないという規則により、左側のデータから同じ学習部品を削除したものが右側のデータである。
ただし、学習情報については2重登録が可能なため、数字2と3に学習部品が同じ場合があり、その場合は先に登録した30番の学習部品の学習情報2に3が追加登録されることになる。本例では複数の学習情報をもつものは1つしか無いが登録数が多くなれば其れにつれて複数の学習情報をもつものが増加することになる。
【0112】
本例では学習時に3個の数字に同じ学習情報を登録することになるが、推論では1個の数字しか検索しないため1個の数字に対応する学習情報が読み出される。このため本例では6個のフィルタに対する学習情報が読み出されることになる。読み出された学習情報で最も多いものが設定した個数を超えればその学習情報が正解情報と判断され推論結果となる。設定した個数を超えるものがなければ登録データは無いと判断することになる。
【0113】
このように本発明では図3に示すようにCNNで行っている畳み込み演算処理を繰り返し最終的な画像判定を行う推論処理を検索エンジンにより行うことになる。推論結果もCNNでは複数の登録画像の内1に近いものが正解情報となり、本発明でも、検索対象の学習情報が全て同じ情報である場合を1と考えれば、同じように推論結果が1に近いものが正解情報になる。
【0114】
図22の右側のデータを見ると登録する学習部品の数が44個あり、64ワードの分割メモリで検索メモリを構成し、左右絞りこみを行う場合、確率論を用いて登録に必要な分割メモリの数を計算すると、片側2列、左右登録で4列あれば登録できることになる。追加登録を考え、最終的に128個まで登録できるように考えると片側4列、左右登録で8列必要になる。この128個まで登録できることを前提に、検索メモリのキーデータ長を設定すると、分割メモリのワード数から分割キーデータ長が6ビットとなるから検索メモリのキーデータ長は6×8= 48ビットとなる。図22のフィルタリング後の学習部品のビット数が18ビットなので、この例では学習部品から検索メモリのキーデータを作成するため18ビットのデータを48ビットに拡散することになる。
【0115】
学習イメージの例を図23に示す。フィルタリング後の学習部品のビット数を18ビットに統一し、これを6ビット毎に分割し、10進数で表すと3列の数字で表される。本例ではフィルタリング後の学習部品のビット数が小さいためそのまま学習メモリに登録する。学習部品の登録データはこの学習部品に学習情報を付加したものになる。図23では登録データが数字の1なので学習情報は1になる。検索メモリのキーデータについては学習部品を拡散処理により48ビットに変換する。これを6ビット毎に分割し、10進数で表すと図のように8列の数字で表せることになる。検索メモリの登録データに学習情報を登録しないが、このキーデータがどのような学習情報に対応するか明らかにするため図には学習情報を付している。
【0116】
推論イメージの例を図24に示す。図に示しているようにフィルタリング処理の後、キーデータを作成するまでの処理は学習時と同じである。正解データが複数の種類からなる場合は正解データの中で最も数が多いものを正解データと判定する。
本発明の検索エンジンを用いたニューラルネットワークでは、学習データ(入力データ)をフィルタリング処理し、その結果を検索エンジンに登録することが学習である。また、入力データをフィルタリング処理し、その結果を用いて検索エンジンの検索を行い、正解データ(学習情報)を算出することが推論である。
【0117】
この方式では学習データとかけ離れたデータで推論処理を行うと、当然であるが検索エンジンに登録されていないため、検索エンジンから未登録判定の情報が出力され正解判定ができなくなる。この場合、検索エンジンでは未登録データ部分のみを追加登録すれば正解判定ができるようになる。
これは追加登録を繰り返せば、赤ん坊が情報を吸収してどんどん利口になるように検索能力が高くなり、学習メモリ10の最大容量に達するまでこの状況が続くことを示している。
【0118】
手書き数字1~3の学習例を図25に、同じく推論例を図26に示す。同じく検索メモリの登録内容の例を図27に示す。検索メモリは左右で合計8列の分割メモリから構成されている。ここで、図中の0番のキーデータを用いて検索メモリに登録する場合を考える。まず左端の分割キーデータは20であるため、検索メモリのアドレス20に登録番号0を登録する。左右登録するため、右端の分割キーデータも用いて同じ登録番号を登録する。具体的には、右端の分割キーデータは9であるため、検索メモリのアドレス9に登録番号0を登録する。
【0119】
これを繰り返し、衝突がある場合は隣の分割キーデータを用いて登録番号を登録する。例えば、図中の23番のキーデータを用いて検索メモリに登録する場合を考えると、左端の分割データは31であるため、検索メモリのアドレス31に登録番号23を登録すべきであるが、すでに登録番号19番が登録されている。そのため、隣の分割キーデータの1より、2列目の検索メモリのアドレス1に登録番号23を登録する。右端の分割キーデータは56であるため、検索メモリのアドレス56に登録番号23を登録する。これを繰り返し、検索メモリの登録を完了させると図27のようになる。これまでに説明した検索メモリの読出しにより、キーデータを用いて学習メモリの登録番号を読出し、登録番号を用いて学習メモリから学習情報を読み出すことが可能となる。
【0120】
図29に、本発明を実施するための回路構成の一例を示す。図に示すように、本実施形態は、学習メモリマット104と、制御回路105と、拡散回路106とを主に備える。制御回路105は、学習メモリマット104及び拡散回路106のそれぞれと接続されており、情報処理を総合的に制御する機能を担っている。
【0121】
本検索エンジンの構成は、拡散回路106で学習メモリマットに入力する拡散データを作成し制御回路105に入力する。制御回路105の構成は拡散後の入力データを入力する入力部1051と、書き込み部1053、衝突情報記憶部1054を経て学習メモリマット104にデータを登録する書き込み系と後で述べる読み出し系から成る。
読み出し系についてはキーデータを入力する読み出し部1055、読み出し部1055は読み出し結果を確認部1056に送り、確認部1056は一致データで学習メモリ104の読み出しを行い学習メモリ104に登録されている学習情報を読み出し、読み出し結果を出力部1056に送る。一致データが無ければ登録されている学習情報は無いということになる。出力部では学習情報の多数決判断を行う。多数決判断でその結果が設定した閾値を超えていれば多数データが推論の結果となる。出力部は、その結果を正解データとして出力する。閾値を超えていなければ登録データ無しという結果になる。なお学習メモリマットに登録されるデータは学習部品と学習情報(ラベル)から成り、登録に用いる拡散データが学習部品である。学習メモリマットの登録で重要なのは学習部品を登録するときに確定する登録番号(登録番号)と学習情報である。追加登録を行わなければこの学習部品を学習メモリマットから削除することもできる。学習部品の登録には同じ部品が登録できないという規則から追加登録を行う場合はこの規則を満たす必要があり学習部品の削除はできないということになる。
【0122】
図30に、本発明を実施するための回路構成の他の例を示す。図に示すように、本実施形態は、検索メモリマット102と、学習メモリマット104と、制御回路105と、拡散回路106とを主に備える。制御回路105は、検索メモリマット102、学習メモリマット104及び拡散回路106のそれぞれと接続されており、情報処理を総合的に制御する機能を担っている。
【0123】
検索メモリマット102は、複数の分割メモリ102a、102b、102c・・・によって構築されている。複数の分割メモリは、検索メモリマット102を検索するキーデータを分割メモリの数に合わせて分割し、分割したキーデータで分割メモリのアドレスを選択し、学習メモリマット104の登録番号を登録する。即ち、検索メモリマット102を複数の分割メモリ102a、102b、102c・・・に分割して構築することで、キーデータが割り当てられる領域が複数に分割される。
【0124】
各分割メモリは、SRAMなどの記憶装置を用いて構成することができる。この意味において、本発明は、複数のSRAMを利用して実現した検索エンジンであるということができる。
【0125】
本検索エンジンの構成は、拡散回路106で学習メモリマットと検索メモリマット102に入力する拡散データを作成し制御回路105に入力する。制御回路105の構成は拡散後の入力データを入力する入力部1051と、入力データを分割するための分割部1052と、書き込み部1053、衝突情報記憶部1054を経て学習メモリマット104と検索メモリマット102にデータを登録する書き込み系と後で述べる読み出し系から成る。検索メモリマット102への書き込みは、分割した上位入力データと下位入力データ(即ち左右)のデータをアドレスとして、上位入力データ用と下位入力データ用(即ち左右)の分割メモリに学習メモリマット104の登録番号(エントリアドレス)を書き込む。
【0126】
具体的な書き込み動作については分割した最上位入力データと最下位入力データを対応する分割メモリのアドレスとして両方に同じ学習メモリマット104の登録番号を書き込む。この書き込み動作でアドレスが衝突したら、衝突したもののみを対象にして隣の分割入力データをアドレスにして隣の分割メモリに学習メモリマット104の登録番号を書き込む。登録が終了したら元の分割入力データに戻り登録を続ける。
【0127】
検索メモリマットの分割メモリには学習メモリマットの登録番号とは別に分割メモリの登録で衝突の有無を識別するためのフラグデータを付加する。
【0128】
分割メモリの登録時に、上位入力データと下位入力データから(即ち左右から)同じ学習メモリマットの登録番号を登録するのは読み出し時に検索メモリマットを構成する分割メモリを同時に読み出すため、左右登録により一致するデータを見つけることにより、検索データの絞り込みを行うためである。
読み出し系については分割部105により分割されたキーデータを入力する読み出し部1055、読み出し部1055は分割したキーデータで検索メモリマットの分割メモリ102a、102b、102c・・・を読み出し、読み出し結果を確認部1056に送り、確認部1056は一致データで学習メモリ104の読み出しを行い学習メモリ104に登録されている学習情報を読み出し、読み出し結果を出力部1056に送る。一致データが無ければ登録されている学習情報は無いということになる。出力部では学習情報の多数決判断を行う。多数決判断でその結果が設定した閾値を超えていれば多数データが推論の結果となる。出力部は、その結果を正解データとして出力する。閾値を超えていなければ登録データ無しという結果になる。なお学習メモリマットに登録されるデータは学習部品と学習情報(ラベル)から成り、登録に用いる拡散データが学習部品である。学習メモリマットの登録で重要なのは学習部品を登録するときに確定する登録番号と学習情報である。追加登録を行わなければこの学習部品を学習メモリマットから削除することもできる。学習部品の登録には同じ部品が登録できないという規則から追加登録を行う場合はこの規則を満たす必要があり学習部品の削除はできないということになる。
【0129】
図30に示されるように、例えば検索メモリマット102の分割メモリのワード数を、仮に4096と定めた場合、4096ワードを示すアドレスのサイズは12ビットになる。また、検索メモリマット102に入力されるキーデータの大きさが144ビットであるとすると、これを前記の12ビットで割ると12となる。即ち、このような場合に、分割メモリの数は12個必要となる。このような条件を考慮すると、必要となる検索メモリマット102の分割数Nは、以下の式により求めることができる。
N=L/log
ここで、Lはキーデータ長さ、Mは分割メモリのワード数、Nは検索メモリマットの分割数(分割メモリの個数)である。
【0130】
分割メモリのワード数が4kの時、左右登録による最大登録数は検索メモリマットの分割数Nに依存し次のようになる。

N 最大登録数 キーデータの大きさ
8 4096 96
10 8192 120
12 12288 144
14 16384 168
16 20480 192
18 24576 216
20 28672 240
22 32768 264
24 36864 28
【0131】
本発明は、上述のように、従来の回路構成、特にメモリ回路をベースとしながら、まったく新しい論理的方式論を提供するものである。すなわち、本発明は、キーデータとその登録番号の構成を巧みに利用したプログラムレスのアーキテクチャに関する。別の言い方をすれば、本発明は、脳型のアーキテクチャに関するものである。
【0132】
なお前記説明においては、本発明が、画像処理に適用されていたが、本発明の適用対象はこれに限定されない。
【符号の説明】
【0133】
102…検索メモリ(マット)
104…学習メモリ(マット)
105…制御回路
106…拡散回路
1051…入力部
1052…分割部
1053…書込部
1054…衝突情報記憶部
1055…読出部
1056…判定結果出力部

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28(a)】
図28(b)】
図29
図30