学习笔记
一、损失函数及其优化技巧
由于大多数机器学习面临的问题都是NP难或者更难,那么在多项式时间内解决拟合问题,即经验误差和泛化误差最小化,就需要一些处理方法进行评估和改进。
优化函数-随机梯度下降
在求损失函数数值解的优化算法中,小批量随机梯度下降被广泛使用。它的算法很简单:先选取一组模型参数的初始值,如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch),然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。
学习率: 代表在每次优化中,能够学习的步长的大小
批量大小: 是小批量计算中的批量大小batch size
总结一下,优化函数的有以下两个步骤:
- (i)初始化模型参数,一般来说使用随机初始化;
- (ii)我们在数据上迭代多次,通过在负梯度方向移动参数来更新每个参数。
PS:梯度下降还存在:批量梯度下降(BGD)和随机梯度下降(SGD)两个相对极端的方式,而小批量梯度下降(MBGD)是两者的折中办法。
具体参见:https://www.cnblogs.com/lliuye/p/9451903.html
二、softmax函数
softmax函数更多作为一种归一化函数的形式广泛应用于多分类深度学习中,具体形式:
softmax运算符(softmax operator)解决了以上两个问题。它通过下式将输出值变换成值为正且和为1的概率分布:
其中
那么为什么要用softmax做归一化呢?
一在于softmax设计的初衷,是希望特征对概率的影响是乘性的,这样可以使特征更突出。
二在于公式的源头是最大熵定理。
三、感知机
感知机解决仍然是分类问题,对于简单的线性可分问题,单层感知机可以通过收敛得到结果,而非线性可分问题就需要考虑多层网络解决。
常见的感知机模型如下:
激活函数
理想的激活函数是跃阶函数,如下图所示:
但该函数不连续,通常可以使用如下函数:Sigmoid函数(逻辑回归也可以看作单层的感知机)、tanh函数,ReLU函数。
ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。
用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。
在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。
在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。