全局最小与局部极小
首先,学过高等数学的人肯定都知道最小值与极小值,此处我们可以将全局最小理解为最小值,局部极小理解为极小值,梯度对应三维空间我们可以理解为在某一点斜度的,我们寻找局部极小,首先选择某些出发点,然后沿着负方向(减小的方向)计算每一个点的梯度,最终找到一个点,使它在该点的任意方向梯度均为0,则给点为的值为局部极小,而全局最小则是将所有的局部极小都找出来,通过比较在局部极小里面选择最小的,即为全局最小。
【全局最小与局部极小】
当然寻找全局最小点并没有那么容易,如果误差函数有多个局部极小,我们在寻找过程中很容易陷入局部极小,为了解决这个问题一般有以下策略:
1:选取多组不同参数值初始化多个神经网络,按标准方法训练后,选择其中最小的解作为最终值。可以理解为从不同的初始点寻找局部极小,尽量使搜索范围可以遍及所有,当然这种方法仍有可能取不到全局最小,例如全局最小在中间。
2:使用模拟退火技术,对于这个技术的介绍此处省略,有兴趣的可以自己百度,不是很难理解。下面为我自己的理解,模拟退火技术就是当取到局部极小时,给它一个概率使它仍可以继续往下搜索,但是如果搜索到的值比局部极小值大时,概率会逐渐降低,如果上坡很长则有可能翻不出去,最后全局最小即取该点,如果上坡不是很长则跳出局部极小。该方法也有一个很大的弊端,有可能会跳出全局最小。
3:使用随机梯度下降,随机梯度与批量梯度此处不做说明。我的理解如下,批量梯度与随机梯度区别在于是否用到m个样本数据,随机梯度是选择一个数据来求梯度,因此它的变化往往很大,同时计算量与批量梯度相比大大减少,但是准确率比不过批量梯度。
最后介绍一下遗传算法,遗传算法也常用来训练神经网络以更好地逼近全局最小。
种群(Population):生物的进化以群体的形式进行,这样的一个群体称为种群。
个体:组成种群的单个生物。
基因 ( Gene ) :一个遗传因子。
染色体 ( Chromosome ) :包含一组的基因。
基因可以理解为变量,有几个变量就有几个基因,将变量转变为对应基因的过程叫做编码(incode)常见的编码格式有二进制编码和浮点编码。
遗传算法可以看一下:https://blog.csdn.net/qq_27755195/article/details/56597467
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第326天
- Shell-Bash变量与运算符
- 逻辑回归的理解与python示例
- Guava|Guava RateLimiter与限流算法
- 我和你之前距离
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 原生家庭之痛与超越