わかりやすい! 「高校数学」勾配降下法の数学的原理を理解する

わかりやすい! 「高校数学」勾配降下法の数学的原理を理解する
「時期尚早な最適化は諸悪の根源である。」

—ドナルド・アーヴィン・クヌース、コンピュータ科学者、数学者

アジャイルはソフトウェア開発プロセスにおいて広く知られている用語です。その背後にある基本的な考え方はシンプルです。すばやく構築する → リリースする → フィードバックを得る → フィードバックに基づいて修正する → このプロセスを繰り返す、というものです。このアプローチの目標は、製品をユーザーに近づけ、フィードバックを通じてユーザーからの指導を受け、バグを最小限に抑えた可能な限り最高の製品を実現することです。さらに、改善のためのステップは小さく、長期にわたってユーザーの関心を維持するものである必要があります。アジャイル ソフトウェア開発プロセスには、迅速な反復が部分的に含まれます。勾配降下法の基本的なプロセスはほぼ同じです。つまり、できるだけ早く解決策から始めて、できるだけ頻繁に測定して反復します。

ターゲット

勾配降下アルゴリズムは、関数の最小値を取得できる反復プロセスです (ここでは追加の考慮事項については言及しません)。次の式は、勾配降下アルゴリズム全体を 1 行にまとめたものです。

しかし、この式はどのようにして得られたのでしょうか? 実は非常にシンプルで、高校の数学を少し学ぶだけで済みます。この投稿を通じて、線形回帰モデルのコンテキストでこの式を理解し、再現することができたと思います。

機械学習モデル

2D 空間にいくつかのデータ ポイントがあるとします。これらのデータが学生グループの身長と体重に関するものであると仮定します。私たちは、将来の新入生の体重を予測できるように、これらの量の間に何らかの関係を予測したいと考えています。これは本質的に、教師あり機械学習技術の単純な例です。

ここで、空間内に任意の線を描き、いくつかのデータ ポイントを通過させてみましょう。この直線の方程式は Y = mX + b となり、m は傾き、b は Y 軸上の直線の切片です。

予測する:

既知の入力とそれに対応する出力のセットが与えられます。このデータに基づいて、機械学習モデルは新しい入力に対する出力を予測しようとします。

機械学習プロセス

エラーは 2 つの予測結果の差です。

関連する概念はコスト関数または損失関数です。

コスト関数

コスト関数/損失関数は、機械学習アルゴリズムのパフォーマンスを評価します。損失関数は単一のトレーニング サンプルのエラーを計算し、コスト関数はトレーニング セット全体にわたる損失関数の平均です。したがって、私はこれら 2 つの用語を同じ意味で使用します。

基本的に、コスト関数は、m と b の値が与えられた場合にモデルが予測を「どの程度正確に」実行できるかを示します。

たとえば、データ セットに N 個のポイントがあり、これらすべての N 個のデータ ポイントに対してエラーを最小化したいとします。したがって、コスト関数は合計二乗誤差となり、次のようになります。

N データポイントのコスト関数

なぜ絶対差ではなく二乗差を使用するのでしょうか? 二乗差を使用すると、回帰直線をより簡単に導出できるためです。実際、その線を見つけるには、コスト関数の 1 次導関数を計算する必要があり、絶対値の逆数を計算するのは、二乗値の導関数を計算するよりもはるかに困難です。

1. コスト関数を最小化する

あらゆる機械学習アルゴリズムの目標は、コスト関数を最小化することです。

これは、実際の値と予測値の間の誤差が低いほど、アルゴリズムの学習が優れているためです。低い誤差値が必要なので、m と b の値が可能な限り最小の誤差になるようにします。

2. 関数を最小化するには具体的にどうすればよいでしょうか?

よく見ると、コスト関数は Y=X² の形式になっています。デカルト座標では、これは放物線の方程式であり、次のようにプロットできます。

放物線

上記の関数を最小化するには、赤い点の位置である低い Y 値をもたらす X 値を見つける必要があります。これは 2D グラフなので、最小値を見つけるのは簡単ですが、高次元ではそうではありません。このような場合、最小値を見つけることができるアルゴリズムを設計する必要があり、このアルゴリズムが勾配降下法です。

