本节将介绍两类问题的不同解决方案。其一是通过随机的搜索算法对某一函数的取值进行比较,求取最大/最小值的过程;其二则和积分类似,是使得某一函数被最优化,这一部分内容的代表算法是EM算法。(书中章节名称为Optimization)
2. 随机搜索
对于优化,一本很有名的书是Stephen Boyd 的凸优化(Convex Optimization)。但看过的人可能思维会受到一点限制。最简单、最基本的求最大/最小值的算法,除了直接求解,就是把所有的可能值枚举出来,然后求最大/最小就可以了,而不是凸优化里面的下降方法。
当然,一个基本的条件是定义域有界,这样即使定义域连续,我们也可以求到足够近似的解。譬如如果要求解函数
在[0,1]之间的最大值,采用搜索算法可得到如下结果
MATLAB 代码
a = rand(1,10000); a = sort(a); b = (cos(50*a) + sin(20*a)).^2; a = (1:10000)./10000; c = (cos(50*a) + sin(20*a)).^2; subplot(1,2,1); plot(a,c);xlabel('Function'); subplot(1,2,2); plot(a,b,'.','MarkerSize',4.5);xlabel('Evaluation'); max(b)