当前位置: 首页 > article >正文

24.9.25学习笔记

BLEU(Bilingual Evaluation Understudy)分数是一种评估机器翻译质量的方法,特别是它如何接近人类翻译的程度。它由IBM在2002年提出,最初是为了机器翻译系统的评估而设计的,但后来也被广泛应用于其他自然语言处理任务,如文本摘要、对话系统等,作为衡量生成文本与参考文本相似度的指标。

BLEU分数主要基于两个主要概念:

  1. N-gram精确度:BLEU分数通过比较机器生成的文本(候选文本)与一个或多个参考文本(通常是人类翻译的文本)之间的n-gram匹配程度来计算。n-gram是文本中的连续n个项目的序列,可以是字母、单词或短语。BLEU分数计算候选文本和参考文本之间不同长度n-gram的匹配程度。

  2. 短句惩罚:为了防止机器生成的文本因为太短而获得高分,BLEU分数还引入了一个短句惩罚因子。如果候选文本比参考文本短,那么分数会受到影响。


束搜索(Beam Search)是一种在序列生成任务中常用的搜索算法,特别是在自然语言处理(NLP)领域,如机器翻译、文本生成等任务中。束搜索通过维护一个候选序列集合(称为“束”),并在每一步扩展这些候选序列,从而找到最有可能的输出序列。

基本思想

在传统的贪心搜索(Greedy Search)中,每次只选择当前步得分最高的单词作为下一个单词。虽然这种方法简单高效,但可能会错过全局最优解,因为局部最优并不总是全局最优。

束搜索通过维护多个候选序列来克服这一问题。具体来说,束搜索在每一步都会保留前 k 个(束宽)得分最高的候选序列,然后在下一步继续扩展这些候选序列。这样可以增加找到全局最优解的机会。

步骤详解

  1. 初始化

    • 从起始标记(如 <SOS>)开始,生成初始的候选序列集合。
    • 通常,初始集合只有一个元素,即 [<SOS>]
  2. 扩展候选序列

    • 对于每个候选序列,生成所有可能的下一个单词。
    • 计算每个新生成的候选序列的得分(通常使用概率或对数概率)。
  3. 选择前 k 个候选序列(k就是束宽)

    • 从所有扩展的候选序列中选择得分最高的前 k 个序列,形成新的候选序列集合。
    • 这一步是束搜索的核心,通过保留多个候选序列来探索不同的路径。
  4. 终止条件

    • 当某个候选序列以结束标记(如 <EOS>)结尾时,将其从候选序列集合中移出,并记录下来。
    • 当所有候选序列都以结束标记结尾,或者达到最大序列长度时,搜索终止。
  5. 返回结果

    • 从所有记录的候选序列中选择得分最高的一个作为最终结果。

示例

假设我们有一个简单的例子,目标是从一个给定的输入序列生成一个输出序列。我们使用束搜索来生成最有可能的输出序列。

参数设置
  • 束宽beam_width): 2
  • 最大序列长度max_length): 5
初始化
  • 初始候选序列集合: [<SOS>]
第一步
  • 扩展 [<SOS>],生成所有可能的下一个单词:
    • [<SOS>, A] (得分: 0.7)
    • [<SOS>, B] (得分: 0.3)
  • 选择前 2 个得分最高的候选序列:
    • [<SOS>, A]
    • [<SOS>, B]
第二步
  • 扩展 [<SOS>, A] 和 [<SOS>, B],生成所有可能的下一个单词:
    • [<SOS>, A, C] (得分: 0.7 * 0.8 = 0.56)
    • [<SOS>, A, D] (得分: 0.7 * 0.2 = 0.14)
    • [<SOS>, B, E] (得分: 0.3 * 0.9 = 0.27)
    • [<SOS>, B, F] (得分: 0.3 * 0.1 = 0.03)
  • 选择前 2 个得分最高的候选序列:
    • [<SOS>, A, C]
    • [<SOS>, B, E]
第三步
  • 扩展 [<SOS>, A, C] 和 [<SOS>, B, E],生成所有可能的下一个单词:
    • [<SOS>, A, C, G] (得分: 0.56 * 0.6 = 0.336)
    • [<SOS>, A, C, H] (得分: 0.56 * 0.4 = 0.224)
    • [<SOS>, B, E, I] (得分: 0.27 * 0.7 = 0.189)
    • [<SOS>, B, E, J] (得分: 0.27 * 0.3 = 0.081)
  • 选择前 2 个得分最高的候选序列:
    • [<SOS>, A, C, G]
    • [<SOS>, A, C, H]
终止条件
  • 假设 [<SOS>, A, C, G] 以结束标记 <EOS> 结尾,记录该序列。
  • 继续扩展 [<SOS>, A, C, H],直到达到最大序列长度或所有候选序列都以结束标记结尾。

优点和缺点

优点
  • 提高搜索质量:通过保留多个候选序列,增加了找到全局最优解的机会。
  • 灵活性:可以通过调整束宽来平衡搜索质量和计算复杂度。
缺点
  • 计算复杂度高:随着束宽的增加,计算量会显著增加。
  • 内存消耗大:需要存储多个候选序列及其得分。

实际应用

在实际应用中,束搜索广泛应用于各种序列生成任务,如机器翻译、语音识别、文本摘要等。通过合理设置束宽,可以在搜索质量和计算效率之间找到平衡。


http://www.kler.cn/a/326345.html

相关文章:

  • Vue2+ElementUI:用计算属性实现搜索框功能
  • SpringBoot实现WebSocket
  • 丹摩征文活动|丹摩助力selenium实现大麦网抢票
  • Visual Studio 2017 快捷键设置-批量注释和批量取消注释
  • 为正在运行的 Docker 容器重启策略,以提高服务的可用性
  • Vue中的导航守卫有哪三种?分别有什么作用
  • 语音识别控制(软件、硬件)
  • 【Pytorch图像+序列双输入网络源代码】
  • mac 触控板 三指拖动
  • 【软件工程】模块化思想概述
  • 线性模型到神经网络
  • PyCharm开发工具的安装和基础使用
  • JVM(HotSpot):字符串常量池(StringTable)
  • DK5V100R20ST1直插TO220F功率12V 3A同步整流芯片
  • 解决目标主机showmount -e信息泄露(CVE-1999-0554)
  • 开创远程就可以监测宠物健康新篇章
  • C++ | Leetcode C++题解之第432题全O(1)的数据结构
  • Centos 8安装VNC及多用户配置详细教程
  • java socket bio 改造为 netty nio
  • 【算法业务】基于Multi-Armed Bandits的个性化push文案自动优选算法实践
  • 电商搜索效率飞跃:阿里巴巴搜索API返回值的力量
  • 零工市场小程序如何提高找兼职的效率?
  • FFmpeg源码:avio_feof函数分析
  • 源代码保密技术的升级:模块化沙箱
  • 介绍Java中的反射并举例至少5个反射中常用的API-----Java基础相关面试题分享
  • 经典文献阅读之--WiROS(用于机器人的WiFi感知工具箱)