We introduce disciplined biconvex programming (DBCP), a modeling framework for specifying and solving biconvex optimization problems. Biconvex optimization problems arise in various applications, including machine learning, signal processing, computational science, and control. Solving a biconvex optimization problem in practice usually resolves to heuristic methods based on alternate convex search (ACS), which iteratively optimizes over one block of variables while keeping the other fixed, so that the resulting subproblems are convex and can be efficiently solved. However, designing and implementing an ACS solver for a specific biconvex optimization problem usually requires significant effort from the user, which can be tedious and error-prone. DBCP extends the principles of disciplined convex programming to biconvex problems, allowing users to specify biconvex optimization problems in a natural way based on a small number of syntax rules. The resulting problem can then be automatically split and transformed into convex subproblems, for which a customized ACS solver is then generated and applied. DBCP allows users to quickly experiment with different biconvex problem formulations, without expertise in convex optimization. We implement DBCP into the open source Python package dbcp, as an extension to the famous domain specific language CVXPY for convex optimization.
翻译:本文介绍了规范化双凸规划(DBCP),一种用于描述和求解双凸优化问题的建模框架。双凸优化问题广泛出现在机器学习、信号处理、计算科学和控制等应用中。实践中求解双凸优化问题通常依赖于基于交替凸搜索(ACS)的启发式方法,该方法通过迭代地优化一个变量块而固定另一个变量块,从而使产生的子问题成为凸优化问题并能够高效求解。然而,为特定双凸优化问题设计和实现ACS求解器通常需要用户投入大量精力,这一过程既繁琐又容易出错。DBCP将规范化凸规划的原则扩展到双凸问题,允许用户基于少量语法规则以自然方式描述双凸优化问题。随后,该问题可被自动分解并转化为凸子问题,进而生成并应用定制的ACS求解器。DBCP使用户无需具备凸优化专业知识即可快速尝试不同的双凸问题表述形式。我们将DBCP实现为开源Python软件包dbcp,作为著名凸优化领域特定语言CVXPY的扩展。