【论文泛读】Improved Natural Language Generation via Loss Truncation

通过 via Loss 改进自然语言生成
作者:Daniel Kang and Tatsunori Hashimoto

摘要

神经语言模型的训练通常是通过 最小化日志损失(log loss) 来匹配大规模语料库的分布特性。
问题
直接用最小化日志损失(log loss)优化会迫使模型重现数据集中的所有变体,包括噪音和无效引用(例如,错误注释和幻觉事实)。即使是一小部分有噪声的数据也会降低日志丢失的性能。
先前的工作已经表明 最小化生成样本的可区分性是一种原则性和健壮性的损失可以处理 无效的引用。然而,由于在优化和估计方面的挑战,可区分性还没有在实践中得到应用
解决对策
我们提出了 via Loss :一种简单且可扩展的过程,它自适应地删除高对数损失示例,作为一种优化可区分性的方法。
创新点

  1. via Loss 在摘要任务的区分性上优于现有的baseline
  2. via Loss 模型生成的样本具有超过 baseline 的实际准确率,并且与人类参考数据相匹配。

名词解释

  1. 为什么使用 log loss?log loss 和其他模型评估指标有什么区别?
    针对分类问题的模型评估,可能有多种指标选择,比如混淆矩阵中的 Recall, Precision, F-Score 或者 Accuracy。还有一种选择是使用 loss 指标,比如 log loss。
    Log loss 和他们的区别是:
    log loss 不仅考虑模型最后的分类表现,它还考虑了模型的概率。更大的概率会使得log loss变小,直至接近0;它是对不确定性或者说熵的一种度量。
  2. log loss 到底什么范围才合理?
    探索过程:
    对于任意一个指标,想要解释它你就必须找到一些参考值来进行对比。
    一个指标最基本的要求是要使得模型比完全靠“猜”的方法要好。
    而完全靠猜的方法依据于两个指标:① 类别数量 ② 分类的平衡
    我们以此来探索 log loss:
    后续可参考:
    https://medium.com/@fzammito/whats-considered-a-good-log-loss-in-machine-learning-a529d400632d
  3. log loss 特别大的话该如何解决?
    使用model.predict_proba() 而不是 model.predict()
    两者区别:
    predict() 返回的是预测的分类结果:0或者1(二分类)
    predict_proba() 返回的是分类的概率在0和1之间!
    之前一直以为model.predict_proba() 用于多分类
    但是使用之后依旧出现呢问题:
    operands could not be broadcast together with shapes (2000,) (2000,2) ,
    原因:没有将模型预测的值,由actual改为probabilities
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪里摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值