人工智能基础——模型部分:模型介绍、模型训练和模型微调 !!

文章目录

前言

一、什么是模型

二、什么是模型训练

三、什么是模型微调


前言

本文将从什么是模型?什么是模型训练?什么是模型微调?三个问题,来展开介绍人工智能基础的模型部分。

模型族谱


一、什么是模型

模型是一个函数:将现实问题转化为数学问题(Encoder编码器),通过求解数学问题来得到现实世界的解决方案(Decoder解码器)。

y=F(x;w),这个模型F是一个函数,它根据输入数据(可以是文本、图像、语音、视频等)和一组参数w(通常表示为权重)来预测输出y。这里的输入和权重都是以数学形式(如矩阵或张量)表示的。

1. 输入数据:在深度学习中,原始数据(如文字、图片等)需要被转换成模型可以处理的数学形式。这通常意味着将数据编码为数值矩阵或张量。例如,文本可能被转换为词嵌入(word embeddings)或词频矩阵(term-frequency matrices),而图像则可能被转换为像素值矩阵。

2. 网络结构:模型F的具体形式是由其网络结构决定的。在深度学习中,这通常是一个由多层神经元组成的神经网络。每一层都对输入数据进行某种转换,最终产生一个预测输出。

3. 参数训练:模型中的参数w是未知的,需要通过训练来确定。训练过程通常涉及优化算法,如梯度下降(gradient descent),用于最小化预测输出与实际标签之间的差异(即损失函数)。

4. 输出类型:根据任务的不同,模型的输出可以是多种形式的:

二分类问题:输出为0或1(例如,垃圾邮件检测)。

多分类问题:输出为一系列标签中的一个(例如,图像分类)。

回归问题:输出为一个连续数值(例如,房价预测)。

序列生成:输出为下一个词或字符的概率分布(例如,语言模型)。

5. 模型应用:一旦模型被训练好,它就可以用于对新数据进行预测。这些预测可以用于各种实际应用,如推荐系统、自动驾驶、语音识别等。

(Model)

神经网络:一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。

  • 单个神经元模型:

神经元是神经网络的基本单元。每个神经元接收来自其他神经元的输入信号(或来自外部的数据),对这些信号进行加权求和,并通过一个激活函数来产生输出。

函数公式y=f(\sum_iw_i*x_i )描述了这一过程,其中x_i是输入信号,w_i是对应的权重,\sum _i表示对所有输入信号的加权求和,而f是激活函数。

单个神经元模型

  • 多个神经元模型:

神经网络是由多个神经元相互连接而成的复杂网络。

