Dear all,

We have been working on LASSO problems which consist of finding the a vector such that it minimizes:

E(a) = 1/2 ||s − \Phi a||^2_2 + \lambda||a||_1

with \Phi a known vector, s a known scalar and \lambda a tuning parameter. This problem can be solved using Local Competitive Algorithm (LCA).

The LCA equation is:

\dot{u}=\Phi s − u − (\Phi^T \Phi − Id)T(u)

with

T(u_i) = u_i-sign(u_i)*\lambda if abs(u_i) > \lambda

T(u_i) = 0 if abs(u_i) <= \lambda

\lambda a threshold and Id the Identity matrix.

In Lava software from Intel (lava-nc \dot org)) there exist a LASSO solver:

```
# Copyright (C) 2021 Intel Corporation
# SPDX-License-Identifier: BSD-3-Clause
# See: https://spdx.org/licenses/
import numpy as np
from lava.magma.core.run_conditions import RunSteps
from lava.magma.core.run_configs import Loihi1SimCfg
from lava.lib.optimization.problems.problems import QP
from lava.lib.optimization.solvers.qp.models import (
ConstraintCheck,
GradientDynamics,
)
# Future: inheritance from OptimizationSolver class
class QPSolver:
"""Solve Full QP by connecting two Lava processes, GradDynamics and
ConstraintCheck
Parameters
```

This file has been truncated. show original

We were wondering if there is an implementation at low level and in NengoLoihi for the LASSO solver using LCA.

Maybe using the Winning Take All implementation we can arrive to LCA?

github \dot com/nengo/nengo-spa/blob/master/nengo_spa/networks/selection.py#L212

We would appreciate your feedback.

Thank you!

xchoo
April 18, 2022, 2:07pm
#2
Hi @IgnacioRubioScola ,

As part of some contracted work, we (ABR) have explored this problem and have implemented working code as well as results (though, it was for an older version of Nengo, and may need to be updated). We were given permission to share the code, but not to publish it. If you could send us your contact information (to info@appliedbrainresearch.com ) we could send you a link to the work we did.

1 Like