問題タブ [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 投票する
0 に答える
219 参照

machine-learning - 勾配降下法を使用したロジスティック回帰により、データセットが異なると結果が異なります

2 つのデータセットで勾配降下法を使用してロジスティック回帰を試みていますが、それぞれ異なる結果が得られます。

Dataset1 入力

Dataset2 入力 -

y =

データセット 1 とデータセット 2 の違いは、値の範囲のみです。両方のデータセットに対して共通のコードを実行すると、私のコードはデータセット 1 に対して望ましい出力を提供しますが、データセット 2 に対しては非常に奇妙なアイデアを提供します。

私のコードは次のようになります:

次のように、各データセットのグラフを見つけてください。

データセット 1 の場合:

ここに画像の説明を入力

データセット 2 の場合:

ここに画像の説明を入力

ご覧のとおり、データセット 1 から正しい答えが得られます。

datsaet2 にはおそらく 10 ~ 100 の広範囲のデータがあると思いますが、それを正規化するために、dataset2 で機能スケーリングを使用してグラフを取得しました。形成された決定ラインは正しいものでしたが、予想された位置より少し下にありました。ご自分で確認してください。

特徴スケーリングを使用した Dataset2 入力:

以前のコードに機能スケーリングを追加した後に得られるグラフを以下に示します

ここに画像の説明を入力

ご覧のとおり、決定ラインが少し上にあれば、完璧な出力が得られたはずです..

シナリオを理解するのを手伝ってください。機能のスケーリングでさえ役に立たない理由です。または、コードにエラーがある場合、または何か不足している場合。

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

machine-learning - ニューラル ネットワーク ミニ バッチ勾配降下法

私は多層ニューラルネットワークを扱っています。ミニバッチ勾配降下を行うつもりです。100 万を超えるデータ ポイントの 100 のミニバッチがあるとします。ネットワーク全体の重みを更新しなければならない部分がわかりません。これらの 100 個のサンプルに対してフォワード パスを実行すると、これらの 100 個のサンプルのすべてのエラーが合計されます。これ以外に何をすればいいですか?隠れ層のエラーも並べて計算する必要がありますか? それらはいつ計算されますか?

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

python - Theano チュートリアルの説明

Theano ドキュメントのホームページで提供されているこのチュートリアルを読んでいます

勾配降下セクションの下にあるコードについてはよくわかりません。

ここに画像の説明を入力

for loop について疑問があります

「 param_update」変数をゼロに初期化した場合。

次に、残りの 2 行でその値を更新します。

なぜそれが必要なのですか?

ここで何か間違っていると思います。助けてくれませんか!

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

machine-learning - 勾配降下法を使用した SVM - 式

勾配降下法を使用して線形 SVM (サポート ベクター マシン) を実行しているときに、少し問題が発生しました。

私が使用している式を以下に示します。

ここに画像の説明を入力

ここで、最初の式はコスト関数で、2 番目の式は各フィーチャのシータ値です。

c はフィッティング パラメーター (正則化パラメーター) のコントロールです。

alpha は、勾配が収束する速度を決定します。

どういうわけか私のデータ セットに対して上記の式を実行すると、私の j(theta) は増加し続け、減少することはありません。c と alpha の値を変更して、考えられるすべてのシナリオを試しました。

もし何か不具合がありましたら式にあるのかもしれませんが、どなたかご指摘いただけると幸いです。

私が使用しているオクターブコードは次のとおりです。

ありがとう

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

numpy - 勾配降下法をベクトル化

Numpy でこの勾配降下を実装しました。

コードの他の部分はここで完全にベクトル化されていますが、まだ for ループがあり、これを排除することは不可能に思えます。具体的には、各ステップで theta の更新が必要ですが、それをベクトル化する方法や、より効率的な方法で記述する方法がわかりません。

ご協力ありがとうございました

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

matlab - すべての重みが最初の推測から再割り当てされる前に、ロジスティック回帰の勾配降下が停止しました

MATLAB でロジスティック回帰分類を実装しようとしていますが、勾配降下法を使用して正しい重みを計算することに固執しています。

私は確率論的アプローチを使用しているので、重みのベクトル内の各重みを特徴ごとに個別に更新してから、次のサンプルに移動してもう一度行います。

更新方程式を使用しています

theta_j := theta_j - alpha * (y_i - h_theta(x_i)) * x_ij

そして、最後の重みベクトルと現在の重みベクトルの差が 0.00005 未満になると中断します。2 つのベクトルの「差」を計算するには、一方を他方から引き、差ベクトルの内積の平方根をとります。

問題は、4 回の更新だけで更新が停止するように見えるため、8 行の重みベクトルの最初の 4 つだけがまったく更新されないことです。これは、私の学習率 (アルファ) に関係なく発生します。

これが私の実装です:

また、確率的ではなくグローバルな方法を試してみましたが、それでも非常に大きな重み値が得られます。

これが私のevaluateSigmoid関数です

そして、これが私が扱っているデータセットです。最後の列はフィルターで除外され、最初の列はしきい値 (22 未満は 0、上は 1) を満たすかどうかに基づいて 1 または 0 に変わります。