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

【深度学习:进阶篇】--4.4.集束搜索(Beam Search)

目录

1.问题引入

2.集束搜索流程

3.BLEU-机器翻译的自动评估方法

3.1.定义

3.2.N-gram Precision(多元精度得分)方法

1. ​​N 的含义​​

2. 你的例子分析(N=1 时)

候选翻译(Candidate):

参考翻译(Reference):

计算步骤(N=1):

3. 为什么你的例子中结果是 7/7=1?

4. N 的选择对结果的影响

5. 实际应用(BLEU 中的 N-gram Precision)

总结


1.问题引入

我们在找到一个合适的句子的时候,一个很直观的方法是在生成第一个词y​1​​分布之后,根据条件语言模型挑选出最有可能的第一个词y​1​​ ,然后生成第二个词y​2​​的概率分布挑选第二个词y​2​​,依此类推,始终是选择每一个最大概率的词,这种方法在机器翻译领域其实并不管用,我们来举个例子

法语句子"Jane visite l'Afrique en septembre."
翻译1-Jane is visiting Africa in September.
翻译2-Jane is going to be visiting Africa in September.

翻译1显然比翻译2要更好,更加简洁的表达了意思。

如果该算法挑选了 y​1​​,y​2​​, ('Jane' , 'is'),那么在英语中"is going"更加常见,因此在选择 y​3​​ ='going',于是对于合适的句法来说"Jane is visiting"相比"Jane is going"会有更高的概率使用,所以有时候真正需要的是一次性挑选整个单词序列y1,y2,y3,...,yt使得整体的条件概率最大。

2.集束搜索流程

  • 定义:在Beam Search中有一个参数B,叫做beam width(集束宽),用来表示在每一次筛选时挑top B的结果。

例子说明:

  • 第一次:选出概率最大的三个词
  • 第二次:选择上一步三个词,每个词对应三个概率最大的词(可能存在重复)
  • ....

假设只有两步,那么得到9个结果。最终我们要从中选出三组结果

  • is fine
  • in alright
  • at alright

那么这三个句子就是我们需要的结果。

3.BLEU-机器翻译的自动评估方法

对于上述筛选的结果我们可以让一些语言专家进行评估选出最合适的。当然有大量人力也是可以这样去做,但是我们希望系统能够自动选择一个最合适的翻译句子。需要提供两个

  • 1、衡量机器翻译结果越接近人工翻译结果的数值指标
  • 2、一套人工翻译的高质量参考译文

3.1.定义

BLEU的全名为:bilingual evaluation understudy(双语互译质量评估辅助工具),它是用来评估机器翻译质量的工具。

  • 判断两个句子的相似程度

3.2.N-gram Precision(多元精度得分)方法

  • N-gram Precision(多元精度得分)

这里的N是什么意思,我们通过一个例子来理解一下。

候选翻译:    the    the    the    the    the    the    the
参考翻译:    the    cat    is    on    the    mat    
参考翻译:    there    is    a    cat    on    the    mat

两个句子,S1和S2,S1里头的词出现在S2里头越多,就说明这两个句子越一致。记做number1/number2​​​。上面例子,候选翻译的词7个词the都在参考翻译中出现,记做分子得分7,候选翻译一共就7个词,分母为7。7/7=1,该候选翻译显然不行!!这个时候N=1,选出一个词

  • 改进
    • 原因:常用词干扰、选词的粒度太小(the)
    • 使用N-gram,多元词组:{“the cat”, “cat is”, “is on”, “on the”, “the mat”}

1、同样还是一个词的时候的改进

  • 过滤常见词(the on is ...so on)
  • 公式计算(分子)

你提到的 ​​N-gram Precision(多元精度得分)​​ 是机器翻译评估中常用的方法(如BLEU score的核心组成部分)。我来详细解释 ​​N 的含义​​ 和这个例子的计算逻辑,并指出问题所在。


