ニューラルネットワークのバッチ学習、ミニバッチ学習、オンライン学習を解説
ニューラルネットワークの学習
ニューラルネットワークの学習(パラメータ更新)では、勾配法を用いた以下の作業を繰り返していました。
1 ある地点における傾きを求める。
2 新たに探索地点を傾きと学習率を用いて更新する。
3 傾きが0となるを見つけるまで1~2の作業を繰り返す。
ニューラルネットワークの学習には、学習用のデータとして訓練データが必要です。
ここからは、訓練データを工夫して用いる学習方法の代表例として、バッチ学習、ミニバッチ学習、オンライン学習を紹介します。
バッチ学習
バッチ学習では、パラメータの更新にすべての訓練データを用いて、以下のようにパラメータ更新を実施します。
1 全ての訓練データを用いて地点における傾きを求める。
2 新たな探索地点を傾きと学習率を用いて更新する。
3 傾きが0となるが見つかるまで、1-2の更新を繰り返す。
すべてのデータを用いて損失関数の変化を考えるため、学習結果が安定しやすいという特徴があります。
一方で新たな学習データを追加するたびに、全データを用いて再度計算を行わなければならないという欠点があります。
そのため、バッチ学習は全データ数が少ないときに有効な学習手法といえます。
ミニバッチ学習
ミニバッチ学習では、個の訓練データの中から、個を取り出して、パラメータ更新を実施する手法で、ニューラルネットワークでよく用いられます。
取り出した訓練データをミニバッチと呼びます。また取り出すデータ数をミニバッチサイズと呼びます。以下のように更新を行います。
1 N個のデータからランダムに個を取り出す。
2 個のデータを用いて地点における傾きを求める。
3 新たな探索地点を傾きと学習率を用いて求める。
4 新たに個のデータを取り出して2-3の更新を行う。
5 1-4の更新を繰り返す。
ミニバッチ学習には、学習が停滞しにくいという性質があります。学習の停滞とは、局所地点において傾きが0となることにより、パラメータの更新が進まなくなる現象です。
ミニバッチ学習は、用いるデータ数が少ないため、パラメータの変化に対して損失関数が敏感に反応します。そのため、傾きが0となる局所地点が少なくなり、結果として学習が停滞しづらくなります。
オンライン学習
オンライン学習では、訓練データの一つを取り出してパラメータの更新を実施します。更新は以下の流れで進めます。
1 N個のデータからランダムに1つのデータを取り出す。
2 個のデータを用いて地点における傾きを求める。
3 新たな探索地点を傾きと学習率を用いて更新する。
4 新たに一つのデータを取り出して2-3の更新を行う。
5 1-4の更新を繰り返す。
オンライン学習はミニバッチ学習と同様、局所解に陥りにくいという性質があります。
一方で結果が不安定になりやすいという欠点があります。不安定になる原因として、一つ一つのデータに対して更新を行うため、はずれ値にも反応しやすいことが挙げられます。
カテゴリ: ニューラルネットワーク
関連するサービス
記事の筆者
AVILEN編集部
株式会社AVILEN