LLM 中的外部幻觉 • Lilian Weng

本文是 OpenAI 安全系统团队负责人 Lilian Weng 所写,主要探讨了大型语言模型(LLMs)中的外部幻觉(Extrinsic Hallucinations),即模型生成的内容未能与提供的上下文或世界知识相一致。幻觉问题被细分为两种类型:上下文幻觉和外部幻觉。外部幻觉关注的是模型输出是否基于预训练数据集,并强调模型需要具备事实性和在不知情时能够承认不知道的能力。文章还讨论了幻觉的成因、检测方法以及改进策略。 幻觉的定义与类型: 上下文幻觉:模型输出应与上下文中的源内容一致。 外部幻觉:模型输出应基于预训练数据集,且应与外部世界知识相符合。 幻觉的成因: 预训练数据问题:预训练数据量庞大,通常来自公共互联网,可能包含过时或错误的信息。 微调新知识:在微调阶段引入新知识可能导致模型学习速度较慢,并增加幻觉的可能性。 幻觉检测方法: FactualityPrompt:通过维基百科文档作为事实基础来评估模型输出的真实性。 FActScore:将生成内容分解为多个原子事实,并分别验证其真实性。 改进策略: 检索增强生成(RAG):通过检索相关文档来为模型生成提供支持信息。 自我反思检索增强生成(Self-RAG):模型在生成内容时自我反思并检索相关文档。 验证链(CoVe):模型生成初步响应后,通过设计验证问题进行事实检查。 评估基准: 文章提到了一些用于评估模型幻觉的基准数据集,如 TruthfulQA、FactualityPrompt 和 SelfAware。 LLM 中的外部幻觉 在大语言模型 (LLM) 中,"幻觉" 通常指的是模型生成不真实、捏造、不一致或无意义的内容。这个术语被广泛用于描述模型犯错的情形。在这里,本文将"幻觉"的问题范围限定在模型输出是虚构的,并且无法通过给定的上下文或世界知识加以验证的情况。 幻觉可以分为两类: 上下文幻觉:模型输出应该与上下文中的源内容保持一致。 外部幻觉:模型输出应基于预训练数据集中的知识。然而,考虑到预训练数据集的庞大规模,每次生成时检索并识别潜在冲突的成本过高。如果我们将预训练数据集视为世界知识的代理,我们实际上是在尝试确保模型输出的内容是事实,并且能够通过外部世界知识进行验证。更重要的是,当模型不清楚某个事实时,它应当如实承认。 本文的重点在于外部幻觉。为了避免幻觉,LLM 需要做到以下两点:(1) 输出内容基于事实,(2) 在适当的情况下承认自己不知道答案。 幻觉的成因是什么? 一个标准的 LLM 通常会经历预训练和后续的微调(如对齐优化)的过程,因此我们将在这两个阶段探讨幻觉产生的原因。 预训练数据问题 预训练数据集的规模非常庞大,其目的是涵盖几乎所有书面形式的世界知识。由于大多数数据来自公开的互联网,难免存在过时、缺失或错误的信息。模型在最大化对数似然的过程中可能错误地记住这些信息,导致在生成时出现错误。 引入新知识的微调 通过监督微调 (Supervised Fine-Tuning) 和 RLHF 对预训练模型进行微调是提高模型特定能力(如指令遵从性)的常见方法。然而,在微调阶段引入新知识几乎是不可避免的。 微调通常消耗的计算资源较少,因此关于通过小规模微调来可靠地学习新知识这一点存在争议。Gekhman 等人(2024) 研究了微调 LLM 是否会促进幻觉的产生。他们发现:(1) LLM 在学习包含新知识的微调样本时比其他与模型现有知识一致的样本要慢;(2) 一旦这些新知识被模型学会,模型产生幻觉的可能性反而增加。 在一个闭卷问答数据集(如 EntityQuestions)上,我们可以通过随机少样本示例和设置不同解码温度的方式,估计模型准确生成正确答案的概率。他们根据这一概率将数据分为四类:已知 组(其中包括高度已知、可能已知和弱已知三种子类别)以及 未知 组。 图 1. 闭卷问答示例的知识分类,基于模型输出正确答案的可能性。(图片来源:Gekhman 等人 2024) 实验中,一些基于开发集准确率的有趣发现可作为幻觉的代理指标:...

August 16, 2024 · 6 min · fisherdaddy

Unstructured 案例研究: 多模态 RAG 技术在从 PDF 生成幻灯片的应用

