TowardsDataScience 2023 博客中文翻译(三百一十五)

原文:TowardsDataScience

协议:CC BY-NC-SA 4.0

最困难的部分:定义分类目标

原文:towardsdatascience.com/the-hardest-part-defining-a-target-for-classification-50c34d37e0b8?source=collection_archive---------8-----------------------#2023-11-14

在你的生产数据库中,它并没有标记为‘Target_Variable’!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Chris Bruehl

·

关注 发表在 Towards Data Science ·6 分钟阅读·2023 年 11 月 14 日

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 Kenny Eliason 提供,来源于 Unsplash

什么是目标变量?

目标变量是你尝试通过监督机器学习模型进行预测的变量或指标。它也通常被称为因变量、响应变量、‘y’变量,甚至只是模型输出。

无论你喜欢哪个术语(或在统计课上被迫使用哪个术语),这是任何监督建模项目中最重要的变量。虽然对于大多数有机器学习经验的人来说,这显而易见——但对于新手来说,值得重申原因。

从技术角度看,目标变量的数据类型决定了你正在进行的建模项目的类型。数值目标变量属于回归模型的范畴,而分类变量意味着你正在进行分类模型的工作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

带有数值目标变量的回归模型——来自我的回归课程

但比模型类型更重要的是,你的目标变量是你构建模型的全部原因。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个(非常)简单的决策树,预测客户是否会流失(停止成为客户)——来自 Maven 的分类课程

定义分类的目标变量

表面上,定义一个用于分类的目标变量似乎很简单。但如果你被要求为从未建模过的数据构建模型,你的看法可能会改变。

当人们开始学习机器学习时,他们通常会得到相对干净的数据集,这些数据集有明确的 0 和 1 可以用于分类建模。但根据我的经验,在关系型数据库中找到一个完全符合你最终目标变量的列是极其罕见的。

当然,这在学习机器学习算法的过程中是完全有意义的,但当我看到生成第一个“真实生活”建模数据集的 SQL 查询时,我确实经历了一次严酷的觉醒,这是我在第一个数据科学家工作中有机会接触到的。

让我们看看在生成目标变量的过程中,针对订阅产品的客户流失的情况下,我们可能需要对数据进行哪些转换。这可能是保险单、Netflix 订阅等。我创建了一些模拟的数据,模仿了我在实际工作中看到的数据,但如果它与数据工程师构建这些表格的方式不符,还请见谅。

示例 1:取消日期

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

没有明确的 1 或 0 指示客户是否流失(订阅在此结束),但在这个例子中,工程化一个这样的指标非常简单。如果 subscription_end_date 为 null,我们可能可以假设客户仍然活跃。因此,我们可以应用一些基本逻辑,如果订阅结束日期不为 null,则赋值 1,如果为 null,则赋值 0,这样我们目标变量的正类就是流失客户。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

够简单了。现在我们来看一个更复杂的例子。

示例 2:续订日期

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在假设我们在订阅表中有另一列。如果客户再次成为付费订阅者,我们有一列来记录这一点发生的时间。

我们的第一位客户在订阅结束后从未回来,所以我们可以放心地说他们已经流失了。

那么客户 4 呢?他们在订阅结束后的一天重新订阅了。他们可能在订阅结束时有一个月度订阅,或者信用卡过期了,一旦他们意识到这一点,就立即重新激活了他们的订阅。一天的会员空档足以说明这个客户已经流失了吗?可能不够。但如果是 7 天或 30 天的空档呢?

客户 5 确实重新订阅了,但他们已经有一年多没有成为客户了。可以公平地说他们已经流失了,但在这里与利益相关者和主题专家沟通至关重要。我们可能会确定一个逻辑,将流失者定义为已经中断超过 30 天的人,最终得到以下结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这不是一个微不足道的区别。你的目标定义可能会对哪些特征能成功预测你的目标、模型的整体准确性以及最终项目的成功产生下游影响。

例如,如果客户 4 是我们平台上的一个非常活跃的用户(他们在失去访问权限时立即注意到),而其他两个客户却不是,那么与流失相关的预测特征的预测能力将会被我们糟糕的目标定义所削弱。

我考虑过添加更多示例,但我认为这两个示例已经很好地阐明了更广泛的观点。作为思考的材料,当我们有交易表,其中每个月的付款都有一行记录,不同的订阅类型和长度,因促销获得免费订阅的客户(我们可能希望完全排除他们),等等,目标创建的逻辑更容易出错。

一点建议

你的模型的目标不仅仅是 0 或 1,它代表了你分类建模项目的成功基础单元。因此,我有几点通用建议来帮助你在下一个项目中定义目标变量:

  • 你的目标变量可能不会在表格中干净利索地定义给你。

  • 花时间,至少几天甚至几周,认真思考如何从手头的数据中定义你的目标变量,以及这种定义如何与业务目标相关。这通常不是一个微不足道的任务,事先投入时间和精力会比后来需要改变定义要好得多。

  • 在你的组织中,目标变量的定义可能在概念上并没有达成一致。“流失”可以有多种定义方式,你可能永远无法得到一个完美的定义。但作为建模者,通过与相关利益方沟通,达成对你定义的共识是很重要的。至少,这样你可以在定义需要更改的情况下保护自己的利益,而最好的是,你为构建成功的模型奠定了基础。

感谢你抽出时间阅读我的想法——我知道对于经验丰富的数据科学家来说,这些可能并不突破常规,但我希望刚入门这个领域的人能够意识到课堂与实际工作之间的差距,并理解目标变量不应被忽视——尽管有时会想尽快进入建模阶段,但如果你这样做,可能会错过…目标。

如果你喜欢这篇文章,请关注我!我定期撰写关于 Python、Pandas 以及从数据分析到数据科学转型的文章。我还在 Maven Analytics 平台和 Udemy 上提供了相关课程——希望能在那里见到你!

数据质量问题对广告支出的回报的隐藏成本

原文:towardsdatascience.com/the-hidden-cost-of-data-quality-issues-on-the-return-of-ad-spend-dd8c99b3289e?source=collection_archive---------18-----------------------#2023-07-06

如何领先公司基于客户生命周期价值驱动以价值为导向的广告支出分配,并克服代价高昂的数据问题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Mikkel Dengsøe

·

关注 发表在 Towards Data Science ·6 分钟阅读·2023 年 7 月 6 日

你的数据能够揭示很多信息,关于哪些客户带来了丰厚的回报,哪些则没有。不论你是 B2B 公司中的生命周期营销经理,优化免费试用转化为付费客户,还是 B2C 电子商务中的数据科学家,优化让首次用户购买你的产品,每个用户对你来说都是有价值的。

领先的公司已熟练掌握根据客户在网站或产品上的互动预测客户生命周期价值。凭借这些数据,他们可以相应地调整竞标,合理地为一个可能在其生命周期内产生额外 50 美元的用户支付额外的 5 美元。

换句话说,你正坐拥一座金矿,可以将其转化为预测并直接输入 Google 和 Meta,调整你的竞标策略,以通过为每个客户支付适当的价格来赢得市场。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

source: synq.io

影响客户生命周期价值(CLTV)计算的数据问题导致价值竞标基于错误的假设

但你的广告支出的回报只有在你的客户生命周期价值计算准确时才会显现。

平均规模在 250 到 500 人的公司使用数十种数据源,跨越数百个表格,且不总是能正确了解他们使用的数据是否准确。这意味着他们可能将预算分配给错误的用户,从而浪费数十万美元。

在这篇文章中,我们将深入探讨数据驱动的营销团队在原始数据经过转换、作为广告平台中基于价值的竞标输入时所面临的数据质量问题。我们将特别关注以下领域:

  • 360 度概览 — 为什么拥有全面的营销数据堆栈概览如此重要

  • 监控 — 在你的营销管道中应该注意的常见问题

  • 人员与工具 — 协调人员和工具以建立可靠的营销数据管道的重要性

为什么你需要对营销管道有 360 度的概览

为了了解每个客户的价值,你可以分析用户行为和数据点,这些数据点是强有力的指标。这通常会揭示一个由数十个不同系统提供的预测因素列表。通过结合这些因素,你可以获得对客户的全面了解,并将这些线索串联起来,了解行为和行动背后的关键驱动因素,从而识别出具有高价值的客户。

例如,如果你是一家 B2B 公司的营销人员,你可能已经了解了促使客户从免费用户转变为付费用户的因素。

  • 登录两次使客户转化的可能性提高 50%(Stripe)

  • 在 7 天内推荐他人使客户价值提高 70%(Segment)

  • 拥有公司邮箱地址且员工人数超过 250 的用户比其他用户更有可能成为付费客户(Clearbit)

  • 仅通过移动设备登录会使客户价值减少 30%(Amplitude)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

source: synq.io

数十个上游源数据进入数据仓库后,才会发送到 Google 和 Facebook 进行广告竞标

如果没有全面的概览,你可能会错误地假设输入到竞标系统中的数据是准确的,结果会发现关键问题,例如:

  • 从电子邮件域名中错误提取公司规模,由于 Clearbit/Segment 集成故障。

  • 事件跟踪冲突导致从 Amplitude 中丢失结账流程中关键动作的数据。

  • 从 Stripe 集成中数据同步不准确,导致关于客户购买的信息不完整。

“由于第三方数据源的问题,我们的 CLTV 计算中断了。我们不仅失去了当天花费在 Google 上的 10 万英镑,还不得不等几天才能让 CLTV 模型重新校准。” — 500 人金融科技公司

研究论文强调了多种因素在预测在线零售商 ASOS 的 CLTV 中的重要性。研究发现,关键因素包括订单行为(例如订单数量、近期订单历史)、人口统计信息(例如国家、年龄)、网页/应用会话日志(例如距离上次会话的天数)和购买数据(例如总订单价值)。这些见解是数百个数据转换和几十个第三方源整合的结果。

ASOS — 影响 CLTV 的因素

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:synq.io。数据来自 研究论文

数据问题 — 已知的未知和未知的未知

拥有全面的数据概览还不够;重要的是主动识别影响 CLTV 计算的潜在问题。这些问题可以分为两种类型:

已知的未知:发现并确认的问题,例如管道故障导致 Google API 12 小时内未同步数据。

未知的未知:可能未被发现的问题,例如产品分析事件数据同步到数据仓库不正确,导致对用户行为的假设不准确。

“我们每天在 Facebook 营销上花费 50,000 美元,而我们的一条上游管道在 3 天内没有同步,导致我们浪费了一半的预算。直到他们通知我们之前,我们完全不知道发生了这种情况。” — 250 人电子商务公司

为了主动识别和解决影响 CLTV 计算的数据问题,请考虑监控以下领域:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:synq.io

逻辑测试:使用像 dbt 这样的工具将假设应用于不同的列和表。例如,确保 user_id 列是唯一的,order_id 列从不包含空值。实施额外的逻辑检查,例如验证电话号码字段仅包含整数,或确保平均订单大小未超过合理的限制。

数据量:监控数据量的异常。例如,订单表中新行的突然增加可能表明数据转换错误导致重复项,或者反映了新产品的成功。

新鲜度:了解所有数据表的最新刷新时间,因为数据管道故障可能在更细微的领域中被忽视。例如,暂停从 Clearbit 收集公司规模数据的集成问题可能会在没有立即检测的情况下持续存在。

分段:识别特定分段中的问题,例如某些产品类别的标签错误,这在没有适当检查的情况下可能难以检测。

确立责任和所有权

一旦你对数据和监控系统有了全面了解,定义监控的各个方面的责任就很重要。在之前提到的例子中,数据所有权涵盖了产品使用、人口统计、计费和订单。为相关的数据源和表格指定负责人,确保能够及时处理和解决问题。

“我们有一个重要的测试警报响了好几周,但一直未被处理,因为接收警报的人已经离开公司” — 英国金融科技独角兽

此外,优先关注数据产品中最关键的组件,并建立服务水平协议(SLA)。定期评估正常运行时间和性能,以系统化的方式解决任何需要注意的领域。

总结

领先的公司使用来自多个来源的数据来准确预测每位客户的客户生命周期价值(CLTV)。这使他们能够优化广告竞标并锁定最有利可图的客户。然而,你的广告支出最终成功与否取决于 CLTV 计算的准确性,使得未被发现的数据问题成为一个重大风险。

为了确保高质量的数据用于基于价值的广告竞价,我们建议关注两个关键领域:

  1. 360 度概览:没有全面的概览,你可能会误认为你的竞标系统中的数据是准确的,后来却发现关键问题。这些问题可能包括像 Amplitude 这样的平台中的陈旧数据或与 Clearbit 的集成问题。

  2. 监控:主动识别和解决影响 CLTV 计算的数据问题至关重要。实施包括逻辑测试、数据新鲜度、数据量跟踪和分段分析在内的监控流程。

通过优先考虑全面概览和主动监控,公司可以降低与错误 CLTV 计算相关的风险,并提高基于价值的广告竞价策略的有效性。

如果你在处理营销数据并且考虑如何建立可靠的数据,我很乐意与您交流。请通过 mikkel@synq.io 联系我。

开源开发中的隐性危机:行动号召

原文:towardsdatascience.com/the-hidden-crisis-in-open-source-development-a-call-to-action-abf6bc2a8c0c

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于开源软件他们没有告诉你的事

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Adam King

·发表于 Towards Data Science ·阅读时间 19 分钟·2023 年 6 月 9 日

在数字时代,创新的引擎常常伴随着开源的旋律。这种协作的软件开发模式不仅塑造了我们的技术格局,还培养了一个由共享理念团结起来的创作者社区:为了所有人的利益构建软件,摆脱资本化的限制。在这一领域的先锋们赠予了我们如 Linux、Git、Python 和 MySQL 等变革性技术,展示了开源的巨大潜力。然而,这个充满活力的领域正逐渐失去色彩,它曾经响亮的嗡嗡声现在变成了微弱的低语。曾经推动全球创新的热情正在消退,被一种新的动态取而代之,在这种动态下,开源贡献常常被视为职业发展的垫脚石或企业寻找人才的平台。

这种过渡微妙却深刻。如今,免费和开源软件(FOSS)贡献常常被视为有志开发者的简历加分项或公司寻求人才的狩猎场。曾经是全球创新堡垒的开源,现在岌岌可危,面临成为小众爱好的边缘。尽管它在科技行业中的关键作用,开源维护者的处境在不断上升的企业使用和日益严重的安全问题中变得越来越难以维持。

这一问题在当今世界尤为明显,因为 AI 生成的代码量在不断增加。专有语言模型利用大量开源代码进行训练,但今天的代码编写模型如 Github Copilot 或 Repl.it 的 Ghostwriter 都没有对原始软件创作者进行归属、补偿,甚至没有给予任何认可。如果我们不直接对开源创作者进行价值认可,这一问题只会变得更严重。

然而,重新点燃开源精神还不算太晚。通过理解推动这种变化的压力以及无偿开源维护者面临的挑战,我们可以开始为开源的可持续未来绘制一条路线。这篇文章将深入探讨导致这一趋势的各种因素,提供来自开源社区关键人物的见解,并探索确保开源软件开发持久性和活力的潜在解决方案。

那么,我们是如何走到这一步的?这种转变对开源的未来以及科技的未来有何影响?更重要的是,我们如何在这些复杂性中找到平衡,再次振兴开源运动?系好安全带,我们将开始一段穿越开源软件不断发展的旅程,从其谦逊的起点到现今的挑战,甚至更远。这条路可能崎岖不平,但这次旅程定会带来启发。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

跳上来,一起踏上这段开源世界的旅程。图片由作者提供,通过 Stable Diffusion 和 Photoshop 生成。

“免费”开源的悖论:通向倦怠的老路?

当我们在开源软件的背景下谈论“免费”时,我们的参考不仅仅是成本。我们强调的是自由:运行、学习、重新分发和修改软件的权利。这种自由赋予用户对其计算机的控制——这是开源运动的核心原则。然而,这种自由也带来了一个意想不到的副作用:许多开源软件项目无意中采用了所谓的“免费商业模式”。

在这一模式下,软件是自由可得的,任何人都可以贡献代码来改进它。贡献者可能从为项目增添价值中获得满足感,但他们通常没有实际的奖励。这种不平衡引发了几个挑战,波及到不仅仅是贡献者,还包括用户和更广泛的技术生态系统。

自由和开源软件是数字革命的生命线,作为技术创新的支柱,正越来越受到极限的挑战。它在一种商业模式下运作,这种模式虽然理论上非常平等,但实践中往往难以维持。这个模式的精神很简单——共同创建、共享和维护软件而不直接获得经济利益。回报表面上是全球技术生态系统的共同进步。然而,在这一看似乌托邦的理想背后,潜藏着充满倦怠、缺乏激励和不断上升的质量问题的严酷现实。

创作者和维护者经常发现,他们为集体利益而创造和维护软件的高尚事业,往往变成了一个令人生畏的任务。追求他们的热情,这些专注的个人常常在漫长的工作时间、复杂的问题解决和无情的压力中穿行。这样的条件可以,也经常会,导致职业倦怠。当考虑到贡献者中有很大比例未获得报酬时,这种情况会变得更糟。据 Tidelift 调查,2023 年这一比例高达惊人的 46%,与 2021 年的水平相同。

缺乏直接的财务激励常常导致维护和改进软件的动力不足。这可能导致一系列质量问题,软件经常留下未解决的漏洞或停滞不前,缺乏新功能和改进。

以个人经验而言,作为一名在开源 GitHub 代码库上拥有超过 7500 个星标的开发者,这个问题对我来说尤为切身。尽管我的软件对成千上万的开发者持续有用,经过多年的使用,从赞助者那里获得的累计补偿却不到我在任何一个软件职位上一个月的工资。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我最受欢迎的开源代码库的使用统计数据。

这种困境并不是由于缺乏寻求支持。虽然在 GitCoin、Github Sponsors、Patreon 和直接赞助等平台上做出了努力,但从这些渠道获得的财务支持随着时间的推移已被证明是不够的。因此,即使这些软件包继续被使用,我也发现自己无法投入必要的时间进行维护和进一步开发。

这些挑战的波及效应扩展到消费者——包括个人和企业。尽管免费、社区驱动的软件最初看起来很诱人,但实际使用中的现实常常充满挫折。用户可能会与存在缺陷或不够友好的软件作斗争。支持可能不稳定,由于资源或时间限制,维护者经常难以跟上不断涌入的查询和错误报告。

这一环境也滋生了安全问题,这是开源软件中一个难以忽视的方面。2021 年 12 月出现的 Log4shell 漏洞突显了这一点,受影响库的开发者发现自己不断应对问题,却没有获得补偿或实质性的认可。

‘搭便车问题’,这是一个著名的经济难题,在开源软件中显得尤为突出。这个概念指的是在某些情况下,个人或实体在没有承担提供成本的情况下从资源或服务中受益。在开源软件领域,当盈利丰厚的公司将开源项目纳入其产品中,却未对这些项目的维护者提供足够的补偿或支持时,就会出现搭便车问题。这种挫败感引发了诸如 Marak Squires 故意破坏其受欢迎的 npm 包的事件,以抗议财富 500 强公司剥削他的无偿劳动。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一位艺术家对开源软件中搭便车问题的描绘。作者创作,使用 Stable Diffusion 和 Photoshop 生成。

尽管面临这些障碍,开源软件社区展示了非凡的韧性。这个生态系统继续蓬勃发展,得益于贡献者的集体力量,他们出于责任感、热情或对协作创新力量的信仰而坚持不懈。但一个悬而未决的问题仍然存在:还能持续多久?

这在长远来看是不可持续的。 重新评估开源软件中的‘免费’商业模式不仅是时机成熟,它对保护这一宝贵资源至关重要。

软件巨头角色的加剧

当我们提到软件巨头时,我们指的是那些影响我们日常生活的组织:谷歌、亚马逊、苹果、脸书和微软。这些公司开发了我们赖以依赖的平台和技术,从我们智能手机上的操作系统,到我们用来购物的网站,再到用于与亲人保持联系的社交媒体平台。但这些巨头在开源生态系统中占据什么位置呢?

为了进一步理解这一点,让我们退一步,审视整体状况。我们在开源社区面临的困境就像一个跷跷板。随着贡献与使用之间的不平衡持续存在,我们正在接近一个不可逆转的临界点。贡献者越少,用户越多,跷跷板的倾斜度就越大,造成更大的不平衡,只有那些拥有大量资金支持的私人代码库的软件巨头才能竞争。我们目前正看到一个恶性循环,如果不加以解决,可能会失控。

这些软件巨头虽然有影响力,但往往有维护其软件大量部分为闭源的既得利益。这在很大程度上源于他们开发的技术的专有性质,这对他们的商业战略至关重要。闭源软件为这些公司提供了竞争优势,使他们能够保护其知识产权,并在产品的开发、质量和安全方面拥有更多控制权。

然而,这些软件巨头同时也是开源软件的最大消费者之一。他们常常将开源库集成到他们的产品中——而无需任何补偿——甚至将一些代码发布为开源。通过这样做,他们利用了开源开发的协作本质,并在开发者社区中赢得了善意。但这种共生关系并非没有复杂性和争议。著名科幻作家威廉·吉布森曾经说过,

“未来已经到来——只是尚未均匀分布。”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一张信息图显示了企业组织对开源软件的广泛使用。来源:TechTarget

这一观点在我们的开源生态系统中同样适用,在这里,软件巨头享受了大量的好处,而负担却并不均等分配。软件巨头从开源世界中获取所需,基于此构建自身需求,同时将其最有价值的代码保持私密,以不断扩大对较小开发者的竞争优势,这种情况太过简单。

以谷歌为例。虽然谷歌通过 Android 和 Chromium 等项目对开源社区做出了显著贡献,但其对某些开源项目的处理也遭到批评。谷歌决定在 Chrome 中阻止第三方 cookies,表面上是出于隐私原因,但这一决定却遭到开源社区一些人士的反对,他们认为这是一种巩固其在线广告市场主导地位的尝试。

亚马逊在其 AWS 云服务中使用 MongoDB 数据库软件是另一个有争议的案例。MongoDB 是一个开源数据库系统,在其许可协议中做出了修改,以回应其认为亚马逊在没有回馈社区的情况下利用其软件。这一事件引发了关于从开源软件中获益的公司是否有责任回馈社区的讨论。

