【初心者エンジニア必見】勾配法と勾配降下法、その違いを1から徹底解説!

こんにちは。ゆうせいです。

機械学習の勉強を始めると、必ずと言っていいほど登場する「勾配法」と「勾配降下法」という言葉。なんだか似ていて、どっちがどっちだか混乱してしまいませんか?「同じものなの?それとも何か違いが…?」そんな疑問を抱えている新人エンジニアのあなたのために、この記事でその違いをスッキリ解決します!

まずは大きな地図から!「勾配法」とは?

二つの言葉を理解するために、まずはより広い概念である「勾配法」から見ていきましょう。

そもそも「勾配」って何でしょう?

難しく考えないでください。あなたは今、山の地図を広げて、ある地点に立っていると想像してみてください。その場所から見て、一番傾斜が急になっている方向、つまり、最も急な坂道がどの方角にあるかを示しているのが「勾配」です。

そして、その「勾配」という情報を頼りに、山の頂上(最も高い場所)や、逆に谷底(最も低い場所)を探し出すための方法全般のことを「勾配法」と呼びます。

勾配法には、大きく分けて2つの戦略があります。

  1. 勾配を登っていく方法(最も高い場所を探す)
  2. 勾配を下っていく方法(最も低い場所を探す)

つまり、勾配法は「山のてっぺんか谷底を見つけるための冒険術」の総称、とイメージすると分かりやすいですね!

谷底を目指す専門家!「勾配降下法」とは?

さて、いよいよ「勾配降下法」の登場です。

もうお気づきかもしれませんが、勾配降下法は、先ほど紹介した勾配法の戦略のうち、「2. 勾配を下っていく方法」に特化した具体的な手法の名前なんです。

では、なぜエンジニアの世界、特に機械学習の分野では、この「下っていく」方法がそんなに重要なのでしょうか?

それは、機械学習モデルを賢くするためには、「間違い」をできるだけ小さくする必要があるからです。

機械学習では、モデルが算出した予測と、実際の正解との間にどれくらい誤差があるかを「損失関数」というもので計算します。この損失関数の値は、「間違いの大きさ」だと考えてみてください。

当然、この「間違いの大きさ」は、小さければ小さいほど良いですよね?

損失関数を「間違いの度合いを表す地形図」と見立てると、その値が最も小さくなる場所は、地形の谷底にあたります。勾配降下法は、この「間違いの谷底」を探すために、勾配(最も間違いが大きくなる方向)とは逆の方向に、一歩一歩進んでいく手法なのです。

この一歩進む、という部分を少しだけ数式で見てみましょう。Jetpackプラグインが入っていれば、次のように表示されます。

w_{new} = w_{old} - \eta \nabla E

いきなり数式が出てきて驚かないでくださいね!一つ一つの意味はとてもシンプルです。

  • w_{new} : 更新後の新しいパラメータ(次のステップの位置)
  • w_{old} : 更新前の古いパラメータ(現在の位置)
  • \eta : 学習率(イータと読みます)。どれくらいの大きさで一歩進むかを決める歩幅です。
  • $latex \nabla E latex E $の勾配(今いる場所で最も急な坂道の方向と傾き)

マイナス記号がついているのがポイントです。勾配(坂を登る方向)とは逆向きに、つまり坂を下る方向(谷底の方向)に、という歩幅で進んでいく、ということをこの式は表しているのです。

この学習率\eta はとても重要で、メリット・デメリットがあります。

歩幅が大きすぎると、谷底を飛び越えてしまって、なかなか最小値にたどり着けません(発散)。逆に小さすぎると、学習にものすごく時間がかかってしまいます。この歩幅を適切に決めることが、モデルの性能を左右する鍵の一つなんですよ!

一目でわかる!二つの関係性のまとめ

ここまでを整理すると、二つの関係は次のようになります。

項目勾配法 (Gradient Method)勾配降下法 (Gradient Descent)
役割関数の最大値または最小値を探す手法の「総称」関数の「最小値」を探すことに特化した具体的な手法
目的最大化、または最小化最小化
関係性上位概念(カテゴリ名)勾配法に含まれる一手法(商品名)

つまり、「勾配法」という大きな枠組みの中に、「勾配降下法」という具体的なテクニックが存在している、という親子関係なんですね。機械学習では損失関数の最小化が目的なので、特に勾配降下法が頻繁に使われる、というわけです。

次に何を学ぶべき?

勾配法と勾配降下法の違いがクリアになったら、次の一歩に進んでみましょう!

実は、今回紹介した勾配降下法は、最も基本的なもので「最急降下法」とも呼ばれます。実際の開発現場では、より効率的に学習を進めるために、これを改良した様々な手法が使われています。

  • 確率的勾配降下法 (SGD)
  • ミニバッチ勾配降下法
  • Adam (Adaptive Moment Estimation)

まずは、なぜこれらの新しい手法が必要になったのか、それぞれのメリット・デメリットは何なのかを調べてみるのがおすすめです。特に「確率的勾配降下法 (SGD)」は非常によく使われるので、ぜひチェックしてみてください!

違いを一つ一つ着実に理解していけば、機械学習の面白さがもっと見えてくるはずです。頑張ってください!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。