算法 - ML,AI 机器学习到人工智能
2024-06-21 10:22:58 8 举报
AI智能生成
从小的知识点,理明白数据问题,模型训练问题。从ML背景,到AI知识图谱。详细聊聊AI的发展和模型技术,以及火爆的NLP,LLM。
作者其他创作
大纲/内容
知识点
特征工程(Feature Engineering)
对原始数据进行处理、转换和提取,以便更好地训练模型,提高模型性能。
问题:选择哪些特征以及如何转换特征对模型的性能有很大影响。传统的特征工程是一个复杂且需要大量领域知识的过程。
解决方案:自动特征学习(如深度学习)、特征选择算法、特征抽取技术,如主成分分析(PCA),以及多任务学习,可以减少手动特征工程的需求。
一般而言机器学习十分依赖特征工程,而深度学习可以自身习得特征。
激活函数(Activation Functions)
function trending
Sigmoid函数:Sigmoid函数是一个常用的激活函数,它将输入值映射到0和1之间。它的公式为f(x) = 1 / (1 + exp(-x)),在神经网络中常用于输出层。
Tanh函数:Tanh函数是双曲正切函数,将输入值映射到-1和1之间。它的公式为f(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x)),在神经网络中常用于隐藏层。
ReLU函数:ReLU函数是修正线性单元函数,将负数值映射为0,正数值保持不变。它的公式为f(x) = max(0, x),在神经网络中常用于隐藏层。
Leaky ReLU函数:Leaky ReLU函数是ReLU函数的改进版本,当输入值为负数时,不再将其映射为0,而是乘以一个小的斜率。
它的公式为f(x) = max(0.01x, x),在神经网络中可以减少梯度消失问题。
它的公式为f(x) = max(0.01x, x),在神经网络中可以减少梯度消失问题。
Softmax函数:Softmax函数将输入值映射到0和1之间,并且所有输出值的和为1,用于多分类问题的输出层。
它的公式为 f(xi) = exp(xi) / Σj(exp(xj))。
它的公式为 f(xi) = exp(xi) / Σj(exp(xj))。
归一化:Softmax 函数对输入进行归一化,将每个元素的值映射到 [0, 1] 的范围内。
概率分布:Softmax 函数输出的结果可以看作是一个概率分布,其中每个元素表示对应类别的概率,非常适合用于多分类问题。
平滑性:Softmax 函数具有平滑性,它对输入的小变化会产生相对较小的变化,这对于模型的稳定性和训练的收敛性都有利。
概率分布:Softmax 函数输出的结果可以看作是一个概率分布,其中每个元素表示对应类别的概率,非常适合用于多分类问题。
平滑性:Softmax 函数具有平滑性,它对输入的小变化会产生相对较小的变化,这对于模型的稳定性和训练的收敛性都有利。
损失函数 (Loss)
损失函数是机器学习中非常重要的概念,它用来衡量模型预测值与真实值之间的差异。
问题:在训练模型的过程中,我们希望通过调整模型的参数,使得损失函数的值最小化,从而使模型的预测结果更加准确。
常见的损失函数
均方误差(Mean Squared Error,MSE)
1/n * Σi(yi - ŷi)^2
交叉熵损失函数(Cross Entropy Loss)
-1/n ΣiΣj ( yij * log(yij) )
用于二分类,多分类问题
对数损失函数(Log Loss)
-Σ ( yi * log(ŷi) + (1 - yi) * log(1 - ŷi) )
Huber Loss
1/2 * Σ ( δ^2 * (sqrt(1 + (yi - ŷi)^2/δ^2) - 1) )
最小化损失函数
是机器学习模型训练的核心目标之一。通常采用梯度下降等优化算法来最小化损失函数。
在实际应用中通常会将数据集分为训练集和验证集,通过在训练集上最小化损失函数来训练模型。
判断收敛
目标函数值的变化:可以监测目标函数值随着迭代次数的变化情况,当目标函数值变化很小或者基本不再变化时,可以认为算法已经收敛。
梯度的变化:可以监测梯度的变化情况,当梯度的变化很小或者基本不再变化时,可以认为算法已经收敛。
随机梯度下降(SGD)
梯度算法是一种优化算法,用于寻找函数的最小值或最大值。
原理
其原理是通过计算函数的梯度,来确定函数在该点的变化方向。然后沿着梯度的反方向更新参数,以使函数值逐渐趋于最值。
步骤
初始化参数:首先需要初始化参数的数值,可以随机选择或者根据经验设定。
计算梯度:在当前参数值下,计算函数的梯度,即函数在该点的导数。
更新参数:根据计算得到的梯度值,更新参数的数值,使函数值减小。更新参数的公式为:参数 = 参数 - 学习率 * 梯度,其中学习率是一个超参数。
判断停止条件:重复步骤2和步骤3,直到梯度趋近0,梯度值足够小,达到最大迭代次数等。
数据优化
数据的归一化
数据归一化是指将数据缩放到一个固定的范围内,通常是[0, 1]或[-1, 1]。
常用的归一化方法是Min-Max归一化。
将数据缩放到指定的最小值和最大值之间。公式: X_{norm} = {X - X_{min}} / {X_{max} - X_{min}}
将数据缩放到指定的最小值和最大值之间。公式: X_{norm} = {X - X_{min}} / {X_{max} - X_{min}}
数据的标准化
数据标准化是指将数据按照一定的标准进行缩放,使得数据的均值为0,标准差为1。
z = x - mu / sigma
其中,( x ) 是原始数据,( mu ) 是数据的均值,( sigma ) 是数据的标准差,( z ) 是标准化后的数据。
其中,( x ) 是原始数据,( mu ) 是数据的均值,( sigma ) 是数据的标准差,( z ) 是标准化后的数据。
学习率的优化
学习率预热:前期学习率大,后期学习率小
学习率衰减:随着训练的进行,逐渐减小学习率,可以使模型更加稳定地收敛到最优解。
常见的学习率衰减方法包括指数衰减、余弦衰减等。
算法优化
批量梯度下降(Batch Gradient Descent):在每一次迭代中,使用所有样本的梯度来更新模型参数。
收敛加快,但是效率太慢
小批量梯度下降(Mini-batch Gradient Descent):在每一次迭代中,随机选择一小批样本来计算梯度并更新模型参数。
保证了计算速度和效率
小批量数据
如通过100个数据作为一组,mini_batch=100, batch_size = total //mini_batch + 1
动量梯度下降(Momentum Gradient Descent):引入动量项来加速收敛,避免在局部最优解附近震荡。
加速收敛,减小震荡
指数加权平均数
是一种常用的平均数计算方法,它通过对数据进行加权处理,使得近期数据的权重较大,远期数据的权重较小,从而更好地反映数据的变化趋势。
v = beta * gradient[l] + (1-beta) * gradient[l-1]
v = learning_rate * v
beta为动量系数,gradient为梯度。参数更新公式为:theta = theta - v。
RMSProp算法(Root Mean Square):引入平方项来平衡历史梯度信息和当前梯度信息。
增加稳定性
在指数加权平均上引入平方,平方根
sdw = beta * gradient[l] + (1-beta) * gradient[l]^2
w = w - learning_rate * ( dw / sdw + e) 分母开根号。到dw大的时候,能控制更新参数的时候比较小而稳定。
Adam算法(Adaptive Moment Estimation):结合了动量梯度下降和RMSProp算法的优点,同时考虑了梯度的一阶矩和二阶矩信息来调整学习率。
限制了更新的波动
引入指数加权平均数
引入平方根项
beta1建议0.9
beta2建议0.999
epsilon可以为-8次方
w = w- learning_rate * (v * dw` / root(s * dw`) + epsilon)
模型衡量
精确率(Precision)
精确率表示被分类为正例的样本中真正为正例的比例。
准确率(Accuracy)
是指在所有样本中,被正确分类的样本占总样本的比例。
Accuracy = (TP + TN) / (TP + TN + FP + FN),其中TP表示真正例,TN表示真负例(True Negative),FP表示假正例,FN表示假负例。
召回率(Recall)
召回率表示真正为正例的样本中被正确分类为正例的比例。
数据不足(Data Scarcity)
问题:好的数据集是机器学习模型成功的关键。数据不足会导致模型无法学习到足够的信息,因此难以做出准确的预测。
解决方案
数据增强(data augmentation)
迁移学习(transfer learning)
半监督学习(semi-supervised learning)
生成对抗网络(GANs)用来弥补数据不足
过拟合(Overfitting)
问题:模型在训练数据上表现得很好,但在未见过的数据上表现不佳。这意味着模型“记住”了训练数据,包括噪声,而没有学到泛化的规律。
解决方案
正则化(如L1/L2正则)
随机种子(Random Seed):设置随机种子可以使得模型的训练过程在不同的运行中保持一致,从而减少随机性带来的影响。
批量大小(Batch Size):调整批量大小可以影响模型的训练速度和稳定性,较大的批量大小可能会减少随机性带来的影响。
早停(early stopping)
集成学习(ensemble learning)
降低模型复杂度
减少偏置
减少树枝
Scaling Law
原理
Scaling law是指一种描述系统性质随着系统规模变化的规律。在自然科学和工程领域中,许多现象都遵循着某种形式的scaling law。这些规律可以帮助我们理解和预测系统的行为。
应用
在物理学中,一个著名的scaling law是普朗克定律,描述了黑体辐射的能量与温度之间的关系。根据普朗克定律,黑体辐射的能量与温度的四次方成正比。这个scaling law对于理解和研究热辐射现象非常重要。
在生物学中,也存在许多scaling law。例如,生物体的代谢率与其体重的幂函数关系被称为Kleiber定律。根据Kleiber定律,生物体的代谢率与其体重的3/4次方成正比。这个scaling law对于研究生物体的能量需求和生态系统的结构具有重要意义。
在AI领域,scaling law是指随着数据量和模型规模的增加,模型的性能和效果也会相应提升的现象。
机器学习算法
监督学习
线性回归(Linear Regression)
原理
用于预测数值型数据,模型关系假设为线性。线性回归用于建立变量之间线性关系的统计模型。
回归问题
步骤
初始化模型参数,如斜率和截距。
计算预测值,即利用当前模型参数对样本数据进行预测。
计算损失函数,即计算实际值与预测值之间的差异。
根据损失函数的梯度,循环迭代更新模型参数,使损失函数最小化。
计算预测值,即利用当前模型参数对样本数据进行预测。
计算损失函数,即计算实际值与预测值之间的差异。
根据损失函数的梯度,循环迭代更新模型参数,使损失函数最小化。
损失函数
L(y, ŷ) = 1/n * Σ(yi - ŷi)^2
应用
线性关系:自变量和因变量之间存在线性关系。
同方差性:残差(预测误差)具有相等或近似的方差。
无多重共线性:输入特征之间相互独立,无强烈相关性。
同方差性:残差(预测误差)具有相等或近似的方差。
无多重共线性:输入特征之间相互独立,无强烈相关性。
限制
只能处理线性关系。
对非线性数据,需要转换为多项式或其他函数形式。
容易受到异常值的影响。
对非线性数据,需要转换为多项式或其他函数形式。
容易受到异常值的影响。
变体
线性回归的变体包括岭回归和Lasso回归,它们在普通线性回归的基础上加入了正则化项,用于解决多重共线性问题和过拟合问题。
Lasso回归(Least Absolute Shrinkage and Selection Operator)
原理
是一种用于特征选择和正则化的线性回归方法。它通过在损失函数中加入L1正则化项来惩罚模型的复杂度,即更多的特征系数为0,实现特征选择的效果。
拓展
正则项
L1和L2项是正则化项,用于在机器学习算法中控制模型的复杂度,防止过拟合。
L1正则化项:L1正则化项是指参数的绝对值之和,通常表示为λ||w||1,其中λ是正则化系数,w是模型的参数。
L1正则化项可以使得模型的参数更加稀疏,即使得一部分参数为0,从而可以进行特征选择,减少模型的复杂度。
L1正则化项可以使得模型的参数更加稀疏,即使得一部分参数为0,从而可以进行特征选择,减少模型的复杂度。
L2正则化项:L2正则化项是指参数的平方和,通常表示为λ||w||2^2,其中λ是正则化系数,w是模型的参数。
L2正则化项可以使得模型的参数更加平滑,避免参数过大,从而减少模型的过拟合风险。
L2正则化项可以使得模型的参数更加平滑,避免参数过大,从而减少模型的过拟合风险。
步骤
初始化模型系数β为0或者一个很小的随机值。
根据损失函数,通过梯度下降或者坐标下降等优化算法来更新模型系数β。
在更新系数的过程中,考虑L1正则化项的影响,使得模型系数更加稀疏。
重复步骤2和步骤3,直到模型收敛或者达到设定的迭代次数。
根据损失函数,通过梯度下降或者坐标下降等优化算法来更新模型系数β。
在更新系数的过程中,考虑L1正则化项的影响,使得模型系数更加稀疏。
重复步骤2和步骤3,直到模型收敛或者达到设定的迭代次数。
优点
可以进行特征选择,剔除对模型预测影响较小的特征,从而提高模型的泛化能力。
是一种强大的线性回归方法,适用于高维数据和特征选择问题。
缺点
当特征之间存在高度相关性时,Lasso回归倾向于选择其中一个特征而忽略其他相关特征。
逻辑回归(Logic Regression)
原理
基于线性回归模型,通过将线性回归的输出(通常使用sigmoid)映射到一个概率范围内,从而实现对分类问题的预测。
分类问题
单层神经网络是指只有一个神经元的神经网络,逻辑回归可以看作一个单层神经网络问题。
步骤
初始化模型参数(权重 w 和偏置 b 向量)。
计算模型的输出值ŷi,即将输入特征与参数权重w相乘并加上偏置b。
将输出值通过激活函数(通常是sigmoid函数)转换为概率值。
计算损失函数(通常是交叉熵损失函数)。
使用梯度下降等优化算法更新模型参数,使损失函数最小化。
计算模型的输出值ŷi,即将输入特征与参数权重w相乘并加上偏置b。
将输出值通过激活函数(通常是sigmoid函数)转换为概率值。
计算损失函数(通常是交叉熵损失函数)。
使用梯度下降等优化算法更新模型参数,使损失函数最小化。
sigmoid函数
sigmoid函数的特点是输出值在0和1之间,且具有单调递增和平滑的性质,适合用于二分类问题的概率估计。
sigmoid导数
σ′(z) = σ(z)(1−σ(z))
损失函数
L(y, ŷ) = (ŷi - y)^2
平方差损失在这容易出现多个极值点
L(y, ŷ) = -Σ ( yi * log(ŷi) + (1 - yi) * log(1 - ŷi) )
例: yi -> 1时,后项为0,前面 ŷi 趋近1损失最小。
应用
患病与否、客户流失与否等二元分类问题。
变体
逻辑回归的变体包括多项式逻辑回归和支持向量机(SVM),它们在逻辑回归的基础上引入了非线性变换和核技巧,用于处理非线性分类问题和高维数据。
K最近邻(K-Nearest Neighbors, KNN)
分类和回归算法,通过查找样本的K个最近邻居进行预测。
分类和回归算法,通过查找样本的K个最近邻居进行预测。
算法是一种基本的分类和回归算法,其逻辑是基于样本之间的距离来进行分类或回归预测。
步骤
计算待分类样本与训练集中所有样本的距离。
根据距离找出离待分类样本最近的K个样本。
统计这K个样本中各个类别的出现次数。
将待分类样本归为出现次数最多的类别(分类问题)或计算K个样本的平均值作为预测值(回归问题)。
根据距离找出离待分类样本最近的K个样本。
统计这K个样本中各个类别的出现次数。
将待分类样本归为出现次数最多的类别(分类问题)或计算K个样本的平均值作为预测值(回归问题)。
算法
准确率(Accuracy):分类问题中,正确分类的样本数占总样本数的比例。
均方误差(MSE):回归问题中,预测值与真实值之间的平均平方误差。
支持向量机(Support Vector Machines, SVM)
用于分类和回归任务,通过最大化类间边界来决定分类超平面。
用于分类和回归任务,通过最大化类间边界来决定分类超平面。
原理
找到能够最佳分隔不同类别数据的决策边界(超平面)。SVM 通过最大化两个类别之间的间隔(即 margin)来实现这一点,从而保证模型的泛化能力
步骤
选择核函数和参数:根据数据的特点选择适合的核函数,并初始化参数。
构造优化问题:将原始问题转换为对偶问题,利用核函数计算高维空间中的点积。
求解对偶问题:使用优化算法(如 SMO)求解对偶问题,得到最优的拉格朗日乘子𝛼𝑖。
计算模型参数:通过𝛼𝑖,αi 计算 𝑤 和 𝑏,或者直接用和核函数进行分类。
分类或回归:利用训练好的模型对新数据进行预测。
构造优化问题:将原始问题转换为对偶问题,利用核函数计算高维空间中的点积。
求解对偶问题:使用优化算法(如 SMO)求解对偶问题,得到最优的拉格朗日乘子𝛼𝑖。
计算模型参数:通过𝛼𝑖,αi 计算 𝑤 和 𝑏,或者直接用和核函数进行分类。
分类或回归:利用训练好的模型对新数据进行预测。
算法
随机森林(Random Forest)
决策树集成算法,通过构建多个决策树并集成它们的预测来改进模型性能。
决策树集成算法,通过构建多个决策树并集成它们的预测来改进模型性能。
朴素贝叶斯(Naive Bayes)
基于贝叶斯定理和特征条件独立假设的分类算法,适用于小数据集。
基于贝叶斯定理和特征条件独立假设的分类算法,适用于小数据集。
应用
特征条件独立:假设所有特征在条件上独立,即每个特征单独影响类别的概率。
各类别本身的数据是平衡的。
各类别本身的数据是平衡的。
限制
特征独立性假设过于简单,在现实中很少成立。
如果测试数据集里面的特征在训练集中没有出现,因为条件概率为0,可能导致预测错误。
如果测试数据集里面的特征在训练集中没有出现,因为条件概率为0,可能导致预测错误。
非监督学习
K-均值聚类(K-Means Clustering)
将数据分为K个集群,并使集群内的方差尽可能小。
将数据分为K个集群,并使集群内的方差尽可能小。
步骤
应用
损失
层次聚类(Hierarchical Clustering)
创建一个嵌套的聚类树,反映数据的层级结构。
创建一个嵌套的聚类树,反映数据的层级结构。
主成分分析(Principal Component Analysis, PCA)
一种降维技术,可用于提取数据中的关键特征并减少特征空间的维度。
一种降维技术,可用于提取数据中的关键特征并减少特征空间的维度。
自编码器(Autoencoders)
用于数据压缩和降维的神经网络,通过学习重建自身输入来提取特征。
用于数据压缩和降维的神经网络,通过学习重建自身输入来提取特征。
聊些数学
向量化
减少循环,增加效率。
维度参数 * 样本特征
提高数据密度,维度
前向过程
损失函数计算
后向过程
各维度参数更新
使用numpy进行并行运算
np.dot(a, b)
np.squeeze(arr)
np.ones, np.zeros
构造矩阵:np.zeros((1, m))
np.exp, np.log
np.sum
np.abs
范数
定义
向量的范数是一个将向量映射到非负实数的函数,通常表示为||x||。它衡量了向量的 大小 或 长度
特性
非负性:对于任意向量x,其范数满足||x|| ≥ 0,且只有当x为零向量时,||x|| = 0。
齐次性:对于任意标量α,向量x,有||αx|| = |α| ||x||。
三角不等式:对于任意向量x和y,有||x + y|| ≤ ||x|| + ||y||。
齐次性:对于任意标量α,向量x,有||αx|| = |α| ||x||。
三角不等式:对于任意向量x和y,有||x + y|| ≤ ||x|| + ||y||。
不同范数意义
L1范数(曼哈顿范数):||x||1 = Σ|xi|,表示向量各个元素绝对值之和。在机器学习中常用于稀疏性相关问题。
L2范数(欧几里得范数):||x||2 = √(Σxi^2),表示向量各个元素平方和的平方根。在机器学习中常用于最小二乘法和正则化。
无穷范数:||x||∞ = max(|xi|),表示向量中绝对值最大的元素。在机器学习中常用于支持向量机。
张量
基本原理
张量是一种多维数组,可以存储和表示多维数据。
在数学和物理学中,张量是一种广义的概念,可以描述向量、矩阵等数据结构。
在机器学习和深度学习中,张量是存储和处理数据的基本数据结构,常用于表示神经网络的输入、输出和参数。
图像数据案例
高维张量是指具有多个维度的张量,例如三维张量可以表示为一个立方体,四维张量可以表示为一个立方体的堆叠,依此类推。
高维张量在深度学习中经常用于表示多通道的图像、视频、时间序列等数据。
数据案例: 假设我们有一组包含100个样本的图像数据集,每个图像的大小为28x28像素,且有RGB三个通道。我们可以将这组数据表示为一个四维张量,其形状为(100, 28, 28, 3),其中第一个维度表示样本数量,第二和第三个维度表示图像的高和宽,第四个维度表示RGB通道。这样的高维张量可以方便地存储和处理多通道的图像数据。
高维张量在深度学习中经常用于表示多通道的图像、视频、时间序列等数据。
数据案例: 假设我们有一组包含100个样本的图像数据集,每个图像的大小为28x28像素,且有RGB三个通道。我们可以将这组数据表示为一个四维张量,其形状为(100, 28, 28, 3),其中第一个维度表示样本数量,第二和第三个维度表示图像的高和宽,第四个维度表示RGB通道。这样的高维张量可以方便地存储和处理多通道的图像数据。
视频数据案例
张量可以用来表示视频帧。每个视频帧可以被表示为一个三维张量。
第一个维度表示图像的高度,第二个维度表示图像的宽度,第三个维度表示图像的通道数(如RGB颜色通道)。
第一个维度表示图像的高度,第二个维度表示图像的宽度,第三个维度表示图像的通道数(如RGB颜色通道)。
张量也可以用来表示视频序列。一个视频序列可以被表示为一个四维张量。
其中第一个维度表示时间步,第二个维度表示图像的高度,第三个维度表示图像的宽度,第四个维度表示图像的通道数。
其中第一个维度表示时间步,第二个维度表示图像的高度,第三个维度表示图像的宽度,第四个维度表示图像的通道数。
张量运算
加法案例
乘法案例
神经网络算法
前馈神经网络(Feedforward Neural Network,FNN)
概念
FNN是最基本的神经网络模型,由输入层、隐藏层和输出层组成。输入数据从输入层传递到隐藏层,再传递到输出层。
前向过程
反向过程
原理
隐藏层和输出层之间的连接是单向的,没有反馈。
FNN通过反向传播算法来训练网络,优化网络参数,使得网络能够更好地拟合训练数据。
应用
单层神经网络:是指只有一个神经元的神经网络,也可以看作是一种特殊的浅层神经网络。
这种神经网络通常用于解决二分类问题,其输出值为0或1。
算法图
z1 = W1*x + b
a = g(z1)
Loss(a, y)
浅层神经网络:是指只有一层隐藏层的神经网络,通常包括输入层、隐藏层和输出层。
常用于解决简单的分类或回归问题,因为只有一层隐藏层,所以其学习能力有限。
算法图
z1 = W1*x + b
a1 = g(z1)
z2 = W2*a1 + b2
a2 = g(z2)
Loss(a2, y)
卷积神经网络(Convolutional Neural Network,CNN)
概念
CNN是一种专门用于处理具有网格结构数据的神经网络模型,如图像、视频等。
结构
CNN的主要特点是通过卷积层、池化层和全连接层来提取图像特征并实现分类。
原理
它引入了卷积层和池化层,通过局部感知和参数共享来减少网络参数量,提高计算效率。
卷积层:通过卷积操作提取输入数据的特征;
池化层:通过降采样减少特征图的尺寸。
卷积层:通过卷积操作提取输入数据的特征;
池化层:通过降采样减少特征图的尺寸。
应用
CNN在图像分类、目标检测、人脸识别等领域取得了巨大成功。
循环神经网络(Recurrent Neural Network,RNN)
概念
RNN是一种具有循环连接的神经网络模型,能够处理序列数据,如时间序列、自然语言序列等。
结构
RNN具有记忆功能,可以捕捉序列数据中的上下文信息。RNN网络通常由循环层和全连接层组成。
原理
RNN通过将当前时刻的输入和上一时刻的隐藏状态结合,产生当前时刻的输出和下一时刻的隐藏状态。
这种循环结构使得RNN能够捕捉到序列数据中的时序信息。
传统RNN存在梯度消失和梯度爆炸的问题,因此出现了一些改进的RNN结构,如长短期记忆网络(LSTM)和门控循环单元(GRU)。
这种循环结构使得RNN能够捕捉到序列数据中的时序信息。
传统RNN存在梯度消失和梯度爆炸的问题,因此出现了一些改进的RNN结构,如长短期记忆网络(LSTM)和门控循环单元(GRU)。
优点
模型可以处理变长序列
模型大小与输入长度无关
可以考虑较多历史信息
便于流式输出
应用
RNN广泛应用于语言模型、机器翻译、语音识别等领域。
操作案例
pytorch
1线性回归问题案例
2文本分类问题案例
tensorflow
前向传播,反向传播
循环梯度下降
线性回归案例
图像分析算法案例
词向量思想
各类介绍
将图片文件转换为向量的常见方法是使用卷积神经网络(CNN)提取图片的特征向量。这些特征向量通常称为图片的“特征表示”或“特征向量”
将音频文件转换为向量的常见方法是使用声学特征提取算法,如梅尔频率倒谱系数(MFCC)提取音频的特征向量。
将文本文件转换为向量的常见方法是使用词袋模型(Bag of Words)或词嵌入模型(如Word2Vec、GloVe)将文本表示为稀疏或密集的向量。
one-hot
一个词汇使用一个维度标识的稀疏表达算法。
词库的多少决定维度的变化,会导致模型维度维护困难和维度爆炸问题。
不足:
1.无法感知语义。
2.无法理解词语的相似度。
3.维度爆炸问题。
Word2Vec
Word2Vec是一种用于将单词表示为连续向量的技术,它基于分布假设:即相似上下文中的单词具有相似的含义。
模型优势
Word2Vec是一种基于神经网络的词嵌入模型,它可以通过训练大规模语料库来学习词向量,从而捕捉词语之间的语义关系。
Word2Vec模型简单且易于实现,训练速度较快,适用于处理大规模数据集。
Skip-gram模型:
损失函数
对于Skip-gram模型,损失函数可以表示为预测目标词的条件概率的负对数似然。
连续词袋模型(CBOW):
损失函数
对于CBOW模型,损失函数则是预测上下文词的条件概率的负对数似然。
模型中的重要参数:
不足:
窗口长度的问题,决定了模型难以考虑全局的语义
是静态的词向量表达形式,难以理解一词多义
Glove
Glove(Global Vectors for Word Representation) 是一种用于学习词向量的无监督算法 。
模型优势:
可以通过最小化词语共现矩阵的损失函数来学习词向量,从而捕捉词语之间的语义关系。
GloVe模型在一些语义任务上表现更好,例如词语类比和词语相似度计算。
算法思路
GloVe算法的共现矩阵构建:
模型重要参数:
不足:
尽管GloVe使用了全局信息,但每个单词的向量依然是静态的,不考虑特定上下文,因此可能不适合处理多义词。
Transformer
概念
Transformer是一种基于注意力机制的深度学习模型,最初由Google提出用于自然语言处理任务。
结构
编码器(Encoder)
编码器由多个相同的层堆叠而成,每个层包括两个子层:
多头自注意力机制(Multi-Head Self-Attention):通过计算输入序列中每个位置的注意力权重,使模型能够关注输入序列中不同位置之间的依赖关系。
前馈神经网络(Feed-Forward Neural Network):对每个位置的隐藏表示进行线性变换和激活函数处理,从而学习位置之间的非线性关系。
多头自注意力机制(Multi-Head Self-Attention):通过计算输入序列中每个位置的注意力权重,使模型能够关注输入序列中不同位置之间的依赖关系。
前馈神经网络(Feed-Forward Neural Network):对每个位置的隐藏表示进行线性变换和激活函数处理,从而学习位置之间的非线性关系。
解码器(Decoder)
多头自注意力机制(Multi-Head Self-Attention):与编码器中的自注意力机制类似,但在解码器中需要避免未来信息泄露
编码器-解码器注意力机制(Encoder-Decoder Attention):将编码器的输出作为查询向量,解码器的自注意力输出作为键值对,计算解码器每个位置对编码器输出的注意力权重。
前馈神经网络(Feed-Forward Neural Network):与编码器中的前馈神经网络相同。
编码器-解码器注意力机制(Encoder-Decoder Attention):将编码器的输出作为查询向量,解码器的自注意力输出作为键值对,计算解码器每个位置对编码器输出的注意力权重。
前馈神经网络(Feed-Forward Neural Network):与编码器中的前馈神经网络相同。
分析介绍
LLM
特定任务模型
文本聚类,分类
Text-embedding
Text-embedding-3-large 是OpenAI基于Transformer架构的一个预训练文本嵌入模型。
案例:训练步骤
案例:相似度计算
它通过大规模的无监督学习从海量文本数据中学习到了丰富的语义。将文本转换为高维向量,这些向量可以用于计算文本之间的相似度、聚类、分类任务。
AutoModelForSequenceClassification
🤗Transformers库中的一个模型类,用于进行序列分类任务。
案例:分类
该模型可以自动选择适合特定任务的预训练模型,并在其之上添加一个分类头部进行微调。
文本交互,生成
GPT系列 (Generative Pre-trained Transformer)
GPT-1: OpenAI在2018年发布的第一个版本,是一个基于Transformer架构的预训练语言模型,能够生成连贯的文本。
GPT-2: 在2019年发布,是GPT-1的升级版,拥有更多的参数(15亿个),能够生成更加自然和复杂的文本。(没有完全开放GPT-2模型)
GPT-3: 在2020年发布,是目前最大的语言处理模型之一,拥有1750亿个参数。GPT-3在多种语言任务上表现出色,包括翻译、问答、摘要、编程等。
Babbage
Babbage-002是OpenAI的一种语言模型,它是基于GPT-3架构的一个版本。它具有1750亿个参数,是OpenAI最早公开的大型语言模型之一。Babbage-002可以用于生成文本、回答问题、完成任务等。
Davinci-002是OpenAI的另一个语言模型,也是基于GPT-3架构的一个版本。它比Babbage-002更大,具有了更多的参数,达到了3500亿个参数。Davinci-002在生成文本、理解语义、回答问题等方面表现出色,可以用于各种自然语言处理任务。
Codex (Coding Copilot)
Codex: 是基于GPT-3的编程语言模型,能够理解和生成人类编程语言。Codex的一个著名应用是GitHub Copilot,它可以帮助开发者auto coding.
图像生成
DALL·E
DALL·E: 在2021年初发布,是一个基于GPT-3的图像生成模型,能够根据文本描述生成相应的图像。
案例:
DALL·E 2: 是DALL·E的升级版,于2022年发布。它在图像生成的质量和准确性上有显著提升,能够根据文本提示创造出更加逼真和详细的图像。
0 条评论
下一页