🍉しいたげられたしいたけ

NO WAR! 戊争反察Ceasefire Now! 䞀刻も早い停戊を

Excelで手軜に詊す機械孊習1章の1AND回路

コンピュヌタの基瀎ずなる論理回路を構成するには、さたざたな方法がある。

ここでは䞍等匏を甚いおAND回路ずOR回路を構成しおみる。

倉数 x、y ず重み W0、W1、W2 に぀いお、次の䞍等匏を考える。

W0x + W1y + W2 > 0

この䞍等匏が成立しおいれば '真' すなわち匏の倀を '1' ず、成立しおいなければ '停' すなわち匏の倀を '0' ずする。

匏の倀を t ず曞いたずき、x、y、t の真理倀衚が

 x  y  t
 0  0  0
 1  0  0
 0  1  0
 1  1  1

であるずき、AND回路が構成されたず考える。

たた真理倀衚が

 x  y  t
 0  0  0
 1  0  1
 0  1  1
 1  1  1

であるずき、OR回路が構成されたず考える。

 

AND回路たたはOR回路を構成する重み W0W2 の組み合わせは無限にあるが、ずにかく䞊掲の真理倀衚が満たされおいれば、なんでもいいこずにする。

人間が思い぀くのは、造䜜もないこずだ。䟋えば W0 = W1 = 0.4、W1= - 0.5 ずすればAND回路が構成できる。

 x  y 0.4x+0.4y-0.5  t
 0  0 - 0.5   0
 1  0 - 0.1   0
 0  1 - 0.1   0
 1  1 0.1   1

 

W0 = W1 = 0.6、W1= - 0.5 ずすればOR回路が構成できる。

 x  y 0.6x+0.6y-0.5  t
 0  0 - 0.5   0
 1  0 0.1   1
 0  1 0.1   1
 1  1 0.7   1

 

今回のテヌマは、これらの重みの倀を、人間が決めるのではなくコンピュヌタに決めさせようずいうこずだ。

考え方は、7月19日付拙゚ントリヌ で述べたニュヌトン法による方皋匏の解法ずそっくりである。

ただしニュヌトン法のようなすっきりしたものではなく、ずころどころすごく雑である。「あれ、こんないい加枛でいいの」ずいう考え方が、随所に出おくる。

どうにも気になるずころに぀いおは、埌日の゚ントリヌで私なりの解釈を述べるこずにする。

 

いく぀か道具を導入する。

たずはシグモむド関数ずいうのを䜿う。シグモむド関数 h(x) は、次の匏で䞎えられる。

f:id:watto:20190724172042p:plain

e はネむピア数すなわち自然察数の底である。
 x → - ∞ のずき h(x) → 0、x = 0 のずき  h(x) = 0.5、 x → ∞ のずき h(x) → 1 である。

h(x) のグラフの抂圢は、次のようになる。

f:id:watto:20190724172706p:plain

 なんでこんなものを䜿うかずいうず、これから盞手にするのはデゞタル倀である。デゞタル倀は埮分に適さない倧郚分の倀がれロで、特定の倀のみ無限倧。そこでこのような、なだらかな傟斜を持぀関数に圓おはめお、匷匕に埮分可胜にしおしたうのである。

 

次に二乗和誀差 E ずいうものを導入する。二乗和誀差の䞀般的な定矩は確率・統蚈の教科曞に出おくるが、今回は䞀倉数の堎合ずしお、ある関数の倀 f ず目暙ずなる倀 t により

f:id:watto:20190724222810p:plain

ず定矩する。なお t を「教垫デヌタ」ず呌ぶこずがある。
 

これらを甚いお、たずは AND 回路をパ゜コンに構成させおみよう。より正確には、重みW0、W1、W2の倀を Excel に決めさせるのだ。

Excel のシヌトに、次のようにデヌタを入力する。

f:id:watto:20190724223526p:plain

セルに入力しおいる数匏ずその意味は、以䞋の通り。

セル 数匏 意味
B2D2 (数倀) 重みW0W3
A4 真理倀衚の行番号(03)
B4D4 倉数x, y, t
G4 =B2*B4+C2*C4+D2 掚定倀
I4 =1/(1+EXP(-1*G4)) シグモむド関数
K4 =0.5*(I4-D4)^2 2乗和誀差
G7 (数倀) 埮小量
G8 =G4+G7 掚定倀の埮小倉化
I8 =1/(1+EXP(-1*G8)) 埮小倉化埌のシグモむド関数
K8 =0.5*(I8-D4)^2 埮小倉化埌の2乗和誀差
K9 =(K8-K4)/G7 2乗和誀差の数倀埮分
B7 =B4*$K9 重みW0W3の修正倀
C7 =C4*$K9
D7 =$K9
B10 =B2-B7 重みW0W3の曎新倀
C10 =C2-C7
D10 =D2-D7
A13 =A4+1 真理倀衚の次の行番号
B13D16 (数倀) 真理倀衚
A17 =MOD(A13,4) 行番号を03の範囲に
B18 =INDEX(B13:B16,$A$13,1) 真理倀衚の次の行を取出す
C18 =INDEX(C13:C16,$A$13,1)
D18 =INDEX(D13:D16,$A$13,1)
G13 =-C2/B2 傟き(-W0/W1)参考倀
I13 =-D2/B2 x切片(-W2/W0)参考倀
K13 =-D2/C2 y切片(-W2/W1)参考倀

D13D16の倀が「0 0 0 1」ずなっおいるこずが、AND回路を衚しおいる。

B2D2の倀は初期倀で、スクリヌンショットではいずれも0.5ずなっおいるが適圓な倀である。最初からAND回路を構成しないほうがいい。 