1. ​​N 的含义​

  • ​N-gram​​ 表示连续 N 个词的组合:

    • ​N=1(1-gram)​​:单个词(如 thecat

    • ​N=2(2-gram)​​:相邻的两个词(如 the catcat is

    • ​N=3(3-gram)​​:相邻的三个词(如 the cat is

    • 以此类推。

  • ​N-gram Precision​​ 衡量的是:​​候选翻译​​中出现的 N-gram 有多少比例在​​参考翻译​​中也出现过。


2. 你的例子分析(N=1 时)

候选翻译(Candidate):

the the the the the the the

(共 7 个词,全部是 the

参考翻译(Reference):
  1. the cat is on the mat

  2. there is a cat on the mat

计算步骤(N=1):
  1. ​统计候选翻译的 1-gram​​:

    • the出现 ​​7 次​​。

  2. ​统计参考翻译中的 1-gram​​:

    • 参考翻译 1:thecatisonthemat

    • 参考翻译 2:thereisacatonthemat

    • 合并后去重:{the, cat, is, on, mat, there, a}

  3. ​匹配情况​​:

    • 候选翻译中的 the在参考翻译中出现过(但参考翻译中 the只出现 2 次,而候选翻译中重复了 7 次)。

    • ​修正逻辑​​:N-gram Precision 通常使用 ​​剪枝计数(clipped count)​​,即每个 N-gram 的匹配次数不超过它在参考翻译中出现的最大次数。

      • 参考翻译中 the最多出现 2 次(在参考翻译 1 中 2 次,参考翻译 2 中 1 次),所以 the的匹配次数最多计为 2。

  4. ​最终计算​​:

    • 分子(匹配的 1-gram 总数):min(7, 2) = 2

    • 分母(候选翻译的总 1-gram 数):7

    • ​1-gram Precision = 2/7 ≈ 0.2857​


3. 为什么你的例子中结果是 7/7=1?

  • 你最初的描述可能是 ​​未使用剪枝计数​​ 的原始方法(直接统计候选翻译中所有 the是否在参考翻译的词表中存在,而不限制重复次数)。

  • 这样会导致:

    • 候选翻译的 the在参考翻译的词表中存在 → 所有 7 个 the都算匹配。

    • 因此 ​​Precision = 7/7 = 1​​。

  • ​问题​​:这种计算显然不合理(候选翻译毫无意义,但得分是满分),因此实际应用中会引入 ​​剪枝计数​​ 来惩罚重复词。


4. N 的选择对结果的影响

  • ​N=1​​:只检查单个词是否匹配(无法捕捉词序和短语一致性)。

    • 例子中 the the the和 the cat is的 1-gram Precision 可能相同,但显然后者更好。

  • ​N=2 或更大​​:能捕捉词序和短语结构。

    • 例如:

      • 候选翻译:the the the

      • 参考翻译:the cat is

      • ​2-gram Precision​​:

        • 候选的 2-gram:the thethe the(无效组合)

        • 参考的 2-gram:the catcat is

        • 匹配数:0 → Precision = 0/2 = 0


5. 实际应用(BLEU 中的 N-gram Precision)

BLEU 评分综合了 ​​N=1,2,3,4​​ 的 Precision,并通过几何平均计算最终得分。这样可以:

  1. 惩罚无意义的重复词(通过剪枝计数)。

  2. 要求翻译在词、短语、长句结构上都接近参考翻译。


总结

  • ​N 是 N-gram 的长度​​,表示连续 N 个词的组合。

  • 你的例子中:

    • 若 ​​不剪枝计数​​:N=1 Precision=7/7=1(不合理)。

    • ​剪枝计数后​​:N=1 Precision=2/7≈0.2857(更合理)。

  • ​N 越大​​,越能捕捉词序和语法结构,但对罕见短语更敏感。

 

http://www.dtcms.com/a/280004.html

相关文章:

  • 深入探索ZYNQ网络通信:四大实现方案与创新应用
  • VMWare 使用 U 盘 PE 系统安装 Win 11 ESD 镜像
  • 日常--PyCharm清除attach记录
  • Linux进程优先级机制深度解析:从Nice值到实时调度
  • 详解从零开始实现循环神经网络(RNN)
  • 实现高效、可靠的基于骨骼的人体姿态建模(第二章 基于三维人体姿态回归的语义图卷积网络)
  • 智慧城市建设关键支撑,楼宇自控系统的战略性技术价值解读
  • 用Joern执行CPGQL找到C语言中不安全函数调用的流程
  • Pythonic:Python 语言习惯和哲学的代码风格
  • OFDM系统中关于信号同步的STO估计与CFO估计的MATLAB仿真
  • 关于股票交易的人脉分析
  • NW831NW910美光固态闪存NW887NW888
  • LLM-SECURITY-PROMPTS大模型提示词攻击测评基准
  • 下载 | Win10 2021精简版,预装应用极少!(7月更新、Win 10 IoT LTSC 2021版、适合老电脑安装)
  • linux设备UAC配置
  • 飞桨AI Studio云编程环境搭建
  • Spring AI 初学者指南:从入门到实践与常用大模型介绍
  • Cesium加载3DTiles模型并且重新设置3DTiles模型的高度
  • C++卸载了会影响电脑正常使用吗?解析C++运行库的作用与卸载后果
  • openGL学习(EBO)
  • loss.backward()`、`optimizer.step()`和`optimizer.zero_grad()` 是什么
  • 【git fetch submodule报错】Errors during submodule fetch 如何解决?
  • JS基础知识(上)
  • 2.查询操作-demo
  • AV1 元数据信息
  • k8s集群存储解决方案 GlusterFS
  • ThreadLocal内部结构深度解析
  • Python 数据建模与分析项目实战预备 Day5 - 模型训练与评估
  • 通过explain查看MySQL索引是否正确引用
  • VNC和Socket