这些软件巨头对开源开发者的招聘加剧了争议。一方面,这些开发者通常获得资源和支持,能够全职投入他们的开源项目,从而推动显著的进展。另一方面,这种招聘趋势有可能导致开源社区的“人才流失”,使得其他项目可用的开发者减少。

此外,这些软件巨头因其“封闭园区”而臭名昭著——在这种封闭的生态系统中,公司控制着用户体验的所有方面。虽然这可以为用户提供一致、流畅的体验,但也可能扼杀竞争和创新。较小的开发者可能会发现自己处于不利地位,无法进入这些生态系统或被迫遵守严格的规则。此外,这些封闭园区往往故意导致不同生态系统之间缺乏互操作性,给用户带来不便。

结果是更多的厂商锁定、更高价值软件的集中化,以及对开发者的体验造成了更大的负面影响。这显然是不可持续的。

为了说明这些封闭园区对软件生态系统的影响,可以考虑苹果的 App Store 政策,这些政策已成为持续争议的主要来源。批评者认为这些政策限制了竞争,并赋予苹果对其设备上的软件生态系统过度的控制权。

苹果的 App Store 在这种封闭园区模型下运作,具体来说,这意味着苹果对其平台上可以提供的内容进行控制,并制定了开发者必须遵守的某些规则和指南。其中一项规则是所有应用内购买必须通过苹果自己的支付系统,苹果会收取最高达 30%的佣金。这引起了一些应用开发者的不满,因为这可能显著减少他们的利润率。涉及这一政策的最著名争议是与热门游戏《堡垒之夜》的开发者 Epic Games 之间的争执。2020 年 8 月,Epic Games 尝试通过在游戏中实施自己的支付系统来绕过苹果的支付系统,导致《堡垒之夜》被从 App Store 下架。

这引发了 Epic 和苹果之间的法律战,这场法律战引起了大量关注,集中在苹果的 App Store 政策及其对应用开发者的影响上。这起案件可能对 App Store、类似平台以及整个封闭园区的未来运营产生重大而深远的影响。即使在一位联邦法官裁定苹果必须启用第三方支付选项并降低对某些合作伙伴的佣金之后,Epic Games 首席执行官蒂姆·斯威尼仍对结果不满意,表示:

“这里的问题是一个经典的垄断捆绑。你从硬件开始。苹果制造智能手机,并从中获利——这他们应得的。但接着他们强迫所有购买他们智能手机的用户只能通过他们的应用商店获得数字内容。他们阻止其他应用商店在被十亿终端用户拥有的硬件上与他们竞争。这是第一个捆绑,这完全阻碍了所有竞争和市场力量,这些力量本来会塑造更好的应用商店和更好的消费者交易。”

总之,虽然软件巨头在开源软件的发展和推广中扮演着关键角色,但他们与开源社区的关系复杂且多面。在开源软件使用不断激增的背景下,必须以促进开源生态系统的可持续性和鼓励软件巨头与开源社区之间健康的权力平衡的方式来应对这些复杂性。

资金不足的环境与资源短缺

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在是时候逆转开源软件中的资源短缺了。图像由作者生成,使用了 Stable Diffusion 和 Photoshop。

在一个多亿万富翁企业依赖软件作为运营命脉的世界中,那些软件的基础常常被忽视,甚至被明显忽略。这种困境在开源开发领域尤为明显,那里的资源稀缺,许多情况下几乎不存在。

开源开发中的资金不足问题几乎不是秘密。然而,它依然存在,不仅对开发者,对整个技术行业和依赖这些产品的广泛用户基础都是不利的。以 OpenSSL 为例。这个几乎对每个现代网络设备至关重要的开源项目,曾经每年仅收到 2000 美元的捐赠。Heartbleed 漏洞引起的关注使得捐赠增加到每年仍然微薄的 9000 美元。OpenSSL 团队表示,他们需要六名全职成员来从事该项目,而不是只有一名艰难平衡合同工作的成员来覆盖成本。

这样的资源稀缺必然影响软件质量、维护和新功能开发。当开源项目的维护者被压得喘不过气时,项目的质量往往会下降。有限的资源意味着投入到全面测试、漏洞修复和安全补丁上的时间和精力更少。

同样,当资源紧张时,新功能的开发常常被 relegated to the background。毕竟,当战斗是为了项目的生存和安全时,几乎没有带宽来考虑扩展或创新。这种限制阻碍了开源项目的增长,并阻碍了 heavily relies on them 的科技生态系统。

寻找开源项目资金的挑战由来已久,古老得如同开源本身。一些开发者通过 GitHub Sponsors 和 GitCoin 等平台,或通过与公司签订维护合同获得了一定成功。其他人则在公司中担任角色,由公司支付薪水以维护他们的库。然而,这些情况是例外而非常态,且通常不足以完全支持开源项目的维护和开发。

缺乏“一刀切”的解决方案使问题更加复杂。每个开源项目都是独特的,拥有自己的需求、挑战和愿景。因此,目前还不存在适用于开源软件的普遍资金模型。在行业为这种“免费”劳动设计出更有效的支持机制之前,我们应当准备好迎接更多开源开发者的公民抗命行为,他们将采取激烈的措施来强调他们的贡献。

终极问题在于可持续性。随着开源软件成为当今几乎每一件软件和连接设备的重要组成部分,显而易见,依赖于少数过度劳累且报酬不足的开发者并不是一种可持续的策略。这是一个亟待解决的难题,必须迅速解决,以保障开发者和数百万依赖他们工作的用户。

开源的悬崖:生存还是消亡?

鉴于这些挑战,思考开源的未来是自然的。从最初作为一个高尚的事业,免费向世界提供代码,赋权任何人进行构建,已转变为少数肩负维护和开发重担的人的愈加无回报的任务。曾经为全球利益而非利润构建软件的充满活力的精神似乎正在消退。但开源真的濒临灭绝吗?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一名男子思索着开源软件的消亡及其对他自身存在的深远影响。图像由作者生成,使用了 Stable Diffusion 和 Photoshop。

当前的开源状态无疑充满了财务约束、倦怠和差距。尽管开源项目被广泛使用和依赖,但这些资源的创作者和维护者常常未获得报酬。正如我们所指出的,像 Daniel Steinberg 这样的开发者,已经维护 cURL 将近三十年,仍继续无偿投入时间和专业知识。OpenSSL 团队也体现了这一现实,尽管他们的项目在现代网络中扮演着关键角色,但他们不得不寻求额外的工作来覆盖项目维护成本。

尽管如此,承认方程式的另一面至关重要。尽管面临这些巨大的挑战,开源的核心——它的社区——依然坚定不移。开发者们仍然继续为开源项目做出贡献,受到他们对开放协作精神的热情和承诺的驱动。正如 Marak Squires 和“left-pad”的开发者所示,开源贡献者之间有着强烈的所有权感和主动性。他们的抗议行为不仅仅是对挫折的表达,而是对他们提供的关键价值的有力提醒。

此外,仍然有积极变化的希望之光。认识到开源的重要性和独特挑战的倡议如 GitCoin 已经出现,旨在为开源开发者提供更直接的财政支持渠道。现在的问题是,这些措施是否能够在长期内充分维持开源生态系统。

然而,人们不能视而不见残酷的现实。持续的压力、资源匮乏和不断增加的期望正在付出代价。风险是显而易见的:如果这些条件持续下去,我们可能会目睹开源的衰退甚至终结,进一步将软件开发的创建集中到现有的软件巨头中。开源不仅仅是代码——它还包括背后的人。如果我们忽视对他们的支持,我们可能会失去这一充满活力、合作的社区的本质。

在这种背景下,开源的潜在衰退并不意味着免费代码的终结,而是意味着一个社区驱动的方法的垮台,在这种方法下,任何人都可以贡献、创新和分享,而无需价格标签。这样的损失将超越科技行业的影响——它会抑制推动我们数字时代的协作创新精神。

随着我们向前迈进,科技行业——以及整个社会——有必要重新评估我们如何重视和支持开源。开源的未来在很大程度上将取决于我们集体的行动和对保护这一宝贵资源的承诺。正如古老的谚语所提醒我们的,“你不知道自己拥有的东西,直到它不再存在。”让我们不要等到为时已晚。

朝着可持续的未来前进

鉴于我们所考察的严峻现实,显而易见,我们正处于一个重要的十字路口。开源是我们日常依赖的数字基础设施的核心。然而,当前的模式逐渐接近不可持续的边缘,制定一个有意义的前进道路的紧迫性在加剧。在我们踏上这一旅程时,我们必须重新点燃那些将开源提升为我们世界中不可或缺的一部分的指导原则:协作、社区以及对推动技术惠及每个人的共同承诺。

一个有前景的解决方案是敦促公司,即开源的主要受益者,认可并补偿代码背后的智囊团。期望个人无偿为开源贡献的思想是上一时代的遗留物。在开源支撑着万亿美元产业的时代,新的范式是必不可少的。公司必须投资于开源项目和那些使这些项目得以实现的天才个人。这可以通过以下方式完成:

  • 直接资助:组织可以为他们日常使用的项目建立资金支持。

  • 聘用维护者:可以招募开源开发者作为兼职或全职员工。

  • 分配员工时间:可以鼓励员工在工作时间参与开源项目。

政府机构也可以做出重要贡献。白宫最近对开源重要性的认可,源于 Log4J 事件,这是一个积极的步骤。然而,要产生真正的影响,这种认可必须伴随有意义的行动。政府可以为关键的开源项目提供财政支持,特别是那些具有显著安全影响的项目,或者激励公司这样做。他们还可以制定立法来保护开源贡献者的权利,并建立公平补偿的框架。

然而,前进的道路不仅仅涉及经济方面;还涉及尊重。开源贡献者应当因其劳动获得认可,这种认可不仅仅是在 README 文件中提及,而是实质性地承认他们所增加的价值。这种认可可以以多种形式体现,从在行业活动中展示贡献者,到给予他们在维护的项目中参与战略决策的机会。这样,贡献者可以从被视为志愿者转变为未来数字基础设施中的关键利益相关者。

个人贡献者同样扮演着重要角色。他们可以放大自己的声音,为自己的权利而战,并确保他们的劳动获得应有的价值。他们还可以选择支持那些遵循道德实践和优先考虑维护者福祉的项目。然而,最实际的解决方案可能是开源开发者开辟自己的成功道路。我想起了先锋发明家尼古拉·特斯拉的一句恰当的名言:

“现在属于他们;我真正努力工作的未来,属于我。”

如果你维护一个有价值的开源包却缺乏财政支持,为什么会这样?也许责任在于开源创作者制定简单的支付解决方案,并要求对他们的努力给予报酬,就像现有的软件巨头每天做的那样。

通往一个更可持续的开源生态系统的道路可能并不简单,但这是我们必须集体踏上的旅程。正如开源精神提醒我们的那样,我们的力量在于团结。作为维护者、贡献者、用户、公司和政府,我们每个人都有责任确保开源继续蓬勃发展,造福所有人。让我们致力于实现这一愿景,并培养一个不仅可持续,而且真正被重视的开源未来。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个可持续未来的愿景,由一支资金充足的开源开发团队的办公室描绘。图片由作者提供,使用稳定扩散和 Photoshop 生成。

最终思考:为开源铸造一个可持续的未来

回顾这篇文章的标题,开源开发中的危机是一个迫在眉睫的问题,需要我们立即关注。这不仅仅是关于挽救一个失败的系统,而是关于动员集体努力,体现团结、协作和追求共同利益的精神。开源社区在其最广泛的意义上代表了这种团结。但为了使这一愿景成形,我们需要解决社区当前面临的严峻现实。

就像任何危机一样,开源领域复杂而多样。由全球开发者贡献的丰富软件包和库推动了我们数字存在的一大部分。然而,它也面临着可能会破坏这一生态系统的危机。这种威胁不是外部的,而是内部的,由于一个相对较小的忠实维护者群体的无休止的、通常未付薪酬的工作,形成了不可持续的模型。这种困境既深刻又关系重大。如果不加以关注,它可能对软件开发的未来构成相当大的风险。

随着人工智能和机器学习模型编写越来越多的世界代码,我们现在必须解决这个问题。 如果不加以控制,我们可能会看到一个只有资金最充足的组织才能访问高质量代码的世界。这将是我们所知的免费和开源软件的终结。

虽然这看起来可能是一个悲观的前景,但它并不是末日的预兆。相反,它是对我们如果让这种不可持续的状况继续下去可能面临的后果的严厉警告。如果维护者被逼到极限或决定放弃他们的项目,未来的软件环境可能充满安全问题、操作缓慢以及丧失关键工具。

在这场危机中,软件社区的每个成员都有责任参与。作为用户,我们可以通过开发、文档编写或提供财务支持来回馈那些让我们受益的项目。公司也可以回报他们使用的项目,提供资金支持,或雇佣开源开发者来持续维护和改进他们的开源项目。政府可以在公共基础设施中承认开源的价值,并提供资助及其他支持形式,以帮助维持这些项目。

支持开源的责任是集体的。我们应该停止把开源视作理所当然,开始认可和奖励维护者们所做的重要工作。通过这样做,我们可以确保这一全球宝贵资源的持续健康和活力,这个资源是我们所有人都依赖的。

这是对开源社区中每一个利益相关者的号召:开发者、组织以及用户。最终,解决这一危机的成功取决于其社区成员——我们。如果你希望为这些问题的行业解决方案做出贡献,我鼓励你主动联系并展开对话。我们可以共同确保开源软件未来的可持续性和活力。

参考资料:

  1. 谁从开源维护者的工作中获益? www.techtarget.com/searchitoperations/feature/Who-profits-from-open-source-maintainers-work

  2. 开源开发者,他们免费工作,正在发现自己拥有力量

    techcrunch.com/2022/01/18/open-source-developers-who-work-for-free-are-discovering-they-have-power/?guccounter=1

  3. Epic Games 对苹果诉讼的裁决对 iPhone 用户意味着什么 www.npr.org/2021/09/10/1036043886/apple-fortnite-epic-games-ruling-explained

  4. Epic Games CEO Tim Sweeney 斥责苹果 App Store 对开发者的“伤害”

    www.macrumors.com/2022/05/26/epic-games-ceo-app-store-a-disservice/

多项式回归中的隐藏线性

原文:towardsdatascience.com/the-hidden-linearity-in-polynomial-regression-333f1bed7aa5

从两个角度更好地理解线性模型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Angela and Kezhan Shi

·发表于数据科学前沿 ·阅读时间 9 分钟·2023 年 3 月 17 日

在这篇文章中,我们将讨论这种观点:

多项式回归是线性回归的一种。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来自丹尼·穆勒Unsplash

初看之下,这个说法可能显得荒谬。多项式回归被称为非线性回归,而线性回归显然是线性的,这两个模型怎么可能被认为是相同的呢?

就像生活中的许多事物一样,你可以用不同的方式看待相同的事物,两个人可能会得出看似不同的结论。然而,我们往往忽略了答案并不是最重要的部分,而是你用来得出结论的方法、方法论或框架。我最近发表了一篇关于逻辑回归是回归模型还是分类模型的争论的文章。我提到了两个观点:统计学与机器学习。在这篇文章中,我们还将探讨这两种不同的多项式回归理解视角。

哦,有些人可能会说多项式回归只是一个理论模型,不容易付诸实践,因为将一个特征提升到高次幂并没有实际意义。通过这篇文章,你会发现这个原则的使用比你想象的要广泛,而且多项式的次数不应是唯一的超参数。

1. 线性回归和多项式回归的定义

首先,我们来看一下线性回归和多项式回归的定义。现在,我知道你可能已经非常了解这些定义,但当你阅读这些定义时,尝试找出两个模型的输入中有什么不寻常的地方。

1.1 定义线性回归

线性回归通常指的是普通最小二乘法(OLS)回归,它涉及最小化输出的预测值与实际值之间的平方差之和。

线性回归的方程可以表示为 y = w X + b。由于 X 是表示多个变量的矩阵,我们可以以这种方式展开函数:

y = w1x1 + w2x2 + … + wpxp + b

其中:

  • y 是因变量或输出

  • x1, x2, …, xp 是自变量或输入

  • b 是截距

  • w1, w2, …, wp 是因变量的系数

1.2 定义多项式回归

多项式回归将自变量 x 和因变量 y 之间的关系建模为 n 次多项式。结果是一个最适合数据点的曲线,而不是一条直线。

多项式回归的方程可以写作:

y = b0 + b1x + b2x² + … + bn*x^n

其中:

  • 再次强调,y 是因变量,

  • x 是自变量,

  • b0, b1, b2, …, bn 是系数,以及

  • n 是多项式的次数。

所以,多项式回归允许 x 和 y 之间建模非线性关系。

1.3 一个重要的方面:特征的数量

现在,你注意到之前的定义中有什么不同吗?我在互联网上搜索了这些定义,包括维基百科和大学课程,这种差异总是存在的。

  • 线性回归通常使用多个变量进行定义

  • 多项式回归通常只有一个特征变量。

在我看来,主要原因是多项式回归通常从统计学家的角度来看待。这就是为什么 numpy 包中的多项式回归拟合算法 polyfit 只允许一个特征。而 scikit learn 如何,我们稍后会看到。

无论如何,在今天的“机器学习”应用中,只使用一个特征来进行模型构建对实际应用而言是远远不够的。

当然,可以为多项式回归输入多个特征。这时称为多变量多项式回归,特征将分别提高到不同的幂,并且不同特征之间会有交互。

如果有 p 个特征,多项式回归的广义方程为 n 次方程(我将用 Latex 写出这个方程,以便你更好地阅读):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这种方法并不常见,也许是因为它复杂且不易使用。然而,你可以看到这个想法非常重要,因为它是建模变量之间更复杂关系的关键。我们将在文章后面看到如何以更优雅的方式转化这个想法。

2. 揭示和可视化多项式回归的线性

为了简化解释,我们将使用只有一个特征的多项式回归。然而,你可以很容易地想象这个分析可以推广到多个特征的多项式回归。

因此,在本节中,我们将特征变量称为 x。

2.1 线性性所指的内容

多项式回归是否是线性模型?答案在于我们认为这种线性是指哪些特征。

  • 多项式回归在变量 x 上是非线性的。

  • 但是如果我们将变量 x、x²、x³ 等视为特征变量,则多项式回归是线性的。为了简化抽象,我们可以使用 x、x_2、x_3 等表示这些特征。然后,我们可以对这些特征进行线性回归。因此,最终它是一个多变量线性回归!

为了澄清这一点,我们可以将多项式回归视为两个独立的步骤:

  • 特征工程:在这一步中,我们独立于模型创建多项式特征。

  • 线性回归:线性回归的适当模型将接受上述特征并为每个特征找到系数。

我发现将复杂模型拆解成小块以便理解非常有帮助。这就是为什么在 scikit learn 中,我们没有一个叫做 PolynomialRegression 的估计器,而是通过两步来完成。

  • PolynomialFeatures 在模块 preprocessing 中

  • LinearRegression 在模块 linear_model 中……哦等等,我们只需使用这个估计器吗?你将在接下来的部分中发现更多信息。

总之,有两个视角:

  • 多项式回归是一个模型,它以 x 为输入。然后它是对 x 的非线性模型。

  • 多项式回归不是一个独立的模型,而是通过将 x 转换为多项式特征,然后应用线性回归来构建的。

后者将解锁一些非常有趣的潜力,我们将在本文章中看到。但首先,让我们创建一个图来更好地说服自己这种线性。因为眼见为实。

2.2 可视化多项式回归:从曲线到平面

由于多项式回归是一种线性回归,因此我们首先需要了解如何可视化线性回归。我写了这篇文章来可视化线性回归,其中包含了不同数量和类型的变量。考虑以下可视化示例,你会如何使用其中之一来适应多项式回归的情况?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了可视化多项式回归,我们只会添加一个二次项,以使线性回归具有两个连续变量(x, x²),因此我们将看到一个 3D 图。我们无法可视化更多变量,但你可以想象。

让我们考虑一个简单的数据点集合(x, y),其遵循方程 y = 2 + x — 0.5 * x²,我们通常会创建以下图表来表示 x 和 y:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多项式回归 x, y 图 — 图片由作者提供

红线代表模型,蓝点代表训练数据集。

现在,让我们假设我们首先绘制一些 x 和 x²的值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多项式回归图 x 和 x² — 图片由作者提供

然后,我们通过为每个(x, x²)添加 y 值来创建一个 3D 图。使用 x 和 x²作为输入的线性回归模型随后是一个平面,也可以在 3D 图中表示如下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多项式回归是线性回归的 3D 图 — 图片由作者提供

我们可以通过改变视角,将几张图片合成一个 gif。如果你想获取创建此 gif 的代码及其他有用的代码,请通过以下链接在 Ko-fi 上支持我:ko-fi.com/s/4cc6555852

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多项式回归是线性回归的 3D 图 — 图片由作者提供

3. 多项式回归的机器学习视角

3.1 多项式回归的实际应用

各位数据科学家,坦白说,你们真的在实际应用中构建多项式回归吗?你们什么时候真正遇到多项式回归?试着回忆一下…对了,就是老师尝试解释回归问题中的过拟合时。下面是一个例子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多项式回归过拟合 — 图片由作者提供

从统计学家的观点来看,使用 numpy 时,我们已经提到只允许一个特征。因此,使用这个 polyfit 来创建实际模型是不现实的。

3.2 从机器学习角度看缩放和正则化

从机器学习的角度看,创建多项式回归不仅仅是将一个特征提升到不同的幂次。

首先,对于多项式回归的整体创建,我们已经提到这是分两步完成的:使用 PolynomialFeatures 进行预处理和使用 LinearRegression 进行模型部分。

现在,我们还需要提到一些特定的技术,比如缩放。实际上,当特征提升到非常高的次数时,数字变得非常大,以至于 scikit learn 无法处理。因此,进行缩放是更好的选择,这不仅是理论上的问题,更是实践中的需要。

我写了一篇文章讨论这一点:使用 Scikit-learn 的多项式回归:你应该知道的事项。

多项式回归的一个关键方面是多项式的次数,通常被视为模型的超参数。然而,我们不应忘记次数并不是唯一可能的超参数。实际上,当你分两步进行多项式回归时,更容易理解。

  • 多项式特征:我们可以自定义特征,甚至手动添加某些变量之间的交互。然后我们可以缩放特征或使用其他技术,如 QuantileTransformer 或 KBinsDiscretizer。

  • 模型:在模型部分,我们还可以选择像岭回归、套索回归,甚至支持向量回归这样的模型,而不是线性回归。

