我是梦幻般的人工智能世界的新手,我最近开始学习。一段时间后,我的理解是,我们需要输入大量数据来训练一个或多个模型。
训练完成后,我们可以取出训练好的模型并“插入”到任何其他编程语言中以用于检测事物。
所以我的问题是:
1. 训练好的模型有哪些?它们是算法还是文件中的参数集合?
2. 它们长什么样?例如文件扩展名
3. 特别是,我想找到经过训练的用于检测鸟类的模型(鸟类类型无关紧要)。有没有开源/免费在线训练的 AI 模型的平台?
谢谢!
我是梦幻般的人工智能世界的新手,我最近开始学习。一段时间后,我的理解是,我们需要输入大量数据来训练一个或多个模型。
训练完成后,我们可以取出训练好的模型并“插入”到任何其他编程语言中以用于检测事物。
所以我的问题是:
1. 训练好的模型有哪些?它们是算法还是文件中的参数集合?
2. 它们长什么样?例如文件扩展名
3. 特别是,我想找到经过训练的用于检测鸟类的模型(鸟类类型无关紧要)。有没有开源/免费在线训练的 AI 模型的平台?
谢谢!
这个答案适用于 AI 的机器学习 (ML) 部分,因为这似乎是您要问的问题。请记住,人工智能仍然是一个广泛的教会,包括机器学习以外的许多其他技术。ML,包括用于深度学习的神经网络,而强化学习 (RL) 只是 AI 的一个子集——一些 AI 技术更关注算法而不是参数。
- 训练好的模型是什么?它们是算法还是文件中的参数集合?
在 ML 中,通常的过程是将数据输入参数函数(例如神经网络)并更改其参数以“拟合”数据。其主要输出是描述参数函数的参数和超参数的集合。所以 90% 的情况下,在讨论“训练模型”时,它与参数集合的含义相同。
但是,如果没有可以从中重新创建函数的库,这些参数的用途有限。参数将从特定库中保存,并可轻松加载回该库。库也可以读取或转换从其他库保存的模型,就像不同的电子表格程序可以读取彼此的文件一样。
- 他们看起来怎么样?例如文件扩展名
这变化很大,具体取决于使用的库。不可能做出笼统的陈述。例如, Tensorflow 可以将变量保存到带有扩展名的“检查点”文件.ckpt
中,但可以根据您要导出的模型的数量而变得更加复杂,并且具有整个结构的完整模型将不仅仅包含变量并且具有.pb
扩展名.
- 特别是,我想找到经过训练的用于检测鸟类的模型(鸟类类型无关紧要)。有没有开源/免费在线训练的 AI 模型的平台?
有几个地方可以找到预训练模型的选择。Tensorflow 的 Model Zoo就是这样一个地方,您可能对Tensorflow 检测模型 zoo感兴趣。
其他框架也可能提供示例代码。例如,Caffe 也有一个“模型动物园”(搜索模型动物园是一个很好的开始策略)。
如果您正在收集模型参数并想自己运行这些模型,您将需要了解一些关于每个库的知识,使用什么语言来使用它,并且可能遵循一些关于如何使用它的教程。一些模型将与工作脚本打包在一起,以便从命令行使用,但许多模型没有,并且可能需要一些时间和精力才能开始工作。
当您有一个特定的检测目标时,您可能会失望地找到与您想要的模型不完全匹配的模型。对于图像分类,如果您有专家需要采用已在大型数据集上训练数周的预先存在的通用模型,然后根据您的目的使用您自己的图像数据集“微调”它,这是很常见的。大多数 NN 库都会提供此微调过程的教程和示例。
- 训练好的模型是什么?它们是算法还是文件中的参数集合?
“模型”可以指具有或不具有一组训练参数的算法。如果您指定“训练模型”,则重点是参数,但算法隐含地是其中的一部分,因为没有算法,参数只是一组任意数字。
- 他们看起来怎么样?例如文件扩展名
这在很大程度上取决于您使用的算法和具体的实现。一些简单的例子可能有助于澄清问题。假设我们要学习的问题是异或(XOR)函数:
a | b | a XOR b
--+---+---------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
首先,让我们使用 2 层神经网络来学习它。我们将激活函数定义为一个简单的阶跃函数:
(对于真正的神经网络,这实际上是一个糟糕的激活函数,因为它是不可微的,但它使示例更清晰。)
我们的模型是:
此步骤的每个步骤实质上都绘制了一个超平面,如果输入位于超平面的一侧,则计算结果为 1,否则计算结果为 0。在这种特殊情况下,h_0 告诉我们 a 或 b 是否为真。h_1 告诉我们它们是否都为真,y 告诉我们其中一个是否为真,这是 XOR 函数的确切定义。
我们的参数是系数和偏差(在每个表达式末尾添加的偏移量):
它们可以以我们想要的任何方式存储在文件中;重要的是存储它们的代码和读取它们的代码在格式上达成一致。
现在让我们使用决策树来解决同样的问题。对于这些,我们遍历一棵树,并在每个节点处询问有关输入的问题,以决定接下来访问哪个子节点。理想情况下,每个问题都会将可能性空间精确地分成两半。一旦我们到达一个叶子节点,我们就知道我们的答案了。
在这个图中,如果表达式为真,我们访问右孩子。
a+b=2
/ \
a+b=0 0
/ \
0 1
在这种情况下,模型和参数更难分离。模型中唯一没有学习的部分是“这是一棵树”。每个内部节点中的表达式、树的结构和叶节点的值都是学习参数。与来自神经网络的权重一样,我们可以以任何我们想要的格式存储它们。
两种方法都在学习相同的问题,并且实际上找到了基本相同的解决方案:a XOR b = (a OR b) AND NOT (a AND B)。但是我们使用的数学模型的性质取决于我们选择的方法,参数取决于我们训练它的方式,文件格式取决于我们使用的代码,模型和参数之间的界限是相当随意的;无论我们如何拆分,数学都是一样的。我们甚至可以编写一个尝试不同方法的程序,并输出一个程序,该程序使用性能最佳的方法对输入进行分类。在这种情况下,模型和参数根本不是分开的。
- 特别是,我想找到经过训练的用于检测鸟类的模型(鸟类类型无关紧要)。有没有开源/免费在线训练的 AI 模型的平台?
我不知道任何专门识别鸟类的预训练模型,但我不在图像识别领域,所以这并不意味着什么。如果您不反对训练自己的模型(使用现有代码),我相信ImageNet数据集包括鸟类。AlexNet 和 LeNet 可能是该模型的良好起点。大多数最先进的图像识别模型(如果不是全部)都基于卷积网络,因此您需要一个不错的 GPU 来运行它们。