`
hulianwang2014
  • 浏览: 700515 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

非负二次规划的乘性更新法则

 
阅读更多

本文原文为《Multiplication Updates for Nonnegative Quadratic Programming》,第一作者为Fei Sha,他是大牛Michael I. Jordan的学生。

由于本文有三十多页且算法收敛性的证明篇幅较长、公式较多在此只简单介绍算法部分。

一、介绍

在神经计算与统计学习问题中,往往会出现非负的约束。比如最大间隔分类器SVM、贝叶斯网络中的密度估计、非负矩阵分解中的降维以及声学中回声的消除技术。在这些优化求解中是很难有直接的一个解析式能一步就算出最优值的,而这时候就会出现很多迭代算法,一步步地让迭代出来的值靠近最真实的解。

比如对于最小化目标函数F(v)的求解中,最简单一般的算法便是加性迭代梯度下降(GD,Gradient Descent):

(1)

然而上式会出现不满足非负限制的情况,这时候我们可以将迭代法则改为:

(2)

也就是说,只要一出现为负的情况,就全部取为0。注意到上俩式中的学习速率要启发式地设置为正数,而其大小会让求解过程的速度变慢(当太小)甚至会影响到更新能收敛还是在解附近震荡(当太大)。所以我们称其为启发式参数设置,就是说在各种问题中没有一个统一标准,要根据实际问题设置其大小。

对于非负的约束,有一个更为合适的更新法则叫做指数梯度(EG,Exponentiated Gradient )为:

(3)

上式我们可以看到乘子是为非负的,只要初始值为非负,则可以保证整个迭代更新过程的非负性。若将两边同时取对数。则更新变为:

(4)

值得注意的是,如果优化问题的解是稀疏的,那么乘性更新求解的速度比加性更新要快很多。

在本文中,提出了一种最优解是被限制在非负的轴对齐区域的二次规划凸问题的乘性更新。这个更新规则虽然简单,但是能使目标函数值下降并单调收敛至全局最优点。

现在给出本文问题的形式,带非负约束的二次规划问题:

(5)

此处假设矩阵A为对称以及严格正定的,所以公式(5)是有界且其最优化是凸问题。特别地,它只有一个全局最优解而没有局部的最小解。针对此问题,已有简单的更新法则为:

(6)

此项更新有一个默认条件就是A中的元素必须是为非负的。然而实际中A不一定是非负的,公式(6)的分母在为负的情况下对于v的更新便会违反了约束规则。本文将公式(6)推广至范围更广的非负二次规划问题的求解中,提出新的更新规则。同时证明了该更新法则能单调收敛于全局最优点。事实上,很多算法收敛性的证明都是依赖于对辅助函数的构造,如期望最大化算法(EM)以及非负矩阵分解算法(NMF)等,该文也是如此。但是单纯的辅助函数构造还只能证明更新收敛于一个局部的静态点。于是该文还运用了一个特殊的结构来证明其收敛于全局最优点。下面会介绍其算法。

二、算法

本文只假设A为半正定矩阵。对于A中可能同时存在正负元素的情况,我们将其分解为两部分:

(7)

于是有,目标函数也被分解为三个部分:

(8)

其中:

(9)

我们记:

(10)

由此可以得到的一个乘性更新法则如下:

(11)

说到这里就可以直接上程序。

clear all
clc

M = 30;
NumoIter = 100;

%create A that is symmetric and semipositive

 a = 10*(rand(M,M) -0.5.*ones(M,M));
 A = a'*a;
% eig(A)  if A is symmetric and semipositive 
% all the elements of eig(A) should be positive

% elementes of A are bounded in [-0.5,0.5] both negative and positive
index_positive = (A>0);
index_negative = (A<0);
Apositive = A.*index_positive;
Anegative = -A.*index_negative;

% rand('state',100); 
b = 10*(rand(1,M) - 0.5*ones(1,M));
% elementes of b are bounded in [-0.5,0.5]both negative and positive
% rand('state',1001); 
v = abs(rand(M,1));

F_v=[];
for iter = 1:NumoIter
   a = Apositive*v;
   c = Anegative*v;
    for i = 1:M
    v(i) = v(i)*(-b(i)+sqrt(b(i)^2+4*a(i)*c(i)))/(2*a(i));
    end
    
    F_v(iter) = (1/2)*v'*A*v + b*v;
end

% figure;
plot(F_v);
grid on;
xlabel('Number of iterations');
ylabel('Values of cost function');

其中,有需要注意的是矩阵A的生成。之前不懂什么叫A是半正定的,以为是A中的元素要大于等于0就可以(太年轻了)。生成的A矩阵去算总是看着代价函数乱跑。查了一下才知道半正定不是这个意思。关于正定与半正定可参见维基百科。其中提到“Inlinear algebra, asymmetricn×nrealmatrixMis said to bepositive definiteifzTMzis positive for any non-zero columnvectorzofnreal numbers. HerezTdenotes thetransposeofz.”“For any real matrixA, A^T A is a positive semi-definite matrix.” 程序中对于A的生成就是采用此方法。

分享到:
评论

相关推荐

    22_PHP_基于KPI的医疗废弃物管理系统-源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    Python教程-快速入门基础必看课程09-文件处理

    该视频主要讲述了Python中文件的读写操作和pandas库中的subt函数来处理CSV文件。 在Python中,文件的读写操作需要使用open函数打开文件,并指定路径和模式。读取文件时,可以使用f.read()方法读取内容,并使用f.close()方法关闭文件。写入文件时,可以使用f.write()方法写入内容,并使用f.close()方法关闭文件。视频还介绍了如何在文件中进行换行操作,以及如何将文件中的内容进行读取和写入。 此外,视频还强调了在进行文件操作时需要注意的一些细节和技巧,例如文件的编码格式、内存不足问题、文件的访问权限、写入速度变慢问题等。视频还介绍了如何使用with语句来自动关闭文件,以及如何使用os模块中的函数来处理文件和文件夹。 另外,视频还讲述了如何使用pandas库中的subt函数来处理CSV文件。通过使用read函数将CSV文件读入,然后使用subt函数按照行和列进行划分。在划分时,可以根据需要选择不同的分隔符,如逗号、制表符等。通过subt函数可以将CSV文件切分成多个元素,然后将这些元素存储在一个list中。视频还展示了如何将这个list进行组合,

    《2023年度TikTok电商行业趋势白皮书》.zip

    《2023年度TikTok电商行业趋势白皮书》.zip

    网络攻防课程seed-labs实验-DNS_Attacks.zip

    网络攻防课程seed-labs实验-DNS_Attacks.zip

    sql查询数据库表结构(sql server适用)

    1. sql 语句查询sql server 数据库表结构 2. sql 语句查询sql server 数据库临时表结构 3. 可自由扩展字段,主要提供一个查询思路 4. 包括表名,列名,字段类型、主键表示、字段说明等。

    ASP.NETC#实验室预约管理系统.zip

    ASP.NET实验室预约管理系统源码 该系统的系统角色有三个:学生、教师、管理员,系统功能介绍如下: 学生功能 学生主要是四个功能。注册功能、查询功能、预约功能、学生资料管理功能。 (1)注册功能。学生进入登录界面后,如果没有注册,要先注册。注册的用户名是学生的学号。注册后才可以登录,学生在此功能里还能够修改、删除个人资料。 (2)查询功能。学生在进入主界面后,能够对想预约的课程查询或教师查询。由于老师可能教多个课程,所以有个二级选择目录。 (3)预约功能。当学生查询好信息后,就要对想要预约的实验开始预约。 (4)学生资料管理功能。学生在注册后,可以通过登录,修改自己的个人信息。 教师功能 教师也有四个功能。注册功能、查询功能、预约功能,教师的资料管理功能。只是教师和学生所使用功能的方式不一样。 (1)注册功能。老师进入登录界面后,如果没有账号,也要先注册账号,同时可以对自己的资料进行修改、删除、填加。 (2)查询功能。教师的查询功能主要是对实验室类别、项目、预约情况的查询。类别查询主要是查询实验室房间的信息;项目查询主要是查看能实验该项目的房间信息;预约查询主要是对实验室预约状况的查

    html实现儿童节庆祝项目源码

    java结合html实现儿童节庆祝代码

    操作系统课程实现Shell.zip

    操作系统课程实现Shell.zip

    一带一路下的交通发展(16组).pptx

    一带一路下的交通发展(16组).pptx

    光伏特性曲线(光照强度/温度)构建U-P以及U-I曲线

    通过MATLAB/simulink模块,构建光伏特性曲线(光照强度/温度)构建U-P以及U-I曲线,可以通过simulink模型设置光伏发电板串并联数量、光伏参数(开路电压,开路电流、最大功率点电压、最大功率点电流以及最大功率)、温度系数等,可以得到完美的U-P以及U-I曲线,通过m文件能够修改坐标轴的x轴及y轴坐标的范围。 模型使用方法,首先在MATLAB中添加文件路径,然后在MATLAB工作区中打开m文件以及slx文件,然后在MATLAB中直接运行m文件,然后回弹出相应的U-P以及U-I曲线,通过m文件能够修改光照强度的变化范围、温度的变化范围,总共可以得到光照强度以及温度共四个U-P以及U-I曲线图。

    Python爬取百度贴吧数据.zip

    python爬虫案例

    43_超市管理系统-源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    农业农村部特聘审计员推荐表.doc

    农业农村部特聘审计员推荐表.doc

    132_基于Java的动物拯救游戏-源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    农垦农产品质量追溯系统建设项目验收申请书目录.doc

    农垦农产品质量追溯系统建设项目验收申请书目录.doc

    8_Android app作业-源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    本人本科毕业论文创建的算例

    本人本科毕业论文创建的算例

    苹果刷机完整教程【中英双语对照】_20231121153540.zip

    苹果刷机完整教程【中英双语对照】_20231121153540.zip

    删除顺序表中指定值的所有元素.md

    删除顺序表中指定值的所有元素

Global site tag (gtag.js) - Google Analytics