这是一个示例,说明超参数 alpha 对岭回归模型的影响。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多项式回归的过拟合与 alpha 岭回归 — 作者提供的图像

现在,你可能很高兴你刚刚学会了如何创建一些新的、更有效的模型。但它们仍然不够实用。也许你们中的一些人会发现这实际上是我们已经在做的事情,只不过方法不同……没错,就是核方法!

3.3 多项式核及其他

多项式回归的常见形式在实际中并不方便实现,但理论上,这是一种基于数学函数创建非线性模型的有效方法。另一种方法是创建神经网络。

一个原因是,当创建多项式特征时,特征数量可能会非常庞大。拟合线性回归可能非常耗时。这就是为什么支持向量回归或支持向量机会发挥作用,因为铰链损失函数允许通过仅保留所称的“支持向量”来“丢弃”许多数据点。

是的,核函数的概念通常与支持向量机或支持向量回归相关,但我们不应忘记这是一个独立的理论,这也是为什么在 scikit-learn 中我们有KernelRidge。理论上,我们也可以有 KernelLasso 或 KernelElasticNet。KernelLogisticRegression 是分类任务中的另一个例子。

结论

总结来说,我们探讨了多项式回归模型及其与线性回归的关系。虽然从统计学角度来看,它通常被视为针对一个特征的单一模型,但它也可以被看作是一个形式上的线性回归,其前面有一个特征工程部分,主要包括创建多项式特征,但这些特征需要进行缩放。此外,我们还可以将其他模型如岭回归、套索回归或支持向量机应用于这些多项式特征,以提升其性能。

最后,多项式回归也作为数学函数模型中特征映射技术的一个典型例子。 进而引出了核函数,这些函数可以建模特征与目标变量之间的非线性关系。

(向量)索引的隐藏世界

原文:towardsdatascience.com/the-hidden-world-of-vector-indexes-f320a626c3dd?source=collection_archive---------2-----------------------#2023-11-15

你总是想了解关于(向量)索引的所有信息,但又害怕询问。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Olivier Ruas

·

关注 发表在 Towards Data Science · 11 分钟阅读 · 2023 年 11 月 15 日

自从 ChatGPT 公开发布以来,几乎没有一天不讨论 LLM、RAG 和向量数据库。技术界对 LLM 的可能性感到兴奋,这被视为改变我们生活的最新技术:对一些人来说是最好的,对另一些人来说是最坏的。与此同时,检索增强生成(RAG)作为一种动态解决方案应对不断变化的知识领域。但在幕后有一个关键的角色:向量索引和数据库。

尽管 LLM、RAG 和向量数据库被广泛讨论,但支持这些创新的(向量)索引却鲜为人知。在这篇文章中,我们将揭示索引的概念,帮助你理解索引如何让在浩瀚的数据集中查找信息变得轻松自如。

1. 什么是索引?

我们都遇到过这种情况。你正在你朋友家见面。她给你的唯一信息是“我住在地铁镇区”。当你到达所说的地铁镇区时:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

摄影师 Manson Yim 作品,来自 Unsplash

好吧,没有任何帮助的话,找到她的地方会花费一段时间!如果入口处有一张地图就好了……

这正是索引的目的:如何快速找到人们(或数据)的位置。

黄页 是一个索引,允许你根据人们的名字查找他们的住址。

索引是一种数据结构,用于提高数据检索操作的速度。换句话说,它是你组织信息的方式,以便你能够快速找到你所寻找的内容。

数据是使用进行索引的。排序基于键,且可以使用多个键。在黄页中,第一个键是姓氏,第二个键是名字。

索引不一定存储所有数据。它只关注于关键部分,以便快速定位和访问整个数据中的特定数据片段。

书籍末尾的索引是一个很好的例子:它向你展示了如何通过单词找到页码,因此它将每个单词映射到页码,而不是句子本身。

索引是搜索引擎和数据库的背后:它们在提高数据检索操作的效率和速度方面发挥了关键作用。

数据组织的选择至关重要,且取决于具体的上下文。

例如,在黄页的例子中,如果索引是按电话号码组织的,而你只知道名字,那么找到他们的地址将会相当具有挑战性!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

信息在那里;你最终会找到它,但所需的时间会让你甚至不愿尝试。另一方面,使用黄页,只需一眼查看页面,你就可以准确知道是否需要往前或往后查找!字典顺序允许你进行大致对数级的搜索。这就是为什么索引的选择至关重要。

一般来说,索引有一个非常明确的目的:它可以被设计用于快速插入或检索数据,或者进行更复杂的查询,比如范围查询(“检索从今年 5 月 1 日到 8 月 15 日之间的所有数据”)。优化操作的选择将决定索引的样子。

在线事务处理(OLTP)数据库与在线分析处理(OLAP)数据库之间的主要区别在于它们想要优化的操作:OLTP 侧重于对行的操作(例如更新条目),而 OLAP 则侧重于对列的操作(例如计算平均值)。这两种数据库不会使用相同的索引,因为它们的操作目标不同。

1.1 索引和数据结构之间有什么区别?

💡数据结构是组织和存储计算机数据的一种方式,以便可以高效地访问和操作数据。这样解释,索引和数据结构之间的区别有时很难看出,那么它们的区别是什么?索引专注于插入、搜索、排序或过滤数据。数据结构则更为通用。

索引是使用数据结构构建的,但通常不存储数据本身。

如果你考虑一个电影数据库,你不想在每次索引更新时移动大型文件:你存储的是指针,而不是文件本身。指针可以被看作是文件在磁盘上的地址。

现在你对什么是索引有了一个大概念,让我们专注于数字示例。以下是一些常见的(数字)索引:

  • 倒排索引

  • 哈希索引

  • B 树

  • 局部敏感哈希(Locality-sensitive-Hashing, LSH)。

为了更好地理解索引如何工作,让我们探讨一种最基本的索引:倒排索引。

1.2 倒排索引

倒排索引是一种在搜索引擎中使用的标准索引。

它旨在快速找到信息:其目标是优化检索时间。

简而言之,倒排索引将内容映射到它们的位置,有点像书籍的索引。

它通常用于将特征映射到具有该特征的数据。

例如,假设你想知道谁住在同一栋楼里。

首先,你应该有一个表,其中对于每个名字,你都有建筑物(这个表会帮助你找到爱丽丝):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个表在每次有人到达或离开地区时都会更新。

如果你想找到谁住在这个表中的 B 栋楼,你必须遍历整个表。

虽然在技术上是可能的,但由于计算时间会随着表的大小线性增加,因此它不会扩展。

想想这个地区的公寓数量:如果你想通过一个个检查所有的档案来找到所有住在 B 栋楼的人,这会花费很长时间!

另一种解决方案是使用倒排索引:你维护一个表,其中建筑物作为键并与住在其中的人连接:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个表与前一个表同时维护:添加或删除新人的成本比以前稍高,但检索时间几乎缩短为零!

要查找谁住在 B 楼,你只需要访问该表的“Building B”这一行,就能得到结果!

反向电话查询是电话号码的倒排索引!

实际上,倒排索引要复杂一些,因为它们处理的数据比(用户,兴趣)对要复杂得多。索引通常存储为哈希表

尽管倒排索引相对简单,但它们是搜索引擎中最常用的索引之一。

1.3 索引和数据库

数据库是建立在索引之上的。索引通过存储指针或引用来增强数据库的数据检索。它不存储实际数据,而是作为一种快速访问数据的手段,大大提高了查询性能。

数据库不仅仅是索引,它是一个全面的数据管理系统。它存储、组织和管理实际数据,维护数据完整性,处理事务,并提供超越索引的各种功能,使其成为数据存储和操作的核心枢纽。虽然索引加快了数据库中的数据检索,但数据库作为数据存储、管理和检索的完整生态系统存在。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总结来说,索引就像数据库中的指示牌,指引你找到所需的数据。相反,数据库是实际数据所在的存储库,并配备了各种工具和功能来管理和操作这些数据。

根据你的使用场景,你可能不需要整个数据库,只需要索引,因为管理数据的覆盖层可能会很昂贵。

2. 向量索引和向量数据库

2.1 什么是向量索引?

简而言之,向量索引就是键是向量的索引

在我们的倒排索引示例中,键是单词(爱好和名字)。在向量索引中,我们处理的是向量:固定大小的数字序列。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

两个大小为 4 的向量。

我知道,我知道,我能听到你说,“我数学不好,我不想使用向量”。

不用担心,你不需要擅长数学就能理解向量索引。

你只需要知道的是,使用向量可以依靠强大且优化的操作。

你可能会问自己第一个问题是,“你的向量有什么有趣之处”?

假设你终于找到了 Alice 的住处,现在你想找点东西吃。你可能会想找最近的餐馆。你会找一份餐馆列表,结果得到一张包含餐馆、特色菜和地址的表格。让我们来看看你可以找到的信息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这看起来没什么帮助,对吧?你唯一的选择是逐一扫描列表,阅读地址,并手动评估它与你的距离有多近。我们可以尝试自动化最近地点的排名,但基于原始地址计算距离是困难的(两条街道可能相近但名称不同)。

不过,假设你现在有一个表,其中 GPS 位置表示每个餐馆的精确纬度和经度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每个位置是一个大小为 2 的向量。利用这些向量,你可以通过一个简单的 -而且快速- 数学操作轻松计算到自己位置的距离。然后你可以迅速检索到最近的那些,也就是说,离你最近的那个!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在你可以轻松找到离你最近的餐馆了!

有趣的是,通过直接按向量(在这个例子中是 GPS 位置)索引表,我们可以优化索引,使得查找距离最小的条目变得极其快速。

向量索引是专门设计用于高效检索最接近或最相似于给定向量的向量的索引。这些索引依赖于优化的数学操作来高效地识别最相似的向量。

在我们的例子中,使用的距离是经典距离,但对于所有现有的距离或相似性指标都有索引,例如余弦相似性度量。

局部敏感哈希(LSH) 是最广泛使用的索引之一,用于在数据集中找到 k 个最相似的数据点,并且它可以与不同的距离或相似性度量一起使用。

“这很好,但我在数据库中没有使用向量”。

这就是激动人心的部分:你可以将任何东西转换成一个向量。

仅仅使用二进制表示会很低效,因为它可能包含噪声,因此找到能够保留数据特征的表示是至关重要的。

将不同的信息表示为向量以使用向量索引已经成为提高系统效率的标准方法。向量化已经成为一门艺术。

例如,如果你有一个图像数据集,并且想要一个可以找到与给定图像最相似的图像的数据库,你可以使用图像的 SIFT 描述符。

2.2 向量索引和向量数据库之间有什么区别?

向量索引和向量数据库之间的区别就像索引和数据库之间的区别一样:索引旨在快速找到数据的位置,而向量数据库使用向量索引快速执行检索查询,但它们还存储和维护数据,同时提供附加操作和属性。

3. LLMs 和 RAGs 之间的联系是什么?

现在你已经了解了向量索引,你可能会想为什么关于 LLMs 和 RAGs 的讨论也涉及到向量索引。要理解原因,我们首先快速解释一下什么是检索增强生成,或者说 RAG。RAG 作为 LLMs 固有局限性——即知识有限性——的巧妙解决方案。

LLMs 只知道它们接受训练的数据。提高它们知识的一种技术是提示工程,即将额外的数据整合到查询提示中:“给定这些数据{data},回答这个问题:{question}”。

尽管有效,但这种方法面临一个新挑战:可扩展性。不仅提示的大小有限,包含的数据越多,查询的成本也就越高。

为了克服这个问题,检索增强生成通过只插入最相似的数据来限制数据的数量,这就是向量索引发挥作用的地方!

它的工作原理是:所有文档最初都通过 LLMs(1)转换为向量。具体来说,是 LLM 的编码器部分被使用。

这些向量被用作在向量索引中索引文档的键(2)。

在进行查询时,查询会使用 LLM 进行向量化(3)。然后,将结果向量在向量索引中查询,以检索最相似的文档(4)。这些文档随后会通过提示工程(5)来回答查询。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

检索增强生成(RAG)依赖于 LLMs 和向量索引。

就这些!

正如你所见,类似于 LLM,向量索引在 RAGs 中也占据着核心位置。

有些人更喜欢使用向量数据库而不是向量索引。这在你想在多个应用中重用相同数据时没问题。然而,如果你主要关注的是检索效率或在每个应用中定义索引的灵活性,那么单个向量索引通常更简单、更快速。

结论

恭喜那些勇敢地读到这里的人!我相信你现在已经具备了参与关于 LLMs 和 RAGs 的热情讨论所需的所有背景知识。

索引在数据检索中扮演着核心角色。由于数据检索可能仍将是数据技术中的关键组成部分,因此理解包括向量索引在内的索引是至关重要的。

如果你想了解更多高级索引,我建议你阅读我关于 LSH 的文章。如果你想了解一些更实用的内容,并且对实时检索增强生成(RAG)的实际应用感兴趣,可以考虑探索LLM-app,在这里你可以亲身体验这些技术的力量。

公有云上的机器学习工具层次结构

原文:towardsdatascience.com/the-hierarchy-of-ml-tooling-on-the-public-cloud-ed387cac3c27?source=collection_archive---------11-----------------------#2023-03-21

并非所有机器学习服务都是一样的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Nathan Cheng

·

关注 发表在 Towards Data Science · 8 分钟阅读·2023 年 3 月 21 日

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

机器学习系统中的隐藏技术债务。图片来自Google Developers

# 1 公有云上的机器学习服务

并非所有机器学习服务都是一样的。作为一名在公有云上工作的顾问,我可以告诉你,人工智能(AI)/机器学习(ML)工具在三大公有云——Azure、AWS 和 GCP——上可供选择的范围广泛。

处理和综合信息的潮流可能让人感到不知所措,尤其是当这些服务不断推出新功能时。

想象一下,向外行解释选择哪个平台,并说明为什么选择这个特定工具来解决你的机器学习问题,将会是多么棘手的事情。

我写这篇文章是为了帮助其他人以及我自己缓解这个问题,以便你能清晰简洁地了解公共云提供了什么。为了简化起见,我将在整个文章中将 AI 和 ML 交替使用。

# 2 建立定制机器学习系统……应该是最后的选择

在我们深入工具比较之前,先来了解一下为什么我们应该使用公共云上的托管服务。这个问题是合理的,值得质疑——为什么不从头开始构建自己的定制基础设施和机器学习模型?为了回答这个问题,我们来快速看看机器学习的生命周期。

下面的图示展示了一个典型的机器学习生命周期(这个循环是迭代的):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

机器学习生命周期。图片来源:作者

正如你所看到的,整个生命周期有很多部分需要考虑。

Google 发表的一篇著名论文显示,在构建可维护的生产环境中的机器学习模型时,投入的少量精力是编写模型训练代码。

这种现象被称为生产环境中机器学习系统的隐性技术债务,也被业内称为机器学习运维(MLOps),这是一个涵盖上述技术债务的统称。

下面是一个支持上述统计数据的视觉解释,改编自 Google 的论文

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

机器学习系统中的隐性技术债务。图片来源:Google 开发者

我不会详细解释生命周期中的每个阶段,但这里有一个总结的定义列表。如果你有兴趣了解更多,我推荐阅读《机器学习设计模式》第九章关于机器学习生命周期和 AI 准备性的详细解答。

机器学习生命周期总结定义:

  1. 数据预处理 —— 为机器学习训练准备数据;数据管道工程

  2. 特征工程 —— 将输入数据转化为与机器学习模型学习目标密切对齐的新特征

  3. 模型训练 —— 训练和初步验证机器学习模型;迭代算法,进行训练/测试分割,执行超参数调优

  4. 模型评估 —— 根据预定的评估指标评估模型性能

  5. 模型版本控制 — 模型工件的版本控制;模型训练参数、模型管道

  6. 模型服务 — 通过批处理或实时推理提供模型预测

  7. 模型部署 — 自动构建、测试、部署到生产和模型重新训练

  8. 模型监控 — 监控基础设施、输入数据质量和模型预测

不要忘记平台基础设施和安全性!

ML 生命周期不考虑支持平台基础设施,这些基础设施必须在加密、网络和身份与访问管理(IAM)方面保持安全。

云服务提供托管计算基础设施、开发环境、集中 IAM、加密功能和网络保护服务,这些可以实现与内部 IT 政策的安全合规 —— 因此你真的不应该自己构建这些 ML 服务,而是利用云的力量将 ML 能力融入你的产品路线图。

本节说明了编写模型训练代码只是整个 ML 生命周期中的一个相对微小的部分,实际的数据准备、评估、部署和生产中的 ML 模型监控都非常困难。

自然地,结论是构建自己定制的基础设施和 ML 模型需要相当的时间和精力,这样做的决定应当是最后的手段。

# 3 ML 工具层级

这里是利用公共云服务来填补空白的地方。这些超大规模提供商主要提供两种服务;ML 工具层级:

  • 🧰 AI 服务。或者:
  1. 🔨 **预训练标准** - 仅使用基础模型,无法通过带来自己的训练数据进行自定义。

  2. ⚒️ **预训练可定制** - 可以使用基础模型,且通过带来自己的训练数据进行可选定制。

  3. ⚙️ **带来自己的数据** - 强制要求带来自己的训练数据。

  • 🪛 ML 平台。

荣誉 AI 服务提及

对于那些阅读此帖的更敏锐的读者,我故意省略了一些在层次结构中的荣誉 AI 服务提及:

# 3.1 ML 平台 🪛

我们将首先讨论 ML 平台,然后讨论 AI 服务。该平台提供 MLOps 所需的辅助工具。

每个公共云都有自己版本的 ML 平台:

它适合谁?

就角色而言,这是为拥有内部数据科学家资源的团队准备的,他们希望使用自己的训练数据构建自定义的最先进(SOTA)模型,并开发框架以在 ML 生命周期中进行自定义 MLOps 管理。

我该如何使用它?

从需求角度来看,业务用例需要他们设计一个自定义 ML 模型实现,而 AI 服务在 3.2 节 中无法满足这些能力。

在寻找公共云上的服务时,这不应该是你的首选。

即使有了 ML 平台,仍然需要投入大量时间和精力来学习 ML 平台的功能,并编写代码以使用超大规模软件开发工具包(SDKs)构建自定义 MLOps 框架。

相反,请首先查看下一节 3.2 中的 AI 服务,看是否能满足你的需求。

该服务提供了哪些技术能力?

当你使用云平台时,你可以获得一个完全由超大规模管理的环境,否则你可能会为此抓狂:

  1. 托管计算基础设施 — 这些是具有默认环境的机器集群,包含普遍存在的内置 ML 库和云原生 SDK。计算资源可用于分布式训练,或为批量和实时预测提供模型端点。

  2. 托管开发环境 — 以笔记本的形式提供,或者通过你选择的 IDE,只要它与 ML 平台集成。

这些工具使数据科学家和 ML 工程师能够完全专注于 ML 生命周期,而不是基础设施配置和依赖管理。

内置库和云原生 SDK 使数据科学家能够编写自定义代码,在整个 ML 生命周期中实现更无缝的工程。

下表显示了每个云 ML 平台的技术特性:

ML 平台比较表。Gist 由 作者 提供。

# 3.2 AI 服务 🧰

接下来,我们将讨论 AI 服务。

它们使用低代码/无代码的方法来促进 ML 开发,并减轻管理 MLOps 的开销。

Jeff Atwood 对这些服务的总体论点如下:

最好的代码是没有代码。

每一行你自愿编写的代码,都是需要调试的代码,需要阅读和理解的代码,需要支持的代码。每次你编写新代码时,都应该是勉强的,在压力下,因为你已经完全耗尽了所有其他选项。

这适合谁?

就人员而言,这些适用于没有以下资源的团队:

  1. 内部数据科学家资源。

  2. 使用自己的训练数据训练自定义 ML 模型。

  3. 投资资源、精力和时间来端到端地工程化一个自定义 ML 模型。

我该如何使用?

从需求角度来看,ML 业务应用场景可以通过云提供商的 AI 服务能力来满足。

目标是通过利用大规模服务商的基础模型和训练数据将 ML 功能添加到产品中;因此,团队可以优先开发核心应用程序,通过从 API 端点检索预测结果与 AI 服务集成,并最终在模型训练和 MLOps 上花费最少的精力。

该服务提供了什么技术能力?

我们将根据 AI 服务提供的技术能力组织以下比较表。这与 ML 业务应用场景密切相关,但应有所区分。

例如,Amazon Comprehend 服务提供了文本分类能力。该能力用于构建业务应用场景模型,如:

  1. 客户评论的情感分析。

  2. 内容质量审核。

  3. 将多类项分类到自定义定义的类别中。

对于某些 AI 服务,技术能力和业务应用场景完全相同;在这种情况下,AI 服务是为解决该特定 ML 业务应用场景而构建的。

行业特定版本的 AI 服务

请注意,我已经排除了或避免提及行业特定版本的 AI 服务。只需知道,大规模服务商训练模型以在这些领域实现更高的模型性能,您应该在特定行业或领域使用它们,而不是通用版本的服务。

这些服务的显著提及包括 Amazon Comprehend MedicalAmazon HealthLakeAmazon Lookout for**{domain}**Amazon Transcribe Call AnalyticsGoogle Cloud Retail Search 等。

以下图例和表格展示了每个云 AI 服务的技术能力:

  • 🔨 **预训练标准** - 仅使用基础模型,无选项通过自定义训练数据进行定制。

  • ⚒️ **预训练可定制** - 可以使用基础模型,并通过提供自己的训练数据进行可选的定制。

  • ⚙️ **自带数据** - 必须提供自己的训练数据。

**--- 语音 ---**

语音 AI 比较表。摘要由 作者 提供。

**--- 自然语言 ---**

自然语言 AI 比较表。摘要由 作者 提供。

**--- 视觉 ---**

视觉 AI 比较表。摘要由 作者 提供。

**--- 决策 ---**

决策 AI 比较表。摘要由 作者 提供。

**--- 搜索 ---**

搜索 AI 比较表。摘要由 作者 提供。

# 4 个进一步阅读的主题

在这篇文章中,我们已经涵盖了公共云提供的 ML 服务的广泛内容,但在构建 ML 系统时,还有其他概念需要考虑。

我鼓励你探索并找到你自己的答案,尤其是那些未被讨论的概念,因为 AI / ML 正在越来越深入地融入我们使用的产品中。

