模型

概述

参考:

执行机器学习涉及创建Model(模型),这个模型狭义上指数学模型中的统计模型,是一种数学表示,用于描述和解决特定类型的问题。这些模型可以是各种各样的,包括传统的统计学模型,如线性回归和逻辑回归,也可以是基于神经网络的深度学习模型,如卷积神经网络和循环神经网络。

这些模型通常由数学公式参数组成,可以根据给定的输入数据进行训练和调整,以使它们能够在未见过的数据上进行准确预测或分类。因此,AI 领域中的模型本质上是一种数学模型,通过使用数学方法来处理和分析数据,以解决各种问题,如分类、预测、图像处理、自然语言处理等。

模型通常需要训练,训练后得到的模型文件是一系列的权值,通常是大量(上亿)个浮点数,如果进行了模型量化,也可以是整数。

TODO:

  • mlp(多层感知机)
  • svm(支持向量机) 参数少

先用下面的代码尝试暂时理解一下,随着后续深入学习逐步完善:

import torch
from torch import nn

# y=wx+b

# Linear() 可以暂时理解为使用 Linear 模型,可以假设模型是 y=wx+b;
# 10, 1 则是对模型传参数。也可以简单理解为是在训练模型以检查返回值 fc 是否满足预期
fc = nn.Linear(10, 1)

# 将训练结果 fc 保存到模型文件 test.pth 中
# torch.save(fc.state_dict(), "test.pth")

# 从 test.pth 模型文件中读取内容
weight = torch.load("./test.pth", encoding="utf-8")

# 模型文件中的内容本质上是一系列权重值的集合,效果如下:
# OrderedDict([('weight', tensor([[-0.3062,  0.2961, -0.2294,  0.2447, -0.0328,  0.1436, -0.2596, -0.2756,  
#         -0.0077,  0.1975]])), ('bias', tensor([0.0775]))])
print(weight)

训练模型

参考:

写好模型后,向模型中传入参数用结果与历史真实结果对比,差值越小,模型越精准?若是差值大就修改参数,知道最后差值无限接近 0 ?

其他回答

在 AI 领域,什么是训练?模型是一段代码么?可以通过训练自动更新代码?模型是数学公式么?可以通过训练自动更新公式吗?

以下来自 ChatGPT 3.5 的回答:

在AI领域中,训练指的是使用数据集来调整模型的参数,使其能够更准确地预测未知数据。训练的目的是为了使模型能够从数据中学习到规律和特征,从而在未知数据上表现出良好的预测能力。

模型通常是一段代码,它定义了一个计算图(computational graph),用于将输入数据转换为预测结果。通过训练,可以调整模型代码中的参数值,以使其能够更好地拟合数据,并提高其预测能力。

在训练过程中,模型并不是通过自动更新代码来实现优化的。相反,模型的代码是固定的,而是通过调整模型的参数值来提高其性能。这些参数值通常是模型中数学公式的系数,因此可以认为模型是数学公式的实现。

因此,模型中的数学公式可以通过训练来自动更新其系数,以使其能够更好地拟合数据并提高其预测能力。然而,模型代码本身并不会自动更新。

为了调整模型的参数,通常需要使用反向传播算法等技术来计算模型误差,并更新模型参数。在这个过程中,模型的表现会不断地得到改善,直到其达到满意的准确度或性能为止。一旦训练完成,模型就可以用于实际应用。

TODO: 什么是预训练模型?为什么可以直接用?

以下来自 ChatGPT 3.5 的回答:

预训练模型是指在大规模数据上训练好的模型,通常是使用无监督学习方法进行训练的,比如自编码器、变分自编码器、生成对抗网络等。这些模型在训练时能够学习到一些通用的特征表示,比如图像中的边缘、纹理、形状等,文本中的语义、情感、关系等。

预训练模型之所以可以直接用于特定任务,是因为这些通用特征表示可以被迁移至其他相关任务。例如,一个在大规模文本数据上预训练好的语言模型,可以用于下游任务,如文本分类、命名实体识别等。在这些任务中,语言模型可以提供有用的特征表示,帮助模型更好地理解和处理文本。

此外,预训练模型通常需要大量的计算资源和数据集来进行训练,因此直接使用这些模型可以避免用户自己进行大规模训练的时间和成本。同时,预训练模型还可以提供良好的初始化参数,帮助加速特定任务的训练过程。

总之,预训练模型可以通过迁移学习的方式,将通用特征表示迁移到特定任务中,从而提高模型的性能和效率。

最后修改 August 9, 2024: ai (30c504b4)