問題タブ [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.

0 投票する
1 に答える
185 参照

regression - 勾配降下法が収束しない

これは、matlab 言語での勾配降下アルゴリズムの私自身の実装です。

作業アルゴリズムを編集

このアルゴリズムを次のトレーニング データセットに適用しました。最後の列は出力変数です。ここには 15 の異なる機能があります。

理由は不明ですが、収束に向かっているかどうかを確認するために 50 回の反復後にコスト関数 J をプロットすると、収束していないことがわかります。理解するのを手伝ってもらえますか? 実装が間違っているのでしょうか、それとも何かを作る必要がありますか?

0 投票する
0 に答える
238 参照

neural-network - Pybrain の勾配チェックを使用してニューラル ネットワークの正確性を調べる

単純なネットワークの正確性をチェックするためにこのダミー コードを書きました (こちらのドキュメントに従って) が、入力数を 30 を超えて増やすたびに、次のエラーが発生します。

(「不正なグラデーション」、配列[...])

(「正しくないモジュール:」、フル接続「フル接続 - 7」:「バイアス」->hidden0'、[...])

どちらの場合も、これらの角括弧には、サイズのためにここに投稿できない巨大な配列が含まれています。私の実際のコードでは、62 個の入力で分類問題を解決しようとしているので、その多くの入力を処理できるネットワークを構築する必要があります。また、隠れ層の数と、隠れ層のニューロンの数を増やしてみました (50 まで試しました) が、それは役に立ちませんでした。コードは次のとおりです。

ここで関係があるかどうかはわかりませんが、現在 900 サンプルのデータがあり、さらに 1000 サンプル程度になると予想しています。

0 投票する
0 に答える
96 参照

python - fmin_cg が十分に最小化されていません

やっている間、勾配降下の単純な実装(サンプルポイントを入力としてstラインを予測する)だけで、反復法でラインをかなり正確に予測しましたが、fmin_cg()を使用すると精度が低下し、最初に考えたのは増加することでした関数の 'maxiter' パラメーターを使用しましたが、驚くべきことに、まったく影響がありませんでした (結果は maxiters = 1 と 1000 で同じです)。私の頭の中の 2 つの質問: fmin_cg() は、f と fprime を計算しますが、結果の精度はそれに比例するべきではありません.. 2. fmin_cg() (apt fprime が提供されている場合) は、f が可能な限り最小であるパラメーターを返すことを保証します。

私のコード:

コスト関数 :

完全なコード: http://ideone.com/IbB3Gb (どちらのバージョンも、4 行目と 5 行目を切り替える必要があるとコメントしただけです) :)

0 投票する
1 に答える
270 参照

java - 特徴ベクトル バッグ オブ ワード分類タスクに適用される勾配降下法

Andrew Ngのビデオを何度も見ましたが、勾配降下法を問題に適用する方法がわかりません。

彼は、高レベルの概念説明の領域だけを扱っていますが、私が必要としているのは、基本レベルの戦術的洞察です。

私の入力は、次の形式の特徴ベクトルです。

例:

辞書は次のとおりです。

したがって、ベクトルとしてのドキュメントは次のようになります。

私が見たものによると、勾配降下のアルゴリズムは次のようになります。

ここに画像の説明を入力

私の現在の理解では、α は学習率、x (i)は特徴であり、上の例でDocument 2は x (3) =2 です。

y (i)はラベルです。私の場合Document、特定の特徴ベクトルに関連付けられた を予測しようとしているため、たとえば y (0)は に関連付けられDocument 1、y (1)はに関連付けられDocument 2ます。

潜在的に多くのドキュメント (10 としましょう) があるため、y (0)に関連付けられた 5 つのドキュメントと y (1)に関連付けられた 5 つのドキュメントを持つことができますm = 10

私がよく理解していない最初のことは、Θ 0と Θ 1の役割は何ですか?

パーセプトロン アルゴリズムと同様に、それらは重み値であると思います。固有の値に関係なく、関連付けられているラベルの値を出力するように機能を誘導するために、それらを機能の値に適用します。 . あれは正しいですか?それで、私は Θ 値をパーセプトロンの重み値と同一視してきましたが、これは正確ですか?

さらに、私たちが勾配をとっているものを理解していません。丘の上を歩くことについて別の高レベルの説明を聞くことは本当に気にしません。実際には、上で詳しく説明した状況について、勾配をどのように取っているのでしょうか。後続の 2 つの反復での重みは? 機能の価値とそれが本当のラベルですか?

ご検討いただきありがとうございます。どんな洞察でも大歓迎です。

0 投票する
1 に答える
220 参照

java - Theta 更新ルールの勾配出力を計算する

これは 0/1 活性化関数の代わりにシグモイド関数を使用しているため、これが勾配降下を計算する正しい方法だと思います。そうですか?

この次のコードでは、Θ 値を更新しようとしています (パーセプトロンの重みに相当しますよね?) 。関連する質問LEARNING_RATE * localError * feature_matrix__train[p][i] * output_gradient[i]で、その目的のためにこの式が与えられました。パーセプトロンからの重みの更新をコメントアウトしました。

この新しい更新ルールは正しいアプローチですか?

output_gradient とはどういう意味ですか? calculateOutputそれは私の方法で計算した合計と同等ですか?


更新 更新しましたが、次のようになります。