三个公共云提供哪些 ML 工具以实现以下功能?

  • 模型数据血统和来源

  • 模型目录

  • 预测后地面真实标签的人工审核

  • 处理视频数据的模型

  • 执行通用回归和分类的模型

特别感谢 / 参考资料

特别感谢以下资源的作者和创作者,他们帮助我撰写了这篇文章:

ML 工具

AI 服务

ML 平台

开源 LLMs 的历史:更好的基础模型(第二部分)

原文:towardsdatascience.com/the-history-of-open-source-llms-better-base-models-part-two-6ca51ae74ebe

如何让 LLaMA、MPT、Falcon 和 LLaMA-2 使开源 LLMs 声名鹊起…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Cameron R. Wolfe, Ph.D.

·发表于 Towards Data Science ·阅读时间 16 分钟·2023 年 11 月 18 日

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(照片由 Iñaki del Olmo 提供,刊登在 Unsplash)

对大型语言模型(LLMs)的开源研究极其宝贵,因为它旨在使这一强大而有影响力的技术民主化。尽管开源 LLMs 现在被广泛使用和研究,但这一领域的研究在最初遇到了一些难以克服的困难。具体来说,开源 LLMs 最初表现不佳,并遭到了大量批评。在本概述中,我们将探讨一系列研究,这些研究通过让高性能的预训练 LLMs 对所有人开放,改变了这种局面。由于预训练语言模型的成本极高,我们将研究的模型尤其具有影响力。在这些高性能基础模型创建并发布后,许多人能够以极低的额外成本使用这些模型进行研究。

“考虑到训练方法的表面简单性,LLMs 的能力确实非常出色。” — 摘自 [14]

当前系列。 本概述是关于开源 LLM 历史的三部分系列中的第二部分。系列中的第一部分概述了创建开源 LLM 的初步尝试。在这里,我们将研究目前可用的最受欢迎的开源基础模型(即已经预训练但未经过微调或对齐的语言模型)。下一次,我们将探讨如何微调或对齐这些模型以创建各种有用的应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源于 [10, 12, 14, 15])

开源 LLM 的早期日子

在本系列的第一部分中,我们看到早期的开源 LLM 研究结果提出了几个重要的基础模型,例如 OPT 和 BLOOM。然而,这些模型普遍被认为相比于闭源的预训练模型(例如 GPT-3)表现较差。我们该如何解决这个问题? 首先,我们需要深入了解 LLM 的训练过程。

训练流程。 LLM 的训练分为几个步骤,如下图所示。首先,我们在大量原始文本上对模型进行预训练。然后,我们使用如 SFT 和 RLHF 等技术进行对齐。最后,我们可以进行进一步的微调或上下文学习,将 LLM 专门化为特定任务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(由作者创建)

最近,我们已经看到有力的实证证据表明,大多数语言模型的知识是在预训练过程中获得的。对齐过程只是教会模型如何正确地格式化或展示这些在预训练过程中获得的知识。正如 LIMA [3] 所提出的,这个观点被称为“表面对齐假说”。尽管这个假说似乎与本概述的主题并不完全相关,但我们从中学到了一些重要的东西——经过不足预训练的模型不太可能通过微调或对齐“修复”

“模型的知识和能力几乎完全在预训练期间获得,而对齐则教会它在与用户互动时应使用哪个子分布格式。” — 引自 [3]

解决方案是什么? 鉴于最初的开源 LLM 性能较差,很快就明确了社区需要从头开始重新创建更高质量的基础模型,才能取得任何进展。此外,这些模型还需要在更多的数据上进行预训练,以提高其性能。由于预训练成本极高(特别是当数据量很大时),这种努力并不简单。创建更好的开源基础模型必须由拥有足够资金的组织进行(例如,MetaMosaicML),这些组织能够支付训练这些模型的费用,并将其免费提供给社区中的其他人。

朝着更好的基础模型迈进

开源 LLM 的性能最初过于差劲,不足以支撑广泛使用和探索,但这个问题很快得到了解决。在这里,我们将回顾几种通过提供强大的预训练 LLM 来改变这一局面的模型。

LLaMA:开源质量的飞跃

LLaMA [1] 是首批发布的高性能且开源的预训练 LLM 之一。然而,LLaMA 不仅仅是一个单一的模型,而是一组不同的 LLM,其规模从 70 亿到 650 亿参数不等。这些模型在性能和推理效率之间实现了不同的权衡。尽管 LLaMA 不能用于商业用途(即仅限于研究),但它仍然是一个具有深远影响的提案,推动了开源 LLM 研究的多个方向。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [1])

数据。 受到 Chinchilla [2] 的启发,LLaMA 模型在一个包含超过 1.4 万亿个文本标记的语料库上进行预训练。这个预训练数据集明显大于任何之前的开源 LLM。数据的来源和分布如上所示。有趣的是,LLaMA 完全使用公开可用的数据源进行预训练,这意味着任何拥有足够计算资源的人都可以复制整个预训练过程。

“GPT-4 从各种许可的、创造的和公开可用的数据源中学习,这些数据源可能包括公开可用的个人信息。” — 引自 GPT-4 博客

鉴于许多专有的大型语言模型(LLMs)是使用内部数据进行训练的,而这些数据并不公开,因此这种特性尤为可取。简单来说,LLaMA 是在多个方面朝着更高透明度和开放性迈出的重要一步。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [1])

性能提升。 与其前身相比,LLaMA 在开源 LLM 的性能上有了巨大的飞跃。尽管如此,其质量仍落后于顶级专有 LLM(例如,ChatGPTGPT-4),但我们应当记住 LLaMA 模型尚未进行对齐。值得注意的是,LLaMA-13B 的性能与 GPT-3 [3] 相当,而 LLaMA-65B 在多个情况下超越了 PaLM [4],这表明 LLaMA 套件的性能与其他广泛使用的基础模型相当。详细的指标见上表。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [5, 6, 7, 8])

开源爆发。 LLaMA 提案中最有趣的方面之一是随之而来的开源 LLM 研究浪潮;见上文。在 LLaMA 模型的权重公开后,开源研究社区迅速开始发布各种不同的模型变体和软件包。这些进展包括从 LLaMA 的微调版本到一个用于在笔记本电脑上高效运行任何 LLaMA 模型的 C++ 库。这些进展真正展示了研究开放性的美好。我们仅仅用了几周时间,就从通过 API 互动这些强大的模型,转而在我们的笔记本电脑上运行它们!

MPT:高质量、商业化和开源的 LLM

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [10])

尽管 LLaMA 令人印象深刻,但该套件中的模型都无法用于商业应用——它们仅从研究的角度具有价值。幸运的是,LLaMA 的提案很快被 MosaicML 开发并发布的商业可用(即,按照 Apache 2.0 许可 发布)的 MPT 套件所跟进。首先发布的是 MPT-7B [9],它引起了大量关注(即,它基本上是 LLaMA-7B 的商业可用替代品!)。实际上,在更大的 MPT-30B [10] 模型发布之前,MPT-7B 在 HuggingFace 上的下载量超过了 300 万次!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [9, 10])

这两个模型之间的主要区别是:

  1. 它们使用略有不同的数据混合进行预训练;见上文。

  2. MPT-30B 采用了更长的上下文长度,达到 8K 令牌。

然而,这些模型都表现出色,并可以用于商业应用,这使它们在人工智能社区中变得非常受欢迎。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [9])

MPT 是否符合炒作? 尽管 LLaMA 显著提升了开源 LLM 的最先进性能,但 MPT 套件与此性能不相上下。特别是,MPT-7B 在各种标准基准测试中与 LLaMA-7B 的表现相匹配;见上文。更进一步,MPT-30B 的表现趋向于与 GPT-3 相当。与同样大小的开源模型(例如 LLaMA-30B 和 Falcon-40B)相比,MPT-30B 的表现略逊一筹;见下文。然而,它在与编码相关的任务中优于这些模型,并且可以在单个 GPU 上运行(通过量化)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [10])

MPT 变体。 除了预训练的 MPT-7B 和 MPT-30B 模型,还发布了各种微调的 MPT 模型,例如 instructchat 版本的 MPT 模型。此外,通过对具有 64K token 上下文长度的数据进行微调,还创建了 “StoryWriter” 版本的 MPT-7B。鉴于预训练 LLM 比微调要昂贵得多,因此可以以边际成本创建各种不同的微调 MPT 变体;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [9])

但等一下…还有更多! MPT 模型非常有用(尤其是对于从事商业应用的人),但这些模型还伴随着一整套软件(即,LLM 工厂),由 MosaicML 发布。这些开源代码可以用于预训练和微调 MPT 模型,使 MPT 套件成为探索 LLM 特殊用例的极其宝贵的工具。

Falcon:在开源性能方面达到新高度

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [1])

尽管在开源 LLM 领域取得了许多进展,但可用的模型在性能上仍然落后于专有 LLM 一段时间。Falcon 套件的提出 [11] 是开源替代方案首次真正与专有 LLM 的质量相匹敌。Falcon 提供了两种变体 — Falcon-7B 和 Falcon-40B。除了商业许可外,这些 Falcon 模型由于在大规模、自定义策划的语料库上进行预训练,表现非常出色。值得注意的是,Falcon-40B 的 instruct 变体在 OpenLLM 排行榜 上连续几个月是表现最佳的模型(差距显著)。

“挑战现有的数据质量和 LLM 信念,仅凭经过适当筛选和去重的网络数据训练的模型可以匹敌使用策划数据训练的模型。” — 来自 [12]

从网络中策划数据。 Falcon 模型是在一个名为 RefinedWeb [12] 的大规模文本语料库上训练的,该语料库包含超过 5 万亿个标记的文本。实际上,仅有 1.5 万亿个标记和 1 万亿个标记的 RefinedWeb 被用于分别预训练 Falcon-7B 和 Falcon-40B。尽管大多数 LLM 是在公开策划的数据源上进行预训练的,但 Falcon 的作者选择仅使用来自网络的数据(即 CommonCrawl)构建自己的预训练数据集。为筛选这些数据,创建了一个新的流程,强调简单但有效的组件;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12, 13])

RefinedWeb 语料库表明,可以从网络中高效策划出大量高质量的文本数据——超出了以前探索的数据集的规模。在应用过滤后,基于这些数据训练的模型甚至可以超越在策划数据源上训练的类似模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12])

用于训练 Falcon-7B 和 Falcon-40B 的确切数据集如上所示。值得注意的是,Falcon-7B 仅在英语数据上进行训练,而 Falcon-40B 的预训练集中则包含了各种欧洲语言的数据。

新的 SOTA。 目前尚未发布关于 Falcon LLM 的任何出版物。因此,对这些模型的唯一正式评估是通过 OpenLLM 排行榜进行的,其中 Falcon-40B 模型表现相当不错。特别是,Falcon-40B-Instruct 曾是领先的模型,显著超越其他模型;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 Open LLM 排行榜)

从质量上看,一些从业者声称 Falcon-40B 似乎不如 LLaMA 基础模型。尽管了解这些评论是有用的,但这些证据是轶事性和主观的。在标准化的自然语言基准测试中,Falcon LLM 的表现非常出色,使其在开源模型中长时间保持最先进的性能。

LLaMA-2: 当前的最先进技术

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [14])

尽管 Falcon-40B 曾是领先的开源 LLM,但最近发布的 LLaMA-2 模型套件已使该模型失去领先地位。与 LLAMA-1 类似,LLaMA-2 [14] 包含多个不同的 LLM,其规模从 70 亿到 700 亿参数不等,并仅使用公开数据进行预训练。LLAMA-2 模型既有预训练版本也有微调版本6,但由于我们专注于开源基础模型,本文仅涵盖预训练模型。

“已经有公开发布的预训练 LLMs(例如 BLOOM,其性能与封闭预训练的竞争对手如 GPT-3 和 Chinchilla 相当,但这些模型都不适合作为封闭产品 LLMs 的替代品,例如 ChatGPT、BARD 和 Claude。” — 来自 [14]

LLaMA-2 通过发布一套在大规模数据集上进行预训练的更高性能基础模型,继续缩小开源和闭源语言模型之间的性能差距。正如我们将看到的,这些模型仍未达到专有模型的质量,但比之前的任何开源模型都要接近得多。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [14])

它有什么不同? LLaMA-2 采用了一种与其前身非常相似的方法,除了几个小的(但影响深远的)区别。首先,LLaMA-2 模型在超过 40%更多的数据上进行预训练——总共 2 万亿个标记,而 LLaMA-1 为 1.4 万亿个标记。此外,LLaMA-2 模型使用稍长的上下文长度进行训练,较大的模型在其底层架构中使用了分组查询注意力(GQA)。有趣的是,[14]中的作者指出,LLaMA-2 的预训练设置采样了更多已知更具知识性的来源。这样的变化旨在强调事实来源、增加知识和减少幻觉。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [15])

什么是 GQA? 如[15]所提出,GQA 是对多头自注意力的修改,可以提高 LLMs 的推理效率。典型的多头自注意力机制有N个查询、键和值头,总共创建N个自注意力头。在 GQA 中,我们将这些N个头分成组,其中键和值头在每组内共享;见上文。这种方法是在普通多头自注意力和多查询注意力之间的插值,后者在所有N个头中使用共享的键和值投影。[15]发现,GQA 在提高推理速度方面与多查询注意力相当,同时保持普通多头注意力的性能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [14])

LLaMA-2 确实很出色。 与流行的开源模型(例如 MPT、Falcon 和 LLaMA-1)相比,LLaMA-2 基础 LLMs 表现非常好。事实上,LLaMA-2–70B 在所有考虑的任务中设立了开源 LLMs 的新最佳水平;见上文。然而,值得注意的是,LLaMA-2 因在编码任务上的(相对)较差表现而受到一些批评(例如,HumanEval)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [14])

与专有模型相比,LLaMA-2 基础模型的表现较差;见上文。然而,我们应当记住,这一比较是在基础 LLM 与像 GPT-3.5 和 GPT-4 这样的对齐模型之间进行的。与其他流行的基础 LLM(例如,PaLM [4])相比,LLaMA-2 的表现是有利的!

商业许可证。 尽管 LLaMA-1 仅可用于研究,LLaMA-2 则在商业许可证下发布,这意味着— 与 MPT 和 Falcon 类似 — 这些模型可以用于商业应用。然而,LLaMA-2 的许可证并非标准的 Apache 2.0 许可证,它有一些需要从业者考虑的附加条件。最值得注意的是,任何由 LLaMA-2 驱动、每月活跃用户超过 7 亿的实体/应用程序必须从 Meta 处获得使用 LLaMA-2 的许可证。有关 LLaMA-2 许可证的更多信息,请参阅这里

开源 LLM 的趋势

鉴于 LLaMA、MPT、Falcon 和 LLaMA-2 的表现远超其前身,我们可以合理地问:是什么导致当前一代开源 LLM 表现如此出色? 在这里,我们将快速查看这些模型的一些关键特性,这些特性在推动它们的卓越表现和迅速流行中尤为重要。特别是,这些模型 i) 在大量数据上进行了预训练,以及 ii) 强调推理效率。

更好的数据 = 更好的表现!

当前开源 LLM 与之前的 LLM 之间的关键区别在于用于预训练的数据集。尽管像 OPT 和 BLOOM 这样的模型分别在 1800 亿和 3410 亿个标记上进行训练,但当前开源模型是在显著更大的数据集上进行预训练的:

  • LLaMA: 1.4 万亿个标记

  • MPT: 1 万亿个标记

  • Falcon: 1–1.5 万亿个标记

  • LLaMA-2: 2 万亿个标记

当前的开源 LLM 将用于预训练的数据量提高了(几乎)一个数量级!事实上,这些预训练数据集的规模与用于专有 LLM 的数据集相似。例如,MassiveText(即用于训练 Gopher [13]和 Chinchilla [2])包含大约 2.3 万亿个标记,尽管实际上仅使用了其中的一部分进行预训练;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源 [13])

规模并非一切! 除了显著增加预训练数据的数量,当前的开源 LLM 还非常关注数据的组成和质量。例如,在用于训练 MPT 的数据集中,代码的比例得到了增加,从而使得生成的模型在基于编码的任务上表现更佳。此外,Falcon-40B 提出了一种全新的从网络构建高质量文本语料库的管道,而 LLaMA-2 则声称使用了更新的数据管道和混合方式进行预训练。总的来说,专注于预训练数据集的质量和组成似乎是近期开源 LLM 研究中的一种共同趋势。

“我们进行了更全面的数据清理,更新了数据混合,训练了更多的总标记,增加了上下文长度,并使用了分组查询注意力(GQA)以提升我们较大模型的推理可扩展性。” — 来源于 [14]

优化以实现更快的推理

在决定使用开源或闭源 LLM 时,实践者必须考虑的不仅仅是性能。付费语言模型 API 可能在广泛的任务范围内取得令人印象深刻的表现,但它们往往无法在特定领域的数据上进行微调。另一方面,使用开源 LLM 构建应用时,一个主要考虑因素是部署模型的成本。鉴于托管 LLM 的难度,近期的开源模型往往经过优化,以实现快速和简便的推理。实际上,MPT-30B [10] 特别调整了尺寸,以便可以在单个 GPU 上托管!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源于 [15, 16, 17])

修改后的架构。 除了比大多数专有模型稍小之外,当前的开源 LLM 还采用了多种架构技巧 —— 如上图所示 —— 来加速推理过程,例如:

  • 低精度层归一化

  • 快速注意力

  • 多查询注意力

  • 并行变换器

  • 组查询注意力

此外,还采用了多种其他架构修改,例如 RoPE 嵌入、ALiBi、SwiGLU 激活函数等,以提升性能。当前的开源 LLM 对仅有解码器的变换器架构进行了简单的修改,以改善性能和推理速度。

结论

在本概述中,我们研究了开源 LLM 的演变,从初期的低质量模型(例如 BLOOM 和 OPT)到最近的强大基础模型(例如 LLaMA 和 MPT)。为了提升前辈模型的性能,这些最近的模型主要集中于策划更大、更高质量的预训练数据集,这导致了质量的显著提高。鉴于高质量的基础模型是任何 LLM 应用的前提,这些模型对开源 LLM 的流行程度产生了重大影响。如今,任何从业者都可以利用强大的基础 LLM,无论是用于研究目的还是商业应用,而无需投入大量资金从头开始预训练模型。

与我联系!

非常感谢阅读本文。我是 Cameron R. WolfeRebuy 的 AI 总监。我研究深度学习的实证和理论基础。如果你喜欢这个概述,请订阅我的 Deep (Learning) Focus 时事通讯,在这里我帮助读者通过从基础到高级的相关主题概述来理解 AI 研究。你也可以在 XLinkedIn 上关注我,或者查看我在 medium 上的 其他文章

参考书目

[1] Touvron, Hugo 等人。“Llama: 开放且高效的基础语言模型。” arXiv 预印本 arXiv:2302.13971 (2023)。

[2] Hoffmann, Jordan 等人。“训练计算最优的大型语言模型。” arXiv 预印本 arXiv:2203.15556 (2022)。

[3] Zhou, Chunting 等人。“Lima: 对齐的‘少即是多’。” arXiv 预印本 arXiv:2305.11206 (2023)。

[4] Chowdhery, Aakanksha 等人。“Palm: 使用路径扩展语言建模。” arXiv 预印本 arXiv:2204.02311 (2022)。

[5] Taori, Rohan 等人。“斯坦福 Alpaca: 一种遵循指令的 LLaMA 模型。” (2023)。

[6] Chiang, Wei-Lin 等人。“Vicuna: 一个以 90%* ChatGPT 质量给 GPT-4 留下深刻印象的开源聊天机器人。” (2023)。

[7] Geng, Xinyang 等人。“Koala: 一种用于学术研究的对话模型。” (2023)。

[8] Yuvanesh Anand, Zach Nussbaum, Brandon Duderstadt, Benjamin Schmidt 和 Andriy Mulyar。“GPT4All: 通过从 GPT-3.5-Turbo 大规模数据蒸馏训练助理风格聊天机器人。” 2023 年。

[9] “介绍 MPT-7B: 开源、可商业化 LLM 的新标准。” MosaicML, 2023 年 5 月 5 日, www.mosaicml.com/blog/mpt-7b.

[10] “MPT-30B: 提高开源基础模型的标准。” MosaicML,2023 年 6 月 22 日,www.mosaicml.com/blog/mpt-30b.

[11] “介绍 Falcon LLM”, 技术创新研究所,2023 年 6 月 7 日,falconllm.tii.ae/.

[12] Penedo, Guilherme 等人. “Falcon LLM 的 RefinedWeb 数据集:通过网络数据超越精选语料库,仅使用网络数据。” arXiv 预印本 arXiv:2306.01116 (2023)。

[13] Rae, Jack W. 等人. “语言模型扩展:方法、分析与从训练 Gopher 中获得的见解。” arXiv 预印本 arXiv:2112.11446 (2021)。

[14] Touvron, Hugo 等人. “Llama 2: 开放基础与微调聊天模型。” arXiv 预印本 arXiv:2307.09288 (2023)。

[15] Ainslie, Joshua 等人. “GQA: 从多头检查点训练通用多查询变换器模型。” arXiv 预印本 arXiv:2305.13245 (2023)。

[16] Vaswani, Ashish 等人. “注意力即你所需。” 《神经信息处理系统进展》 30 (2017)。

[17] Dao, Tri 等人. “Flashattention: 快速且内存高效的精确注意力机制,具备 IO 感知功能。” 《神经信息处理系统进展》 35 (2022): 16344–16359。

[18] Dao, Tri. “FlashAttention-2: 更快的注意力机制,具有更好的并行性和工作分区。” arXiv 预印本 arXiv:2307.08691 (2023)。

开源 LLMs 的历史:早期阶段(第一部分)

原文:towardsdatascience.com/the-history-of-open-source-llms-early-days-part-one-d782bcd8f7e8

理解 GPT-Neo、GPT-J、GLM、OPT、BLOOM 等…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Cameron R. Wolfe, Ph.D.

·发表在 Towards Data Science ·阅读时间 20 分钟·2023 年 11 月 7 日

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(图片由 Chris Lawton 提供,来自 Unsplash

语言建模的研究有着悠久的历史,可以追溯到类似 GTP 和 GPT-2 的模型,甚至是早于现代变换器基础语言模型的 RNN 技术(例如,ULMFit)。尽管历史悠久,但语言模型在相对最近才变得流行。第一次流行的兴起来自于 GPT-3 的提出,[1]展示了通过自监督预训练和上下文学习的结合,可以在许多任务中实现令人印象深刻的少量学习性能;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [1])