本文探讨了 Alayna 如何与 Unstructured 合作,通过其无服务器 API 推出了一种新的 AI 幻灯片和课程生成器,旨在帮助教师节省准备时间,提升教学质量。该产品利用多模式 RAG 技术,使教师能够将 PDF 教材无缝转换为引人入胜的幻灯片演示,并为学生提供更具互动性的学习体验。 教育挑战:教师面临时间不足的问题,急需创新工具以简化课堂准备工作。 产品介绍:Alayna 的 AI 幻灯片和课程生成器允许教师根据个体学习风格创建高质量课程,支持从 PDF 中提取图像和文本。 技术优势:Unstructured 的无服务器 API 能够处理多模式数据(文本、图像和表格),使得从教科书中提取有意义的数据成为可能。 功能展示:教师可上传教科书 PDF,系统自动生成包含相关图像和表格的幻灯片。这一功能自 7 月 8 日推出后,获得了教育工作者的积极反馈。 学习效果:研究表明,结合视频、文本、音频和互动内容的课程材料可提高信息保留率达 60%。 可扩展性:Alayna 选择无服务器架构以提高处理效率,能够同时处理多页文档,适应请求量的增加。 未来展望:Alayna 与 Unstructured 的合作为教育者提供了重要工具,期待未来在教育领域的进一步创新和发展。 Unstructured 案例研究: 多模态 RAG 技术在从 PDF 生成幻灯片的应用 教师往往缺乏充分的时间来准备课堂,因此,为他们寻找创新的解决方案以简化工作流程,对维持学校教育质量至关重要。Alayna 的使命是利用人工智能 (AI) 技术,使教师能够更多地专注于教学,而减少行政任务的负担。为实现这一目标,Alayna 与 Unstructured 合作,提升其产品功能,并将多模态 RAG (Retrieval-Augmented Generation) 技术引入其平台。本案例研究探讨了 Alayna 如何通过 Unstructured 提供的无服务器 API,作为核心数据摄取和预处理方案,推出其最新的 AI 幻灯片与课程生成器功能。 ^ 来自 Alayna 最新 TikTok 演示的示例幻灯片集 Alayna 利用 AI 技术提升教育内容的创作和传递。其核心产品 AI 幻灯片与课程生成器,帮助教育工作者创建高质量、互动性强且符合个体学习风格和目标的课程。该产品可以将 PDF 文件无缝转换为互动的幻灯片演示文稿,并通过 Unstructured 进行图像与文本的自动提取。他们还为教育工作者提供了 AI 副驾驶 (AI Copilot),帮助处理日常教学任务。...

August 13, 2024 · 1 min · fisherdaddy

如何阅读论文

