美文网首页
Pytorch机器学习——3 神经网络(六)

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

作者: 辘轳鹿鹿 | 来源:发表于2022-04-12 19:28 被阅读0次

    outline

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

    3.4 损失函数

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

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

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

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

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

    3.4.1 回归问题

    在回归中常用的损失函数是均方差损失(Mean Squared Error, MSE)
    L(W,b)=\frac{1}{N}\sum_{i=1}^N(\hat{y}_{i}-y_{i})^2
    对于多输出的回归,MSE的公式为:
    L(W,b)=\frac{1}{N}\sum_{i=1}^N\sum_{j=1}^M(\hat{y}_{ij}-y_{ij})^2
    MSE在回归中使用很广泛,但是它对异常值很敏感,在特定的任务中有时不需要考虑异常值(比方说股票的选择中需要考虑异常值,但是在买房的时候就不需要过多考虑),这时就需要一个损失函数,更关注中位数而不是平均数。这时可以选择平均绝对误差(Mean Absolute Error, MAE),其公式如下:
    L(W,b)=\frac{1}{N}\sum_{i=1}^N\sum_{j=1}^M|\hat{y}_{ij}-y_{ij}|

    3.4.2 分类问题

    • 0-1问题(一般用-1代替0),可以使用铰链损失(hinge loss)
      L(W,b)=\frac{1}{N}\sum_{i=1}^Nmax(0,1-\hat{y}_{ij}\times y_{ij})
    • 多分类可以转二分类表示:每次只考虑是否属于某一个特定的类别
    • 对于预测属于某一类别概率的问题,可以使用负对数似然函数
      L(W,b)=-\sum_{i=1}^N y_i \times log\hat{y}_{i}+(1-y_i)\times log(1-\hat{y}_{i})
    • 我们把问题从二分类扩展到多分类上,用one-hot编码表示类别的预测结果:属于该类别的为1,其他的全为0,公式如下:
      L(W,b)=-\sum_{i=1}^N \sum_{j=1}^M y_{ij} \times log\hat{y}_{ij}
      从形式上看这个函数恰好是交叉熵的形式,因此负对数似然损失函数又叫交叉熵函数。交叉熵是不确定性信息的一种度量,在这里交叉熵用来衡量我们学习到\hat{y}和真实的目标值y的不确定性。对于所有的输入x,如果每个结果都接近目标值,也就是y\hat{y}近似相等,则这个交叉熵为0,反之,输出结果离目标值越远交叉熵就越大。
      有用就留个赞吧^_^

    相关文章

      网友评论

          本文标题:Pytorch机器学习——3 神经网络(六)

          本文链接:https://www.haomeiwen.com/subject/uzubsrtx.html