在此之后,GPT-3 获得的认可促使了大量大型语言模型(LLMs)的提出。不久之后,语言模型对齐的研究导致了更为出色的模型的创建,如 InstructGPT [19],以及最著名的其姊妹模型 ChatGPT。这些模型的出色表现引发了对语言建模和生成式 AI 的广泛兴趣。

尽管非常强大,但许多早期 LLM 研究中的发展有一个共同特点——它们是闭源的。当语言模型首次开始获得广泛认可时,许多最强大的 LLM 只能通过付费 API 访问(例如,OpenAI API),而研究和开发这些模型的能力仅限于特定的个人或实验室。这种方法明显不同于典型的 AI 研究实践,后者通常鼓励开放和思想共享,以促进前进的进步。

“这种受限的访问限制了研究人员理解这些大型语言模型如何以及为何工作的能力,阻碍了改进其鲁棒性和缓解已知问题(如偏见和毒性)的努力。” ——来自 [4]

这一概述。 尽管最初强调的是专有技术,LLM 研究社区慢慢开始创建流行语言模型如 GPT-3 的开源变体。尽管首批开源语言模型在性能上落后于最佳的专有模型,但它们为 LLM 研究中的改进透明度奠定了基础,并催化了许多更强大的后续模型的发展(例如,Falcon [10] 和 LLaMA-2)。

这一概述是一个三部分系列的一部分,探索开源语言模型的历史。在这里,我们将了解这一历史的开端,包括若干初步尝试创建开源语言模型的努力。尽管这些模型在性能上有所欠缺,但它们对理解至关重要,因为随后的开源 LLM 革命完全基于这些模型。在系列的接下来的两部分中,我们将深入了解最近的开源 LLM 以及如何使用模仿和对齐技术来提高它们的性能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12, 20])

语言模型的机制

开源 LLM 研究催化了透明度和思想共享,创造了一个研究人员能够更快地合作和创新的环境。简单来说,开源 LLM 研究的美在于它让我们有可能研究这些令人难以置信的模型,并深入理解它们的工作原理。没有隐藏在付费 API 或黑箱中的未知技巧。开源 LLM 允许我们查看代码,进行实验,甚至尝试我们自己的想法和修改——我们对基础模型拥有完全的访问权限!

“AI 社区的更广泛领域需要访问这些模型,以便进行可重复的研究,并共同推动该领域的发展。” ——来自 [4]

但要深入理解这些模型,我们首先需要了解它们的基本工作原理。在本节中,我们将概述这些理念,尝试提供对大型语言模型(LLMs)的(相对)全面理解。

语言建模目标

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用语言建模目标进行预训练(由作者创建)

语言建模的核心是下一个令牌预测(也称为标准语言建模目标),它用于训练几乎所有的语言模型。为了使用下一个令牌预测训练语言模型,我们需要一个大规模的原始文本语料库。利用这个语料库,我们通过* i)* 从数据集中抽取一些文本和* ii)* 训练模型以预测下一个单词来训练模型;见上文。因为真实的下一个令牌总是可以从原始文本中推断出来,所以下一个令牌预测是一种自监督学习的方法。

什么是令牌? 可以大致将下一个令牌预测理解为在给定前几个单词作为上下文的情况下预测序列中的下一个单词。然而,这种类比并不完全准确,因为令牌和单词并不完全相等。当语言模型接收文本作为输入时,原始文本首先被分词(即,转换为离散的单词或子单词序列);见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将原始文本转换为令牌序列(由作者创建)

与语言模型相关联的分词器通常具有固定大小的词汇表,或可以从文本序列中创建的可用令牌集合。

预测下一个令牌。 一旦创建了令牌序列,语言模型就具有一个嵌入层,为分词器词汇表中的每个令牌存储一个唯一且可学习的向量嵌入。利用这个嵌入层,我们可以将输入序列中的每个令牌转换为相应的向量嵌入,形成令牌向量序列;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对原始文本数据进行分词和嵌入(由作者创建)

在每个令牌上添加位置嵌入后,我们可以将这个令牌向量序列传递给仅解码器的变换器(更多解释将随后介绍),它将这些令牌向量进行转换(无双关意味),并为每个令牌生成相应的输出向量。值得注意的是,输出向量的数量与输入向量的数量相同;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用仅解码器的变换器处理令牌(由作者创建)

现在我们为每个令牌有了输出表示,我们准备进行下一个令牌预测了!对于序列中的每个令牌,我们只需取其输出令牌向量并使用它来预测序列中接下来的令牌!下面展示了这一过程的示意图。在实际应用中,这一目标同时在序列中的所有令牌(以及在一个小批量中的所有序列)上进行计算,以最大化效率。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

计算下一个令牌预测训练目标(由作者创建)

由于使用了因果(或掩蔽)自注意,每个输出令牌向量在计算其表示时只考虑当前令牌以及序列中其之前的令牌。如果我们使用双向自注意,每个输出令牌向量将通过查看整个向量序列来计算,这将允许模型作弊,通过仅仅复制序列中接下来的令牌来解决下一个令牌预测。因此,掩蔽自注意是下一个令牌预测所必需的。但是,自注意到底是什么,更根本地说,变换器是什么?接下来我们将深入探讨。

一个快速说明。 “语言模型”这一术语有时可能被用来指代那些不仅专注于执行下一个令牌预测的模型。例如,BERT [18] 被一些人认为是“语言模型”,但它是使用Cloze风格的目标进行训练的,并不是生成模型。因此,专注于下一个令牌预测的语言模型通常被称为“因果”语言模型。在这里,我们将这两个术语交替使用,指代那些专注于下一个令牌预测的模型。

变换器架构及其变体

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [17])

所有语言模型都使用某种变体的变换器架构。这种架构(如上图所示)最初在[17]中提出,用于解决序列到序列任务。然而,它随后被扩展以解决各种不同的问题,从评估文本的语义相似性到图像分类。在其原始形式中,变换器架构有两个组成部分:

  • 编码器:每个块执行双向自注意和一个逐点前馈变换,这些操作之间通过残差连接和 LayerNorm 分隔。

  • 解码器:每个块执行因果自注意,交叉注意(即跨编码器和解码器令牌的自注意),以及一个逐点前馈变换,每个部分之间通过残差连接和 LayerNorm 分隔。

当架构的两个组件都存在时,编码器处理输入序列并生成一个输出序列。然后,解码器生成自己的输出序列,输入为编码器的输出序列。换句话说,编码器处理整个输入序列以形成解码器在生成输出时使用的表示。整体上,转换器接受一个序列作为输入并生成一个新的序列作为输出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源于 [17])

仅解码器和仅编码器的转换器。 几乎所有因果语言模型都使用仅解码器转换器作为其基础架构,这只是一个普通的转换器,其编码器部分被移除;见上文。此外,由于缺少编码器(即,我们不能关注不存在的编码器),每个解码器块的交叉注意力部分也被移除!或者,可以通过仅使用架构中的编码器部分来形成仅编码器架构。仅编码器架构(例如,BERT [18])在解决各种判别自然语言任务方面表现出色,但它们不用于生成文本。要了解更多信息,请查看这里的链接。

为什么选择解码器? 选择仅解码器架构(与仅编码器或完整的编码器-解码器转换器相比)用于大语言模型并非随意决定。相反,这一选择是由于训练语言模型时使用下一个词预测。解码器中使用的掩码自注意力确保模型在预测下一个词时无法向前查看序列。否则,下一个词预测将变得非常简单,因为模型可以直接复制下一个词;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因果自注意力用于下一个词预测(作者创建)

为了在不作弊的情况下进行下一个词预测,无论是仅编码器还是编码器-解码器转换器,都必须避免在其输入序列中包含任何真实的下一个词。为此,我们可以 i) 处理一个前缀,并 ii) 预测跟随该前缀的词。然而,这种方法效率较低,因为我们一次只能预测一个下一个词。相比之下,只有解码器的模型由于使用掩码自注意力,可以处理整个词序列,并将语言建模目标应用于序列中的每个词。此外,一些论文 [12] 实际上表明,仅解码器架构在下一个词预测中表现最佳。

我们如何生成文本? 鉴于上面概述的仅解码器架构,生成文本遵循简单的自回归过程。我们只需不断预测下一个词,将此词添加到输入中,并重复进行;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用语言模型生成文本(作者创建)

训练和使用语言模型

为了全面理解语言模型,我们需要快速探索这些模型在实际中通常是如何训练和使用的。尽管在这一领域做了大量的研究,但大多数语言模型都是按照 [19] 中提出的一些标准技术进行训练的;详见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LLM 训练组件(来自 [19])

语言模型可以通过多种不同方式进行学习。在这里,我们将重点讨论预训练、对齐和上下文学习,这些方法共同涵盖了训练大型语言模型(LLM)和在实际应用中使用它所需的大部分内容。

预训练。 预训练过程是创建 LLM 的初步且计算开销最大的步骤。从一个随机初始化的 LLM 开始,我们必须使用语言建模目标对这个模型进行训练——在从各种不同来源中整理出的海量原始文本语料库上。之前的研究 [1] 向我们展示,通过在一个大型数据集上对一个非常大的模型(即,参数很多)进行预训练,我们可以获得一个 基础模型,它可以通过执行下一个 token 预测来准确地解决各种不同的任务。为了获得最佳结果,我们需要在数据和模型规模方面进行扩展。

我们还需要什么? 仅仅经历预训练的语言模型可以是强大的。看看 GPT-3 [1] 和 Chinchilla [15] 的一些例子。然而,LLM 直到像 ChatGPT 这样的模型提出后才突然流行起来是有原因的——仅仅进行下一个 token 预测并不是非常有趣。通常,预测统计上正确的下一个 token,虽然生成了合理的文本,却会产生重复、简单且通常不太有用的输出。我们需要某种方法来使 LLM 生成对我们人类更有帮助和更有趣的输出!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [19])

对齐是指对 LLM 进行微调的过程,以更好地符合人类用户的期望。这主要通过两种技术实现:监督微调(SFT)和/或来自人类反馈的强化学习(RLHF)。LLM 的期望行为很大程度上取决于其部署的上下文或应用。然而,对齐是一种通用工具,可以用来随意地微调 LLM,使其表现出特定的行为;详见上文。近期研究表明,模型在对齐过程中不会学习到新的信息。相反,这个过程只是教会模型如何正确地格式化或呈现其从预训练过程中已经获得的知识。

实际应用 LLM。 在我们对语言模型进行预训练和微调(或对齐)之后,最后一步是将模型专门化为我们所需的应用。这一过程可能需要对领域特定的数据进行额外的微调。然而,并不总是需要更多的训练,因为我们可以通过使用上下文学习来完成很多工作;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [1])

简而言之,上下文学习指的是使用一个单一的通用基础模型(例如,预训练的 LLM)来解决各种不同的问题。鉴于语言模型的通用文本到文本结构,这实际上是相当容易做到的。我们只需构建一个可以作为输入提供给 LLM 的文本问题解决提示;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

解决算术问题的不同提示变体(由作者创建)

然后,LLM 应该生成我们问题的答案作为输出。因此,我们可以通过仅仅修改输入提示来解决许多不同的问题!构建有效提示以解决问题的过程称为提示工程,我们在之前的文章中对此进行了广泛探讨:

  • 实用提示工程 [link]

  • 高级提示工程 [link]

开源 LLM 的初步尝试

鉴于 预训练的高成本,研究社区花了一些时间才开始追求创建开源 LLM,使得像 GPT-3 这样的专有模型成为标准。然而,一旦提出了最初的几个模型,闸门就打开了,开源 LLM 的研究迅速推进(几乎 过于 迅速)。我们将在这里了解一些早期模型,而更多最近的开源 LLM 将在系列的未来部分中介绍。

GPT-NeoX-20B [6]

第一个开源 LLM 之一——一个名为 GPT-NeoX-20B 的 200 亿参数模型[6]——由 EleutherAI 创建。GPT-NeoX-20B 是在初始的 GPT-Neo 模型(27 亿参数)[22] 之后创建的,经过 the Pile 进行预训练,并在各种自然语言基准测试中表现出色的少量示例学习性能(可与 GPT-3 相媲美)。尽管与 GPT-3(即 200 亿参数对比 1750 亿参数)相比,这个模型在某种程度上较小,但它在当时是最大的开源语言模型。此外,所有训练和评估模型的代码都与其权重一起以 Apache 2.0 许可证 发布,允许商业使用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [8])

模型。 GPT-NeoX-20B [6] 使用了标准的仅解码器变换器架构,但进行了以下两项更改:

  • RoPE 嵌入

  • 并行注意力和前馈层

改进了标准位置嵌入,RoPE 嵌入(如上所示)提供了一种将位置信息注入自注意力操作的新方法。这种方法在绝对位置和相对位置信息之间找到了更好的平衡,并由于其在处理长序列任务中的表现能力,被用于多种其他模型(例如 PaLM [9]和 Falcon-40B [10])。此外,使用并行注意力和前馈层(见下文)使训练吞吐量提高了 15%,性能下降最小。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

并行执行注意力层和前馈层(由作者创建)

有趣的是,为 GPT-NeoX-20B 创建了一个自定义分词器。这个分词器与 GPT-2 的分词器[11]相当,但它是从头开始在 Pile(一个大型多样的文本语料库)上训练的,并且经过修改以更一致地分词空白字符。因此,最终的分词器除了在高质量语料库上进行训练外,还特别有效于分词代码(即,代码中有很多空白字符!)。因此,几种开源模型(例如 MPT-7B [5])即使在今天也采用了这个分词器。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [6])

性能。 GPT-NeoX-20B 与 GPT-3 和其他开源模型(如 GPT-J)进行了比较。在这些评估中,我们看到 GPT-NeoX-20B 在常见的语言建模任务上表现相当好(即使与专有模型相比);见上文。值得注意的是,GPT-3 往往实现了最佳性能。然而,GPT-NeoX-20B 相对于其规模表现相当好,甚至在参数数量相近的专有模型中也表现优异。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [6])

GPT-NeoX-20B 的性能虽然不是最先进的,但在其规模下表现出乎意料地好,即使与近期模型相比也是如此!

开放预训练变换器(OPT)语言模型 [4]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OPT 版本的组件(由作者创建)

在之前的概述中,我们深入讨论了开放预训练变换器(OPT)库的细节。请见 这里 的链接。

OPT 由Meta AI提出,旨在将强大的 LLMs 民主化地提供给公众,包括几个不同的 LLMs,规模从 1.25 亿到 1750 亿参数不等。这些模型在由Redditthe PileBooksCorpus等来源编制的精选数据集上进行预训练,而这个套件中的最大模型——OPT-175B——是首批真正的大型开源语言模型之一。此外,这些模型还配有一个代码库和一个详细记录所有模型预训练过程的日志。尽管 OPT 模型不用于商业,但它们是对 LLMs 开放研究的巨大资源。

影响。 OPT 语言模型是首次大规模努力使庞大的语言模型对研究社区可访问的——LLMs 现在完全对任何人开放,而不是隐藏在 API 后面。此外,OPT 的开源训练代码提供了一个高效的训练框架,使用了像FSDP张量并行等常见技术。这段代码实现了比 NVIDIA 直接发布的研究[3]高出 17%的资源利用率,是训练 LLMs 的极佳资源。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源于[5])

训练笔记日志与 OPT 相关,提供了大量(先前未知的)对 LLM 训练过程的见解。通过这些资源,我们可以更好地理解训练 LLM 的全部成本以及在此过程中可能遇到的许多困难(例如,损失峰值、硬件故障以及其他“中途”训练调整)。这些训练 LLM 的困难成为了讨论的话题,并且已经通过随后的开源 LLM 工作(大部分)得到解决;详见上述内容。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源于[4])

它的表现如何? OPT-175B 在提议时与当时流行的模型进行了广泛比较,并发现其在零样本和少样本学习设置下的性能与 GPT-3 相当;详见上文。总体而言,OPT 的性能并不突出——该模型被普遍认为在质量上落后于专有模型。尽管其表现平平,然而,OPT 对 AI 研究而言是一个巨大的进步,并显著提升了对开源 LLM 的兴趣。这一影响不容低估,因为它出现在专有模型主导地位被接受为新标准的时期。

BLOOM: 一个开放的多语言语言模型 [12]

“学术界、非营利组织和小型公司的研究实验室发现创建、研究甚至使用 LLM 非常困难,因为只有少数具备必要资源和专有权利的工业实验室才能完全访问它们。” —来自 [12]

在[12]中提出,BLOOM 是一个 1760 亿参数的 LLM,它作为一个大规模开放协作的 AI 研究项目(即,超过 1000 名研究人员参与!),称为大科学研究工作坊。该工作坊持续了一年(2021 年 5 月至 2022 年 5 月),其目标是创建 i) 一个大规模的多语言文本数据集,以及 ii) 一个在该数据集上训练的大型多语言语言模型。最终生成的模型,略大于 GPT-3,并在负责任 AI 许可证(RAIL)下开源,可以生成 46 种不同语言8和 13 种编程语言的文本。

为训练 BLOOM 开发的数据集,称为ROOTS 语料库,由 498 个 HuggingFace 数据集组成,包含超过 1.6 TB 的文本,涵盖 46 种自然语言和 13 种编程语言。该数据集在不同语言中的分布如下图所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12])

在获得原始数据后,作者应用了不同的质量过滤器管道,以去除非自然语言的文本。使用的具体过滤组件在[12]的第 3.1.3 节中进一步阐述,根据数据源的不同而有所变化。然而,整体管道的共同目标是尽可能多地过滤掉低质量文本。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12])

BLOOM 使用的架构 是标准的解码器单一 Transformer。然而,如上所示,对该架构进行了少许修改,例如:

  • ALiBi [13]:这帮助模型将训练中见过的上下文长度泛化到更长的上下文长度。

  • 嵌入层归一化:在模型的嵌入层后添加了额外的层归一化,这在经验上发现能够提高训练稳定性。

总体而言,这个模型与大多数 LLM 并没有太大区别。有趣的是,[12]中的作者对不同类型的变换器架构(例如,仅编码器模型、编码器-解码器模型和仅解码器模型)进行了广泛分析,发现仅解码器模型(几乎所有因果语言模型都使用这种模型)在预训练后表现最佳。

“我们的结果显示,预训练后,因果解码器模型表现最佳——验证了选择最先进 LLM 的决策。” — 来源于 [12]

它表现如何? 与其他开源 LLM 相比,BLOOM 的表现相对较好。在自然语言基准测试中,它的结果与 OPT 相当或有所改进,并且由于其在多语言语料库上进行训练,通常在机器翻译任务中表现优异;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源于 [12])

然而,BLOOM 的表现低于顶级专有模型。例如,我们在下方的 HumanEval 基准测试结果中看到,该模型的编码能力远远落后于 Codex [14]等替代品。此外,当我们将 BLOOM 与 Chinchilla [15]和 PaLM [9]等模型进行比较时,我们很快发现开源模型的性能逊色于其专有对应物。换句话说,在 BLOOM 提出时,开源 LLM 的研究仍然滞后

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源于 [12])

其他显著模型

我们尝试覆盖早期开源 LLM 研究中提出的几个显著模型。但仍有一些模型未包含在本概述中,值得一提。让我们快速了解其中的一些。

GPT-J [21] 是一个 60 亿参数的仅英语因果语言模型,在 GPT-NeoX-20B [6]之前提出。与 GPT-NeoX-20B 类似,该模型在 Pile 上进行预训练。在发布时,GPT-J-6B 是最大的公开 GPT-3 风格语言模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来源于 [20])

GLM [20] 更像是一个预训练目标,而不是一个语言模型。该工作探索了通过提出自回归空白填充目标来统一不同的预训练技术(例如 BERT、T5 和 GPT)的想法。换句话说,我们以自回归方式预测句子中的掩码词,类似于语言模型;见上文。结果模型相当小(<10 亿参数),在几个流行的自然语言处理基准测试中表现优于 BERT、T5 和 GPT。

我们接下来要做什么?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

开源 LLM 研究的发展(由作者创建)

鉴于早期对开源 LLMs 的尝试产生的模型表现远不如专有对手,我们不禁要问:我们应该做什么来提升这些模型? 随着这一研究领域的发展,我们看到主要投入了两个方向的努力:

  1. 创建更好的基础 LLMs

  2. 微调开源 LLMs(即对齐和模仿)

由于开源 LLMs 对所有人开放,这些领域的研究进展速度令人震惊——我们在不到一年的时间里从 OPT 进展到了接近最先进的模型(如 LLaMA-2 或 Falcon-40B [10])

“我们认为,提升开源模型的最高杠杆行动是应对开发更好的基础语言模型这一艰巨挑战” — 出自[16]

上述两条研究方向在此期间是并行探索的,每条方向都产生了对 AI 从业者有用的技术。在本调查的接下来的两个部分中,我们将概述这些领域及其关键贡献,探讨最初对开源 LLMs 的尝试如何演变成极其强大的模型,如 LLaMA-2。

连接我!

非常感谢阅读这篇文章。我是Cameron R. WolfeRebuy的 AI 总监。我研究深度学习的实证和理论基础。如果你喜欢这个概述,请订阅我的Deep (Learning) Focus 通讯,我通过从基础开始的相关主题概述帮助读者理解 AI 研究。你也可以在XLinkedIn上关注我,或查看我在 medium 上的其他文章

参考文献

[1] Brown, Tom, 等. “语言模型是少样本学习者。” 神经信息处理系统进展 33 (2020):1877–1901。

[2] Rae, Jack W., 等. “语言模型的扩展:方法、分析与训练 gopher 的见解。” arXiv 预印本 arXiv:2112.11446 (2021)。

[3] Smith, Shaden, 等. “使用 deepspeed 和 megatron 训练 megatron-turing nlg 530b,一个大规模生成语言模型。” arXiv 预印本 arXiv:2201.11990 (2022)。

[4] Zhang, Susan, 等. “OPT: 开源预训练变换器语言模型。” arXiv 预印本 arXiv:2205.01068 (2022)。

[5] “介绍 MPT-7B:开源商业可用 LLMs 的新标准。” MosaicML,2023 年 5 月 5 日, www.mosaicml.com/blog/mpt-7b.

