测试Andrew NG的语言翻译Agent

我正在测试 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 tasource_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 = 10for 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_langsource_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.mzph.cn/bicheng/40048.shtml

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

相关文章

springboot异常产生原因

DataIntegrityViolationException Cause: java.sql.SQLException: Field ‘id’ doesn’t have a default value org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLException: Field id doesnt have a default …

[译]全栈Redux实战

本文乱译自一篇英文博文(Full-Stack Redux Tutorial),本人英语能力不足,技术能力有限,如有错误,多多包涵。 #关于ReduxReactImmutable的测试先行开发综合指南 Redux是最近发生在js界令人兴奋的事儿。它把…

提升Unity WebGL游戏启动速度

一、查看启动耗时 通过修改unity-namespace.js中hideTimeLogModal为false,显示timelog开发者可以看到小游戏目前的启动首屏时长: 将其设置为false后,启动小程序后就会显示启动耗时 要知道各个阶段的含义,我们必要理解启动流程。 …

springboot 整合 mybatis-plus

一.前言 1. mybatis-plus是什么 mybatis-plus是一个对mybati框架的拓展框架,它在mybatis框架基础上做了许多的增强,帮助我们快速的进行代码开发。目前企业开发中,使用mybati的项目基本会选择使用mybatis-plus来提升开发效率。 2.官网地址&…

LT8668SXC 、LT8668SX-D 、LT8668SX三种芯片的相似与不同

一、LT8668SXC(支持eDP输出) 定义:LT8668SXC配置在HDMI2.1标准下工作,最大数据速率为8Gbps。 LT8668SXC还可以配置为在Type-C输入或DP1.4a下工作,数据速率高达8.1Gbps。 eDP1.4b输出由8个数据通道组成,支持RBR (1.62Gbps)、HBR (2…

比较多种msvcr110.dll丢失的解决方法,哪一种更加方便?

当遇到“msvcr110.dll丢失”这种问题时,这通常意味着你的系统中缺少了Microsoft Visual C 2012 Redistributable的组件。下面我将详细介绍五种解决方法,并对比它们的优点。 一.多种msvcr110.dll丢失的解决方法 方法 1: 重新安装Microsoft Visual C 2012…

Redis持久化的三种方式(RDB、AOF和混合)

Redis持久化的三种方式(RDB、AOF和混合) 目录 Redis持久化的三种方式(RDB、AOF和混合)介绍RDB示例1.配置文件2.触发 RDB 快照保存3.验证 AOF示例1.配置文件2.校验 混合型持久化存储配置文件 介绍 Redis数据主要存储与内存中,因此如果服务器意外重启、宕机、崩溃&am…

乘积最大子数组

代码实现&#xff1a; 方法一&#xff1a;暴力法 方法二&#xff1a;动态规划 int maxProduct(int *nums, int numsSize) {long imax nums[0], imin nums[0], res nums[0];for (int i 1; i < numsSize; i) {if (nums[i] < 0) {int temp imax;imax imin;imin temp;…

学会python——用python编写一个电子时钟(python实例十七)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.电子时钟程序 3.1 代码构思 3.2代码实例 3.3运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性…

今天的A股,让人惊愕了,2个耐人寻味的重要信号,有望迎来下一个超级风口!

今天的A股&#xff0c;让人惊愕了&#xff0c;你知道是为什么吗&#xff1f;盘面上出现2个耐人寻味的重要信号&#xff0c;有望迎来下一个超级风口&#xff01; 1、今天两市低开低走&#xff0c;但大消费劲头十足&#xff0c;连中免这样的大体量都涨停了&#xff0c;另外消费茅…

爬虫-网页基础

HTML 基本语法 HTML&#xff1a;Hyper Text Markup Language, 超文本标记语言&#xff0c;是计算机语言的一种&#xff0c;由元素构成。 p元素 <p>Web 真好玩&#xff01;</p> 由三大部分组成 开始标签&#xff1a;一对尖括号中间包裹这元素名称元素内容&#x…

SaaS运营:如何根据“客户漏斗”定制合作伙伴营销策略?

将你的合作伙伴营销策略与你的客户漏斗模型相结合&#xff0c;可以显著提升你的营销效果。通过瞄准客户旅程中的每一个阶段&#xff0c;你可以增加客户参与度并推动转化&#xff0c;从而将你的促销活动提升到新的高度——这仅仅是一个以数据为支撑的方法。 为了探讨如何在漏斗…

数据结构 - C/C++ - 树

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 树的概念 结构特性 树的样式 树的存储 树的遍历 节点增删 二叉搜索树 平衡二叉树 树的概念 二叉树是树形结构&#xff0c;是一种非线性结构。 非线性结构&#xff1a;在二叉树中&#x…

LLM应用:传统NLP任务

LLM出来以后&#xff0c;知乎上就出现了“传统NLP已死”的言论&#xff0c;但是传统NLP真的就被扔进历史的垃圾桶了吗&#xff1f; 其实&#xff0c;尽管LLM具有出色的通用能力&#xff0c;但仍然无法有效应对低资源领域的自然语言处理任务&#xff0c;如小语种翻译。为了更好地…

golang——Gin框架及路由介绍

一. 框架介绍 Gin是一个轻量级的Go语言Web框架&#xff0c;它具有高性能和简洁的设计。由于其快速的路由匹配和处理性能&#xff0c;Gin成为Go语言中最受欢迎的Web框架之一。 特点&#xff1a; 快速和轻量&#xff1a;Gin框架的设计注重性能和效率&#xff0c;采用了一些优化措…

第二十一章 网络编程

​ 一、网络的相关概念 1. 网络通信 &#xff08;1&#xff09;网络通信&#xff1a;将 数据 通过网络从一台设备传输到另一台设备 &#xff08;2&#xff09;java.net 包下提供了一系列的类或接口&#xff0c;完成网络通信 2. 网络 概念&#xff1a;两台或多台设备通过一定…

轻松省电!教你苹果手机自动调节亮度怎么设置

在日常使用手机的过程中&#xff0c;屏幕亮度是影响电池续航的关键因素之一。苹果手机提供的自动调节亮度功能&#xff0c;可以根据环境光线自动调整屏幕亮度&#xff0c;从而提供最佳的视觉体验并有效延长电池使用时间。想知道苹果手机自动调节亮度怎么设置吗&#xff1f; 本…

工厂自动化相关设备工业一体机起到什么作用?

在当今的制造业领域&#xff0c;工厂自动化已成为提高生产效率、保证产品质量和降低成本的关键。在这一进程中&#xff0c;工业一体机作为一种重要的设备&#xff0c;发挥着不可或缺的作用。 工业一体机是自动化生产线上的控制中心。它能够整合和处理来自各个传感器、执行器和其…

02:vim的使用和权限管控

vim的使用 1、vim基础使用1.1、vim pathname 2、vim高级用法2.1、查找2.2、设置显示行号2.3、快速切换行2.4、 行删除2.5、行复制粘贴 3、权限管理3.1、普通用户和特权用户3.2、文件权限表示 vim是Linux中的一种编辑器&#xff0c;类似于window中的记事本&#xff0c;可以对创建…

产业链协同,共谋产业新高度

国际数字影像产业园始终秉承“产业协同&#xff0c;共谋发展”的核心理念&#xff0c;致力于通过深化产业链上下游的紧密合作&#xff0c;推动数字影像产业的持续繁荣。 一、产业协同的具体实践 1、产业链整合&#xff1a;园区积极整合数字影像产业的上下游资源&#xff0c;形…