原文:http://en.wikipedia.org/wiki/No_free_lunch_in_search_and_optimization

说明:由于文章较难完全翻译,所以部分句子采用了意译的方法。此外,若发现翻译错误之外,还望指证。

概述
      一些计算问题使用在候选解空间中进行搜索的方法来解决。搜索算法指如何选出候选解进行评价并重复这一过程的描述。对于特定问题,不同的搜索算法也许会得到不同的结果,但对于所有问题,它们是没有性能差别的。也就是说如果一个算法在某些问题上得到较好的解,那么必然在另外的问题上得到较差的解。从这种意义上说,搜索领域没有免费的午餐。此外,Schaffer说,搜索性能是守恒的。搜索通常可看作最优化,因此最优化问题也没有免费的午餐。

Wolpert和Macready的“没有免费的午餐”理论浅显地说起来就是任何两个算法面对所有问题的平均性能都是等同的。没有免费的午餐表明对不同问题选择不同算法获得的平均性能高于同一算法用在所有问题上。Igel,Toussaint以及English已经确定没有免费午餐的一般情况。虽然这在理论上可能了,但实际情况却不是100%与理论相吻合。Droste,Jansen,以及Wegener证明了一个定理——实际上“几乎没有免费的午餐”。

将问题变得具体点,假设某个人要优化一个问题P。当他拥有问题是如何产生的知识,那么他可能利用这些知识找到一个专门处理P的算法。当然,这个算法有着很好的性能。当他不会利用这些知识或者他根本不知道这些知识,此时他的问题就变成找一个在大多数问题上都有较好性能的算法。“几乎没有免费的午餐”理论的作者说,他基本上不会找到,但将理论用到实际时,作者却承认可能会有例外情况。

没有免费的午餐(No free lunch,以下简称NFL)
      更正式地,“问题”是为目标函数找到好的候选解。搜索算法将目标函数作为输入,然后一个个地评价候选解。最后输出评价高的候选解序列。

Wolpert和Macready约定一个算法决不会重新评价同一个候选解,算法的性能使用输出来衡量。为简单起见,我们不在算法中使用随机函数。根据以上约定,搜索算法将每一个可能的输入都运行一次,然后生成每一个可能的输出一次。由于使用输出衡量性能,不同算法取得特定水平的性能的频繁程度是难以区分的。

一些性能指标表明搜索算法在目标函数优化方面做得有多好。的确,将搜索算法用于优化问题,然后采用这种指标并不是什么另人惊奇的事。一种通常的指标是使用输出序列中最差的解的最小下标,也就是最小化目标函数所需的评价次数。对于某些算法来说,找到最小值的时间与评价的次数成正比。

原始的NFL理论假定全部的目标函数作为搜索算法的输入都是等同的。不严格地说,已经确定当且仅当对目标函数进行“洗牌”后不影响输出好结果的概率时,存在NFL(译注:这句话不是很确定,求指教。原文是It has since been established that there is NFL if and only if, loosely speaking, "shuffling" objective functions has no impact on their probabilities)。尽管从理论来说,这种情况下是存在NFL的,但实际上必然不是精确的。

显然,不是NFL,就是“免费的午餐”了。但这是一种误解。NFL是程度问题,不是有或者没有的问题。如果会近似地出现NFL,那么所有算法对于一切目标函数所得到结果也是近似的。注意,“不是NFL”,仅仅意味着用某些性能指标衡量会出现算法不等同的情况。使用interest性能衡量时,各种算法也许仍然等同或近似等同(译注:For a performance measure of interest中的interest,这里可能是专业术语,所以没有翻译)。

理论上,全部算法处理优化问题时,通常能表现得不错。也就说,算法对一切目标函数能使用相对较少的评价取得好的解。原因是几乎全部的目标函数都有很大程度的Kolmogorov随机性。这可以比作极度不规则和不可预测性。候选解等同地表示任一解,好的解全都分散在候选空间中。一个算法很少能只评价超过一小部分的候选解就得到一个非常好的解。

事实上,几乎全部的目标函数和算法都有如此之高的Kolmogorov复杂性以至于它们不出现上述情况。在典型的目标函数或者算法中的信息量比Seth Lloyd估计的可见领域能够记录的多。例如:如果一个候选解编码为一个3000's和1's的序列(译注:不理解encoded as a sequence of 300 0's and 1's中的单位),好的解是0和1,那么大多数的目标函数有着至少2^300位的kolmogorov复杂性。这大于Lloyd提出的10^90≈2^299的限界。由此可见,并非一切的物理现实都可以使用“没有免费的午餐”理论。在实际意义上,一个“足够小”的算法用在物理现实的应用中比那些不是的有着更好的性能。

NFL的正式简介

是所有目标函数f:X->Y的集合,其中X是一个有限的解空间,Y是有限的偏序集。令J为X的全排列的集合,F为分布在上的一个随机变量。对于J中的每一个j,F o j(译注:注意中间那个o是集合论的右复合操作符)是分布在上的随机变量,其中对于中的全部都有P(F o j = f) = P(F = f o j^-1)