y = f\left(\sum w_i \cdot x_i\right), \quad z = f\left(\sum w'_i \cdot y_i\right), \quad \tau = f\left(\sum w''_i \cdot z_i\right), \ldots

神经网络的每一层都会对其输入进行加权求和并通过激活函数得到输出,这些输出又会作为下一层的输入。

多个神经元模型(神经网络)

  • 激活函数:

激活函数是神经网络中非常重要的组成部分,它决定了神经元如何将其输入转换为输出。激活函数为神经网络引入了非线性特性,使其能够学习并逼近复杂的函数。

激活函数的选择取决于具体的应用和模型架构。不同的激活函数有不同的性质和优缺点,需要根据实际情况进行选择。

常见的激活函数包括:

  • Sigmoid函数:将输入映射到0和1之间,常用于二分类问题的输出层。
  • Tanh函数:将输入映射到-1和1之间,类似于Sigmoid但中心化在0。
  • ReLU(Rectified Linear Unit):对于非负输入直接输出该值,对于负输入输出0,是目前深度学习中最常用的激活函数之一。
  • Leaky ReLU:对ReLU的改进,允许负输入有一个小的正斜率。
  • Softmax函数:将多个神经元的输出映射为概率分布,常用于多分类问题的输出层。

激活函数

二、什么是模型训练

模型训练:模型训练的本质是一个求解最优化问题的过程。通过不断迭代优化,旨在找到一组最优参数,使得模型对于给定输入的预测输出与真实输出之间的差异最小化,这个差异通常通过损失函数来衡量。

  • 目标设定:

确定模型的目标,即希望模型学习到的任务,如分类、回归、聚类等。

根据任务选择或设计适当的损失函数,该函数能够量化模型预测与真实输出之间的差距。

  • 数据准备:

收集并准备数据集,该数据集包含多个输入-输出对(样本),用于训练模型。

数据集通常分为训练集、验证机和测试集,分别用于训练模型、调整超参数和评估模型性能。

  • 模型构建:

选择或设计模型架构,这可以是简单的线性模型、决策树,或是复杂的神经网络。

初始化模型参数,这些参数将在训练过程中被优化。

  • 迭代优化:

通过优化的方式调整模型参数,以最小化训练集上的损失函数。

在每次迭代中,计算损失函数关于模型参数的梯度,并使用优化算法(如梯度下降)更新参数。

通过验证集来监控模型的性能,防止过拟合,并调整超参数以获得更好的性能。

  • 评估与部署:

使用测试集评估训练好的模型的性能,确保其具有良好的泛化能力。

部署模型到生产环境,对新数据进行预测和推理。

模型训练

求解最优化问题:通过梯度下降等优化算法,迭代更新模型参数以最小化损失函数,其中反向传播是高效计算神经网络参数梯度的关键方法

过程涉及定义损失函数、初始化模型参数、选择优化算法、迭代更新参数(通过梯度下降和反向传播)、调整学习率和其他超参数以及评估模型性能等步骤。

  • 定义损失函数:

首先我们需要根据具体任务(分类、回归等)定义一个损失函数,该函数能够量化模型预测与真实标签之间的差异。损失函数的选择取决于问题的性质和数据分布。

损失函数

  • 初始化模型参数:

接下来,我们需要初始化模型的参数。这些参数将在训练过程中通过优化算法进行更新,以最小化损失函数。

  • 选择优化算法:梯度下降

为了最小化损失函数,我们需要选择一个优化算法。最常用的优化算法之一是梯度下降(Gradient Descent)及其变种(如随机梯度下降SGD、小批量梯度下降Mini-batch Gradient Descent、Adam等)。

梯度下降

迭代更新参数:反向传播计算梯度

使用选定的优化算法,我们开始迭代地更新模型参数。在每次迭代中,我们计算损失函数关于模型参数的梯度,并按照梯度的相反方向更新参数。由于神经网络具有多层嵌套的结构,直接计算损失函数对所有参数的梯度非常困难,计算梯度通常通过反向传播(Backpropagation)来实现。它利用链式法则,从输出层开始逐层计算梯度,并将梯度信息反向传播到输入层。

反向传播

  • 调整学习率和其他超参数:

学习率是梯度下降中的一个重要超参数,它决定了参数更新的步长。过大的学习率可能导致训练不稳定,而过小的学习率可能导致收敛速度过慢。因此,需要适当地调整学习率以确保训练的稳定性和收敛速度。此外,还有其他超参数(如批量大小、正则化系数等)也需要进行调整以优化模型性能。

学习率

  • 评估模型性能:

在训练过程中或训练结束后,我们需要评估模型的性能。这通常通过使用验证集或测试集来计算模型的准确率、召回率、F1分数等指标来完成。根据评估结果,我们可以对模型进行调整以进一步提高性能。

三、什么是模型微调

模型微调(Fine-tuning):通过特定领域数据对预训练模型进行针对性优化,以提升其在特定任务上的性能。

模型微调(Fine-tuning)

  • 1. 微调的定义

大模型微调是利用特定领域的数据集对已预训练的大模型进一步训练的过程。它旨在优化模型在特定任务上的性能,使模型能够更好地适应和完成特定领域的任务。

  • 2. 微调的核心原因

定制化功能:微调的核心原因是赋予大模型更加定制化的功能。通用大模型虽然强大,但在特定领域可能表现不佳。通过微调,可以使模型更好地适应特定领域的需求和特征。

领域知识学习:通过引入特定领域的数据集进行微调,大模型可以学习该邻域的知识和语言模式。这有助于模型在特定任务上取得更好的性能。

  • 3. 微调的方式

全量微调(Full Fine-Tuning):全量微调利用特定任务数据调整预训练模型的所有参数,以充分适应新任务。它依赖大规模计算资源,但能有效利用预训练模型的通用特征。

参数高效微调(Parameter-Efficient Fine-Tuning,PEFT):PEFT旨在通过最小化微调参数数量和计算复杂度,实现高效的迁移学习。它仅更新模型中的部分参数,显著降低训练时间和成本,适用于计算资源有限的情况。

模型微调流程:在选定相关数据集和预训练模型的基础上,通过设置合适的超参数并对模型进行必要的调整,使用特定任务的数据对模型进行训练以优化其性能。

流程包含以下四个核心步骤:

  • 1. 数据准备:

选择与任务相关的数据集。

对数据进行预处理,包括清洗、分词、编码等。

微调开源数据集

  • 2. 选择基础模型:

选择一个预训练好的大语言模型,如LLaMA、ChatGLM、BERT、GPT-3等。

支持微调的模型

  • 3. 设置微调参数:

设定学习率、训练轮次(epochs)、批处理大小(batch size)等超参数。

根据需要设定其他超参数,如权重衰减、梯度剪切等。

  • 4. 微调流程:

加载预训练的模型和权重。

根据任务需求对模型进行必要的修改,如更改输出层。

选择合适的损失函数和优化器。

使用选定的数据集进行微调训练,包括前向传播、损失计算、反向传播和权重更新。

模型微调流程

参考:架构师带你玩转AI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/422558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

set和multiset

1. set基本概念 简介: 所有元素都会在插入时自动被排序 本质: set/multiset属于关联式容器,底层结构是用二叉树实现。 set和multiset区别: set不允许容器中有重复的元素 multiset允许容器中有重复的元素 2. set构造和赋值 功能描述…

MySql安全加固:配置不同用户不同账号禁止使用旧密码禁止MySql进程管理员权限

MySql安全加固:配置不同用户不同账号&禁止使用旧密码&禁止MySql进程管理员权限 1.1 检查是否配置不同用户不同账号1.2 检查是否禁止使用旧密码1.3 禁止MySql进程管理员权限 💖The Begin💖点点关注,收藏不迷路&#x1f496…

uview2中上传文件和若依前后端分离配合的代码

uview2中的上传文件需要配合着自己后端的上传的代码 uview2 代码: uploadFilePromise(url) {return new Promise((resolve, reject) > {// 后续自己封装let a uni.uploadFile({//自己的请求路径url: that.$baseURL /uploadAvater, //上传的文件filePath: tha…

4.1.CVAT——目标检测的标注详细步骤

文章目录 1. 进入任务1. 创建任务2. 已创建的task3. 进入标注界面 2. 选择标注类型2.1 选择标注类型2.2 进行标注2.3 遮挡 2.快捷键3.导出标注结果 1. 进入任务 登录后会看到如下图界面,CVAT的标注最小单位是Task,每个Task为一个标注任务。点击Task按钮…

数据安全无忧,SQL Server 2014数据库定时备份解密

一、为什么要执行数据库定时备份 在SQL Server数据库中,完整备份和差异备份是常见的备份策略组合。它们的目的是提供数据的备份和恢复能力,以确保数据的可靠性和可恢复性。 完整备份(Full Backup) 完整备份是对整个数据库进行备份…

为什么要在业务系统中引入大宽表?

在高度系统化驱动的业务中,查看业务报表已经是一个很常见的需求了。在分工非常明确的大型企业里,往往有专门的数据分析团队 BI 或者数据开发团队,他们能够胜任此类需求(但也未必是轻松的,或者说高效的)。 …

‘conda‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

如果你在运行 conda 命令时收到了 ‘conda’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 的错误消息,这可能意味着 Anaconda 并没有正确地添加到你的系统路径中。 1.你可以尝试手动添加 Anaconda 到系统路径中。以下是在 Windows 系统上添加…

前端按钮动画

效果示例 代码示例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevic…

自测-2 素数对猜想

文章预览&#xff1a; 题目算法 题目 算法 本题用python写不能用一般的算法去求会超时&#xff0c;应该采用欧拉素数筛选法去求&#xff0c;算法复杂度为O&#xff08;n&#xff09;比其他的算法优秀的多&#xff0c; 算法思想: &#xff08;1&#xff09;我们安排一个数组或者…

AJAX 学习笔记(Day1)

「写在前面」 本文为黑马程序员 AJAX 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 0 课程介绍 1 AJAX 入门 1.1 AJAX 概念和 axios 使用 1.2 认识 URL 1.3 URL 查询参数 1.4 常用请求方法和数据提交 1.5 HT…

华为笔记本自带windows11如何改为win10

目录 一、前言 二、遇到问题 三、问题解决 一、前言 新购买的华为笔记本电脑自带windows11系统&#xff0c;虽然是正版系统&#xff0c;但还是希望能重新装Windows10版本。一是我已经习惯此系统&#xff0c;二是该系统上运行的开发工具比较稳定。 二、遇到问题 说干就干&…

idea,pycharm等的ai assistant已成功激活,可以提高写代码的效率了

ai assistant成功激活了&#xff0c;可以提高写代码的效率了 https://web.52shizhan.cn/activate https://web.52shizhan.cn/activity/ai-assistant 你不妨也试试 激活成功后如图

【玩转pandas系列】pandas数据结构—DataFrame

文章目录 前言一、DataFrame创建1.1 字典创建1.2 NumPy二维数组创建 二、DataFrame切片2.1 行切片2.2 列切片2.3 行列切片 三、DataFrame运算3.1 DataFrame和标量的运算3.2 DataFrame之间的运算3.3 Series和DataFrame之间的运算 四、DataFrame多层次索引4.1 多层次索引构造1.隐…

Django 官网项目 四

内容&#xff1a; 利用HTTP的post方法&#xff0c;更改数据并显示。 创建detail.html文件&#xff0c;来创建POST内容 修改应用的视图文件views.py&#xff0c;vote方法 修改应用的视图文件views.py&#xff0c;results方法。 创建results.html文件。 结果&#xff1a;单…

【NR 定位】3GPP NR Positioning 5G定位标准解读(一)

1. 3GPP规划下的5G技术演进 根据3GPP的规划&#xff0c;5G技术演进被分为两个阶段&#xff0c;Rel-15/16/17这三个版本称为5G演进的第一阶段&#xff0c;之后的Rel-18/19/20这三个版本称为5G演进的第二轮创新&#xff0c;也就是5G Advanced。 在5G演进的第一阶段中&#xff0…

03-JNI 类型和数据结构

上一篇&#xff1a; 02-设计概述 本章讨论 JNI 如何将 Java 类型映射为本地 C 类型。 3.1 原始类型 下表描述了 Java 原始类型及其与机器相关的本地等价类型。 为方便起见&#xff0c;定义如下&#xff1a; #define JNI_FALSE 0 #define JNI_TRUE 1 jsize 整数类型用于描述…

【Vue3】PostCss 适配

px 固定的单位&#xff0c;不会进行自适应。rem r root font-size16px 1rem16px&#xff0c;但是需要手动进行单位的换算vw vh 相对于视口的尺寸&#xff0c;不同于百分比&#xff08;相对于父元素的尺寸&#xff09;375屏幕 1vw 3.75px 利用插件进行 px&#xff08;设计稿&…

1209. 带分数 刷题笔记

思路 暴力匹配 读入目标数 n 看n是否与ab/c相等 因为c里面的除法是整除 我们将 nab/c 转换为 c*na*cb 那么如何获得a,b&#xff0c;c 依题意 a&#xff0c;b&#xff0c;c三个数由1-9九个数字组成 且每个数字只能出现一次 由此 我们可以搜出123456789的全部排列方式…

加密与安全_探索口令加密算法(PBE)

文章目录 概述疑问PBE 算法 &#xff08; Password Based Encryption&#xff09;CodePOM实现 小结 概述 加密与安全_探索对称加密算法中我们提到AES加密密钥长度是固定的128/192/256位&#xff0c;而不是我们用WinZip/WinRAR那样&#xff0c;随便输入几位都可以。 这是因为对…

爬虫入门到精通_实战篇7(Requests+正则表达式爬取猫眼电影)_ 抓取单页内容,正则表达式分析,保存至文件,开启循环及多线程

1 目标 猫眼榜单TOP100&#xff1a;https://www.maoyan.com/board 2 流程框架 抓取单页内容&#xff1a;利用requests请求目标站点&#xff0c;得到单个网页HTML代码&#xff0c;返回结果。正则表达式分析&#xff1a;根据HTML代码分析得到电影名称,主演,上映时间,评分,图片…