【初心者向け】ねこでも分かるニューラルネットワーク超入門

![IMG_0489.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/93e891ee-1dc8-fa4e-7bb5-5a1922ffe589.png)


#書いてあること
1.ニューラルネットワークって？
2.ユニット？重み？バイアス？
3.活性化関数
4.NNの全体像
5.まとめ

ニューラルネットワークの全体像をふわっと理解することを目標にしています。数式とかは使ってないので数学アレルギーの人も是非見てください。


#1.ニューラルネットワークって？

![IMG_0490.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/0f76bae9-3b7f-d8b6-168c-5bed78bfad54.png)


ニューラルネットワークとは下のようなやつのことです。英語で書くとNeuralNetworkなので、よくNNって略します。なので今回はNNで説明していこうと思います

![IMG_0491.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/94011cbb-f824-a9de-f57f-929162d5a094.png)

丸いのを「ユニット」といい、ユニット同士を結んでる線を「シナプス」と呼びます。シナプスって呼ぶのが面倒いので今回は「線」って呼んで説明させてください。

![IMG_0492.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/d23f8d74-71ee-0d57-0a4d-0b7876b09f56.png)

NNは層の構造をしています。だいたい、左から1層目、2層目、、って数えていきます。最初の層を「入力層」、最後の層を「出力層」、間をまとめて「中間層(隠れ層)」と呼びます。下は4層のNNの図です。

![IMG_0493.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/e88997b4-8bc7-7678-85fa-a63b6f9d69bb.png)

#2.ユニット？重み？バイアス？

![IMG_0494.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/b837d053-34fd-f300-9f08-c0476d4e0c86.png)

もう少し細かく見ていきます。
丸いのを「ユニット」と呼びます。ユニットは数字を1つ持っています。

![IMG_0495.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/d2596be2-6ba8-d7c3-3af7-cf97d4df9a11.png)

ユニットの事を「ニューロン」と言ったりします。そーゆーのは全部「丸いやつ」って認識でOKです。

![IMG_0496.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/0a9fe6f9-d228-6800-47ec-d0e0e19d00c1.png)

ユニットの数字は「線」(シナプス)を通って次のユニットに進んでいきます。数字は次のユニットに足されていきます。

![IMG_0497.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/10c40d93-180d-9cf5-7e25-10f015bd5a19.png)

線を通るときに値が変わります。たとえば下のように、前ユニットの数字「3」が線を通るとき、「×2」の計算がされ、次ユニットに「6」が足されます。
この「×2」のことを「重み」と呼びます。線が×2という数字を持っているイメージです。

![IMG_0498.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/8e0eee01-c2ad-1b86-16d3-d272d08bbbd9.png)

線によってそれぞれ「重み」の値は違います。たとえば下のように、1つのユニットが3つの次ユニットに繋がっている場合、3本の線を数字が進んでいくことになります。

![IMG_0499.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/4871f38b-7586-bfb6-770d-f4c03cfa0c53.png)

3本の線が、それぞれ×2、×-4、×3という「重み」を持っている場合を考えます。前ユニットの「3」はそれぞれの「重み」が掛け算され、次ユニットに足されてます。

![IMG_0500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/752baaaf-e3d3-181b-fb77-ecd9adebf2db.png)

また、3つの前ユニットが1つの次ユニットに繋がっている時が下の図です。この場合も同じ感じで、「13*2」「-2*-4」「-9*3」の結果がどんどん足されていき、次ユニットの値は「7」となります。

![IMG_0501.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/de6b9056-45ec-098d-5508-e569725b7cb3.jpeg)

そしてまた、その「7」が次のユニットへ進んでいく感じです。

![IMG_0502.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/20ff375c-2a15-19c4-02fd-e1dee4431dd0.jpeg)

以上のようにNNの計算がされていきます。全体的にいうと、NNの「入力層」に数字を入れると、NNを通っていろいろな計算がされ、結果が「出力層」に出てくる、という流れです。

![IMG_0503.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/4a202475-1106-da03-1de6-5e706f78204c.jpeg)

入力層には、人工知能に学習させたい「データ」を入れますが、NNには「データ以外の数字」も入れます。これを「バイアス」と呼びます。

