解答と解説を表示
<h4>ミニバッチ学習における重み更新</h4>
<p>機械学習モデルの学習では、多くの場合、データセット全体を一度に使うのではなく、小さな「ミニバッチ」に分割してパラメータ(重み)を更新します。これにより、計算効率と学習の安定性のバランスを取ります。</p><h5>ミニバッチ学習の更新プロセス</h5>
<ol>
<li><strong>ミニバッチの選択:</strong> データセットからランダムに N 個のサンプルを選び、ミニバッチを形成します。</li>
<li><strong>勾配の計算:</strong> ミニバッチ内の各サンプル \(i\) について、現在のパラメータ \(w\) における損失関数の勾配 \(g_i = \nabla L_i(w)\) を計算します。</li>
<li><strong>勾配の平均化:</strong> ミニバッチ全体の平均勾配 \(\bar{g}\) を計算します。\(\bar{g} = \frac{1}{N} \sum_{i=1}^{N} g_i\)</li>
<li><strong>パラメータ更新:</strong> 平均勾配 \(\bar{g}\) と学習率 \(\eta\) を用いて、パラメータを更新します。</li>
</ol>
<p>この問題で求められているのは、ステップ4における<strong>重みの更新量 \(\Delta w\)</strong> です。</p>
<div class="formula">
$\Delta w = -\eta \times \bar{g} = -\eta \times \left( \frac{1}{N} \sum_{i=1}^{N} g_i \right)$
</div>
<p>更新量 \(\Delta w\) は、パラメータをどれだけ変化させるかを示す値です。実際のパラメータ更新は \(w_{new} = w_{old} + \Delta w\) となります。</p><h5>今回の問題における計算</h5>
<p>与えられた値は以下の通りです。</p>
<ul>
<li>ミニバッチ内の各サンプルの勾配: \(g_1 = 2.0, g_2 = 1.5, g_3 = 2.5\)</li>
<li>ミニバッチサイズ: \(N = 3\)</li>
<li>学習率: \(\eta = 0.05\)</li>
</ul><h6>ステップ1: ミニバッチ内の勾配の合計を計算</h6>
<div class="formula">
$ \sum_{i=1}^{3} g_i = 2.0 + 1.5 + 2.5 = 6.0$
</div><h6>ステップ2: ミニバッチ内の勾配の平均を計算</h6>
<div class="formula">
$\bar{g} = \frac{1}{N} \sum_{i=1}^{N} g_i = \frac{6.0}{3} = 2.0$
</div><h6>ステップ3: 重みの更新量 \(\Delta w\) を計算</h6>
<div class="formula">
$\Delta w = -\eta \times \bar{g} \\\\
\Delta w = -0.05 \times 2.0 \\\\
\Delta w = -0.1$
</div><p>したがって、このミニバッチに対する重みの更新量 \(\Delta w\) は <strong>-0.1</strong> です。</p><div class="key-point">
<div class="key-point-title">ミニバッチ学習 vs 他の学習方法</div>
<ul>
<li><strong>バッチ学習 (Batch GD):</strong> 全データを使用。更新は安定するが、大規模データでは計算コスト大。</li>
<li><strong>確率的勾配降下法 (SGD):</strong> サンプル1つずつ使用。計算は速いが、更新ノイズが大きい。</li>
<li><strong>ミニバッチ学習:</strong> 両者の中間。計算効率と安定性のバランスが良い。GPUによる並列計算にも適しているため、ディープラーニングで広く使われる。</li>
</ul>
</div>