测试Andrew NG的语言翻译Agent

news2025/1/11 9:58:18

我正在测试 Andrew Ng 的语言翻译 A​​I 代理系统及其在逆变换下的稳定性。

给定源语言的文本,我们应用翻译函数 f,然后应用 f 的逆。它应该是不变的:

但是,数学与语言翻译有什么关系?

在完美的系统中,从英语翻译成西班牙语再翻译成英语不应该改变源文本的含义。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、Andrew NG的翻译代理系统

Andrew NG(吴恩达)发布了一款用于语言翻译的开源 AI 代理系统。代理工作流程分为 3 个步骤:

  • 代理将源语言翻译成目标语言
  • 代理审查翻译,通过头脑风暴改进翻译(反思)
  • 代理编辑初始翻译,并结合第 2 步的反馈

这是开源 github repo。如果你是生成式AI 代理的新手,我建议你先阅读此内容。

反射(reflection)是一种有用的代理设计模式。这就像离开电脑,思考如何改进工作;然后,当你回到电脑前时,执行计划来修改工作。

通过反射,你可以让代理休息一下,回顾迄今为止的工作,然后代理会集思广益,提出潜在的改进。

这一点至关重要,因为代理可以自主运行,无需人工干预。

通过使用反射,代理可以自我批评,迭代以获得更好的答案,而无需你手动告诉它该做什么。

正如 Andrew Ng 在自述文件中所解释的那样,AI 代理系统对翻译有几个好处:

  • 修改输出的风格,例如正式/非正式。
  • 指定如何处理习语和特殊术语,如名称、技术术语和首字母缩略词。例如,在提示中包含词汇表可确保特定术语(例如开源、H100 或 GPU)的翻译一致。
  • 指定语言的特定区域用法或特定方言,以服务目标受众。例如,拉丁美洲使用的西班牙语与西班牙使用的西班牙语不同;加拿大使用的法语与法国使用的法语不同。

2、实验:10 次迭代,短文本

使用 repo,我想测试逆变换下的稳定性。

因此,我将从英语翻译成西班牙语,再翻译回英语,然后确定源文本的含义是否得到保留。

这是我的代码:

import translation_agent as ta

source_lang, target_lang, source_text = (
    "English",
    "Spanish",
    "Large language models are pretty cool",
)

countries = ["Mexico", "US"]
translation = ta.translate(source_lang, target_lang, source_text, countries[0])

num_iters = 10

for i in range(num_iters):
    country = countries[i % len(countries)]
    t = ta.translate(source_lang, target_lang, source_text, country)
    print(
        f"Iter {i+1}/{num_iters} {source_lang}->{target_lang} [country={country}]. Output: {t}"
    )
    source_lang, target_lang = target_lang, source_lang
    source_text = t

注意:你首先需要导出环境变量 OPENAI_API_KEY

这是我正在翻译的简短文本:

Large language models are pretty cool

以下是运行 10 次迭代后的完整日志,其中从英语翻译成西班牙语再到英语来回翻译了 5 次:

ic| num_tokens_in_text: 6
ic| 'Translating text as single chunk'
ic| num_tokens_in_text: 6
ic| 'Translating text as single chunk'
Iter 1/10 English->Spanish [country=Mexico]. Output: Los grandes modelos de lenguaje son bastante geniales.
ic| num_tokens_in_text: 12
ic| 'Translating text as single chunk'
Iter 2/10 Spanish->English [country=US]. Output: Powerful language models are really cool.
ic| num_tokens_in_text: 8
ic| 'Translating text as single chunk'
Iter 3/10 English->Spanish [country=Mexico]. Output: Los modelos de lenguaje súper potentes están padrísimos.
ic| num_tokens_in_text: 17
ic| 'Translating text as single chunk'
Iter 4/10 Spanish->English [country=US]. Output: Incredibly powerful language models are totally awesome!
ic| num_tokens_in_text: 10
ic| 'Translating text as single chunk'
Iter 5/10 English->Spanish [country=Mexico]. Output: ¡Los modelos de lenguaje increíblemente poderosos son increíbles!
ic| num_tokens_in_text: 18
ic| 'Translating text as single chunk'
Iter 6/10 Spanish->English [country=US]. Output: Language models are unbelievably powerful and just amazing!
ic| num_tokens_in_text: 10
ic| 'Translating text as single chunk'
Iter 7/10 English->Spanish [country=Mexico]. Output: ¡Los modelos de lenguaje son increíblemente poderosos y realmente asombrosos!
ic| num_tokens_in_text: 21
ic| 'Translating text as single chunk'
Iter 8/10 Spanish->English [country=US]. Output: Language models are incredibly powerful and truly amazing!
ic| num_tokens_in_text: 9
ic| 'Translating text as single chunk'
Iter 9/10 English->Spanish [country=Mexico]. Output: ¡Los modelos de lenguaje son increíblemente poderosos y realmente asombrosos!
ic| num_tokens_in_text: 21
ic| 'Translating text as single chunk'
Iter 10/10 Spanish->English [country=US]. Output: Language models are incredibly powerful and truly amazing!

