問題タブ [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.
machine-learning - 勾配降下法を使用したロジスティック回帰により、データセットが異なると結果が異なります
2 つのデータセットで勾配降下法を使用してロジスティック回帰を試みていますが、それぞれ異なる結果が得られます。
Dataset1 入力
Dataset2 入力 -
y =
データセット 1 とデータセット 2 の違いは、値の範囲のみです。両方のデータセットに対して共通のコードを実行すると、私のコードはデータセット 1 に対して望ましい出力を提供しますが、データセット 2 に対しては非常に奇妙なアイデアを提供します。
私のコードは次のようになります:
次のように、各データセットのグラフを見つけてください。
データセット 1 の場合:
データセット 2 の場合:
ご覧のとおり、データセット 1 から正しい答えが得られます。
datsaet2 にはおそらく 10 ~ 100 の広範囲のデータがあると思いますが、それを正規化するために、dataset2 で機能スケーリングを使用してグラフを取得しました。形成された決定ラインは正しいものでしたが、予想された位置より少し下にありました。ご自分で確認してください。
特徴スケーリングを使用した Dataset2 入力:
以前のコードに機能スケーリングを追加した後に得られるグラフを以下に示します
ご覧のとおり、決定ラインが少し上にあれば、完璧な出力が得られたはずです..
シナリオを理解するのを手伝ってください。機能のスケーリングでさえ役に立たない理由です。または、コードにエラーがある場合、または何か不足している場合。
machine-learning - ニューラル ネットワーク ミニ バッチ勾配降下法
私は多層ニューラルネットワークを扱っています。ミニバッチ勾配降下を行うつもりです。100 万を超えるデータ ポイントの 100 のミニバッチがあるとします。ネットワーク全体の重みを更新しなければならない部分がわかりません。これらの 100 個のサンプルに対してフォワード パスを実行すると、これらの 100 個のサンプルのすべてのエラーが合計されます。これ以外に何をすればいいですか?隠れ層のエラーも並べて計算する必要がありますか? それらはいつ計算されますか?
python - Theano チュートリアルの説明
Theano ドキュメントのホームページで提供されているこのチュートリアルを読んでいます
勾配降下セクションの下にあるコードについてはよくわかりません。
for loop について疑問があります。
「 param_update」変数をゼロに初期化した場合。
次に、残りの 2 行でその値を更新します。
なぜそれが必要なのですか?
ここで何か間違っていると思います。助けてくれませんか!
machine-learning - 勾配降下法を使用した SVM - 式
勾配降下法を使用して線形 SVM (サポート ベクター マシン) を実行しているときに、少し問題が発生しました。
私が使用している式を以下に示します。
ここで、最初の式はコスト関数で、2 番目の式は各フィーチャのシータ値です。
c はフィッティング パラメーター (正則化パラメーター) のコントロールです。
alpha は、勾配が収束する速度を決定します。
どういうわけか私のデータ セットに対して上記の式を実行すると、私の j(theta) は増加し続け、減少することはありません。c と alpha の値を変更して、考えられるすべてのシナリオを試しました。
もし何か不具合がありましたら式にあるのかもしれませんが、どなたかご指摘いただけると幸いです。
私が使用しているオクターブコードは次のとおりです。
ありがとう
numpy - 勾配降下法をベクトル化
Numpy でこの勾配降下を実装しました。
コードの他の部分はここで完全にベクトル化されていますが、まだ for ループがあり、これを排除することは不可能に思えます。具体的には、各ステップで theta の更新が必要ですが、それをベクトル化する方法や、より効率的な方法で記述する方法がわかりません。
ご協力ありがとうございました
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 に変わります。