2015.2.7--记录我的机器学习之路--现代启发式算法之遗传算法
2015-02-08 11:37
323 查看
遗传算法
对于经典的模型算法,已有太多前人为我们写下各种攻略,我就先整理下我在学习过程中查阅的并觉得讲解得不错的文章吧,之后再慢慢补充我自己反思之后的体会~---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
对于刚开始接触遗传算法的朋友,笔者觉得科学松鼠会中有一篇文章不应该错过:遗传算法:内存中的进化,这篇文章通俗易懂,以非常生动地例子:如何用100个半透明三角形尽可能把Firefox的图标画出来,很好地阐释了遗传算法的奇妙,其中包含的“编码”,“适应性选择”,“交叉”,“变异”等步骤,在例子中仔细体会一下,就会觉得遗传算法确实是简单但又神奇。
不过看完这个,我们只是对遗传算法有了感性的认识,这时可以去看看July的算法具体介绍文:经典算法研究系列:七、深入浅出遗传算法,这篇文章相对就完整正式多啦,不过有了之前那篇科普文的了解,相信这篇文章可以很快理解清楚~
----------------------------------------------后续------------------------------------------------
遗传算法的个人体会
一、遗传算法思想综述
遗传算法起源于模拟自然选择,物种进化,为了适应环境,进而在一代一代繁衍的过程中,基因朝着更有利于适应环境的方向变化,并遗传给后代。后代就会慢慢朝着更加适应环境的方向进化,那么繁衍到一定代数,我们的生物就比较好的适应环境;如果把环境换成我们的目标函数,生物看做我们的解,那么经过一定代数的繁衍,我们能得到比较好的解。
简而言之,遗传算法是一种在相对较短时间,求得一个比较好地解的方法;
二、遗传算法的构架
模型中有几处把进化过程抽象为模型成分:
(1)自然选择的环境被抽象成为“适应函数”,一个生物的适应函数的函数值的大小衡量这个生物的适应环境程度,而选择的过程,抽象为一个选择算子,从所有生物中选择达到一定适应度的生物,这些生物的基因才有资格被传递下去。
(2)两个生物配对繁衍的过程,会发生基因重组和基因突变,所以在模型中经常会抽象出一个“编码”的操作,对我们要用遗传算法解决的问题对象进行编码,目的就是方便在遗传过程中,进行基因交叉和基因突变(这里其实非常灵活,编码成“基因”其实就是把对象用更小的单元组合而成,不必拘泥于一定要编码,“基因”的定义我们可以结合实际问题充分发挥想象力。
(3)重复(1)(2)自然选择,基因重组,突变若干轮之后,我们的对象便可越来越符合“适应函数”,也就是说,这个”适应函数“其实某种程度上就是我们的目标函数。
笔者才疏学浅,有理解的不到位的地方,还希望高人批评指出,不甚感激。
相关文章推荐
- 2015.2.8--记录我的机器学习之路--现代启发式算法之蚁群算法
- 干货丨 从遗传算法到强化学习,一文介绍五大生物启发式学习算法
- 现代优化算法 之 遗传算法
- 数据记录快速查找算法
- 算法记录:MSD基数排序 + qsort 对字符串排序
- 一行显示两列记录循环算法
- 一种大数据量的相似记录检测算法
- 算法记录:堆排序
- 开始记录算法历程
- 算法的威力:程序员用台式机打破超级计算机保持的世界记录 zz
- zz 算法的威力:法国人用台式机打破由超级计算机创造的圆周率运算世界记录
- 根据数据库表中记录自动构造一棵结构树的一种高效算法
- 算法的威力:法国人用台式机打破由超级计算机创造的圆周率运算世界记录
- 读取数据库记录时容易混淆的一个算法问题
- 算法的威力:程序员用台式机打破超级计算机保持的世界记录
- 根据数据库表中记录自动构造一棵结构树的一种高效算法
- 根据数据库表中记录自动构造一棵结构树的一种高效算法
- 算法记录:二进制快速排序
- 遗传算法与直接搜索工具箱学习笔记 四-----从直接搜索算法开始
- 有效背单词的一个简单算法(一)——SugarMemo算法学习记录