【PR】この記事には楽天アフィリエイト・Amazonアソシエイトの広告リンクが含まれます。商品やサービスは公式の仕様・条件と販売情報を確認して選んでおり、実機テストによる評価ではありません。 Amazonのアソシエイトとして、PROBEFOLIOは適格販売により収入を得ています。
勾配降下法は、AIが学習するときに、間違いが小さくなるように重みを少しずつ直していく方法です。坂道を、足元の傾きを頼りに少しずつ下っていく様子によくたとえられます。
この記事では、2026年9月25日に確認したGoogleの機械学習の教材などをもとに、たとえを実際の数字で確かめながら説明します。
この記事の目次
結論:損失の坂を、傾きを見ながら少しずつ下る方法
AIの学習の目標は、予測と正解のずれ(損失)が一番小さくなる重みを見つけることです。勾配降下法は、損失の坂を、足元の傾きを見ながら少しずつ下って、その場所を探します。
Googleの機械学習の教材は、損失を計算し、減らす向きを決め、少しだけ動かし、それ以上減らなくなるまで繰り返す、と説明しています。やっていることは「傾きを見て、少しだけ下る」の繰り返しだけです。
出てくる用語は、表「勾配降下法の用語」のとおりです。たとえと一緒に押さえておくと、この後の数字の例が読みやすくなります。
| 用語 | 意味 | 山を下るたとえ |
|---|---|---|
| 損失 | 予測と正解のずれの大きさ | 今いる場所の高さ |
| 勾配(傾き) | 重みを動かしたときの損失の変わり方 | 足元の坂の傾き |
| 学習率 | 1回に重みを動かす幅 | 1歩の大きさ |
| 更新 | 重みを少し動かすこと | 1歩進むこと |
| 収束 | これ以上損失が減らなくなること | 谷底に着くこと |
たとえ:霧の中で山を下る
霧の深い山の中で、ふもとの谷まで下りたいとします。遠くは見えませんが、足元がどちらに傾いているかは分かります。
そこで、足元の一番下がっている向きに1歩進みます。進んだ先で、また足元の傾きを確かめて1歩進みます。これを繰り返せば、いずれ谷底に着きます。
勾配降下法も同じです。損失の全体の形は分かりませんが、今の重みでの傾きは計算できます。傾きを頼りに、少しずつ損失の低い方へ進みます。
なぜ一気に答えを求めないのか
重みが1つだけの簡単な問題なら、式を解いて答えを一度に求められることもあります。ところが、ニューラルネットワークの重みは、数千から数千億個もあります。
それだけの数の重みについて、損失が一番小さくなる組み合わせを式で一度に求めるのは、現実的ではありません。そこで、傾きを頼りに少しずつ近づく方法が使われます。
少しずつ近づく方法なら、重みの数が増えても、同じ手順をそのまま使えます。これが、勾配降下法がAIの学習の基本になっている理由です。
重みがたくさんあるときも、考え方は同じです。それぞれの重みについて傾きを計算し、全部の重みを同時に少しずつ動かします。
数字で追う準備:損失が(w−3)²の場合
重みが1つだけのとても簡単な例で、実際に数字を追ってみます。重みをw、損失を(w−3)²とします。wが3のとき損失は0で、それより大きくても小さくても損失は増えます。
この損失の傾きは、2×(w−3)で計算できます。wが0のときの傾きは2×(0−3)=−6です。傾きがマイナスということは、wを増やすと損失が減る、という意味です。
勾配降下法では、「今のw − 学習率 × 傾き」で新しいwを求めます。傾きがマイナスなら、wは増える方へ動きます。
| もの | 式 | w=0のとき |
|---|---|---|
| 損失 | (w−3)² | 9 |
| 傾き(勾配) | 2×(w−3) | −6 |
| 新しいw | w − 学習率 × 傾き | 学習率0.1なら0.6 |
勾配降下法の4つの手順
Googleの教材は、勾配降下法を次の4つの手順で説明しています。数字の例と合わせて読むと、1つひとつの意味がつかめます。
- 損失を計算する:今の重みとバイアスで、損失を計算する。例ではw=0で損失9。
- 損失が減る向きを決める:傾きを計算して、どちらに動かせばよいかを決める。例では傾き−6なので、wを増やす向き。
- 少しだけ動かす:学習率の分だけ、重みを動かす。例では0−0.1×(−6)=0.6。
- 繰り返す:これ以上損失が減らなくなるまで、1に戻って繰り返す。
学習率0.1で5回動かしてみる
学習率を0.1にして、4つの手順を5回繰り返した結果は、表「学習率0.1で5回動かした結果」のとおりです。wが0から3に向かって近づき、損失が9から1を下回るまで減っています。
最初は大きく進み、3に近づくほど進み方が小さくなっているのが分かります。3に近づくほど傾きが小さくなり、「学習率×傾き」の1歩も小さくなるためです。
このまま50回繰り返すと、wはほぼ3になりました。谷底に近づくほど自然に歩幅が小さくなるのが、勾配降下法の大事な性質です。
| 回数 | w | 損失 |
|---|---|---|
| 0(最初) | 0 | 9 |
| 1 | 0.6 | 5.76 |
| 2 | 1.08 | 3.69 |
| 3 | 1.464 | 2.36 |
| 5 | 2.017 | 0.97 |
学習率が小さすぎると:なかなか下りない
同じ例で、学習率を0.01に小さくしてみます。5回動かしても、wは0.288までしか進まず、損失は7.35までしか減りませんでした。
Googleの教材も、学習率が小さすぎると、損失の曲線が1回ごとにわずかしか改善しないと説明しています。安全ではありますが、学習に時間がかかりすぎます。
大きなモデルの学習は、1回の更新にも計算の時間がかかります。学習率が小さすぎると、谷底に着く前に時間や費用が尽きてしまうこともあります。
| 回数 | w | 損失 |
|---|---|---|
| 0(最初) | 0 | 9 |
| 1 | 0.06 | 8.64 |
| 3 | 0.176 | 7.97 |
| 5 | 0.288 | 7.35 |
学習率が大きすぎると:行き過ぎて損失が増える
今度は学習率を1.1に大きくしてみます。1回目でwは6.6に進み、谷底の3を大きく飛び越えました。2回目は−1.32、3回目は8.184と、谷の両側を行ったり来たりしています。
損失は9から12.96、18.66、26.87と、動かすたびに増えていきました。1歩が大きすぎて、谷を飛び越え続けている状態です。
Googleの教材も、学習率が大きすぎると、損失が下がってから上がったり、後半で急に増えたりすると説明しています。損失が増え続けるときは、まず学習率を疑います。
| 回数 | w | 損失 |
|---|---|---|
| 0(最初) | 0 | 9 |
| 1 | 6.6 | 12.96 |
| 2 | −1.32 | 18.66 |
| 3 | 8.184 | 26.87 |
| 5 | 10.465 | 55.73 |
学習率の決め方:損失の曲線を見て調整する
学習率には、どの問題にも合う決まった値はありません。実際には、いくつかの値で試し、損失の曲線(回数ごとの損失のグラフ)を見て決めます。
損失がほとんど下がらなければ学習率を大きく、上がったり暴れたりするなら小さくします。なめらかに下がって横ばいになる値が、ちょうどよい目安です。
なお、この例では学習率0.5にすると、1回でちょうど3に着きました。これは損失の形がとても単純だからで、実際のモデルではこうはいきません。
損失の曲線の読み方:3つの形
学習がうまく進んでいるかは、回数ごとの損失をグラフにした「損失の曲線」で確かめます。形は大きく3つに分けられ、それぞれ次に打つ手が違います。
形ごとの見方と打つ手は、表「損失の曲線の3つの形」のとおりです。この記事の3つの学習率の例も、それぞれの形に当てはまります。
表計算で学習率を変えてグラフにすると、3つの形を自分の目で見られます。
| 曲線の形 | 起きていること | 打つ手 |
|---|---|---|
| なめらかに下がって横ばい | うまく学習できている(学習率0.1の例) | そのまま続け、収束で止める |
| ほとんど下がらない | 歩幅が小さすぎる(学習率0.01の例) | 学習率を大きくする |
| 上がる・大きく暴れる | 行き過ぎている(学習率1.1の例) | 学習率を小さくする |
表計算で試す:学習率を変えて比べる
この記事の例は、ExcelやGoogleスプレッドシートで試せます。E1セルに学習率(0.1など)を入れ、A列に回数、B1セルにwの最初の値0を入れます。
B2セルに「=B1-$E$1*2*(B1-3)」と入れて下の行にコピーすると、wが更新されていきます。C列に「=(B1-3)^2」と入れれば、損失も見られます。
E1の学習率を0.01、0.1、1.1と変えて、B列とC列の動きをグラフで比べてみてください。数字が行ったり来たりする様子を見ると、学習率の意味が体でつかめます。
最初の重みはどう決めるのか
勾配降下法は、どこかの重みから歩き始める必要があります。この記事の例ではw=0から始めましたが、ニューラルネットワークでは、小さな乱数(でたらめな数)から始めるのが一般的です。
すべての重みを同じ0から始めると、どのニューロンも同じ計算をして、同じように直されてしまいます。それでは、たくさんのニューロンを並べた意味がなくなります。
最初の重みの決め方も、学習がうまく進むかどうかに影響します。深いネットワークでは、活性化関数の種類に合わせた決め方が工夫されています。
止めどき:収束したら終わる
Googleの教材は、繰り返してもそれ以上損失が減らなくなったとき、モデルが収束したと説明しています。これが、勾配降下法の止めどきです。
実際の学習では、「損失の減り方が一定より小さくなったら」「決めた回数を繰り返したら」などの条件で止めます。
ただし、学習用のデータの損失だけを見て長く続けると、過学習が起きることがあります。学習に使っていないデータの損失も一緒に見ることが大切です。
谷がいくつもあるとき
この記事の例の損失は、谷が1つだけのお椀の形でした。Googleの教材も、線形回帰の損失はお椀の形なので、勾配降下法で必ず一番低い所を見つけられると説明しています。
ところが、ニューラルネットワークの損失は、谷や平らな所がいくつもある複雑な形をしています。足元の傾きだけを頼りに下ると、一番低い谷ではない、途中の小さな谷に止まることもあります。
それでも、実際の大きなモデルでは、勾配降下法とその工夫で、十分に良い重みが見つかることが多いと分かっています。
全部のデータを使うか、一部を使うか:SGDとミニバッチ
傾きを計算するときに、学習データを全部使うか、一部だけ使うかで、呼び方が変わります。Googleの教材は、次の3つを紹介しています。
- フルバッチ:全部のデータで傾きを計算してから1回動かす。正確だが、データが多いと1回に時間がかかる。
- 確率的勾配降下法(SGD):1つの例だけで傾きを計算して動かす。速いが、動きがばらつく。
- ミニバッチSGD:数十〜数百の例をまとめて傾きを計算する。速さとばらつきの少なさの間を取る方法。
今の学習では、ミニバッチSGDの考え方が広く使われています。
歩幅を自動で調整する:Adam
学習率をうまく決めるのは大変なので、重みごとに歩幅を自動で調整する方法も考えられてきました。代表がAdamで、2014年の論文で提案されました。
論文は、Adamを計算の効率がよく、使うメモリが少なく、データや重みの数が多い問題に向いた方法だと説明しています。設定する値も、あまり調整しなくてよいことが多いとされています。
中身は勾配降下法の工夫で、「傾きを見て少し下る」という基本は変わりません。名前が違っても、まずこの基本に戻って考えると理解しやすくなります。
傾きの計算:誤差逆伝播法とのつながり
この記事の例では、傾きを2×(w−3)という式ですぐに計算できました。ところが、層が何段もあるニューラルネットワークでは、何万個もの重みそれぞれの傾きを計算する必要があります。
そこで使われるのが、誤差逆伝播法です。Googleの教材は、誤差逆伝播法を、層の多いネットワークで勾配降下法を使えるようにするものだと説明しています。
役割分担は、「誤差逆伝播法で傾きを計算し、勾配降下法で重みを動かす」です。詳しくは誤差逆伝播法をわかりやすくで説明しています。
ChatGPTなどのLLMの学習でも同じ
ChatGPTのもとになる大規模言語モデルも、学習の基本は同じです。文章の次に来る言葉を予測し、正解とのずれを損失にして、損失が減る向きに重みを少しずつ動かします。
違うのは規模です。重みの数は数十億から数千億個にもなり、学習に使う文章も膨大です。そのため、ミニバッチやAdamのような工夫と、たくさんの計算機を使って学習します。
ニューラルネットワーク全体の流れは、ニューラルネットワークをわかりやすくで説明しています。
つまずきやすい3つの点
- 「勾配」を坂の急さだけだと思う:勾配には、どちらの向きに上っているかの情報も入っている。その逆向きに動くから「降下」になる。
- 学習率は大きいほど速いと思う:大きすぎると谷を飛び越えて、かえって損失が増える。
- 損失が0になれば完成だと思う:学習データの損失だけが0になるのは、過学習のサインのこともある。
数字の例で1つずつ確かめておくと、式や図を見たときにも迷いにくくなります。
資格の勉強で押さえたい点
JDLAのE資格の出題範囲では、「深層学習の基礎」の中に最適化が含まれています。勾配降下法はその出発点です。
勉強では、学習率の大小で何が起きるか、フルバッチ・SGD・ミニバッチの違い、Adamなどの工夫の目的を、自分の言葉で説明できるようにしておくと安心です。
この記事の表計算の例で、学習率を変えたときの動きを一度見ておくと、選択肢の言いかえにも迷わなくなります。
よくある疑問を、ここで。
使い始める前に、気になるところから。
勾配降下法を一言でいうと?
損失(間違いの大きさ)の傾きを計算し、損失が減る向きに重みを少しだけ動かす、という手順を繰り返して、損失が一番小さくなる重みを探す方法です。
学習率はどう決めればよいですか?
いくつかの値で試し、損失の曲線を見て決めます。ほとんど下がらなければ大きく、上がったり暴れたりするなら小さくします。なめらかに下がって横ばいになる値が目安です。
なぜ傾きを引くのですか?
傾きは、重みを増やしたときに損失が増える向きを表します。その逆向きに動かせば損失が減るので、「今の重み − 学習率 × 傾き」で更新します。
確率的勾配降下法(SGD)とは?
データを1つずつ使って傾きを計算し、重みを動かす方法です。速い一方で動きがばらつくため、数十〜数百の例をまとめて使うミニバッチSGDがよく使われます。
誤差逆伝播法との違いは?
誤差逆伝播法は、層の多いネットワークで各重みの傾きを効率よく計算する方法です。勾配降下法は、その傾きを使って重みを動かす方法です。2つは組み合わせて使います。
この記事を共有する
商品情報の提供:Supported by Rakuten Developers
出典と、この記事について
公式資料や、記事で参照した発表・報道をまとめています。仕様や料金は、利用する前に最新の案内をご確認ください。
- Google Machine Learning Crash Course:Gradient descent(新しいタブで開きます)
- Google Machine Learning Crash Course:Hyperparameters(新しいタブで開きます)
- Google Machine Learning Crash Course:Training using backpropagation(新しいタブで開きます)
- Kingma・Ba「Adam: A Method for Stochastic Optimization」(2014年)(新しいタブで開きます)
- JDLA:E資格(エンジニア資格)試験概要(新しいタブで開きます)
確認した内容と条件は本文に記載しています。結果や使い勝手は、資料や環境によって異なります。編集方針を読む




ぜひコメントください