論理代数(ブール代数)と実験計画法への多変量非線形解析1

論理代数(ブール代数)と実験計画法への多変量非線形重回帰分析の適用について(荒井公康著)
 (論理学と代数学の同型性を巡って)
 (論理学の代数学への還元)
 (論理代数(ブール代数)を多変量非線形重回帰分析すると?その計算方法の確立!)
 (ウィトゲンシュタインもあきらめた論理定項の数学的意味を発見!)
 (実験計画法の直交表と論理代数の真理値表の類似性に着目!実験計画法への応用は可能か?)
 (実験計画法への多変量非線形重回帰分析の適用:材料開発への応用)
 (水溶液の話)
 (避雷器、バリスターの話:成功事例)
 (科学技術の話)
 (シェファーのストローク:NAND回路への書き換え)
 (命題定理の自動証明)
 (論理代数(ブール代数)と神経回路網の同型性)
 (人工知能のコネクショニズムとの関係)
 付録:実験計画法の解析手法への応用  付論1 付論2 付論3 付論4 付論5
     ニューラルネットワークとの関連 ブール代数&神経回路網 ブール環
論理的システムは、高度に非線形で、変数は離散的な値(通常は2値)をとるデジタル・システムであって、一般に複雑性がきわめて高い。したがって与えられた機能をできるだけ簡単に実現することが、経済性と信頼性を高める上で望ましい。2値論理システムの構成とその簡単化に関しては論理代数(ブール代数)が広く援用されている。
 数学科以外の学科で教えられる数学は、線形理論が多いので、わかりにくいかも知れないが、論理関数や論理変数に使われる、0,1という数字を普通の数字と考えて、重回帰分析をすると、ブールの論理代数(ブール代数)は極めて非線形な数式となることが分かる。この非線形性は組み合わせ効果によるもので、変数のクロスタームで表される。排他的論理和などを表す多変数のブール代数を表す数式を見たことのある人はいないはずである。論理和ならばあるかもしれない。
 実験計画法の直交表と論理代数(ブール代数)の真理値表は構造が似ている。論理代数を多変量非線形重回帰分析できれば、その計算法を実験計画法の解析に利用できる。バリスターと組成との関係のように、基礎方程式が存在しない場合には実験的に関係を求めなければならない。実験計画法の結果から求めた多変量非線形重回帰式は基礎方程式として利用できる。その式から特性が予測できる。
 このような数学は、実験計画法などの解析にも威力を発揮する。実験計画法の直交表と論理代数の真理値表は構造が似ているので、同じ計算方法が適用できる。実験計画法で問題にされる交互作用(相互作用、組み合わせ効果)も非線形項を考慮したもので、実験結果を非線形項を考慮した数式でまとめれば、予測計算などに極めて有効な手段となる。非線形ならば偏微分という操作が可能になるので、最適化方向も見つけやすくなる。線形の式では精度が落ちるし、平均値としての最適化方向しか明らかにならない。実験水準に応じた最適化方向を見出すには、非線形分析をしなければならない。
 よく知られているブール代数の公理系が、一般の代数と異なるのは、論理(演算)というものが、数式で表すと、極めて非線形なためである。これは組み合わせ効果によるものである。非線形の数学は難しく、私にも専門外でよく分からないが、私の投稿がきっかけになればと願っている。新しい数学の一分野に発展すればよいと願っている。
 排他的論理和などは、線形分離不可能で、人工的なニューラルネットワークでは、中間層を挿入し、バックプロパゲーションの手法で、問題の解決を行っているが、学習に時間がかかる。ここでは、そのようなことも関係している。最近の深層学習との関連も興味深いがよく分からない。ネットワークの中間層の構造を示唆しているのかも知れない。中間層の存在によって非線形な現象も認識可能になるからである。実験計画法の結果をネットワークに学習させることも可能だろう。
 「論理モデルとしての多重線形関数を用いた定性的命題獲得」という論題で月本洋(ツキモトヒロシ)さんという人が学位論文要旨をインターネット上に公開している。学生の頃、論理学の教科書で、命題論理の論理関数が代数的な多重線形関数に変形できることを学んだ。だが、逆に、多重線形関数から命題論理の論理関数の復元というのは困難だという印象を抱いていた。題材は同じようなものだが、私の場合は、命題論理関数の真理値表から多変量非線形重回帰分析によって多重線形関数を求めるということを行っている。その後に、真理値表と実験計画法の直交表の類似性から同じ計算法を実験計画法による実験結果に適用した。得られた非線型重回帰式に対しては最急傾斜法を適用して材料開発に応用した経験がある。問題設定は似ているが、目的のニュアンスは異なる。しかし、同じようなことを考える人がいるものだな、と不思議に思った。私も学位を貰えないものかな、とも思った。
 視覚研究で有名なマーは、機構(神経回路)から脳の情報処理を考えることの危険性を指摘し、計算論的アプローチの重要性を説いた。しかし、甘利俊一のようなアプローチもあり得る。神経細胞は互いに相互作用を及ぼし、組み合わせ効果から非線形性を獲得し、線形分離不可能な現象も認識できるようになるようである。神経回路の研究も大切だと思う。