我已将其清理干净,只显示英文翻译:

1.  Powerful language models are really cool.
2. Incredibly powerful language models are totally awesome!
3. Language models are unbelievably powerful and just amazing!
4. Language models are incredibly powerful and truly amazing!
5. Language models are incredibly powerful and truly amazing!

遗憾的是,我们在第一次反向翻译中失去了 大型语言模型(Large Language Model)的含义!

经过反思(看看我做了什么),我想这是有道理的……

我们的代理不认为“大型语言模型”是一个应该一致翻译的独特技术术语。

同样有趣的是,从第三次反向翻译开始似乎出现了收敛:#3、4、5 都非常相似。

强大 (powerful)一词的重复也跳了出来。

我的假设:我们的代理正在混合(large)和(cool)的概念,从而产生强大(powerful)这个词。

3、实验:20 次迭代,短文本

接下来,我使用 20 次迭代运行相同的实验,因此我们得到了 10 个翻译回英语的版本:

1. Big AI language models are super cool!
2. The advanced AI language models are truly incredible.
3. It's truly incredible how advanced language models in artificial intelligence are.
4. It's really impressive how advanced artificial intelligence language models are.
5. It's impressive how incredibly advanced the artificial intelligence language models are.
6. It's impressive to see how much AI language models have advanced.
7. It's really impressive to see how much AI language models (Artificial Intelligence) have advanced.
8. It's truly amazing to see how far artificial intelligence (AI) language models have come.
9. It's truly amazing to see how far artificial intelligence (AI) language models have come.
10. It's really impressive to see how far AI language models have come.

再次,我们在第一遍就失去了“大型语言模型”的含义。

现在重复出现的词是先进(advanced)而不是之前的强大(powerful)。

真正有趣的是“先进”的定义在迭代过程中是如何变化的:

  • 我们从“先进的人工智能语言模型真的令人难以置信”开始。
  • 然后使用不同的“先进”定义:“看到人工智能语言模型(人工智能)取得了如此大的进步,真是令人印象深刻。”
  • 这引出了我们的最后一次迭代:“看到人工智能语言模型取得了如此大的进步,真是令人印象深刻。”

由于“先进”含义的偏差,当我们将第 10 次翻译回英语时,文本的含义与原文明显不同。

4、实验:词典

我不想手动将词汇表或词典与术语“大型语言模型”合并在一起。

我想知道在提示中添加一些上下文是否会有所帮助。

我在步骤 1 和 3 中将此添加到翻译提示中:

“保留对技术术语的任何引用。”

但这没有帮助。

好的,我会硬编码一本词典:

“保留此词典中对技术术语的任何引用:
[“大型语言模型”]”

以下是翻译回英语:

1. The truth is that large language models are incredibly impressive.
2. Large language models are truly impressive.
3. Major language models are really impressive.

耶!

我们在前两次逆变换下看到了稳定性——术语“大型语言模型”被成功保留。

但我们第三次失去了它!

在这一点上,我担心技术和行业特定术语仍然是机器翻译的一个不小的障碍。

5、实验:6 次迭代,长文本

那么,让我们在不包含行话的长文本上测试代理系统。

这是我最喜欢的 X 用户之一的帖子,我喜欢阅读它来获得温暖和迷茫:

我运行脚本 6 次,因此我们得到了 3 个英文翻译。

这是第一个英文翻译:

以下是第三次翻译回的英文:

总体而言,我对这 3 个译本的英文版印象深刻!

