スライド4

一番分かりやすいニューラルネットワークの解説

皆さん、こんにちは!

早くも、2月に入りましたね!1月「川島のITスキルサロン」を公開して、1ヶ月で、すでに10人の方が、入会してくださって、会員専用のSlackグループで議論を繰り広げています!笑

技術変態の私が、皆さんの質問責めに快感を感じています!笑

前回のとても気合を入れた記事が大人気になっています。ぶちバズっています。笑

本来は、正しい順番としては、まず、このnote「ニューラルネットワークの原理」を理解してから、上の「畳み込みニューラルネットワーク」を読むべきですが、執筆の都合上、畳み込みニューラルネットワークの方を先に公開しました。

今日は「一番分かりやすいニューラルネットワークの解説」をお届けしたいと思います。(約8600文字、図解60枚)

畳み込みニューラルネットワークの解説と同様に、300円の設定です。

前書き

ご存知の方もいらっしゃると思いますが、今年9月から「機械学習、深層学習のハンズオン」を月一回で開催しています。

詳細は、下記のリンクをご参照ください。

そして、前回の第 3回目では、畳み込みニューラルネットワークを解説しました。

この記事はハンズオンで、解説した内容をなるべく分かりやすくまとめた内容となります。

私の本の内容も参考しています。よかったら、立ち読みをしてみてください。

この記事の目標は、初心者向けで、誰でもこの記事を読めば、ニューラルネットワークの原理、学習のメカニズムをある程度理解できて、入門できるということです。

畳み込みニューラルネットワークを理解するための前提知識としては、機械学習の基本とニューラルネットワークの理解が必要です。

今回のnote記事もニューラルネットワークの学習noteも下記のマガジンの一部となります。

定期購読のマガジンですが、購読していただくと、このような記事も全部無料で閲覧するだけではなく、「川島のITスキルサロン」の会員限定Slackグループにも参加できます。

詳しくは下記のnoteをご参照ください!

さてと!今回の話を始めよう!

人工ニューラルネットワーク

まず、人工ニューラルネットワークの話をしたいと思います。

人工という言葉をついているのは、生物学のニューラルネットワークと区別するためです。ただ、機械学習と深層学習の文脈では、「人工」を省略することがあります。意味合いは「人工ニューラルネットワーク」と置き換えてください。このnoteも「人工」を省略して、「ニューラルネットワーク」と記載する場合があります。ご留意ください。


スライド1

まず、人工ニューラルネットワークの話を始める前に、一つのプログラムを見てみましょう!

画像2

これは、TensorFlowという機械学習、深層学習のフレームワークを使ったニューラルネットワークのプログラムです。

十数行で、ニューラルネットワークの定義ができ、学習させることができます。

機械学習も深層学習もとても奥深い学問で、場合によってやや難しい数学の概念なども登場しますが、ここでは何でこんなに簡単に書けたのでしょうか?

それは、もちろん、TensorFlowというフレームワークのおかげです。(他のPyTorchなどのフレームワークも同様です。)

複雑な演算や、内部のニューラルネットワークの挙動を制御する処理を全部TensorFlowのなかで、用意してくれたから、私たちはその「上」で簡単にニューラルネットワークを利用することができるのです。

しかし、これだけでは、機械学習と深層学習をより自由に制御して、自分たちの用途に合わせて、チューニングしたり、改造したりすることが難しいです。

より自由自在に機械学習と深層学習を駆使して、自分のキャリア、自分の業務に貢献するためには、理論の勉強は不可欠です。

そのために、このnoteを書いて、皆さんに分かりやすい道筋をご案内できたらなと思っております。

では、早速ニューラルネットワークの世界に入ってみよう!

ニューラルネットワークの用途

ニューラルネットワークはよく、分類に使います。

よくある例として、例えば、犬と猫の写真の分類です。

スライド3

(経験の持つ、成人)人間にとっては、簡単なタスクですが、コンピュータにとっては、実はそんなに簡単ではありません。

ここで、ニューラルネットワークの原理を解説する前に、一緒に想像してみてください。

ニューラルネットワークってどうやって分類とかできるのですか?

やはり、最終的に、「特徴」に注目しちゃいますね。