「分子構造から生理活性を予測する一般的な手法として、定量的構造活性相関(QSAR)解析法が知られている。QSAR解析では分子構造から得られる多様な数値情報(分子記述子)と酵素活性のような生理活性との間の相関性・関連性を統計的に解釈することによって重回帰モデルに代表される数理モデルを構築する。近年では記述子と生理活性の間の非線形な関係を人工知能によるパターン認識よって解析し、より高精度な性能を有する予測モデルを構築したとする報告が増加している。」(植沢芳広「化学と工業2022年3月号)このような分野で、私の数学「論理代数(ブール代数)の多変量非線形重回帰分析」が役立つと思う。2022/04/04
この他、セラミックス、合金、触媒、複合材料など要因間に相互作用があり、特性と複数の要因間との関数関係が非線形になるような場合にも「論理代数(ブール代数)の多変量非線形重回帰分析」の手法が有効であると思う。2022/04/05
もう新しいことにはついていけないし、ついていく気力も失せた年齢なのであるが、頑張って、涌井良幸・涌井貞美著「ディープラーニングがわかる数学入門」(技術評論社)を読んでみた。仕事でAI関連をやっていたことがあるので、最近のAIの動向には興味がある。最小二乗法の考え方が分かれば理解できる内容であった。標本と予測値の誤差が最小になるようにパラメータを設定するという基本的で単純な考え方で最先端の深層学習も成り立っている。パラメータの数が膨大になるので誤差逆伝搬の手法が使われるのが、同じ最小二乗法を使う回帰分析などとの違いだ。考え方は単純なのだが、問題設定などが複雑で煩雑になるという印象を受けた。しかし、ディープラーニングの威力にはおどろかされるが、パターン認識などの領域に限られるようだ。2022/04/04
付論1:化学と数学と非線形性について
  濃硫酸には強力な脱水作用があり、これは硫酸分子と水の分子が強く結合するためで、水を含まない炭水化物からも、水素原子と酸素原子を2対1の比率でうばい、それらを黒く炭化します。濃硫酸は空気中の水分を吸収するため、乾燥剤として利用され、小生も学生の時、実験系に乾燥した空気を送り込むために、硫酸のトラップを作ったことがあります。硫酸と水とが混合すると激しく発熱し、多量の硫酸に水をそそぐと、加えた水が沸騰し硫酸をとびちらせるので危険で、多量の水に硫酸を少しずつ加えて希釈しなければならないことは、よく知られています。熱力学では溶解熱という概念があり、普通1モルの物質が液体に溶解するときに発生または吸収する熱量のことを言います。気体が液体や水に溶解する時は発熱が多いようです。硫酸、水酸化ナトリウム、エタノールなどが水に溶解する時は発熱、食塩、塩化アンモニウムの場合は吸熱となり、物質により異なります。また、溶液に溶媒を加えてうすめた時の、溶質1モル当たりの熱量の変化を希釈熱といい、希釈熱は溶液の濃度がうすいほど小さくなります。希釈熱は電解質、高分子溶液において、溶液中の電解質イオンや高分子などの溶質ー溶質、溶質ー溶媒間の相互作用に関する情報をふくんでいるので、物理化学の溶液論では重要な量です。
  以上は辞書にも書いてあることでしょう。さて、溶解熱では積分溶解熱(integral heat of solution)と微分溶解熱(differential heat of solution)とを区別する必要があります。いままで熱量という言葉を使ってきましたが、厳密に言うとエンタルピーという言葉を使う必要があります。硫酸の話に戻りますが、硫酸を絶えず攪拌しながら水にゆっくりと注いでいくと溶液はだんだんと暖かくなりますが、終わりに近づいてかなり濃厚な溶液に硫酸を加えるようになると加熱速度はずっと遅くなります。n1モルの水に1モルの硫酸を加えた時のエンタルピー変化を、特定の最終組成の溶液を作るための硫酸1モルあたりの積分溶解熱と呼びます。この値は溶液の濃度が小さいほど大きくなり、硫酸の場合、-96.19kJ/モルに収束します。この極限値を無限希釈への積分溶解熱(integral heat of solution to infinitedilution)と呼びます。積分溶解熱を硫酸と水のモル比に対してプロットすると、グラフが得られます。このグラフのある組成での勾配が微分溶解熱と呼ばれます。ある組成の溶液に対して、溶質を無限小変化させたときの積分溶解熱変化を微分溶解熱と考えてもよいです。化学の中にも随分と数学的概念が入っています。これは、一般に現象が非線形であるためでしょう。硫酸水溶液といった単純な系でさえ、濃度によって振る舞いが異なります。
