SIGMA-SE Math & Tech Library

SIGMA-SE Math & Tech Library


数学と情報技術をテーマに、書籍や教材だけではつかみにくい考え方を具体例とともに簡潔にわかりやすく伝える解説サイトです。
技術の歴史や背景、関連知識の整理、学習のための覚書や要約記事も掲載しています。

Python - ニューラルネットワーク:14/14 学習アルゴリズムの全体像

概要

ニューラルネットワークの学習アルゴリズムを、ミニバッチ、推論、損失関数、勾配、パラメータ更新の流れとして整理する。

これまで扱った個別の処理は、学習ループの中で順番につながっている。

ここでは、入力データから損失を計算し、勾配を求めて重みを更新するまでの全体像をまとめる。

この記事の構成

学習アルゴリズムの流れ(まとめ)

ニューラルネットワークの学習とは、訓練データに対する損失が小さくなるように重みパラメータを更新する処理を指す。

その処理を大きく分類すると、以下の手順(*1)~(*4)の4つに分かれる。この手順を繰り返し、損失が小さくなる重みパラメータへ近づけていく。

学習によって損失が小さい重みを得ると、未知データに対する予測性能の向上が期待できる。ただし、訓練データの損失が小さいことと、未知データで高い精度を得られることは同じではない。

勾配法についての補足

上記の勾配に関する記述は、すべて勾配降下法によってパラメータを更新する方法となる。

ランダムに抽出したミニバッチで全データの勾配を近似し、パラメータを更新する方法は、確率的勾配降下法(SGD)またはミニバッチSGDと呼ばれることが多い。「SGD」が1件ごとの更新だけを指すか、ミニバッチ更新も含めるかは、資料やフレームワークで用語が異なる。

※ 参考

まとめ

  • 推論は学習済みの重みから予測を求め、学習はミニバッチ抽出、推論、損失計算、勾配計算、重み更新を繰り返す。
  • 損失関数はモデルの悪さを測り、勾配を使ってパラメータを動かした結果として損失を下げる。
  • 一回で最適化されるわけではなく、ミニバッチを変えながら更新を繰り返す。この流れは深層学習フレームワークを理解する基礎となる。

参考文献

この記事を共有
Xで共有 Facebookで共有 LINEで共有



Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp