有一款非常魔性的小游戏叫《Boxcar 2D》,游戏主要内容是用几何图形和圆形的轮子组成小汽车,不断走过一条有上下波动的“路”,看什么形状的小车可以走的更远。

但和大部分游戏不一样的是,不用玩家自己手动拼装小车,整个过程完全由算法自动进行,每次随机生成小车,卡到路上了就重新来过。最后小车会越走越远,整个过程中小车的形状会越来越合适,一开始可能只是个“独轮车”,到后期则会很接近我们生活中摩托车的样子。

要问有什么案例能简单明晰的体现出“智能”、“自学习”的概念,这款游戏一定是我的首选。而这款游戏中,应用的就是遗传算法。

什么是遗传算法?

简单来说,遗传算法是一种随机搜索算法,主要目的是用来优化。和自然界的遗传一样,遗传算法秉持的是适者生存、优胜劣汰。通过选择、交叉和变异,不断迭代出更优秀的解法。

通过编码,将解空间变成编码空间,从中选择当前较为优秀的解当做“父母”,下一步则是将多种解的特征进行交叉,诞生下一代,最后再经过变异成为“子嗣”。如果“子嗣”还是不能符合要求,那就再进行一次上述步骤,直到满足要求。过程中,较差的基因就会一步步被淘汰。最后再进行解码,就能得到我们想要的结果。

总之,这是一个枚举的过程。就像长颈鹿的进化一样,树叶长在高处,每一只鹿都去尝试吃树叶,只有符合“标准”的长颈鹿能够吃到食物、生产下来并诞生后代。

但要注意的是,这种算法很多时候不会给出一个“最优解”,而是给出一些较为接近的次优解,从中矮子里面拔将军。

在哪里能看到遗传算法?

遗传算法经常被用来解决一些调度类的问题,比如确定车间工程流程、飞机航线等等。工程、航行中所需要的资源消耗、时间等等权值看做“染色体”,几种染色体排列组合,最终选择其中的较优方案。

此外,机器人中也会用到遗传算法,尤其是快速定位、路径规划等。就像Boxcar这个游戏一样,机器人在仿真环境中不断尝试接近目标,路线的优越度随着路线的长度减少,结合机器人对自身位置的感知,最后得出较优解。

同时,遗传算法也可以被应用于帮助神经网络调参数,只是这种方式需要的时间太长、运算量太大,属于性价比较低的参数调整方式。

在游戏中,也能见到遗传算法的影子。比如说很多游戏会有在同一场景面对多轮敌人的“生存模式”,在这一模式中,敌人的属性是会不断增强的,有了遗传算法,就可以根据你自身属性的变化不断改变敌人的属性,以增强游戏的难度。比如说你的法术强度高,敌人就会增加法术防御度,你的攻击穿透性高,敌人就会增加血量。这样一来相比直接的增加属性,可以有更好的游戏体验。

从骗人到写诗,遗传算法有什么好玩的应用?

以上都是一些适用于实际场景的应用,由于遗传算法简单易用,我们可以看到很多娱乐化的、有趣的应用。

比如说,模仿图形。在一款程序中,我们可以看到遗传算法通过几何图形的不断组合,最终慢慢变成接近案例图形的样子。

同时你还可以亲自调整变异的倾向,最终成果虽然和原图相比还有很大差距,但也不乏自己的风格。不过尝试时就可以发现,整个过程时间很长,某种程度上也体现了遗传算法的低效。

基于上述的功能,遗传算法还有一个非常有趣的玩法,那就是“欺骗”深度学习模型。

2014年有一篇论文曾经写过,深度神经网络(DNN)在图片识别上有着很优异的表现。可当用遗传算法模拟图片时,两张图片在人眼看来一模一样,可深度神经网络却完全识别不出来。或者遗传算法可以模拟出一张人眼看起来是“乱码”的图片,却被深度神经网络识别成正常的图片。

这一点让人们注意到了机器视觉和人类视觉的区别,和人类不一样,机器还是会把图像转化为“数字”,再进行比对、识别。这也导致了,有时候深度神经网络会把一张噪声图识别成动物、建筑等等。

除了生成图片,遗传算法还可以生成音乐、宋词等等。将词语和音符输入,让机器随机组合,加入人类评分机制。整个过程几乎和“让猴子在打字前坐几十年可以写出莎翁作品”的假说差不多。基本上只能用于娱乐,不太适合实操。

其实,目前遗传算法已经慢慢淡出了主流算法舞台。虽然主旨是为了避开局部最优误区,为无限解集问题寻找答案,可在实际应用时相比梯度和蒙特卡罗算法都没有明显的差异和优势,常常被视作“玄学算法”。比如计算结果的稳定性差、求解过程没有可复制性等等都是遗传算法的缺点。很长一段时间里,遗传算法都被看做只能用来凑论文的算法。

不过理论也和技术一样,会随着实践和研究不断发展,曾经的神经网络也曾被打入冷宫。最近DeepMind还提出了把神经网络和遗传算法结合,应用到迁移学习中的案例。或许,有朝一日遗传算法还会重新进入我们的视野。

