マカロックとピッツはニューロンモデルを提案したわけではない

# McCulloch-Pittsはニューロンモデルを提案したわけではない

先日Rossenblattのパーセプトロンの論文を読んでみると，我々が知っているパーセプトロンとは異なったものが書かれてありました．そうなると，現在講義や専門書で説明されているニューラルネットワークの内容が本当に先人たちが開発したものそのものか疑いたくなります．そこで，我々が知っているMcCulloch-Pittsのニューロンモデルも本当にMcCullochとPittsが提案したものかどうか気になりました．McCulloch-Pittsのneuron modelの元論文を軽く読んでみましたが，そこに我々が知っているMcCulloch-Pittsのニューロンモデルの数式や図はありませんでした．実は，__McCullochとPittsはニューロンモデルではなくニューラルネットワークモデルを提案していたのです．__

McCullochとPittsの論文(McCulloch and Pitts, 1943)は古いため，用語も記法も現代と異なり極めて読みにくい論文です．Kleeneの論文(Kleene, 1956)も参考にしました．

## みんなが知ってるMcCulloch-Pittsのニューロンモデル

皆さんが知っているMcCulloch-Pittsのニューロンモデルは線形閾値素子と呼ばれるモデルだと思います．講義等で教わったMcCulloch-Pittsのニューロンモデルはニューロンは入力の総和が閾値を超えると１を出力する，といったものでした．
![mcculoch_neuron.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190459/bdf9fb87-40fb-f0f7-82e1-4cd13757d3bb.png)
McCulloch-Pittsのニューロンモデルの詳しい説明は皆さんの手元の資料を見てください．

## McCulloch-Pittsの前提条件

論文ではMcCullochとPittsはニューラルネットワークモデルを提案しています．彼らはニューラルネットワークモデルを提案するに当たり5つの前提条件を提示しています．

1. ニューロンの活動は全か無かの法則に従う．
2. ニューロンを興奮させるためには、ある期間内に一定の数のシナプスが興奮していなければならない．この数は以前の活動やニューロン上の位置に依存しない．
3. 神経系の中で唯一の重要な遅延はシナプスの遅延である．
4. 抑制性シナプスの活動は，その時点でのニューロンの興奮を絶対に阻止する．
5. ネットの構造は時間とともに変化しない．

彼らは，以上の前提条件を導入することで，ニューロンが論理素子，ニューラルネットワークが論理回路とみなせることを述べています．

1, 2の前提条件が線形閾値素子と関連があります．条件1はニューロンには閾値があり，その出力は0か1であることを示しています．条件2は閾値は興奮したシナプスの個数であるとしています．彼らは入力を興奮したシナプスの数としています．シナプスの個数をシナプス荷重だと考えれば，彼らのニューロンモデルは現代風の線形閾値素子の入力を離散化したものだと考えることができます．3で遅延に着目しているところが面白いですね．4によりニューロンおよびニューラルネットワークでNOT演算を可能としています．5は，ニューラルネットワークは学習しないことを意味します．

## McCulloch-Pittsのニューラルネットワーク

彼らが例示したニューラルネットワークの一部を見てみましょう．
![mcculoch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190459/eba95b35-8647-0a0d-292a-d063a80e498d.png)
今のニューラルネットワークやニューロンの模式図を見慣れていると妙な絵です（この図は彼らの図を元に作成しました）．ニューロンが逆三角にかかれています．不思議です．

それはともかく，それぞれのネットワークがどのような論理演算をするのか見ていきましょう．
(a)のネットワークは

$X_2(t) = X_1(t-1)$


の計算を行います．ここで，各ニューロンの出力を$X_i$とします．ニューロンはシナプスが2個以上から入力が来た場合発火します．この場合は，ニューロン1とニューロン2が2個のシナプスで繋がっていますので，ニューロン1が発火したときニューロン2が発火します．また，前提条件3より，シナプスで遅延が起こります．そのため，ニューロン2の出力は時間的に遅延分前のニューロン1の出力となります．1回の遅延は1としました．
(b)のネットワークは

$X_3(t) = X_1(t-1) \cdot \bar{X_2}(t-1)$

の計算を行います．詳しく見ていきましょう．興奮性入力はニューロン1から来ているので，ニューロン1が発火するとニューロン3は発火します．しかし，前提条件4から，抑制性シナプスは必ず発火を抑えるので，ニューロン2が発火したときは必ずニューロ
ン3は発火しません．これを真理値表で表すと次のようになります．

| X1 | X2 | X3 |
|----|----|----|
| 0  | 0  | 0  |
| 0  | 1  | 0  |
| 1  | 0  | 1  |
| 1  | 1  | 0  |

ここで，0は発火しない，1は発火するを表します．確かに，論理式通りの真理値表になります．もしニューロン1が発火し続けるとすると，(b)のネットワークはニューロン2のNOTが出力されることになります．

(c)は$X_3(t) = X_1(t-1) + X_2(t-1)$です．これはOR演算と呼ばれます．(d)は$X3(t) = X1(t - 1) \cdot X2(t-1)$でAND演算を行っています．(e)は$X_2(t) = X_1(t - 1) + X_1(t - 2)$です．ニューロン1の出力はニューロン2に直接送られるだけではなく，1つのニューロンを経由しても送られます．さらに，彼らの論文には，フィードバックも考慮されたネットワークも提案されています．

このように様々な論理回路が実現できています．AND演算もNOT演算も実現できるので，NANDも実現できます．NANDが実現できる時点で，彼らの前提条件を受け入れればニューラルネットワークはあらゆる論理演算が可能となります．つまり，ニューラルネットワークで現在のコンピュータと同等のことができるのです．なぜならば，コンピュータは論理演算を行っていて，様々な計算を可能としているからです．とはいえ，神経細胞の膜電位やシナプス伝達のダイナミクスはそんなに単純ではないので，未だにスパイキングニューラルネットワークによる演算が研究されているのです．

彼らの考えたニューラルネットワークは様々です．シンプルなフィードフォワードネットワークだけではなく，フィードバックも考慮されたネットワークも提案しています．ヘブ学習が提案されていない時代にもかかわらずMcCullochとPittsが様々なネットワークを考案した点はかなり先進的であったと思います．

## まとめ

McCulloch-Pittsの論文を読むと，彼らの論文には我々が知る線形閾値素子が露骨に出てきませんでした．前提条件として線形閾値素子に関わる文章が記述されているのみです．彼らの論文はニューラルネットワークを初めて提案したものでした．

一体，いつ，だれがMcCulloch-Pittsの研究をニューラルネットワークモデルではなく，線形閾値素子に変えたのでしょうか．

## 参考文献
- Mcculloch, W. & Pitts, W. (1943). A Logical Calculus of Ideas Immanent in Nervous Activity. Bulletin of Mathematical Biophysics, 5, 127-147.
- Kleene, S. (1956). Representation of Events in Nerve Nets and Finite Automata. Annals of Mathematics Studies, 34, 3-41.