在之前的编程任务中,研发人员需要提前清楚程序运行的内部逻辑,并且用代码的形式把这些逻辑实现出来,且逻辑是确定性的,相同的输入会得到相同的输出。
随着编程任务的复杂度越来越高,研发需要付出大量的工作去搞清楚程序运行的内部逻辑,时间和人力的消耗大,一些任务已经复杂到搞清楚全部运行逻辑是普通人力和团队无法承受的程度。且无法解决一些不确定性的任务,如一张图片里到底是一只猫还是一只老虎,不同的场景下会出现不确定的结果。
面对这样的困境,研发希望不用去搞清楚程序运行的内部逻辑,也可以将逻辑实现出来,给定一个输入可以获得一个输出。
1、模型原理
人工智能就是用来解决上述问题的。人工智能(Artificial Intelligence, AI)是一个广泛的领域,涉及设计计算系统和算法,使得计算机能够执行通常需要人类智能的任务。机器学习是人工智能的一个子领域,研究如何通过从数据中自动学习和改进算法,使得计算机可以进行预言预测和决策。神经网络是机器学习中的一种模型,也是当前最流行的一种模型。
1.1、神经网络
很多任务,人类是可以完成的,人类是依赖大脑这种神经网络来完成这种复杂和不确定性的任务的,AI就是从中获取到启发。
人类的大脑是由一个一个的神经元相互连接而组成的神经网络,每一个神经元只能处理很简单的任务,但是有足够多的神经元,相互连接传递信息,却能处理很复杂的任务。受此启发,AI引入了神经网络。
神经网络是一种特定类型的AI模型,它受到人类大脑结构和功能的启发,用于识别复杂的模式和关系。神经网络由许多相互连接的节点(人工神经元)组成,这些节点通过连接(边)传递和处理信息。
一个典型的神经网络如下所示:
•神经元(节点):每个节点负责接收输入并进行特定的处理。
•层:神经网络通常包括输入层、隐藏层和输出层。
○输入层:接收原始数据,例如将一张图片转化成像素值,根据不同的任务类型有所不同
○隐藏层:处理信息,每个隐藏层都有多个神经元,这些神经元通过加权连接传递信息。
○输出层:将数值计算转换成最终的预测结果,根据不同的任务类型有所不同
1.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可以不用搞清楚一个函数的内在实现逻辑,而是通过神经网络的方式模拟这些函数,从而获得对应函数的输出。
2、模型设计
设计模型就是设计神经网络的结构的过程,其有以下几个方面:
1.确定任务的类型
2.选择适当的层数:
3.选择神经元数量:
4.选择激活函数
5.选择层类型
6.选择超参数
目前对于不同的任务已经有大量开源的模型,比如用于图像处理的CNN,用于ChatGPT的Transformer等,研发可以在开源的基础上进行调整以最大化的满足其场景需求。
3、模型训练
模型训练的目标:通过大量的数据训练,确定合适的神经网络及其参数(如权重矩阵和偏置矩阵),从而实现对复杂任务最接近的模拟。
为了达到这一目标首先需要一个衡量指标,用来衡量当前模型对于复杂任务模拟的接近程度,这个指标就是损失函数。损失函数(Loss Function)是机器学习和深度学习中的一个重要概念,它用来衡量模型的预测结果与实际结果之间的差距,即误差。通俗地说,损失函数就像评分系统,告诉我们模型的表现有多好或者多差。通过最小化损失函数的值,我们可以不断优化模型,使其预测结果更加准确。
模型的参数(权重和偏置)在开始时通常是随机初始化的,预测值和输出有很大的差距。
前向传播:将输入数据通过网络传递,计算每个神经元的线性组合,再通过激活函数输出。
神经网络前向传播产生的输出(即预测值)和真实数据的输出(即真实值)之间的差距需要用损失函数进行衡量,损失函数一般是根据不同的任务提前设置好的,比如均方误差,计算预测值和真实值之间差的平方和的平均值。
3.1、反向传播
由于神经网络的不同的参数(权重矩阵和偏置矩阵),可以输出不同的预测值,也就是损失函数会取不同的值,训练的过程就是找到合适的参数,使得损失函数的值最小。这个过程就是反向传播。
损失函数可以通俗的理解为参数的函数,要找到其最小值可以借助梯度这一数学工具。二维函数一般情况下就是使用导数来找到最小值,但是三维以上的函数就是使用梯度。
梯度是一个向量,它的方向指向函数变化最快的方向,长度表示变化的速率。可以把梯度下降过程类比为“沿着山坡向下走”。如果我们站在函数的某个点,梯度告诉我们哪个方向是下坡最快的方向,我们一步一步地沿着这个方向走,每步步长由学习率(超参数)决定,这样我们可以逐渐接近山谷,即函数的最低点。
反向传播流程如下:
1.计算损失:根据前向传播计算出输出值和真实数据的输出值,使用损失函数(如均方误差、交叉熵等)计算损失值。
2.计算梯度:计算损失函数关于每个权重和偏置的梯度,将这些梯度用于更新权重和偏置。
3.更新权重和偏置:使用优化算法(如梯度下降、Adam 等)根据梯度更新权重和偏置。
4.迭代:重复上述过程,直到损失函数收敛或达到预设的训练轮数。
如果损失函数没有收敛,那需要调整模型或者优化算法超参数等,反之则继续训练至损失函数达到预期。
3.2、泛化
一个模型除了在训练数据集上表现良好,还需要在非训练数据集上有比较好的表现,这个过程称之为泛化。因此下一步需要在非训练集上进行验证,非训练集大体分为两种:独立数据集和验证数据集。独立数据集是指从外部下载的公开数据集,验证数据集是指从训练数据集中提取一部分数据,这部分数据没有用来训练,而是用来验证。
如果模型泛化表现依然良好,那就可以直接上线运行;反之,则需要继续调整模型或者调整训练数据集,来达到最终目的。
4、模型维护和迭代
在实际应用中不断监控模型的预测性能,特别是数据分布变更时的表现,定期更新模型训练数据,重新训练模型以适应新数据,根据用户反馈和监控结果,定期进行模型优化和调优。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。