問題タブ [convergence]

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 に答える
3037 参照

scipy - BFGS が収束しない

私が取り組んでいるモデルは、多項ロジット選択モデルです。これは非常に特殊なデータセットであるため、他の既存の MNLogit ライブラリは私のデータに適合しません。

基本的に、これは非常に複雑な関数で、11 個のパラメーターを取り、対数尤度値を返します。次に、scipy.optimize.minimize を使用して対数尤度を最小化できる最適なパラメーター値を見つける必要があります。

さまざまな方法で発生する問題は次のとおりです。

「Nelder-Mead」: うまく機能し、常に正しい答えを教えてくれます。ただし、非常に遅いです。より複雑な設定の別の関数の場合、最適なポイントに到達するまでに 15 時間かかります。同時に、同じ関数は、fminunc (デフォルトで BFGS を使用) を使用して Matlab で 1 時間しかかかりません。

'BFGS': これは、Matlab で使用される方法です。単純な関数に対してはうまく機能します。ただし、私が持っている関数では、常に収束に失敗し、「精度が失われたために必ずしも達成されたというわけではありません。」を返します。オプションをいじって多くの時間を費やしましたが、それでもうまくいきませんでした。

'Powell': すぐにうまく収束しますが、間違った答えを返します。コードは以下に表示されます (x0 が正解です。Nelder-Mead は初期値に関係なく機能します)。ここでデータを取得できます: https://www.dropbox.com/s/aap2dhor5jyxy94/data.csv

ありがとう!

更新: 2014 年 3 月 7 日 コードのより単純なバージョン Powell は非常に小さな許容誤差でうまく動作しますが、この場合、Powell の速度は Nelder-Mead よりも遅くなります。BFGS はまだ機能しません。

0 投票する
2 に答える
167 参照

scala - Scala: 収束による数学的再帰の実装

多くの数値問題は次の形式です。

慣用的な Scala を使用してこのようなアルゴリズムを作成する良い方法があるかどうか疑問に思っています。問題の性質上、Iteratorまたはが必要Streamです。しかし、これに対する私の現在の見解は本当に醜いように見えます:

これは醜いだけでなく、パターンマッチングtakeWhileも警告を引き起こします。明らかに、ここでパターン マッチングを行う必要はありませんが、元の数学的パターンとの類似性を維持したいと考えています。

これをより美しく見せるためのアイデアはありますか?

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

wolfram-mathematica - マテマティカ。発振機能の統合

Mathematica の積分について助けが必要です:

0 と Infinity の間x^(1/4)*BesselJ[-1/4, a*x]*Cos[b*x]x変数 (aとはパラメーター)の積分を計算する必要があります。b

関数が複雑で解析プリミティブが存在しないのですが、NIntegrateで数値的にやろうとすると収束しませんでした。ただしx^(1/4)*BesselJ[-1/4, a*x]、収束する (実際には解析的に計算できる) ため、もう一方は収束するはずであり、Mathematica の問題は何らかの数値エラーに違いありません。

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

r - R の関数 svd() の収束エラー

R でコーディングすると、関数svd()がエラー メッセージをスローすることがあります。

Google で情報を検索したところ、このエラーは で使用されているアルゴリズムsvd()が収束していないことを意味していることがわかりました。LINPACK = TRUE多くの人も同じエラーメッセージに遭遇し、私は彼らが使用した多くの方法を試しましたが、 parameterの使用、行列の丸め、さらにはpropack.svd()andの使用など、誰も正しく機能しませんでしtrlan.svd()た。

私の入力データは、対角要素が 1 に等しい行列で、他の要素は 0 または比較的小さいです。このエラーは数値の精度に関係していると思われるので、行列を のように丸めてみましたround(matrix,6)。これは役立つ場合もありますが、問題を根本的に解決することはできず、この丸めにより偏った結果が生じるのではないかと心配しています。

誰かがこの問題を解決する方法を教えてくれたら、とても感謝しています。

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

matlab - MATLAB train 関数はすぐに停止します

私はニューラル ネットワークが初めてで、300 x 1 ベクトルである 2 つの異なる時系列データ x と y をロードするだけで NN をトレーニングしようとしています。x は予測変数の値のセットで、y は従属 (出力) 変数です。ところで、このロジックは本当ですか?または、 y のさまざまな部分を提供する必要がありますか?

とにかく、私が電話をかけるとnet = train(feedforwardnet(20),x,y);、トレーニングはすぐに停止して、パフォーマンス目標が達成されたことを知らせてくれます。下の図を参照してください。

ここに画像の説明を入力

したがって、エラーしきい値などのいくつかのパラメーターを変更する必要があると思いますが、何が間違っているのかわからないため、何が間違っているのかについての説明を求めています。

助けてくれてありがとう!

PS

x と y は異なりますが、同様の傾向をたどっているため、相関関係があり、問題の手がかりになる可能性があります。また、値を正規化しようとしましたが、まだ何も変わりません。