勾配Gradient

誤差を減らすにはどちらへどれだけ動くか示す信号

ポイント
  • 勾配はつまみをどちら向きにどれだけ回せば誤差が減るかを教えてくれる信号です。
  • 向きと強さが一つにまとまって出てきます。符号がどちら向きか、大きさがどれくらい急かを表します。
  • モデルが持つつまみ一つひとつに勾配が一つずつ出ます。つまみが数億個なら勾配も数億個です。
  • 勾配は今立っている場所でだけ正しい案内です。一歩動けば最初から測り直さなければなりません。
  • 勾配が0に近づくと、もう学ぶことがないか、学ぶ道がすっかりふさがれた状態です。
目次

1たとえで理解する

浴室のシャワーの前に立つと、レバーが二つあります。温水側が一つ、冷水側が一つ。今お湯がぬるいのでもう少し熱くしたいとします。温水レバーを少し回してみると、手の甲に当たる水が一気に熱くなります。冷水レバーはずいぶん回しても温度がわずかしか動きません。

このとき手の甲がつかんだものが勾配です。レバーを少し動かしたときに水温がどちらへ、どれだけ動くか。温水レバーは勾配が大きく、冷水レバーは小さいです。だから温水はほんの少しだけ、冷水は大きく回すのが正しいことになります。

この値はレバーごとに別々に出ます。そして水温が一度変わると、どちらのレバーがより敏感かも変わるので、もう一度手を当てて新しく測り直す必要があります。

2くわしく

まず何がどれだけ間違っているかを決めます

勾配はひとりでに生まれません。「今どれだけ間違っているか」を測る物差しが先に必要です。シャワーなら、望む温度と実際の温度の差がその物差しです。モデルなら、正解と予測がどれだけずれているかを一つの数にまとめた値がその役目を担います。

この値が小さくなるほうが下り坂です。勾配はその下り坂がどちら向きかを教えてくれるだけで、底がどこかまでは教えてくれません。足元の傾きだけを知る案内役のようなものです。だから学習は一度で正解に飛び込む作業ではなく、足元を測って一歩動くことを数十万回繰り返す作業になります。地図を持たずに、足の裏の感覚だけを頼りに山を下りていくようなものです。

つまみごとに勾配が別々に出ます

シャワーのレバーは二つだけですが、モデルには学習で調整される数字が数億個あります。勾配はその数字一つひとつごとに別々に出ます。ある数字は少し動かしただけで誤差が大きく揺れ、ある数字は大きく変えても結果がほとんど変わりません。

一回の計算だけでこの多くの信号を全部得ます。レバーを一つずつ回して確かめるのではなく、答えを出した経路をさかのぼりながら、すべての数字の分をまとめて受け取る方式です。この計算をさかのぼる過程が逆伝播です。

大きさがどれだけ回すかを決めます

勾配が大きいということは、そのつまみが結果に大きく関わっているという意味です。温水レバーのようにです。だから勾配が大きい数字は大きく、小さい数字は少しだけ動かします。ただし勾配をそのまま信じてその分だけ動かすわけではありません。一歩の歩幅を決める値を別に用意して掛けてから動かします。

歩幅が大きすぎると、ちょうどよい温度を通り過ぎて反対側へ大きく飛んでしまい、次の一歩でまた反対に飛んで、お湯が熱かったり冷たかったりを繰り返すだけになります。逆に歩幅が小さすぎると、温度がほとんど変わらずレバーを触り続けることになります。

一歩ごとに測り直します

一度測った勾配はその場所でだけ有効です。レバーを回すと水温が変わるので、今度はどちらのレバーがより敏感かも変わります。だからモデルは一歩ごとに勾配を新しく求めます。

しかも毎回全体のデータを見て測るのではなく、一部だけを取り出して測ります。だから勾配は毎回少しずつ揺れる見積もりです。揺れがあっても向きはおおむね正しいので、何歩も歩き続けると結局は低いほうへ下りていきます。

勾配が0に近づくとき

勾配がほぼ0のときは三つの場合があります。本当に底に着いてもう減らせる誤差がないか、周りが平らでどちらへ行っても良くならないか、信号がその層まで届かず聞こえていないかです。

前の二つは学習を止めるか歩幅を変えて抜け出せますが、最後は別の問題です。層を通るうちに信号がだんだん薄れて、入力側の層が何も聞き取れない状態を勾配消失と呼びます。深いモデルほどこの問題が起きやすく、対策として層の間に信号をそのまま通す近道を用意することがよくあります。

3もう少し正確に

勾配は損失関数を各パラメータで微分した値を一列に並べたベクトルです。値の一つひとつは「そのパラメータをほんの少し増やしたとき損失がどれだけ増えるか」を意味します。だから実際の学習では勾配の反対方向へ動きます。

たとえがずれる点もあります。人はレバーを実際に回して温度を確かめますが、モデルは回してみません。答えを出す計算がどんな順序でつながったかを記録しておき、その道筋を逆にたどって計算で求めます。レバーが数億個あっても一回の逆算で全部得られる理由です。

もう一つ、シャワーはレバー二つが互いに独立に感じられますが、モデルの数字どうしは絡み合っています。一つの数字を変えると別の数字の勾配も一緒に変わります。勾配が教えてくれるのはあくまで今この場所でのごく小さな変化についての案内なので、大きく動くとその案内はもう正しくありません。だからこそ一歩の歩幅を小さく保ち、測り直しながら少しずつ進む必要があるのです。

4やってみる

5よくある誤解

  • 勾配が大きいほど学習がうまくいくと思われがちですが、実際には大きすぎると一歩が過剰になり値が跳ね上がって学習が崩れることもあります。

  • 勾配は向きだけを教えてくれると思われがちですが、実際には向きと一緒にどれだけ急かも含んでいて、歩幅を決めるのにも使われます。

  • 勾配が0なら正解にたどり着いたと思われがちですが、実際には平らな地帯に閉じ込められたり、信号がその層まで届いていない場合も多いです。

7ひとこと要約

つまり勾配はモデルの数字一つひとつに、どちらへどれだけ動けば誤差が減るかを教えてくれる信号です。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02