在之前的编程任务中,研发人员需要提前清楚程序运行的内部逻辑,并且用代码的形式把这些逻辑实现出来,且逻辑是确定性的,相同的输入会得到相同的输出。
随着编程任务的复杂度越来越高,研发需要付出大量的工作去搞清楚程序运行的内部逻辑,时间和人力的消耗大,一些任务已经复杂到搞清楚全部运行逻辑是普通人力和团队无法承受的程度。且无法解决一些不确定性的任务,如一张图片里到底是一只猫还是一只老虎,不同的场景下会出现不确定的结果。
面对这样的困境,研发希望不用去搞清楚程序运行的内部逻辑,也可以将逻辑实现出来,给定一个输入可以获得一个输出。
一、模型原理
人工智能就是用来解决上述问题的。人工智能(Artificial Intelligence, AI)是一个广泛的领域,涉及设计计算系统和算法,使得计算机能够执行通常需要人类智能的任务。机器学习是人工智能的一个子领域,研究如何通过从数据中自动学习和改进算法,使得计算机可以进行预言预测和决策。神经网络是机器学习中的一种模型,也是当前最流行的一种模型。
1. 神经网络
很多任务,人类是可以完成的,人类是依赖大脑这种神经网络来完成这种复杂和不确定性的任务的,AI就是从中获取到启发。
人类的大脑是由一个一个的神经元相互连接而组成的神经网络,每一个神经元只能处理很简单的任务,但是有足够多的神经元,相互连接传递信息,却能处理很复杂的任务。受此启发,AI引入了神经网络。
神经网络是一种特定类型的AI模型,它受到人类大脑结构和功能的启发,用于识别复杂的模式和关系。神经网络由许多相互连接的节点(人工神经元)组成,这些节点通过连接(边)传递和处理信息。
前排提示,文末有大模型AGI-CSDN独家资料包哦!
一个典型的神经网络如下所示:
- 神经元(节点):每个节点负责接收输入并进行特定的处理。
- 层:神经网络通常包括输入层、隐藏层和输出层。
输入层:接收原始数据,例如将一张图片转化成像素值,根据不同的任务类型有所不同
隐藏层:处理信息,每个隐藏层都有多个神经元,这些神经元通过加权连接传递信息。
输出层:将数值计算转换成最终的预测结果,根据不同的任务类型有所不同
2. 隐藏层的神经元
每个神经元实际上执行了以下步骤:
1)加权求和:
-
每个输入 ( x_i ) 乘以相应的权重 ( w_i ),然后将所有结果相加,加上一个偏置项 ( b_i )。 [ z = \sum_{i=1}^{n} w_i x_i + b_i ] 其中,( n ) 是前一层神经元的数量,( w_i ) 是权重,( x_i ) 是输入,( b_i ) 是偏置,( z ) 是加权求和的结果。
-
所有的权重值组成一个权重矩阵w,偏置值组成偏置矩阵b,这两个矩阵可以理解为模型的参数。
2)激活函数:
- 将加权求和的结果 ( z ) 通过激活函数 ( f )(例如 ReLU、Sigmoid、Tanh 等)进行非线性变换,输出结果 ( a )。 [ a = f(z) ]
- 因为很多场景都是非线性的,进行非线性转换可以让一个线性的网络处理非线性问题,激活函数不涉及参数,是一个固定的函数。
神经网络可以实现对于复杂任务的模拟,其理论基础是通用近似定理。
通用近似定理表明,一个具有足够多的神经元的神经网络,只要适当选择权重和激活函数,这个神经网络可以近似任何连续可微函数,从理论上讲,可以任意接近这些函数的输出。
因此,AI可以不用搞清楚一个函数的内在实现逻辑,而是通过神经网络的方式模拟这些函数,从而获得对应函数的输出。
二、模型设计
设计模型就是设计神经网络的结构的过程,其有以下几个方面:
1.确定任务的类型
2.选择适当的层数:
3.选择神经元数量:
4.选择激活函数
5.选择层类型
6.选择超参数
目前对于不同的任务已经有大量开源的模型,比如用于图像处理的CNN,用于ChatGPT的Transformer等,研发可以在开源的基础上进行调整以最大化的满足其场景需求。
三、模型训练
模型训练的目标:通过大量的数据训练,确定合适的神经网络及其参数(如权重矩阵和偏置矩阵),从而实现对复杂任务最接近的模拟。
为了达到这一目标首先需要一个衡量指标,用来衡量当前模型对于复杂任务模拟的接近程度,这个指标就是损失函数。损失函数(Loss Function)是机器学习和深度学习中的一个重要概念,它用来衡量模型的预测结果与实际结果之间的差距,即误差。通俗地说,损失函数就像评分系统,告诉我们模型的表现有多好或者多差。通过最小化损失函数的值,我们可以不断优化模型,使其预测结果更加准确。
模型的参数(权重和偏置)在开始时通常是随机初始化的,预测值和输出有很大的差距。
前向传播: 将输入数据通过网络传递,计算每个神经元的线性组合,再通过激活函数输出。
神经网络前向传播产生的输出(即预测值)和真实数据的输出(即真实值)之间的差距需要用损失函数进行衡量,损失函数一般是根据不同的任务提前设置好的,比如均方误差,计算预测值和真实值之间差的平方和的平均值。
1. 反向传播
由于神经网络的不同的参数(权重矩阵和偏置矩阵),可以输出不同的预测值,也就是损失函数会取不同的值,训练的过程就是找到合适的参数,使得损失函数的值最小。这个过程就是反向传播。
损失函数可以通俗的理解为参数的函数,要找到其最小值可以借助梯度这一数学工具。二维函数一般情况下就是使用导数来找到最小值,但是三维以上的函数就是使用梯度。
梯度是一个向量,它的方向指向函数变化最快的方向,长度表示变化的速率。可以把梯度下降过程类比为“沿着山坡向下走”。如果我们站在函数的某个点,梯度告诉我们哪个方向是下坡最快的方向,我们一步一步地沿着这个方向走,每步步长由学习率(超参数)决定,这样我们可以逐渐接近山谷,即函数的最低点。
反向传播流程如下:
**1.计算损失:**根据前向传播计算出输出值和真实数据的输出值,使用损失函数(如均方误差、交叉熵等)计算损失值。
**2.计算梯度:**计算损失函数关于每个权重和偏置的梯度,将这些梯度用于更新权重和偏置。
**3.更新权重和偏置:**使用优化算法(如梯度下降、Adam 等)根据梯度更新权重和偏置。
**4.迭代:**重复上述过程,直到损失函数收敛或达到预设的训练轮数。
如果损失函数没有收敛,那需要调整模型或者优化算法超参数等,反之则继续训练至损失函数达到预期。
2. 泛化
一个模型除了在训练数据集上表现良好,还需要在非训练数据集上有比较好的表现,这个过程称之为泛化。因此下一步需要在非训练集上进行验证,非训练集大体分为两种:独立数据集和验证数据集。独立数据集是指从外部下载的公开数据集,验证数据集是指从训练数据集中提取一部分数据,这部分数据没有用来训练,而是用来验证。
如果模型泛化表现依然良好,那就可以直接上线运行;反之,则需要继续调整模型或者调整训练数据集,来达到最终目的。
四、模型维护和迭代
在实际应用中不断监控模型的预测性能,特别是数据分布变更时的表现,定期更新模型训练数据,重新训练模型以适应新数据,根据用户反馈和监控结果,定期进行模型优化和调优。
读者福利:倘若大家对大模型抱有兴趣,那么这套大模型学习资料肯定会对你大有助益。
针对0基础小白:
如果你是零基础小白,快速入门大模型是可行的。
大模型学习流程较短,学习内容全面,需要理论与实践结合
学习计划和方向能根据资料进行归纳总结
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
这里我们能提供零基础学习书籍和视频。作为最快捷也是最有效的方式之一,跟着老师的思路,由浅入深,从理论到实操,其实大模型并不难。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
学习路上没有捷径,只有坚持。但通过学习大模型,你可以不断提升自己的技术能力,开拓视野,甚至可能发现一些自己真正热爱的事业。
最后,送给你一句话,希望能激励你在学习大模型的道路上不断前行:
If not now, when? If not me, who?
如果不是为了自己奋斗,又是为谁;如果不是现在奋斗,什么时候开始呢?