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

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

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

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

ターゲット

勾配降下アルゴリズムは、関数の最小値を取得できる反復プロセスです (ここでは追加の考慮事項については言及しません)。次の式は、勾配降下アルゴリズム全体を 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

ブログ    
ブログ    

推薦する

科学者は機械学習を利用して結晶構造の酸化状態の謎を解明する

化学元素は物理世界のほぼすべてを構成しています。 2016 年現在、人類が知っている元素の数は 11...

Googleは社内でAIを使ったコンピュータチップの開発を試みていることを明らかに

グーグルの人工知能研究責任者ジェフ・ディーン氏によると、同社は人工知能プログラムを搭載したソフトウェ...

...

人工知能技術は子供たちにどのような影響を与えるのでしょうか?

人工知能技術は、おもちゃ、オンライン アプリケーション、ビデオ ゲームに組み込まれています。AI ア...

インターネットで話題! 23歳の中国人医師が22歳の歴史的弱点を治す、ネットユーザー「この話はいいね」

最近、別の若い中国人男性が、22年間存在していたバグを修正したことでインターネット上で人気を博した。...

人工知能XiaoIceが繊維企業向けにオンデマンドカスタマイズを実現するAIデザインプラットフォームを開設

9月23日、2020年中国国際紡織品・アクセサリー(秋冬)博覧会で、高級生地メーカーの陸豊織染が人工...

2019年にRedditの機械学習セクションで人気のプロジェクト17選:最新のコードとリソースがすべて利用可能

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

...

デジタルツインがディープラーニングのデータ格差を埋める

企業がデータを活用するディープラーニング (DL) プロジェクトに着手する場合、そのデータを保護する...

バイナリ検索ツリーの検証: インターネット上の古典的なアルゴリズム

[[427951]]この記事はWeChatの公開アカウント「Programmer Bear」から転載...

複数の都市が共同で人工知能コンピューティングネットワークを点灯し、人工知能産業の発展を促進する

Huawei Connect 2021では、中国科学技術情報研究所(CITI)、AITISA(新世代...

AIは観光業を良いビジネスにするでしょうか?

[[245713]]黄金の9月と銀の10月、観光業界は好景気の日々を待ち望んでいました。一方では、...

ガートナー:テクノロジープロバイダーの33%が2年以内にAIに100万ドル以上を投資する

[[427302]]ガートナーの新しい調査によると、人工知能 (AI) 技術計画を持つテクノロジーお...

潜在能力を解き放つ: 人工知能がパーソナライズされた学習に与える影響

急速に進化する今日の教育環境では、テクノロジーの統合がかつてないほど普及しています。さまざまな技術の...