microsoft / Recursive-Cascaded-Networks

[ICCV 2019] Recursive Cascaded Networks for Unsupervised Medical Image Registration
https://arxiv.org/abs/1907.12353
MIT License
362 stars 87 forks source link

Orthogonality Loss #3

Closed luckyxiaoqi closed 4 years ago

luckyxiaoqi commented 4 years ago

I can't understand the sentence " Since the loss is a symmetric function of those eigenvalues, it can be rewritten as a fraction w.r.t. the coefficients of the characteristic polynomial of (I + A)T(I + A) by Viète’s theorem. " in your VTN paper,it's like a math's question.I thought a lot ,but can't find the answer.Could you tell me the reason.

zsyzzsoft commented 4 years ago

The eigenvalues are the roots of the characteristic polynomial. Then, for example, the sum of those eigenvalues is exactly the sum of roots of the characteristic polynomial, and thus -a_{n-1}/a_n by Viète’s formulas (suppose the characteristic polynomial can be written as P(x) = an x^n + a{n-1]^ x^{n-1} + ... + a_0). The sum of the inverse eigenvalues can be similarly calculated if you rewrite it as a single fraction term. Detailed formula can be found in the code.

Algolzw commented 4 years ago

@zsyzzsoft I'm confused about how to get the formula in Orthogonality Loss: ortho_loss = s1 + (1 + eps) * (1 + eps) * s2 / s3 - 3 * 2 * (1 + eps) , and what's the mean of the function elem_sym_polys_of_eigen_values? Singular values?

zsyzzsoft commented 4 years ago

s1, s2, s3 correpond to a+b+c, ab+bc+ca, abc respectively, where a, b, c are the eigenvalues of (I+A)^T(I+A). Then orthonagonality loss = -6 + (a + b + c) + (1/a + 1/b + 1/c) = s1 + s2 / s3 - 6.