(57)【特許請求の範囲】
【請求項１】
ニューラルネットワークを分析するためのプログラムを記憶した記憶媒体において、
前記プログラムは、コンピュータに、
与えられた定義域の学習データを学習した後の、分析対象となる学習後のニューラルネットワークの各中間素子および出力素子を、多重線形関数を用いて表現されたデータとして入力する入力ステップと、
（Ａ）各中間素子および出力素子を表現する変数から生成される項を選択する選択ステップと、（Ｂ）前記与えられた定義域の学習データを当該項に対応する部分定義域のデータに限定する限定ステップと、（Ｃ）その限定した部分定義域内のデータに基づいて、当該項が前記近似後のブール関数内に存在するか否かを判定する判定ステップ、という前記（Ａ）〜（Ｃ）の一連のプロセスを繰り返すことにより、ブール関数の各項を生成する項生成ステップと、
生成された項を論理和で結合して各中間素子および出力素子をブール関数で近似することにより、近似後のブール関数を抽出する近似ステップと、
各中間素子および出力素子の前記近似後のブール関数を合成して合成ブール関数を生成する合成ステップと、
前記学習後のニューラルネットワークの予測精度を示す前記合成ブール関数を含むデータを分析結果として出力する出力ステップと、
を実行させることを特徴とする記憶媒体。
【請求項２】
前記項生成ステップの前記判定ステップは、
前記限定した部分定義域において、各中間素子および出力素子の出力値の最低値が所定の閾値を越えているか否かを判定するステップと、
前記最低値が前記所定の閾値を越えている場合に、当該項が前記近似後のブール関数内に存在すると判定するステップと、
を含む、請求項１に記載の記憶媒体。
【請求項３】
前記近似ステップは、
前記学習データの属性の大きさを判定する評定量を設定するステップと、
前記評定量が一定値以下の属性は使用せず、評定量が当該一定値を越える属性のみを使用して各中間素子および出力素子を近似するステップと、
を含む、請求項２に記載の記憶媒体。
【請求項４】
前記近似ステップは、  学習データの属性のうち前記評定量が最も大きな属性を使用して各素子の出力値の最低値を計算する第１の最低値計算ステップと、
前記最低値に基づいて近似後のブール関数を抽出する抽出ステップと、
前記近似後のブール関数と各中間素子および出力素子の出力値との誤差を計算し、得られた誤差と一定値とを比較する誤差計算ステップと、
前記誤差が前記一定値を越える場合に、前記評定量が次に大きな他の属性を使用して各中間素子および出力素子の出力値の最低値を計算する第２の最低値計算ステップを含み、  前記近似ステップにおいては、前記誤差が前記一定値以下になるか前回の誤差より大きくなるまで、前記第２の最低値計算ステップ、抽出ステップ、および誤差計算ステップを繰り返すことにより、ブール関数と各中間素子および出力素子の出力値との誤差を小さくする、
ことを特徴とする請求項３に記載の記憶媒体。
【請求項５】
前記近似ステップは、
前記評定量が前記一定値を越える属性に関して各素子の出力値の最低値を求めるステッ
プと、
前記評定量が前記一定値以下の他の属性に関して各素子の出力値の平均値を求めるステップと、
を含む、請求項３に記載の記憶媒体。
【請求項６】
前記近似ステップは、
前記学習データの前記定義域が連続の場合に、定性的表現である連続ブール関数により各中間素子および出力素子を近似するステップと、
を含む、請求項１に記載の記憶媒体。
【請求項７】
与えられた定義域の学習データを学習した後の、分析対象となる学習後のニューラルネットワークの各中間素子および出力素子を、多重線形関数を用いて表現されたデータとして入力する入力部と、
各中間素子および出力素子をブール関数により近似して近似後のブール関数を抽出する関数抽出部と、
各関数抽出部により得られた各中間素子および出力素子の前記近似後のブール関数を合成して合成ブール関数を生成する関数合成部と、
前記学習後のニューラルネットワークの予測精度を示す前記合成ブール関数を含むデータを分析結果として出力する出力部、
を備えたニューラルネットワーク分析装置において、
前記関数抽出部は、
各中間素子および出力素子に対してブール関数の各項を生成する項生成部と、
前記項生成部により生成された項を論理和で結合して各中間素子および出力素子の近似後のブール関数を生成する項結合部を備え、  前記項生成部は、
前記与えられた定義域の学習データを、生成しようとする項に対応する部分定義域のデータに限定するデータ限定部と、
前記データ限定部により限定された前記部分定義域内のデータに基づいて、当該項が前記近似後のブール関数内に存在するか否かを判定する判定部を備えている、
ことを特徴とするニューラルネットワーク分析装置。
【請求項８】
前記項生成部の前記判定部は、
前記限定した部分定義域において、各中間素子および出力素子の出力値の最低値が所定の閾値を越えているか否かを判定し、最低値が所定の閾値を越えている場合に、当該項が前記近似後のブール関数内に存在すると判定するように構成されている、
ことを特徴とする請求項７に記載のニューラルネットワーク分析装置。
【請求項９】
前記関数抽出部は、
前記学習データの属性の大きさを判定する評定量を設定し、評定量が一定値以下の属性は使用せず、評定量が当該一定値を越える属性のみを使用して各中間素子および出力素子を近似するように構成されている、
ことを特徴とする請求項８に記載のニューラルネットワーク分析装置。
【請求項１０】
前記関数抽出部は、前記項生成部および前記項結合部により得られた近似後のブール関数と各中間素子および出力素子の出力値との誤差を計算し、得られた誤差と一定値とを比較する誤差計算部を備え、
前記関数抽出部は、前記誤差計算部により得られた前記誤差が前記一定値以下になるか前回の誤差より大きくなるまで、前記評定量の大きな順に属性を使用して前記項生成部と前記項結合部による近似後のブール関数の抽出と、前記誤差計算部による誤差の計算を繰り返すことにより、ブール関数と各中間素子および出力素子の出力値との誤差を小さくするように構成されている、ことを特徴とする請求項９に記載のニューラルネットワーク分析装置。
【請求項１１】
前記関数抽出部は、前記評定量が前記一定値を越える属性に関して各素子の出力値の最低値を求め、評定量が当該一定値以下の他の属性に関して各素子の出力値の平均値を求めるように構成されている、
ことを特徴とする請求項１０に記載のニューラルネットワーク分析装置。
【請求項１２】
前記関数抽出部は、
前記学習データの前記定義域が連続の場合に、定性的表現である連続ブール関数により各中間素子および出力素子を近似するように構成されている、
ことを特徴とする請求項７に記載のニューラルネットワーク分析装置。
【請求項１３】
与えられた定義域の学習データを学習した後の、分析対象となる学習後のニューラルネットワークの各中間素子および出力素子を、多重線形関数を用いて表現されたデータとして入力手段を用いて入力する入力ステップと、
近似手段を用いて、各中間素子および出力素子をブール関数により近似して近似後のブール関数を抽出する近似ステップと、
合成手段を用いて、各中間素子および出力素子の前記近似後のブール関数を合成して合成ブール関数を生成する合成ステップと、
前記学習後のニューラルネットワークの予測精度を示す前記合成ブール関数を含むデータを分析結果として出力手段を用いて出力する出力ステップと、
を含むニューラルネットワーク分析方法において、
前記近似ステップは、
項生成手段を用いて、各中間素子および出力素子に対してブール関数の各項を生成する項生成ステップと、
項結合手段を用いて、前記生成された項を論理和で結合して各中間素子および出力素子の近似後のブール関数を生成する項結合ステップとを含み、
前記項生成ステップにおいては、（Ａ）選択手段を用いて、各中間素子および出力素子を表現する変数から生成される項を選択する選択ステップと、（Ｂ）限定手段を用いて、前記与えられた定義域の学習データを当該項に対応する部分定義域のデータに限定する限
定ステップと、（Ｃ）判定手段を用いて、その限定した部分定義域内のデータに基づいて
、当該項が前記近似後のブール関数内に存在するか否かを判定する判定ステップとを含む前記（Ａ）〜（Ｃ）の一連のプロセスを繰り返す、
ことを特徴とするニューラルネットワーク分析方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は学習されたニューラルネットワーク分析方法及びこれを実行する装置に関するものである。
【０００２】
【従来の技術】
（１）ニューラルネットワーク
ニューラルネットワークとは、人間の神経回路網の動作を計算機で模倣している人工的な神経回路網のことである。このニューラルネットワークにおいては、データの入力部と出力部との間に一層或いは複数層の中間層を配置し、これらの各層を複数の素子によって構成するとともに、入出力部と各中間層をデータの入出力系によってネットワーク状に接続している。このニューラルネットワークは非線形成分を持っているがゆえに種々のデータに対して非常に高度の近似能力がある。それゆえに現在、製造業、サービス業をはじめとした、多くの産業で、ニューラルネットワークが利用されている。それは、ニューラルネットワークに種々のデータを入力して学習させ、文字認識、画像認識、予測等に利用しているのである。
【０００３】
このニューラルネットワークの学習時には、データを受け入れる各素子ごとにその入力データに対する重み係数及びバイアスをランダムに与えておく。この状態でデータを入力して行き、重み係数に従って計算された出力結果の正否を判定する。そして、この出力結果の正否をバックプロパゲーション法などの学習方法によりフィードバックして、当初設定された重み係数及びバイアスを修正し、再度データの入力を行う。このような入力と、重み係数及びバイアスの修正を多数回繰り返すことにより、所定のデータが入力された場合に適正な出力を得られる重み係数並びにバイアスが決定される。この場合、学習後のニューラルネットワークにおける各素子の重み係数及びバイアスは、シグモイド関数などの関数によって表現される。このようにして学習が完了したニューラルネットワークをコンピュータによって構成される文字認識、画像処理その他の装置に実装することによって、実用に供している。
【０００４】
（２）学習後のニューラルネットワークの問題点
ところで、このようなニューラルネットワークを設計する場合において、ネットワークを構成する各素子、即ち入力層、中間出力層及び出力層をどのように配置するかは、入力するデータや利用する出力結果に応じて経験的に定められていた。そのため、各素子として冗長な部分があるかどうか、あるいは逆に不足する素子があるがどうかについては、学習結果の精度や学習効率から経験的に予測しなければならなかった。そのため、たとえ冗長な部分があっても、冗長か否かの判断が不可能であるため、学習結果の精度が高ければそのままの状態で、装置に実装しなければならず、コンピュータの記憶容量の増大を招いたり、処理速度の低下の原因になっていた。また、学習効率の悪いニューラルネットワークの場合には改めて経験則に従いニューラルネットワーク全体を設計しなければならず、学習した成果が生かせない不都合もあった。
【０００５】
しかし、従来の技術では、学習後のニューラルネットワークに所定のデータを入力すれば学習結果に応じた出力がなされることは解っていても、ニューラルネットワーク自体がどのように働いているか、あるいはニューラルネットワークの中で個々の素子がどのような役割を果たしているかは、学習後のシグモイド関数を見ただけでは判別できなかった。すなわち、ニューラルネットワークの働きを人間が理解するには、個々の素子の振る舞いを自然言語に近い命題として表現する必要があるが、前記のようにして学習が完了したニューラルネットワークの個々の素子を表現するシグモイド関数は重み係数やバイアスが数値として表現されたものであり、それがニューラルネットワーク上でどのような意味を有するかは判別できなかった。
【０００６】
（３）ブール関数による近似
本発明者らは、前記のような従来技術の問題点を解決するために、ニューラルネットワークの素子を表現する多重線形関数（例えば、シグモイド関数）を最も近いブール関数で近似することにより、学習後のニューラルネットワークの各素子が意味することを分析し、人間に理解できるような命題として表現することのできる発明を提案した。この発明は、特願平８−００３６４２号（名称：ニューラルネットワーク分析方法及び装置）として、特許出願したものである。
【０００７】
この先願の発明における基本的な考え方を以下に説明する。なお、本明細書において、文中の各式中の￣はそれに続く文字の否定を表わし、イメージで表現した数式中において各文字に付したオーバーラインと同義とする。また、論理和をアルファベットの大文字Ｖで、論理積をギリシャ文字のΛで、ＡをＢに近似することをＡ〜＝Ｂと便宜的に表現する。
【０００８】
（３−１）前提となる知識
まず、各素子をブール関数によって近似する場合に、前提となる知識を説明する。
【０００９】
（３−１−１）多重線形関数空間
ｎ変数多重線形関数ｆ（ｘ1，...，ｘn）の定義は以下の通りである。
【数１】
0003568181.tif 000002
ただしｐiは実数、ｘiは変数、ｅiは１か０である。例えば、２変数の多重線形関数ｆ（ｘ，ｙ）は、
ｆ（ｘ，ｙ）＝ｐｘｙ＋ｑｘ＋ｒｙ＋ｓ
である。
【００１０】
（３−１−２）ブール代数の拡張としての多重線形関数空間
変数の定義域を｛０，１｝の離散とすると、多重線形関数空間はブール関数のブール代数の原子で張られる線形空間である。そして、定義域が｛０，１｝の時、多重線形関数空間はユークリッド空間になる。すなわち、定義域を｛０，１｝とし、内積を以下のように定義する。
【数２】
0003568181.tif 000003
このような定義域においては、多重線形関数空間はブール関数のブール代数の原子で張られるユークリッド空間になる。この点についての証明は、平成７年２月発行の「電子情報通信学会論文誌」Vol.J78 −D −IINo.2，p.333 −339 ，1995．に掲載された「パターン処理の近似としての記号処理」を参照。
【００１１】
（３−１−３）定義域を［０，１］の連続とすると、多重線形関数空間はユークリッド空間になる。
【００１２】
すなわち、定義域が［０，１］の場合、内積＜ｆ，ｇ＞を次の様に定義すると多重線形関数空間はユークリッド空間になる。
【数３】
0003568181.tif 000004
ただし
τ（ｘn）＝ｘ
である。この点についての証明は、平成２年６月発行の「情報処理学会論文誌」Vol.31，pp.783−791 ，1990．に掲載された「命題論理の幾何的モデル」を参照。
【００１３】
（３−１−４）ニューラルネットワークの素子は多重線形関数である。
【００１４】
ニューラルネットワークが学習できる関数は、定義域が離散の場合は多重線形関数である。一方、定義域が連続の場合は適当な方法で定義域を正規化して［０，１］にすることができる。定義域が［０，１］の場合には、近似的に上述の定理が成立する。すなわち、
【数４】
0003568181.tif 000005
とする。ただしａはある自然数である。この点についての証明は、平成７年６月発行の「人工知能学会研究会資料」SIG −FAI −950 ，１，pp.25 −32，1995．に掲載された「ニューラルネットワークの論理的分析」を参照。
【００１５】
（３−１−５）多重線形関数のブール関数近似
多重線形関数を最も近いブール関数で近似することを考える。多重線形関数の論理ベクトルを（ｆi）とし、ブール関数の論理ベクトルを（ｇi）（ｇi＝０または１）とする。近似方法は以下の通りである。
【数５】
0003568181.tif 000006
すなわち、両関数の論理ベクトルを近似することは、ユークリッド空間内における両ベクトルの距離を最小にすることを意味する。この最小にしたい量は、
【数６】
0003568181.tif 000007
となる。ここで、各項（ｆi−ｇi）2は独立なので各項を最小にすることが
【数７】
0003568181.tif 000008
を最小にすることと同じになる。ｇiは１，０のいずれかなので、（ｆi−ｇi）2を最小にするｇiは、
【数８】
0003568181.tif 000009
ならばｇi＝１、その他でｇi＝０となる。従って上記の通りとなる。なお、この点についての詳細は、平成４年５月発行の「人工知能学会誌」Vol.7 ，No.5，pp.870−876 ，1992．に掲載された「確率データからの帰納学習」に記載されている。
【００１６】
（３−２）２変数の場合における近似
２変数ｘ，ｙを持つニューラルネットワークについて、各変数の定義域と、ニューロの各素子の出力値（以下、ニューロの値と呼ぶ）及びブール関数の値の関係を、図９に従って説明する。ここでは、学習データの定義域としては離散を考える。なお、定義域が連続の場合にも、ただ一つの処理を除けば離散と全く同じアルゴリズムとなるので、以下の説明は全て離散で行う。定義域が連続の場合における離散の場合と違う一つの処理に関しては後述する。
【００１７】
図９において、ニューロの各素子における出力値の値域は［０，１］である。すなわち、各素子の出力値が０から１の範囲に正規化されている。ｘはニューロの値、ｏは近似したブール関数の値である。また、００，０１，１０，１１は各変数ｘ，ｙの定義域である。例えば、００はｘ＝０，ｙ＝０を意味する。この場合には、ブール関数の値は以下の通りである。
ｇ（０，０）＝１
ｇ（０，１）＝１
ｇ（１，０）＝０
ｇ（１，１）＝０
そしてこのような値を取るブール関数は、
ｇ（ｘ，ｙ）＝￣ｘ
である。
【００１８】
ここで、ブール関数の項とその項に対応する定義域という概念を導入する。ブ―ル関数の項とは複数の変数から否定と論理積で生成されるものを言う。たとえばｘ，ｘ￣ｙは項である。しかし、ｘＶｙは項ではない。項に対応する定義域とはその項に現れる変数が肯定の場合は１、否定の場合は０であるような定義域である。たとえばｘ￣ｙの場合には、対応する定義域はｘ＝１，ｙ＝０であり、ｙの場合にはｙ＝１が対応する定義域である。
【００１９】
図９よりも分かるように、近似後のブール関数にある項が存在すると言うことはその項に対応する定義域でのニューラルネットワークの値が０．５以上である。例えば、図９では￣ｘｙという項が近似後のブール関数に存在しているが、その項に対応する定義域ｘ＝０，ｙ＝１で、ニューロの値が０．５以上である。またｘという項が存在するには、ｘ＝ｘｙＶｘ￣ｙなので、図１０に示すように、ｘｙに対応する定義域ｘ＝１，ｙ＝１とｘ￣ｙに対応する定義域ｘ＝１，ｙ＝０の両方でニューロの値が０．５以上でなければならない。
【００２０】
（３−３）排他的論理和の例
排他的論理和は、Ｘ￣ＹＶ￣ＸＹである。まず、排他的論理和を学習するニューラルネットワークの構成について述べ、次に学習結果の分析について述べる。
【００２１】
（３−３−１）ニューラルネットワークの構成
いま、図１１のようなニューラルネットワークの構成を考える。但しｘ，ｙは入力で、ｚは出力、ｔiは中間出力である。ωiは重み係数である。中間出力、出力はシグモイド関数Ｓ（ｘ）＝１／（１＋ｅ-x），バイアスｈiを用いて以下のように計算される。
ｔ1＝Ｓ（ω1ｘ＋ω2ｙ＋ｈ1）
ｔ2＝Ｓ（ω3ｘ＋ω4ｙ＋ｈ2）
ｔ3＝Ｓ（ω5ｘ＋ω6ｙ＋ｈ3）
ｔ4＝Ｓ（ω7ｘ＋ω8ｙ＋ｈ4）
ｚ＝Ｓ（ω9ｔ1＋ω10ｔ2＋ω11ｔ3＋ω12ｔ4＋ｈ5）
なお、Ｓ（・）はシグモイド関数Ｓ（ｘ）＝１／（１＋ｅ-x）である。
【００２２】
（３−３−２）学習結果の分析
このニューラルネットワークで排他的論理和を学習した結果は以下の通りである。
ω1＝  ２．５１，  ω2＝−４．８０，  ω3＝−４．９０，
ω4＝  ２．８３，  ω5＝−４．４３，  ω6＝−４．３２，
ω7＝−０．７０，  ω8＝−０．６２，  ω9＝  ５．２２，
ω10＝  ５．２４，  ω11＝−４．８８，  ω12＝  ０．３１，
ｈ1＝−０．８３，  ｈ2＝−１．１２，  ｈ3＝  ０．９３，
ｈ4＝−０．８５，  ｈ5＝−２．１９
例えば、ｔ1＝Ｓ（２．５１ｘ−４．８０ｙ−０．８３），の各値は、次の通りである。
【００２３】
ｔ1（１，１）＝Ｓ（２．５１・１−４．８０・１−０．８３）
＝Ｓ（−３．１２）
ｔ1（１，０）＝Ｓ（２．５１・１−４．８０・０−０．８３）
＝Ｓ（  １．６８）
ｔ1（０，１）＝Ｓ（２．５１・０−４．８０・１−０．８３）
＝Ｓ（−５．６３）
ｔ1（０，０）＝Ｓ（２．５１・０−４．８０・０−０．８３）
＝Ｓ（−０．８３）
これより、
Ｓ（−３．１２）〜＝０
Ｓ（  １．６８）〜＝１
Ｓ（−５．６３）〜＝０
Ｓ（−０．８３）〜＝０
なので、
ｔ1〜＝ｘ￣ｙ
となる。同様にその他の素子も以下のブール関数に近似される。
ｔ2＝￣ｘｙ
ｔ3＝￣ｘ￣ｙ
ｔ4＝０
その結果、ｚの学習結果は以下の通りである。
ｚ＝ｔ1ｔ2Ｖ￣ｔ1ｔ2￣ｔ3Ｖｔ1￣ｔ2￣ｔ3
この式に
ｔ1〜＝ｘ￣ｙ
ｔ2＝￣ｘｙ
ｔ3＝￣ｘ￣ｙ
を代入すると、
ｚ＝ｘ￣ｙＶ￣ｘｙ
が得られる。なお、この代入の計算は、（３−３−４）に述べる。
【００２４】
このようにして得られた命題は排他的論理和である。従って、排他的理論和を学習したニューラルネットワークを近似することによって、もとの論理式が導出されたことになる。そして、各素子から得られた論理式を検討することによって、ニューラルネットワークの冗長性を確認することができる。例えば、素子１（ｔ1），素子２（ｔ2）を外すと図１１のニューラルネットワークは排他的論理和として機能しない。なぜならば、
ｔ1＝ｘ￣ｙ，
ｔ2＝￣ｘｙ，
だからである。一方、素子３（ｔ3）及び素子４（ｔ4）は外しても図１１のニューラルネットワークは排他的論理和として機能する。なぜならば、
ｔ3＝￣ｘ￣ｙ
ｔ4＝０
だからである。
【００２５】
従って、図１１のニューラルネットワークは４個の素子の冗長性を活かした学習をしていないことになる。例えば、素子３の学習効果のブール関数近似がｔ3＝ｘ（１−ｙ）で、素子４の学習結果のブール関数近似がｔ4＝（１−ｘ）ｙならば４個の素子の冗長性を活かした学習と言える。
【００２６】
（３−３−３）代入の計算
ｚ＝ｔ1ｔ2Ｖ￣ｔ1ｔ2￣ｔ3Ｖｔ1￣ｔ2￣ｔ3
＝ｘ￣ｙＶ￣ｘｙ
の計算の過程は次の通りである。まず、
ｔ1＝ｘ￣ｙ，
ｔ2＝￣ｘｙ，
ｔ3＝￣ｘ￣ｙ
から、
ｔ1ｔ2＝ｘ￣ｙ・￣ｘｙ＝０
￣ｔ1ｔ2￣ｔ3
＝￣（ｘ￣ｙ）・￣ｘｙ・￣（￣ｘ￣ｙ）
＝（￣ｘＶｙ）・￣ｘｙ・（ｘＶｙ）
＝（￣ｘｙＶ￣ｘｙ）（ｘＶｙ）
＝￣ｘｙ（ｘＶｙ）
＝ｘ￣ｘｙＶ￣ｘｙｙ
＝￣ｘｙ
ｔ1￣ｔ2￣ｔ3
＝ｘ￣ｙ・￣（￣ｘｙ）・￣（￣ｘ￣ｙ）
＝ｘ￣ｙ（ｘＶ￣ｙ）（ｘＶｙ）
＝（ｘ￣ｙＶｘ￣ｙ）（ｘＶｙ）
＝ｘ￣ｙ（ｘＶｙ）
＝ｘｘ￣ｙＶｘ￣ｙｙ
＝ｘ￣ｙ
となる。従って、
ｚ
＝０Ｖ￣ｘｙＶｘ￣ｙ
＝￣ｘｙＶｘ￣ｙ
となる。
【００２７】
【発明が解決しようとする課題】
以上のように、前記の従来技術によれば、ブール関数による近似を用いてニューラルネットワークの構造分析が可能になり、ニューラルネットワークの各素子及び全体構成について、人間が理解できるようになる。すると、学習されたニューラルネットワークをその理解した知識にもとづいて修正したりすることができるという大きな利点が生じる。例えば、前記の例では、中間素子３と４を削除することができる。このように、学習結果を分析して、冗長な中間素子を削除することができると、学習後のニューラルネットワークをなんらかの装置に実装する時に、記憶容量の削減、実行速度の向上等の効果がある。また、命題で十分に近似できる場合には、学習したニューラルネットワークを命題に置き換えることも可能であり、この場合には大幅な記憶容量の削減、実行速度の向上等が期待できる。さらに、ニューラルネットワークは一般に学習時間がかかるが、上記のような命題で近似することによって、学習時間を短縮することもできる。
【００２８】
しかし、前記の従来技術では、ブール関数に近似する場合に、計算量が変数の数の指数オーダーとなり、変数の増加に伴い、その処理時間が膨大になるという問題がある。また、ニューラルネットワークは、通常、全定義域で学習データが与えられるのではなく、きわめて一部の定義域でのみ学習データが与えられるのである。例えば、後述する選挙のデータの場合には２値の変数が１６個あるので２16個（６５５３６個）の定義域が存在するが、与えられた学習データは５００程度である。１パーセント以下の定義域でしか学習データが与えられていないことになる。従って、ニューラルネットワークの値は９９パーセントの定義域で予測値ということになる。ニューラルネットワークは与えられた学習データに合致するように学習されるので、学習データの定義域でニューラルネットワークの値に比べれば、予測値は一般には信頼性が低い。ニューラルネットワークをブール関数で近似する時に、この９９パーセントの予測値を用いることはブール関数の精度を悪くする。すなわち、ニューラルネットワークをブール関数で近似するときに、全定義域で近似するのではなく、学習データの定義域のみで近似する方が高精度のブール関数が得られることになる。
【００２９】
本発明は、上記のような従来技術の問題点を解決するために提案されたものであって、ニューラルネットワークの素子を表現する多重線形関数をブール関数で近似する際に、学習データの定義域でのみ近似することにより、高精度のブール関数が得られ、しかも計算量が少なく処理時間を短縮することのできるニューラルネットワーク分析方法及び装置を提供することを目的とする。
【００３０】
【課題を解決するための手段】
請求項１の発明は、入力ステップ、近似ステップ、合成ステップ、出力ステップを含むニューラルネットワークにおいて、近似ステップが、項生成ステップと項結合ステップを含むことを特徴としている。ここで、入力ステップは、与えられた定義域の学習データを学習した後の、分析対象ニューラルネットワークの各中間素子および出力素子を、多重線形関数を用いて表現されたデータとして入力するステップである。また、近似ステップは、各中間素子および出力素子をブール関数により近似して近似後のブール関数を抽出するステップであり、合成ステップは、各中間素子および出力素子の近似後のブール関数を合成して合成ブール関数を生成するステップである。そして、出力ステップは、分析対象ニューラルネットワークの予測精度を示す合成ブール関数を含むデータを分析結果として出力するステップである。一方、近似ステップの項生成ステップは、各中間素子および出力素子に対してブール関数の各項を生成するステップであり、項結合ステップは、生成された項を論理和で結合して各中間素子および出力素子の近似後のブール関数を生成するステップである。さらに、項生成ステップにおいては、各中間素子および出力素子を表現する変数から生成される項を選択する選択ステップと、前記与えられた定義域の学習データを当該項に対応する部分定義域のデータに限定する限定ステップと、その限定した部分定義域内のデータに基づいて、当該項が前記近似後のブール関数内に存在するか否かを判定する判定ステップ、からなる一連のプロセスを繰り返す。
【００３１】
請求項７の発明は、請求項１の発明を装置の観点から把握したものであって、請求項１の発明における入力ステップ、近似ステップ、合成ステップ、出力ステップに対応する各機能を有する入力部、関数抽出部、関数合成部、出力部、を備えたニューラルネットワーク分析装置において、関数抽出部が、請求項１の発明における項生成ステップと項結合ステップに対応する各機能を有する項生成部と項結合部を備えたことを特徴としている。ここで、項生成部は、請求項１の発明における限定ステップと判定ステップに対応する各機能を有するデータ限定部と判定部を備えている。請求項１３の発明は、請求項１の発明をコンピュータプログラムを記憶した記憶媒体の観点から把握したものであって、ニューラルネットワークを分析するためのプログラムを記憶した記憶媒体において、プログラムが、コンピュータに、請求項１の方法の各ステップに対応する各機能を実現させることを特徴としている。
【００３２】
このような構成を有する請求項１、請求項７、および請求項１３の発明によれば、ニューラルネットワークの各素子は、自然言語を抽象化した古典論理の命題であるブール関数によって表現されることになるので、人間にとって理解しやすい命題となり、どの素子がどのような命題や概念を学習したかが解る。しかも、近似するブール関数は学習データの定義域で最も近いものとなるので、予測値が入り込むことがなく、高精度のブール関数が得られる。
【００３３】
請求項２の発明は、請求項１のニューラルネットワーク分析方法において、項生成ステップの判定ステップが、限定した部分定義域において、各中間素子および出力素子の出力値の最低値が所定の閾値を越えているか否かを判定するステップと、最低値が所定の閾値を越えている場合に、当該項が近似後のブール関数内に存在すると判定するステップ、を含むことを特徴としている。請求項８の発明は、請求項２の発明を装置の観点から把握したものであって、請求項７のニューラルネットワーク分析装置において、項生成部の判定部が、請求項２の発明における項生成ステップの判定ステップに対応する機能を有することを特徴としている。このような構成を有する請求項２および請求項８の発明においては、素子の出力値の最低値を計算する場合に、学習データの定義域の範囲内について計算を行えばよいので、計算量が少なくて済み、処理の高速化が可能となる。
【００３４】
請求項３の発明は、請求項２のニューラルネットワーク分析方法において、近似ステップが、学習データの属性の大きさを判定する評定量を設定するステップと、評定量が一定値以下の属性は使用せず、評定量が当該一定値を越える属性のみを使用して各中間素子および出力素子を近似するステップ、を含むことを特徴としている。請求項９の発明は、請求項３の発明を装置の観点から把握したものであって、請求項８のニューラルネットワーク分析装置において、関数抽出部が、請求項３の発明における近似ステップに対応する機能を有することを特徴としている。請求項５の発明は、請求項３のニューラルネットワーク分析方法において、近似ステップが、評定量が一定値を越える属性に関して各素子の出力値の最低値を求めるステップと、評定量が一定値以下の他の属性に関して各素子の出力値の平均値を求めるステップ、を含むことを特徴としている。請求項１１の発明は、請求項５の発明を装置の観点から把握したものであって、請求項１０のニューラルネットワーク分析装置において、関数抽出部が、請求項５の発明における近似ステップに対応する機能を有することを特徴としている。
【００３５】
このような構成の請求項３、請求項５、請求項９、および請求項１１の発明においては、最低値の算定に影響を与える属性のみを使用して計算を行うため、重要でない属性に起因する不都合が解消される。
【００３６】
請求項４の発明は、請求項３のニューラルネットワーク分析方法において、前記近似ステップが、第１の最低値計算ステップ、抽出ステップ、誤差計算ステップ、第２の最低値計算ステップを含むことを特徴としている。ここで、第１の最低値計算ステップは、学習データの属性のうち評定量が最も大きな属性を使用して各素子の出力値の最低値を計算するステップであり、抽出ステップは、最低値に基づいて近似後のブール関数を抽出するステップである。また、誤差計算ステップは、近似後のブール関数と各中間素子および出力素子の出力値との誤差を計算し、得られた誤差と一定値とを比較するステップであり、第２の最低値計算ステップは、誤差が一定値を越える場合に、評定量が次に大きな他の属性を使用して各中間素子および出力素子の出力値の最低値を計算するステップである。そして、近似ステップにおいては、誤差が一定値以下になるか前回の誤差より大きくなるまで、第２の最低値計算ステップ、抽出ステップ、および誤差計算・比較ステップを繰り返すことにより、ブール関数と各中間素子および出力素子の出力値との誤差を小さくする。請求項１０の発明は、請求項４の発明を装置の観点から把握したものであって、関数抽出部が、請求項４の発明における誤差計算ステップに対応する機能を有する誤差計算部を備え、この誤差計算部により、請求項４の発明における近似ステップに対応する機能を実現するように構成されていることを特徴としている。このような構成を有する請求項４および請求項１０の発明においては、誤差の計算と他の属性の使用を繰り返すことでブール関数と素子の出力値との誤差を少なくすることができる。
【００３７】
請求項６の発明は、請求項１のニューラルネットワーク分析方法において、近似ステップが、学習データの定義域が連続の場合に、定性的表現である連続ブール関数により各中間素子および出力素子を近似するステップ、を含むことを特徴としている。請求項１２の発明は、請求項６の発明を装置の観点から把握したものであって、請求項７のニューラルネットワーク分析装置において、関数抽出部が、請求項６の発明における近似ステップに対応する機能を有することを特徴としている。このような構成を有する請求項６および請求項１２の発明によれば、学習データが離散の場合のみならず、連続の場合についても、ブール関数によって各素子を近似することが可能となる。
【００３８】
【発明の実施の形態】
（１）第１の実施形態
本発明の第１の実施形態を以下に示す。この実施の形態は、所定の定義域においてはユークリッド距離を導入することにより多重線形関数空間がユークリッド空間になることに着目し、多重線形関数の論理ベクトルをブール関数の論理ベクトルで近似するに当たり、閾値を０．５に設定したことを特徴とする。
（１−１）第１の実施形態の構成
（１−１−１）全体の構成...図１
図１は本実施形態の分析装置の全体構成を示すものである。本装置は、ニューラルネットワークの各中間素子あるいは出力素子数に応じて、複数の関数抽出装置Ａ１〜Ａｎ，Ｂを備えている。各関数抽出装置Ａ１〜Ａｎ，Ｂの入力側は、それぞれ学習後のニューラルネットワークの各中間素子及び出力素子の決定する重み係数及びバイアスなどを入力する入力手段１に接続されている。この入力手段１は、キーボードなどの逐次操作を行う入力装置のほかに、学習が完了したニューラルネットワークを構成する各素子のシグモイド関数をプログラムによって自動的に抽出し、これを各種のデータ転送手段を利用して入力するものも含む。
【００３９】
前記入力手段１には、重み係数及びバイアスの記憶手段２が接続されている。この重み係数とバイアスの記憶手段２１には、一例として、各素子に対する入力変数、その重み係数およびバイアスがシグモイド関数
Ｓ（ｐ1ｘ1＋...＋ｐnｘn＋ｂ）
の形で記憶されている。また、入力手段１には、各項を生成するに当たっての条件である閾値を格納した判定条件記憶部４が接続されている。
【００４０】
一方、各関数抽出装置Ａ１〜Ａｎ，Ｂの出力側は、各素子で得られたブール関数を合成するブール関数合成装置６に接続されている。このブール関数合成装置６は、中間素子の変数によって表現されている出力素子のブール関数に、入力データの変数によって表現されている中間素子を代入することにより、出力素子のブール関数を入力データの変数によって表現するものである。
【００４１】
ブール関数合成装置６には、生成されたブール関数を論理命題として出力する出力手段８が接続されている。この出力手段８としては、ディスプレイ、プリンタその他が使用されるが、生成された論理命題を容易かつ視覚的に把握できるものが好ましい。特に、本実施の形態においては、ニューラルネットワークの各素子を論理命題として取り扱うことにより、ニューラルネットワークの構成の冗長性を把握することを一つの目的としているので、ブール関数合成装置６の出力側に表現された命題が重複する中間素子を検出する冗長素子検出部７を設け、この冗長素子検出部７によって検出された中間素子を特異的に表現することのできる出力手段８を使用する。
【００４２】
（１−１−２）各ブール関数抽出装置の構成
図２は、本実施の形態における各中間素子あるいは出力素子の関数抽出装置Ａ１〜Ａｎ，Ｂを示す。
【００４３】
各関数抽出装置には、それぞれブール関数を抽出するに当たって使用する学習データの属性を検出する属性検出装置４１が設けられ、この属性検出装置４１の出力側には、それぞれ１次項生成部３1〜ｎ次項生成部３nが接続されている。また、この１次項生成部３1〜ｎ次項生成部３nの出力側には、各項生成部によって生成された各項を論理和で繋いでＤＮＦ式を生成する項結合装置５が設けられている。さらに、項結合装置５の出力側には、各項を結合して得られたブール関数と各素子の出力値の誤差を計算する誤差計算装置４２が設けられている。
【００４４】
本実施の形態においては、これら属性検出装置４１、項生成部３1〜３n、判定条件記憶部４、項結合装置５及び誤差計算装置４２が、出力素子及び各中間素子のシグモイド関数をブール関数に近似する関数抽出手段を構成している。
【００４５】
（１−１−３）項結合装置の構成
図３は、各関数抽出装置における各項生成部３の構成を示す。項生成部３は、データ限定装置３１、最低値計算装置３２、非重要属性処理装置３３及び関数判定装置３４の４つの下位装置から構成される。データ限定装置３１は、学習データを、近似後のブール関数に存在するかどうかを判定する項に対応する定義域に限定する。これにより最低値を探す範囲を限定する。最低値計算装置３２は、限定されたデータの中で重要な属性に関してのみ最低値を計算する。非重要属性処理装置３３は、重要でない属性に関しては平均を取る。関数判定装置３５は、判定値が閾値を越えたかどうかを調べる。
【００４６】
（１−２）第１の実施形態の作用
第１の実施形態の作用を図４ないし図６により説明する。図４は本実施の形態の基本的な作用を示すフローチャート、図５は図４の判定量の計算ステップ８の詳細を示すフローチャート、図６は図４の誤差を一定値以下とするためのステップ１３の詳細を示すフローチャートである。以下には、各ステップごとにその作用を説明する。
【００４７】
（１−２−１）基本的な作用…図４
［ステップ１］［ステップ２］…学習データの前処理
ニューラルネットワークを学習させるに当たり、前処理として、学習データの属性が離散か否かを判定して、離散値をとる属性についてはダミー変数によって２値で表現する。すなわち、離散属性は、そのままではニューロで学習できないので、何らかの工夫が要る。幾つか考えられるが、ここでは２値化を取り上げる。これ以外に連続値を対応させる方法もある。離散値をとる属性に対しては、ダミー変数によって｛０，１｝の２値で表現する。ダミー変数については次のように値を定める。
【００４８】
ｘij＝１    ...  属性ｉについて値ｊを持つとき
ｘij＝０    ...  その他のとき
例えば、属性Ａの属性値が｛ａ1，ａ2，ａ3｝のとき、属性値「ａ2」は「０，１，０」と表される。このとき、各属性の属性値の数をそれぞれｎiとすると、ダミー変数の数は、
【数９】
0003568181.tif 000010
になる。表１をダミー変数で処理すると表２のようになる。
【００４９】
【表１】
0003568181.tif 000011
【表２】
0003568181.tif 000012
［ステップ３］…判定条件の設定
ステップ３では、判定条件記憶部４に前記判定条件を設定する。この判定条件の設定は、本実施の形態の装置を構成する際に予め設定しておいてもよいし、入力手段１から条件として入力してもよい。すなわち、ステップ１のシグモイド関数に近似した後のブール関数に、項
【数１０】
0003568181.tif 000013
が存在する条件として、学習データの定義域の範囲内で、その項に対応する定義域でのニューロの値の最低値がある関数を越えているかどうかを判定する。本実施の形態においては、近似されたブール関数に、その変数が存在するか否かの閾値として、０．５を設定する。
【００５０】
［ステップ４］…次数の設定
抽出するブール関数のどの項について計算をするかを定めるもので、まず最初に最も低い次数の項について計算を行うために、次数を１に設定する。なお、次数とは一つの論理積の変数の数である。例えば上式のｘiは１次で、ｘjｘkｘlは３次である。
【００５１】
［ステップ５］…判定する項の選択
前記重み係数とバイアスの記憶手段２に記憶されている中間素子及び出力素子を表現したシグモイド関数の各変数の中から、近似するブール関数の最も低次の項（最初は前記ステップ４において１次に設定されている。）を選択して、前記ステップ３で設定された条件に従って処理を行う。従って、重み係数とバイアスの記憶手段２のデータは、最も低次な１次項生成部３１に送られ、以下述べるステップ５からステップ１１に従って、１次項が生成される。
【００５２】
［ステップ６］［ステップ７］…学習データの限定
項生成部３では、まず、データ限定装置３１により、学習データを、近似後のブール関数に存在するかどうかを判定する項に対応する定義域に限定する。これにより最低値を探す範囲を限定する。すなわち、データ限定装置３１は、学習データから、近似後のブール関数に存在するかどうかを判定する項に対応する定義域のデータを選択する。ここでそのようなデータがないときは、ステップ７の通りその項は存在しないと判定し、ステップ５に戻って新たな項を選択する。
【００５３】
［ステップ８］…判定量の計算
一方、ステップ７において、そのようなデータが存在するときは、判定する項について、その属性に従って、判定量を計算する。ここで、属性は属性検出装置４１により、後述する方法で、重要な属性（Ａ属性）と重要でない属性（Ｂ属性）に分けられているとする。重要でない属性に関しては、最低値を求めるときに関与させないために、種々の処理法が考えられるが、ここでは平均を取ることとする。他の方法も可能である。なお、このステップの詳細については、図５により後で説明する。
【００５４】
［ステップ９］［ステップ１０］…判定処理
計算された判定量が、ステップ３で設定された閾値を越えているか否かを判定し、越えている場合には、その項が存在すると判定する。
【００５５】
［ステップ１１］［ステップ１２］…項の生成の打ち切り
以上のようにして、項生成部３により項の生成を行った後は、項の生成が予め設定された次数に達したか否かを判定し、達した場合には項の生成を打ち切り、達しない場合には、ステップ１２において次数を１つ上げてステップ５に戻ることにより、次の高次の項について前記の判定量の計算及び閾値との比較を繰り返す。図２の例では、１次からｎ次までの各項生成部により、ブール関数の各項の生成を行い、得られた各項を次段の項結合装置５に出力する。
【００５６】
なお、低次の項で存在が確認された変数に関してはその項より高次の項での存在の判定の必要がない。簡単な例で言えば、ｘが存在することが分かればｘｙ，ｘｚ等は存在する（ｘ＝ｘＶｘｙＶｘｚ）ので、ｘｙ，ｘｚの存在の判定は必要ない。従って、このアルゴリズムは簡単化を同時に行なっている。
【００５７】
この点を例を挙げて説明する。
ｙ＝Ｓ（０．６ｘ1＋０．２ｘ2＋０．２ｘ3＋０．２ｘ4＋０．０５ｘ5−０．５）
をニューラルネットワークの素子とする。まずｘiに関してはｘ1のＳ（ｐ1＋ｐ6）のみが０．５以上なのでｘ1が存在することになる。つぎにｘ1を除外したｘiｘjに関してはどのＳ（ｐi＋ｐj＋ｐ6）の和も０．５を越えないのでｘiｘjと言う項は存在しないことになる。そして次にｘ1を除外したｘiｘjｘkに関してはｘ2ｘ3ｘ4のｐ2＋ｐ3＋ｐ4＋ｐ6が０．５以上なのでｘ2ｘ3ｘ4が存在することになる。ｘ1，ｘ2，ｘ3，ｘ4を除外するとｘ5が残るが、これ一つでは更に高次の項は作れないので、ここでアルゴリズムは終了する。従って存在するのはｘ1とｘ2ｘ3ｘ4となる。
【００５８】
なお、本実施の形態では、３次で打ち切ったが、１次で打ち切ることもできる。次数が高くなると、近似されたブール関数が表現する命題が複雑となり、理解が困難になるので、人間が直感的にあるいは比較的容易に理解できるような次数を予め設定しておくことが望ましい。
【００５９】
［ステップ１３］…項の結合
項結合装置５により、ステップ１１で生成された各項を論理和で接続してＤＮＦ式を生成し、中間素子及び出力素子のシグモイド関数を近似するブール関数を得る。すなわち、１次項生成部３1〜ｎ次項生成部３nで生成された各項を項結合装置５において論理和で接続することにより、近似したブール関数を求める。前記の例であれば、生成された項ｘ1とｘ2ｘ3ｘ4の論理和ｘ1Ｖｘ2ｘ3ｘ4が求めるブール関数となる。
【００６０】
［ステップ１４］…結果の出力
上述のようにして得られたブール関数を出力し、その後その関数を誤差計算装置４２により各素子の出力値と比較することで誤差を計算し、誤差が一定値よりも大きい場合には、重要な属性をさらに選択して、再度判定量の計算を行う。一方、誤差が一定の値以下の場合には、結果を出力する。この結果は、各素子ごとに得られるので、その後さらにブール関数合成装置６によって、中間素子を表現するブール関数と出力素子を表現するブール関数とを合成し、中間素子の出力で表現されていた出力素子の論理命題を入力変数の表現に書き換える。
【００６１】
すなわち、前記のようにして生成されたブール関数のうち、出力素子を表現するブール関数は、その入力側に接続された中間素子を変数として表現されている。そのため、入力データの内容に基づいて出力素子を分析することはできない。そこで、本ステップにおいては、出力素子の項結合装置５で生成されたブール関数の変数に、各中間素子の項結合装置５で生成されたブール関数の変数を代入することにより、出力素子のブール関数をニューラルネットワークに対する入力変数によって表現する。この処理は、図１のブール関数合成装置６によって実施される。
【００６２】
また、前記のようにして、各項結合装置５及びブール関数合成装置６によって得られた各素子の分析結果は、ブール関数、即ち人間が理解できる論理命題として出力手段８から出力される。この場合、冗長素子検出部７によって同一のブール関数に近似された素子があった場合には、出力手段８において特異的な出力がなされ、分析者が容易にそれを判別することができる。このような出力は、中間層を構成する素子が多数ある場合に有効である。
【００６３】
（１−２−２）判定量の計算ステップ
前記図４のフローチャートにおける判定量の計算ステップ８は、図３の項生成装置を使用して、図５に示すような次のステップから構成されている。
［ステップ８１］
前記ステップ６においては、学習データ（Ｄ０）から、近似後のブール関数に存在するかどうかを判定する項に対応する定義域のデータ（Ｄ１）を選択する。ここで、そのようなデータが存在するときは、データ限定装置３１により、判定量Ｖをその項に肯定で含まれる変数（肯定変数）に対応する重み係数の和とバイアスの和とする。すなわち、
Ｖ＝Ｓ（（肯定変数の重みの係数の和）＋バイアス）
とする。
【００６４】
［ステップ８２］
最低値計算装置３２によって、ステップ６において選択された学習データＤ１の中で、重要な属性であるＡ属性に関して、ニューロ、即ち
Ｓ（ｐ1ｘ1＋...＋ｐnｘn＋ｂ）
の最低値を計算する。この計算をするときには、前段階で、その項に対応する定義域にデータを限定しているので、その項に含まれる変数の値はすでに１か０に固定されているから、最低値を計算するときには、Ａ属性に含まれる変数のみが関わる。その最低値の値は、
Ｖ＝Ｓ（（肯定変数の重みの係数の和）＋バイアス＋Ａ属性の最低値）
となる。
【００６５】
なお、重要な属性の決定は、属性検出装置４１によって行われるが、その方法は図６のフローチャートによって後述する。
【００６６】
［ステップ８３］
一方、重要でない属性に関しては、最低値を求めるときに関与させないために、種々の処理法が考えられるが、ここでは平均を取ることとする。他の方法も可能である。すなわち、非重要性処理装置３３によって、上記判定量Ｖに、Ｂ属性の平均値を付加すると、
Ｖ＝Ｓ（（肯定変数の重みの係数の和）＋バイアス＋Ａ属性の最低値＋Ｂ属性の平均値）
となる。
【００６７】
このようにして、判定値Ｖが求められた後は、前記ステップ９に示すとおり、閾値判定装置３４により、上記判定値Ｖが閾値を越えたかどうかを調べる。ここでは、前記判定条件記憶部４に記憶された閾値０．５を使用する。すなわち、判定量Ｖが、０．５を越えていればその項は存在し、越えていなければその項は存在しない。
Ｖ＝Ｓ（（肯定変数の重みの係数の和）＋バイアス＋Ａ属性の最低値＋Ｂ属性の平均値）＞０．５
【００６８】
（１−２−３）判定量の計算の例
例えば、２値の３属性（ｘ1，ｘ2，ｘ3）からなる表３のようなデータを考える。
【００６９】
【表３】
0003568181.tif 000014
この場合に学習データの定義域は（０，０，０）、（１，０，０）と（１，１，０）であり、ニューラルネットワークの素子は
Ｓ（３ｘ1＋４ｘ2＋２ｘ3−１）
とし、ｘ2をＡ属性に属すとし、ｘ3をＢ属性に属すとする。いまｘ1が近似後のブール関数に存在するかどうかの判定を行うとする。まず、データ限定装置３１により、学習データ（Ｄ０）の中から、近似後のブール関数に存在するかどうかを判定する項に対応する定義域のデータを選択する（Ｄ１）。この結果、上記の例ではデータ２と３が選択される。判定量Ｖをその項に肯定で含まれる変数（肯定変数）に対応する重み係数の和とバイアスの和とする。この場合には
Ｖ＝Ｓ（３−１）＝Ｓ（２）
となる。
【００７０】
次に、最低値計算装置３２により、選択された学習データＤ１の中で、Ａ属性に関して、ニューロの最低値を計算する。この計算をするときには、前段階で、その項に対応する定義域にデータを限定しているので、その項に含まれる変数の値はすでに１か０に固定されている。この例では１に固定されている。最低値を計算するときは、Ａ属性に含まれる変数のみが関わる。この場合にはｘ2であり、データ３ではｘ2＝ｌ、データ２ではｘ2＝０であるから、最低値はｘ2＝０の時の０となる。したがって、
Ｖ＝Ｓ（２＋０）＝Ｓ（２）
となる。
【００７１】
さらに、非重要性処理装置３３により、上記判定量に、Ｂ属性の平均値を付加する。この場合には、Ｂ属性に属す変数はｘ3なので、これで平均を取る。平均の取り方は幾通りか考えられるが、ここでは限定された学習データで平均を取ることにする。限定された学習データはデータ２とデータ３で、そのいずれでもｘ3＝０なので、平均値は０となる。したがって
Ｖ＝Ｓ（２＋０）＝Ｓ（２）
となる。
【００７２】
閾値判定装置３４において、上記判定値が閾値を越えたかどうかを調べる。ここでは、その閾値を０．５にしておく。
【００７３】
Ｖ＝Ｓ（２）＞０．５
なので、項ｘ1は近似後のブール関数に存在することになる。
【００７４】
（１−２−４）重要な属性数の決定
次に、前記のステップ８及び各項生成部において最低値を計算するのに必要な、重要な属性を検出する方法を説明する。
【００７５】
すなわち、重み係数を全部使用すると、絶対値の小さい重み係数は、重要でないばかりでなく雑音と同等レベルの有害な存在であり、
・複雑な命題が生成される。
・精度の悪い命題が生成される。
等の不都合なことが起こる。
【００７６】
そこで、属性は後述する方法で、重要な属性（Ａ属性）と重要でない属性（Ｂ属性）に分けるものとする。重要な属性としては、絶対値が一定値を越える重み係数のみを使用することが考えられる。すなわち、ニューラルネットの素子の重み係数を絶対値の大きさに並べる。
【００７７】
【数１１】
0003568181.tif 000015
この中から絶対値が一定値を越える重み係数のみを使う。連続の時はこれで良いが、離散の時は、2値化している場合は、ある属性に属する変数の重み係数の２乗の和を変数の数で割った値、
【数１２】
0003568181.tif 000016
を重み係数の絶対値の代わりに用いる。ただしｎはその属性変数の数である。別の言い方をすれば、その属性値の数である。
【数１３】
0003568181.tif 000017
【００７８】
また、本実施の形態では、前記ステップ１３に示したように、重要な属性を幾つとするかは、ニューロと近似したブール関数の誤差で決めるものとする。すなわち、図６のフローチャートに示すように、まず最も絶対値の大きい属性のみで項生成部３によりブール関数を抽出し（ステップ１３１）、そのブール関数と素子の出力値との誤差を誤差計算装置４２により計算する。その誤差が一定値以内であれば（ステップ１３２）そこで停止する。誤差が一定値より大きい場合には、次に大きい重み係数も使用して誤差を計算する（ステップ１３３）。以下、同様にして新たなブール関数の抽出を行い、誤差が一定値以下になるか（ステップ１３４）、前の誤差より大きくなれば（ステップ１３５）、そこで停止する。なお、新たに抽出したブール関数の誤差が前のブール関数の誤差よりも大きい場合には、前のブール関数の抽出結果を出力して停止する（ステップ１３６）。
【００７９】
誤差の計算の仕方は、各定義域でのニューロの値とブール関数の差の二乗の和である。たとえば、図１１の中間素子１では、
ｔ1（１，１）
＝Ｓ（  ２．５１・１−４．８０・１−０．８３）
＝Ｓ（−３．１２），
ｔ1（１，０）
＝Ｓ（  ２．５１・１−４．８０・０−０．８３）
＝Ｓ（１．６８），
ｔ1（０，１）
＝Ｓ（  ２．５１・０−４．８０・１−０．８３）
＝Ｓ（−５．６３），
ｔ1（０，０）
＝Ｓ（  ２．５１・０−４．８０・０−０．８３）
＝Ｓ（−０．８３）．
なので、ブール関数をＢ（ｘ，ｙ）とすると、誤差は、
（（ｔ1（１，１）−Ｂ（１，１））2＋（ｔ1（１，０）−Ｂ（１，０））2＋（ｔ1（０，１）−Ｂ（０，１））2＋（ｔ1（０，０）−Ｂ（０，０））2）／４
となる。
【００８０】
（２）第２の実施形態
第２の実施形態は、属性が連続の場合である。前記の実施形態では、離散領域でニューロをブール関数で近似してきたが、これと同様のことを連続領域で行うには、まず離散領域での行為を整理する必要がある。離散領域で行ってきたことは、ニューロをブール関数でユークリッド距離で近似した、ということであった。さらに、離散領域のニューロは多重線形関数であり、その多重線形関数の空間はユークリッド空間であった。
【００８１】
（２−１）多重線形関数について
多重線形関数とは、一般にｎ関数で言えば
【数１４】
0003568181.tif 000018
である。但しａiは実数、ｘ1は変数、ｅ1は１か０である。例えば２変数で言えば
ａｘｙ＋ｂｘ＋ｃｙ＋ｄ
である。この多重線形関数は各々の変数に関して言えば線形であるが、全体としては非線形である。また、
【数１５】
0003568181.tif 000019
ただし
【数１６】
0003568181.tif 000020
のような項を含まない関数とも言える。ａｘ＋ｂは厳密には線形でなく、アフィンである。従って、上記の関数は多重アフィン関数と呼ぶのが適切かも知れないが、多くの分野でａｘ＋ｂを線形と呼んでいるので、上記の関数を多重線形関数と呼ぶことにする。
【００８２】
ｋ次多重線形関数とはその関数の最高次の項がｋである関数のことである。たとえば、
ａｘｙｚ＋ｂｘｙ＋ｃｙ＋ｄ
は最高次の項ａｘｙｚが３次であるから、３次多重線形関数になる。
【００８３】
ところで、前記従来技術の（３−１−４）項で説明した通り、「ニューラルネットワークが学習できる関数は定義域が離散の場合は多重線形関数である。」は、定理である。この証明は、定義域が離散の場合はダミー変数を導入することで定義域を２値にできる。従って関数はｎ変数次の時は
【数１７】
0003568181.tif 000021
となる。定義域が｛０，１｝なので、
【数１８】
0003568181.tif 000022
が成立する。従って、
【数１９】
0003568181.tif 000023
の関数は多重線形関数になる。
【００８４】
（２−２）定義域が連続の場合
定義域が連続の場合は何らかの方法で［０，１］に正規化できる。たとえばデータの最大値と最小値を持ってきて［０，１］に正規化するのがその一つの方法である。したがって、定義域は［０，１］とする。離散での手法を連続に拡張するのであるが、離散ではニューロをブール関数で近似した。連続では、ブール関数に相当する表現系を連続で求めねばならない。即ち、［０，１］での、ブール関数に相当する定性的な表現系を考えなければならない。連続領域での定性的表現でもっとも簡単でわれわれが馴染んでいるものは比例、反比例である。そこで、比例、反比例を定式化することを考える。図７は比例と反比例である。比例は通常の正比例であるが、反比例は通常の反比例（ｙ＝−ｘ）とは少し違い、ｙ＝１−ｘとなっている。理由はｙ＝１−ｘがブール関数の否定の自然な拡張であるからである。なお比例は肯定の自然な拡張である。肯定、否定以外にブール関数では論理積と論理和がある。［０，１］でこれに相当する演算を考え、先の比例、反比例と合わせて、［０，１］での定性的表現系とする。この表現系は［０，１］での最も簡単な定性的表現系であると言える。［０，１］での論理積、論理和もプール代数の論理積、論理和を自然に拡張して得られる。この定性的表現系はブール関数の公理を満たすため、ここでは連続ブール関数と呼ぶ。
【００８５】
定性的表現が欲しいのであるから、何らかの方法で定量的量は無視されなければならない。たとえば二つの関数Ａ，Ｂを考える。図７のＡ，Ｂは違う関数であり、また正比例ｘとも違う。しかし二つの関数は比例と言って良い。即ち独立変数が増加するにしたがってその関数の値は単調増加になっている。もし比例という定性的特徴だけに注目するのならば、この３個の関数Ａ，Ｂ，ｘを同一視しなければならない。すなわち、今、求めようとしている定性的表現系では、この３個の関数は同じものでなければならない。すなわち、その定性的表現系では、
【数２０】
0003568181.tif 000024
はｘと同一視されねばならない。数学的には、何らかのノルムが導入され、そのノルムでは上記の３個の関数の距離が０とならねばならない。そのような定性的ノルムは数学的に実現できる。
【００８６】
離散領域では、ニューロは多重線形関数であったが、［０，１］では、必ずしもそうではない。しかし、上述の定性的表現を用いればニューロは多重線形関数になり、さらにその多重線形関数の空間は上述の定性的ノルムでユークリッド空間になる。そしてニューロは定性的表現系である連続ブール関数に近似される。
【００８７】
（２−３）定義域が離散の場合
定理定義域が｛０，１｝の場合、内積＜ｆ，ｇ＞を次のように定義すると多重線形関数空間はユークリッド空間になる。
【００８８】
【数２１】
0003568181.tif 000025
但しτ（ｘn）＝ｘである。
【００８９】
定義ノルム｜ｆ｜は以下のように定義される。
｜ｆ｜＝＜ｆ，ｆ＞1/2
【００９０】
上記のノルムが今まで議論してきた定性的ノルムである。上式のτが積分記号の中に存在することによって、上記ノルムが定性的ノルムになっている。それはτがｘnとｘの同一視を実現しているからである。
【００９１】
（２−４）連続ブール関数
次は、定性的表現系である連続ブール関数であるが、その関数形はブール関数と同じである。その論理演算は以下の通りである。定義関数ｆ，ｇに対して論理積、論理和、否定を以下のように定義する。但し以下の和、差、積は初等代数の和、差、積である。
（１）  論理積  τ（ｆｇ）
（２）  論理和  τ（ｆ＋ｇ−ｆｇ）
（３）  否定  τ（１−ｆ）
ブール関数の定義域を｛０，１｝から［０，１］へ拡張した関数は、上記の定義の論理演算でプール代数の全公理を満たすので、連続ブール関数と呼ぶ。たとえば、
ｘ＋ｙ−ｘｙ（＝ｘＶｙ）
１−ｙ（＝￣ｙ）
は連続ブール関数である。ただし、ｘ，ｙ∈［０，１］である。計算例は以下の通りである。
【００９２】
（ＸＶＹ）Λ（ＸＶＹ）＝ＸＶＹ
は以下のように計算される。
τ（（ｘ＋ｙ−ｘｙ）（ｘ＋ｙ−ｘｙ））
＝τ（ｘ2＋ｙ2＋ｘ2ｙ2＋２ｘｙ−２ｘ2ｙ−２ｘｙ2）
＝ｘ＋ｙ＋ｘｙ＋２ｘｙ−２ｘｙ−２ｘｙ
＝（ｘ＋ｙ−ｘｙ）
【００９３】
（２−５）第２実施の形態の効果
上述のように、連続領域の場合、即ち正式化して［０，１］の場合でも、離散領域とほぼ同等のことが成立するので、定性的ノルムでユークリッド空間になった多重線形関数空間で、ニューロを連続ブール関数に近似することができる。この定義域［０，１］の多重線形関数空間内での近似は、定義域｛０，１｝の多重線形関数空間内での近似と全く同じであるので、離散のアルゴリズムがそのまま使えることになる。但し、誤差計算のところの定義域が、連続の場合は［０，１］なので、｛０，１｝に近似する必要がある。たとえば２変数ｘ，ｙの場合、ニューロの学習データの定義域が（０．７，  ０．１）であれば、これを（１，０）に近似する。
【００９４】
そこで、第２実施の形態では、図８に示すように、項生成装置３において、データ限定装置３１の前段に定義域変換装置３５を設けることにより、連続領域の場合であっても、図３に示した離散の場合同様に項を生成することが可能になる。
【００９５】
（３）他の実施の形態
本発明において、線形関数Ｓ（・）はニューラルネットワークの各素子の出力値を表す出力関数であるが、シグモイド関数である必要はない。出力関数に関する制約は広義単調であることである。即ち広義単調増加でも広義単調減少でも良く、不連続点があっても良い。ちなみに、シグモイド関数は単調増加である。また、閾値の０．５は他の数値でも良く、最尤法等で求めることも考えられる。閾値の０．５は多重線形関数空間にユークリッド距離を導入したから決まる値である。多重線形関数空間に離散確率分布の距離を導入すると、第２の実施の形態に示すように、ＫＬ情報量がその距離になり、このＫＬ情報量を最小にするように閾値を決める方法もある。ＫＬ情報量を最小にすることは最尤法である。ＫＬ情報量（Kullback−Leibler 情報量）は、与えられたデータから真の確率分布を推定する際に、モデルと真の分布の距離を測る規準の１つとして知られている。
【００９６】
【実施例】
前記のような構成を有する実施の形態の装置及び方法によって、学習後のニューラルネットワークを分析した実施例を説明する。なお、各実施例において、近似したブール関数を生成する場合に判定条件としては、閾値０．５を採用した。
【００９７】
（１）第１実施例
第１実施例は、「選挙」のデータに関するものである。データ名はvoting-recordsである。これは１９８４年の米国議会の記録である。ニューラルネットワークに値を入力すべき属性はいくつかの政策であり、以下に示すように１６個ある。各属性についての属性値は政策に関する議員の賛否（ｙ，ｎ）である。クラスは議員の所属する政党で、ニューラルネットワークからは民主党と共和党のどちらか１個の値が出力される。
【００９８】
１；handicapped-infants ：ｙ，ｎ
２；water-project-cost-sharing：ｙ，ｎ
３；adoption-of-the-budget-resolution ：ｙ，ｎ
４；physician-fee-freeze：ｙ，ｎ
５；ei-salvador-aid ：ｙ，ｎ
６；religious-groups-in-schools ：ｙ，ｎ
７；anti-satellite-test-ban ：ｙ，ｎ
８；aid-to-nicaraguan-contras ：ｙ，ｎ
９；mx-missile：ｙ，ｎ
１０；immigration ：ｙ，ｎ
１１；synfuels-corporation-cutback：ｙ，ｎ
１２；education-spending：ｙ，ｎ
１３；superfund-right-to-sue：ｙ，ｎ
１４；crime ：ｙ，ｎ
１５；duty-free-exports ：ｙ，ｎ
１６；export-administration-act-south-africa：ｙ，ｎ
例えば、事例は次のようになる。
【００９９】
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  クラス
y  y  y  n  y  y  y  n  y   y   y   n   y   y   y   n  民主党
学習方法はバックプロパゲーションで反復は平均２乗誤差０．０１で停止している。学習には欠損値処理等が不要な２３２個の事例を用い、予測も同じデータで行っている。学習後のニューラルネットワークの予測正解率は１００％である。通常、学習データとテストデータは分けるが、本実験の場合はニューラルネットワークから得られる命題の正解率を調べるのが目的であるため、命題を得るニューラルネットワーク自体の正解率は１００％にしておくのが望ましいと考えた。なおニューラルネットワークの素子をブール関数で近似する際の低次からの項の生成は２次で終了している。中間素子数を０、３、４個、重み係数の初期値を３個で実験を行なった。その結果、得られた命題の正解率は表４の通りである。
【０１００】
【表４】
0003568181.tif 000026
中間層３  個で初期値１の場合には以下のような命題が得られた。
【０１０１】
民主党：
（physician-fee-freeze:n）Ｖ（adoption-of-the-budget-resolution:y ）（anti-satellite-test-ban:n ）（synfuels-corporation-cutback:y）
共和党：
(physician-fee-freeze:y)（（adoption-of-the-budget-resolution:n ）Ｖ(anti-satellite-test-ban:y) Ｖ（synfuels-corporation-cutback:n））
その他の場合にも同様な命題が得られた。
【０１０２】
（２）第２実施例
第２実施例は、キノコのデータを処理するニューラルネットワークに関するものである。キノコのデータは２２個の離散属性と、２つのクラス（食べられる、有毒である）からなり、実験に使ったデータ数は４０６２である。実験条件は選挙と同じである。その結果、得られた命題の正解率は表５の通りである。
【０１０３】
【表５】
0003568181.tif 000027
中間層３個で初期値１の場合には、以下のような命題が得られた。
【０１０４】
食べられるキノコ：
(gill-size:broad)((odor:almond) Ｖ(odor:anise)Ｖ(odor:none))毒キノコ：
(gill-size:narrow)Ｖ（odor:almond ）￣（odor:anise）￣（odor:none ）
他の場合も同様な命題が得られた。
【０１０５】
（３）第３実施例
第３実施例は、アヤメの分類を行うように学習されたニューラルネットワークの各素子について分析を行ったものである。データ名はirisである。アヤメのデータでは、がく片の長さ（＝ａと表すことにする）、がく片の幅（＝ｂとする）、花弁の長さ（＝ｃとする）、花弁の幅（＝ｄとする）、という４つの連続属性で事例を表し、クラスはアヤメの種類で、setosa、versicolour 、virginica の３個である。連続入力は［１，０］に正規化した。学習方法はバックプロパゲーション法である。反復回数は２００００回で打ち切った。命題の精度は、命題（連続ブール関数）の値が一番大きいクラスをそのデータのクラスとして計算した。得られた命題の正解率は表６の通りである。
【０１０６】
【表６】
0003568181.tif 000028
中間素子３個で初期値１の場合に、以下の命題が得られた。
【０１０７】
setosa: ￣ｃ￣ｄ；花弁の短いかつ花弁が細い
versicolour:ｃ￣ｄＶ￣ｃｄ；（花弁が長いかつ花弁が細い）または（花弁が短いかつ花弁が太い）
virginica: ｃｄ；花弁が長いかつ花弁が太い
ここで注意すべきは、上記の命題は連続ブール関数であるという点である。
【０１０８】
setosaでは、￣ｃ￣ｄが得られたが￣ｃ￣ｄmeans （１−ｃ）（１−ｄ）である。他の場合にも同様の命題が得られた。
【０１０９】
【発明の効果】
以上の通り、本発明によれば、ニューラルネットワークの各素子はブール関数に変換され、人間にとって理解しやすい命題になるため、どの素子がどのような命題、概念を学習したかがわかる。特に、ニューラルネットワーク全体が学習した命題を得たい時には各素子の命題を合成すれば良い。特に、本発明においては、各素子をブール関数で近似する場合に、与えられた学習データの定義域で最も近いブール関数を求めるようにしたので、高精度のブール関数を得ることができる。また、ブール関数の抽出に当たって、重要な属性に基づいて判定量を計算するようにしたので、重要でない属性に起因する不都合が解消され、抽出されるブール関数の精度が高くなると共に、理解しやすい命題が得られる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態における装置の全体構成を示すブロック図。
【図２】本発明の第１の実施形態におけるブール関数抽出装置の構成を示すブロック図。
【図３】本発明の第１の実施形態における項生成部の構成を示すブロック図。
【図４】本発明の第１の実施形態における各ステップを説明するフローチャート。
【図５】本発明の第１の実施形態における判定量の計算ステップを説明するフローチャート。
【図６】本発明の第１の実施形態における誤差の判定ステップを説明するフローチャート。
【図７】本発明の第２の実施の形態の実現可能性を説明するグラフ。
【図８】本発明の第２の実施形態における項生成部の構成を示すブロック図。
【図９】各変数の定義域におけるニューロの各素子の出力値と、それを近似したブール関数を示すグラフ。
【図１０】各変数の定義域におけるニューロの値と、それを近似したブール関数を示すグラフで、図８とは異なる素子の出力値を示す。
【図１１】ニューラルネットワークの一例を示す摸式図。
【符号の説明】
１…入力手段
２１…重み係数とバイアスの記憶手段
２２…判定条件記憶部
３…項生成部
３１…データ限定装置
３２…最低値計算装置
３３…非重要性処理装置
３４…閾値判定装置
３５…定義域変換装置
４１…属性検出装置
４２…誤差計算装置
５…項結合装置
６…ブール関数合成装置
７…冗長素子検出部
８…出力手段
【図１】
0003568181.tif 000029
【図２】
0003568181.tif 000030
【図３】
0003568181.tif 000031
【図４】
0003568181.tif 000032
【図５】
0003568181.tif 000033
【図６】
0003568181.tif 000034
【図７】
0003568181.tif 000035
【図８】
0003568181.tif 000036
【図９】
0003568181.tif 000037
【図１０】
0003568181.tif 000038
【図１１】
0003568181.tif 000039