問題タブ [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.
artificial-intelligence - RPROP ニューラル ネットワークがスタックする
アルゴリズムの実装は正しいので (何百回もチェックしました)、理論上の事実を誤解していると思います。
jがhiddenlayer
側を指し、kが出力層を指すとすると、
∂E/∂wjkは次のように計算されます。
∂E/∂wij の場合、'i' は入力層を指し、'j' は隠れ層を指します。これは少し長くなります。
各隠れユニット (Zj、j = 1、...、p) は、(出力層のユニットからの) デルタ入力を合計します。
次に、隠しユニットのエラー情報を計算します。
最後に、∂E/∂wij は次のとおりです。
ここで説明されているように、RPROP を適用します
。
「#」と「-」で構成される文字、9(行)x7(列)を認識しようとしています。
MSE は、数エポック後に 172 でスタックします。
RPROP がバッチ学習であることは知っていますが、とにかく機能すると読んだので、オンライン学習を使用しています。
machine-learning - シャッフル データを使用した回帰の確率的勾配降下法は、シャッフルされていない場合よりも優れたパフォーマンスを発揮します。なんで?
回帰タスクに確率的勾配降下法 (SGD) アルゴリズムを使用しており、入力データ ポイントを複数回反復するようにネットワークをトレーニングしています。入力データをシャッフルすると、同じ回数の反復でシャッフルされていない入力データと比較して、はるかに良い結果が得られることがわかりました。例として、[-1,1] の間の入力範囲の "Square" 関数を合計 100 ポイントと 500 回の反復で学習するためにネットワークをトレーニングしています。したがって、トレーニング ポイントの合計は 100*500 になり、これらすべてのトレーニング ポイントをシャッフルすると、システムのパフォーマンスが大幅に向上します。
誰かがその背後にある数学を示唆してもらえますか? 入力のシャッフルのパフォーマンスが向上するのはなぜですか? または、トレーニングの確率論がどのように役立つかを説明する参考文献の提案。
ありがとう。
r - オンライン SGD で使用される glmnet (R) のラムダ
私はパッケージcv.glmnet
から(で)使用しています。結果として、 のベクトル(正則化パラメーター) が得られます。オンライン SGD アルゴリズムで使用したいと思います。そうする方法はありますか?glmnet
R
lambda
どんな提案も役に立ちます。
R パッケージの cv.glmnet 関数を使用してオフラインで一度計算された l1 正則化および二項分布 (ロジスティック リンク関数) を持つ一般化線形モデルの結果 (モデルの係数および正則化出力パラメーターの観点から) をどのように比較できるか疑問に思っています。 Raphson-Newton推定アルゴリズムと同じタイプのオンライン評価モデルを使用すると思いますが、確率的勾配降下アルゴリズム(クラシック、タイプI)を使用して、新しい観測ごとに推定値が再計算されます。
algorithm - ニューラル ネットワークの初期トレーニングの難しさ
人工ニューラル ネットワーク (ANN) について研究しています。私は、構造変化と予測率の相関関係を主な研究対象として、多くの異なる ANN をトレーニングしようとしています。
トレーニング ステップが小さすぎるために、最初の 100 回程度の反復でトレーニング アルゴリズムがほぼ初期状態に収束することがよくあることに気付きました。なぜこれが起こるのか、私には明確な考えがありません。誰かが同じ問題に直面しましたか? この理由は何でしょうか?問題があると思われる場所から反復スキームを強制的に機能させるよりも、問題を克服するためのより良い方法はありますか?
fmincg と fminunc を使用して Octave でネットワークをトレーニングしています。バックプロップ。勾配とコスト関数を取得することは、ロジスティック回帰と同じです。問題は、最初の隠れ層に 10 ニューロン、2 番目の隠れ層に 10 ニューロンのネットワーク構造で発生しました。MNIST データベースは、トレーニング セットとテスト セットの両方に使用されています。
追加: Fminunc は 3 層 ANN ではまったくうまく機能しないようですが、2 層 ANN を使用したいくつかの確率変数の下では、問題なく収束するようです。共役勾配は、初期フェーズを強制すると機能するようです。
問題は重みのランダムな初期化でしょうか? 変動性が低すぎる可能性があります [-0.12; 0;12] 問題の原因は?
編集:ネットワーク構造部分をもう少し明確にしました。
optimization - パラメータ w と u の勾配を計算した後、SGD の方法でそれらを最適化するための次のステップは何ですか?
コーディング内容:重み行列 w とスコアの 2 番目のパラメーター u を使用して、簡単なニューラル ネットワークを構築します。入力ベクトルに w を掛けた後、結果にベクトル u を掛けて 1 つの図として結果を取得し、それが私のスコアです。
現在の場所:損失関数に関して、2 つのパラメーターの両方の勾配を計算しました。
私の問題:そして今、次に何をすべきか立ち往生していますか?
私の解決策の提案:パラメータを w = w + learingrate * w_grad (および u = u learning rate *u_grad) で更新し、コスト/損失値が減少するまでこの手順を実行できますか? これは機能しますか? これは正しいです?これは、確率的勾配降下の簡単な実装ですか?
私は Java でコーディングしています。簡単な方法でニューラル ネットワークを最適化する方法の簡単で優れた文書化された例があれば、それを私と共有してください。
前もって感謝します!
optimization - Excel での非線形、非滑らかな最適化
Excel で非線形で滑らかでない最適化を解決しようとしています。GRG アルゴリズムと進化的アルゴリズムはどちらも、妥当な結果を出すことができません (特定のケースでは収束していません)。制約の数は Excel の推奨制限内にあり、モデルの構成は正しいです。この最適化問題を Excel で実行するために必要な次善のオプションは何ですか? フロントライン プレミアム ソルバー プラットフォーム (Excel ソルバーよりも多くのソルバー エンジンを備えている) を使用する方が良いですか、それともより優れたサード パーティのソルバー アドインはありますか? おすすめを教えてください。
PS: これを Excel から移動することは、私にとって選択肢ではありません。
machine-learning - パーセプトロンは常に 1 つのパターンだけを再現することを学習します
これはかなり奇妙な問題です。
次のように、完全に機能する逆伝播のコードがあります。
現在、バッチ学習を行うと、単純なスカラー関数の近似に関係する場合でも、間違った結果が得られます。
トレーニング後、ネットワークはすべての入力パターンに対してほぼ同じ出力を生成します。
この瞬間までに私は試しました:
- バイアス重みの導入
- 入力重みの更新の有無にかかわらず試してみました
- バッチ学習でパターンをシャッフル
- 各パターンの後に更新を試み、蓄積
- 考えられるさまざまな方法で初期化された重み
- コードを 10 回ダブルチェックした
- パターン数で正規化された累積更新
- 別のレイヤー、ニューロン数を試しました
- さまざまなアクティベーション関数を試しました
- さまざまな学習率を試した
- 50 から 10000 までの異なる数のエポックを試しました
- データの正規化を試みました
たった 1 つのパターンに対して一連の逆伝播を行った後、ネットワークは多種多様な入力に対してほぼ同じ出力を生成することに気付きました。
関数を近似しようとすると、常に直線 (ほぼ直線) になります。このような:
関連する質問:ニューラル ネットワークは常に任意の入力に対して同じ/類似の出力を生成し ます。バイアス ニューロンを追加するという提案は、私の問題を解決しませんでした。
次のような投稿を見つけました。
これは私の状況を十分に詳しく説明しています。しかし、どのように対処するのですか?
私が遭遇する状況には、そうあるべきだという結論に達しています。実際には、ネット構成ごとに、出力レイヤーまでのすべての接続を「カット」することができます。これは実際に可能です。たとえば、非表示レイヤーを過飽和にして出力を入力から独立させるために、すべての非表示の重みをほぼゼロに設定するか、バイアスを異常な値に設定します。その後、入力とは独立して出力をそのまま再現するように、出力レイヤーを自由に調整できます。バッチ学習では、勾配が平均化され、ネットはターゲットの平均だけを再現します。入力は何の役割も果たしません。
python - ニューラル ネットワーク トレーニング プラトーイングにおける勾配降下
私はPythonで基本的なバックプロパゲーションニューラルネットワークを実装しようとしており、重みセットの初期化とトレーニングのためのプログラミングを終了しました. ただし、私がトレーニングするすべてのセットで、エラー (平均二乗) は常に奇妙な数に収束します。エラーは、さらに反復すると常に減少しますが、真にゼロに近づくことはありません。
どんな助けでも大歓迎です。
r - 勾配降下計算のエラー
線形回帰モデルの勾配降下を計算する関数を作成しようとしました。しかし、私が得た答えは、正規方程式法を使用して得た答えと一致しません。
私のサンプルデータは次のとおりです。
c(4,6,8) は y の値です。
この関数を実行すると、
私が得た結果は
正規方程式法を使用すると、
この関数で私が間違っていた場所に誰かが光を当ててくれることを願っています。