機械学習最急降下法



Machine Learning Gradient Descent



元のブロガーのリンクはとても良いです
この記事では、次のことについて説明します。

(1)線形回帰の定義

(二)単変量線形回帰



(3)コスト関数:線形回帰がトレーニングセットに適合するかどうかを評価する方法 (4)最急降下法:線形回帰を解決する方法の1つ (5)特徴スケーリング:勾配降下法の実行速度を高速化する方法

(6)多変量線形回帰


線形回帰 1つの文に注意してください:多変量線形回帰の前に機能スケーリングが必要です!

方法:線形回帰は教師あり学習に属するため、方法と教師あり学習は同じである必要があります。最初にトレーニングセットを与え、このトレーニングセットに従って線形関数を学習し、次にこの関数が適切にトレーニングされているかどうかをテストします)、最適な関数を選択します(コスト関数が最小です)注:(1)線形回帰であるため、学習した関数は線形関数、つまり線形関数です。(2)単一の変数であるため、xは1つだけです。
単変量線形回帰モデルを与えることができます: xを特徴、h(x)を仮説と呼ぶことがよくあります。
上記の「方法」から、間違いなく疑問があります。線形関数がうまく適合するかどうかをどのように確認できますか?コスト関数(コスト関数)を使用する必要があります。コスト関数が小さいほど、線形回帰が良くなります(トレーニングセットによりよく適合します)。もちろん、最小値は0であり、完全なフィッティングです。

実用的な例を挙げます。



次のデータセットを前提として、家のサイズに基づいて家の価格を予測します。

以下に示すように、上記のデータセットに基づいてグラフを描画します。



コスト関数を最小化するには、これらの点に基づいて直線を近似する必要があります

コスト関数がどのように見えるかはまだわかりませんが、目標は次のとおりです。入力ベクトルx、出力ベクトルy、シータベクトルを指定し、コスト値を出力します。
上記では、単変量線形回帰の一般的なプロセスについて説明しました。

コスト関数

コスト関数の目的:仮想関数を評価するには、コスト関数が小さいほど、トレーニングデータの適合性が高くなります。次の図は、コスト関数がブラックボックスである場合のコスト関数の役割の詳細を示しています。
しかし、私たちは間違いなくコスト関数の内部構造が何であるかを知りたいですか?したがって、次の式を与えます。 どこ: ベクトルxのi番目の要素を表します ベクトルyのi番目の要素を表します 既知の仮説関数を表しますmはトレーニングセットの数です

たとえば、与えられたデータセット(1,1)、(2,2)、(3,3)
次に、x = [123]、y = [123](ここでの文法はOctave言語の文法であり、3 * 1行列を意味します)
theta0 = 0およびtheta1 = 1を予測すると、h(x)= xとなり、コスト関数は次のようになります。
J(0,1)= 1 /(2 * 3)* [(h(1)-1)^ 2 +(h(2)-2)^ 2 +(h(3)-3)^ 2] = 0;
theta0 = 0およびtheta1 = 0.5を予測すると、h(x)= 0.5xとなり、コスト関数は次のようになります。
J(0,0.5)= 1 /(2 * 3)* [(h(1)-1)^ 2 +(h(2)-2)^ 2 +(h(3)-3)^ 2] = 0.58;


theta0が常に0の場合、theta1とJの関数は次のとおりです。 theta0とtheta1が固定されていない場合、theta0、theta1、およびJの関数は次のようになります。
もちろん、2次元グラフ、つまり等高線図を使用することもできます。

注:線形回帰の場合、costfunctionJの関数はお椀型である必要があります。つまり、最小点は1つだけです。
上記では、コスト関数の定義と式について説明しました。

最急降下法

しかし、別の問題がそれにつながります。関数は与えられていますが、コスト関数に従ってその関数がうまく適合するかどうかを知ることができます。正しい?したがって、最急降下法につながります。コスト関数の最小値を見つけることができます。最急降下法の原理:関数を山と比較します。私たちは丘の中腹に立って周りを見回します。小さな一歩を歩く方向から、最速の降下は
もちろん、問題を解決する方法はたくさんあります。最急降下法はその1つにすぎません。また、正規方程式と呼ばれる別の方法があります。
方法:(1)最初に次のステップへのステップサイズを決定し、それを学習率と呼びます(2)任意に初期値を与えます: ;(3)下方向を決定し、所定のペースで下りて更新する ;(4)下降高さが規定値未満の場合は下降を停止する
アルゴリズム


