常见问题解答
《开放源代码人工智能定义》(OSAID) 代表着在人工智能背景下定义开放源代码的重要第一步。由于人工智能系统与传统软件存在根本不同,OSAID 旨在为人工智能系统的开发、使用和修改建立首套清晰、实用的指南,以符合开放源代码的精神。遗憾的是,对该定义的误解依然存在,通常源于对人工智能本质缺乏理解。本文旨在阐明关键点,并就 OSAID 的重要性提供前瞻性视角。
常见问题解答
什么是人工智能系统?
根据 OSAID,《人工智能系统》与经济合作与发展组织 (OECD) 提供的定义相符
人工智能系统是一种基于机器的系统,出于明确或隐含的目标,它会根据接收到的输入,推断如何生成输出,例如可以影响物理或虚拟环境的预测、内容、建议或决策。不同的人工智能系统在部署后的自主性和适应性水平上有所不同。
简单来说,人工智能系统是“处理输入以产生输出的事物”,无论是预测、建议还是其他结果。将讨论锚定在这些通用定义中至关重要,因为人工智能系统与传统软件截然不同。
什么是开放源代码人工智能?
开放源代码人工智能是一种人工智能系统,根据开放源代码促进会批准的法律条款,免费提供所有必要的代码、数据和参数。有关更多详细信息,请阅读下文。
你们为什么要编写《开放源代码人工智能定义》?
《开放源代码定义》(OSD) 的第 2 点指出:“程序必须包含源代码 […] 源代码必须是程序员修改程序的首选形式 […]”。当我们着手这项计划时,没有人能清楚地回答“修改人工智能系统的首选形式是什么?”这个问题。因此,OSI 提出通过参与 协同设计过程,与更广泛的社区一起找到答案。
《开放源代码定义》和《开放源代码人工智能定义》之间有什么区别?
《开放源代码定义》(OSD) 指的是软件程序。人工智能,特别是机器学习系统,不仅仅是软件程序;它们模糊了与数据、配置选项、文档和新工件(如权重和偏差)之间的界限。《开放源代码人工智能定义》描述了修改人工智能系统的首选形式,明确了如何在人工智能领域解释 OSD 的原则。
编程人工智能系统是否需要训练数据?
关于人工智能系统的一个常见误解是将训练数据等同于源代码,认为“训练数据是模型被编程的方式。” 与传统软件不同,人工智能系统不是以传统意义上的方式编程的。相反,它们在训练过程中自主获取能力——这种现象将它们与 Linux 内核等软件区分开来。
例如,Linux 内核是
- 由人类编程。
- 由开发人员可以阅读、学习和修改的源代码组成。
- 可重现的,这意味着其二进制形式可以从其源代码可靠地重建。
相比之下,现代人工智能系统(如大型语言模型)的行为发展方式通常是不可预测且难以解释的。即使是系统的创建者也很难可靠地复制训练过程。这些差异使得有必要建立一个超越软件《开放源代码定义》的独特定义。
训练数据在《开放源代码人工智能定义》中的作用是什么?
开放源代码意味着赋予任何人有意义地 fork(研究和修改)您的系统的能力,而无需额外权限即可使其对他们自己和所有人更有用。这就是为什么 OSD 第 2 点要求以进行修改的首选形式提供源代码。这样,每个人都拥有与原始开发人员相同的 fork 权利和能力,从而启动良性创新循环。
但是,训练数据并不等同于软件源代码。训练数据对于研究现代机器学习系统非常重要。但是,人工智能研究人员和从业人员不一定将其用作修改训练模型的首选形式的一部分。
OSAID 的数据信息和代码要求允许下游的第三方人工智能构建者使用与原始开发人员相同的信息来 fork 开放源代码人工智能系统。这些 fork 可能包括从训练数据集中删除非公开或非开放数据,以便在完全公开或开放的数据上训练新的开放源代码人工智能系统。
你们为什么允许排除某些训练数据?
我们希望开放源代码人工智能能够存在于数据无法合法共享的领域,例如医疗人工智能。允许对数据进行训练的法律通常会限制对同一数据的再共享,以保护版权或其他利益。隐私规则还赋予人们控制其最敏感信息(如关于其健康的决定)的权利。同样,世界上大部分土著知识都受到与后来开发的权利排他性和共享框架不兼容的机制的保护。
在许多情况下,公开可用数据的使用条款可能使实体 A 确信他们可以自由使用并称之为“开放数据”,但不能使实体 A 确信他们可以反过来向实体 B 提供相同的管辖区使用保证。与此同时,实体 B 可能对其在自己管辖区内使用该数据感到不放心。一个例子是所谓的公共领域数据,公共领域的定义因国家/地区而异。另一个例子是合理使用或私人数据,其中对合理使用或隐私法的认定可能需要对给定司法管辖区的法律有充分的了解。这种再共享与其说是受限,不如说是缺乏法律确定性。
你们是如何得出这个结论的?这是否会损害开放源代码的理想?
在我们的协同设计过程中,权重和数据之间的关系推动了最高的社区参与度。在“系统分析”阶段,志愿者小组建议,训练和数据处理代码对于修改人工智能系统比访问训练和测试数据更重要。该结果在“验证阶段”得到了验证,并提出了一条允许开放源代码人工智能与专有系统在平等基础上存在的路径:两者都可以使用相同类型的数据进行训练。
有些人认为,完全、不受限制地访问所有训练数据(不区分其种类)至关重要,他们认为,任何不足之处都会损害人工智能系统的完全可重现性、透明度和安全性。这种方法会将开放源代码人工智能降级为只能在开放数据上训练的人工智能的利基市场。即使相对于传统软件生态系统中开放源代码所占据的利基市场而言,这个利基市场也很小。《数据信息》的要求保留了《开放源代码定义》中存在的相同方法;它不强制要求完全的可重现性和透明度,而是使它们成为可能(即 可重现构建)。与此同时,设置要求《数据信息》的基线并不妨碍其他人制定和要求更多要求,例如 数字公共产品标准 或 自由系统发行指南,它们为《开放源代码定义》添加了要求。
OSI 使命的关键方面之一是推动和促进开放源代码创新。OSI 在这里采取的方法使开放源代码人工智能能够实现完全的用户选择。用户可以保留从训练+数据预处理代码和不可共享的训练数据描述中获得的见解,并在此基础上使用他们自己的不可共享数据进行构建,并将从进一步训练中获得的见解提供给所有人,从而在医疗保健等领域实现开放源代码人工智能。或者,用户可以从《数据信息》中获取可用的公共数据,并在没有任何不可共享数据的情况下重新训练其模型,从而提高人工智能系统中的数据透明度。与 Copyleft 和宽松许可一样,这种方法将选择权留给用户。
《开放源代码人工智能定义》应该要求哪种数据?
人工智能领域的一个重大挑战是数据的角色。与源代码是主要工件的传统软件不同,人工智能系统严重依赖数据——不仅仅是任何数据,而是经过处理和整理成训练数据集的数据。OSAID 认识到数据共享的法律和伦理复杂性,并使用精确的法律术语来概述预期。虽然并非所有原始数据都可以自由分发,但《定义》确保了修改人工智能系统的基本要素是可访问的。
根据其法律约束,数据分为四类,所有这些数据都可用于训练开放源代码人工智能系统
- 开放训练数据:可以复制、保存、修改和重新共享的数据。它提供了使用户能够研究系统的最佳方式。这必须共享。
- 公共训练数据:其他人可以检查的数据,只要该数据仍然可用。这也使用户能够研究工作。但是,当链接或引用丢失或从网络可用性中删除时,此数据可能会降级。为了避免这种情况,不同的社区将必须共同努力,定义标准、程序、工具和治理模型,以克服此风险,并且在数据稍后不可用时需要《数据信息》。这必须披露,并提供有关在哪里获取它的完整详细信息。
- 可获取的训练数据是可以获取的数据,包括付费数据。此信息提供透明度,类似于开放硬件系统中的可购买组件。《数据信息》提供了一种理解此数据的方法,而不是获取或购买它。该领域可能会迅速变化,需要仔细监控以保护开放源代码人工智能开发人员。这必须披露,并提供有关在哪里获取它的完整详细信息。
- 不可共享的非公共训练数据:由于可解释的原因(如个人身份信息 (PII))而无法共享的数据。对于此类数据,研究系统某些偏差的能力需要详细描述数据——它是什么、如何收集的、它的特征等等——以便用户可以理解系统底层的偏差和分类。这必须详细披露,以便例如医院可以使用自己的患者数据创建具有相同结构的数据集。
OSI 认为,所有这些类别的数据都可以成为修改人工智能系统的首选形式的一部分。这种方法既促进了人工智能系统所有组件的开放性,又推动了更多的开放源代码人工智能,包括医疗保健等以隐私为先的领域。
如何修复有缺陷的人工智能系统?
OSAID 解决的一个核心问题是:如何修复有缺陷的人工智能系统? 对于传统软件,《开放源代码定义》提供了一个明确的答案
程序必须包含源代码,并且必须允许以源代码以及编译形式分发。源代码必须是程序员修改程序的首选形式。
但是,修改人工智能系统需要的不仅仅是源代码。在与人工智能开发人员、研究人员和从业人员以及社区进行广泛咨询后,社区通过 OSAID 协同设计过程得出结论,修改人工智能系统的首选形式包括
- 用于创建数据集的软件(即,将原始数据转换为令牌)。
- 用于训练系统的软件。
- 训练结果(即参数)。
- 训练过程中使用的所有合法可共享的数据。
这些组件共同实现了以符合开放源代码原则的方式研究、使用、修改和共享人工智能系统。
什么是技术人员?
在法律界,“技术人员”是指具有执行某项职责的当前知识、经验和能力的任何人。此维基百科条目提供了更多详细信息。
《开放源代码人工智能定义》是否涵盖模型、权重和参数?
是的。《开放源代码人工智能定义》没有区分可能被称为人工智能系统、模型或权重和参数的内容。无论产品被描述为人工智能系统、模型还是权重和参数,要称为开放源代码人工智能,提供进行修改的首选形式的要求都将相同。
如果您有兴趣了解更多关于开放权重的信息,请阅读这篇文章。
为什么你们要求提供训练代码,而 OSD #2 却没有要求提供编译器?
人工智能和软件是截然不同的领域,将两者进行比较很少有成效。《开放源代码定义》第 2 点并未强制要求开放源代码软件仅能使用获得 OSI 批准许可的编译器,因为编译器是标准化的,法定标准(如 ANSI C)或事实标准(如 TurboPascal 或 Python)。人们普遍认为,要开发更多的开源软件,可以使用专有的开发环境。对于机器学习而言,训练代码不是标准化的,因此它必须是进行修改的首选形式的一部分,以保留 AI 系统的派生权。
为什么《开放源代码人工智能定义》中没有提及安全和风险限制?
《开放源代码人工智能定义》并未明确指导或强制执行符合道德、可信或负责任的人工智能开发实践。但是,它并未设置任何障碍来阻止开发人员在选择时遵守此类原则。关于负责任地开发、部署和使用人工智能系统(包括通过适当的政府监管)的讨论工作是另一回事。一个好的起点是经合组织理事会关于人工智能的建议,第 1 节:负责任地管理可信赖人工智能的原则。
模型参数是否受版权保护?
《开放源代码人工智能定义》对参数的法律性质不持立场。参数本质上可能是自由的,或者可能需要许可证或其他法律文书来确保其自由性。模型参数是否受版权保护将随着时间的推移而变得更加清晰,因为法律系统将有更多机会来解决这个问题。在任何情况下,我们都要求在参数分发时附带明确声明,以确保所有人都可以自由获取它们。
为什么参数将在“OSI 批准的条款”下提供,而代码将在“OSI 批准的许可证”下提供?你们打算允许对模型的条款进行限制吗?
我们对模型使用了“条款”而不是“许可”,因为如上所述,我们尚不清楚确保模型可用于使用、研究、修改和共享的法律机制将是什么。我们使用“条款”是为了避免暗示“许可”是唯一可以使用的法律机制。 话虽如此,要获得 OSI 的批准,参数的条款必须确保使用、研究、修改和共享的自由。
为什么“进行修改的首选形式”仅限于机器学习?
《开放源代码人工智能定义》中声明的原则普遍适用于任何类型的人工智能,但机器学习对《开放源代码定义》提出了挑战。对于机器学习,需要一组工件(组件)来研究和修改系统,因此需要对研究和修改系统所需的要素进行新的解释。
哪些人工智能系统符合《开放源代码人工智能定义》?
作为我们对 OSAID 进行验证和测试的一部分,志愿者检查了该定义是否可以用于评估 AI 系统是否提供了预期的自由。通过验证阶段的模型列表包括:Pythia (Eleuther AI)、OLMo (AI2)、Amber 和 CrystalCoder (LLM360) 以及 T5 (Google)。 分析的其他一些模型如果更改其许可/法律条款,也可能会通过,例如 BLOOM (BigScience)、Starcoder2 (BigCode) 和 Falcon (TII)。 那些经过分析但未通过的模型,是因为它们缺少必需的组件和/或其法律协议与开放源代码原则不兼容,包括 Llama2 (Meta)、Grok (X/Twitter)、Phi-2 (Microsoft) 和 Mixtral (Mistral)。 这些结果应被视为定义过程的一部分,是一个学习时刻;它们不是任何形式的认证。 OSI 将继续仅验证法律文件,而不会验证或审查个别 AI 系统,正如它不验证或审查软件项目一样。
下一步是什么?
《开放源代码人工智能定义》反映了一个经过深思熟虑且具有包容性的过程,该过程获得了领先的 AI 开发人员、研究人员和从业人员的认可。它最终形成了 OSAID 1.0 版本中体现的第一步。该定义承认人工智能从根本上不同于软件,需要量身定制的方法。 对 OSAID 的误解通常源于试图将软件工程范式应用于 AI,从而导致混淆。 通过拥抱 AI 系统的独特特征,OSAID 为促进 AI 开发的透明度、创新和协作提供了一个强大的框架。
当我们驾驭人工智能不断发展的格局时,以周到和建设性的方式参与这些定义至关重要。 通过这样做,我们可以确保 AI 系统保持开放、可访问,并与更广泛的开源运动的原则保持一致。
我们的工作之所以成为可能,完全归功于我们的会员。 今天就加入我们!