你可以在第三个最终翻译中看到我仅有的 2 个小点:

  • 代理将复数从多个“你在你爱的人身边醒来”改为单数“你在你所爱的人的陪伴下醒来”。在我看来,这改变了文本的原意,因为后一种单数情况让人联想到配偶,而复数让人联想到多个家庭成员
  • 在最后一句中,代理人将理解一词误译为控制,在我看来,这改变了文本的原意。理解现实的本质与试图控制现实是有区别的。

5、实验:俄语

为了好玩,我将目标语言切换为俄语,并使用提示中嵌入的短文本和词典重新运行:

Large language models are pretty cool

再次,“advanced”一词再次出现。

即使提示中嵌入了词典,翻译也会在第 4 次反向翻译中失去“大型语言模型”的技术概念。

回想一下,我们也在西班牙语翻译中观察到了这一点。

6、结束语

这是我第一次使用 Andrew Ng 的翻译代理系统。

它翻译长篇文章的效果非常出色,没有使用技术术语,而且大部分保留了每个短语的含义,这让我印象深刻。我尝试了 6 次迭代,所以翻译回英语 3 次。

每次翻译不仅过得去,而且与原文的意图和风格非常吻合。

然而,技术和行业特定术语是一个重大挑战。在几次实验中,我们看到“大型语言模型”的技术概念在翻译中丢失了。即使添加了词典,我们也没有在逆变换下实现稳定性。

我很高兴关注这个项目的发展!

从 github repo 的 Readme 中,以下是改进这个 AI 代理系统的方法:


原文链接:学习率调度器 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1889212.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

德翔海运核心盈利指标大幅下滑,大额分红56亿不缺钱仍募资补流

《港湾商业观察》黄懿 5月30日,航运公司德翔海运(TS Lines,下称“德翔海运”)再一次向港交所递交招股书,计划在主板挂牌上市,由摩根大通和招商证券国际担任联席保荐人。 据悉,2022年至2023年&…

【js】数组元素拼接、数组元素类型转换

一、数组元素拼接 二、数组元素类型转换 1、字符串数组 转换成 数字型数组 [1, 2, 3].map(Number) // [1,2,3] 2、数字型数组 转换成 字符串数组 [1, 2, 3].map(String) // [1, 2, 3]

Java语法 小白入门参考资料 数组

数组的基本概念 数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。 比如现实中的车库: 在java中,包含6个整形类型元素的数组,就相当于上图中连在一起的6个车位,从上图中可以看到: 数组…

【C++】开源:量化金融计算库QuantLib配置与使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍量化交易库QuantLib配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&#…

【linux】网络基础(3)——tcp协议

文章目录 TCP协议概括TCP头部格式TCP连接管理建立连接(三次握手)数据传输确认应答机制捎带应答 滑动窗口丢包问题 拥塞控制延时应达 终止连接(四次挥手) TCP协议概括 TCP是一个面向连接的协议,在传输数据之前需要建立连…

Zabbix 配置进程监控

Zabbix 进程监控介绍 Zabbix可以很方便地监控服务器上的各种进程。在使用Zabbix进行进程监控时,被监控的节点通常需要安装Zabbix Agent。Zabbix Agent 是一个轻量级的代理程序,安装在被监控的主机上,用于收集系统的各种性能数据和指标&#…

OpenBMB × Hugging Face × THUNLP,大模型课开班丨伙伴活动推荐

2022 年,OpenBMB 开源社区联合 THUNLP 开国内大模型公开课先河,全网百万级播放量,已帮助无数大模型爱好者从入门到精通。 这个夏天,OpenBMB 携手 HuggingFace、THUNLP 和面壁智能,推出大模型公开课第二季。全球知名开…

vue实现一个简单的审批绘制功能

1、vue代码 <div class"approval"><div class"approval_ul" v-for"(item,key) in approvalList" :key"key"><div><el-radio-group v-model"item.jointlySign"><el-radio label"1">…

人大出品!最适合大模型初学者人手的LLM大语言模型综述,爆火全网

今天给大家推荐一本大模型&#xff08;LLM&#xff09;这块的一本外文书&#xff0c;经过整理已经出中文版了&#xff0c;就是这本《大型语言模型综述》&#xff01;本书在git上有9.2k star&#xff0c;还是很不错的一本大模型方面的书。 本教程内容主要内容&#xff1a;中文版…

外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word