[6] Black, Sid, 等. “Gpt-neox-20b:一个开源自回归语言模型。” arXiv 预印本 arXiv:2204.06745 (2022)。

[7] Gao, Leo, 等. “The pile: 一个 800GB 的多样文本数据集用于语言建模。” arXiv 预印本 arXiv:2101.00027 (2020)。

[8] Su, Jianlin, 等. “Roformer: 带旋转位置嵌入的增强变换器。” arXiv 预印本 arXiv:2104.09864 (2021)。

[9] Chowdhery, Aakanksha 等. “Palm:通过路径扩展语言建模。” arXiv 预印本 arXiv:2204.02311 (2022)。

[10] “介绍 Falcon LLM”,技术创新研究所,2023 年 6 月 7 日,falconllm.tii.ae/.

[11] Radford, Alec 等. “语言模型是无监督的多任务学习者。”

[12] Scao, Teven Le 等. “Bloom:一个 176b-参数的开放访问多语言模型。” arXiv 预印本 arXiv:2211.05100 (2022)。

[13] Press, Ofir, Noah A. Smith 和 Mike Lewis. “短期训练,长期测试:具有线性偏差的注意力机制实现输入长度外推。” arXiv 预印本 arXiv:2108.12409 (2021)。

[14] Chen, Mark 等. “评估训练有代码的大型语言模型。” arXiv 预印本 arXiv:2107.03374 (2021)。

[15] Hoffmann, Jordan 等. “训练计算最优的大型语言模型。” arXiv 预印本 arXiv:2203.15556 (2022)。

[16] Gudibande, Arnav 等. “模仿专有 llms 的虚假承诺。” arXiv 预印本 arXiv:2305.15717 (2023)。

[17] Vaswani, Ashish 等. “注意力机制是你所需的一切。” 神经信息处理系统进展 30 (2017)。

[18] Devlin, Jacob 等. “Bert:用于语言理解的深度双向转换器预训练。” arXiv 预印本 arXiv:1810.04805 (2018)。

[19] Ouyang, Long 等. “训练语言模型以遵循指令和人类反馈。” 神经信息处理系统进展 35 (2022):27730–27744。

[20] Du, Zhengxiao 等. “Glm:自回归空白填充的通用语言模型预训练。” arXiv 预印本 arXiv:2103.10360 (2021)。

[21] Ben Wang 和 Aran Komatsuzaki. GPT-J-6B:一个拥有 60 亿参数的自回归语言模型,2021。

[22] Sid Black, Leo Gao, Phil Wang, Connor Leahy 和 Stella Biderman. 2021. GPT-Neo:使用 MeshTensorflow 的大规模自回归语言建模。

开源 LLMs 的历史:模仿与对齐(三)

原文:towardsdatascience.com/the-history-of-open-source-llms-imitation-and-alignment-part-three-603d709c7aa5

开源 LLMs 需要对齐才能真正出色……

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Cameron R. Wolfe, Ph.D.

·发表于Towards Data Science ·阅读时间 20 分钟·2023 年 11 月 28 日

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(照片由Joanna Kosinska提供,发布在Unsplash

之前关于开源大型语言模型(LLMs)的研究大多数集中在创建预训练基础模型上。然而,这些模型并未经过任何微调,因此由于缺乏对齐,它们无法与顶级闭源 LLMs(例如,ChatGPT 或 Claude)的质量相匹配。付费模型通过使用诸如 SFT 和 RLHF 等技术进行广泛对齐,这大大提高了其可用性。相比之下,开源模型通常使用较小的公开数据集进行较少的微调。然而,在这篇概述中,我们将审视近期研究,旨在通过更广泛的微调和对齐来提升开源 LLMs 的质量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自[1, 2, 12])

本概述是我关于开源 LLMs 历史系列的第三部分(也是最后一部分)。在系列的第一部分中,我们回顾了创建开源语言模型的初步尝试。虽然这些初步预训练的 LLMs 表现不佳,但它们很快被更好的开源基础模型所取代,我们在系列的第二部分中进行了介绍。现在,我们将探讨如何对这些更好的开源模型进行微调/对齐,以提高其质量并缩小开源 LLMs 与专有 LLMs 之间的性能差距,完成从最初的模型如 OPT 到我们今天拥有的高性能开源 LLMs(例如 LLaMA-2-Chat)的历程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [17, 18])

对齐过程。 本概述将研究开源 LLMs 的微调和对齐过程。然而,在研究该领域的研究之前,我们需要了解对齐是什么以及如何实现。我们应该记住,语言模型的训练过程分为几个部分。如上所示,我们从预训练开始,随后进行几个微调步骤。在预训练之后,LLM 可以准确地进行下一个令牌预测,但其输出可能会重复且不有趣。因此,模型需要进行微调以改善其对齐,即生成与人类用户的期望一致的文本的能力(例如,遵循指令、避免有害输出、避免撒谎、产生有趣或创造性的输出等)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [17])

SFT。对齐是通过两种微调技术实现的:监督微调(SFT)和从人类反馈中进行的强化学习(RLHF);见上图。SFT 只是利用标准的语言建模目标,对高质量提示和响应对的示例进行微调。LLM 可以看到应如何响应的示例,并从这些响应中学习!SFT 非常简单且有效,但需要仔细策划一个能够捕捉“正确”行为的数据集。

RLHF 直接根据人类注释者的反馈训练大型语言模型(LLM)—— 人们识别他们喜欢的输出,LLM 学习如何产生更多类似的输出。为此,我们首先获得一组提示,并从 LLM 生成多个不同的输出。通过一组人类注释者,我们根据这些响应的质量对每个响应进行评分。这些评分可以用来训练一个奖励模型(即,带有附加回归头的微调版 LLM),以预测响应的分数。然后,RLHF 使用名为 PPO 的强化学习算法来微调模型,以最大化该分数。通常,最高性能的 LLM 是通过按顺序执行 SFT 和 RLHF(并获得大量人类反馈)来对齐的。

模仿学习

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(引自[16])

随着 LLaMA [3] 的发布,开源研究社区终于可以访问强大的基础 LLM,这些 LLM 可以被微调或对齐以适应各种不同的应用。因此,LLaMA 催化了开源 LLM 研究的爆炸性增长,实践者们纷纷急于在自己选择的任务上微调 LLaMA 模型。有趣的是,在此期间最常见的研究方向之一是模仿学习。模仿学习(可以说)是一种对齐形式,通过另一个更强大的 LLM 的输出来微调 LLM。这种方法的灵感来源于知识蒸馏的理念;见上文。

“模型模仿的前提是,一旦通过 API 提供了专有语言模型(LM),就可以收集 API 输出的数据集,并使用这些数据来微调开源语言模型。” — 引自[6]

开源模仿学习研究提出的问题很简单:我们是否可以仅通过对这些模型的响应进行微调,创建一个与 ChatGPT 或 GPT-4 一样强大的模型? 为了测试这一点,我们可以采取一种简单的方法:

  • 收集这些模型的对话示例(例如,使用 OpenAI API)。

  • 对这些数据进行(监督)微调(即,使用正常的语言建模目标)。

正如我们将看到的,研究界对模仿学习是否是一种有价值的方法进行了激烈的讨论!最后,我们发现这种方法在实践中确实有用,但仅在某些条件下效果良好。

模仿学习的初步努力

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LLaMA 催化了众多模仿模型的创建(引自[7, 8, 9, 10])

在 LLaMA 发布后,研究人员迅速开始发布各种使用 ChatGPT 对话派生的模仿模型。通常,用于训练的数据——这会禁止结果模型用于商业用途——来自 OpenAI API 或类似ShareGPT的来源。以下是一些最广为人知的模仿模型(按时间顺序列出)。

Alpaca [7] 使用 self-instruct [11] 框架对 LLaMA-7B 进行微调,从 GPT-3.5(即,text-davinci-003)自动收集微调数据集。收集数据和微调 Alpaca 仅花费了 $600。

Vicuna [8] 对来自 ChatGPT(即,源自 ShareGPT)的 70K 对话示例进行微调。有趣的是,Vicuna 的整个微调过程仅花费了 $300。

Koala [9] 在来自 Alpaca 微调集和各种其他来源(如 ShareGPTHC3OIGAnthropic HH 和 OpenAI WebGPT/Summarization)的大量对话示例数据集上对 LLaMA-13B 进行微调。与之前的模仿模型相比,Koala 在更大的数据集上进行微调,并进行了更广泛的评估。

GPT4ALL [16]GPT-3.5-turbo 的 80 万个聊天完成数据上对 LLaMA-7B 进行微调。除了模型,作者还发布了训练/推理代码和量化的模型权重,可以用来在最小计算资源(例如,笔记本电脑)下进行推理。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [8. 9])

模仿的影响。 这些模型在短时间内发布,并声称能够达到类似于顶级专有模型如 ChatGPT 和 GPT-4 的质量。例如,Vicuna 被发现保持了 GPT-4 92% 的质量,而 Koala 在许多情况下与 ChatGPT 的质量相当或超过;详见上文。这些发现似乎表明,模型模仿可以用于将任何专有模型的能力提炼到一个更小的开源 LLM 中。如果这是真的,即使是最好的专有 LLM 的质量也可以轻松复制,这些模型将没有 真正的优势

“开源模型更快、更可定制、更私密,并且……更有能力。它们用 $100 和 13B 参数做的事情, [Google] 在 $10M 和 540B 的条件下都难以做到。而且它们是在几周内完成的,不是几个月。” — 来自 [9]

模仿模型的爆炸性增长是开源模型首次真正被视为对主导 LLM 领域的闭源 LLM 的潜在替代品的实例之一 自 GPT-3 提议以来。尽管付费 API 的使用已成为标准,但模仿模型的惊人表现激发了对开源 LLM 的承诺感。

模仿模型是否是虚假的承诺?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [6])

尽管模仿模型表现出色的前景,但我们在[6]中看到我们遗漏了一些重要的东西。即,更具针对性的评估表明,这些模型的表现远不如顶级专有 LLM,如 ChatGPT 和 GPT-4。事实上,我们看到,通过模仿微调基础模型实际上几乎没有缩小开源模型和专有模型之间的性能差距。相反,结果模型往往只在微调集大量表示的任务上性能有所提升,甚至可能有更明显的幻想倾向。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [6])

实验设置。 为了确定模仿学习的实用性,[6]中的作者从 ChatGPT 中策划了约 130K 个多样化对话示例的数据集。然后,对各种规模的语言模型进行不同数量的模仿数据微调,然后测量它们的性能。如上所示,我们可以从这些实验中得出一些有趣的观察结果:

  • 用于微调的模仿数据量不会在人工评估试验中改善模型质量。

  • 模仿模型在标准化基准上的表现通常比基础模型差(并且随着更多模仿数据的使用而恶化)。

  • 增加基础模型的规模会一致地提高结果模仿模型的质量。

这里发生了什么? 当对模仿模型进行更广泛的自然语言基准评估时,我们发现它们的表现与相应的基础 LLM 相当或更差。换句话说,模仿模型实际上无法匹敌像 ChatGPT 这样的模型质量。与专有 LLM 相比,这些模型的知识基础不够广泛,正如通过更大基础模型观察到的性能提升所揭示的那样。

“我们认为,提高开源模型的最高杠杆作用是解决开发更好的基础语言模型的困难挑战,而不是走捷径模仿专有系统。” — 来自 [6]

鉴于此,我们可能第一个问题是:为什么这些模型看起来表现如此出色? 我们在[6]中看到,模仿模型学习模仿像 ChatGPT 这样的模型的风格。因此,人类工作者可能会被误导,认为该模型质量很高,即使它生成的信息更频繁地事实不准确(即,这更难以轻易检查或验证)。

模仿学习真的有用吗?

“我们的研究表明,无论这些解释是由人类还是更先进的 AI 模型生成,从逐步解释中学习是提高模型能力和技能的一个有前途的方向。” — 来自 [1]

在 [6] 的研究揭示模仿模型的表现远不如最初预期之后,研究界对模仿模型是否真正有价值感到不确定。值得注意的是,[6] 的分析表明,局部模仿 —— 即在特定任务上学习模仿模型的行为,而不是整体模仿其行为 —— 是相当有效的。然而,这并不意味着模仿模型在整体上能够匹配专有模型的质量。为了使模仿模型在整体上更好,[6] 的作者提出了两个前进方向:

  • 生成一个更大、更全面的模仿数据集

  • 创建一个更好的基础模型以用于模仿学习

有趣的是,这些建议都被后续的研究广泛探讨,并发现其效果积极。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12])

Orca [12] 是一个基于 LLaMA-13B 的模仿模型。然而,与先前的模仿学习工作相比,Orca 是在从 ChatGPT 和 GPT-4 收集的更高质量、更详细、更全面的数据集上训练的。特别是,之前为模仿学习收集的数据集可以被认为是“浅层”的 —— 它们只是由类似 ChatGPT 的模型生成的提示和响应对的示例;见上文。

“我们得出结论,要通过纯粹的模仿广泛匹配 ChatGPT,需要大力收集巨大的模仿数据集,并且需要比目前可用的更多样化和更高质量的模仿数据。” — 来自 [6]

在浅层模仿的基础上,Orca 试图通过以下方式增强由 ChatGPT 或 GPT-4 生成的模仿数据集:

  • 解释追踪

  • 步骤思考过程

  • 复杂的指令

为此,被模仿的模型会通过指令或系统消息被提示提供其响应的详细解释。这种方法超越了简单的提示-响应对,通过为模仿模型所见的数据添加额外的有用信息。当从像 ChatGPT 这样强大的 LLM 学习时,Orca 不仅仅看到模型的响应。即,它可以从与模型响应一起生成的详细解释和思考过程中学习复杂的提示!见下文的插图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12])

在经过大量这样的详细模仿数据(即来自 ChatGPT 的 500 万个示例和来自 GPT-4 的 100 万个示例)进行微调之后,我们看到 Orca 相比于先前的模仿模型表现极为出色;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12])

尽管 Orca 显著缩小了开源模仿模型与专有 LLM 之间的差距,但我们仍然看到下表中该模型始终被 GPT-4 超越。不幸的是,即使改进的模仿方法也不足以完全匹配顶级专有模型的质量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [12])

尽管如此,Orca 的出色表现表明,模仿学习是一种有价值的微调策略,可以大幅提升任何高质量基础 LLM 的性能。进一步来看,我们在 [12] 中了解到,成功利用模仿学习有两个主要要求:

  • 一个大型、全面的模仿数据集

  • 每个响应中的详细解释跟踪

更好的基础 LLM。 尽管 [6] 中的作者认为收集足够大且多样的模仿学习数据集极为困难,但我们从 Orca 中看到,这样的成就至少是可能的。此外,后续工作广泛探索了 [6] 中的替代建议:创建更强大的(开源)基础模型。虽然开源预训练 LLM 最初表现不佳,但我们最近看到了一些强大的预训练 LLM 的提议;例如,LLaMA [3]、MPT [14, 15] 和 Falcon [13]。鉴于模型预训练是后续任何微调(例如,模仿学习、SFT、RLHF 等)的起点,从更好的基础模型开始也能提升下游模仿模型的质量!幸运的是,我们在本系列的第二部分中涵盖了所有最佳的开源预训练语言模型。更多详细信息,请见 这里

对齐开源 LLM

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(摘自 [5])

模仿学习试图通过训练专有 LLM 的响应(和解释跟踪)来提高开源基础模型的质量。虽然这种方法在某些情况下是成功的,但(显然)这并不是顶级专有模型的训练方式——模仿是创建强大开源模型的捷径。如果我们想要与专有模型质量相媲美的开源 LLM,我们需要在对齐上投入大量资源。

“这些封闭产品 LLM 被大量微调以与人类偏好对齐,这大大提高了它们的可用性和安全性。这一步骤可能需要大量的计算和人工注释成本,而且通常不透明或不容易复制。” — 摘自 [1]

问题出在哪里? 对齐开源模仿模型的想法似乎很简单。我们有很棒的基础模型,为什么不直接复制像 GPT-4 这样的模型使用的对齐过程? 对齐过程需要大量的计算和人工注释资源。此外,它严重依赖于专有数据,这限制了透明度,使得结果复制变得非常困难。因此,开源模型在对齐研究方面长期以来落后于专有模型。然而,在本节中,我们将探讨两项最新的工作——LIMA [2] 和 LLaMA-2 [1]——它们通过更好的对齐极大地提高了开源 LLM 的质量。

先前的开源对齐工作

在讨论 LIMA 和 LLaMA-2 之前,需要注意的是,开源研究社区并没有完全避免对预训练模型的对齐。例如,Falcon-40B-Instruct [13] 在 Baize 上进行超过 150M token 数据的 SFT。同样,许多经过微调的 MPT-7B [14] 和 MPT-30B [15] 变体也已发布,包括那些在公共数据集上进行 SFT 的聊天/指令变体和一个在具有更长上下文长度的数据上进行微调的 StoryWriter 变体。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 OpenLLM 排行榜)

此外,如果我们简单查看 Open LLM 排行榜(见上文),我们会看到各种不同的模型经历了在各种不同数据集上通过 SFT 进行的微调。开源 LLMs 并没有完全避免对齐。然而,顶级专有模型经历了 SFT 和 RLHF 在大量高质量对话和人类反馈的数据集上进行的训练。相比之下,大多数开源模型仅通过 SFT 在质量和多样性不足的公共数据集上进行了对齐。为了真正匹配专有模型的质量,开源 LLMs 需要尝试复制其对齐过程。

LIMA: 数据高效对齐 [2]

“模型的知识和能力几乎完全在预训练期间获得,而对齐则教会模型在与用户交互时应使用哪种格式子分布。” — 来自 [2]

如上所述,开源 LLMs — 很长一段时间以来 — 主要通过 SFT 在公共数据集上进行对齐。鉴于对 SFT 的高度重视,[2] 中的作者广泛研究了 SFT 对预训练 LLMs 的影响。这项分析的目的是揭示预训练和通过 SFT 对齐在创建高性能 LLM 中的相对重要性,并揭示在经过 SFT 后最大化模型性能的最佳实践。

数据集。 为此,[2] 中的作者构建了一个包含 1,000 个对话示例的小数据集以用于 SFT。尽管这可能看起来数据量不足,但该数据集中的示例经过精心策划,以确保质量,使用了多样化的提示和统一的输出风格或语气;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [2])

用于训练 LIMA 的 SFT 数据集虽然小,但质量极高。有趣的是,我们在 [2] 中看到 LIMA 在这个数据集上的微调表现惊人地好,甚至接近于如 GPT-4 或 Claude 等最先进 LLMs 的性能;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [2])

这样的结果表明,语言模型可以通过少量精心挑选的示例有效对齐。尽管 LIMA 的表现仍未达到 GPT-4,但能够以如此少的数据进行高质量对齐既意外又令人印象深刻。这样的结果告诉我们,数据质量似乎是通过 SFT 进行对齐时最重要的因素。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [2])

我们学到了什么? 我们从 LIMA 中学到了一些有用的经验。首先,数据的质量对于 SFT 至关重要。仅仅使用更多的数据是不够的 —— 数据也需要具有高质量;见上文。此外,[2] 中的结果导致了“表面对齐假说”的提出,该假说提供了对齐的新颖独特视角。简单来说,该假说认为大多数 LLM 的核心知识是在预训练期间 学习的,而对齐则寻求为呈现这些知识找到适当的格式或风格。因此,对齐可以以数据高效的方式学习。

LLaMA-2:提升对齐研究的透明度 [1]

“Llama 2-Chat 是几个月研究和迭代应用对齐技术的结果,包括指令调整和 RLHF,涉及大量计算和注释资源。” — 来自 [1]

最近发布的 LLaMA-2 [1] LLM 套件由多个开源模型组成,规模范围从 70 亿到 700 亿参数。与其前身(即 LLaMA-1 [3])相比,LLaMA-2 模型通过在超过 40% 更多的数据(即 2 万亿个标记而不是 1.4 万亿)上进行预训练、具有更长的上下文长度,并使用优化为快速推断的架构(即通过使用 分组查询注意力 [4])来区分自己。

LLaMA-2 在开源模型中实现了最先进的性能。然而,LLaMA-2 套件不仅仅包含预训练的 LLMs。作者在对齐过程中投入了大量精力,通过在大量对话数据和人类反馈上对每个模型进行微调——使用 SFT 和 RLHF——来实现这一点;见下文。最终模型被称为 LLaMA-2-Chat 模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [5])

这些精细化版本的 LLaMA-2 表现出色,并在弥合开源与专有 LLM 之间的对齐差距方面迈出了重要一步。LLaMA-2 的对齐过程强调两个关键行为特性:

  1. 有用性:模型满足用户的请求并提供所请求的信息。

  2. 安全性:模型避免产生“安全性差”的回应

为确保对齐后的模型既有用又安全,用于 SFT 和 RLHF 的数据会根据这些原则进行过滤、收集和注释。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [1])

SFT. LLaMA-2 对齐过程的第一步是使用 SFT 进行微调。与其他开源 LLM 类似,LLaMA-2 首先在公开可用的指令调优数据上进行微调。然而,这类数据往往缺乏多样性和质量,正如 LIMA [2]所示,这会大幅影响性能。因此,[1]中的作者专注于收集一小部分高质量数据进行 SFT。这些数据来自各种来源,包括手动创建或注释的示例以及经过质量筛选的公共来源数据。最终,LLaMA-2 在 27,540 个高质量对话示例上进行第二阶段的微调;参见上文的示例。

“令人惊讶的是,我们发现从结果 SFT 模型中采样的输出通常与人类注释员手写的 SFT 数据相当具有竞争力,这表明我们可以重新调整优先级,将更多的注释工作投入到基于偏好的注释中以便于 RLHF。” — 来自 [1]

有趣的是,[1]中的作者观察到,收集更多数据(即超出 27K 高质量示例)对 SFT 的收益递减。这些发现与 LIMA [2] 的实证分析一致。我们不需要大量数据进行 SFT,但数据应当具有高质量!有趣的是,[1]中的作者还指出,经过 SFT 的 LLaMA-2 模型似乎能够生成自己的 SFT 数据。

