打字猴:1.700507686e+09
1700507686 数据科学家养成手册 [:1700503586]
1700507687 11.7.2 梯度下降法
1700507688
1700507689 在工业领域,还有一些迭代法可以实现这种逼近性质的迭代,例如梯度下降法(Gradient Descent)、随机梯度下降法(Stochastic Gradient Descent)也是用来解决凸优化问题的通用方法。在一维定义域上满足
1700507690
1700507691
1700507692
1700507693
1700507694 的就是凸函数。
1700507695
1700507696 例如,y=f(x)=x2+2就是典型的一元凸函数(如图11-17所示),z=f(x, y)=x2+y2则是二元凸函数(如图11-18所示),三元及以上的高维凸函数也是有的,只是没法画出图像而已。
1700507697
1700507698
1700507699
1700507700
1700507701   图11-17 y=f(x)=x  2+2图像   图11-18   图像 在一个问题的求解过程中,如果能把这个问题转化成一个在凸函数上求极值的问题,就算是获解了。在这种情况下需要使用梯度下降法来求极值,核心思路是在函数的曲线(曲面)上初始化一个点,然后让它沿着梯度下降的方向移动移动到函数值极值的位置。这个位置视具体的问题而定,可能是极小值,也可能是极大值(如果是凹函数,那就是梯度上升的方向)。
1700507702
1700507703 假设要在一个n维空间的凸函数上进行迭代,v是一个n维向量v(x1, x2,…, xn),那么在梯度下降迭代的过程中可以使用这样的原则:
1700507704
1700507705
1700507706
1700507707
1700507708
1700507709 η是“步长”系数,表示每次迭代移动的距离基数。是在某个xi维度上的偏导数。在连续可导的函数曲面上,任意一次迭代中每个ix都可以更新。在很多场景中,如果能使多元函数在任何一个维度上都是凸函数,通常使用梯度下降法比较容易解决问题(神经网络中的损失函数就是这样)。可以通过定义拟合的残差为关于待定系数的凸函数,用梯度下降法进行优化,从而获解(11.9.3节会进行详细的讨论)。
1700507710
1700507711 数据科学家养成手册 [:1700503587]
1700507712 11.7.3 遗传算法
1700507713
1700507714 不管是低维函数还是高维函数,都可能出现“多峰”的情况,就是在函数图像上出现很多“褶皱”。这种情况下不容易用一般的梯度下降法求解极值问题。因为任意一个初始点都会收敛到最近的一个极小值的位置,而这个极小值有很大概率不是要求的最优解,甚至距离最优解的位置非常远(如图11-19和图11-20所示)。
1700507715
1700507716
1700507717
1700507718
1700507719
1700507720   图11-19   图像   图11-20   图像 遗传算法作为梯度下降法的一种增强形式,可以以比较高的效率解决高维空间上的极小值查找问题,以及离散数学中的NP问题(6)。它的思路就是:在这个候选解出现的高维平面上撒下大量的“种子”,比较这些“种子”的评价函数值,淘汰较小的“种子”;通过基因交叉的方式产生下一代“种子”,比较各代“种子”的评价函数值,再淘汰较小的“种子”;如此反复,直到连续几代出现的“种子”所具备的最大评价函数值不再增加,即可考虑判断收敛。这同样是迭代法的应用。
1700507721
1700507722 在解决这种有限定义域内高维多峰函数的极值问题时,使用遗传算法就比较合适,前提是这个多峰函数在任何一个维度内都是连续的。
1700507723
1700507724
1700507725 以函数z=xsin2x+ycos2y为例,。
1700507726
1700507727 第1步:基因编码
1700507728
1700507729 这个环节以满足当前场景的精度要求为宜。如果精度为10-5,那么用一个20位的二进制数字作为基因编码即可。因为221=2097152,其能够允许的精度已经满足了-10.00000到10.00000之间20000001个最小单位的需求。
1700507730
1700507731 设计一个映射函数
1700507732
1700507733
1700507734
1700507735
[ 上一页 ]  [ :1.700507686e+09 ]  [ 下一页 ]