Я пытаюсь использовать cvxpy lib для решения очень простой задачи наименьших квадратов.Но я обнаружил, что cvxpy дал мне очень разные результаты, когда я использовал sum_squares и norm (x, 2) в качестве функций потерь.То же самое происходит, когда я пробую норму l1 и сумму абсолютных значений.
Происходят ли эти различия математически из определения задачи оптимизации или реализации библиотеки?
Вот мой пример кода:
s = cvx.Variable(n)
constrains = [cvx.sum(s)==1 , s>=0, s<=1]
prob = cvx.Problem(cvx.Minimize(cvx.sum_squares(A * s - y)), constrains)
prob = cvx.Problem(cvx.Minimize(cvx.norm(A*s - y ,2)), constrains)
И y, и s - векторы, представляющие гистограммы.y - гистограмма рандомизированных данных, а s - исходная гистограмма, которую я хочу восстановить.A - это * m «матрица переходов» вероятностей того, как s рандомизирована в y.
Ниже приведены гистограммы переменной s:
Использование sum_of_square
Использование norm2