問題タブ [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.
matlab - 確率的勾配降下法を使用した Matlab での行列因数分解
Matrix
R[m n] を 2 つの低ランク行列 (U[K m] と V[K*n])に因数分解する必要があります。これは、U と V によって R の欠損値を予測するために行います。
問題は、Rを因数分解するために因数分解法を使用できないため、因数分解の精度を高めるためMatlab
に を最小化する目的関数に取り組まなければならないことです。
詳細を以下に示します。 sum-of-squared-errors
この投稿での私の質問は、確率的勾配降下法を使用して R を U 行列と V 行列に分解する際の関数 Fを最小化する方法です。Matlab
助けてくれてありがとう!
matlab - Matlab での勾配降下からの誤った結果
私は Matlab でコースを受講しており、勾配降下法を実装しましたが、正しくない結果が得られます。
コード:
これが重要な部分です。最適化されていませんが、式の実装は正しいと思います。式は次のとおりです。
では、どこに問題があるのでしょうか。
編集:コードが更新されました
編集 (2): 修正、作業コード。
わかった、それは +Dan のヒントでした。私は彼の答えを受け入れますが、行き詰まった人にはここにコードを入れます:)、乾杯。
matlab - matlabでの多変数勾配降下
複数の変数に対してmatlabで勾配降下を行っていますが、コードは通常の式で得た予想されるシータを取得していません。つまり: theta = 1.0e+05 * 3.4041 1.1063 -0.0665 実施しました。
そして、GDMで得られる結果は次のとおりです。 theta = 1.0e+05 * 2.6618 -2.6718 -0.5954 なぜこれなのかわかりません。誰かが私を助けて、コードのどこに間違いがあるか教えてくれるかもしれません。
コード:
ありがとう。
編集: データ。
完全なデータセット。
python - 勾配降下法 (機械学習) の Python 実装
ここでPythonで勾配降下を実装しようとしましたが、コストJはラムダ値とアルファ値に関係なく増加しているようです。ここでの問題が何であるかを理解できません。誰かがこれで私を助けることができれば、それは素晴らしいことです. 入力は同じ次元の行列 Y と R です。Y は映画 x ユーザーの行列であり、R はユーザーが映画を評価したかどうかを示すだけです。
machine-learning - ニューラル ネットワークの重みを乱数に初期化する必要があるのはなぜですか?
ニューラルネットワークをゼロから構築しようとしています。すべての AI 文献で、ネットワークがより速く収束するためには、重みを乱数に初期化する必要があるというコンセンサスがあります。
しかし、ニューラル ネットワークの初期重みが乱数として初期化されるのはなぜでしょうか?
これは「対称性を破る」ために行われ、これによりニューラルネットワークの学習が速くなるとどこかで読んだことがあります。対称性を破るとどのように学習が速くなるのですか?
重みを 0 に初期化する方がよい考えではないでしょうか? そうすれば、重みは値 (正または負) をより速く見つけることができますか?
初期化時に最適値に近づくことを期待する以外に、重みをランダム化する背後にある他の基本的な哲学はありますか?
matlab - ニュートンの勾配降下線形回帰
ニュートン法を使用して最適な線形回帰を計算する関数を MatLab に実装しようとしています。しかし、ある点で行き詰まりました。二次導関数の求め方がわかりません。だから私はそれを実装することはできません。これが私のコードです。
ご協力いただきありがとうございます。
編集::
紙とペンでこの問題を解決しました。必要なのは微積分と行列演算だけです。二次導関数を見つけましたが、現在は機能しています。興味のある人のために、作業コードを共有しています。
matlab - 勾配降下コードのベクトル化
Matlab でバッチ勾配降下法を実装しています。の更新手順に問題がありtheta
ます。
theta
2 つの成分 (2 行) のベクトルです。
行 (トレーニング サンプルの数)と列 (特徴の数)X
を含む行列です。Yは行ベクトルです。m
n=2
m
更新ステップ中に、それぞれtheta(i)
を次のように設定する必要があります
これはfor
ループで実行できますが、ベクトル化する方法がわかりません (X(:,i)
用語のため)。
なにか提案を?
java - オクターブでの fminunc の Java 実装
fminunc
Javaでオクターブの(関数最小化の制約なし)ライブラリのJavaバージョンを見つけようとしています。目標は、ロジスティック回帰に使用することです。
現在、私はコストを最小限に抑えるために勾配降下の自作バージョンを使用しています。既存のライブラリを使用して(Javaで)それを実行できるようにしたいと考えています。これは、 Coursera Machine Learningコースから得たオクターブ コードを Java に移植するという私の取り組みに関連しています。
machine-learning - RISO の L-BFGS が機能しない
Java でのロジスティック回帰の関数最小化のために、RISO の L-BFGS ライブラリの実装をテストしています。ここに私が使用しているクラスへのリンクがあります。
ライブラリをテストするために、関数を最小化しようとしています:
ライブラリには、以下のように実装した目的関数と勾配関数が必要です。
この目的関数と勾配の実装でコードを実行すると、次の例外が発生します。
公差をデフォルト値から変更していません。私は何を間違っていますか?