ログイン新規登録

Qiitaにログインしてダークテーマを使ってみませんか?🌙

ログインするとOSの設定にあわせたテーマカラーを使用できます!

128

この記事は最終更新日から3年以上が経過しています。

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

最終更新日 投稿日 2020年05月16日

IMG_0489.png

書いてあること

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

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

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

IMG_0490.png

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

IMG_0491.png

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

IMG_0492.png

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

IMG_0493.png

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

IMG_0494.png

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

IMG_0495.png

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

IMG_0496.png

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

IMG_0497.png

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

IMG_0498.png

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

IMG_0499.png

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

IMG_0500.png

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

IMG_0501.jpeg

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

IMG_0502.jpeg

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

IMG_0503.jpeg

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

IMG_0504.jpeg

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

IMG_0505.jpeg

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

IMG_0506.jpeg

3.活性化関数(かっせいかかんすう)

IMG_0507.jpeg

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

IMG_0508.jpeg

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

IMG_0509.jpeg

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

IMG_0510.jpeg

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

IMG_0511.jpeg

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

IMG_0512.jpeg

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

4.NNの全体像

IMG_0513.jpeg

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

IMG_0514.jpeg

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

IMG_0515.jpeg

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

IMG_0516.jpeg

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

IMG_0517.jpeg

5.まとめ

IMG_0518.jpeg

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

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

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

人工知能/AI/機械学習をもっと詳しく

Youtube宣伝画像.jpeg

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

created by NekoAllergy

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
  3. ダークテーマを利用できます
ログインすると使える機能について

コメント

この記事にコメントはありません。

いいね以上の気持ちはコメントで

128