ミニバッチ学習
Mini-batch Learning
みにばっちがくしゅう
学習データを数十から数百件程度の小さなまとまり(ミニバッチ)に分け、ミニバッチごとに勾配を計算してパラメータを更新する学習の方法。バッチ学習より更新の回数が多く、オンライン学習より更新が安定し、GPUで並列に計算しやすいので、ディープラーニングで標準的に使われる。ミニバッチの大きさ(バッチサイズ)はハイパーパラメータである。
Related
関連キーワードの用語
ニューラルネットワークの学習で、ミニバッチ1つ分のデータで損失と勾配を計算し、パラメータを1回更新する処理の単位。学習データ全体を1回使い切るのが1エポックで、1エポック当たりのイテレーション数は「データ数÷バッチサイズ」になる。例えば1万件をバッチサイズ100で学習すると、1エポックは100イテレーションである。
損失関数の値が小さくなるよう、パラメータを損失関数の勾配(傾き)と逆の方向に少しずつ動かす更新を繰り返して、最小となる点を探す最適化の手法。1回に動かす量は学習率で決まり、大きすぎると発散し、小さすぎると収束が遅い。損失の形によっては局所最適解や鞍点にとどまることがある。
ニューラルネットワークなどの学習で、学習データ全体を1回使い切ることを1エポックという。通常は数十から数百エポック繰り返して学習し、エポック数はハイパーパラメータになる。エポックを重ねすぎると過学習するので、検証用データの誤差を監視して悪化し始めたら止める早期終了を使う。
要求の変化に柔軟に対応するため、短い期間の反復(イテレーション)ごとに計画、設計、実装、テストを行い、動くソフトウェアを少しずつ提供していく開発手法の総称。アジャイルソフトウェア開発宣言の価値観に基づき、スクラム、XP、リーンソフトウェア開発などの手法がある。
エクストリームプログラミングで、開発チーム全体が共通して実践する事項。反復(イテレーション)、共通の用語、開けた作業空間、ふりかえりなどが含まれる。