特徴:(1)始点が異なり、得られる最小値も異なるため、最急降下法では極小値のみが検出されます。(2)最急降下法では、最小値に近づくほど降下速度が遅くなります。
質問:もし 初期値は極小値にあり、その後 それはどのように変化しますか?回答:なぜなら すでに極小値にあるため、導関数は0でなければなりません。 変わらない
正しければ 価値、コスト関数はますます小さくなるはずです質問:それを取得する方法 値?回答:いつでも観察してください 値、コスト関数が小さくなる場合はOK、それ以外の場合は小さい値を取ります
次の図は、勾配降下プロセスを詳細に示しています。
上の写真からわかるように:初期点が異なり、得られる最小値も異なります、したがって、最急降下法は極小値のみを見つけます
注:立ち下がりステップのサイズは非常に重要です。小さすぎると関数の最小値を見つける速度が非常に遅くなり、大きすぎると最小値をオーバーシュートする現象が発生する可能性があるためです。
次の図は、オーバーシュート最小の現象です。
学習率の値でJ関数が増加していることがわかった場合は、学習率の値を減らす必要があります。

最急降下法および線形回帰との統合

最急降下法は関数の最小値を見つけることができます線形回帰を要求する必要があるため、コスト関数は最小になります
したがって、次の図に示すように、最急降下法をコスト関数に適用できます。つまり、最急降下法と線形回帰を統合できます。


最急降下法はノンストップの反復によるものであり、最急降下法の実行速度に関連しているため、反復回数に注意を払います。反復回数を減らすために、機能スケーリングが導入されています。

機能のスケーリング

この方法は、最急降下法に使用されます。最急降下法の実行をスピードアップ;アイデア:各機能の値を標準化して、値の範囲を作成します-1の間<=x<=1
一般的な方法は平均正規化です。 または:[X-mean(X)] / std(X)

実用的な例を挙げると、

2つの機能があります:(1)サイズ、値の範囲は0〜2000(2)#bedroom、値の範囲は0〜5機能のスケーリングを通過した後、


演習
中間の開始スコアを通じて最終試験の結果を予測したいと思います。取得したい方程式は次のとおりです。
次のトレーニングセットがあるとします。
中間試験 (中間試験) 期末試験
89 7921 96
72 5184 74
94 8836 87
69 4761 78
(中間試験)^ 2で機能スケーリングを実行してから、 機能スケーリング後の値は何ですか?
最大= 8836、最小= 4761、平均= 6675.5、次にx =(4761-6675.5)/(8836-4761)= -0.47

多変量線形回帰

以前は、単変量線形回帰のみを導入しました。つまり、入力変数は1つだけであり、現実の世界では不可能であるため、ここでは多変量線形回帰を導入します。
例:住宅価格は、実際には、サイズ、寝室の数、階数、家の年齢など、多くの要因によって決定されます。ここでは、次の図に示すように、住宅価格が4つの要因によって決定されると仮定します。


単変量線形回帰のモデルを以前に定義しました。

ここで、多変量​​線形回帰モデルを定義できます。


コスト関数は次のとおりです。
最急降下法を使用して多変量線形回帰を解決する場合でも、従来の最急降下法アルゴリズムを使用して次の計算を行うことができます。



一般的な演習:


1. 1年目の学生の結果に基づいて2年目の結果を予測したい、xは1年目に得られたAの数、yは2年目に得られたAの数です。次のデータセット:
バツ Y
3 4
1
4 3
0 1
(1)トレーニングセットの数はいくつですか? 4(2)J(0,1)の結果は何ですか? J(0,1)= 1 /(2 * 4)* [(3-4)^ 2 +(2-1)^ 2 +(4-3)^ 2 +(0-1)^ 2] = 1 / 8 *(1 + 1 + 1 + 1)= 1/2 = 0.5;
ベクトル化によってJ(0,​​1)をすばやく計算することもできます。