Matt J
Posts:
4,979
Registered:
11/28/09
|
|
Re: Problem using fminunc
Posted:
May 17, 2012 12:01 PM
|
|
"Wei" wrote in message <jp2jer$51q$1@newscl01ah.mathworks.com>... > I want to use fminunc to solve my optimization problem, the problem is shown as follows: > min 0.5*norm(U'*Ai-At,'fro')+a*trace(U'*L1*U)-b*trace(U'*L2*U)+0.2*norm(U','fro'); > U > U is a matrix of [800, 280]. If I use U0 as a start matrix, fminunc will not solve this problem because of memory exceeded. Is there any method to transform this problem so that it can be solved via fminunc? Thanks for your time. ==================
As John said, you'll need to avoid finite differences and specify your own gradient and Hessian calculations. Moreover, you'll need to use an algorithm option in which the Hessian (or an approximation of it) is sparse. For example, if using the medium scale algorithm, you could choose HessUpdate='steepdesc' option which will just minimize using plain ol' steepest descent. This will be quite slow. If using the large scale algorithm, you could try the HessMult option and use maybe a diagonal approximation of the Hessian, or something else sparse that you think would be a good approximation.
Another problem with what you've shown is that your objective function is not differentiable everywhere, because norm(x) is not differentiable at x=0. Try to reformulate in terms of norm(x)^2.
|
|