付論2:送変電システムに組み込まれる機能性セラミックの組成計算
  小生が、T社にいた時に従事していた仕事ですが、これは「避雷器」という装置に関するものでした。「雷」という言葉が入っていますが、避雷針とか雷と直接関係のあるものではありません。送変電システムでは、変圧器、遮断器、断路器、避雷器などが、主に構成要素になっています。避雷器とは、送変電系統において、交流系統電圧が印加された状態で、雷サージ電圧が伝播してきた場合、直ちにこれを放電して線路の電圧を機器耐電圧以内に制限し、かつ雷サージのエネルギーを十分放出するとともに、機圧による続流は、これを遮断する自復能力を有し、開閉サージに対しても動作責務の範囲内で十分エネルギーを処理するものです。系統を保護するため、毎相対地間に接続される避雷器は異常電圧を一定値以内に抑制する能力があるため、系統の絶縁構成を決定する基準となります。簡単に言うと、避雷器は、発電所や変電所や電信柱の変圧器などを、異常電圧から保護する装置です。低い電圧に対しては絶縁体として振る舞いますが、高い電圧に対しては、抵抗が急激に抵抗値が低くなり、放電するような装置です。異常電圧が発生する理由ですが、落雷、遮断器の作動、送電線の地絡事故などが挙げられます。落雷があると、異常電圧が発生し、それが送電線に伝播します。遮断器というのは、超大型のスイッチのようなもので、小さな回路でも、スイッチを点けたり離したりすると火花が飛びますが、大電力では電力を遮断するだけで、高度な技術を要します。大電力では、遮断しても、アークの続流が空気中を継続して流れ、これを切断するためには、強力な空気流を吹き付けるとか、磁場を掛けるとかして、吹き消さなければならないのです。実際、何十年も大型のスイッチ(遮断器)を開閉する技術を開発するため、毎日遮断機をつけたり離したりといった部門もありました。もちろん手動ではなく、遠隔操作です。大電力を無理やり遮断した時も異常電圧が発生します。送電線はもちろん金属ですし、大地も導体ですから、送電線と大地とは、大きな容量のコンデンサを形成し、大量の電荷を蓄えています。したがって、何かの原因で送電線が切れて、大地に接地すれば、電荷が放出され異常電圧が発生します。これらの異常電圧から、変電所などの設備を絶縁破壊から守るのが「避雷器」なのです。
  これだけのことをする装置ですから、さぞや高度で複雑な装置だろうと思われるかも知れませんが、実際は大型のバリスターと呼ばれる機能性セラミックを積み重ねた単純な装置です。小生はこのバリスターの、いろいろな特性を制御する仕事をやっていました。バリスターとは非直線抵抗体とも呼ばれ、オームの法則には従わない抵抗体です。電圧が低い状態では絶縁体として振舞うのですが、電圧が高くなるにつれて、急激に抵抗値が低くなっていくような、不思議な抵抗体です。主成分ZnOにBi2O3,Sb2O3,NiO,Co2O3,MnO,Cr2O3,SiO2、Al2O3,B2O3,Ag2Oなどを添加して作ります。10種類程度の酸化物の成分ですから、随分と複雑な系です。これらの成分の濃度を動かして、特性を制御していました。話としては単純に聞こえるかもしれませんが、労力のいる作業で、4~5個の成分を動かした場合、成分間の相互作用があるので、計算機を使わないと解析できませんでした。この時、実験計画法というものを多用しました。(既に説明しましたね。)
  避雷器用のバリスターは、優れた電気的特性(強い非直線性)、課電寿命特性(長時間電圧が印加されても熱暴走しない)、放電耐量特性(大電流が流れても破壊しない)、が要求されます。電気的特性としては、なるべく非直線性の強いバリスターが求められます。避雷器には系統電圧が常時印加されるために、漏れ電流が流れるのですが、これが発熱原因となって、さらに抵抗が低くなり、更に発熱し、・・・と悪循環に陥り、熱暴走しないことが求められます。これが課電寿命特性です。また、大型のバリスターであるために、不均一になりがちで、抵抗の低いところに電流が集中し発熱することにより、高温を発し、周りに熱応力を生ずるために、大電流が流れた時に破壊してしまうバリスターもあります。これが、放電耐量特性です。なるべく均一性の高いバリスターを作る技術が求められます。
  以上が、大体、T社で従事していた仕事の内容です。私自身も理科系でありながら、入社するまで、「避雷器」なるものの存在さえ知りませんでした。理科系とは本当に広く深い世界だと思います。バリスター自身は、特に小型のものは、あらゆる機器に組み込まれているといっても過言ではありません。高い電圧に耐えられない部品の前には、必ずバリスターが使われます。
