問題タブ [hessian-matrix]

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

matlab - sqp に Hessian 関数を指定する際のオクターブ エラー

次の最適化問題をオクターブで解こうとしています

方式

最初の制約は、 A が半正定値であることです。S は、(xi,xj) が S にある場合に xi が xj に類似するようなデータ ポイントのセットであり、D は、(xi,xj) が D にある場合に xi と xj が類似しないようなデータ ポイントのセットです。上記の式は 2 つの個別の合計であり、2 番目の合計はネストされていないことに注意してください。また、xi と xj は長さ N の列ベクトルであると想定されます。

これは非線形最適化であるため、オクターブの非線形プログラム ソルバーである sqp を使用しようとしています。 問題は、最適化する関数を提供しただけでは、いくつかの小さなおもちゃのテストで、ヘッセ行列を見つけるための BFGS メソッド が失敗することです。このため、独自の Hessian 関数を提供しようとしましたが、この問題が発生しました

次の sqp 呼び出しを行うと、

対角要素のみを解き、すべての対角要素が >=0 になるように制約することで、A が正の半正定かつ対角であるという制約を単純化しました。initial_guess は、長さが N の 1 のベクトルです。

これは、ヘッセ行列であると私が信じているものを計算するための私のコードです

Dsum_of_squares と HessianNumertor は

X は、行ごとに 1 つの観測値を持つ M x N 行列です。

D は M x M の非類似度行列です。D(i,j) が 1 の場合、X の行 i は行 j とは異なります。それ以外の場合は 0。

エラーは次の領域のいずれかにあると思います (最も可能性が低いものから最も可能性が高いものへ)

  1. ヘッセ関数を導出するために使用した数学は間違っています。私が使用している式は、関数のコメントにあります。
  2. 数学の私の実装。
  3. sqp が必要とするヘッセ行列は、ウィキペディアのヘッセ行列ページで説明されているものとは異なります。

どんな助けでも大歓迎です。さらにコードを投稿する必要がある場合は、喜んで投稿します。現在、最適化を試行して解決するコードの量は約 160 行です。

コードが失敗する原因となる実行中のテスト ケースを次に示します。勾配関数を渡すだけで機能します。

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

r - log(eigen(sigma, symmetric = TRUE, only.values = TRUE)$values) : 生成された NaN

を使用して対数尤度を推定していますoptim()。固有値に問題があり、有効なヘッセ行列を見つけることができないため、標準誤差を計算できません。

私が受け取る「警告」メッセージは次のとおりです。

誰かが問題を見つけるのを手伝ってくれますか?

これが私のコードです:

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

matlab - Matlab fminunc は標準誤差 MLE を計算します

fminunc から推定値の標準誤差を計算しようとすると問題が発生します。私の推定手法は最尤推定です。以下の 2 つの方法を試しましたが、どちらも失敗しました。

  1. fminunc の結果からのヘッセ行列は可逆でないため、ヘッセ行列から標準誤差を取得できません。

  2. そこで、OPG(outer-product-of-gradient) 法を使用して標準誤差を取得するようになりました。しかし、私が提供した勾配は導関数チェックに合格しませんでした。

標準エラーを取得できる他の方法があるかどうかを知っている人はいますか? あなたの助けに感謝します!

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

algorithm - fminunc は、ユーザーが指定したヘッセ行列を考慮しません

まず第一に、些細なことを求めている場合は申し訳ありませんが、matlabで多変数計算と最適化ツールボックスを学習しているだけです-最適化も:)

単純な 2D 関数でmatlabの最適化ツールボックスを使用することについての理解をテストし、いくつかの極小値を見つけようとしましたが、特定の点について、matlabまたは関数は次のコメントで正確な開始点を与えてくれます:「初期点は極小値です。 . ". 勾配ユーザー提供のHessianの両方を提供しました。それがMATLABなのか私なのかわかりません。ヘシアンの定義を間違えたのかもしれませんが、すべて正しいと思います。fminunc

ランダムな開始点の場合、関数は常に適切な (最も近い) 最小値を提供します。ただし、特定のポイントでは、正確な最大値で、fminunc上記のステートメントとまったく同じポイントが返されます。別の最適化アルゴリズムを使用する必要がありますか、それとも単にMATLABで受け入れなければならないものですか? Hessianを提供すると、それが解決されると思いました。ヘッセ行列は、問題のあるすべての点で常に負の定義の行列であり、それはその点が最大であることを意味するはずです!!! によって返された固有値を介してテストしましたeig(hessian)fminuncHessian をまったく考慮していないようです。fminuncヘシアンを扱うにはどうすればよいですか?

乾杯! 間違っている


点:fminunc

たとえば、最後のポイントの場合:





以下のコードを使用しました。


  • 図形を描画するには:


  • 極小値をテストしている関数を含むコード:

  • 0 投票する
    1 に答える
    2810 参照

    matlab - 勾配問題とヘッシアン問題の関数ハンドル MATLAB

    グラデーションとヘシアンの関数ハンドルの操作に問題があります。

    次のコードがあります。

    コマンドターミナルに入力すると、次のようになります。

    スカラー値を取得します。

    しかし、入力すると

    それらの点で評価された勾配に対応するベクトルが必要です。

    グラデーションについては、私はただ得ます

    これは単なるグラードベクトル関数です。しかし、x1 = 1 と x2 = 2 を入力した実際の数値結果が必要です。

    エラーを返します。

    理由はわかりません。

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

    r - R エラー: 最大値を使用して推定しようとしたときの OPTIM の Hessian のエラー。可能性

    私はあまり密度の濃いコードに反映されている可能性がある R 初心者です。ご了承ください。max を使用して二変量正規分布の係数を推定しようとしています。尤度推定。OPTIM 関数を呼び出すと、ヘッシアンに関連するエラーが発生します。かなりデバッグを試みましたが、エラーを取り除くことができないようです。これに取り組む方法についての洞察をいただければ幸いです。

    私が使用しているデータは{y1、y2、x1、x2}で、y1、y2はバイナリ変数です。データをシミュレートするために使用するコードは次のとおりです。

    推定しようとしているパラメーターは、潜在効用関数 z1 および z2 のベータと、分散共分散行列の非対角要素です。

    ありがとう!

    最初にエラーを指定してから、エラーの後にコードを提供します。

    まず、コード内のこの行で発生したと思われるエラー:

    A) OPTIM の呼び出しでパラメーターに hessian = F を設定すると、次のエラーとトレースバックが表示されます。

    B) OPTIM の呼び出しでパラメーターに hessian = T を設定すると、次のエラーとトレースバックが表示されます。


    今コード: