Pytorch机器学习——3 神经网络(六)

outline

  1. 神经元与神经网络
  2. 激活函数
  3. 前向算法
  4. 损失函数
  5. 反向传播算法
  6. 数据的准备
  7. PyTorch实例:单层神经网络实现

3.4 损失函数

  • 损失函数又称为代价函数,是一个非负的实值函数,通常用表示。损失函数用来量化在训练过程中网络输出和真实目标间的差距。确定神经网络最佳状态相当于寻找使损失最小的神经网络参数,这样一来,损失函数的出现使网络的训练变成一个优化问题。

  • 对数据集中所有的预测误差求平均,称为经验风险函数。经验风险并不是越小越好,比如模型复杂度过高会产生过拟合现象,这个时候经验风险是很小的,但过拟合的模型并不是我们想要的结果。

  • 这里引入正则化的概念。正则化也叫结构风险,用来表示模型的复杂度。

  • 我们把经验风险和结构风险的和称为目标函数。神经网络训练的最终目标就是寻找最佳的参数,使目标函数最小。

损失函数通常可分为两类,分别用于回归和分类任务。

3.4.1 回归问题

在回归中常用的损失函数是均方差损失(Mean Squared Error, MSE)

对于多输出的回归,MSE的公式为:

MSE在回归中使用很广泛,但是它对异常值很敏感,在特定的任务中有时不需要考虑异常值(比方说股票的选择中需要考虑异常值,但是在买房的时候就不需要过多考虑),这时就需要一个损失函数,更关注中位数而不是平均数。这时可以选择平均绝对误差(Mean Absolute Error, MAE),其公式如下:

3.4.2 分类问题

  • 0-1问题(一般用-1代替0),可以使用铰链损失(hinge loss)
  • 多分类可以转二分类表示:每次只考虑是否属于某一个特定的类别
  • 对于预测属于某一类别概率的问题,可以使用负对数似然函数
  • 我们把问题从二分类扩展到多分类上,用one-hot编码表示类别的预测结果:属于该类别的为1,其他的全为0,公式如下:

    从形式上看这个函数恰好是交叉熵的形式,因此负对数似然损失函数又叫交叉熵函数。交叉熵是不确定性信息的一种度量,在这里交叉熵用来衡量我们学习到和真实的目标值y的不确定性。对于所有的输入,如果每个结果都接近目标值,也就是和近似相等,则这个交叉熵为0,反之,输出结果离目标值越远交叉熵就越大。
    有用就留个赞吧^_^

你可能感兴趣的:(Pytorch机器学习——3 神经网络(六))