Renascence架构原理——最优化算法

最优化算法

背景

通过公式生成ADF之后,根据下层函数库的配置,在结构不变的情形下,ADF是可以通过一系列值在0-1之间的参数进行调节的。也即ADF可表示为固定维数n的实数集,因此需要解决的问题就是在给定的目标下,求一组使目标值最大的参数。

max(f(x0,x1,x2,x3,...,xn)),xi[0,1]

由于架构本身并不知道ADF运行的函数实现,因此目标函数是完全未知的,无法用梯度下降/牛顿迭代法等处理,更不用说线性规划的那些解法了。

这时候可选择的,就是穷举法或启发式算法。

最优化算法

穷举——网格搜索

学过支持向量机SVM的人应该都瞄过这个算法,是用来优化RBF核中的两个参数的。
很简单的一个算法,设定精度,n层for循环穷举所有的参数值即可。
直接写段代码说明吧:

//精度设为0.001,两个参数
double maxP = 0.0;
double max_x0 = -1;
double max_x1 = -1;
for (double x0=0.0; x0<=1.0; x0+=0.001)
{
    for (double x1=0.0; x1<=1.0; x1+=0.001)
    {
        double currentP = f(x0, x1);
        if (currentP > maxP)
        {
            maxP = currentP;
            max_x0 = x0;
            max_x1 = x1;
        }
    }
}

在具体实现时,由于n是可变的,不能直接写n个for循环,需要用一个进位算法实现,不详述。

全随机——蒙特卡洛算法

完全随机地取若干组参数值,然后取其中最大的一组。

进化算法

这一族群的算法很多包括遗传算法GA、进化规划EP等等,不过Renascence架构中采用的是粒子群算法PSO。
进化算法族群的特点是群体演化,先随机产生一系列的初始解,然后这些解之间彼此影响、变化,不停迭代,趋向最优解。
粒子群的核心思想就是引入了速度的概念,让其他个体向最优解以一定速度移动,每一代不仅值更新,速度也发生更新。

粒子群算法的介绍参考这一系列文章。
http://blog.csdn.net/niuyongjie/article/details/1569671

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值