5. 偏微分と多変数関数への拡張
Table of Contents
前回の記事では、勾配降下法が関数の「傾き」を利用して最適解を探すアルゴリズムであることを見ました。しかし、実際の機械学習における損失関数は、数千、数百万ものパラメータ(変数)を持つ多変数関数です。
このような多変数関数の「傾き」を捉えるために不可欠なのが、偏微分 (partial differentiation) の概念です。
偏微分とは?
偏微分とは、多変数関数のある一つの変数にだけ注目し、他の変数を定数とみなして微分する操作です。
例えば、との2つの変数を持つ関数 を考えます。
についての偏微分
をについて偏微分する場合、をただの定数(例えば )として扱います。偏微分は、通常の微分記号の代わりに、(デル、パーシャル)という記号を使って表記します。
を定数とみなしてで微分すると、
- の微分は
- (は定数)の微分は
- (定数)の微分は
よって、に関する偏微分係数は以下のようになります。
についての偏微分
同様に、について偏微分する場合、を定数とみなします。
幾何学的なイメージ
多変数関数 は、3次元空間上に広がる「曲面」としてイメージできます。
- は、その曲面を 軸に平行な平面でスライスしたときの断面(曲線)の、x軸方向の傾きを表します。
- は、曲面を 軸に平行な平面でスライスしたときの断面の、y軸方向の傾きを表します。
つまり、偏微分は、高次元の複雑な地形において、特定の方角(軸方向)だけの傾斜を教えてくれるものと言えます。
勾配と偏微分の関係
前回の記事で紹介した勾配 () の正体は、この偏微分をすべての変数について計算し、それらを成分として並べたベクトルです。
個のパラメータ を持つ損失関数 の勾配は、以下のように定義されます。
勾配降下法の更新式 は、この勾配ベクトルを使って実行されます。具体的には、各パラメータは、それぞれに対応する偏微分係数 に従って、個別に更新されるのです。
- が大きな正の値を持つ場合、パラメータを少し減らすと、損失が大きく減少することを示唆します。
- が0に近い場合、そのパラメータを変化させても、損失はあまり変わらないことを示唆します。
このようにして、何百万ものパラメータを持つ巨大なモデルであっても、各パラメータが損失に与える影響を個別に計算し、同時に更新していくことで、効率的な学習が可能になります。この計算を高速に行うのが誤差逆伝播法 (backpropagation) であり、現代の深層学習を支える中核技術です。
まとめ
- 偏微分は、多変数関数を「ある一つの変数にのみ着目して」微分する手法です。
- 各変数に関する偏微分をすべて集めてベクトルにしたものが勾配です。
- 勾配降下法は、この勾配(偏微分の集合)を利用して、多数のパラメータを同時に、かつ効率的に更新することで、損失関数の最小値を探します。