深入析构 交叉熵代价函数(Cross-entropy cost function) 优化器

信息论 交叉熵代价函数(Cross-entropy cost function) 的数学意义:

     数学意义: 用于度量两个概率分布间的差异信息,

    与二次代价函数比较: 二次代价函数不考虑概率性,在几何上的解释: 二次闵可夫斯基距离: 欧式距离, 在处理数据的bool尔值类型和联系性数据特征时,连续性数据可以采用一次代价函数:曼哈顿距离。非连续性函数采用二次。因此,在处理连续性数据特征和非连续性特征的数据同时,可以采用两者的联系式,即:数据特征集分为两个子集: 连续性特征集与非连续性特征集。对于两者的联系式的代价函数:采用衔接式做推广处理。不失一般意义:即两个部分的代价函数求和的平均式。


在与sigmod 函数与二次代价函数所组成的优化器相比:

        sigmod 函数所代表的梯度方向在接近1 或者0 的时候,梯度变化比较慢: 对应的机器学习的模型概念为:对于已经训练的样本,那么再次训练后,梯度变化比较满:收敛的速度比较满,对于新的训练集的加入,没有经过训练,这时的有些数据的梯度比较大,那么可以肯定的是数据收敛的速度比较快。那么存在问题也出现了,对于没有经过训练的神经网络而言,数据没有经过训练,那么这个数据集所代表的几何空间的梯度层级,如何构造模型,可以加快数据集的训练,同时不时最后结果的准确性。

解决方案1: 学习率的调整

        通过调整学习率可以调整这个学习的速度,以及梯度。以往的神经网络的学习梯度都是工作都是手工完成,那么有没有一种学习lv的自适应方式可以自动学习呢? 当然有,提及到这个问题那么我们就要考虑到梯度的分布。以及优化器的分布模式:

   1, 训练这个数据集之后计算二次代价函数,调整神经元的权值以及神经元的参数

       缺点: 有时候可能训练的额数据很大,算法执行之后效率比较底,对于内部规则的挖取在学习度不变的情况下                梯度的变化比较慢,导致算法的收敛速度比较底

   2,执行每条数据之后计算二次代价函数,通过梯度的计算,调整神经元的参数

        缺点: 可能产生过渡拟合,在学习率不变的情况下,每一条数据对于已经训练后的数据集都是梯度比较大    的 数 据。 导致梯度变化比较快。收敛速度快,但是,由于对每条数据都实现二次代价函数的优化的情况下,对于每条数据都能准确的分类,对于测试集数据而言,实验结果表明,将训练集数据进行测试,准确度比较高,但是没有意义,将测试集数据进行测试,准确度反而比较底。

  3, 这中方式是1 和2的折中方案,采用批次模型。也就是将整个训练集分成nge同样大小的的子集,循环每个子        集 之后计算梯度,改变神经元的参数。

方案3的思路是一个折中方案,肯定比方案1 与方案2 要优化一些:

        对于这个方案对学习率的调整:引入一个微分概念。也就是说在开区间定义域内的某一点的邻域之内,只要梯度不等于0,这里的梯度表示斜率k。那么我们可以预测领域的梯度分布方向变化曲线。通过变化曲线我们调整学习率。如果梯度变化比较大,那么采用比较大的学习率,如果梯度变化比较平缓,采用比较底的学习率。

这样的处理方式我们引入一个山地模型: 在山地中我们可以知道某个点附近的邻域之内的梯度,在算法学习的时候可以有更快的收敛速度,但是任然存在一个问题就是: 这样的算法学习呈线性方式。如果在这个某个点的区域之内都是呈平缓的梯度趋势,那么学习率的改变会趋近于0.这肯定不是我们所希望的最好的优化器,因此我们需要找到某个点的欧式空间内的几何方向,找到梯度最大的那个方向实现算法的训练。因此解决方案为神经元加权学习率自适应解决方案。解决梯度最大的方向的进行学习。



以上学习笔记没有数学公式,主要目的在于加深理论上对各种优化器的学习的认识,同时也为在优化器初学阶段的同志共享学习经验。。。。。。(如有更好的解决方案请评论,共同讨论研究)

你可能感兴趣的:(深度学习,神经网络算法)