勾配降下法

勾配降下法は最も一般的に使用される最適化アルゴリズムの 1 つであり、現在ニューラル ネットワークを最適化するために最も一般的に使用されている方法です。これは関数の最小値を見つけるために使用される反復最適化アルゴリズムです。

1. 直感的な理解

下の図に沿って歩いていて、現在緑の点にいるとします。あなたの目標は、最小値、つまり赤い点に到達することですが、あなたの位置からは、最小値がどこにあるかわかりません。

考えられるアクションは次のとおりです。

  • 上に行くことも下に行くこともできます
  • 進むべき方向を決めたら、目的地に到達するまでに、大きな一歩を踏み出すことも、小さな一歩を踏み出すこともできます。

基本的に、最低限の目標に到達するには、どの道を進むべきか、そしてどのくらいのステップを踏むべきかという 2 つのことを知っておく必要があります。

勾配降下アルゴリズムは、導関数を使用してこれらの決定を効果的かつ効率的に行うことができます。微分は微積分学の用語であり、特定の点におけるグラフの傾きとして計算できます。したがって、この接線を計算できれば、最小値に到達するためにどの方向に進むべきかがわかるかもしれません。これについては後ほど詳しく説明します。

2. 最小

上の画像では、緑色の点を通る接線を描くことができ、上方向に移動すると最小値から離れ、逆の場合も同様であることがわかります。さらに、この接線から斜面の急峻さもわかります。

青い点の傾斜は緑の点ほど急ではありません。つまり、青い点から最小値に到達するために必要なステップは、緑の点の場合よりもはるかに小さくなります。

3. コスト関数の数学的解釈

さて、これまで説明したことをすべて数学的な形で表現してみましょう。方程式 y = mX+b では、m と b がそのパラメータです。トレーニング中、その値はわずかに変化します。この小さな変化を δ と表記します。パラメータの値はそれぞれm=m-δm、b=b-δbとして更新されます。ここでの目標は、誤差を最小化する y=mx+b の m と b の値、つまりコスト関数を最小化する値を見つけることです。

コスト関数を書き直す:

関数の導関数と傾きを計算することで、その関数の導関数/傾きを見つけることができるという考え方です。

学習率

最小値または底値に到達するまでに取られるステップのサイズは、学習率と呼ばれます。ステップが大きく、学習率が高いほど、より広い領域をカバーできますが、最小値を超えるリスクがあります。一方、ステップが小さい/学習率が低い場合は、最低点に到達するまでに時間がかかります。

下の画像は学習率の概念を示しています。 3 番目のグラフでは、最小のステップで最小値に到達します。これはこの問題の学習率です。

学習率が低すぎると、収束するまでに多くのステップが必要になることがわかります。学習率が高すぎると、下の図に示すように、勾配降下法は最小値に到達できなくなります。

異なる学習率の実験結果については以下を参照してください。

https://developers.google.com/machine-learning/crash-course/fitter/graph をご覧ください。

派生語

機械学習では最適化問題に微分を使用します。勾配降下法などの最適化アルゴリズムでは、導関数を使用して、重みを増やすか減らすかによって目的関数を増減するかどうかを実際に決定します。

関数の導関数を計算できれば、その関数を最小化する方向に進むべきであることがわかります。ここでは主に、微積分学の 2 つの概念を扱います。

1. パワールール

べき乗則は、ある変数をべき乗した値の導関数を計算します。

2. チェーンルール

連鎖律は合成関数の導関数を計算するために使用されます。連鎖律はライプニッツ記法を使って次のように表現できます。

変数 z が変数 y に依存し、変数 y が変数 x に依存する場合、y と z は従属変数であり、z も中間変数を介して x に依存します。これは連鎖律と呼ばれ、数学的には次のように表現できます。

例を使ってこれを理解してみましょう。