RLHF. LLaMA-2 进一步通过 RLHF 在超过 100 万例人类反馈的数据集上进行微调。为了收集这些反馈,采用了二元协议,其中人类注释员被要求写出一个提示,并选择两个 LLM 生成的响应中较好的一个。在这里,人类偏好数据根据有用性和安全性标准进行收集。例如,专注于安全性的人工偏好注释可能会鼓励注释员设计出可能引发不安全响应的对抗性提示。然后,人工注释员可以标记哪些响应——如果有的话——是可取的且安全的。

“在其他条件相等的情况下,奖励模型的改进可以直接转化为 Llama 2-Chat 的改进。” — 来自 [1]

人类反馈数据是批量收集的,LLaMA-2 在每批数据之间通过 RLHF 进行微调。因此,每次 RLHF 试验后,都会迭代创建几个版本的每个 LLaMA-2-Chat 模型,共五个版本。在 [1] 中,我们看到每次收集到新的人工偏好数据时,都会为 RLHF 训练一个新的奖励模型,确保奖励模型准确捕捉到最新模型的人类偏好。此外,我们看到生成的奖励模型的质量出奇地能够预测 LLaMA-2-Chat 模型的整体质量。总体来说,LLaMA-2 在整个迭代 RLHF 过程中经过了超过 100 万实例的人类反馈微调。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [1])

如上图所示,LLaMA-2-Chat 的质量——无论是有用性还是安全性——在与 SFT 和 RLHF 多次对齐的过程中平稳提升。这一可视化清晰地描绘了每种技术对模型质量的影响程度。也就是说,仅仅进行 SFT 不足以达到目标!即便在应用 SFT 后,模型的对齐在每个 RLHF 阶段都会显著改善。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Open LLM 排行榜上的前五名模型均基于 LLaMA-2(来自 Open LLM 排行榜)

性能。 如上所示,LLaMA-2-Chat 模型目前是开源 LLM 的最先进水平,如 Open LLM 排行榜 所示。当将 LLaMA-2-Chat 模型与 [1] 中的其他流行 LLM 进行比较时,我们看到它们在有用性安全性方面远远超过其他开源模型;见下文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(来自 [1])

此外,LLaMA-2 的表现甚至与如 ChatGPT 等顶级专有模型在有用性安全性方面相当。简单来说,这些结果强烈表明 LLaMA-2-Chat 模型的对齐质量很高。生成的模型往往能准确地捕捉并遵循期望的有用性安全性标准。

“[对齐] 可能需要显著的计算和人工标注成本,并且通常不透明或不易复制,限制了社区内在推进 AI 对齐研究的进展。” — 来自 [1]

LLaMA-2 的重要性。 LLaMA-2 对开源 LLM 研究的影响不仅仅体现在性能上设立了新的最先进水平。为什么? 我们在 [2] 中看到,LLaMA-2 采用了一种与以往工作 fundamentally 不同的方法。由于闭源 LLM 通常通过大量专有的人工标注数据进行对齐,这一过程在开源研究中更难以复制。尽管以往的开源模型主要利用 SFT 和公共对话数据来源,但 LLaMA-2 是首批大量投入对齐过程的开源 LLM 之一,精心策划了大量高质量的对话和人工偏好数据用于 SFT 和 RLHF。

结束语

我们现在已经深入研究了从 OPT 到 LLAMA-2 的整个开源语言模型的发展历程。尽管这两个模型之间发生了大量研究,但它们的提议间隔仅一年!开源 AI 研究社区发展非常迅速,跟上这一领域的研究非常令人兴奋、有趣和回报丰厚。能够访问像 LLaMA-2-Chat 这样强大的模型令人谦卑。作为实践者和研究者,我们有能力使用这些模型、从中学习,并真正深入理解它们的工作原理。这样的机会是独特的,不应被视为理所当然。尤其是对于 LLM 来说,开源真是非常酷!

与我联系!

非常感谢你阅读这篇文章。我是Cameron R. WolfeRebuy的 AI 总监。我研究深度学习的经验和理论基础。如果你喜欢这个概述,订阅我的Deep (Learning) Focus 新闻通讯,我通过从基础到高级的相关话题概述来帮助读者理解 AI 研究。你也可以在XLinkedIn上关注我,或者查看我在 medium 上的其他写作

参考文献

[1] Touvron, Hugo 等。“Llama 2:开放基础和微调的聊天模型。”arXiv 预印本 arXiv:2307.09288(2023 年)。

[2] Zhou, Chunting 等。“Lima:对齐的少即是多。”arXiv 预印本 arXiv:2305.11206(2023 年)。

[3] Touvron, Hugo 等。“Llama:开放而高效的基础语言模型。”arXiv 预印本 arXiv:2302.13971(2023 年)。

[4] Ainslie, Joshua 等。“GQA:从多头检查点训练广义多查询变换器模型。”arXiv 预印本 arXiv:2305.13245(2023 年)。

[5] “介绍 Llama2:我们开源大型语言模型的下一代”,Metaai.meta.com/llama/.

[6] Gudibande, Arnav 等。“模仿专有 LLM 的虚假承诺。”arXiv 预印本 arXiv:2305.15717(2023 年)。

[7] Taori, Rohan 等。“斯坦福阿尔帕卡:一种跟随指令的 LLaMA 模型。”(2023 年)。

[8] Chiang, Wei-Lin 等。“Vicuna:一个开源聊天机器人,凭借 90%* ChatGPT 质量给 GPT-4 留下深刻印象。”(2023 年)。

[9] Geng, Xinyang 等。“Koala:一个用于学术研究的对话模型。”(2023 年)。

[10] Yuvanesh Anand, Zach Nussbaum, Brandon Duderstadt, Benjamin Schmidt 和 Andriy Mulyar。GPT4All:通过大规模数据提炼从 GPT-3.5-Turbo 训练助手风格的聊天机器人,2023 年。

[11] Wang, Yizhong 等。“Self-instruct:使语言模型与自生成指令对齐。”arXiv 预印本 arXiv:2212.10560(2022 年)。

[12] Mukherjee, Subhabrata 等。“Orca:从 GPT-4 的复杂解释痕迹中逐步学习。”arXiv 预印本 arXiv:2306.02707(2023 年)。

[13] “介绍 Falcon LLM”, 技术创新研究所falconllm.tii.ae/.

[14] “介绍 MPT-7B:开源、商业可用 Llms 的新标准。” MosaicMLwww.mosaicml.com/blog/mpt-7b.

[15] “MPT-30B:提升开源基础模型的标准。” MosaicMLwww.mosaicml.com/blog/mpt-30b.

[16] 苟建平等。“知识蒸馏:综述。” 计算机视觉国际期刊 129 (2021):1789–1819。

[17] 欧阳龙等。“训练语言模型以遵循人类反馈的指令。” 神经信息处理系统进展 35 (2022):27730–27744。

[18] 格拉斯,阿梅利亚等。“通过针对性人类判断改善对话代理的对齐。” arXiv 预印本 arXiv:2209.14375 (2022)。

人工智能的另一面:领导 AI 团队和项目的艺术

原文:towardsdatascience.com/the-human-side-of-ai-the-art-of-leading-ai-teams-and-programs-d488538e9a65?source=collection_archive---------4-----------------------#2023-05-11

如何成功管理不确定性并实现创新

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Przemek Pospieszny

·

关注 发表在 Towards Data Science · 11 分钟阅读 · 2023 年 5 月 11 日

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

克里斯托弗·C·克拉夫特 Jr. 阿波罗计划期间的任务控制中心(休斯顿)(有少许调整),公有领域

空间和机器学习项目有什么共同点?

很多共同点!例如,高度不确定性、研究导向的特性、即兴发挥以及许多其他因素。机器学习专业人员常常像是在探索人类的宇宙先锋,其中创造力和即兴发挥往往扮演着重要角色。

也许机器学习项目并不像建造和发射到月球的星际飞船那样复杂,但相比于标准的软件工程程序,它们难以规划且需要频繁调整。因此,许多 AI 领导者在预定的时间、精力和成果限制内难以交付 AI 解决方案。此外,由于对 AI/ML 人才的高需求,他们难以应对团队内的高流动率。

在这篇‘简短’的文章中,我将分享一些来自我 15 年领导数据工程、数据科学和机器学习团队及项目的有用技巧。这无疑是一个广泛的话题,可能适合写成一本书(也许有一天?)。不过,我将给你一个关于如何更成功地领导高绩效 AI/ML 团队的预览,这些团队工作于研发、应用研发或专注于生产化。

本文适用于那些希望成为领导者的 MLR/MLEs、想提高技能的经理、高级领导者(以更好地辅导/指导),或对 AI 领导力感兴趣的 AI 爱好者。

成功在前,失败不是选项!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源于 SpaceX 来自 Pexels

休斯顿,我们这儿有问题!

让我们从挑战开始。为什么这么难?

乍一看,这可能像其他任何软件程序或项目,你有一个工程师团队,定义目标,应用某种形式的敏捷(scrum、sprints、每日站会等),偶尔与他们同步(啊,乏味的事,我非得做吗?),然后就开始了!

是的,你可能面临与任何软件经理或领导者相同的问题,比如对人才的高需求、稀缺性、分布式团队、低士气,以及过度的辅导和指导工作。此外,你可能会觉得每个人,特别是 LinkedIn 上的招聘人员,都想挖走你辛苦培养的顶尖人才……你还会责怪他们团队的高流动率。

然而,真正的区别和挑战在于你如何处理机器学习解决方案的研究、原型设计和开发,更重要的是,如何管理你的团队。只列举几个与 AI 项目相关的主要挑战:

  • 不确定性与规划 — 目标不明确,对交付成果及其形式(什么会有效、如何有效)存在高度不确定性。因此,常常缺乏规划、估算和监控,成功标准模糊/未量化,这些都阻碍了进展和最终结果的衡量。

  • 非线性进展 — 机器学习的进展是不规则的,需要频繁的调整。无论是研发还是产品导向的项目,应用最合适的方法通常并不明显,需要实验。有时,魔法般的某一天… 响了,成功了!(或者没有……)。

  • 创新与实用性 — 在处理新颖的机器学习想法时的诱惑,通常是基础研究,应用最近论文中的进展,同时脱离目标,通常是应用方面、最终用户的视角、部署、维护和其他约束。需要保持平衡。

  • 利益相关者 — 来自利益相关者的压力要达成预定的里程碑,对机器学习及其研发性质的缺乏理解、复杂性和高投入。这通常包括那些投入(如数据收集或工程)超过所开发解决方案所带来的收益的用例和举措。

  • 缺乏人才 — 好的 AI 工程师稀缺是一个众所周知的事实。你可能会经常面临人员不足的情况,缺少 MLR、MLE 或优秀的数据工程师。通常需要调整职责并承担多重角色。这也涉及到提高工作效率的压力,这可能会对团队产生长期的负面影响。

如果再加上 1) 具有有限机器学习知识的经理/领导,或 2) 由有限管理经验和软技能的软件工程师晋升而来的领导,那……

是的,的确,我们有一个问题!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SpaceX 的照片来自 Pexels

成功轨迹——如何实现?

好的,那么我们如何应对这些挑战呢?下面,你将找到一些如何实现成功最佳路径的提示:

1. 一个好领导者……一个超级英雄?

绝对不是,尽管有时可能会觉得如此。实际上,这是一个团队努力的结果,涉及到你的团队和其他小组的共同工作。你的工作是掌舵,给团队提供合适的工具,关注事情的进展,提供技术指导,清除障碍,预测风险,并处理出现的问题。

一个好领导者有许多特质,但 情感智力、同理心和良好的沟通技能 极为重要。

你应该定义一个愿景并说服你的团队成为其中的一部分(字面意思是卖给他们!)。不要忘记,你是他们的教练和导师,他们的发展和职业进步也依赖于你!即使你还没有完全掌握这些特质也没关系。关键是开始着手培养它们。

2. 合适的团队氛围

这意味着什么?

建立正确的团队和文化对任何 AI/ML 项目的成功至关重要。从营造一种类似初创公司的氛围开始,使团队围绕共同目标充满活力。鼓励社交、包容性、自主性以及创新和持续学习的文化。然而,最重要的是培养创造力,因为它将在危机和转型时帮助你——这种情况会经常发生。

OpenAI 的 CEO 萨姆·奥特曼 曾表示, 信任、自主性、努力工作以及完善的流程 是实现成功的关键。

我想补充的是,激励和授权团队成员实现其全面潜力对于实现高效的 AI/ML 团队至关重要。

不要忘记与团队社交!即使是每周的午餐也能带来价值。

3. 学习永不使思想衰竭

AI 是一个快节奏的领域,每周都有新的论文和突破。为了保持当前性和竞争力,AI/ML 团队必须持续更新他们的技能和知识。投资于团队的学习和发展不仅会提高他们的技能,还将有助于整体推动你的 ML 计划的成功。

培养实验和创新的文化,鼓励团队成员探索新想法,尝试新技术,并使用新工具进行实验。

你可以通过为实验或举行创意会议保留项目时间来实现这一点。通过共同工作和分享知识,团队成员可以从彼此的优势和专业知识中学习,并共同合作开发复杂问题的新解决方案。

4. 创新与实用性 —— 平衡!

AI/ML 中的平衡至关重要,就像其他一切一样。你需要在创新与实用之间找到一个平衡点。这可能涉及到:

  • 致力于解决正确的问题或使用案例 —— 它是否将使人们受益?它是否有更长远的愿景?还是仅仅是非常酷?

  • 开发解决问题或启用用例的方法 —— 选择快速胜利?最先进的解决方案?还是会彻底改变 AI/ML 并带来声誉的新方法!

两者不可互斥,但最重要的是你如何处理它们。例如,如果你正在处理应用案例,专注于达成目标,即使需要使用基础模型。始终以最简单的解决方案为目标。但不要忘记留出一些资源和时间进行研究。与团队合作应用最新进展(带代码的论文通常很有帮助),或者创造你自己的方法。这样,你可以进一步提升模型的性能,将其用于未来项目,甚至可能在 NeurIPS、ICML、CVPR 或其他优秀的 ML 会议上发表研究论文。

5. 结构化但灵活

要取得成功,你需要一个稳健的过程,能够快速且迭代地交付。它不一定非常结构化;相反,它应该是一个灵活的过程,你可以根据项目类型进行调整。例如,我非常喜欢将敏捷方法与瀑布模型结合(称为 WaterScrumFall)。你在高层次上计划你的活动(目标、里程碑、发布、成功标准等),但在执行过程中通过周冲刺进行迭代,以应对变化的情况,并在必要时迅速转向。

但是,你必须根据你的需求、现有的其他流程、各种约束以及你的偏好或习惯来设计这样的过程。但要灵活;每个团队和项目都是独特的。例如,一个在办公室进行研发项目的成熟团队可能会发现看板很有帮助,同时取消每日站会。

同样的规则适用于工具。市场上有很多优秀的工具。尝试与团队一起使用它们,选择最适合你的工作和流程的工具,并用它们来支持你的工作。

6. 计划、计划、再计划!

你可能经常听到,“这是研发,无需计划,一切都关于实验和发现”。胡说,相信我。

的确,ML 项目中的不确定性很高,但只有规划才能帮助你理解它、规划各种场景并控制它。在开始任何 ML 项目、迭代或活动之前,花一些时间进行规划。我知道,尤其是在早期阶段,这非常困难,因为可能不清楚什么会有效。但规划是一项能帮助你控制未知、准备各种场景并降低风险的练习。

定义你的目标和成功标准,首先选择快速的胜利,并将其分解为里程碑或主要任务。不要深入挖掘;记住,你还需要保持灵活。

考虑到 ML 进展通常是 非线性的*。

投入时间到风险管理中。等一下,真的?谁会做这些? 你应该。创建一个潜在风险的清单和一个缓解计划,定期与团队更新。随着时间的推移,你会发现管理不确定性会变得更加可控。

7. 监控、衡量和沟通

但也不要过于痴迷于此!

规划过程的一部分是定义成功标准和指标,以便跟踪你的进展。为了监控目的,你可以将它们分配到各个阶段和里程碑中。它们可以反映具体的方面,如模型性能、延迟或涵盖的用户体验用例。但它们也可以是无形的,如用户满意度,在某些情况下,这可能比具体指标更重要。

确保你设定现实的 KPI,并且如果项目需要调整,愿意改变它们。

还有不要忘记沟通。这是每一个成功的 ML 活动的关键因素。让你的利益相关者了解你的进展、风险和问题是至关重要的。每周或每两周的会议效果最佳(即使它们很短)。用通俗的语言教育他们关于 ML 的知识将对你大有帮助。

8. 庆祝与反思

最后,与团队一起庆祝,欣赏即使是小的成功,如达成里程碑或让模型收敛。这样可以提升士气,加强团队合作,并保持团队的创造力。认识到团队的辛勤工作并保持每个人的积极性很重要。你可以用任何方式庆祝——也许喝点咖啡,买个蛋糕或举行团队晚宴。即使只是通过聊天或邮件发送一条消息,也能带来不同的效果!

那反思呢?这也是一项至关重要的活动,你应该以回顾会议或经验教训的形式与团队一起进行。这不是为了责怪任何人,而是让团队成员作为一个整体退一步,评估哪些做得好,哪些可以做得不同,以便在研究、开发、协作、沟通、管理等相关方面变得更有效。

通过庆祝成功和反思失败,你也可以培养一种创新文化,让每个人都感到鼓励去冒险和尝试新事物。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(左)凯瑟琳·约翰逊,第一位女性和非洲裔美国 NASA 科学家之一,负责计算水银和阿波罗计划的轨迹,公有领域 | (右)阿波罗导向计算机,基于硅集成电路的第一台计算机,CPU 2MHz,4kB RAM,公有领域

如何避免偏离方向?

如果你想让你的团队(和你自己)成功,尽量避免常见的错误。下面列出了一些:

  • 我、我和我 —— 不,这是一项协作的努力,你无法仅凭自己做到太多。赞扬你的团队,而不是自己!

  • 我能做得更好、更快 —— 你确定吗?领导力在于委派和信任,并在合理的时间内工作。

  • 这是研发,不需要规划 —— 真的?每一个研发项目都需要规划,以管理不确定性并确保产出。如果不这样做,你可能会无休止地进行下去……

  • 阅读一篇有趣的论文,我们来试试! —— 专注于交付,然后再尝试新事物。大多数论文仅在特定条件下有效。

  • 每月的团队会议就能解决问题 —— 你将如何管理你的团队,分享共同目标,并保持他们的积极性?安排短时间但更频繁的会议,也要进行一对一的沟通。

  • 这是约翰的错 —— 这不是真的。你对团队及其表现负有责任,始终问问自己你可以做得更好或不同,以缓解问题。

  • 团队流失率高是正常的 —— 这可能很常见,但你在做什么来防止它?招聘和培训新成员可能很昂贵,需要长达一年。在这段时间里,团队的生产力将受到影响,宝贵的知识和经验可能会永久丧失。

  • 模型未收敛,让我们向其中注入更多数据 — 但数据收集和标记既昂贵又耗时。首先要弄清楚为什么它不起作用(数据、方法、模型和参数),确定更多数据是否真的会带来价值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(左) 照片由 Mike Kiev 提供自 Pexels | (右) 阿波罗 13 号着陆,公共领域

就这些了?没有更多的建议了吗?

我已经与你分享了一些主要的方法。通过遵循这些技巧,你可以克服 AI 项目的挑战,并确保项目的成功。

记住,AI 是一个快速发展的领域,保持创新需要一个优秀的团队、奉献精神、计划、在实用性与创新之间取得平衡,以及持续学习。

谦逊而好奇。祝你旅途顺利和成功! 🚀

顺便说一句,我强烈推荐 Gene Kranz 的书‘Failure is not an option’。它概述了早期太空计划的复杂性,同时强调了在面对挑战和挫折时领导力、团队合作和毅力的重要性。有时候,我觉得在 AI 开发,特别是通用人工智能方面,我们正处于试图登月的阶段!

感谢阅读。请随意在 LinkedIn 上联系或留言。

如果你喜欢这篇文章,请随时查看我的另外两篇:

## 如何有效定义和验证 AI/ML 用例

大多数数据专业人士都在努力定义能转化为 AI/ML 解决方案并带来实际价值的用例。