付論3:科学技術の営みの実際について
  不可知論とは、辞書によれば、「意識に与えられる感覚的経験の背後にある実在は論証的には認識できないという説。そういう実在を認める立場と、その有無も不確実とする立場がる。」とあります。不可知論が上記のようなものだとすれば、自然科学は全く正反対の方向で考えています。まず、素朴実在論を前提にしており、実在を論証しようとするわけではありません。そんなことが不可能なのは自明です。まず実在を無条件に認め、実在ないし、そこから派生する現象を把握し記述するのが自然科学であり、その知見を応用するのが技術です。
  不可知論が上記のもののようなものならば、観念論の一種であり、自然科学の実在論とは対立するものです。観念論と実在論は両立しません。どちらかを破棄しなければなりません。独我論、不可知論などの観念論を聞いて、理解できないわけではありませんが、現実離れした話にしか聞こえません。もしこのような主張ばかりならば、哲学は百害あって一利なしの、危険な学問でしょう。
  何故このようなことを言ったかというと、ある哲学系MLで、量子力学における観測問題を不可知論と勘違いした挙句、奇妙な問題提起がなされたからです。量子力学における観測問題はハイゼンベルクの不確定性原理から派生する現象で、数式で示すことができます。
  科学技術の営みの本質については、このページを全部読んで頂ければ、自明と思いますが、注意を喚起するためにも、ここで補足しておきたいと思います。
付論4:シェファーのストローク(縦棒演算)について
 シェファー(H.M.Sheffer)は、1913年に、唯一つの論理記号を用いて、否定、論理積、論理和、含意、双条件を表す方法を導いた。p|qは、p、qがともに真のときにかぎって偽となる、天邪鬼な演算である。
        p  q   p|q
        1  1    0
        1  0    1
        0  1    1
        0  0    1
別の表現では
        p|q = ¬(p∧q) = ¬p∨¬q
シェファーのストロークを使うと
        否定は ¬p = p|p
        論理和は p∨q = (p|p)|(q|q)
となることは、真理表を使ってもわかるが、次のようにしても導くことができる。
        p|p = ¬p∨¬p = ¬p
        (p|p)|(q|q) = (¬p)|(¬q) = (¬¬p)∨(¬¬q) = p∨q