導関数のべき乗則と連鎖律を使用すると、コスト関数が m と b に対してどのように変化するかを計算できます。これは偏微分の概念に関連しており、関数に 2 つの変数がある場合、1 つの変数に関するその関数の偏微分を求める方法は、他の変数を定数として扱うことです。例を挙げるとより明確になります:

3. 勾配降下法を計算する

ここで、これらの微積分の規則を元の方程式に適用し、コスト関数の m と b に関する導関数を求めます。コスト関数を再検討する:

簡単にするために、合計記号を削除しましょう。この合計部分は、特に確率的勾配降下法 (SGD) とバッチ勾配降下法の概念に関しては重要です。バッチ勾配降下法では、すべてのトレーニング例のエラーを一度にチェックします。SGD では、各エラーを 1 つずつチェックします。ただし、簡単にするために、各エラーを 1 つずつチェックすることを前提としています。

ここで、m と b に関する誤差の勾配を計算してみましょう。

これらの値をコスト関数に戻し、学習率を掛けます。

さて、この式の 2 はそれほど重要ではありません。それは、学習率が 2 倍または半分になることを意味するだけだからです。だから捨ててしまうんです。つまり、この記事全体は、最終的に、勾配降下法を表す 2 つの単純な方程式に要約されます。

m¹、b¹ = 次の位置パラメータ、m⁰、b⁰ = 現在の位置パラメータ。

したがって、勾配を解くには、m と b の新しい値を使用してデータ ポイントを反復処理し、偏微分を計算します。この新しい勾配は、現在の位置でのコスト関数の傾きと、パラメータを更新するために移動する必要がある方向を示します。更新のサイズは学習率によって制御されます。

要約する

この投稿の目的は、勾配降下法の概念を説明することです。線形回帰の最適化戦略として勾配降下法を使用しました。適合線を描いて、生徒の身長と体重の関係を測定します。ただし、この線形回帰の例はデモンストレーションを簡略化するために選択されたものであり、勾配降下法は他の機械学習手法にも使用できることに注意することが重要です。

オリジナルリンク:

https://towardsdatascience.com/understanding-the-mathematics-behind-gradient-descent-dde5dc9be06e

[この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  それは杞憂ではありません!人工知能が人間の労働に取って代わろうとしている

>>:  人工知能に関するTEDトークトップ10

ブログ    
ブログ    
ブログ    

推薦する

金融技術分野における人工知能と機械学習の応用と開発

[[383269]] [51CTO.com クイック翻訳] 過去数年間、金融業界では、業界の絶え間な...

...

2022 年の 9 つの新しいテクノロジー トレンドと雇用機会

1. 人工知能(AI)と機械学習人工知能 (AI) は過去 10 年間で大きな注目を集めてきましたが...

ChatGPTはカスタムコマンドを起動します。一度言って覚えておけば、話すたびにそれに従います。

「私は小学校の理科の先生です。科学的な概念について説明していただきたいです。例や類推などのテクニッ...

Wu Sinan の機械学習への旅: Numpy で多次元配列を作成する

[[188605]] Numpy は Python 科学計算のコアライブラリの 1 つであり、主に多...

JavaScript: ソートアルゴリズムとコード実装のトップ 10

この記事の内容には、(双方向) バブル ソート、選択ソート、挿入ソート、クイック ソート (穴埋めと...

知っておくべきビッグデータ用語 75 選

パート1(25用語)ビッグデータに不慣れな場合、この分野を理解したり、どこから始めればよいのかわから...

...

研究により、ディープラーニングAIは乳がんリスクの予測に優れていることが判明

放射線学誌に掲載された新しい研究によると、ディープラーニングと呼ばれる高度な人工知能は、一般的に使用...

...

...

烏鎮サミットから10年:呉永明が初めてアリババの新たな変化について言及

ノア著制作:51CTO テクノロジースタック(WeChat ID:blog) 「夜、烏鎮の橋のそばの...

フォーブス:人工知能が解決できる15の社会的課題

人工知能の応用範囲は非常に広いです。製造業から保険業まで、さまざまな業界がビジネスの改善に人工知能の...

...