参数自动学习优化算法 pso

744 阅读2分钟

介绍

是一种搜索算法,常见的几种算法类型:

  • 随机搜索: 在不同参数中,对每个参数都随机采样,然后进行组合
  • 网格搜索: 在不同参数中,找到所有参数及数值的排列组合
  • 粒子群优化:集体信息共享找到最优目标点
  • 贝叶斯优化:根据已搜索的点函数值估计真实的目标函数的均值和方差,再构造采集函数,决定迭代采样点。

Why PSO

上文中介绍了几种常见的搜索算法类型,但是网格和随机有两个很明显的缺点:1)效果具有不确定性 2)需要自己不断调参,参数初始化困难。 不过效果上跟贝叶斯是比较类似的

算法介绍

1995年,受到鸟群觅食行为的规律性启发,James Kennedy和Russell Eberhart建立了一个简化算法模型,
经过多年改进最终形成了粒子群优化算法(Particle Swarm Optimization, PSO) ,
也可称为[粒子群算法](https://zh.wikipedia.org/zh-hans/%E7%B2%92%E5%AD%90%E7%BE%A4%E4%BC%98%E5%8C%96)。

idea 来源

来源于鸟群觅食行为,人类对行为研究,发现鸟会通过信息共享来找到最优的目的地。比如一群鸟儿想要在一个森林中找到食物的大概方向,只要每一只鸟儿都沿着特定的方向去寻找食物,然后共享当前的信息,记录下目前搜索的地址和食物量,那么整个鸟群就会通过信息共享来找到食物最多的地方。

截屏2023-03-02 下午7.29.12.png

所以,其实 pso 的基础是信息的社会共享,而粒子的两个属性:速度 & 位置。最终算法的 6个重要参数是:

假设在一个 D维空间,有n个粒子(也就是搜索目标)那么: 1)第i个粒子的位置是: Xid=(xi1,...xiD)X_{id} = (x_{i1},...x_{iD}) 2) 第i个粒子的速度距离和方向定义为: Vid=(vi1,...viD)V_{id} = (v_{i1},...v_{iD}) 3) 第i个粒子搜索到的最优位置: Pidpbest=(pi1,...piD)P_{id,pbest} = (p_{i1},...p_{iD}) 4) 群体最优解: Pdgbest=(pi,gbest,...pD,gbest)P_{d,gbest} = (p_{i, gbest},...p_{D,gbest})

对应的速度更新公式: output.png

68de78ff-d5ce-4a92-8d9d-dbcad5fe4e1b.png

位置更新公式如下: c351410c-f70c-42ce-94dd-84cbbaf49f20.png

应用

例如,在搜索问题中,有 N 个候选的query,每个query需要考虑 排序模型打分、query质量、query预估点击率、长度等综合考虑,那么:

输入可以: x = <排序模型打分、query质量、query预估点击率、长度>

模型输出: y = x*w

最终就是需要学习一下 w 这个参数。

总结

这个算法其实和 bp 梯度下降是类似的,不过该算法优化起来较为简单,比较适合业务快速尝试迭代。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 28 天,点击查看活动详情