![IMG_0504.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/86e769f9-bb38-599c-f0be-375e6b60d1ac.jpeg)

バイアスは下の画像のように、それぞれの層に付いているイメージです。正確には、1つのユニットに1つずつ別のバイアスが付いています。

![IMG_0505.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/9cb6f733-dd30-f27a-87e2-56c4deeb137e.jpeg)

前ユニットの数字が次ユニットにどんどん足されていくタイミングで、この「バイアス」の数字も足します。
バイアスの線には重みはありません。

![IMG_0506.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/ecfca9f6-1cc9-aba5-a6b4-dd34f0f2948a.jpeg)

#3.活性化関数(かっせいかかんすう)
![IMG_0507.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/ed1cfffa-0883-c50e-717e-3dc35c1c5576.jpeg)

さらにルールがもう1つあります。ユニットの数字は線に進む直前に、値が変わります。イメージ的には下の画像のような感じです。

![IMG_0508.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/f54af7ae-9dda-4b8b-5c03-99f357570d55.jpeg)

これは「活性化関数(かっせいかかんすう)」というルールに従って、値が変化します。活性化関数には多くの種類がありますが、一番有名なのが「ReLU関数」という活性化関数です。

![IMG_0509.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/71fd4e98-fa64-c3b7-37d8-7ac3c642dd2c.jpeg)

ReLU関数は、ユニットの値が「0以下なら0に変えて、0を超えたらそのまま通す」というルールです。

![IMG_0510.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/c5a39974-3239-2b4f-ce0c-d46f94d06104.jpeg)

このようにして変化したユニットの値が、線へと進みます。

![IMG_0511.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/c7eb3757-ec77-d463-8f57-a20e28ce23f7.jpeg)

整理します。
流れとしては、
ユニットの値が活性化関数のルールに従って変化→その数字がシナプス(線)を通るときにまた変化→その数字とバイアスが次ユニットにどんどん足されていく、って感じです。

![IMG_0512.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/a4ea4de8-8ce3-3b0e-96a1-5faee53f2bd6.jpeg)

ちなみに活性化関数によって値が変わることを「活性化する」と言います。

#4.NNの全体像

![IMG_0513.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/9b30a03c-0afb-28af-4974-fe77e45171da.jpeg)

NNの「入力層」に数字を入れると、NNを通っていろいろな計算がされ、結果が「出力層」に出てくる、という流れです。

![IMG_0514.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/64389de4-179f-b746-91ad-a148a028dece.jpeg)

細かく言うと、
ユニットの値が活性化関数のルールに従って変化→その数字がシナプス(線)を通るときにまた変化→その数字とバイアスが次ユニットにどんどん足されていく、って感じです。

![IMG_0515.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/9d50f042-fe09-0adc-22c0-fa79ebc9c9ec.jpeg)

また、シナプスの「重み(×何倍にするか)」と「バイアス」は、最初テキトーな値がランダムに設定されています。

![IMG_0516.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/6f64d5e2-df38-eb6d-5eb7-c49f58bf83ca.jpeg)

この数字をどんどん更新していく事を、「学習」といいます。
「重み」と「バイアス」を更新していくとこで、いい感じの出力にすることが、NNのゴールとなります。

![IMG_0517.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/5a04cb57-4f1b-f1e7-f728-8bef47e544a1.jpeg)

#5.まとめ
![IMG_0518.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/de5f018b-adf4-279a-8956-b108eadd7dec.jpeg)


NNの基本的な流れについて説明しました。基本の基本の基本なので、イメージをざっくり掴んで貰えるだけでOKです。

※説明の都合上、実際の動きとは少し異なる部分があります。ご了承下さい。

以上です！素敵なNNライフを！


#人工知能/AI/機械学習をもっと詳しく
![Youtube宣伝画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458623/a20a35bd-a0a8-b8e1-52a9-7f2abdbe1954.jpeg)

**「ねこアレルギーのAI」**
https://t.co/4ltE8gzBVv?amp=1
YouTubeで機械学習について発信しています。
お時間ある方は覗いていただけると喜びます。


created by NekoAllergy