問題タブ [gradient-descent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - fminuncは、最急降下法の学習率(ステップ比率)値をどのように最適化しますか?
私は現在、機械学習アルゴリズムに取り組んでいますが、Matlabを使用するfminunc
と、パラメーターを手動で更新した場合と比較して、アルゴリズムが非常に高速に(数回の反復で)グローバル最小値に収束することに気付きました。
thetas[j] = thetas[j] - (alpha*gradient)/sampleNum;
alpha
素朴に(ステッププロポーション)は一定だと思っているからだと思います。
fminunc
では、 Cのようなものをどのように実装するのでしょうか?
alpha
現在のコストが以前のコストよりも大きいことが判明した場合は、大きいものから始めて調整しようとしました。これに伴う問題は、最小化された関数の形状が線形でない場合に発生します。これは、alpha
最初は非常に小さい値を取得し、関数の形状が「フラット」になる傾向がある場合(そしてより大きなステップを踏む可能性がある場合)に大きな値に戻らない可能性があるためです。 。
machine-learning - 最急降下確率更新-停止基準と更新ルール-機械学習
私のデータセットにはm
機能とn
データポイントがあります。w
(推定される)ベクトルとします。確率的更新法で最急降下法を実装しようとしています。私の最小化関数はleast mean square
です。
更新アルゴリズムを以下に示します。
ここで、は特徴<x>
の生のベクトル、は真のラベルの列ベクトル、は定数です。m
<y>
alpha
私の質問:
wikiによると、すべてのデータポイントを調べる必要はなく、エラーが十分に小さいときに停止できます。それは本当ですか?
ここで停止基準をどうすべきかわかりません。誰かがこれを手伝ってくれるなら、それは素晴らしいことです。
私が使用したこの式で、
for loop
それは正しいですか?私(<w>.<x_i> - <y_i>) * x_t
は私のと信じてい∆Q(w)
ます。
machine-learning - 実際の関数ではなく、関数の導関数を使用して極小値を計算するのはなぜですか?
機械学習回帰問題で、実際の関数ではなく微分関数の極小値が計算されるのはなぜですか?
例: http: //en.wikipedia.org/wiki/Gradient_descent
関数$$の極小値を見つけるために最急降下アルゴリズムが適用されます
デリバティブ付き
ここで、関数(A)の最急降下アルゴリズムを使用して極小値を見つけるために、関数(B)である(A)の微分関数を使用しました。
python - 線形回帰\最急降下法のPython実装
学習目的で最急降下法を最初から使用して線形回帰を実装しようとしています。私のコードの一部は本当に私を悩ませています。何らかの理由x
で、コード行を実行した後に変数が変更されていますが、その理由がわかりません。
変数は次のとおりです。x
とy
はnumpy配列であり、この例では乱数を指定しました。
コードは次のとおりです。
上記のコードを実行するとx
、リストではなくなります。変数nまたはリストの最後の要素のみになります。
matlab - 勾配降下アルゴリズムを使用すると、解が常に正しい方向に進むのはなぜですか?
古典的勾配降下アルゴリズムについて質問があります。最近、観測データと関数のパラメーターが与えられた場合、関数フィッティングプログラムを実装したいと考えています。関数の導関数が利用できるので、私が使用した方法は勾配降下アルゴリズムです。関数パラメーターが与えられていると仮定すると、関数に基づいてシミュレートされたデータを作成できます。
下の図は、シミュレートされたデータ (ぼかしアスタリスク ポイント) とポテンシャル関数 (赤) を示してい
ます。は標準微分デルタであり、関数は次のように記述されます。
ここで、A と B は既知と見なすことができます。次に、勾配降下アルゴリズムを使用する場合は、2 つのことを行う必要があります。1 つは、2 つの未知のパラメーター (p とデルタ) の関数の導関数をそれぞれ定義することであり、もう 1 つは、勾配降下アルゴリズムを呼び出すことです。ただし、私が混乱しているのは、反復手順中に推定パラメーターの 1 つ (デルタ) が常に正しい方向に進まないことです。
ただし、オブジェクト関数 (フィッティング ポイントと推定関数の間の距離の 2 乗の合計) が常に小さくなっていることに気付きました。
私の質問は、最終的には正しい場所に到達できるにもかかわらず、なぜ解決策が常に正しい方向に進むとは限らないのかということです. ありがとう!
cuda - CUDA での勾配降下最適化
最初の比較的大きな CUDA プロジェクトを、機械学習の目的で勾配降下最適化としてコーディングします。プロジェクトで使用するためのショートカットになる可能性のある CUDA のいくつかの便利なネイティブ関数について、群衆の知恵から利益を得たいと思います。アイデア/提案はありますか?
python - 勾配降下アルゴリズムで学習率と分散を決定する方法は?
私は先週、機械学習を学び始めました。モデルのパラメーターを推定する勾配降下スクリプトを作成したいとき、問題に遭遇しました: 適切な学習率と分散を選択する方法。収束することさえできません。また、別のトレーニング データ セットに変更すると、適切に選択された (学習率、分散) ペアが機能しなくなる可能性があります。たとえば、(下のスクリプト)、学習率を 0.001、分散を 0.00001 に設定すると、「data1」に対して、適切な theta0_guess と theta1_guess を取得できます。しかし 'data2' については、数十の (学習率、分散) ペアを試しても収束に至りません。
ですから、(学習率、分散)ペアを決定するための基準や方法があると誰かが教えてくれたらいいのですが。
machine-learning - 勾配降下収束 収束をどのように決定するか?
私は勾配降下法をオンライン リソース (つまり、coursera での機械学習) を通じて学びました。ただし、提供された情報は、収束するまで勾配降下を繰り返すとしか言いませんでした。
彼らの収束の定義は、反復回数に対するコスト関数のグラフを使用し、グラフが平らになるタイミングを観察することでした。したがって、私は次のことを行うと仮定します。
あるいは、収束を判断する別の方法は、係数が真の値に近づくのを見ることであるかどうか疑問に思っていました:
では、収束はコスト関数または係数に基づいているのでしょうか? また、精度の値はどのように決定するのでしょうか? 係数または総費用関数の % である必要がありますか?