勾配 gradient とは
霧の立ちこめた山の斜面に立っているとしましょう。前は一寸先も見えないのに、足もとの傾きだけははっきり感じられます。それだけで、どちらへ行けばいちばん急に上るのかはわかります。その向きこそが勾配です。高さや温度のように点ごとに値が一つ載ったスカラー場で、値がいちばん速く大きくなるほうを指す矢印です。向きだけを読んで済ませがちですが、長さにも意味があって、斜面が急なほど矢印は長くなります。この矢印一本を手にすれば、登山道の設計も、熱の流れる向きも、AI を学習させる勾配降下法も、一本の糸でつながります。
色で塗った高さの場の上で探針をドラッグすると、どこに置いても白い矢印が一本ついてきます。その場所からいちばん急に上る向き、つまり勾配です。右上の山頂に近づくほど傾きがゆるやかになって矢印は短くなり、急な斜面では長くのびます。下にはその長さ、つまり傾きの大きさが数で表示されます。つまりこの矢印は、どちらへ上ればいちばん速いかと、どれだけ急かを、いっしょに抱えているのです。平らな野原なら、もう上るところがないので、矢印はほとんど 0 までしぼみます。
地図の等高線は同じ高さを結んだ線で、勾配はその線とどこでもぴったり直角に交わります。理由は単純です。等高線に沿って歩けば高さは変わらず、上りは 0 なので、いちばん速く上る向きは、その線を真正面から横切るしかありません。図は原点に山頂があるドーム形なので、等高線は同心円として描かれています。探針を動かしながら確かめると、金色の矢印である勾配と、青い線である等高線の接線が、どこでも 90 度を保っています。この図の矢印は向きだけがわかるように長さを固定してありますが、本物の勾配は、等高線が密に集まっているところほど、つまり斜面が急なところほど長くなります。
勾配も結局はベクトルなので、横の成分と縦の成分に分けられます。横の成分は東へ進むとき値がどれだけ速く上がるか (∂f/∂x)、縦の成分は北へ進むときどれだけ速く上がるか (∂f/∂y) です。この二つがすなわち偏微分です。一つの向きだけを残し、ほかはしばらく固定したまま測った傾きです。探針をドラッグすると、緑の東向きの成分とオレンジの北向きの成分が合わさって白い勾配の矢印になり、下の式に二つの成分の値が同じ色で表示されます。「ベクトルは動きだ」でベクトルを î いくつと ĵ いくつの和として読んだあの組み立てが、ここでもそのまま働いています。
勾配が上りを指すなら、その反対 (−∇f) がいちばん速く下る道です。ボールを落とすと、その時その時の位置からいちばん急な下りへ一歩ずつ移っていき、最後には谷底で止まります。図の地形には谷が二つあるので、金色のボールをあちこちへドラッグして置くと、それぞれ出発した場所から近い谷へ転がりこみ、白い線がその道を、小さな円が止まった場所を示します。これが勾配降下法です。AI モデルを学習させるときも、誤差という地形の上で −∇(誤差) に沿って一歩ずつ下り、誤差がいちばん小さい谷を探します。山でボールを転がすのとまったく同じ原理で、何十億もの数を調整しているわけです。
勾配が 0 になって消える場所があります。山頂、谷底、そして鞍点です。そうしたところでは、もう上る向きも下る向きもないので、矢印がすっかり姿を消します。図には、左に山頂、右に谷底があります。探針をドラッグして矢印が 0 まで縮む場所を探すと、点が金色に大きくなり、平らだという表示が出ます。この場所が大切なのは、何かを最大や最小にする問題が、結局「∇f = 0 となる点を探せ」という問題に変わるからです。いちばん安い設計も、いちばん強い構造も、いちばん小さい誤差も、すべてそうです。最適な点では、いつも地形が平らなのです。次の講からは、スカラーではなく、ベクトル場そのものが点ごとにどう変わるのかへ進みます。