本文提出了一种实用的三步法来高效阅读研究论文,旨在帮助研究人员提高阅读效率,减少无效的时间浪费。作者强调,尽管阅读论文是一项重要技能,但通常未被系统教授,导致许多研究人员在阅读过程中感到挫败。三步法的每一步都有特定的目标,帮助读者逐步深入理解论文的内容。 三步法概述: 第一步:快速浏览,获取论文的总体印象,通常耗时五到十分钟。主要步骤包括阅读标题、摘要和引言,查看章节标题,快速浏览数学内容,阅读结论,以及查看参考文献。 第二步:深入阅读,关注论文的主要内容,但忽略细节,如证明。此步骤应记录关键点和不理解的术语,通常耗时约一小时。 第三步:全面理解,尝试重新实现论文中的工作,挑战每个假设,关注细节。此步骤可能需要数小时,适合需要深入理解论文的读者。 文献调查: 使用学术搜索引擎查找高引用的相关论文,进行初步阅读。 查找共享引用和重复作者名,识别关键论文和研究者。 浏览顶级会议的最新论文,进行多次阅读,确保全面了解领域内的重要研究。 相关工作: 文中提到了一些相关的资源和文献,供读者进一步学习如何撰写论文和进行评审。 通过这种系统的方法,研究人员可以更有效地处理大量文献,提升自己的研究能力和效率。 如何阅读论文 2016年2月17日版本 S. Keshav David R. Cheriton计算机科学学院,滑铁卢大学 加拿大滑铁卢,安大略省 [email protected] 摘要 研究人员经常需要花费大量时间阅读研究论文。然而,这项技能却很少被正式教授,导致了许多不必要的时间浪费。本文提出了一种实用且高效的“三遍法”来阅读研究论文,并详细介绍了如何利用这一方法进行文献综述。 1. 引言 研究人员阅读论文的原因有很多,例如为会议或课程评审论文,保持自己在领域内的知识更新,或者对新领域进行文献综述。一个典型的研究人员每年可能要花费数百小时在论文阅读上。 高效地阅读论文是一项至关重要却很少有人教授的技能。因此,初学的研究生通常只能通过反复试验来自行掌握。在这个过程中,他们往往浪费了大量时间和精力,并常常感到沮丧。 多年来,我使用了一种简单的“三遍法”来避免在阅读论文时陷入细节之前就先获得全局视角。这种方法让我可以预估审阅一组论文所需的时间。此外,我可以根据需求和时间来调整论文评估的深度。本文将介绍这一方法及其在文献综述中的具体应用。 2. 三遍法 核心思想是,阅读论文时应该分三次完成,而不是从头到尾一气呵成。每次阅读都有特定的目标,并在前一次的基础上逐步深入:第一次阅读让你对论文有一个总体的了解;第二次阅读让你掌握论文的内容但不涉及细节;第三次阅读则帮助你深入理解论文。 2.1 第一次阅读 第一次阅读是一种快速浏览,用于获得论文的整体概况。你还可以决定是否需要继续进行更深入的阅读。这次阅读通常需要大约五到十分钟,包含以下步骤: 仔细阅读标题、摘要和引言 阅读章节和小节标题,忽略其他内容 浏览数学内容(如果有),以确定其理论基础 阅读结论 浏览参考文献,标记出你已经阅读过的那些 在完成第一次阅读后,你应该能够回答以下五个 $\mathit{C}$ : 类型 (Category):这篇论文属于哪种类型?是测量研究?现有系统的分析?还是研究原型的描述? 背景 (Context):这篇论文与哪些其他论文相关?分析问题时用了哪些理论基础? 正确性 (Correctness):论文的假设看起来是否合理? 贡献 (Contributions):论文的主要贡献是什么? 清晰度 (Clarity):论文写得清晰明了吗? 基于这些信息,你可以决定是否继续深入阅读(也避免了不必要的打印,节省纸张)。你可能会因为论文不符合你的兴趣,或是对该领域了解不足以至于难以理解,或者作者的假设不合理而选择不再继续阅读。对于那些与你研究领域不直接相关的论文,第一次阅读通常已经足够,但这些论文可能在未来某个时候会变得相关。 顺便提及,当你写论文时,大多数评审者(和读者)通常只会进行一次阅读。因此,务必要选择结构清晰的章节和小节标题,并撰写简明扼要且内容全面的摘要。如果评审者在一次阅读后无法理解论文的主旨,那么论文很可能会被拒绝;如果读者在五分钟内无法理解论文的要点,那么这篇论文很可能不会再被阅读。正因为如此,一个通过精选图表来总结论文内容的“图形化摘要”是一个非常好的想法,且越来越多地出现在科学期刊中。 2.2 第二次阅读 第二次阅读时,你需要更仔细地阅读论文,但可以忽略诸如证明等细节。在阅读过程中,记下关键点或在页边记录注释会有帮助。奥格斯堡大学的Dominik Grusemann建议,“记下你不理解的术语,或者你可能想问作者的问题。”如果你是作为论文评审人,这些注释将有助于你撰写评审意见,并在程序委员会会议中支持你的评审意见。 仔细查看论文中的图表和其他插图,尤其是图表。检查坐标轴是否正确标记,结果是否显示了误差线,以确保结论的统计显著性?这些常见的错误能够区分出仓促的、粗糙的工作与真正优秀的工作。 记得标记尚未阅读但相关的参考文献,以供进一步阅读(这是学习论文背景的好方法)。 对于有经验的读者来说,第二次阅读应当花费最多一小时。完成这次阅读后,你应该能够掌握论文的内容。你应该能够将论文的主要观点及其支持证据向他人总结。这种细节程度适用于你感兴趣但不属于你研究专长的论文。 有时即使在第二次阅读结束后,你仍然无法完全理解论文。这可能是因为该主题对你来说较为陌生,带有不熟悉的术语和缩写,或是作者使用了你不熟悉的证明或实验技术,从而使得论文的主要内容难以理解。也有可能是因为论文写得不够清楚,存在未经证实的论断或大量前向引用。或者可能只是因为时间太晚,你已经疲惫不堪。此时你可以选择:(a)将论文放在一边,希望不需要理解这些内容也能在职业生涯中取得成功,(b)稍后返回阅读,也许是在阅读了相关背景材料之后,(c)坚持下去,继续进行第三次阅读。 2.3 第三次阅读 要彻底理解一篇论文,尤其是作为评审人时,往往需要进行第三次阅读。第三次阅读的关键是尝试“虚拟地重现”论文中的工作:即在与作者相同的假设下,重新创建该工作。通过将这种重现与实际论文进行比较,你可以轻松地识别出论文的创新点及其隐藏的缺陷和假设。 这次阅读需要极大的细节关注。你应该识别并质疑每个陈述中的每个假设。此外,你还应该考虑自己将如何展示某个特定的想法。这种对实际与虚拟的比较能够让你对论文中的证明和表达技巧有更深刻的理解,并可能将这些技巧纳入自己的工具库。在这次阅读中,你还应该记下未来工作的灵感。 对于初学者来说,这次阅读可能需要很多小时,甚至对于有经验的读者来说,也需要一到两个小时以上。在完成这次阅读后,你应该能够从记忆中重建论文的整体结构,并能够识别出其优缺点。特别是,你应该能够指出隐含的假设、缺失的相关工作的引用,以及实验或分析技术中的潜在问题。 3. 进行文献综述 进行文献综述时,你的论文阅读技巧将受到严峻考验。这通常需要你阅读数十篇论文,可能是一个你不熟悉的领域。你应该读哪些论文呢?以下是如何利用三遍法来帮助你进行文献综述。...

