はじめに
こんにちは。お久しぶりです。
私ごとですが転職しましたponponnsanです。
現在この記事を書いている時点では6日目なのですが、楽しくやらせていただいています。
なんせ自社開発である点がとても嬉しいです。守られている感じかします。
さて、今回は研修の課題図書でもある
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装についてのまとめを数回に分けて行いたいと思います。
実はこの本に出会ってからは2年ほど経ちますが、読んだことはないんですね。オライリーの本難しいと思って敬遠していた節があります。
代わりにYOUTUBEで当時は学習していました。
「ヨビノリ」や「AIcia Solid Project」は わかりやすく説明してくださるのでとてもおすすめです。
何をまとめるのか
さて、このまとめではpythonのコードを動かしたり、何か実装するということは行いません。
ちなみに、書籍のソースコードはこちらにまとめられています。
なので1章はとばし、2章からのスタートになります。
また、個人的に重要だと思うポイントを記載したいと思います。
2章 パーセプトロン
パーセプトロンとは、複数の信号を入力として受け取り、一つの信号を受信します。

図の⚪︎はニューロンやノードと呼ばれます。
パーセプトロンは複数ある入力信号のそれぞれに固有の重み(w1,w2)を持ち、その重みが起きければ大きいほど重みに対応する信号の重要性が高くなります。
それぞれの入力と重みを掛け、全てを合計します。この合計が閾値を超えた場合、「1」という信号を発します。「ニューロンの発火」と呼ばれることもあります。
上記を数式で表すと以下のようになります。

単純パーセプトロン
上記の数式により、
パーセプトロンでは、ANDゲートやNANDゲート、ORゲートが表現可能です。

実際のパーセプトロンでは、上記の数式にバイアス(b)がつくので、以下のようになります。

多層パーセプトロン
では、XORゲートはどうでしょうか?
実は、XORゲートはANDゲートのように単純に表せません。

そこで、パーセプトロンの層を増やすことを考えます。
以下の例では、第一層目でNANDとORを、第二層目でANDゲートを組み合わせ、XORゲートを表現しています。

層を増やすことにより、XORゲートを表現できるとわかりました。
パーセプトロンは、層を重ねることで、非線形のようなより柔軟な表現が可能になります。