良く知られているように、論理積、含意、双条件は否定と論理和で表されるから、それらをシェファーのストロークで表すことができる。
 良く分からなかったかも知れないが、現代的な言葉で言えば、シェファーのストロークとはNAND回路のことである。上に書いたことは、昔の記号論理学の教科書に書いてあることである。上のことを現代的な言葉で言い直せば、次のようになる。NAND回路の入力側を一つにまとめてしまうとNOT回路になる。NAND回路の出力をNOT回路で反転すればAND回路になる。NAND回路一つとNOT回路二つでOR回路を作ることができる。論理回路を設計するときにはデジタルICを使うが、論理回路の種類が多いと、ICもその種類だけそろえなければならない。しかし、NAND回路のICが一種類あれば、AND回路やOR回路、NOT回路をNAND回路の組み合わせで構成でき、部品の種類が少なくて済み、とても便利である。
 このように、ある論理記号をもとにとって、他の論理演算、従って論理式を表すということは、論理的な問題であるとともに、計算機の製作の上でも重要な課題のひとつであった。
 シェファーのストロークに関しては、ヴィトゲンシュタインの「論理哲学論考」などにも言及がある。
論理哲学論考5・511
すべてを包括し、世界を反映する論理が、かくも特殊なかぎ針と運針でこと足りるのはなぜか。ひとえにこれらすべてが、限りなく精巧な網目細工へと、世界を映す巨大な鏡へと、編みあげられるからだ。
 任意の論理回路のNAND回路への変換は、下記のLisp関数で行える。再帰を用いている。
(defun rewrite (l)
  (cond ((atom l) l)
      ((equal (first l) 'NAND)
       (list 'NAND
          (rewrite (second l))
          (rewrite (third l))))
      ((equal (first l) 'NOT)
       (rewrite (list 'NAND (second l) t)))
      ((equal (first l) 'AND)
       (rewrite (list 'NOT
                (list 'NAND (second l) (third l)))))
      ((equal (first l) 'OR)
       (rewrite (list 'NAND
                (list 'NOT (second l))
                (list 'NOT (third l)))))
      ((equal (first l) 'XOR)
       (rewrite (list 'AND
                (list 'OR (second l) (third l))
                (list 'OR
                   (list 'NOT (second l))
                   (list 'NOT (third l))))))
      (t (list 'error l))))
 バッククォートを使うと、次のようにもっと簡潔簡明に書ける。
(defun rewrite (l)
  (cond ((atom l) l)
      ((equal (first l) 'NAND)
      `(NAND ,(rewrite (second l)) ,(rewrite (third l))))
      ((equal (first l) 'NOT)
       (rewrite `(NAND ,(second l) t)))
      ((equal (first l) 'AND)
       (rewrite `(NOT (NAND ,(second l) ,(third l)))))
      ((equal (first l) 'OR)
       (rewrite `(NAND (NOT ,(second l)) (NOT ,(third l)))))
      ((equal (first l) 'XOR)
       (rewrite `(AND (OR ,(second l) ,(third l))
                 (OR (NOT ,(second l)) (NOT ,(third l))))))
      (t `(error ,l))))
命題論理の定理の自動証明も次のように簡潔に記述される。
(defun and-or-not (s)
  (cond ((atom s) s)
      ((equal (first s) 'NOT)
      `(NOT ,(and-or-not (second s))))
      ((equal (first s) 'AND)
      `(AND ,(and-or-not (second s))
           ,(and-or-not (third s))))
      ((equal (first s) 'OR)
      `(OR ,(and-or-not (second s))
          ,(and-or-not (third s))))
      ((equal (first s) '->)
      `(OR (NOT ,(and-or-not (second s)))
              ,(and-or-not (third s))))))
(defun de-morgan (s)
  (cond ((atom s) s)
      ((equal (first s) 'NOT)
       (move-not (second s)))
      ((equal (first s) 'AND)
      `(AND ,(de-morgan (second s))
           ,(de-morgan (third s))))
      ((equal (first s) 'OR)
      `(OR ,(de-morgan (second s))
          ,(de-morgan (third s))))))
(defun move-not (s)
  (cond ((atom s) `(NOT ,s))
      ((equal (first s) 'NOT)
       (de-morgan (second s)))
      ((equal (first s) 'AND)
      `(OR ,(move-not (second s))
          ,(move-not (third s))))
      ((equal (first s) 'OR)
      `(AND ,(move-not (second s))
           ,(move-not (third s))))))
;;;
;;; (prove '(OR a (NOT a)) ===> (OR a (NOT a))
;;; (prove '(AND (-> a a) (-> b b))) ===> (AND (OR (NOT a) a) (OR (NOT b) b)))
;;;
(defun prove (s)
  (de-morgan (and-or-not s)))

コメント

このブログの人気の投稿

パソコンと音楽の話

創価学会員および公明党議員による凶悪犯罪について

南河原公園のベンチから