人工智能基础883
2024-11-21 14:28:40 0 举报
AI智能生成
人工智能基础883是一门针对人工智能的入门级课程,旨在帮助学生掌握人工智能的基本概念、理论和技术。课程内容涵盖了机器学习、神经网络、自然语言处理、计算机视觉等领域,通过理论讲解和实践操作相结合的方式,帮助学生理解并运用人工智能技术解决实际问题。该课程旨在培养具备创新思维和实践能力的人工智能专业人才,为未来的人工智能研究和应用打下坚实基础。
作者其他创作
大纲/内容
第1章 数学基础
事件与概率
古典概型
定义
(1)试验中所有可能出现的基本事件只有有限个事件(除不可能事件)都可以表示成基本事件的和
(2) 每个基本事件出现的可能性相等
(2) 每个基本事件出现的可能性相等
组合公式
解题技巧
公式:P = m/n
示例
算出总事件个数n,然后再算出来事件数m,代入公式求解
几何概型
定义
解题技巧
示例
两者区别
二项式概型
二项式概型又称二项分布
示例
超几何概型
示例
加法公式
随机变量与概率分布
贝叶斯公式
用于计算在已知某些相关事件发生的条件下,另一个事件发生的概率
A1先发生,然后B再发生,上面的公式相当于知道了B需要求A
里面的P(B)是全概率公式
巧记:P(B)的话,B一定在中间,两边都是A,如:P(A1) P(B|A1)
乘法公式
图解公式
示例
不用公式秒杀法
三门问题
期望、方差与协方差
期望
数学期望就像是一种 “长期平均” 的结果
示例
方差
方差是用来衡量一组数据或者一个随机变量的离散程度的
简单说,就是看这些数据是比较集中地分布在某个值周围,还是很分散
简单说,就是看这些数据是比较集中地分布在某个值周围,还是很分散
方差越大越分散,方差越小越集中
示例
巧记:先与平均值差然后平方求和,最后再求平均值
第一组方差是 1.76,第二组方差是 344。可以看出第一组同学的成绩比较集中在平均数 79.8 分附近
而第二组同学的成绩很分散,从 50 分到 100 分都有,所以方差更大。这就是方差的作用,它可以帮助我们了解数据的离散程度。
而第二组同学的成绩很分散,从 50 分到 100 分都有,所以方差更大。这就是方差的作用,它可以帮助我们了解数据的离散程度。
协方差
定义
协方差就像是一个工具,用来看看两个东西(两个变量)是不是一起变化的。
如果两个变量一起变大或者一起变小,协方差就是正数;
如果一个变大另一个变小,协方差就是负数;
要是它们之间没有这种一起变大或者变小的关系,协方差就接近 0。
如果两个变量一起变大或者一起变小,协方差就是正数;
如果一个变大另一个变小,协方差就是负数;
要是它们之间没有这种一起变大或者变小的关系,协方差就接近 0。
示例
矩阵基础
加法
相同的位置直接加求和即可
乘法
示例1
直接乘进去就可以
示例2
用第1个矩阵中的每一行,去乘后面的
结合律、分配律
转置矩阵
把每一列写成行
单位矩阵
课后题
6. 设 A, B, C 是三个事件,且 P(A) = P(B) = P(C) = 1/4,P(AB) = P(BC) =0,P(AC) = 1/8,求 A,B,C 至少发生一个事件的概率
加法公式
8. 一个袋中装有 5 只球,编号为 1,2,3,4,5。在袋中同时取 3 只,以 X 表示取出的 3 只球中的最大号码,写出随机变量 X 的分布律
解题关键:取出来的3只球最大的数只有:3 4 5,然后算出来每一种概率即可
分别计算
9. 进行重复独立实验,设每次实验的成功概率为 p,失败概率为 q = 1 - p(0 < p < 1)
(1) 将实验进行到出现一次成功为止,以 X 表示所需的实验次数,求 X 的分布律(此时称 X 服从以 p 为参数的几何分布)
设第k次成功了,说明前面的k-1次失败了
(2) 将实验进行到出现 r 次成功为止,以 Y 表示所需的实验次数,求 Y 的分布律(此时称 Y 服从以 r,p 为参数的巴斯卡分布或负二项分布)
第3章 机器学习
监督学习的概念
监督学习是一种机器学习方法,它利用一组已标记的训练数据来学习输入数据和输出结果之间的映射关系,以便对新的未标记数据进行预测。
数据集与损失函数
数据集是一组用于训练、验证和测试机器学习模型的数据样本集合
损失函数是用于衡量模型预测结果与真实值之间差异的函数
泛化
泛化是指模型对新的、未见过的数据的预测能力
一个具有良好泛化能力的模型,不仅在训练数据上表现良好,而且在面对来自相同分布的新数据时,也能给出准确的预测
泛化能力是衡量机器学习模型性能的重要指标之一
过拟合与欠拟合
过拟合是指模型在训练数据上表现得非常好,但在新的、未见过的数据上表现很差的现象
欠拟合是指模型在训练数据和新的数据上都表现不好的现象
创建数据集
创建数据集在机器学习和数据分析中通常是指构建一个包含特定数据样本集合的过程,以便用于模型训练、验证、测试或其他分析任务
COCO数据集的拆分方式
无监督学习与半监督学习
无监督学习是一种机器学习方法,在没有明确的目标标签或输出变量的情况下,从数据中自动发现模式、结构或规律
聚类:将数据分成不同的组或簇,使得同一簇内的数据点具有相似的特征,不同簇之间的数据点具有较大的差异
降维:将高维数据映射到低维空间,同时保留数据的主要特征
半监督学习是一种机器学习方法,结合了少量的有标记数据和大量的未标记数据进行学习
目前流行程度比较
目前在不同的应用场景下,监督学习、无监督学习和半监督学习都有广泛的应用,很难确定哪种方法是最流行的
监督学习在图像分类、语音识别、自然语言处理等领域取得了巨大的成功,许多实际应用中的模型都是基于监督学习训练的,例如人脸识别系统、语音助手等
无监督学习在数据挖掘、异常检测、特征提取等方面也有重要的应用,例如聚类算法可以用于市场细分、图像压缩等
半监督学习在有标记数据较少的情况下,可以利用大量的未标记数据来提高模型性能,因此在一些特定的领域也有一定的应用前景。
ChatGPT 所属类型
ChatGPT 是一种基于大规模预训练的语言模型,属于监督学习和无监督学习相结合的方法
在预训练阶段,ChatGPT 使用无监督学习方法,通过大规模的文本数据进行自监督学习,学习语言的统计规律和语义表示
在微调阶段,ChatGPT 使用监督学习方法,通过少量的有标记数据进行有监督学习,调整模型的参数以适应特定的任务和领域
总之,不同的机器学习方法在不同的应用场景下都有其优势和局限性,目前很难确定哪种方法是最流行的。ChatGPT 是一种监督学习和无监督学习相结合的语言模型,在自然语言处理领域取得了显著的成果。
K平均算法
K 平均算法(K-Means Algorithm)是一种无监督学习算法,用于将数据集中的样本划分为个不同的簇(cluster)
失败的例子
欧式距离(Euclidean distance)
欧式距离(Euclidean distance),又称欧几里得距离,是最常见的一种距离度量方式
谱聚类算法
谱聚类(Spectral Clustering)算法是一种基于图论的聚类方法
谱聚类算法是一种基于图论的聚类方法,它通过对数据点之间的相似性构建图,然后利用图的拉普拉斯矩阵的特征向量进行聚类。
交叉熵
交叉熵(Cross Entropy)是信息论中的一个概念,在机器学习中尤其是分类问题中被广泛应用
在信息论中,交叉熵是用来衡量两个概率分布之间的差异程度。如果两个概率分布完全相同,那么它们的交叉熵为零;如果两个概率分布差异很大,那么它们的交叉熵就会很大。
课后题
第4章 线性回归
线性回归
线性回归试图找到一个线性方程来描述输入变量(也称为自变量或特征)和输出变量(也称为因变量或目标)之间的关系。
线性回归是一种用于建立因变量(目标变量)与一个或多个自变量之间线性关系的统计方法
对于线性回归问题,常用的损失函数是平方损失
使用正规方程的方法,可以得到平方损失函数L的精确最小解
优化方法
梯度下降(Gradient Descent)和随机梯度下降(Stochastic Gradient Descent)都是优化算法,用于寻找函数的最小值,在机器学习和深度学习中被广泛应用于训练模型。
梯度下降(Gradient Descent)
梯度下降法的基本思想是从一个初始点出发,沿着目标函数的负梯度方向逐步迭代,以减小目标函数的值。在每次迭代中,根据当前点的梯度信息确定下一步的搜索方向和步长,不断逼近目标函数的最小值点。
当训练数据量较小时,可以使用梯度下降算法
先求导:L'(w) = w
w1 = w0 - 0.1w0 = 0.9
w2 = w1 - 0.1w1 = 0.81
w3 = w2 - 0.1w2 = 0.729
w1 = w0 - 0.1w0 = 0.9
w2 = w1 - 0.1w1 = 0.81
w3 = w2 - 0.1w2 = 0.729
先求导:L'(w) = 2w + 5
w0 = 2
w1 = w0 - 0.1 ( 2w0 + 5 ) = 1.1
w2 = w1 - 0.1 ( 2w1 + 5 ) = 0.38
w3 = w2 - 0.1 ( 2w2 + 5 ) = -0.196
w0 = 2
w1 = w0 - 0.1 ( 2w0 + 5 ) = 1.1
w2 = w1 - 0.1 ( 2w1 + 5 ) = 0.38
w3 = w2 - 0.1 ( 2w2 + 5 ) = -0.196
随机梯度下降(Stochastic Gradient Descent)
随机梯度下降由于每次更新的计算量小,可以更快地进行参数更新,通常收敛速度比梯度下降快。但是,由于更新方向的波动性,可能需要更多的迭代次数才能达到较好的结果。
当训练数据量很大时,随机梯度下降算法更加适用
岭回归
岭回归(Ridge Regression)是一种用于处理线性回归中多重共线性问题的有偏估计回归方法。
在传统的线性回归中,如果自变量之间存在高度相关性(多重共线性),会导致回归系数的估计不稳定,方差较大。岭回归通过在损失函数
中加入一个正则项来解决这个问题。
正则化是一种用于防止模型过拟合的技术。在岭回归中,正则化通过向损失函数添加一个惩罚项来实现。这个惩罚项通常与模型系数的平方和成正比。
岭回归的优点
解决多重共线性问题
减少过拟合风险
简单且易于理解和实现
对异常值相对更鲁棒:普通线性回归可能会因为过度拟合这些异常值而导致模型性能下降,而岭回归的正则化机制可以缓解这种情况。
岭回归的缺点
需要选择合适的正则化参数
解释性可能会降低
计算效率在某些情况下较低
套索回归
套索回归(Lasso Regression)是一种线性回归的正则化方法,与岭回归类似,主要用于处理多重共线性问题和进行特征选择。
套索回归能够自动选择重要特征,去除不相关或冗余的特征,这在高维数据和特征数量远大于样本数量的情况下非常有用
应用场景
线性回归适用于数据比较简单、不存在多重共线性问题且不太担心过拟合的情况
岭回归适用于存在一定程度的多重共线性,但又希望保留所有特征进行建模的情况
套索回归适用于高维数据、特征数量较多且需要进行特征选择的情况,或者希望得到一个简洁解释性强的模型的情况
支持向量机算法
支持向量机(Support Vector Machine,SVM)是一种监督式机器学习算法,主要用于分类和回归分析
分类问题:文本分类
回归问题:图像识别
回归问题:图像识别
二分类问题是指将数据分为两个不同的类别
算法原理
线性可分情况
线性不可分情况
在实际问题中,数据往往不是线性可分的。这时,SVM 引入松弛变量和惩罚参数,允许一些数据点被错误分类或者位于超平面的错误一侧。
目标是在保持分类准确性的同时,尽量减小松弛变量的总和。通过调整惩罚参数,可以控制对错误分类的容忍程度。
对于非线性问题,可以使用核技巧将数据映射到高维空间,使得在高维空间中数据变得线性可分,然后再应用 SVM 进行分类
优点
在小样本情况下表现良好
对高维数据有效
具有良好的鲁棒性
可以处理非线性问题
有明确的数学理论基础
SVM 基于严格的数学理论,如凸优化、统计学习理论等,具有明确的优化目标和求解方法
课后题
先求导:L'(w) = 2w + 5
w0 = 2
w1 = w0 - 0.1 ( 2w0 + 5 ) = 1.1
w2 = w1 - 0.1 ( 2w1 + 5 ) = 0.38
w3 = w2 - 0.1 ( 2w2 + 5 ) = -0.196
w0 = 2
w1 = w0 - 0.1 ( 2w0 + 5 ) = 1.1
w2 = w1 - 0.1 ( 2w1 + 5 ) = 0.38
w3 = w2 - 0.1 ( 2w2 + 5 ) = -0.196
第5章 决策树模型
决策树模型,过时的东西吧,靠规则人工智能是失败的
决策树的例子
决策树的定义
最常用的决策树算法
D3(Iterative Dichotomiser 3)算法
早期的决策树算法之一,主要用于分类问题,相对较简单,在处理复杂数据和大规模数据集时可能表现不够出色
主要用于分类问题
使用信息增益
C4.5 算法
由 ID3 算法发展而来,可以处理连续属性和离散属性,采用信息增益比来选择最佳分裂属性,克服了 ID3 算法中偏向选择取值多的属性的问题
主要用于分类问题,对连续属性处理更好
使用信息增益比
CART(Classification and Regression Tree)算法
既可以用于分类问题,也可以用于回归问题,对于分类问题,采用基尼指数(Gini index)来选择分裂属性;对于回归问题,采用平方误差最小化原则进行属性选择和分裂。
可用于分类和回归问题
分类时用基尼指数,回归时用平方误差最小化
决策树的训练算法
叶子预测值的计算
对于回归树,叶子节点的预测值通常是落在该叶子节点的样本目标值的均值
分割条件的选取
上图48和198是上面的求的和,然后平方并求平均,再减掉所有的y的值之和的平方再求平均的值
决策树结构的选择
防止过拟合
缺失值处理
离散型特征处理方法与特征工程
独热编码
是一种将离散型特征转换为二进制向量的编码方式
例如:性别 = 男,性别 = 女
高维度:如果离散特征的取值数量很多,会导致编码后的特征维度非常高,增加了计算量和存储空间的需求。
标签编码
是一种将离散型特征的不同取值映射为整数标签的编码方式
例如,对于一个表示颜色的离散特征,有红、蓝、绿三种取值。可以将红色编码为0,蓝色编码为1,绿色编码为2。
示例
课后题
简而言之,问题是在询问归一化操作是否会对基于决策树的算法的训练结果产生影响。
在机器学习中,归一化操作通常用于神经网络等模型,目的是将数据缩放到特定的范围,以便更好地训练模型。然而,对于决策树及其相关算法,归一化操作通常不会对训练结果产生显著影响。
这是因为决策树的分割依据是基于特征值的大小比较,而不是特征值的具体数值。因此,归一化操作不会改变特征值之间的相对大小关系,也就不会影响决策树的构建和训练结果。
综上所述,对于基于决策树的一系列算法,归一化操作不会影响训练结果。
在机器学习中,归一化操作通常用于神经网络等模型,目的是将数据缩放到特定的范围,以便更好地训练模型。然而,对于决策树及其相关算法,归一化操作通常不会对训练结果产生显著影响。
这是因为决策树的分割依据是基于特征值的大小比较,而不是特征值的具体数值。因此,归一化操作不会改变特征值之间的相对大小关系,也就不会影响决策树的构建和训练结果。
综上所述,对于基于决策树的一系列算法,归一化操作不会影响训练结果。
在选择决策树模型时,通常需要考虑模型的复杂度和泛化能力。模型复杂度可以通过决策树的深度来衡量,而泛化能力可以通过验证集误差来评估。
从表格中可以看出:
* 随着决策树深度的增加,训练误差逐渐减小,但验证集误差并非一直减小。
* 模型 5 的训练误差最小,但验证集误差最大,这表明模型 5 可能出现了过拟合现象,即模型在训练数据上表现很好,但在未见过的数据(验证集)上表现不佳。
* 模型 4 的训练误差和验证集误差都相对较低,且没有出现过拟合现象。
综合考虑,模型 4 是最佳选择。虽然模型 3 的验证集误差与模型 4 相同,但模型 4 的训练误差更低,表明模型 4 在训练数据上的拟合效果更好,同时在验证集上也没有过拟合。因此,选择模型 4 作为最终模型。
从表格中可以看出:
* 随着决策树深度的增加,训练误差逐渐减小,但验证集误差并非一直减小。
* 模型 5 的训练误差最小,但验证集误差最大,这表明模型 5 可能出现了过拟合现象,即模型在训练数据上表现很好,但在未见过的数据(验证集)上表现不佳。
* 模型 4 的训练误差和验证集误差都相对较低,且没有出现过拟合现象。
综合考虑,模型 4 是最佳选择。虽然模型 3 的验证集误差与模型 4 相同,但模型 4 的训练误差更低,表明模型 4 在训练数据上的拟合效果更好,同时在验证集上也没有过拟合。因此,选择模型 4 作为最终模型。
这是一个关于决策树变种 —— 分段线性树的问题。
分段线性树是决策树的一种变种。它在叶子节点上使用线性模型代替常数预测值
分段线性树在叶子上使用线性模型具有提高预测精度和灵活性的优点,但也存在过拟合、计算复杂度高和参数估计难度大的缺点。在实际应用中,需要根据数据的特点和问题的需求来选择是否使用分段线性树。
分段线性树是决策树的一种变种。它在叶子节点上使用线性模型代替常数预测值
分段线性树在叶子上使用线性模型具有提高预测精度和灵活性的优点,但也存在过拟合、计算复杂度高和参数估计难度大的缺点。在实际应用中,需要根据数据的特点和问题的需求来选择是否使用分段线性树。
第7章 神经网络初步【重要】
深度线性网络
深度线性网络(Deep Linear Network)是一种神经网络架构。在这种网络中,每一层神经元之间的映射是线性的
非线性神经网络
非线性神经网络是一种能够处理复杂的非线性关系的人工智能模型
非线性神经网络通过对输入数据进行一系列的非线性变换,将输入空间映射到输出空间,从而逼近复杂的非线性函数关系。
这种映射能力使得神经网络能够处理现实世界中许多非线性的问题,例如图像识别、语音处理、自然语言理解等
这种映射能力使得神经网络能够处理现实世界中许多非线性的问题,例如图像识别、语音处理、自然语言理解等
非线性神经网络的训练过程通常采用反向传播算法,该算法通过计算网络输出与真实值之间的误差,然后将误差从输出层反向传播到输入层,根据误差的梯度来调整神经元之间的连接权重和偏置参数。通过不断地迭代训练,网络的误差逐渐减小,直到达到预设的精度要求或训练次数上限。
规则:负数变为0,非负数不变
反向传播:从输出层开始,根据损失函数对各层参数的导数,逐层反向计算梯度。具体来说,对于每一层,通过链式法则计算该层参数对损失函数的梯度,即该层的误差项。误差项反映了该层参数对损失的影响程度。
全连接网络,也称为多层感知机(Multilayer Perceptron,MLP),是一种基本的人工神经网络结构。
神经元:全连接网络由多个神经元组成。每个神经元接收来自上一层所有神经元的输入,并通过加权求和和激活函数的运算产生输出。
层:全连接网络通常包含输入层、隐藏层和输出层
在全连接网络中,每一个神经元都与上一层的所有神经元相连,这种连接方式称为全连接或密集连接。因此,全连接网络中的参数数量相对较多,尤其是当输入数据的维度较高或网络层数较多时。
参数数量多:容易导致过拟合,需要大量的训练数据和正则化技术来防止过拟合。
计算复杂度高:对于大规模数据和复杂网络结构,训练和推理的计算成本较高。
反向传播计算导数
反向传播(Backpropagation)是训练神经网络的一种关键算法,用于计算损失函数关于神经网络中每个参数(权重和偏置)的导数。它是基于链式法则的一种高效计算方法。在神经网络中,我们的目标是最小化损失函数(例如均方误差、交叉熵损失等),而计算导数是通过梯度下降等优化算法来更新参数的关键步骤
反向计算导数:从输出层开始,逐步计算损失函数关于各层权重和偏置的导数。对于每一层,先计算本层输出关于本层参数的导数,再乘以损失函数关于下一层输出的导数(这是通过链式法则传递过来的)
交叉熵衡量了两个概率分布之间的差异。在机器学习中,我们希望模型预测的概率分布尽可能接近真实的概率分布,因此通过最小化交叉熵来训练模型。
重要性和意义
反向传播算法使得神经网络的训练成为可能,它高效地计算了导数,从而能够利用梯度信息来优化神经网络的参数。这种自动求导的机制大大简化了神经网络的训练过程,使得神经网络能够在大量的数据上进行训练,从而学习到复杂的模式和关系,在图像识别、语音识别、自然语言处理等众多领域取得了巨大的成功。
示例
解题过程:
由于输入不是一行3个,所以需要输入和W1同时转置一下,输入是:
1 0 2
W1转置后为:
0 0 2
-2 1 -3
0 1 -3
然后求点乘结果为:0 2 -4
再经过ReLU负数替换为0为:0 2 0
最后再和W2点乘结果输出为:2
由于输入不是一行3个,所以需要输入和W1同时转置一下,输入是:
1 0 2
W1转置后为:
0 0 2
-2 1 -3
0 1 -3
然后求点乘结果为:0 2 -4
再经过ReLU负数替换为0为:0 2 0
最后再和W2点乘结果输出为:2
优化器
优化器(Optimizer)是神经网络训练过程中的关键组件,用于更新神经网络的参数(如权重和偏置),以最小化损失函数。它基于损失函数对参数的梯度信息,决定参数的更新方向和步长
在神经网络初步知识中,优化器是用于调整神经网络中参数(如权重和偏置)的工具。神经网络的训练过程本质上是一个优化问题,我们希望通过不断调整参数,使得神经网络的输出能够更好地拟合训练数据,而优化器就是帮助我们找到一组最优(或较优)参数的算法
例如,我们把神经网络想象成一个黑盒子,输入数据经过这个黑盒子后得到输出。这个输出与真实的目标输出之间存在误差,优化器的作用就是根据这个误差来调整黑盒子内部的参数,让输出越来越接近真实目标输出
工作原理
小批次梯度下降(小批量)
批次(batch):在训练模型时,将整个数据集划分为若干个小的集合,每个小集合称为一个批次。每个批次通常包含一定数量的样本数据
小批次梯度下降:每次使用一个小批次的数据来计算梯度,并更新模型的参数。通过不断迭代,逐渐减小损失函数的值,使模型更好地拟合训练数据。
小批次梯度下降通过平均批内的导数,保证了在不同的更新步骤中梯度的方差不会太大
带动量的随机梯度下降
是对传统随机梯度下降算法的一种改进,它通过计算前几步梯度的滑动平均来计算动量,然后用于当前步的更新
动量的方法可以有效地提升模型收敛的速度
更快的收敛速度:相比传统随机梯度下降,通常能够在更短的时间内达到较好的解
稳定性更高:减少了参数更新的振荡,使训练过程更加稳定
可能过度依赖动量:在某些情况下,如果动量设置不当,可能会导致算法过度依赖动量,错过更好的解或者收敛到错误的位置
Nesterov加速的梯度下降
动量方法尽管好,但有时候如果动量过大,优化会错过一个最优值。为了解决这个问题,Nesterov提出了一种前瞻算法
自适应梯度Adagrad
Adagrad是一种自适应学习率的优化算法,常用于机器学习和深度学习中。前面的算法都对一个大的神经网络里的所有的参数使用了相同的学习率,而在Adagrad算法中,学习率是动态变化的
Adagrad 的主要优点是能够自动调整每个参数的学习率。对于频繁出现的特征,其对应的参数学习率会逐渐减小,避免过度更新;而对于不常出现的特征,其对应的参数学习率会相对较大,确保能够得到充分的更新。
这种自适应的特性使得算法在处理稀疏数据时表现出色,因为它可以根据数据的稀疏性自动调整学习率,避免对不常出现的特征进行过度更新。
在一些问题上,Adagrad 能够较快地收敛到一个较好的解。尤其是在处理大规模数据和高维参数空间时,它的自适应学习率特性可以帮助算法更有效地探索参数空间,提高收敛速度。
初始学习率的选择对算法的性能有较大影响。如果初始学习率设置得过大,可能会导致算法在早期的更新过于剧烈,影响收敛性;如果设置得过小,算法可能收敛得非常缓慢。
自适应动量Adam
Adam是一种优化算法,结合了自适应学习率方法和动量的思想,常用于深度学习等优化问题中
Adam 引入了动量的概念,类似于带动量的梯度下降算法。一阶矩估计可以看作是一种带有指数衰减平均的动量项,它有助于加速收敛并减少振荡
Adam 是一种非常强大的优化算法,在深度学习等领域得到了广泛的应用。然而,在实际使用中,可能需要根据具体问题对超参数进行适当的调整,并结合其他优化算法或技术来提高性能。
权值初始化
Xavier初始化
也称为 Glorot 初始化,是以其提出者 Xavier Glorot 的名字命名的一种参数初始化方法,主要用于神经网络中。
在很多实际应用中,Xavier 初始化被证明是一种比较有效的初始化方法,适用于多种类型的神经网络结构,包括全连接层、卷积层等
其目的是使得在神经网络的前向传播和反向传播过程中,信号的方差在各层之间尽可能保持一致。这样可以避免在深度神经网络中出现信号的爆炸或消失问题,有助于训练更深、更稳定的网络
合理的初始化可以使神经网络在训练初期更快地收敛到较好的解。如果权重初始化不当,可能导致梯度消失或爆炸,使得训练过程非常缓慢甚至无法进行
Kaiming初始化
Kaiming 初始化也叫 He 初始化,是一种神经网络参数初始化方法。它主要是为了缓解深度神经网络训练过程中出现的梯度消失或梯度爆炸问题,特别是针对使用 ReLU(Rectified Linear Unit)及其变体作为激活函数的网络层
由于缓解了梯度问题,网络能够更快地收敛,减少了训练时间,提高了训练效率。在深度神经网络中,例如深度卷积神经网络用于图像分类任务时,采用 Kaiming 初始化可以使模型更快地达到较高的准确率。
它是基于 ReLU 激活函数的特性设计的,对于其他类型的激活函数(如 Sigmoid、Tanh)可能不是最优的初始化方法。例如,在使用 Sigmoid 激活函数的网络中,Kaiming 初始化可能无法很好地保持信号方差的稳定性。
权值衰减
权值衰减(Weight Decay)是一种用于防止神经网络过拟合的正则化技术。在训练神经网络的过程中,它通过在损失函数中添加一个与模型权重大小相关的惩罚项,来限制模型权重的增长,使得模型的复杂度降低,从而提高模型的泛化能力。
权值共享与卷积
循环神经网络
循环神经网络(Recurrent Neural Network,RNN)是一种专门用于处理序列数据的神经网络。与传统的前馈神经网络不同,RNN 在网络结构中包含循环连接,能够处理具有时间序列或其他顺序信息的数据,如文本、语音、时间序列数据等。
长短时记忆网络(Long - Short Term Memory,LSTM)是一种特殊的循环神经网络,它是为了解决传统循环神经网络(RNN)中的梯度消失和梯度爆炸问题,从而能够更好地处理长序列数据而设计的。
卷积神经网络CNN
课后题
卷积算法是点乘,直接乘相加即可。需要转置,行变列即可,同时权重和输入都需要同时转置
需要同时转置一下
第1步:
权重W1 为:
3 2 0
1 4 2
0 2 -5
由于输入的参数X是:
7
5
6
所以,我们先把权重W1进行转置T:
3 1 0
2 4 2
0 2 -5
开始计算W1转置T点乘X:
3 1 0 7
2 4 2 点乘 5 (这里把输入的X也转置一下中)最终是(7 5 6)
0 2 -5 6
等于:
3x7 + 1x5 + 0x6 = 26
2x7 + 4x5 + 2x6 = 46
0x7 + 2x5 + -5x6 = -20
第2步:
权重W2 为:
1
-0.5
2
第1步算完是:
26
46
-20
都进行转置为:
(1 -0.5 2) 点乘 (26 46 -20)
然后再计算:
1x26 + -0.5x46 + 2x-20 = 26 -23 -40=-37
第1步:
权重W1 为:
3 2 0
1 4 2
0 2 -5
由于输入的参数X是:
7
5
6
所以,我们先把权重W1进行转置T:
3 1 0
2 4 2
0 2 -5
开始计算W1转置T点乘X:
3 1 0 7
2 4 2 点乘 5 (这里把输入的X也转置一下中)最终是(7 5 6)
0 2 -5 6
等于:
3x7 + 1x5 + 0x6 = 26
2x7 + 4x5 + 2x6 = 46
0x7 + 2x5 + -5x6 = -20
第2步:
权重W2 为:
1
-0.5
2
第1步算完是:
26
46
-20
都进行转置为:
(1 -0.5 2) 点乘 (26 46 -20)
然后再计算:
1x26 + -0.5x46 + 2x-20 = 26 -23 -40=-37
第1层计算完后是:
26
46
-20
然后使用ReLU激活含数,会把负数变了0,所以最后的结果是:
26
46
0
然后再计算第2步:
26 1
46 点乘 -0.5
0 2
再计算:
1x26 + -0.5x46 + 0x2 = 26 - 23 = 3
最后再经过ReLU进行运行,因为3已经是大于0了,所以算完还是3
26
46
-20
然后使用ReLU激活含数,会把负数变了0,所以最后的结果是:
26
46
0
然后再计算第2步:
26 1
46 点乘 -0.5
0 2
再计算:
1x26 + -0.5x46 + 0x2 = 26 - 23 = 3
最后再经过ReLU进行运行,因为3已经是大于0了,所以算完还是3
4 7 1 70
2 5 9 点乘 2000
3 8 6 0
先把权重W和输入同时转置一下:
4 2 3
7 5 8 点乘 70 2000 0
1 9 6
计算:
4x70 + 2x2000 + 3x0 = 4280
7x70 + 5x2000 + 8x0 = 10490
1x70 + 9x2000 + 6x0 = 18070
然后再算第2步:
0 4280
-0.0001 点乘 10490
0.0002 18070
先转置一下:
(0 -0.0001 0.0002) 点乘 (4280 10490 18070)
计算:
0x4280 + -0.0001x10490 + 0.0002x18070 = -1.0490 + 3.614 = 2.565
至此我们第2层算完了,然后开始算激活函数
2 5 9 点乘 2000
3 8 6 0
先把权重W和输入同时转置一下:
4 2 3
7 5 8 点乘 70 2000 0
1 9 6
计算:
4x70 + 2x2000 + 3x0 = 4280
7x70 + 5x2000 + 8x0 = 10490
1x70 + 9x2000 + 6x0 = 18070
然后再算第2步:
0 4280
-0.0001 点乘 10490
0.0002 18070
先转置一下:
(0 -0.0001 0.0002) 点乘 (4280 10490 18070)
计算:
0x4280 + -0.0001x10490 + 0.0002x18070 = -1.0490 + 3.614 = 2.565
至此我们第2层算完了,然后开始算激活函数
计算机视觉【重要】
什么是计算机视觉
计算机视觉(Computer Vision)是一门研究如何使机器 “看” 的科学
计算机视觉的目标是让计算机理解和处理图像或视频中的内容。它模拟人类视觉系统的功能,从图像中提取信息,例如识别物体、场景理解、跟踪运动物体等。例如,当人类看到一张包含苹果的图片时,能够立刻识别出这是苹果,并且知道它的大致位置、颜色等信息。计算机视觉就是要让计算机也能完成类似的任务。
主要任务
物体识别
它旨在识别图像或视频中出现的物体是什么。例如,在安防监控领域,计算机视觉系统可以识别出监控画面中的人物、车辆等物体类别。像人脸识别系统,能够准确地识别出不同人的面部特征,用于门禁系统、机场安检等场景
目标检测
不仅要识别出物体的类别,还要确定物体在图像中的位置。例如在自动驾驶汽车中,目标检测系统需要检测出道路上的其他车辆、行人、交通标志等物体的位置,从而为汽车的行驶决策提供依据。通过在图像上绘制边界框(Bounding Box)来标记出物体的位置范围
语义分割
是对图像中的每个像素进行分类,将属于同一类物体的像素划分到一起。例如,在医学图像分析中,语义分割可以将医学影像(如 X 光、CT 等)中的不同组织(如骨骼、肌肉、肿瘤等)分割出来,帮助医生更准确地诊断疾病
实例分割
类似于语义分割,但它不仅要区分不同的类别,还要区分同一类别的不同个体。例如,在一张包含多只猫的图片中,实例分割可以将每只猫作为一个独立的个体进行分割,能够清楚地划分出每只猫的轮廓,这对于计数物体数量等任务非常有用
动作识别
主要应用于视频分析,用于识别视频中的人物或物体正在进行的动作。比如在体育赛事视频分析中,可以识别运动员的跑步、跳跃、投篮等动作,也可以用于智能监控,识别异常行为,如有人摔倒、打斗等情况
图像的形成
小孔相机模型
小孔相机模型,也称为针孔相机模型,是一种基于小孔成像原理的简单光学模型
小孔成像原理是光的直线传播。当物体上的一点发出的光线,通过一个小孔后,会在小孔另一侧的光屏上形成一个对应的像点 。物体上不同位置的点发出的光线,经过小孔后,会在光屏的不同位置形成各自的像点,这些像点组合起来就构成了物体的像
数字图像
在计算机视觉领域,数字图像是一种以数字形式表示和存储的视觉信息,它是计算机理解和处理现实世界图像的基础
线性滤波器
线性滤波器是一种通过对输入信号进行线性变换来实现滤波功能的装置。它通常对输入信号的各个成分进行加权求和,以产生输出信号。在图像处理、信号处理等领域有广泛应用。
例如在图像处理中,可以用于平滑图像、去除噪声等。线性滤波器的特点是其对输入信号的处理是线性的,即满足叠加原理,多个输入信号的线性组合经过滤波器后的输出等于各
个输入信号分别经过滤波器后的输出的线性组合。
* 完整填充:通过大量填充确保卷积核在边缘也能完整滑动,输出尺寸可能大于输入尺寸。
* 合法填充:不进行填充,卷积核只在原始图像的有效像素内滑动,输出尺寸通常小于输入尺寸。
* 保持图像大小填充:通过适当填充使输出特征图尺寸与输入图像尺寸相同,便于网络设计。
* 合法填充:不进行填充,卷积核只在原始图像的有效像素内滑动,输出尺寸通常小于输入尺寸。
* 保持图像大小填充:通过适当填充使输出特征图尺寸与输入图像尺寸相同,便于网络设计。
边缘检测
边缘检测是图像处理和计算机视觉中的一种技术,用于识别图像中亮度、颜色或纹理等特征发生急剧变化的位置,即图像的边缘。这
些边缘通常对应着物体的轮廓、边界或者不同区域的分界线。通过边缘检测,可以突出图像中的重要特征,为后续的图像分析和处理任务(如目标识别、图像分割等)提供基础。
常见的边缘检测算法有 Sobel 算子、Canny 边缘检测等。
卷积神经网络CNN
卷积神经网络(Convolutional Neural Network,缩写 CNN)是一种专门为处理具有网格结构数据(如图像、音频)而设计的深度学习模型,在计算机视觉、自然语言处理等众多领域都有广泛应用
卷积神经网络主要由卷积层、池化层和全连接层组成。卷积层通过卷积核在输入数据上进行滑动卷积操作,提取局部特征。池化层用于降低特征图的分辨率,减少参数数量和计算量
最大池化
物体检测
语义分割
语义分割是一种计算机视觉技术,它将图像中的每个像素分配一个类别标签,从而将图像分割成不同的语义区域。例如,在一幅街景图像中,
语义分割可以将道路、建筑物、车辆、行人等不同的物体分割出来,每个物体都被赋予一个特定的类别标签。语义分割在自动驾驶、医学影像分析、卫星图像分析等领域有广泛的应用
卷积计算
卷积计算的过程。给定一个输入矩阵 input_matrix 和一个卷积核 kernel,卷积操作会滑动卷积核覆盖输入矩阵的一部分,然后计算覆盖部分的点乘和
示例
卷积就是对应的点乘
第1次卷积:
2 3
0 3
和卷积核点乘:2x1 + 3x1 + 0x2 + 3x(-3) = -4
第2次卷积:
3 1
3 4
和卷积核点乘:3x1 + 1x1 + 3x2 + 4x(-3) = -2
第3次卷积:
0 3
1 2
和卷积核点乘:0x1 + 3x1 + 1x2 + 2x(-3) = -1
第4次卷积:
3 4
2 3
和卷积核点乘:3x1 + 4x1 + 2x2 + 3x(-3) = 2
ReLU相当于把矩阵中的小于0的全部用0替换,因为函数是max(0,x)
第1次卷积:
2 3
0 3
和卷积核点乘:2x1 + 3x1 + 0x2 + 3x(-3) = -4
第2次卷积:
3 1
3 4
和卷积核点乘:3x1 + 1x1 + 3x2 + 4x(-3) = -2
第3次卷积:
0 3
1 2
和卷积核点乘:0x1 + 3x1 + 1x2 + 2x(-3) = -1
第4次卷积:
3 4
2 3
和卷积核点乘:3x1 + 4x1 + 2x2 + 3x(-3) = 2
ReLU相当于把矩阵中的小于0的全部用0替换,因为函数是max(0,x)
对应的python代码
import numpy as np
# 输入矩阵
input_matrix = np.array([[2, 3, 1],
[0, 3, 4],
[1, 2, 3]])
# 卷积核
kernel = np.array([[1, 1],
[2, -3]])
# 计算卷积,初始化一个2行2列的空矩阵
output_matrix = np.zeros((input_matrix.shape[0] - kernel.shape[0] + 1,
input_matrix.shape[1] - kernel.shape[1] + 1))
for i in range(output_matrix.shape[0]):
for j in range(output_matrix.shape[1]):
current_region = input_matrix[i:i + kernel.shape[0], j:j + kernel.shape[1]]
# 计算卷积
result = np.sum(current_region * kernel)
print(
f"当前卷积区域为:\n{current_region}\n与卷积核乘积并求和的结果为: {result}")
output_matrix[i, j] = result
# 打印卷积结果
print(f"卷积结果:\n{output_matrix}")
# 在卷积操作之后应用ReLU激活函数
# 应用ReLU激活函数
relu_result = np.maximum(0, output_matrix)
print(f"经过 ReLU 激活后的结果为:\n{relu_result}")
课后题
第1次卷积:
0 1 0
0 0 1
1 0 0
和卷积核点乘:4
第2次卷积:
1 0 1
0 1 0
0 0 1
和卷积核点乘:3
第3次卷积:
0 1 1
1 0 1
0 1 0
和卷积核点乘:6
第4次卷积:
1 1 0
0 1 1
1 0 0
和卷积核点乘:6
第一行卷积完成,后面开始进行第2行的卷积,省略了。
池化操作是把卷积1进行操作,找出来最大的值留下即可
4 3
3 4
所以最大的是4
6 6
3 6
所以最大的是6
4 4
7 5
所以最大的是7
后面都一样,省略了
0 1 0
0 0 1
1 0 0
和卷积核点乘:4
第2次卷积:
1 0 1
0 1 0
0 0 1
和卷积核点乘:3
第3次卷积:
0 1 1
1 0 1
0 1 0
和卷积核点乘:6
第4次卷积:
1 1 0
0 1 1
1 0 0
和卷积核点乘:6
第一行卷积完成,后面开始进行第2行的卷积,省略了。
池化操作是把卷积1进行操作,找出来最大的值留下即可
4 3
3 4
所以最大的是4
6 6
3 6
所以最大的是6
4 4
7 5
所以最大的是7
后面都一样,省略了
自然语言处理【重要】
语言模型
n-gram 模型
n-gram 模型是一种基于统计语言模型的方法,它将文本中的连续 n 个字符或单词组成的序列作为一个基本单元。例如,对于单词序列,“I love natural language processing”,当 n = 2 时,得到的 2-gram(也称为 bigram)有 “I love”“love natural”“natural language”“language processing” 等
语言建模
n-gram 模型可以用于估计一个句子出现的概率。通过统计大量文本中的 n-gram 频率,可以计算出给定一个单词序列的情况下,下一个单词出现的概率分布。这对于语言生成任务(如文本自动生成)和语音识别中的语言模型都非常重要
例如,在机器翻译中,n-gram 模型可以帮助评估翻译结果的流利度,选择更符合语言习惯的翻译选项。
在语音识别系统中,n-gram 模型可以用于语言模型部分,帮助确定最有可能的单词序列。语音识别系统通常会生成多个可能的单词序列,然后使用语言模型对这些序列进行评分,选择概率最高的序列作为识别结果。
最大似然估计
最大似然估计(Maximum Likelihood Estimation,简称 MLE)是一种参数估计方法,在统计学和机器学习中有着广泛的应用
最大似然估计的目标是找到一组参数值,使得观测到的样本数据出现的概率最大
困惑度
困惑度(perplexity)是评估语言模型性能的一种指标
反映语言模型的不确定性:困惑度的值越小,说明语言模型对测试集的预测能力越强,不确定性越小。反之,困惑度越大,语言模型的不确定性越大
比较不同语言模型的性能:可以通过比较不同语言模型在相同测试集上的困惑度来评估它们的性能。困惑度较低的语言模型通常被认为是更好的模型,因为它能够更准确地预测测试集中的字符序列
与信息论中的概念相关:困惑度起源于信息论中的熵,它其实是语言模型下一个字符序列的交叉熵取指数后的值。在一些自然语言处理研究中,也会对困惑度取对数,以对数困惑度作为语言模型的评估值。
如何降低困惑度?
增加训练数据
减少过拟合风险:增加训练数据量有助于减少过拟合的风险
拥有大量的训练数据可以让语言模型学习到更广泛的语言模式和规律
选择更合适的语言模型类型:不同的语言模型具有不同的特点和适用场景。例如,循环神经网络(RNN)、长短期记忆网络(LSTM)和门控循环单元(GRU)在处理序列数据方面表现出色,而 Transformer 架构在大规模数据上具有很强的语言建模能力。根据具体的任务和数据特点选择合适的语言模型类型,可以提高模型的性能,降低困惑度。
调整模型参数:模型的参数设置对性能有很大影响。可以通过调整参数如隐藏层大小、学习率、批次大小等,来优化模型的性能。
引入正则化方法:正则化是一种防止过拟合的技术
实用技巧
实用技巧主要是在语言模型训练和应用中针对特定问题的处理方法
处理未知字符
引入特殊字符:由于测试语料和训练语料不完全一致,可能会遇到不在训练字典中的字符。为解决这个问题,在训练语言模型时引入特殊的 “未知” 字符<unk>来表示所有非常罕见的字符
处理方法:在具体操作中,可以将训练集中出现频次特别少的字符也全部替换为<unk>;如果在测试语料中遇到训练中没有出现或出现很少的字符,也对应地替换成<unk>。这样可以提高语言模型在面对未知字符时的鲁棒性。
处理序列起始和结尾字符
语言模型的应用
文本生成
文本生成是指利用语言模型自动生成自然语言文本的过程。给定一些初始信息,如一个主题、一个开头句子或一些关键词,语言模型通过学习大量的文本数据中的语言模式和规律,生成连贯、有意义的文本内容。
基于概率的方法:语言模型根据学习到的概率分布来预测下一个单词或字符的可能性
基于深度学习的方法:深度学习技术,如循环神经网络(RNN)、长短期记忆网络(LSTM)和 Transformer 架构等,被广泛应用于文本生成任务。这些模型可以学习到长期的依赖关系和上下文信息,从而生成更加准确和连贯的文本。
控制生成的方法:为了生成特定主题或风格的文本,可以使用一些控制生成的方法。例如,可以通过提供特定的关键词、主题标签或约束条件来引导语言模型生成符合要求的文本
文本改错
文本改错,也称为语法纠错或拼写检查,是指检测和纠正文本中的语法错误、拼写错误和用词不当等问题的过程。其目标是提高文本的质量和准确性,使其更符合语法规范和语言习惯
字模型与词模型
字模型
字模型是以单个汉字作为语言处理的基本单位的语言模型。在字模型中,语言模型通过学习大量文本中的汉字序列的概率分布,来预测下一个可能出现的汉字
处理简单:字模型的处理相对简单,因为汉字的数量相对有限,通常在几千个左右。这使得字模型的计算和存储相对容易。
对短文本处理较好:对于较短的语句或短语,字模型可以较好地捕捉到汉字之间的关系和语言模式。因为短文本中汉字的数量较少,字模型可以更准确地预测下一个汉字
词模型
词模型是以词语作为语言处理的基本单位的语言模型。在词模型中,语言模型通过学习大量文本中的词语序列的概率分布,来预测下一个可能出现的词语
更准确地表达语义:词模型能够更好地表达语义,因为词语通常具有明确的含义和语法功能。相比之下,汉字的含义相对较为模糊,需要结合上下文才能确定其具体含义
应用场景
长文本生成:在一些长文本生成任务中,如小说、论文等,词模型可以生成更加连贯和准确的文本内容
机器翻译:词模型在机器翻译中也有广泛的应用,因为词语的翻译通常比汉字的翻译更加准确和自然
向量语义
语义
学习语义分析,考虑以词为建模基本单位。在之前语言模型中,仅把词看作词表元素,不关心拼写等,但如将词替换成拼音或电码会使正常人阅读产生障碍,丢失重要信息。人理解文本关键是理解词的语义,如看到不同词能联想到相关含义、褒贬等。提出让计算机处理语义信息的问题,引入统计自然语言处理的分布假设,即两个词语义越相似,在自然语言中出现的分布越接近,上下文也越接近,如 “青菜” 和 “白菜”。以陌生词 “茼蒿” 为例说明通过其出现的上下文可推测其大概含义。最后指出从分布假设出发,可以利用一个词上下文的分布作为该词的特征来表达其意义。
词向量
词向量(word vector)也称为词嵌入(word embedding),是一种将词表示为实数向量的方法。它的目的是将自然语言中的词映射到一个低维的向量空间中,使得语义相似的词在这个空间中的距离也比较近。
相似度
两个词向量的夹角的余弦值cos<w,v>越小说明越相似
Word2Vec
以 Word2Vec 中的 Skip-gram 模型为例来说明词向量的生成过程。
假设我们有以下句子组成的文本语料库:“The dog chased the cat.” “The cat ran away.”
获取单词的词向量
from gensim.models import Word2Vec
# 示例句子
sentences = [["I", "love", "python"], ["python", "is", "great"]]
# 训练Word2Vec模型
model = Word2Vec(sentences, vector_size=100, # 词向量的维度
window=5, # 窗口大小
min_count=1, # 单词的最小出现次数,小于这个单词就忽略了
workers=4 # 训练时使用的线程数
)
# 获取单词的词向量
vector = model.wv["python"]
print(vector)
# 示例句子
sentences = [["I", "love", "python"], ["python", "is", "great"]]
# 训练Word2Vec模型
model = Word2Vec(sentences, vector_size=100, # 词向量的维度
window=5, # 窗口大小
min_count=1, # 单词的最小出现次数,小于这个单词就忽略了
workers=4 # 训练时使用的线程数
)
# 获取单词的词向量
vector = model.wv["python"]
print(vector)
可视化示例
基于神经网络的语言模型处理
基于神经网络的bigram模型
Bigram 模型是一种统计语言模型,它假设一个词出现的概率只与它前面的 1 个词相关
训练神经网络
基于神经网络的n-gram模型
n - gram 是一种基于统计语言模型的方法。它假设一个词出现的概率只与它前面的 n - 1 个词相关。例如,在 bigram(n=2)模型中,一个词出现的概率只与它前面的 1 个词相关;在 trigram(n = 3)模型中,一个词出现的概率与它前面的 2 个词相关
模型结构
输入层:将 n - 1 个词(在 n - gram 中作为历史词)进行编码输入。通常使用词向量来表示这些词,例如使用 Word2Vec 或 GloVe 等预训练词向量,或者在模型训练过程中同时学习词向量。
神经网络层:可以采用多层感知机(MLP)、卷积神经网络(CNN)或循环神经网络(RNN)等架构。这些神经网络用于对输入的词向量进行处理,提取特征并学习词与词之间的关系。
输出层:输出层通常采用 softmax 函数,将神经网络处理后的结果转换为下一个词的概率分布。这个概率分布对应于词汇表中所有词出现的概率,基于此可以预测下一个最可能出现的词。
训练过程
数据准备:收集大规模的文本语料,并对其进行预处理,例如分词、去除停用词等操作。然后根据 n - gram 的定义,从语料中提取出词序列作为训练数据。
模型训练:使用反向传播算法来训练神经网络。目标是最小化预测词概率分布与真实词概率分布之间的交叉熵损失。在训练过程中,神经网络会不断调整权重,以更好地拟合训练数据,从而学习到词与词之间基于 n - gram 的关系。
基于LSTM的语言模型
LSTM(Long Short - Term Memory,长短期记忆网络)
LSTM 是一种特殊的循环神经网络(RNN),旨在解决传统 RNN 在处理长序列数据时出现的梯度消失和梯度爆炸问题。它由 Sepp Hochreiter 和 Jürgen Schmidhuber 在 1997 年提出
LSTM 通过引入门控机制(包括输入门、遗忘门和输出门)来控制信息的流动
基于 LSTM 的语言模型是利用 LSTM 网络来对自然语言中的单词序列进行建模的一种方法。它的目标是预测下一个单词出现的概率,给定前面的单词序列
工作原理
基于 LSTM 的语言模型在自然语言处理领域取得了很好的效果,不过随着技术发展,Transformer 架构在很多任务上逐渐取代了 LSTM,但 LSTM 在一些特定场景下仍然有其应用价值。
基于神经网络的机器翻译
基于神经网络的机器翻译(Neural Machine Translation,简称 NMT)是一种利用深度神经网络来实现自动翻译的技术
Seq2Sep模型
Seq2Seq(Sequence - to - Sequence)即序列到序列模型,是一种深度学习架构,广泛应用于自然语言处理、语音识别等领域
基本结构
编码器(Encoder)
作用:将输入序列进行编码,提取其特征信息
实现方式:通常采用循环神经网络(RNN)、长短期记忆网络(LSTM)或门控循环单元(GRU)等。编码器按顺序处理输入序列中的每个元素,逐步更新网络的隐藏状态。例如,对于一个由单词组成的输入句子,编码器逐个单词地读取,将每个单词的信息融入到隐藏状态中。最终,编码器输出一个固定长度的向量(上下文向量),这个向量包含了输入序列的主要语义信息。
解码器(Decoder)
作用:将编码器生成的上下文向量转换为目标输出序列。
实现方式:同样可以使用 RNN、LSTM 或 GRU 等结构。解码器从一个初始状态开始,在每个时间步生成输出序列中的一个元素。在生成每个元素时,它会考虑上一个生成的元素和编码器提供的上下文向量。例如,在机器翻译任务中,解码器从初始状态开始,逐个生成目标语言句子中的单词,直到生成结束标志(如句子结束符)
生成最佳的输出语句:Beam Search
背景
在自然语言处理的序列生成任务中,例如机器翻译、文本摘要等,我们需要从模型生成的众多可能的输出序列中找到最合理的一个。传统的方法是通过贪心算法(Greedy Algorithm)来选择每个时间步上概率最高的词来生成序列,但这种方法可能会陷入局部最优解,无法找到全局最优的输出语句。
Beam Search 是一种改进的搜索策略,用于在序列生成任务中找到较优的输出序列
基本原理
相比贪心算法,Beam Search 能够在更大的搜索空间中寻找较优的解,避免过早陷入局部最优,提高了找到全局最优解的可能性,从而生成质量更高的输出语句。
Beam Search 是一种在自然语言处理序列生成任务中广泛应用的搜索策略,用于生成质量更高的输出语句,通过在每一步保留多个较优的候选来避免贪心算法的局限性。
基于注意力机制的Seq2Sep模型
背景:传统 LSTM 语言模型的局限性
句子长度限制
在实际应用中,LSTM 语言模型能够较好地对长度在几十到一百左右的句子进行建模。然而,当面对更长、更复杂的文本时,其表现会变差。
翻译中的对应关系问题
在机器翻译任务中,输出词和输入词之间往往有着强烈的对应关系,但传统 LSTM 难以处理这种对应关系。
传统的 Seq2Seq 模型在处理长序列时,将整个输入序列压缩成一个固定维度的向量,导致信息丢失。而基于注意力机制的模型,注意力机制可以让解码器在生成每个输出元素时,动态地关注输入序列中的不同部分。
例如,在机器翻译一个长句子时,注意力机制能够使模型在翻译句子后半部分时,仍然能够 “聚焦” 到句子前半部分与之相关的内容,而不是仅仅依赖于一个被压缩的固定向量所包含的信息。
随着输入序列长度的增加,基于注意力机制的模型性能下降幅度相对较小。它能够处理那些长度在几百甚至上千的序列,在处理长文本摘要、长篇小说翻译等任务时更具优势。
提升模型性能和泛化能力
在训练过程中,注意力机制能够引导模型更快地收敛到较好的参数值。因为它能帮助模型更有针对性地学习输入和输出之间的关系,减少不必要的搜索空间。
由于注意力机制使模型能够更好地捕捉输入和输出之间的复杂关系,模型在面对新的、未见过的数据时,能够更灵活地进行处理,具有更好的泛化能力。
Transformer模型
背景
自 2015 年注意力机制带来重大进展之后,一个自然的想法是:是否还需要 LSTM 模型对序列进行编码?2017 年的机器学习顶级会议 NIPS2017 上,Google 的研究人员提出了 Transformer 模型,对这个问题给出了明确的答案:LSTM 并不必要,有注意力机制就够了。
Transformer 模型彻底摒弃了 LSTM,单纯使用注意力机制对序列进行建模,这一创新刷新了机器翻译任务的最佳表现,并随后成为几乎所有自然语言处理任务的通用模型结构。
自注意力机制(Self-attention mechanism)
核心思想
多头注意力机制
背景与动机
多头注意力机制的原理
多头注意力机制的优势
多头注意力可以使不同的注意力权重关注句子的不同部分,以进一步提高自注意力机制的表达能力。
例如,在处理具有多种语义关系的长句子时,不同的头(head)可以分别关注句子中的语法结构、实体关系、逻辑关系等不同方面,从而更全面、准确地处理句子。
多头注意力机制是 Transformer 架构中的重要创新,它通过对注意力的多维度处理,增强了模型对句子中复杂语义关系的捕捉能力,同时通过技术手段解决了模型训练稳定性问题。
非线性层设计
背景和目的
非线性处理方法
Transformer 模型如何通过非线性层设计,包括多层感知机、残差连接和层归一化,来增强模型的表达能力和训练稳定性,使其能够更好地处理自然语言处理任务。
位置编码
为什么需要位置编码
位置编码的实现方式
掩码注意力机制
基于Transformer的Seq2Seq模型
模型结构
编码器(Encoder)
在基于 Transformer 的 Seq2Seq 模型中,编码器由多个 Transformer 层堆叠而成
对于输入序列,每个 Transformer 层都包含自注意力机制(Self - Attention)。自注意力机制能够让模型在处理每个词时,考虑到输入序列中其他词的信息,通过计算查询(Query)、键(Key)和值(Value)来实现。
除了自注意力机制,Transformer 层还包括前馈神经网络(Feed - Forward Neural Network)和层归一化(Layer Normalization)等操作。前馈神经网络用于对经过自注意力处理后的特征进行非线性变换,进一步提取特征,层归一化则有助于稳定模型训练
解码器(Decoder)
解码器同样由多个 Transformer 层组成
解码器中的 Transformer 层除了自注意力机制外,还包括掩码自注意力机制(Masked Self - Attention)。掩码自注意力机制用于在生成序列时,确保当前生成的词只依赖于已经生成的词,避免 “看到” 未来的词。
解码器还包括一个跨注意力机制(Cross - Attention),它用于在解码过程中关注编码器的输出。跨注意力机制使得解码器在生成目标序列时能够充分利用输入序列的信息
工作原理
解决的问题
长序列依赖问题
在传统的基于 RNN 或 LSTM 的 Seq2Seq 模型中,处理长序列时存在梯度消失或梯度爆炸问题,导致难以捕捉长距离的依赖关系。而 Transformer 的自注意力机制可以直接计算序列中任意两个词之间的关系,不受距离限制,能够很好地处理长序列的依赖关系。例如,在机器翻译长句子或处理长篇文档的摘要任务时,基于 Transformer 的模型能够更准确地捕捉词与词之间的语义联系。
训练效率问题
RNN 和 LSTM 是顺序处理序列,难以并行计算,导致训练时间长。而 Transformer 的自注意力机制和前馈神经网络部分都可以并行计算,大大提高了训练效率。例如,在大规模数据集上进行训练时,基于 Transformer 的 Seq2Seq 模型能够更快地收敛。
信息传递问题
基于 RNN 或 LSTM 的模型在信息传递过程中可能会丢失部分信息。Transformer 的多头注意力机制(Multi - head Attention)可以从多个角度关注输入序列,更好地整合和传递信息。在处理复杂语义关系时,多头注意力机制能够让模型从不同的语义维度去捕捉信息,提高翻译或生成的准确性。
对位置信息的处理
由于 Transformer 本身的自注意力机制是位置无关的,通过引入位置编码(Position Encoding),能够在处理自然语言等有序数据时准确地考虑词序信息,避免了因位置信息缺失导致的语义理解错误。例如,在翻译任务中,能够正确区分 “我喜欢他” 和 “他喜欢我” 这种词序不同导致语义不同的句子。
语言模型预训练
预训练背景
前文提到的 Seq2Seq 模型属于监督学习范畴,即需要训练数据中包含标注好的输入句子 X 和输出句子 Y 的组合,才能够进行训练。然而,对于大量无标注自然语言语料,标注好的翻译语句是很少的。那么能否使用 Transformer 模型直接对无标注的自然语言语料进行建模呢?答案是肯定的,这种技术被称为预训练(pretraining),得到的模型称为预训练模型(pretrained model)或基础模型(foundation model),这是自然语言处理最重要的技术
预训练语言模型是使用大量文本数据集进行训练的复杂深度学习算法。它们学习语言中的复杂模式和关系,从而具有理解和生成类似人类的文本的卓越能力。可以将它们视为可以执行各种语言任务的高度智能的语言助手。它们使用大量文本数据进行训练,这个过程称为预训练
预训练首先使用 Transformer 结构的神经网络对海量无标注自然语言数据进行无监督训练,然后对于具体下游任务,再利用数据对预训练模型进行适当微调,便可以极大地提升具体任务的最终表现。这里介绍两种最经典的使用 Transformer 模型进行预训练的范式:生成式(generative)建模和判别式(discriminative)建模。
生成式预训练(Generative Pretrained Transformer,简称 GPT)
定义与核心思想
与 Seq2Seq 模型对比及优势
发展历程与影响力
GPT 作为一种生成式预训练模型的原理、优势、发展情况及其在自然语言处理中的重要应用。
BERT(双向 Transformer 编码器表示)
背景与动机
BERT 的核心思想
BERT 的训练细节
判别式与生成式建模方式的讨论
判别式预训练模型的特点
判别式预训练模型训练相对复杂,并且按照掩码语言模型(masked language model)的训练方式生成句子并不方便,但是表征能力更强。因此在实际应用中这两种预训练方式也需要有所取舍。
生成式预训练模型的特点
生成式预训练模型更简单,还能进行句子生成,也引出了全新的小样本学习和脚本学习的研究领域。但是,它正是为了照顾到生成语句的需要,在特定判别式 / 非生成任务上表现会弱一些。
从 Seq2Seq 模型的角度而言,生成式预训练模型是采用无监督语料预训练了生成器,而判别式预训练模型则可以认为是采用无监督方法预训练了编码器。
在基于 Transformer 的 Seq2Seq 模型中,编码器中自注意力模块的掩码是全 1 的,即可以对整个上下文建模,而解码器由于需要顺序生成句子,因此使用了下三角矩阵作为自注意力机制的掩码。
课后题
人工智能发展历程中的关键方法与时间线
人工智能的发展历程犹如一部波澜壮阔的科技史诗,众多方法在不同时期相继涌现,共同推动着这一领域不断向前发展。以下将沿着时间线详细阐述人工智能发展过程中经历的重要方法及其相互关系。
一、早期探索与基础奠定(20 世纪 40 - 50 年代)
(一)神经网络概念的提出(1943 年)
Warren McCulloch 与 Walter Pitts 提出了神经网络的概念,这是人工智能发展史上的一个开创性事件。他们的工作为后续研究奠定了基础,尽管早期的神经网络与现代神经网络有很大差异,且当时优化非常困难,但这一概念的诞生为模拟人类大脑的信息处理方式提供了理论雏形。
(二)控制论与信息论的兴起(20 世纪 40 - 50 年代)
在这一时期,控制论和信息论的发展为人工智能提供了重要的理论支撑。控制论研究系统的控制和通信,信息论则关注信息的度量、传输和处理。这些理论的发展促使科学家们思考如何让机器具备智能,为人工智能的早期研究提供了思想源泉和方法论基础。
二、符号主义主导时期(20 世纪 50 - 70 年代)
(一)搜索算法的应用(20 世纪 50 - 60 年代)
盲目搜索算法
宽度优先搜索最早由 Moore 于 1959 年正式提出,用于解决迷宫问题等。它按照层次由浅入深的方式逐层扩展节点进行搜索,能保证在问题有解时找到解,但算法所需存储量较大
深度优先搜索类似人类解决迷宫问题的策略,优先从待访问表中选择深度最大的节点进行扩展。其优点是节省内存,只存储从初始节点到当前节点的路径,但可能因进入无限循环而失败。为解决此问题,有界深度优先搜索算法被提出,通过设定最大搜索深度来避免死循环。
迭代加深搜索算法将有界深度优先搜索和宽度优先搜索结合,逐步增大搜索最大深度,在保证找到解的同时,只需要目标节点深度量级的存储空间。
启发式搜索算法
启发式搜索利用问题定义之外的知识引导搜索,通过访问启发函数来估计每个节点到目标点的代价或损耗。例如,A * 搜索算法采用更为精确的评价函数,综合考虑从起始节点到当前节点的已知真实损耗和启发函数(对当前节点到目标节点最佳路径代价的估计),在保证找到最优解的前提下,能更高效地搜索。其启发函数需要满足一定条件(如可容许性、一致性等),以确保算法的最优性。
(二)决策树模型的起源(1964 年)
1964 年,Morgan 和 Sonquist 的论文提出了决策树的概念,决策树模型开始在统计学领域崭露头角。当时,它主要用于数据分类和预测任务。决策树的结构简单易懂,其每个中间节点对数据的某一特征进行判断,根据判断结果指向相应子节点,叶子节点给出预测值。这种模型与人类做决策的过程类似,具有很强的可解释性。
(三)符号主义方法的局限与挑战(20 世纪 70 年代)
随着研究的深入,符号主义方法逐渐暴露出一些问题。例如,在处理复杂的现实世界问题时,基于规则的系统难以获取和表示大量的知识,并且维护和更新这些规则变得十分困难。同时,符号主义方法在处理不确定性和模糊性方面也存在不足,这促使研究人员开始探索新的方法和途径。
三、连接主义的复兴与发展(20 世纪 80 年代 - 至今)
(一)反向传播算法的提出(1986 年)
Davi d Rumelhart 等提出的反向传播算法极大地改进了神经网络的优化过程。该算法通过多次使用求导的链式法则,从后向前逐层计算损失函数对神经网络参数的导数,使得神经网络的训练变得更加高效和可行。这一突破为神经网络的大规模应用奠定了基础,推动了连接主义的复兴。
(二)神经网络的多样化发展(20 世纪 80 年代 - 至今)
卷积神经网络(CNN)的发展(1989 年 - 至今)
1989 年,Yann LeCun 等提出使用反向传播算法与卷积网络学习手写字符,开启了卷积神经网络在计算机视觉领域的应用探索。卷积层通过对输入图像进行二维滑动窗口遍历,使用共享权重(卷积核)进行线性乘法操作,大幅减少了模型参数量。池化层进一步降低数据维度,提取关键特征。随着时间推移,CNN 不断演进,如 VGGNet 通过堆叠多个小尺寸卷积核的卷积层来增加网络深度,提升特征提取能力;GoogLeNet 引入了 Inception 模块,采用不同尺寸卷积核并行处理的方式,增强了网络对多尺度信息的感知能力;ResNet 则提出残差连接,有效解决了网络深度增加时的梯度消失问题,使得训练更深层次的网络成为可能。这些改进使得 CNN 在图像分类、目标检测、语义分割等众多计算机视觉任务中取得了卓越成果,广泛应用于安防监控、自动驾驶、医疗影像分析等领域
循环神经网络(RNN)及其变体的发展(20 世纪 80 年代 - 至今)
循环神经网络(RNN)主要用于处理序列数据,其通过权值共享实现了模型参数量的控制,并能够利用序列中的历史信息。然而,RNN 在处理长序列时容易出现梯度消失和梯度爆炸问题。为解决这些问题,Hochreiter 和 Schmidhuber 于 1997 年提出了长短记忆网络(LSTM)。LSTM 引入了遗忘门、输入门、输出门等结构,遗忘门决定上一时刻单元状态中哪些信息被遗忘或保留,输入门控制当前时刻信息的输入,输出门决定隐藏层的特征输出。通过这些门控机制,LSTM 能够选择性地保留和遗忘信息,在更长的序列中有更好的表现,被广泛应用于自然语言处理中的机器翻译、语音识别、文本生成等任务,以及时间序列预测等领域。后续又出现了门控循环单元(GRU)等变体,进一步简化了结构并提高了计算效率。
其他神经网络结构与技术的发展(20 世纪 80 年代 - 至今)
除了 CNN 和 RNN,还出现了多种神经网络结构和技术。例如,自编码器(Autoencoder)用于数据降维、特征提取和数据生成等任务,它通过编码和解码过程学习数据的压缩表示。生成对抗网络(GAN)由 Goodfellow 等于 2014 年提出,由生成器和判别器两个网络组成,通过对抗训练的方式学习数据的分布,能够生成逼真的数据样本,如生成图像、文本等,在图像生成、数据增强、无监督学习等方面有广泛应用。此外,注意力机制(Attention Mechanism)的发展使得神经网络能够在处理序列数据时更加聚焦于关键信息,提高了模型的性能和效率,在自然语言处理和计算机视觉等领域都发挥了重要作用
(三)深度学习的崛起(2010 年 - 至今)
深度神经网络架构的大规模应用与创新(2010 年 - 至今)
2012 年,Alex Krizhevsky 提出的 AlexNet 在图像识别任务上取得重大突破,引发了深度学习的热潮。AlexNet 采用了多层卷积神经网络架构,展示了深度学习在复杂视觉任务中的强大能力,其成功促使学术界和工业界对深度学习投入更多资源进行研究和应用。此后,各种深度神经网络架构不断涌现。VGGNet 以其简洁的结构和良好的性能,进一步推动了卷积神经网络在图像识别领域的应用;GoogLeNet 通过引入创新的 Inception 模块,在不显著增加计算量的前提下提升了网络的表达能力;ResNet 提出的残差结构有效解决了网络深度增加时的性能退化问题,使得构建更深层次的神经网络成为可能,在多个计算机视觉竞赛和实际应用中取得了优异成绩。这些架构的不断创新和改进,使得深度学习在图像分类、目标检测、语义分割、人脸识别等计算机视觉任务中取得了巨大成功,推动了计算机视觉技术的快速发展,广泛应用于安防监控、自动驾驶、医疗影像分析、图像编辑等众多领域。
深度学习在自然语言处理领域的突破(2010 年 - 至今)
深度学习方法在自然语言处理领域取得了突破性进展。循环神经网络(RNN)及其变体 LSTM 和 GRU 在自然语言处理任务中得到广泛应用,如机器翻译、语音识别、文本分类、情感分析等。它们能够处理序列数据中的长期依赖关系,有效捕捉文本中的语义和语法信息。例如,在机器翻译中,RNN 及其变体可以根据前文信息对后续单词进行预测,生成更准确的翻译结果。
随着时间推移,Transformer 架构的出现进一步推动了自然语言处理的发展。Transformer 完全基于注意力机制,摒弃了传统的循环和卷积结构,能够并行计算,大大提高了训练效率。基于 Transformer 的预训练模型如 BERT(Bidirectional Encoder Representations from Transformers)和 GPT(Generative Pretrained Transformer)在自然语言处理领域表现出色。BERT 通过遮蔽语言模型(Masked Language Model)和下一句预测(Next Sentence Prediction)等任务进行预训练,能够捕捉文本中的双向语义信息,在多种自然语言处理任务中取得了领先的效果,如文本分类、问答系统、命名实体识别等。GPT 则侧重于生成式任务,通过大规模的无监督预训练,能够生成连贯、自然的文本,在文本生成、对话系统等方面有广泛应用。这些预训练模型的出现,使得自然语言处理技术在准确性和效率上都有了质的飞跃,推动了智能客服、智能写作、智能翻译等应用的发展。
(四)新兴技术与发展趋势(近期)
生成对抗网络(GAN)的拓展应用(2014 年 - 至今)
自 2014 年 Goodfellow 等提出生成对抗网络(GAN)以来,其在多个领域得到了广泛的拓展应用。在图像生成方面,GAN 能够生成高质量、逼真的图像,如生成特定风格的艺术作品、虚拟场景图像、人脸图像等。例如,通过训练 GAN 可以生成与特定画家风格相似的画作,或者根据给定的场景描述生成相应的图像。在数据增强领域,GAN 可以生成新的数据样本,扩充训练数据集,提高模型的泛化能力,尤其在数据稀缺的情况下具有重要意义。此外,GAN 还被应用于图像编辑、视频生成、医学图像合成等领域。例如,在医学图像领域,GAN 可以生成模拟的医学影像数据,用于辅助疾病诊断和医学研究
强化学习与深度学习的深度融合(近期)
强化学习与深度学习的融合成为人工智能领域的重要发展趋势。深度强化学习将深度学习的感知能力与强化学习的决策能力相结合,使得智能体能够在复杂的动态环境中学习最优策略。例如,在机器人控制领域,深度强化学习算法使机器人能够根据环境感知信息自主决策动作,实现自主导航、操作物体等任务。在自动驾驶方面,智能车辆可以通过强化学习与深度学习的结合,根据路况信息做出最优的驾驶决策,如加速、减速、转弯等。在游戏领域,AlphaGo 及其后续版本通过深度强化学习在围棋等复杂游戏中战胜人类顶尖选手,展示了其强大的决策能力。此外,深度强化学习还在资源管理、金融交易、智能电网等领域得到应用,为解决复杂的决策优化问题提供了新的方法和思路。
人工智能与其他技术的交叉融合(近期)
人工智能与其他技术的交叉融合日益频繁,催生了许多新的应用和研究方向。例如,人工智能与物联网(IoT)的融合,使得智能设备能够实现更加智能化的交互和决策。智能家居系统可以通过人工智能算法分析物联网设备收集的环境数据,自动调节温度、照明等设备,提供更加舒适和便捷的居住环境。人工智能与区块链技术的结合,可以提高数据的安全性和可信度,在金融、供应链管理等领域有潜在的应用价值。此外,人工智能与生物技术的交叉也在探索中,如利用人工智能算法分析生物医学数据,辅助疾病诊断、药物研发等。这种跨技术的融合趋势将进一步拓展人工智能的应用范围,推动各领域的创新发展。
(五)未来展望
随着人工智能技术的不断发展,未来有望在更多领域取得突破。一方面,模型的性能将不断提升,更加高效、准确地处理复杂任务。例如,在计算机视觉领域,对图像和视频的理解将更加深入,能够实现更精准的目标检测、语义分割和场景理解;在自然语言处理领域,语言生成和理解
0 条评论
下一页
为你推荐
查看更多