linux小主机玩法,遗传算法有好多有趣的玩法,不只能用来凑论文相关推荐

  1. linux小主机用处,怎样用你的Linux主机未来规划的“用途”来决定你的Linux硬件设备...

    针对一般你可能会接触的计算机主机的用途与相关硬件设备的基本要求来说明一下. 一般小型主机且不含X-Window系统 用途:家庭用NAT主机(路由器功能)或小型企业的非图形用户界面模式小型主机. CPU ...

  2. 小程序源码:人生重开模拟器-多玩法安装简单

    这是一款人生重开模拟器微信小程序源码 让你的人生开启不一样的变化 不知道各位玩家有没有被最近超火的一款名为<人生重开模拟器>小游戏刷屏呢?想必不少玩家玩过了各种各样的模拟器,有的可以模拟医 ...

  3. 小程序源码:全新动态视频壁纸-多玩法安装简单

    这是一款主打动态视频壁纸的一款微信小程序源码 当然啦,里面也是有静态壁纸的 其实这款小程序也可以说是短视频小程序都可以 该款小程序全采集,另外支持多种流量主 大家应该知道小编之前也发过一款动态壁纸的小 ...

  4. 迷你计算机可玩游戏,迷你电脑小主机打游戏可还行?

    日常生活中,电脑使用大致分为办公和娱乐两种用途,工作学习上我们对电脑的配置需求不会太高,除非是有特殊的需求,否则普通的电脑配置足以够用. 随着游戏行业日益崛起,许多游戏对电脑的配置要求极高,有的主播甚 ...

  5. 小程序源码:全新趣味测试-多玩法安装简单

    大家好相信大家之前也有了解到趣味测试这一款小程序吧 可以说那时候这款小程序是超级火的,基本人手都弄一个 可惜前两个月那款小程序的接口挂了以后从此趣味测试基本就消失了 不过没关系,今天小编就给大家带来一 ...

  6. n3150 linux 4k,暴风影音N3150小主机硬件介绍和黑群晖体验

    众所周知的原因,石家庄今年的春节假期来的特别早,老家正定也不能走亲访友,我们就干脆在市里过年了.为了让这16天的假期不那么无聊,我软磨硬泡跟媳妇儿申请了三百块钱的零花钱闲鱼上淘个了小主机折腾折腾.目前 ...

  7. 小程序源码:花体字转换器-多玩法安装简单

    这是一款英文花体转换器微信小程序源码 该小程序支持多种花样字体生成 转换结果用户可以自行复制,另外附带多种特殊符号 也支持用户自行编译组合而成 界面简洁而实用,是一款很不错的小程序 小程序源码下载地址 ...

  8. 小程序源码:微信零钱模拟器-多玩法安装简单

    这是一款模拟器小程序 特点就是只要你插上充电器然后里面的数值就会自动往上涨 也就是相当于是零钱充值的一个模拟器 小编个人感觉还是挺好玩的 安装方法: 使用微信开发者工具打开源码 然后上传提交审核就可以 ...

  9. 现场抽奖小程序_小程序直播怎么引爆现场,小程序直播中 4大互动促转玩法

    小程序直播影响一场直播转化效果有4个重要因素,一看直播现场互动氛围如何,观众观看时长.参与互动意愿是否强烈:二看直播间活动是否有吸引力,能否激发用户购买欲望促进裂变转化.小编结合众多直播实战品牌案例, ...

最新文章

  1. 统计应用计算机基础,计算机基础应用试题及答案参考
  2. 探秘IntelliJ IDEA 13测试版新功能——调试器显示本地变量
  3. Ubuntu Linux系统环境变量配置文件
  4. 使用html5+的plus清除缓存的文件
  5. 错误1053服务没有及时_怎样保护服务器的安全?
  6. hadoop连接远程mysql_Hadoop之Hive本地与远程MySQL数据库管理模式安装手册
  7. 计算语言学和自然语言信息处理研究和应用综述(一)
  8. SQL的多表查询(笛卡尔积原理)
  9. Vue中使用Bscroll @click无法执行的问题
  10. Wheel Speed Sensor Bosch 文章
  11. 【数理逻辑四】谓词逻辑及形式系统 【中】
  12. 【用法总结】C++中常用的大小写转换(4种常用方法)
  13. UG二次开发(C#)—依据特征获取选择体对象
  14. mac os 配置hosts
  15. C++语言for循环实现从1加到100:1+2+3+...+100=
  16. 炫酷的 loding效果(canvas)
  17. 程序员如何恢复被清空的回收站——记录一下
  18. 导学目录-学如逆水行舟
  19. 后端工程师必看学习路线图(含初、中、高阶)
  20. 计算机图形图像处理专业知识,计算机图形图像处理专业技术的突破研究

热门文章

  1. 牛客网刷算法题的输入输出(C++)
  2. 彩色流程图怎么做?这样的操作方法你尝试过吗?
  3. gtm - ebooks
  4. ZUCC_Linux系统管理_实验五 计划任务
  5. 大彩科技新品首发--新1代HMI人机界面!
  6. 天猫HTMl静态页面
  7. 怎么将html发布到天猫,天猫商家商品发布到淘小铺后台流程
  8. 无障碍开发系列之准则及评级
  9. linux搭建泰拉瑞亚(Terraria)服务器
  10. 信号与系统(3)- 受迫响应、自然响应以及零输入响应的求解