遗传算法
对于非凸包误差函数而言,使用梯度下降法可能会卡在局部最优解上
如果需要找到全局最优解,那么需要搜索所有空间
例如使用 进化算法

遗传算法介绍
遗传算法被认为是基因算法的一种,由 John Holland 提出,基于达尔文“适者生存”理论
使用 选择、交叉 和 变异 找到最优解
工作原理
开始时定义 初始代,包含有几个解决方案。每个解决方案称之为个体,每个个体编码为由一组基因表示的染色体。

编码后的 适应性 由一个因问题而异的 适应函数 来计算出,适应性越大越好。
- 生存
- 交配
- 变异

数据表示
使用矢量表示一个实例的一串特征
选择
从这些个体中挑选下一代的父母,适应性越大,越可能被挑选为父母。
交叉
被选择的父母进行交配,产生后代。
变异
由于后代可能带有父母基因中的不良基因,需要对基因进行一个小的改造,产生多样性。
GA 算法工作流程图

染色体编码
染色体编码主要有三种方式:
- 二进制编码
用一组二进制数表示,每位控制一个基因 - 排列编码
用一组数字表示,每个数字表示一个基因 - 值编码
使用真实值
关于…
选择
选择前一代最好的个体进行交叉,选择方法有:
- 基于适应值比例的选择/轮盘赌选择法
每个个体成为父母的比例直接取决于适应值
(每个个体按照比例划分一个区间,每次随机生成一个区间内的随机值,选择落在区间内的个体为父母)
交叉
- uniform crossover 均匀交叉
单个后代从父母的每个基因上随机取点 - one point crossover 单点交叉
两个父母的染色体上定义一个点,两个后代中的第一个取第一个父母位于点右边的,以及第二个父母位于点左边的基因,第二个后代取剩下的基因。

变异
与设置交叉率一样,使用一个变异率控制是否变异。
如果产生随机值大于变异率,则变异。
变异基因数可以有多个,可以统一变异,或者随机变异。
(二进制序列变异只要翻转数字即可)
之后会加上一个实现的实例
本篇为文章的翻译和解释
原文地址:
Genetic Algorithm: Part 1 -Intuition