2 min read

4. 微分と勾配降下法の考え方

Table of Contents

機械学習モデルは、与えられたデータからパターンをどのようにして「学習」するのでしょうか。そのプロセスの核心には、最適化 (optimization) という数学的な考え方があります。そして、その最適化を実現するための最も基本的な道具が微分 (differentiation) です。この記事では、微分がどのようにしてモデルの学習を可能にするのか、その中核アルゴリズムである勾配降下法 (Gradient Descent) を通して解説します。


微分:関数の「傾き」を捉える

一変数の関数 f(x)f(x) における微分係数 f(x)f'(x) は、グラフ上の点 xx における接線の傾きを表します。この傾きは、入力 xx を微小に変化させたときに関数の出力 f(x)f(x) がどれだけ変化するか、その瞬間の変化率を示しています。

  • f(x)>0f'(x) > 0: 関数は増加している(上り坂)
  • f(x)<0f'(x) < 0: 関数は減少している(下り坂)
  • f(x)=0f'(x) = 0: 関数は平坦(山の頂上か谷底の可能性)

この「傾き」の情報が、関数の最小値を探す上で決定的な役割を果たします。


機械学習における最適化と損失関数

機械学習モデルの学習とは、損失関数 (Loss Function) またはコスト関数と呼ばれる指標を最小化するような、モデルの内部パラメータ θ\theta(ニューラルネットワークの重みなど)を見つけ出すプロセスです。

損失関数 L(θ)L(\theta) は、モデルの予測がどれだけ「悪いか」を測る関数です。例えば、実際の値と予測値の差の二乗(二乗誤差)などが用いられます。学習の目標は、この損失 LL を最小にするパラメータ θ\theta^* を見つけることです。

θ=argminθL(θ)\theta^* = \arg\min_{\theta} L(\theta)

勾配降下法:坂道を下るように最適解を探す

損失関数は通常、非常に多くのパラメータを持つ複雑な多変数関数であるため、解析的に最小値を求めることは困難です。そこで、反復的に解を探す勾配降下法が用いられます。

勾配 (Gradient)

損失関数 LL のように多変数の関数において、すべての変数に関する偏微分をまとめたベクトルを勾配 (gradient) と呼び、L(θ)\nabla L(\theta) と表記します。

L(θ)=(Lθ1,Lθ2,,Lθn)\nabla L(\theta) = \left( \frac{\partial L}{\partial \theta_1}, \frac{\partial L}{\partial \theta_2}, \dots, \frac{\partial L}{\partial \theta_n} \right)

勾配ベクトルは、その点において関数値が最も急激に増加する方向を指し示します。

更新ルール

損失を最小化したい私たちは、勾配が指し示す方向とは逆の方向へ進むべきです。これが勾配降下法の基本的なアイデアです。パラメータ θ\theta を以下のルールに従って繰り返し更新していきます。

θnext=θcurrentηL(θcurrent)\theta_{\text{next}} = \theta_{\text{current}} - \eta \nabla L(\theta_{\text{current}})

ここで、η\eta(イータ)は学習率 (learning rate) と呼ばれる正の小さな定数で、一歩ごとにどれだけ進むかを決めるステップサイズです。

  1. パラメータ θ\theta をランダムな値で初期化する。
  2. 現在の θ\theta における損失関数の勾配 L(θ)\nabla L(\theta) を計算する。
  3. 上記の更新ルールに従って θ\theta を更新する。
  4. 勾配が十分に小さくなる(谷底に近づく)まで、ステップ2と3を繰り返す。

このプロセスは、霧深い山で、足元の傾斜が最も急な下り方向へ一歩ずつ進んでいくことで谷底を目指す様子に例えられます。


まとめ

  • 機械学習の「学習」とは、損失関数を最小化する最適化問題です。
  • 微分によって計算される勾配は、損失関数が最も増加する方向を示します。
  • 勾配降下法は、勾配の逆方向へパラメータを繰り返し更新することで、損失の最小値を探す強力なアルゴリズムです。

このように、微分は単なる傾き計算のツールではなく、機械学習モデルがデータから学習するための羅針盤として機能する、不可欠な概念なのです。