Calculus.hessian is not symmetric
まだ誰も着手していません。
評価
調査の方向性
Julia で報告された Calculus.hessian 呼び出しを再現し、finite_difference.jl 内の finite_difference_hessian! を調査する。特に、上三角部分を処理するループと、その最後の Base.LinAlg.copytri!(H, 'U') 呼び出しを確認する。結果の行列エントリを対称な位置同士で比較し、観測されたわずかな非対称性が Hessian の計算に起因するのか、三角行列のコピー操作に起因するのかを特定する。動作が説明されて修正されるか、明確に文書化され、このケースのカバレッジがあることを完了条件とする。
索引モデルが issue の本文から書いたものです。
説明
julia> @time h10 = Calculus.hessian(RB.mylike, RB.troubleParamsSim1.raw)
209.557745 seconds (2.43 G allocations: 83.867 GB, 10.31% gc time)
10x10 Array{Float64,2}:
566.715 -206.282 -50.7658 … 3135.03 -89.8427
-206.282 566.715 17.7032 -1993.75 47.1135
-50.7658 17.7032 143.437 -1163.21 33.7016
17.7032 -50.7658 -47.7584 282.533 1.3897
182.291 -122.875 -12.5876 -2943.26 27.7885
-2.95777 -5.09084 2.97638 … -452.285 15.1723
-45.7494 12.5752 39.2448 0.613878 24.8811
-1942.38 804.496 450.315 -35319.9 1935.28
3135.03 -1993.75 -1163.21 56057.6 -2498.87
-89.8427 47.1135 33.7016 -2498.87 1041.54
julia> issym(h10)
false
Closer inspection of h10 shows all the errors are extremely small; the largest is 4e-8.
My original assumption was that this was the result of numerical noise from calculating the derivatives in different orders. But the code (finite_difference_hessian! in finite_difference.jl) appears to compute only the upper triangle,
for i = 1:n
#code omitted
# and i+1:n appears to be parses (i+1):n, which is right
for j = i+1:n
and then ends with
Base.LinAlg.copytri!(H,'U')
So maybe the problem is in copytri!.
- 主要言語
- Julia
- スター
- 286
- フォーク
- 78
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaMath/Calculus.jl のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 44/100
JuliaMath/Calculus.jl#157 · コメント 1 件 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 45/100
JuliaMath/Calculus.jl#153 · コメント 2 件 · リアクション 5 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 28/100
JuliaMath/Calculus.jl#151 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
JuliaMath/Calculus.jl#150 ·
-
Gradients, second derivatives and hessians at pi not working再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
JuliaMath/Calculus.jl#144 ·
JuliaMath/Calculus.jl の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
Sienna-Platform/InfrastructureSystems.jl#675 ·
メンテナーはふだん 2 日以内に返信
-
TargetEncoder reuses the first level's shrinkage factor for all levels when m > 0対応中かも @parth-patel010 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
JuliaAI/MLJTransforms.jl#95 · コメント 1 件 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
SciML/RecursiveArrayTools.jl#687 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
SciML/Corleone.jl#179 ·
メンテナーはふだん 1 日以内に返信
-
Setup Aqua.jlオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
JuliaUQ/UncertaintyQuantification.jl#363 ·
メンテナーはふだん 1 日以内に返信