问题1——遗传算法中适应度函数如何确定
一般来说,遗传算法中的适应度函数是根据你想要得到的优化结果进行确定的。有的优化目的是要更小的适应度函数值,相反有的优化目的是要更大的适应度函数值。
这样说吧,例如很多博客中举的例子,袋鼠山地进化。其中,袋鼠个体(individual)相当于染色体(chromosome),袋鼠个体出现的位置则有本身的基因决定,所有袋鼠构成了袋鼠种群。对于袋鼠而言,想要生存就需要到达更高的地方。这个例子中,想要得到的最终目的是个体出现在更高的位置,也就是袋鼠个体出现在更高的位置,则表明该个体具有更好的生存优势,这个目的则可以作为遗传算法的适应度函数。
怎样确定该适应度函数(fitness function)
需要找到一个衡量个体所在位置高度的显式公式,将该高度衡量公式作为袋鼠进化的适应度函数。
如何实现袋鼠位置的移动或者变化
在袋鼠山地进化的优化问题中,袋鼠个体位置是由本身的基因决定的。因此,只有通过改变基因才能实现袋鼠所在位置的变化。
在遗传算法(进化类算法)中,基因操作主要分为:变异(mutation)和交叉(crossover)。通过变异和交叉,进而改变基因序列,使得袋鼠位置发生变化。
如何将有优良的袋鼠个体选出来
举个栗子
一个班级中,怎样判断一个学生学习好,当然是考试分数高,则表示学生学习好。怎样将学习好的学生挑选出来,已经有了学习好的衡量指标,则通过将成绩好的学生挑选出来就行了!
袋鼠进化问题也是这样的
已经有了可以衡量袋鼠个体优良的衡量指标——适应度函数(fitness function)
仅仅通过将具有更好的袋鼠个体选择出来就可以了!
这也就是遗传算法或者进化类算法中的——选择操作
怎样判断个体适应度好坏
可能看到这里,你会有疑问,适应度函数的计算结果,会有大有小,怎样判断个体好坏额?
例如,对于神经网络而言,我们会经常看到有关论文来优化网络参数,目的是得到可以使神经网络预测误差最小的网络参数。这个目的(误差最小)便可以作为优化算法的适应度函数,我们需要找到可以使适应度函数最小的网络参数,因此这种属于最小化适应度函数类型
M i n i F i t n e s s f u n c t i o n = ∣ ∣ 预 测 误 差 衡 量 公 式 ∣ ∣ Mini \ Fitness function = ||预测误差衡量公式|| Mini Fitnessfunction=∣∣预测误差衡量公式∣∣
相反,对于袋鼠进化而言,属于典型的最大化适应度函数类型
M a x F i t n e s s f u n c t i o n = ∣ ∣ 袋 鼠 位 置 衡 量 公 式 ∣ ∣ Max \ Fitness function = ||袋鼠位置衡量公式|| Max Fitnessfunction=∣∣袋鼠位置衡量公式∣∣
问题2—— 变异和交叉实现遇见的问题
待续…