Beam Search score function

2024-04-24 02:32
文章标签 function search score beam

本文主要是介绍Beam Search score function,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一般情况下,beam search 通常用于翻译等句子生成任务中。 beam_size 用来在翻译所所需时长和翻译准确度之间进行权衡。当beam_size = 1时,beam search 则退化为 greedy search。

另一方面,当 n_best 的取值大于1时,由 beam search 可以得到一个 approximate n-best list,而不是只输入一个最优值。

Hypotheses filtering

可以通过控制 (unkown words) 数量来对 beam search 生成的 hypotheses 进行 filtering. 当一个 hypothese 包含太多 时可以将其 drop 掉。需要注意的是,drop hypotheses 会暂时降低 beam size.

Normalization

X X X 表示 src sentence, Y Y Y 表示 current tgt sentence,score function 可以为:
s ( Y , X ) = log ⁡ P ( Y ∣ X ) l p ( Y ) + c p ( X , Y ) = ∑ log ⁡ P ( y i ∣ X , y 1 , . . . , i − 1 ) l p ( Y ) + c p ( X , Y ) s(Y, X) = \frac{\log P(Y|X)}{lp(Y)} + cp(X, Y) = \frac{\sum\log P(y_i|X, y_{1,...,i-1})}{lp(Y)} + cp(X, Y) s(Y,X)=lp(Y)logP(YX)+cp(X,Y)=lp(Y)logP(yiX,y1,...,i1)+cp(X,Y)

下面对上式中 l p ( ⋅ ) lp(\cdot) lp() c p ( ⋅ ) cp(\cdot) cp() 分别为 length penalty 和 coverage penalty.

Length normalization

l p ( Y ) = ( 5 + ∣ Y ∣ ) α ( 5 + 1 ) α lp(Y) = \frac{(5 + |Y|)^{\alpha}}{(5 +1)^{\alpha}} lp(Y)=(5+1)α(5+Y)α

其中, ∣ Y ∣ |Y| Y 是当前 tgt sentence 的长度, α \alpha α 是 length normalization coefficient.

Coverage normalization

c p ( X , Y ) = β ∑ i = 1 ∣ X ∣ log ⁡ ( min ⁡ ( ∑ j = 1 ∣ Y ∣ p i , j , 1.0 ) ) cp(X, Y) = \beta \sum_{i=1}^{|X|} \log \left( \min\left(\sum_{j=1}^{|Y|} p_{i,j}, 1.0\right) \right) cp(X,Y)=βi=1Xlogminj=1Ypi,j,1.0

其中, p i , j p_{i,j} pi,j 是第 j j j 个 tgt word y j y_j yj 关于第 i i i 个 src word x i x_i xi 的 attention probability. ∣ Y ∣ |Y| Y 是当前 tgt sentence 的长度, β \beta β 是 coverage normalization coefficient.

End-of-sentence normalizaiton

e p ( X , Y ) = γ ∣ X ∣ ∣ Y ∣ ep(X, Y) = \gamma \frac{|X|}{|Y|} ep(X,Y)=γYX

其中, ∣ X ∣ |X| X 是 src sentence 的长度, ∣ Y ∣ |Y| Y 是当前 tgt sentence 的长度, γ \gamma γ 是 end-of-sentence normalization coefficient.

Decoding with auxiliary language model

Beam search 还可以利用一个辅助的 language model 来定义 score funcition. 例如 “Shallow Fusion”:

s ( Y , X ) = s T M ( Y , X ) + β ⋅ s L M ( Y ) s(Y, X) = s_{TM}(Y, X) + \beta \cdot s_{LM}(Y) s(Y,X)=sTM(Y,X)+βsLM(Y)

参考:openNMT beam search

这篇关于Beam Search score function的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930530

相关文章

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

AutoGen Function Call 函数调用解析(一)

目录 一、AutoGen Function Call 1.1 register_for_llm 注册调用 1.2 register_for_execution 注册执行 1.3 三种注册方法 1.3.1 函数定义和注册分开 1.3.2 定义函数时注册 1.3.3  register_function 函数注册 二、实例 本文主要对 AutoGen Function Call

(function() {})();只执行一次

测试例子: var xx = (function() {     (function() { alert(9) })(); alert(10)     return "yyyy";  })(); 调用: alert(xx); 在调用的时候,你会发现只弹出"yyyy"信息,并不见弹出"10"的信息!这也就是说,这个匿名函数只在立即调用的时候执行一次,这时它已经赋予了给xx变量,也就是只是

js私有作用域(function(){})(); 模仿块级作用域

摘自:http://outofmemory.cn/wr/?u=http%3A%2F%2Fwww.phpvar.com%2Farchives%2F3033.html js没有块级作用域,简单的例子: for(var i=0;i<10;i++){alert(i);}alert(i); for循环后的i,在其它语言像c、java中,会在for结束后被销毁,但js在后续的操作中仍然能访

856. Score of Parentheses

856. Score of Parentheses class Solution:def scoreOfParentheses(self, s: str) -> int:stack=[]i=0for c in s:if c=='(':stack.append(c)else:score=0while stack[-1]!='(':score+=stack.pop()stack.pop()score

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

rtklib.h : RTKLIB constants, types and function prototypes 解释

在 RTKLIB 中,rtklib.h 是一个头文件,包含了与 RTKLIB 相关的常量、类型和函数原型。以下是该头文件的一些常见内容和翻译说明: 1. 常量 (Constants) rtklib.h 中定义的常量通常包括: 系统常量: 例如,GPS、GLONASS、GALILEO 等系统的常量定义。 时间常量: 如一年、一天的秒数等。 精度常量: 如距离、速度的精度标准。 2. 类型

插件maven-search:Maven导入依赖时,使用插件maven-search拷贝需要的依赖的GAV

然后粘贴: <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.26</version> </dependency>

【AI大模型应用开发】2.1 Function Calling连接外部世界 - 入门与实战(1)

Function Calling是大模型连接外部世界的通道,目前出现的插件(Plugins )、OpenAI的Actions、各个大模型平台中出现的tools工具集,其实都是Function Calling的范畴。时下大火的OpenAI的GPTs,原理就是使用了Function Calling,例如联网检索、code interpreter。 本文带大家了解下Function calling,看

Vite + Vue3 +Vant4出现Toast is not a function

今天写前端的时候出现了这个问题搞了我一会 搜集原因: 1:是vant版本的问题,Toast()的方法是vant3版本的写法,而我用的是vant4,vant4中的写法改成了showToast()方法,改正过来 import {showToast} from "vant";  发现还是报错,说是找不到对应的样式文件 2:Vant 从 4.0 版本开始不再支持 babel-plugin-i