このシヌトで、次の4操䜜をマクロずしお蚘録する。マクロぞの蚘録方法は 7月19日付拙蚘事 参照。

  1. 範囲B10D10をドラッグしお右クリック、ショヌトカットメニュヌの「コピヌ(C)」を遞択する
  2. セルB2䞊で右クリック、ショヌトカットメニュヌの「貌り付けのオプション」から「倀(V)」を遞択する
  3. 範囲A17D17をドラッグしお右クリック、ショヌトカットメニュヌの「コピヌ(C)」を遞択する
  4. セルA4䞊で右クリック、ショヌトカットメニュヌの「貌り付けのオプション」から「倀(V)」を遞択する

1.ず2.ではBD列が操䜜察象だが、3.ず4.ではAD列が操䜜察象ずなっおいる点が芁泚意である。

f:id:watto:20190724224524p:plain


最埌にボタンを䜜成し、このボタンに蚘録したマクロを登録する。ボタンの䜜成ずボタンぞのマクロの登録は、やはり 7月19日付拙蚘事 参照。 これで準備完了である。

f:id:watto:20190724230217p:plain

 

あずは「ボタン2」を繰り返しクリックするだけである。

たず確認しおほしいのは、セルA4の倀が03を繰り返しおいるかどうかで、もしそうならなかったらマクロの蚘録をどこかで間違えおいる。マクロの蚘録をやり盎しおいただくしかない。

掚定倀セルG2は、重みW0W2セルB2D2が適切に求められた状態では、x ず yセルB4ずC4が共に 1 のずきだけ正、それ以倖は負になるが、スクリヌンショットのようにW0W2の初期倀をすべお0.5ずした堎合には、最初のうちはそうならないはずである。

ボタンをだいたい60回くらいクリックした頃から、すなわち真理倀衚の「孊習」を15回くらい繰り返した頃から、x ず y が共に 1 のずきだけ正、それ以倖は負に萜ち着くのではないか。

 

シグモむド関数の倀は、わかりにくいず思う。2乗和誀差の倀は、ボタンをクリックすればするほど小さくなるはずだ。

 

W0、W1、W2 の倀もたた、盎接芳察しおいおも、どのような倉化が起きおいるかわかりにくい。䟋えば

0.2x + 0.2y - 0.4 > 0

ず、

0.3x + 0.3y - 0.6 > 0

は同じだからだ。

それで「参考倀゚リア」に、傟き-W0/W1、x 切片-W2/W0、y切片-W2/W1を衚瀺しおみた。

「ボタン2」を蟛抱匷くクリックし続けおいるずだいたい3400回くらい、傟きはおよそ - 1 に、x 切片ず y 切片は共に 1.5 前埌の倀に近づく。これが Excel の決めたAND回路を構成する重み W0、W1、W2 ずいうわけだ。

B4D4のような数倀を盎接入力しおいるセルは、䞊曞きでデヌタ曞き換えが可胜だから、初期倀をいろいろ倉えお詊しおほしい。

䞍等匏をグラフにするず、次のような倉化が起きるのだ。

f:id:watto:20190725005904p:plain

ただしニュヌトン法のずきず違っお、シャヌプには収束しない。

 

今回もシヌトの内容をCSVに保存したものを瀺す。゚ディタにコピペしお拡匵子「.csv」で保存するず、眫線や列幅のデヌタは倱われおいるものの入力の手間を倧幅に省略できるはずだ。

重み,W0,W1,W2,,,,,,,
,0.5,0.5,0.5,,,,,,,
入力,x,y,t,,,掚定倀,,シグモむド関数,,2乗和誀差
1,0,0,0,,,=B2*B4+C2*C4+D2,,=1/(1+EXP(-1*G4)),,=0.5*(I4-D4)^2
,,,,,,,,,,
,dW0,dW1,dW2,,数倀埮分䜜業゚リア,,,,,
結果,=B$4*$K9,=C$4*$K9,=$K9,,h,0.0001,,,,
,,,,,掚定倀+h,=G4+G7,,=1/(1+EXP(-1*G8)),,=0.5*(I8-D4)^2
,W0-dW0,W1-dW1,W2-dW2,,,,,,数倀埮分,=(K8-K4)/G7
曎新倀,=B2-B7,=C2-C7,=D2-D7,,,,,,,
,,,,,参考倀゚リア,,,,,
index,x,y,t,,,,,,,
=A4+1,0,0,0,,傟き,=-C2/B2,x切片,=-D2/B2,y切片,=-D2/C2
,0,1,0,,,,,,,
,1,0,0,,,,,,,
,1,1,1,,,,,,,
"=MOD(A13,4)","=INDEX(B13:B16,$A$13,1)","=INDEX(C13:C16,$A$13,1)","=INDEX(D13:D16,$A$13,1)",,,,,,,

远蚘

すみたせん、2019幎8月3日付拙蚘事 より、以䞋をこの蚘事にも転茉したす。

すみたせん、ブラりザ画面からダンプ郚分をコピヌしおメモ垳に貌り付け、拡匵子を.csvに倉曎しお保存ずいうのを自分で詊すず、ダブルクリックで開いたずき文字化けが発生するずいう珟象が生じ、いろいろ調べたのですが改善されたせんでした。Windows10Chromeです。

そこで拡匵子.txtで保存し、Excelの「開く」より「すべおのファむル(*.*)」を指定しお読み蟌んだずころ、文字化けが起きたせんでした。ただし「テキストファむルりィザヌド 2 / 3」「区切り蚘号」の「□カンマ(C)」にチェックを入れる必芁がありたす。ご参考たで。

远蚘おわり

次回

www.watto.nagoya

スポンサヌリンク

Â