見出し画像

第20話 ニューラルネットワーク学習アルゴリズム"バックプロパゲーション"の概要

今回からはニューラルネットワークの学習アルゴリズムであるバックプロパゲーションについて学習していきます。

前回までにニューラルネットワーク(以降NNと呼ぶ。)の実装を行い、ニューロンの重みとバイアスを設定することの難しさを実感しましたが、バックプロパゲーションをマスターすれば自動で重みとバイアスをコンピュータに決定させることが可能になります。すごい!

すごいのは良いのですが、教科書では約50ページの分量があり、数式も連発してきて早くも挫けそうです・・・。
なんとか頑張っていこうと思います。

前置きが長くなりましたが、今回の学習テーマは
「バックプロパゲーションの概要」
です。

ちなみに学習の進捗状況はこんな感じです。
(教科書「はじめてのディープラーニング」我妻幸長著)

名称未設定

それでは今回の学習を始めます。

バックプロパゲーションの概要

バックプロパゲーションは、NNを学習させる際に用いられるアルゴリズムで、ディープラーニング(NNを多層化したもの)においても必要不可欠な重要アルゴリズムです。
出力と正解の誤差をネットワークに逆伝播(ぎゃくでんぱ)させることにより、ネットワークの重みとバイアスを最適化します。

それではバックプロパゲーションの手順をみていきましょう。

Step1
順伝播により得られた出力と、正解(別途用意)との誤差を、1層ずつ遡るように伝播させます。(下流から上流に伝播するので逆伝播)

名称未設定

Step2
Step1で逆伝播した際、伝播した誤差をもとに各層の重みとバイアスの更新量を求めます。

名称未設定


Step3
各層の重みとバイアスをすべて少しずつ更新します。

名称未設定

Step4
Step1〜3を繰り返し実行すると、次第にネットワークの誤差が最小になるように最適化されます。(「学習が進む」ともいう。)

名称未設定

学習が成功したNNは、任意の入力に対して柔軟に認識・判断ができるようになります。
バックプロパゲーションは、層の数がとても多いNNであっても学習させることが可能なアルゴリズムです。
これをマスターできれば本格的なAIを作るのも夢じゃなさそうですね!

少々脱線しますが、生物の脳においてバックプロパゲーションに相当するメカニズムが見つかっていないため、「このアルゴリズムは生物学的妥当性がない(生物の神経系における実際の学習メカニズムとは異なるのではないか)」と批判がされることがあるようです。

でも私はこういった批判は的外れというか、嫉妬じみている感じがします。
だって、空を飛ぼうと考えたときに必ずしも鳥の形を真似する必要はないじゃないですか。飛行機は鳥の形ですがヘリコプターはそうじゃないですよね。
うまく学習できるなら必ずしも生物的なメカニズムに基づいていなくても良いと思うのです。

話を戻して・・・
バックプロパゲーションを理解するには次の5つの要素を理解する必要があります。

バックプロパゲーションの理解に必要な5要素
1 訓練データとテストデータ
2 損失関数
3 勾配降下法
4 最適化アルゴリズム
5 バッチサイズ

どれも初めて見る言葉ですね。
具体的な中身については長くなりますので、次回以降で学習することとします。


今回はバックプロパゲーションの概要について勉強しました。
次回以降の数回ではこの5要素について学びます。
その後、バックプロパゲーションの実装に取り組みます。
どうぞお楽しみに。

それではまた(^_^)ノシ

よろしければサポートお願いします!いただいたサポートは書籍代等に活用いたします!