令a(f)代表将输入f用在搜索算法a上的输出。假如a(F)和b(F)对于所有的算法a和b都有相同分布,那么就说F含有NFL分布。当且仅当F和F o j对于J中任意的j都是同分布的,这种情况才存在。换句话说,当且仅当目标函数在解空间的排列分布是不变的,就存在着没有免费的午餐。

当且仅当的条件是由C. Schumacher在他的博士论文Black Box Search - Framework and Methods中率先提出的。最近,集合论的NFL理论已经被广义化为任意集X和Y

最初的NFL定理
      Wolpert和Macready给出两个最重要的NFL定理。一个是关于在搜索过程中目标函数不会改变的。另一个是关于目标函数会改变的。
定理1:对于任一对算法a1和a2有

大体上,这说明当所有函数f都是等可能出现时,在搜索过程中观察到m值的任一个序列的概率并不依赖于所用的算法。定理2针对时变的目标函数建立了一个更精细的模型。

NFL结果解释
      对NFL结果的一个易懂的但不是非常精确的解释是“一个通用的通用型优化策略从理论上说是不存在的。一个策略表现得比其它策略好的唯一情况是将它用在专门处理的具体问题上。”以下是一些评论:

一个几乎通用的通用型算法理论上是存在的。每个搜索算法在几乎所有的目标函数都能运行得很好。

  一个算法在不是专门处理的问题上可能也会表现得比另一个算法好。也许这个问题对于两个算法来说都是最坏的问题。Wolpert和 Macready建立一个用来衡量一个算法与一个问题有多匹配的指标。就是说一个算法比另一个算法更好地匹配一个问题,而不是说其中的一个是专门处理这个问题。

事实上,一些算法重新评价候选解。一个决不重新评价候选解的算法比另一个算法在一个特定的问题上更优秀,也许与这个问题是否为专门处理的问题无关。

      对于几乎全部的目标函数,专门化从本质上来说是偶然的。不可压缩性或者说 Kolmogorov 随机性,使得目标函数在使用一个算法时没有规律可寻。给出一个不可压缩的目标函数,在不同算法之间的选择并不存在偏好。如果一个选出来的算法比大多数的算法都要好,这个结果本身就是一个偶然事件。

实际上,只有可高压缩的(完全不是随机的)目标函数才适合存储于计算机中,不是每个算法都能在几乎所有的可压缩函数取得好的解。将问题的先验知识加到算法中通常会带来性能的提升。严格来说,当NFL出现时,对于处理优化问题的专业人员重要的是不要将“完全使用理论(full employment theorems)”按照字面意思来理解。首先,人们通常只有一点点的先验知识。其次,将先验知识加到算法处理某些问题时,带来的性能提升甚微。最后,人类的时间比计算机的时间更宝贵。公司宁愿使用一个未经修改的程序来缓慢地优化一个函数,而不愿投入人力来开发一个更快的程序。这样的例子屡见不鲜。

NFL结果并不表明将算法用在一个不专门处理的问题上是无用的。没有人能很快地判断一个算法在实际问题的哪部分能取得好的解。此外,还存在着实际上的免费午餐,但这不与理论矛盾。在电脑上运行一个算法的实现比起使用人类时间和从好的解中得到利益的代价要小得多。假如这个算法成功地在可授受的时间内找到了令人满意的解,那么这个小小的投资就取得了很大的回报。即使算法没找到这样的解,失去的也很少。

协同进化的免费午餐(Coevolutionary free lunches)
     Wolpert和Macready 已经证明在协同进化中存在免费的午餐。他们分析了covers'self-play'问题。在这些问题中,参与者们要通过在多人游戏中与一个或多个敌人对战产生一个冠军。也就是说,目的是不通过目标函数得到一个好的参与者。每个参与者(相当于候选解)的好坏通过在游戏中的表现得到的。一个算法尝试通过参与者以及他们的游戏表现获得好的参与者。算法将所有参与者中最好的一位当作冠军。Wolpert和Macready已经证明一些协同进化算法得到冠军质量通常比其它的算法要好。通过自我模拟(self-play)产生冠军是进化计算以及博弈论有趣的地方。原因也很简单,因为不能进化的物种自然就不是冠军。

转载于:https://www.cnblogs.com/FengYan/archive/2011/09/12/2173944.html