智能文档解析&#xff1a;大模型友好的文档解析工具 PDF转Markdown 支持将任意格式的文件&#xff08;图片、PDF、Doc&#xff0f;Docx、网页等&#xff09;解析为Markdown或Json格式&#xff0c;以对LLM友好的方式呈现。 更高速度&#xff1a;100页PDF最快1.5s完成解析 更大…

Qt/C++编写地图应用/离线地图下载/路径规划/轨迹回放/海量点/坐标转换

一、前言说明 这个地图组件写了很多年了&#xff0c;最初设计的比较粗糙&#xff0c;最开始只是为了满足项目需要&#xff0c;并没有考虑太多拓展性&#xff0c;比如最初都是按照百度地图写死在代码中&#xff0c;经过这几年大量的现场实际应用&#xff0c;以及大量的用户提出…

1.7-自然语言的分布式表示-skip-gram模型代码实现

文章目录 1 skip-gram模型的实现1.1模型结构的实现1.2前向传播的实现1.3反向传播的实现 2 skip-gram模型的计算与学习3总结 书上提供了skip-gram模型的代码实现&#xff0c;但是没有去讲解&#xff1b;这里我们自己来看看他提供的代码&#xff1b;看代码的时候&#xff0c;尤其…

yarn不同操作系统的安装与配置

Yarn 是一个快速、可靠且安全的依赖包管理工具&#xff0c;用于替代 npm。以下是在不同操作系统上安装和配置 Yarn 的步骤。 1. 安装 Node.js 在安装 Yarn 之前&#xff0c;请确保已经安装了 Node.js&#xff0c;因为 Yarn 需要 Node.js 环境。你可以在 Node.js — Run JavaSc…

极简通俗VAE

一、VAE 背景&#xff1a;VAE什么变分自编码器&#xff0c;听起来起名都头大&#xff0c;用大白话告诉你。 把一个复杂图片压缩成两个参数&#xff0c;用这个参数采样再复原。 这个简单的东西是两个参数&#xff0c;均值和方差&#xff0c;用&#xff08;0&#xff0c;1&…

15kg级弹簧刀高速巡飞无人机技术详解

弹簧刀高速巡飞无人机&#xff0c;作为一种先进的战术导弹系统&#xff0c;融合了无人机与导弹的双重特性&#xff0c;成为了现代战争中不可或缺的侦察与打击利器。该无人机以其小巧的外形设计、优异的性能表现和广泛的适用领域&#xff0c;受到了全球军事领域的广泛关注。弹簧…

ChatGPT如何应用在谷歌seo?

ChatGPT在提升博客和创作效率方面非常有用。它可以帮助你快速生成吸引人的标题&#xff0c;确保内容第一眼就能抓住读者的注意力。不仅如此&#xff0c;ChatGPT还能根据你的主题生成详细的文章提纲&#xff0c;让你在写作时思路更加清晰。关键词优化也是它的强项&#xff0c;可…

当《开心消消乐》遇上 AI 推理,我们找到了高质量关卡背后的原因!

随着 AI 热潮席卷各行各业&#xff0c;其落地应用已经成为企业技术研发升级的工作重心。人工智能应用的升级不仅需要软件层面的升级迭代&#xff0c;还需要大规模基础设施的支撑。然而&#xff0c;自行搭建大规模算力、存储基础设施对于大多数企业而言都存在技术难度、人力资源…

OpenSSL的一些使用案例

目录 一、介绍 二、基本使用 1、Shell &#xff08;1&#xff09;文件加解密 &#xff08;2&#xff09;生成密钥文件 2、API &#xff08;1&#xff09;md5sum &#xff08;2&#xff09;AES256加解密 一、介绍 本篇博客重点不是详细描述 OpenSSL 的用法&#xff0c;只…

【IA修补一切】Inpaint Anything: Segment Anything Meets Image Inpainting论文解读

作者来自中国科学技术大学和东部高级研究院。文章提出了一个新的图像修复工具“Inpaint Anything (IA)”&#xff0c;它结合了不同的视觉模型&#xff0c;如Segment Anything Model (SAM)、LaMa、Stable Diffusion (SD)等&#xff0c;以实现更高级的图像编辑功能。 论文&#x…

P3374 【模板】树状数组 1

题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 将某一个数加上 &#x1d465;x 求出某区间每一个数的和 输入格式 第一行包含两个正整数 &#x1d45b;,&#x1d45a;n,m&#xff0c;分别表示该数列数字的个数和操作的总个数。 …