August 13, 2024 · 1 min · fisherdaddy

OpenAI 官方指南:在 API 中引入结构化输出

本文由 OpenAI 发布于2024 年 8 月 6 日 我们在 API 中引入了结构化输出功能——模型输出现在能够可靠地遵循开发者提供的 JSON Schema。 去年在 DevDay 开发者大会上,我们推出了 JSON 模式,帮助开发者构建更加可靠的应用程序。尽管 JSON 模式提高了生成有效 JSON 输出的可靠性,但并不能确保模型的响应会完全符合指定的 Schema。今天,我们引入了 API 的结构化输出功能,确保模型生成的输出能够严格匹配开发者提供的 JSON Schema。 生成结构化数据是 AI 在当今应用中的一个核心应用场景。开发者使用 OpenAI API 构建功能强大的助手,这些助手能够通过函数调用获取数据并回答问题,提取结构化数据用于数据录入,并创建允许大语言模型 (LLM) 执行操作的多步骤智能工作流。开发者通常会使用开源工具、提示工程和反复请求来确保模型输出与他们系统的格式互操作。结构化输出通过限制 OpenAI 模型的输出,使其严格遵循开发者提供的 Schema,并训练模型更好地理解复杂的 Schema,从而解决了这一问题。 在我们对复杂 JSON Schema 的评估中,启用了结构化输出的 gpt-4o-2024-08-06 模型获得了满分 100%。相比之下,gpt-4-0613 的得分不足 40%。 通过结构化输出, gpt-4o-2024-08-06 在我们的评估中实现了 100% 的可靠性,完美匹配输出模式。 如何使用结构化输出 我们在 API 中提供了两种形式的结构化输出: 函数调用:通过工具实现的结构化输出,可以在函数定义中设置 strict: true 来启用。此功能适用于所有支持工具的模型,包括 gpt-4-0613、gpt-3.5-turbo-0613 及之后的模型。启用后,模型的输出将严格匹配提供的工具定义。 Request POST /v1/chat/completions { "model": "gpt-4o-2024-08-06", "messages": [ { "role": "system", "content": "You are a helpful assistant....

August 13, 2024 · 13 min · fisherdaddy

PDF 转 Markdown 开源项目调研

最近计划抽时间写一个文档相关的翻译类项目,调研了几个主流的开源 PDF 转 Markdown 项目,从最终的效果来看,MinerU 的 Magic-PDF 当之无愧是当前最佳的选择,缺点就是速度慢。 项目:zerox 代码:https://github.com/getomni-ai/zerox 介绍:一种非常简单的PDF文档解析方法 逻辑:使用 PyMuPDF 将 pdf 文件中的每一页转换为图片,并将图片给 LLM ,让其转换为 markdown 格式 使用的prompt: Convert the following PDF page to markdown. Return only the markdown with no explanation text. Do not exclude any content from the page. 优劣势 优点:在纯文字、表格等场景下,效果还不错 缺点 :在有配图的情况下,配图会被丢失掉,用<img>之类的占位表示图片 项目:gptpdf 代码:https://github.com/CosmosShadow/gptpdf 介绍:使用视觉大语言模型(如 GPT-4o)将 PDF 解析为 markdown。方法非常简单(只有293行代码),但几乎可以完美地解析排版、数学公式、表格、图片、图表等。每页平均价格:0.013 美元 逻辑: 用PyMuPDF识别中其中的线条(page.get_drawings())、图片(page.get_image_info())、文本区域 用一些策略做一些合并,最终得到一个只有表格和图片的区域 将这些区域截图后存储在本地 在原图上用红色框和序号标注好,送给GPT识别,最终的结果是个markdown格式 使用的prompt 使用markdown语法,将图片中识别到的文字转换为markdown格式输出。你必须做到: 1. 输出和使用识别到的图片的相同的语言,例如,识别到英语的字段,输出的内容必须是英语。 2. 不要解释和输出无关的文字,直接输出图片中的内容。例如,严禁输出 “以下是我根据图片内容生成的markdown文本:”这样的例子,而是应该直接输出markdown。 3. 内容不要包含在```markdown ```中、段落公式使用 $$ $$ 的形式、行内公式使用 $ $ 的形式、忽略掉长直线、忽略掉页码。 4....

August 5, 2024 · 1 min · fisherdaddy

Character.AI 的提示词设计

在 Character.AI,掌握提示工程的艺术和科学至关重要。随着每日生成数十亿个提示,采用一种强大且可扩展的提示设计方法显得尤为必要。本文作者提倡从传统的“提示工程”转向“提示设计”,通过开发 Prompt Poet 工具,使开发者和非技术用户能够更高效地设计和管理提示,提升用户与 AI 模型的交互质量。 提示设计的重要性:构建有效的提示需要考虑多种因素,包括对话模式、实验、角色、用户属性、记忆和整个对话历史等。随着 LLM(大语言模型)上下文窗口的扩大,提升提示设计的效率显得尤为重要。 Prompt Poet 工具:该工具结合了 Python 的 f-strings 和 YAML,使提示的设计和管理更加灵活和易于使用。Prompt Poet 允许用户在不编写代码的情况下高效创建和迭代提示模板,节省了大量的字符串操作时间。 模板处理过程:提示模板的处理分为两个主要阶段: 渲染:使用 Jinja2 处理输入数据,执行控制流逻辑并验证数据。 加载:输出为结构化的 YAML 文件,便于管理和使用。 示例模板:提供了基本的问答机器人模板,展示了如何使用 Jinja2 语法和 YAML 结构来创建灵活的提示。 上下文长度管理:通过设置截断优先级,Prompt Poet 可以有效管理对话历史,确保在上下文长度受限时保留重要信息。 设计选择:Prompt Poet 库提供了多种功能,包括提示属性的设置、令牌化和截断等,优化了响应的效率和延迟。 结论:Prompt Poet 代表了提示工程的重大进步,简化了复杂和个性化提示的创建过程,使开发者和用户能够更专注于提示设计,推动 AI 交互的高效和直观化。 Character.AI 的提示词设计 作者: James Groeneveld Github: https://github.com/character-ai/prompt-poet PyPi: https://pypi.org/project/prompt-poet/ 在 Character.AI,掌握 Prompt Engineering(提示工程)的艺术和科学至关重要。构建生产环境中的提示需要考虑大量数据和因素:当前对话模式、正在进行的实验、涉及的角色、聊天类型、各种用户属性、固定记忆、用户角色和整个对话历史等。我们每天生成数十亿个提示,需要充分利用不断扩展的大语言模型 (LLM) 上下文窗口,并且我们的使用场景非常多样化,因此需要一种强大且可扩展的提示设计方法。我们主张从传统的“提示工程”转向“提示设计”,从繁琐的字符串操作转变为设计精确、引人入胜的提示。这篇文章介绍了我们开发的 Prompt Poet,它是我们为此目的开发的工具。 简要概述 Python 的 f-strings(及其封装)现在是提示工程师的行业标准。使用 f-strings 可以简单到将用户查询直接插入到字符串中,但也可能变得非常复杂,涉及大量手动字符串操作来创建最终提示。这也使得提示的迭代对于非技术人员来说不太友好,因为需要编写代码。 我们认为可以有更好的方法。因此,我们开发了 Prompt Poet (Github / PyPi),一个允许开发者和非技术用户高效设计和管理生产提示的工具。它节省了在字符串操作上的工程时间,让大家能更专注于为用户打造最佳提示。...

August 5, 2024 · 5 min · fisherdaddy

Q* 是什么?

虽然 Q* 的提出已经过去大半年了,昨晚偶然看到 X博主 kimmonismus 这篇关于 Q* 的文章,翻译了一下重新回顾一下。Q* 是一种尚未公开的人工智能算法,可能代表了通向人工通用智能(AGI)的重要突破。该算法结合了 Q-learning 和 A* 搜索,旨在提高 AI 的推理能力和自学习能力。通过实现系统 2 思维,Q* 使 AI 能够进行复杂的多步骤推理,从而克服当前大型语言模型(LLMs)中的逻辑错误(即“幻觉”)。尽管关于 Q* 的具体细节尚不明确,但其潜在能力引发了广泛关注和讨论。 Q 的背景*: Q* 尚未正式发布,OpenAI 对其信息保持保密。最初的传闻出现在 2023 年 12 月,报道称 OpenAI 在其研究设施取得了科学突破,首次实现了模型的自我学习能力。 Q* 可能是通向 AGI 的关键,AGI 被定义为在大多数经济上有价值的任务中超越人类的自主系统。 技术细节: Q* 结合了 Q-learning 和 A* 搜索算法,前者使 AI 能够通过试错学习做出决策,后者用于寻找最优路径。 Q* 允许 AI 在没有外部干预的情况下自我学习,例如,通过解决数学问题来展示其推理能力。 系统 2 思维: 该算法强调复杂思维过程,要求 AI 逐步、迭代地解决问题,类似于人类的系统 2 思维(System 2 thinking)。 通过将思维过程分解为更小的步骤,Q* 可以减少错误并提高输出的准确性。 潜在应用: Q* 的成功可能会使 AI 在科学研究等领域具备更强的推理能力。 该算法的开发可能会导致新的 AI 系统,能够执行复杂的推理任务,进一步推动 AGI 的进程。 未来展望:...

August 5, 2024 · 3 min · fisherdaddy

Apple 的设备端和服务器基础模型

在2024年全球开发者大会上,苹果公司推出了“Apple Intelligence”系统,这是一种深度集成于 iOS 18、iPadOS 18 和 macOS Sequoia 的个人智能系统。该系统由多个高效的生成式模型组成,旨在适应用户的日常任务,提供个性化的服务。苹果智能的基础模型经过精细调整,能够高效、准确且负责任地执行特定任务,并强调了苹果在人工智能开发中的责任感和隐私保护。 模型介绍: Apple Intelligence 包含一个约30亿参数的本地语言模型和一个更大的基于服务器的语言模型,后者在苹果自有的私有云计算环境中运行。 这些模型支持用户和开发者的多种需求,包括文本撰写、通知总结、图像生成等。 责任感与隐私保护: 苹果制定了一系列责任人工智能原则,强调用户赋权、用户代表性、设计谨慎和隐私保护。 在训练模型时,苹果不使用用户的私人数据,并应用过滤技术以去除个人可识别信息和低质量内容。 训练与优化: 基础模型使用苹果的 AXLearn 框架进行训练,采用数据并行、张量并行等技术提高效率。 在后期训练中,苹果开发了两种新算法以提升模型的指令跟随质量。 通过多种创新技术优化模型在设备和私有云上的速度和效率。 模型适应性: 模型通过适配器进行微调,以便根据用户的日常活动动态调整任务能力。 适配器可以在预训练模型的基础上进行加载和切换,支持特定任务的高效处理。 性能评估: 苹果的模型在多个任务上表现优异,用户反馈显示其生成的摘要质量高于竞争对手。 在对抗性测试中,苹果的模型在处理有害内容和敏感话题时表现出色,显示出较低的违规率。 未来展望: 苹果期待在未来分享更多关于其生成模型家族的信息,包括语言、扩散和编码模型,以进一步支持用户的日常活动。 介绍 Apple 的设备端和服务器基础模型 在 2024 年的 Worldwide Developers Conference 上,我们推出了 Apple Intelligence,这是一种深度集成于 iOS 18、iPadOS 18 和 macOS Sequoia 的个人智能系统。 Apple Intelligence 包含多个高度智能的生成模型,这些模型专为用户的日常任务而设计,并且能够根据用户当前的活动进行实时调整。Apple Intelligence 中的基础模型已经过优化,能够提升用户的体验,包括撰写和润色文本、优先处理和总结通知、为家庭和朋友的对话生成有趣的图像,并在应用内简化操作,方便用户使用各种应用。 在接下来的概述中,我们将详细介绍这两个模型:一个约 30 亿参数的设备端语言模型,以及一个更大的服务器端语言模型,该模型通过 Private Cloud Compute 在 Apple Silicon 服务器上运行。这两个基础模型是 Apple 创建的一个更大规模的生成模型家族的一部分,旨在支持用户和开发者;其中包括一个用于在 Xcode 中构建智能的编程模型,以及一个帮助用户在视觉上表达自己的扩散模型,例如在消息应用中。我们期待不久后分享更多关于这一系列模型的信息。 更新 - 2024 年 7 月 29 日:本文中的数据已更新,以反映今日发布的技术报告中使用的模型版本和评估。更多详情请参阅论文:Apple Intelligence Foundation Language Models。...

July 31, 2024 · 2 min · fisherdaddy

Duolingo: 让我们的角色发声

本文介绍了如何为 Duolingo 的角色创建定制的文本到语音(TTS)声音,以增强语言学习体验。通过赋予角色独特的声音,不仅增加了角色的个性,还帮助学习者接触到多样化的语音,提升了他们的听力技能和语言学习的趣味性。 角色的魅力 Duolingo 的角色通过插画和动画得到了广泛的关注,这激励团队进一步发展这些角色,使语言学习更加有趣和引人入胜。角色的熟悉感为故事叙述提供了便利,尤其是在初学者的学习中,角色的个性化帮助学习者更好地理解故事情节。 定制语音的开发 团队为每个角色开发了独特的 TTS 语音,经过多个月的审查和试音,确保每个角色的声音能够准确传达其个性。不同语言的角色声音在保留角色特质的同时,也考虑了文化适应性。例如,角色 Lin 在日语中显得懒散而直言不讳,而在英语中则显得总是带着笑意。 技术与教学的结合 使用机器学习技术,团队创建了先进的 TTS 语音,能够在课程中应用任何句子。录音过程中,团队设计了多种句型和语境,以确保声音的自然性和教学效果。特别是在不同语境下,语音的节奏和语调需进行精确调整,以便为学习者提供可靠的发音示范。 学习者的体验 当前,学习者在英语课程中可以听到所有角色的声音,而在学习多种语言时,也能体验到不同语言对角色的多样化演绎。这种多样性不仅增强了学习的趣味性,还帮助学习者在真实语言环境中更灵活地运用所学知识。 让我们的角色发声 我们的角色终于找到了他们的声音!在这篇博客中,我们将分享如何为所有角色创建自定义的文本到语音 (Text-to-Speech, TTS) 声音。 图1: 角色让学习更有趣 在美术团队完成角色的绘制和动画制作后,我们发现社交媒体上大家对这些角色反响热烈。这份热情促使我们更加用心打磨这些角色,给他们更多的细节和背景。 我们意识到,这是一个让语言学习更加有趣且充满吸引力的好机会。同时,我们希望借此加强学习者与 Duolingo 之间的联系。通过引人入胜的故事,我们希望学习者能不断回到平台上学习,并且深入了解这些角色。 现在,我们还为每个角色添加了专属的声音。这不仅让角色更具个性,也为学习者提供了更多样的听力体验,这对于语言学习非常有帮助。在现实生活中,大家会遇到各种不同年龄、性别和背景的人,因此,在课程中听到不同的声音类型,有助于提升应对实际语言情境的能力。 那么,我们的角色有哪些? 为了完善这些角色,我们花了数月的时间设计他们的性格、背景故事以及相互关系。同时,我们也创作了一些以这些角色为主的故事,这有助于更好地展现他们的个性。 我们发现,角色的熟悉感有助于讲故事。在故事中,由于篇幅和语言水平的限制(特别是对于初学者),我们需要依赖这些角色鲜明的个性和他们之间的互动,来实现更强的故事叙述效果。比如,不需要每次都解释 Lily 的动机,她那种冷漠的态度已经让学习者对她的行为有了清晰的理解,即使是初级语言水平也能将故事讲得生动有趣。 图2: 寻找角色的声音 为了让角色更加生动,我们为每个角色制作了定制的 TTS 声音。这些声音不仅展现了角色的独特个性,还让语言学习过程更加生动有趣。 当然,为九个角色开发多语言版本的声音并不是一件容易的事。仅仅是为英文角色选角,我们就花了几个月的时间来筛选试音,并讨论哪个演员最符合角色特质。比如,这次 Eddy 的试音是否显得太过学究?Oscar 是否需要更低沉、更有共鸣的声音?以及 Lily 的冷淡风格能否不影响学习体验? 在为英文版角色选角并录音后,我们以这些录音为基础,制作了西班牙语、法语、德语和日语版本。即便有英文录音作为参考,每种语言仍然面临着独特的创意和技术挑战。例如,讽刺在日语中的表达方式与英语不同,那 Lily 的语气是否也需要改变呢?我们与语言学专家、语音学家和创意顾问一起合作,确保每种语言版本都能合适地表现角色的性格。 有些语言版本中的角色声音几乎与英文版相同,而有些则在某些性格特点上有所加强。比如,Lin 在日语中表现得冷静而直接,但在英语中却总是充满趣味。 图3: 构建他们的声音 在为角色录音后,我们使用机器学习技术来构建最先进的 TTS 声音。这些声音能够用于课程中的任何句子,即使是那些尚未编写的句子!尽管已有许多技术可以用来构建和开发声音,但 Duolingo 的需求有所不同,我们需要它们来帮助学习语言。 我们精心设计了录音的内容,以涵盖课程中可能遇到的各种情境——不同的语音组合、各种句型以及情感表达。这些多样化的录音对于真实再现学习者在课程中遇到的语言场景是非常必要的。我们也尝试突破技术的限制,力求在语调、语速和停顿方面达到最佳效果,使声音尽可能接近真实。 我们的目标是平衡配音演员的表现力和教学的具体需求。配音演员需要通过想象各种场景来赋予台词情感——有时这种“声学味道”会对技术造成挑战,因为 TTS 系统通常是基于中性的语音数据进行训练的。 我们非常重视 TTS 声音在实际课程中的表现。对于学习者来说,TTS 声音需要是发音和语言使用的可靠模范。例如,在英语句子“我读这本书”中,根据上下文“读”的发音会有所不同:在现在时态的课程中,它的发音与在过去时态的课程中是不同的。同样,在处理不同句型的节奏和语调时,我们也遇到了一些挑战。例如,“你想去吗?”的语调与“你想去哪里?”的语调是不同的。我们的 TTS 声音只能和我们提供给系统的语音示例一样好,因此我们的语言专家和工程师合作,为系统提供提示或在必要时进行纠正。 接下来你能听到谁的声音? 现在,学习我们英语课程的学习者可以在课程中听到所有角色的声音!如果你在 Duolingo 上学习多种语言,还能体验这些角色的多种演绎!

July 30, 2024 · 1 min · fisherdaddy

Duolingo 如何为角色添加动画

Duolingo 在为其世界角色动画赋予生命的过程中,采用了创新的技术手段,以确保角色能够生动地与学习者互动。通过使用 Rive 工具,Duolingo 实现了高效的口型动画制作,提升了用户学习体验,确保了动画的质量和可扩展性。 动画挑战:Duolingo 需要为其超过 40 种语言的 100 多个课程中的角色制作动画,但手动动画口型是不切实际的,因此寻求可扩展的解决方案。 Rive 工具的应用:Rive 是一种基于网络的实时互动动画工具,允许通过状态机(State Machine)编程控制动画状态的切换和混合,从而实现高效的动画制作。 语音技术的整合:为了准确制作口型动画,Duolingo 建立了丰富的语音技术生态系统,使用内部的语音识别和发音模型来获取每个单词和音素的时序信息。 嘴形设计:为确保角色的嘴形动画真实可信,Duolingo 设计了 20 多种嘴形,结合角色的个性和 Duolingo 的美学。 动画集成:完成动画后,通过 Rive 的状态机将动画与音频同步,确保角色能够实时响应用户的操作,例如在点击单词时角色能够发声并动画化。 未来展望:Duolingo 将继续探索新技术,以克服技术挑战,进一步提升学习体验,并在未来的项目中应用这些经验。 Duolingo 如何为角色添加动画 在为每个角色开发了独特的声音后,我们开始思考如何让它们更有活力——不仅仅是现有的闲置行为动画。我们希望确保我们的角色能成为学习者生动有趣的学习伙伴! 首先:动画化这么多的口型动作是一项巨大的工程! 我们教授超过40种语言,涵盖100多个课程,每个课程包含数千个句子和课时,所以要为我们十个世界角色的每个口型动作手动画是不可能的。我们需要一种可扩展的方法来处理每个角色的各种口型,同时保证文件大小足够小,以便在Android、iOS和Web平台上运行。此外,我们还希望确保动画质量不受影响! 我们发现,游戏引擎的替代方案可能是答案——一种能帮助我们用有限的资源生成几乎无限组合的工具。这就是我们了解到Rive的原因! 什么是 Rive? Rive 是一种基于网络的工具,用于制作实时互动动画和设计,类似于游戏引擎。它解决了我们许多问题:文件大小小巧,与Duolingo的应用架构无缝结合,从动画师到工程师的交接过程也很顺利。 但最吸引我们的是Rive的状态机:这是一个可视化的逻辑系统,用于连接动画(即“状态”)。它让我们能够通过编程控制调用的动画状态、调用方式以及如何过渡和融合。状态机的强大系统让这个项目能够在大规模上实现。我们知道Rive是实现口型同步动画的理想工具! Rive 内部展示! 语音技术的魔力 为了制作口型动作,我们需要对语音内容有详细的了解。当我们为文本到语音生成声音时,我们使用的解决方案没有提供发音和时间信息,但我们有一个为语言学习设置的丰富语音技术生态系统。为了生成精准的动画,我们会生成语音,将其通过我们的内部语音识别和发音模型,获取每个单词和音素(语音单位)的时间信息。每个声音都会映射到一个视觉表示或唇形,这是我们基于语言学特征设计的一套系统。 有了这些功能,我们创建了一个系统来生成课程内容所需的所有唇形时间数据。当然,我们还需要确保这些数据的准确性,并将其传递给数百万用户。我们不仅开发了生成内容的工具和流程,还在必要时进行审核和修正。 设计口型世界 在开始动画制作前,我们需要确保准确地表示与特定声音对应的嘴形。 角色唇形图示例 我们需要设计每一个嘴形,保持Duolingo的美学风格。此外,每个角色还需要一套独特的唇形,符合其个性特征。设计过程中最关键的一步是确保唇形在动画中看起来真实可信。 有些角色需要更多的探索,但我们最终为每个角色设计了20多个嘴形! 一旦设计指南确定,我们就可以开始动画制作。我们为每个角色在课程中的常规姿势创建了动画状态,也为角色的嘴部设计了单独的状态。所有动画状态设置完毕后,最后一步就是将这些动画导入Rive的状态机,并与之前标注的嘴部输入结合起来。 状态机如何控制角色动画的图示 状态机如何混合唇形动画的图示。这里显示了4个唇形,但即使有超过20个形状,逻辑也是相同的。这些状态需要与角色动画状态同步运行! 状态机设置完成后,我们将其导出为一个运行时文件,然后交给工程师进行应用程序的集成! 集成过程 当需要展示一个挑战时,我们会获取音频和时间信息,并利用这些时间信息同步触发动画状态机。这将数据传输量降到最低——远低于传输一个小视频——并让我们能够实时响应用户的操作。当你点击一个单词时,角色会说出并动画该单词;如果你在它说完之前完成练习,角色会及时停止说话。我们还可以展示闲置行为,如点头、眨眼和眉毛移动。最后,根据挑战的结果——你是答对还是答错——我们可以进入一个最终状态,展示角色的反应! Duolingo 动画和技术的未来 Duolingo 一直在测试各种功能,这些嘴部运动也不例外。这个项目是一次有趣的实验,旨在使学习体验更加有趣,也是一次使用新软件和技术的机会。看到我们如何克服技术难题,并继续打造或改进其他有趣的功能,真是令人兴奋! 请查看我们在2023年Duocon上的演讲,了解更多关于我们动画制作的方法!

July 30, 2024 · 1 min · fisherdaddy