[译]搜索与优化不存在免费的午餐相关推荐

  1. 写给20年后的自己:免费的午餐最贵

    你有想过20年后的你会是什么样吗? 是拥有一个美好的家庭? 还是你的孩子初长成人? 是朝着父母的期盼归于安定? 是在一个理想上不停拼搏? 还是终在暮年寻得自己的人生真谛? 时间之于我们每个人都是公平的 ...

  2. (译)如何优化cocos2d程序的内存使用和程序大小:第二部分(完)

    转自:子龙山人 (译)如何优化cocos2d程序的内存使用和程序大小:第二部分(完) 前言:从上周发布教程的微博反应情况来看,cocos2der们对于游戏的内存问题还是非常关心的.本文是上一篇博文的续 ...

  3. 淘宝新品店铺如何快速打造店铺自然搜索流量?淘宝自然搜索流量优化方法介绍

    在淘宝开了新的店铺,想要将店铺生存下去并不是一件简单的事情,因为如今在如此激烈的淘宝环境下,有很多的商家因为竞争压力都退出了淘宝商城.所以商家必须要懂得如何才能将新店运营好,下面就给大家带来一些相关的 ...

  4. ECS控制台实例搜索的优化与改进

    摘要: 搜索功能是控制台非常重要的功能,承载着实例管理入口的作用,应该好用,快速和准确.然而,ECS控制台实例列表的搜索功能经常被吐槽不好用,痛点主要有以下三点: 每次搜索之前需要选择搜索类型,非常繁 ...

  5. 【数据挖掘】数据挖掘算法 组件化思想 ( 模型或模式结构 | 数据挖掘任务 | 评分函数 | 搜索和优化算法 | 数据管理策略 )

    文章目录 一. 数据挖掘算法组件化 二. 组件一 : 模型或模式结构 三. 组件二 : 数据挖掘任务 四. 组件三 : 评分函数 五. 组件四 : 搜索和优化算法 六. 组件五 : 数据管理策略 七. ...

  6. 每周一起读 × 招募 | WWW 2019:基于层次化强化学习的多源搜索展示优化

    "每周一起读"是由 PaperWeekly 发起的论文共读活动,我们结合自然语言处理.计算机视觉和机器学习等领域的顶会论文和前沿成果来指定每期论文,并且邀请论文作者来到现场,和大家 ...

  7. 网页搜索怎么显示排名_深圳seo搜索排名优化效果怎么样

    效果怎么样l31b10seo搜索排名优化深圳,企业商家为了自己的网站有更好的排名,获得更好的流量,往往会采用SEO优化,那么SEO优化有哪些方法呢?或者是哪些方法更有效呢? 这是一个多媒体的时代,内容 ...

  8. 搜索算法-搜索的优化

    一些搜索的优化方法: 1.爬山法 2.Best-First法 3.分支界限法 爬山法: 1.在深度优先搜索过程中,我们经常遇到多个节点可以拓展的情况,首先拓展哪个就需要一种方法: 2.爬山策略使用贪心 ...

  9. 程序员业务,微信全文搜索技术优化

    一.iOS微信全文搜索技术的现状 全文搜索是使用倒排索引进行搜索的一种搜索方式.倒排索引也称为反向索引,是指对输入的内容中的每个Token建立一个索引,索引中保存了这个Token在内容中的具体位置.全 ...

最新文章

  1. Rocksdb 的一些参数调优策略
  2. linux go redis,使用go来操作redis的方法示例
  3. Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图
  4. win7映射网络驱动器消失了_网络资源共享;共享权限控制
  5. Leaflet中对鼠标按下、移动事件监听实现移动单个图形
  6. Winform中设置ZedGraph的多条Y轴的标题和刻度不显示十次幂
  7. c语言字符串初值问题!
  8. Spring MVC + Hibernate + Maven:CRUD操作示例
  9. C#题目及答案(1)
  10. python如何在没有环境的电脑上执行_没安装python的电脑可以运行python写的程序吗 python语言编写的程...
  11. [Java] 蓝桥杯 BEGIN-1 入门训练 A+B问题
  12. web前端基础知识-(六)jQuery-补
  13. android 加载json停顿,java – 在Android上解析~1 MB JSON非常慢
  14. 工作频率对系统功率、穿透能力、设备体积、系统性能的影响
  15. 【数据】【自动化交易】Python获取中国股市行情和指数
  16. win10改win7 bios设置方法
  17. 黑马程序员还收费 兄弟会都是免费的
  18. 支付宝,百度,头条集卡群,过年一起玩
  19. java解析json天气api,免费天气API,全国天气 JSON API接口,可以获取五天的天气预报...
  20. 网络同步与异步概念整理

热门文章

  1. 百度2012实习生校园招聘笔试题
  2. mvc4文件上传由于文件太大而无法正常获取文件
  3. 【iOS小白教程】如何打包:xcodebuild和xcrun介绍
  4. 全球Flickr地理标记数据,含经纬度
  5. Lontium 的 LT8619C 是一款基于 ClearEdge 技术的高性能 HDMI/双模 DP 接收器芯片
  6. 如果NBA也像JAVA一样面试
  7. JAVA多线程终止线程、退出线程、Interrupt()方法、苦逼的搬砖工
  8. 智能化IT运维平台建设方案,基于智和信通运维体系的高敏捷二次开发
  9. js正则的test方法一会返回true一会返回false
  10. Ensp仿真实验 一会通 一会不通