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的扩展功能。