首页 > 技术文章 > 梯度下降

shenxiaodou 2021-05-11 20:38 原文

相关概念总结:分类问题 回归问题 损失函数 代价函数 目标函数 激活函数 归一化

1 分类问题与回归问题

分类问题预测的是类别,模型的输出是概率分布(即每一个类别都有其对应的概率大小,我们选取概率最大的类别即可)

回归问题预测的是值,模型的输出是一个实数值

2 目标函数

几乎所有的机器学习算法最后都归结为求解最优化问题,以达到我们想让算法达到的目标。为了完成某一目标,需要构造出一个“目标函数”来,然后让该函数取极大值或极小值,从而得到机器学习算法的模型参数。如何构造出一个合理的目标函数,是建立机器学习算法的关键,一旦目标函数确定,接下来就是求解最优化问题,这在数学上一般有现成的方案。梯度下降法”,“牛顿法”,“凸优化”等等。

通过目标函数可以逐步的调整参数,使得目标函数逐渐变小的过程,即模型逐渐优化到最佳的过程

目标函数可以帮助衡量模型的好坏

2.1 分类问题的目标函数

需要衡量目标类别与当前预测的差距

三分类问题输出例子:[0.2, 0.7, 0.1]

三分类真实类别:2-> one_hot -> [0, 0, 1]

One-hot编码,把正整数变为向量表达

 定义:生成一个长度不小于正整数的向量,只有正整数的位置处为1,其余位置都为0(上面例子中的正整数为2,长度必须大于等于2,在下标2的位置处为1,其余为0)

这样的操作可以把一个类别的离散值变成一个分布,然后我们有了两个分布,一个是预测值的分布,一个是真实值的分布;我们可以通过这两个分布计算他们的差距

损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念。

目标函数是 损失代价函数+正则化项(函数J(f))(正则化项是为了防止过拟合,减小函数模型的复杂度)

分类问题的损失代价函数:

平方差损失

平方差损失举例:

预测值:[0.2, 0.7, 0.1]

真实值:[0, 0, 1]

损失函数值:[(0-0)^2 + (0-0.7)^2 + (1-0.1)^2] * 0.5 = 0.65

交叉熵损失

2.2 回归问题的目标函数

预测值与真实值的差距

损失代价函数:平方差损失 绝对值损失

3 激活函数

激活函数是神经网络节点中的输入数据和输出数据之间的一种关系.

例如: f(x) = x ,像这类激活函数就表示上层对输入到神经节点中的数据之和 不做任何处理直接当做输出给下一层使用

同时我们可以将一些非线性函数作为激活函数解决非线性问题

常见的激活函数如下:

4 归一化 Normalization

概念: 把数据变成(0,1)或者(1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速.

特点: 均值为0,方差是1

归一化的两种方法:

批归一化 Batch Normalization

前面的归一化都是在输入层数据进行归一化操作,我们可以在网络中间层进行处理,在网络中间层我们可以将每一节点的输入值都进行归一化操作,这样就被称作为批归一化BN处理.

BN可以作为神经网络的一层,放在激活函数(如Relu)之前。即每一层的激活值都会先做归一化处理

5 Dropout

我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征.也就是说在模型训练的过程中随机的停止使用某些神经元来训练模型防止模型记住样本.

dropout的作用:

防止过拟合

模型在训练集上表现很好,甚至正确率到100%,在测试集上表现较差,正确率可能很低;究其原因,是因为模型的相关参数较多,导致模型记住了样本,不能泛化和通用

推荐阅读