ディープラーニング

【pythonでディープラーニング】エポックとバッチ学習

エポック

全ての訓練データを1回学習することを1エポックと言います。1エポックで学習データを全て実行することになります。

「訓練データをバッチサイズに従いサブセットに分ける、各サブセットの学習を1回実行する」 = 1エポックです。

バッチ学習

バッチ学習はバッチサイズ=訓練データの数になります。1エポック毎に全訓練データの誤差平均を求め、重みとバイアスを更新します。
比較的高速に処理を回せますが、局所的最適解にとらわれやすいのがデメリットです。

オンライン学習

バッチサイズが必ず1になります。ここのサンプル毎に重みとバイアスが更新されます。
個々のデータに依存するので、バッチ学習に比べると、安定性は欠けますが、局所的最適解にはとらわれずに済みます。

ミニバッチ学習

バッチ学習とオンライン学習の間にあるのがミニバッチ学習です。訓練データを地位いさな塊に分解し重みとバイアスの更新を実施します。
バッチ学習よりもバッチサイズが小さいので、局所的最適解にとらわれにくく、オンライン学習よりもバッチサイズが大きいので安定性を確保できます。
つまり、バッチ学習とオンライン学習のハイブリットです。