返回介绍

数学基础

统计学习

深度学习

工具

Scala

一、代价函数

发布于 2023-07-17 23:38:25 字数 1916 浏览 0 评论 0 收藏 0

1.1 经验风险最小化

  1. 机器学习通常是间接的,需要优化的是测试集上的某个性能度量 $ P $ 。这个度量 $ P $ 通常很难直接求解,甚至难以直接建模优化。如:在图像目标检测问题中,常见的 $ P $ 就是mAP:mean average precision

    普遍的做法是:希望通过降低代价函数 $ J(\vec\theta) $ 来提高 $ P $ 。这不同于纯粹的最小化 $ J $ 本身,因为最终目标是提高 $ P $ 。

    当代价函数 $ J(\vec\theta) $ 最小时是否 $ P $ 最大?这一结论是未知的。

  2. 实际任务中,可以采用训练集上的损失函数均值作为代价函数:

    $ J(\vec\theta)=\mathbb E_{(\mathbf{\vec x},y)\sim \hat p_{data}} L(f(\mathbf{\vec x};\vec\theta),y)=\frac 1N\sum_{i=1}^{N}L(f(\mathbf{\vec x}_i;\vec\theta),y_i) $

    其中: $ L $ 为每个样本的损失函数, $ f(\mathbf{\vec x};\vec\theta) $ 为对输入 $ \mathbf{\vec x} $ 的预测输出, $ \hat p_{data} $ 是经验分布, $ y $ 为标记信息。

  3. 理论上,代价函数中的期望最好取自真实的数据生成分布 $ p_{data} $ ,而不是有限个训练集上对应的经验分布 $ \hat p_{data} $ 。即: $ J^{*}(\vec\theta)=\mathbb E_{(\mathbf{\vec x},y)\sim p_{data}} L(f(\mathbf{\vec x};\vec\theta),y) $ , $ J^{*}(\vec\theta) $ 称作泛化误差。

    问题是对于绝大多数问题,样本的真实分布 $ p_{data} $ 是未知的,仅能提供训练集中的样本的分布 $ \hat p_{data} $ 。

    实际应用中,使用经验分布 $ \hat p_{data} $ 来代替真实分布 $ p_{data} $ 。这就是为什么使用 $ J(\vec\theta) $ 作为代价函数的原因。

  4. 最小化训练集上的期望损失称作最小化经验风险empirical risk 。其缺点是:

    • 很容易过拟合 。

    • 某些类型的损失函数没有导数,无法使用基于梯度下降的优化算法来优化。

      如 :0-1 损失函数,导数要么为零,要么没有定义。

1.2 替代损失函数

  1. 有时候真正的代价函数无法有效优化,此时可以考虑使用替代损失函数 来代替真实的损失函数。

    如:将正类的负对数似然函数作为 0-1 损失函数的替代。

  2. 一般的优化和机器学习优化的一个重要不同:机器学习算法通常并不收敛于代价函数的局部极小值。因为:

    • 机器学习算法通常使用替代损失函数

      算法终止时,可能出现:采用 替代损失函数的代价函数的导数较小,而采用真实损失函数的代价函数的导数仍然较大(相比较于0值)。

    • 机器学习算法可能会基于早停策略而提前终止。

      早停发生时,可能出现:训练集上的代价函数的导数值仍然较大(相比较于0值)。

      因为早停的规则是基于验证集上代价函数的值不再下降,它并不关心训练集上代价函数的导数值。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文