1

I have an optimization problem of the form $$\operatorname*{argmax}_{\mathbf{w}} \sum_i \log(1 + \mathbf{w} \cdot \mathbf{k_i})$$ given some set of vectors, $\mathbf{ \{k_i\} }$. I have tried both gradient descent and BFGS, but both of them are slow. Is this a well known problem, and are there existing software implementations that can quickly solve a problem of this form?

yong
  • 173

1 Answers1

0

There must be some constraint on $\boldsymbol{w}$ and $\boldsymbol{k}_{i}$. Otherwise the problem is not well defined.

I found setting all vectors on the unit ball and forcing $\boldsymbol{w}$ to be within the unit ball to be sensible.

The problem becomes:

$$ \arg \min_{\boldsymbol{w}} - \sum_{i = 1}^{n} \log \left( 1 + \boldsymbol{w}^{T} \boldsymbol{k}_{i} \right), \; \text{ subject to } \; {\left\| \boldsymbol{w} \right\|}_{2} \leq 1 $$

Where $\forall i: \; {\left\| \boldsymbol{k}_{i} \right\|}_{2} = 1$.

One simple way to solve this is the projected gradient descent with the Orthogonal Projection onto the L2 Unit Ball.

I compared the results with a DCP solver (Convex.jl):

enter image description here

In the case above $n = 500, m = 250$.
The convergence happens within 50 iterations.
An unoptimized Julia code runs 250 iterations in 7.6 [Mili Sec].
I consider that to be pretty fast.


The full code is available on my StackExchange Mathematics GitHub Repository (Look at the Mathematics\Q1275192 folder).

Royi
  • 10,050