[向数据科学迈进 ## 我如何建立一个数据科学实验室并休假

学习如何有效地开发数据科学单元并避免常见的陷阱

[向数据科学迈进

数据科学中的讲故事的重要性

原文:towardsdatascience.com/the-importance-of-storytelling-in-data-science-38eb625356d2

意见

为什么我们需要故事来解释数据科学

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 克里斯·沃尔什

·发表于Towards Data Science ·阅读时间 5 分钟·2023 年 2 月 15 日

讲故事是人类文化的一部分,已有数千年的历史,人们天生对故事具有吸引力。故事是传达思想和信息的强大工具。它们能够唤起情感,建立联系,这些是统计数据和数据所无法做到的。为了成功,数据科学家必须能够从他们的工作中创造故事。在复杂概念、统计模型和大量数据成为常态的情况下,讲故事对于确保发现被理解、记住和付诸实践至关重要。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由梅根·马丁拍摄,发布在Unsplash

故事将统计数据和数据中的所有抽象冷漠转化为我们客户可以关联的东西。故事具有结构:开头、中间和结尾,使其易于理解。它们具有相关性。故事描绘了人们能够认同的角色和情境。它们将新的信息与人们已知的事物建立联系。

此外,人们对于理解抽象的概念并不擅长。我们的脑袋被设计来处理可以看见、听见、触摸、品尝或嗅到的具体、可触及的信息。另一方面,统计数据和数据通常是无形的,难以理解。例如,44%的人认为披萨作为早餐是完全可以接受的[1],一开始并没有感觉很有意义。这很多吗?少吗?但如果说你五个朋友中的两个可能吃披萨作为早餐,这让我们对统计数据有了更多的感受。对我来说,这似乎很多!如果我们想要明确这个统计数据,我们可以使其更具体:

想象一下你所在的小镇举行社区早餐会,居民们被邀请尝试早餐披萨。如果有十个人参加,你可以预计其中有 4 个人会乐意吃披萨!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Chad Montano拍摄,来源于Unsplash

抽象的概念通过围绕数据和统计数据编织故事变得具体和切实。这样更容易被理解和记住。关于一个客户遇到问题并通过数据驱动的解决方案获得帮助的故事,可以引发同理心和兴趣。相比之下,呈现客户满意度的统计数据可能只会引来一声叹息。在展示数据时,至关重要的是不仅要传达事实,还要与观众建立联系,使数据对他们有意义且相关。

那么,讲故事的作用是什么呢?让我们考虑一个预测流失概率的模型——即客户流失的概率——对于我们组织的任何给定客户。

传达复杂信息:复杂的模型和大量数据可能难以理解。讲故事可以将这些复杂的概念分解为较小的、易于处理的部分,突出关键见解。例如,我们可以描述一个高预测流失概率的客户,他最近搬到了一个新地方,并且使用服务的频率减少了。通过关注这些信息对模型预测的影响,我们可以帮助观众理解模型的潜在驱动因素。

吸引观众: 数据可能枯燥乏味,使得保持观众的注意力变得具有挑战性。讲故事可以通过创建一个与观众相关的叙述,使数据更加吸引人。例如,我们可以突出一个客户使用我们移动应用的情况是客户忠诚度的强指示,以及模型在做出流失预测时考虑了这一信息。这有助于将数据赋予生命,使其对观众更具意义。

推动行动: 数据沟通的目标往往是推动行动,例如做出决策、实施具体建议或改变人们对问题的看法。在我们的例子中,我们可以讲述一个客户被预测流失但成功留住的故事。也许该客户最近搬家,使用我们服务的频率减少了,但客服团队通过指出一家客户未意识到的附近店铺成功挽留了他们。未来,我们知道当客户搬家时,我们应向他们发送新地区附近店铺的详细信息。这个故事突出了客服团队为留住客户所采取的具体行动,并展示了这些行动如何作为未来客户留存工作的模型。这通过提供具体的例子来展示流失模型的结果如何用于改善业务,从而推动行动。

让数据难以忘怀: 在展示数据时,确保观众记住关键见解和建议是至关重要的。讲故事可以通过创建一个让客户铭记的叙事来使数据更具特殊性。在我们最近搬家的客户例子中,我们可以给客户一个虚构的名字,或者如果我们有他们与客服的沟通记录,我们可以将一些内容融入故事中。这使得故事对观众来说更加真实。它变成了一个他们可以视觉化的具体事物。观众将在演示后更好地理解和记住数据。

讲故事是数据科学家可以用来使发现更具关联性、难以忘怀和有影响力的强大工具。通过将数据与叙事结构结合,我们可以以一种对观众易于理解和吸引的方式传达复杂的信息。此外,讲故事可以帮助推动行动,使数据难以忘怀,从而确保数据分析的结果被有效利用以推动积极成果。随着数据科学在决策中的关键作用不断增加,讲故事作为沟通工具对寻求用工作产生真正影响的数据科学家来说将变得越来越重要。

联系我们

随时通过LinkedIn与我联系,以获取有关数据科学领域的更多见解。

参考文献

[1] 《人物》杂志。(2021)。美国人最喜欢的比萨饼配料:故事。从people.com/food/americans-favorite-pizza-toppings-story/获取。

LLMs 的无限巴别图书馆

原文:towardsdatascience.com/the-infinite-babel-library-of-llms-90e203b2f6b0

| 人工智能 | 未来 | 变压器 |

| — | — | — |

开源、数据和关注:LLMs 未来将如何改变

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Salvatore Raieli

·发表于 Towards Data Science ·16 分钟阅读·2023 年 5 月 8 日

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者使用 OpenAI DALL-E 创建的图像

“‘人工智能的教父’ 离开谷歌并警告前方危险” 是纽约时报的标题。如果语言模型没有开源,我们怎么知道它们是否对人类构成威胁?实际上发生了什么?语言模型的世界如何在变化的边缘。

号召开源运动

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像由 Nik Shuliahin 提供,来自 Unsplash.com

不久前 GPT-4 向公众公开,我认为我们都去阅读了技术报告,但感到失望。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

技术报告 GPT-4。由作者截屏,图像来源:这里

最近,《自然》也讨论了这个问题:我们需要 大型语言模型 (LLMs) 开源。

许多 LLMs 是专有的,没有发布,我们不知道它们是用什么数据训练的。这不允许对它们进行检查和测试,特别是关于偏见的方面。

此外,与 ChatGPT 分享信息和代码存在泄漏的风险 如三星所发现。更不用说,一些州认为 这些公司的数据存储违反了 GDPR

这就是为什么我们需要大语言模型开源,并且应当更多地投资于新大语言模型的开发,比如BLOOM 联盟(一个由学术联盟开发的 1700 亿参数的大语言模型)。

近年来,经常出现对这些大语言模型实际能力和人工智能风险的夸张报道。如果研究人员无法测试模型,他们就无法真正评估其能力,分析风险也是如此。此外,开源模型要透明得多,社区也可以尝试找出问题行为的源头。

此外,这并不是学术界的要求,机构对人工智能感到警惕。欧盟这些天正在讨论可能重塑 LLM 未来的欧盟人工智能法案。与此同时,白宫正在施压科技首席执行官以限制人工智能的风险。因此,开源可能实际上成为语言模型的未来要求。

为什么 ChatGPT 如此优秀?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们都听说过 ChatGPT,以及它如何看起来具有革命性。但它是如何训练的呢?

[## 关于 ChatGPT 的一切,你需要知道的一切

了解现状,获取最新新闻,了解其影响和变化,一篇文章全涵盖。

medium.com](https://medium.com/data-driven-fiction/everything-but-everything-you-need-to-know-about-chatgpt-546af7153ee2?source=post_page-----90e203b2f6b0--------------------------------)

让我们从一个事实开始,ChatGPT 是基于一种大语言模型(准确地说是 GPT 3.5)进行训练的。通常,这些类似 GPT 的语言模型是通过预测序列中的下一个标记进行训练的(从标记序列 w 中,模型必须预测下一个标记 w+1)。

该模型通常是一个变换器:由一个接收输入序列的编码器和一个生成输出序列的解码器组成。这个系统的核心是多头自注意力机制,它允许模型学习有关上下文和序列各部分之间依赖关系的信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:这里

GPT-3 就是采用这种原则进行训练的(像其他生成预训练变换器系列中的模型一样),只不过有更多的参数和数据(570GB 的数据和 1760 亿个参数)。

GPT3具有巨大的能力,但在生成文本时,它经常出现幻觉、缺乏帮助、不可解释,并且常常包含偏见。这意味着模型与我们期望的像人类一样生成文本的模型并不对齐。

我们如何从 GPT-3 中获得 ChatGPT?

这个过程称为来自人类反馈的强化学习(RHLF),作者在这篇文章中进行了描述:

[## 通过人类反馈训练语言模型以遵循指令

让语言模型变得更大并不会自动提高它们遵循用户意图的能力。例如,大型…

arxiv.org

在这里,我将非常简要地描述它。具体来说,它包括三个步骤:

  1. 监督微调是第一步,其中 LLM 被微调以学习监督策略(基线模型或 SFT 模型)。

  2. 模仿人类偏好,在这一步中,注释员必须对基线模型的一组输出进行投票。这些经过整理的数据集用于训练新模型,即奖励模型。

  3. 近端策略优化(PPO),在这里,奖励模型用于微调 SFT 模型并获得策略模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:这里

为了准备第一步,OpenAI 收集了一系列提示,并要求人类注释员写下预期的响应(12–15K 提示)。其中一些提示来自 GPT-3 用户,因此在 ChatGPT 上写的内容可能会用于下一个模型。

作者使用了作为模型的 GPT-3.5,该模型已经在编程代码上进行了微调,这也解释了 ChatGPT 的代码能力。

然而,这一步并不完全具有可扩展性,因为它是监督学习。无论如何,由此获得的模型尚未对齐。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:这里

注释员根据 SFT 模型的响应范围进行标注,根据响应的期望程度(从最差到最好)。我们现在拥有一个更大的数据集(10 倍),并将 SFT 模型的响应提供给新模型,新模型必须按偏好顺序进行排名。

在这一阶段,模型正在学习关于数据的一般策略,以及如何最大化其奖励(当它能够很好地排名输出时)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:这里

因此,我们有了 SFT 模型,并使用其权重来初始化一个新的 PPO 模型。该模型使用近端策略优化(PPO)进行微调。

换句话说,我们使用了强化学习算法。PPO 模型接收到一个随机提示并对其做出响应,然后它会收到惩罚或奖励。与经典的 Q-learning 相比,这里模型策略会在每次响应后更新(模型直接从经验中学习,在策略上)。

此外,作者使用每个 token 的 Kullback-Leibler (KL) 惩罚,使模型的响应分布类似于 SFT 模型的分布。这是因为我们希望通过 RL(由于奖励模型)优化模型,但我们仍然不希望它忘记在步骤 1 中学到的内容,这些是由人类策划的提示。

最后,该模型在三个方面进行评估:有用性、真实性和无害性。毕竟,这正是我们希望优化的方面。

一个值得注意的事实是,当在经典基准测试(问答、摘要、分类)上评估时,该模型的表现低于 GPT-3。这就是对齐的代价。

Alpaca,一种革命性的动物

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 Dong Cheng 在 Unsplash 提供

如前所述,确实需要研究这些模型的行为,只有在它们是开源的情况下才能做到这一点。另一方面,任何语言模型都可以使用 RHLF 进行对齐。

RHLF 比从头开始训练模型要便宜且计算密集度低得多。另一方面,它要求有标注者(你确实需要一个包含指令的数据集)。但这些步骤不能自动化吗?

第一步是 Self-instruct,在这篇 2022 年的文章中,作者提出了一种半自动化的方法。实际上,一般的想法是从一组手动编写的指令开始。这些指令集既作为种子,又确保涵盖了大多数 NLP 任务。

从仅有的 175 个指令开始,模型生成了数据集(50k 指令)。然后,该数据集用于指令调整。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SELF-INSTRUCT 的高级概览。图片来源:这里

仅有一个模型需要的方法。ChatGPT 基于 OpenAI GPT-3.5,但难道不能使用更小的模型吗?它真的需要超过 100 B 的参数吗?

相反,斯坦福研究人员使用了 LLaMA,特别是 7B 版本,并按照 self-instruct 方法生成了 52 K 指令(使用 OpenAI 的 text-davinci-003 生成的指令)。Alpaca 的真正价值在于作者简化了流程,大大降低了成本,使任何学术实验室都能复制这个过程(在 这个库 中)。实际上如所述:

在我们的初步运行中,微调一个 7B 的 LLaMA 模型在 8 台 80GB 的 A100 上花费了 3 小时,这在大多数云计算提供商上花费不到 100 美元。(source)

初步模型评估显示,Alpaca 的表现几乎与 GPT-3.5 一致(在某些情况下甚至超过了 GPT-3.5)。这可能让人感到惊讶,因为这是一个体积小了 20 倍的模型。另一方面,该模型在一系列输入下表现得像 GPT(因此训练相当于一种知识蒸馏)。另一方面,该模型也具有典型语言模型的相同局限性,表现出幻觉、毒性和刻板印象。

Alpaca 证明了任何学术实验室都可以训练自己的 ChatGPT 版本(使用 LLaMA,该模型仅供研究使用)。另一方面,任何使用其他模型的公司都可以调整并创建自己的 ChatGPT 版本。此外,类似的模型甚至可以部署在手机树莓派计算机上。

作者发布了一个演示,但在短时间内被关闭(出于安全考虑)。此外,尽管使用 LLaMA 需要申请(并访问模型权重),但几天后模型被泄露到网上

LLM 是否处于革命的边缘?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:这里

看起来自从 ChatGPT 发布以来已经过了好几年,但实际上仅仅只有几个月。到那个时候,我们在讨论幂律法则,如何让一个模型拥有更多的参数、更多的数据和更多的训练,以便使新兴行为得以出现。

这些想法促成了我们可以为语言模型定义一种摩尔定律的想法。在某种意义上,近年来我们几乎看到了一个指数法则(我们从 GPT-2 的 15 亿参数发展到 GPT-3 的 1750 亿参数)。

有什么变化?

对这个理论的第一次冲击可以称之为,Chinchilla的到来。DeepMind 的模型表明,这不仅仅是数据量的问题,还有数据质量的问题。其次,META 的 LLaMA 表明,即使是使用精心挑选的数据集的小型模型也能取得与大型模型相似甚至更好的结果。

这不仅仅是模型的问题。数据是另一个问题。人类生产的数据不足,可能不够支持任何需要按照幂律法则所需的 GPT-5。其次,数据将不再像以前那样容易获取。

实际上,Reddit(一个受欢迎的数据资源)已宣布AI 开发者将需付费才能访问其内容。即使是维基百科也有相同的想法,现在StackOverflow也在朝着这个方向发展,它将要求公司支付费用。

Stack Overflow 的 Chandrasekar 说:“社区平台为 LLMs 提供支持,绝对应该得到补偿,以便像我们这样的公司可以重新投资于我们的社区,使其继续繁荣。”他说:“我们非常支持 Reddit 的做法。” (来源)

即使有人设法获得数据,对于公司而言,数据的安全性也未必得到保障。Getty 已经起诉了一款 AI 艺术生成器,但艺术家们也提出了诉讼。更不用说,程序员们也对GitHub Copilot提起了诉讼,GitHub Copilot 是基于代码库中的代码进行训练的。此外,音乐行业(以诉讼著称)对 AI 生成的音乐表示反对,并呼吁反对流媒体服务。如果即使 AI 公司援引合理使用进行上诉,未来它们是否能继续获得相同的数据访问权限仍然不确定。

除了通过异质模态扩展模型之外,还需考虑另一个因素,自 2017 年起,transformer 架构没有发生变化。所有语言模型都基于这样一种信条:只需多头自注意力机制即可,无需更多。直到最近,Sam Altman 仍然认为架构的可扩展性是 AGI 的关键。但正如他在最近的MIT 活动上所说,AGI 的关键不在于更多的层和参数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像来源:这里

transformer 存在明确的局限性,这在语言模型中得到了反映:幻觉、毒性和偏见。现代大型语言模型(LLMs)不具备批判性思维能力。诸如思维链和提示工程等技术作为补丁,试图缓解这些问题。

此外,已经证明,多头自注意力能够解决 RNN 派生的问题,并且允许行为的出现,因为上下文学习具有二次成本。最近,已发现不能用非二次的注意力变体替代自注意力,否则会失去表达力。然而,像 Spike-GPTHyena 这样的工作表明,存在不基于自注意力的成本较低的替代方案,并且在构建语言模型时可以获得类似的结果。

同样,使用 RHLF 对齐模型在各种任务中的表现也有一定的成本。因此,语言模型不会取代“专家模型”,但未来可能会成为其他模型的协调者(如 HuggingGPT 所建议的)。

你无法阻止开源,为什么它总是能胜出

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 Steven Lelham 提供

是 MidJourney 还是 DALL-E 更好?也许很难说。可以肯定的是,stable diffusion 是制胜的技术。由于 stable diffusion 是开源的,它催生了许多应用,并且成为了许多衍生研究的灵感(ControlNet、医学成像的合成数据、大脑的类比)。

通过社区的努力,Stable diffusion 在其各种版本中得到了改进,并且有无尽的变体。另一方面,没有一个 DALL-E 的应用没有基于 stable diffusion 的对应物(但反之则不成立)。

那么,为什么语言模型没有发生同样的情况呢?

到目前为止,主要问题是训练语言模型是一项费用高昂的任务。BigScience 的 BLOOM 确实是一个巨大的联盟。然而,LLaMA 已经表明,较小的模型也能与超过 100 B 参数的巨型模型竞争。Alpaca 表明,语言模型的对齐也可以以较低的成本(总成本少于 1,000 美元)完成。这些因素使 Simon Willson 能够说“大型语言模型正在迎来它们的 Stable Diffusion 时刻。

从 Alpaca 到今天,出现了许多 开源 模型。不仅 Stability AI 发布了多个与巨头竞争的模型,并且可以被所有人使用,而且其他公司也发布了聊天机器人和模型。在短短几周内,我们见证了:DollyHuggingChat、Koala 等众多新模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者提供的截图。图片来源:这里

现在,提到的一些模型确实是开源的,但它们仅用于非商业用途。虽然这些模型开放用于学术研究,但这意味着感兴趣的公司不能利用它们。

这只是故事的一部分。实际上,HuggingFace 上已经有可以轻松训练的模型(模型、数据集和管道),目前已有多个商业化的模型(至今超过 10 个):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者提供的截图。来源:这里

开源模型、私人数据和新应用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由Muhammad Zaqy Al Fattah在 Unsplash 提供

Dario Amodei,Anthropic 的首席执行官正在寻求数十亿资金以击败 OpenAI 的大型模型。然而,世界的其他地方却在朝另一个方向发展。例如,Bloomberg 虽然在 AI 领域并不知名,已发布了一个金融 LLM(训练于来自金融来源的 3630 亿个标记)。

为什么我们需要用于金融的 LLM?为什么不直接使用 ChatGPT?

Google MedPalm 显示,通用模型的表现不如针对特定主题(在此案例中为医学、科学等文章数据集)微调的模型。

微调 LLM 显然成本很高,尤其是当我们谈论参数达到数百亿的模型时。较小的模型成本较低,但仍然不便宜。META 的 LLaMA 作为开源模型在一定程度上解决了这个问题。事实上,LLaMA-Adapter 的作者展示了仅需增加 1.2 百万参数即可进行微调(训练时间少于一小时)。

尽管 LLaMA 确实不可商业化,但仍有许多其他模型可以使用(从小到大)。显然,在特定领域成功应用的关键是数据。

正如三星不愉快地发现的,在公司内部使用 ChatGPT 是有风险的。即使ChatGPT 现在允许用户禁用聊天记录或拒绝使用他们的数据来训练模型,公司也会认为分享他们的数据存在风险。

许多公司会考虑训练自己的聊天机器人,这是一种基于自身企业数据进行微调的模型,并且将保持内部使用。毕竟,这项技术即使对于预算较小的公司也变得可用和负担得起。此外,低成本使他们能够在新数据到来时或如果有更好的开源模型发布时定期进行微调。现在拥有数据的公司会更不愿意将数据分享出去。

此外,我们已经看到拥有优质数据的重要性。医学和许多其他领域的数据收集困难(昂贵、受规管、稀缺),而拥有这些数据的公司具有优势。OpenAI 可能会花费数十亿试图收集医学数据,但除了成本之外,患者招募需要多年时间和已建立的网络(而 OpenAI 并不具备)。现在拥有数据的公司在分享这些数据时会更加严格。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源 Petrebels 在 Unsplash

此外,像 HuggingGPT 和 AudioGPT 这样的作品表明 LLM 是用户与专家模型(文本到图像、音频模型等)互动的界面。在过去几年中,许多公司已经聘请数据科学家并开发了不同的专业模型以满足其需求(制药公司用于药物发现和设计的模型、制造公司用于组件设计和预测性维护的模型等)。因此,现在数据科学家可以指导 LLM 连接到他们之前训练的模型,并允许内部非技术用户通过文本提示与其互动。

还有另一个因素指向这样的情景,即生成式 AI 的规章不明确(例如,谷歌未发布其生成音乐模型以避免版权侵权)。除了版权问题,关于责任的问题仍然悬而未决。因此,许多公司可能会在接下来的几个月里内化这项技术,创建自己的 AI 助手。

告别的思考

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源于 Saif71.com 在 Unsplash.com

辛顿博士说,当人们曾经问他如何能从事潜在危险的技术工作时,他会引用罗伯特·奥本海默的话,奥本海默领导了美国的原子弹研制工作:“当你看到一些技术上很甜美的东西时,你就去做它。”

他现在不再这样说了。 (source)

辛顿最近表示,我们需要讨论人工智能的风险。但我们不能在一个黑箱中研究炸弹爆炸的风险。这就是为什么模型越来越迫切需要开源。

LLMs 正处于变革的阶段。创建越来越大的模型是不可持续的,并且不再提供曾经的优势。下一代 LLM 的未来将取决于数据,并且可能基于不再依赖自注意力的新架构。

然而,数据不会像以前那样容易获取;公司开始限制对数据的访问。 微软表示愿意允许公司 创建自己版本的 ChatGPT。但公司会持怀疑态度。

一些公司担心他们的业务(似乎 ChatGPT 已经宣称 其第一个受害者),而其他公司则担心数据泄漏。或者,仅仅是因为技术最终几乎触手可及,每家公司都将创建一个符合自己需求的聊天机器人。

总之,我们可以看到不同的趋势(这些趋势在某种程度上已经在发生):

  • 对人工智能日益增长的恐惧正在推动开源模型的发展

  • 这导致了开源 LLM 模型的不断发布。这反过来显示,你可以使用更小的模型并降低对其对齐的成本。

  • 大型语言模型(LLM)对不同的企业构成威胁,公司担心这些模型可能威胁到他们的业务。因此,不同的公司正在减少对其数据的访问或要求人工智能公司支付费用。

  • 成本降低、对竞争的担忧、对专有数据的新相关性以及开源模型的新可用性正促使公司使用开源模型在自己的数据上训练自己的聊天机器人。

你对 LLM 的未来有什么看法?在评论中告诉我

如果你觉得这个话题有趣:

你可以查看我的其他文章,也可以 订阅 以在我发布文章时获得通知,你也可以 成为 Medium 会员 以访问所有故事(这是平台的附属链接,我可以从中获得少量收入,但不会对你产生费用),你还可以通过LinkedIn与我联系或找到我。

这是我 GitHub 仓库的链接,我计划在这里收集与机器学习、人工智能及其他相关的代码和许多资源。

## GitHub - SalvatoreRa/tutorial: 机器学习、人工智能、数据科学的教程…

机器学习、人工智能、数据科学的教程,包含数学解释和可重用代码(用 Python…

GitHub - SalvatoreRa/tutorial: 机器学习、人工智能、数据科学的教程…

或者你可能对我最近的一篇文章感兴趣:

## 欢迎回到 80 年代:变压器可能会被卷积所超越

Hyena 模型展示了卷积如何可能比自注意力更快

## META DINO: 自监督学习如何改变计算机视觉

筛选数据、视觉特征和知识蒸馏:下一代计算机视觉模型的基础

## 透过你的眼睛:谷歌 AI 模型如何通过眼睛预测你的年龄

新模型通过分析眼睛照片可以揭示衰老的秘密

levelup.gitconnected.com [## 机械交响乐:人工智能会取代人类劳动力吗?

GPT-4 展示了令人印象深刻的技能:这将对劳动市场产生什么影响?

levelup.gitconnected.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值