目、目の並び方、鼻、毛並み、髭、など、そのれを記憶して、最終的に、それらを総合的に判断するような流れになりそうですね。このイメージをとりあえず頭に入れておいてください。

ニューラルネットワークに登場する数学

細かいところの解説に入る前に、まずこの全体図をみてください。

数学が登場する場所もたくさんあります。

特徴量のエンジニアリング、ここは泥臭い、データの整理ですね。

線形代数、微分、偏微分、勾配、活性化関数、損失関数(交差エントロピー誤差関数、etc.)などの数学用語もちょっと登場します。


スライド4

今まで、数回開催したハンズオンでもこのような質問をよく受け付けます。

「数学はどのぐらい必要ですか?」

「数学が分からないと、機械学習、深層学習ができないですか?」

答えは:「数学が精通した方いうまでもなく有利ですが、数学の知識が少なくても、機械学習と深層学習を始められます。

その理由としては、機械学習や深層学習のフレームワークの開発や、その辺の先端の研究をする以外は、ゼロから開発ではなく、既存のフレームワーク(TensorFlow, PyTorch, etc.)を利用して開発するのが一般的です。なので、開発に必要なツールなどは、ほとんど整備されています。機械学習と深層学習がすぐ始められます。

いうまでもないですが、その道のプロを目指して、さらに自分たちの独自のアルゴリズムの開発や製品作りにチャレンジするには、もちろん高度な数学知識が要求される場面もあります。

ニューロンとパーセプトロン 

早速、ニューラルネットワークの基礎概念から、紹介していきます。

スライド5

(生物学)ニューロンは、人間の脳細胞(シナプス)だと思ってください。

スライド6

(ニューロンのグラフの引用先:https://ja.wikipedia.org/wiki/%E7%A5%9E%E7%B5%8C%E7%B4%B0%E8%83%9E)

人間や動物の脳に、このようなニューロンは大量にあります。お互いに、繋がって、ネットワークのように構成しています。

他のニューロンから、刺激を受け、その「信号」を次に伝達していきます。もちろん、この神経細胞の中で、何からの仕組みで、次に伝達するとき、その「信号」を強くするか、弱くするかを決めるメカニズムがあります。

研究者が、この仕組みを真似したら、脳のような動きができるようになるのではと考えたのは、その分野の発端ですね。

ニューロンの動きをシミューレーションするための構造は「パーセプトロン 」です。

パーセプトロン は概念化したニューロンだと考えてください。

ニューラルネットワークの文脈では、「ニューロン」そのまま使っている場合が多いです。

スライド7

上の図のように、○がニューロンだと考えてください。

そうすると、左のように、入力が一つというパターンが考えられます。

右のように、入力が二つの場合も考えられます。(x1,x2)

スライド8

w(wight)が重み付けです。つまり、上の神経細胞のように、出力を強くするか、弱くするかを決定する「仕組み」のようなものです。(この後の、biasもそうです。)

例えば、上の図のように、x=1.3, w=3.4の場合、出力のyが4.42になります。入力を少し拡大していますね。

入力が二つある場合は、同様に計算できます。それぞれの入力x重み付けを全部足します。

スライド9

上の図のように、x1,x2の入力を用いて、出力は7.92になります。

さらに、入力がn個がある場合を見てみましょう。

スライド10

全てのxとwの掛け算の結果を全部足せば、出力になりますね。Σが出来ましたが、怖くありません。笑 全部足すという意味だけです。

活性化関数

先ほど、ちょっと活性化関数という言葉出ましたが、要は上のように単純にxとwの掛け算の結果を足すだけではなく、さらにある特性を持った仕組みで、出力を制御したいですね。

スライド11

上の図のように、xとwの掛け算の総和を一旦活性化関数に入れて、「変換」します。その変化後の数値を出力として出します。それだけの話です。

入力信号の総和を出力信号に変換するわけです。

スライド30

パーセプトロンは人間の発明です。そしてパーセプトロンに期待通りの動作をしてもらうためには様々な工夫を施しています。

ここから先は

5,143字 / 49画像

¥ 300

株式会社虹賢舎 CEO 著書:https://amzn.to/39KwlE4 技術ブログ:https://kokensha.xyz 機械学習 深層学習 Python /JS IoT Raspberry Pi ロボット TOEIC950 https://gosen.world