回归、分类、生成三大任务实现原理

在机器学习与深度学习相关项目需求实现中,通常可以细分成很多个回归、分类、生成任务的实现,由这些任务组成一个完整的任务。下面分别介绍这三种任务

回归:

什么是回归?

找到一个函数,通过输入的特征值X,输出一个连续的数值Y

回归任务的目标是预测连续值的输出。它试图建立一个数学模型来描述自变量和因变量之间的关系,并通过最小化误差的平方和寻找数据的最佳函数匹配‌例如,预测房价、温度或股票价格、商品推荐等。

回归任务常用解决方案:

线性回归:通过找到输入特征X和输出值Y之间的最佳线性关系来预测连续值。输入特征可以是多个变量,但是变量的幂只能是1,保证输入变量与输出变量之间是线性变化关系。数学表达式如下:

Y=W1X+BY=W1X+W2Z+B

Scikit-learn中用LinearRegression实现。

多项式回归:当为非线性可分数据创建模型时,多项式回归是比较受欢迎的选择之一。它类似于线性回归,但使用变量 X Y之间的关系来找到绘制适合数据点的曲线(非直线)。这里输入变量可以是多个,变量的最高幂可能大于1,当幂大于1,表示输入变量与输出变量之间的非线性关系,图像是是一条曲线。数学表达式如下:

Scikit-learn中用PolynomialFeaturesLinearRegression实现。

支持向量机回归(SVR):使用支持向量机(SVM)的原理来找到一个超平面,使得所有数据点到该平面的距离最小化。Scikit-learn中提供了SVR用于实现,在使用SVR之前,先用StandardScaler() 执行特征缩放,使每个特征具有相似的重要性。

决策树回归:使用决策树来分割数据,并在每个叶节点上预测一个连续值。Scikit-learn 中提供了DecisionTreeRegressor 用于实现。

随机森林回归:属于集成学习方法的一种,通过构建多个决策树并将它们的预测结果进行组合来提高模型的性能和鲁棒性。数据集的各种子样本上拟合多个决策树,并使用平均来提高预测准确性和控制过拟合。在Scikit-learn中用RandomForestRegressor实现。

神经网络回归:神经网络由多个相互连接的神经元(或称为节点、单元)组成,这些神经元通常分层排列,形成输入层、隐藏层(可以有多层)和输出层。神经网络广泛用于机器学习与深度学习中。深度学习使用多层神经网络来学习复杂的非线性关系,并预测连续值。它提供了一种灵活、强大的框架用于建模和预测回归问题。选用适当的  网络结构训练策略正则化技术,可以有效地从数据中学习并做出准确的预测。深度神经网络适用于训练集过万的情况下。torch.nntorch.optim支持构建神经网络回归模型。

分类:

什么是分类?

分类算法通过对已知类别训练集的计算和分析,从中发现类别规则并预测新数据的类别。分类任务的目标是将输入数据分配到预定义的类别中。例如,垃圾邮件检测、图像识别或疾病诊断等。

分类任务常用解决方案

逻辑回归:通过计算概率来决定数据点属于哪个类别。输出标签通常是满足0-1分布的离散型变量。逻辑回归通过引入联系函数,将线性回归输出值转换为分布在 (0,1) 之间的值,当值接近0时样本的标签为类别0,当 值接近1时样本的标签为类别1,这样就得到了一个分类模型。而这个联系函数对于逻辑回归来说,就是Sigmoid函数。

这就是线性回归的输出值。

逻辑回归是不直接预测标签值,而是去预测标签为类别1的概率。一般地如果标签为类别1的概率大于0.5,就认为其为类别1,否在为类别2Scikit-learn中用LogisticRegression实现逻辑回归

KNN:K-Nearest Neighbors (KNN)根据输入数据点在特征空间中最近的邻居的类别来预测其类别。基本原理是基于“物以类聚”的思想,即一个样本的类别由其最接近的 K 个邻居的类别决定。常用计算距离方法有:欧氏距离、曼哈顿距离。Scikit-learn中用KNeighborsClassifier实现KNN。

朴素贝叶斯分类器:这是一种基于概率统计的分类方法,在条件独立假设的基础上使用贝叶斯定理构建算法,能够通过提供后验概率估计来量化预测中的不确定性的概率分布模型。

贝叶斯定理

贝叶斯定理给出了条件概率与 之间的关系。

朴素贝叶斯假设所有属性的类条件概率可以被分解为类条件概率的乘积:(给定类别标签,属性是相互独立的)

在小数据集上仍然可以使用先验概率P(Y)作为后验概率的估计,通过不断增加更多的属性X,可以不断细化后验概率。

Scikit-learn中用sklearn.naive_bayes下属类:

GaussianNB:适用于连续特征,假设特征服从高斯分布。

MultinomialNB:适用于离散特征,例如文本分类中的词频。

BernoulliNB:适用于二值特征,例如布尔值特征。

支持向量机分类器:找到一个超平面,使得不同类别之间的间隔最大化。支持向量机算法分类和回归方法的中都支持线性性和非线性类型的数据类型。非线性类型通常是二维平面不可分,为了使数据可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易区分,这样就达到数据分类或回归的目的,而实现这一目标的函数称为核函数。常用的核函数有:

线性核(Linear Kernel

多项式核(Polynomial Kernel

高斯核(Gaussian Kernel

拉普拉斯核(Laplacian Kernel

Sigmoid核(Sigmoid Kernel

Scikit-learnsklearn.svm.SVC现。

决策树分类器:使用决策树来分割数据,并在每个叶节点上预测一个类别。数模型通过递归切割的方法来寻找最佳分类标准,进而最终形成规则。分类树基尼系数最小化准则,进行特征选择,生成二叉树。决策树的学习算法包含特征选择、决策树的生成、决策树的剪枝过程。Scikit-learn中用sklearn.tree.DecisionTreeClassifier实现

随机森林分类器:属于集成学习方法的一种,它通过组合多个决策树来提高分类性能。在随机森林中,每个决策树都是独立构建的,使用随机选择的特征和样本进行训练,最终将每个决策树的分类结果进行投票,得到最终的分类结果。在Scikit-learnsklearn.ensemble.RandomForestClassifier实现

神经网络分类器:使用多层神经网络来学习复杂的非线性关系,并通过输出层的激活函数(如softmax)来决定类别。选用适当的  网络结构训练策略正则化技术,可以有效地从数据中学习并做出准确的分类。深度神经网络适用于规模庞大训练集的情况下。torch.nntorch.optim支持构建神经网络分类模型。

在图像识别方面,著名的深度卷积神经网络达到非常高的准确率,如GoogLeNet, VGG, ResNet。

YOLO(you only look once):图像目标检测要对图像中检测对象进行分类与定位。同时包含了分类与回归两种功能实现。YOLO是一阶段目标检测模型的开山之作,在图像目标检测领域一向以响应速度快著称,它同是兼顾了模型的准确性,在速度与准确性之间做到很好的平衡。YOLOv8可以分别实现图像分类、目标检测、旋转边界框检测、姿势识别、图像分割,并且在目标检测、旋转边界框检测、姿势识别、图像分割模型基础上实现视频跟踪功能。下面是它的架构图:

在文本分类方面,RNNLSTM、基于TransformerBERT, GPT都是著名的深度分类模型。

生成:

什么是生成?

生成任务通过学习数据集中的特征和标签之间的关系,从而能够生成新的数据样本。 不仅关注输入到输出的映射关系,还关注数据本身的分布和生成机制。例如,文本生成、图像生成、音乐生成等。

生成任务常用解决方案

朴素贝叶斯:它首先学习数据的联合概率分布,然后通过贝叶斯定理求得条件概率分布。这种通过联合概率分布和先验概率分布来计算条件概率分布的方法,使得朴素贝叶斯成为一种典型的生成模型。

Scikit-learnsklearn.naive_bayes下属类实现:

GaussianNB适用于连续特征,假设特征服从高斯分布。

MultinomialNB适用于离散特征,例如文本分类中的词频。

BernoulliNB适用于二值特征,例如布尔特征。

生成对抗网络(GAN):由两个网络组成,一个生成器和一个判别器,生成器试图生成与真实数据相似的数据,而判别器试图区分生成的数据和真实数据。

可以将GAN架构想象成一个伪造者和一个警察的对立,其中伪造者正在学习通过假钞,而警察正在学习检测它们。双方都在动态变化。

这意味着,随着伪造者学习完善制造假钞,警察也在训练并变得更好,双方都在不断升级中学习对方的方法。

GAN架构由两个主要网络组成:

1.生成器:试图将随机噪声转换为看起来像是从原始数据集中采样的观测值。

2.鉴别器:试图预测一个观测值是来自原始数据集还是生成器的伪造品。

使用多层感知器(MLP)网络构建生成器和鉴别器网络。并且已经证明卷积层能够增强鉴别器的预测能力,这反过来又提高了生成器和整体模型的准确性。这种类型的GAN被称为DCGAN(深度卷积GAN)。

变分自编码器(VAE):变分自动编码器(Variational autoEncoderVAE)是一种基于神经网络的生成模型。这些方法的主要目标是从对象的学习潜在分布来生成新的采样数据。VAE 包含两个部分:编码器 encoder 和解码器 decoder。编码器计算每个输入数据的低维均值μ和方差δ,然后从隐变量空间采样,得到Z={Z1,Z ...,Zn},通过解码器生成新数据Y ={Y1,Y2...,Yn}。从隐变量空间中的采样的数据 Z 遵循原始数据 X 的概率分布,这样根据采样数据 Z 生成的新数据 Y也就可以遵循原始数据的概率分布。

它的开源实现有:https://github.com/pytorch/examples/tree/master/vae

https://github.com/YixinChen-AI/CVAE-GAN-zoos-PyTorch-Beginner

​​NeRF(Neural Radiance Fields)-神经辐射场:NeRF网络架构如下图所示。NeRF在合成复杂场景的新视图方面取得了最先进的结果。该算法使用全连接(非卷积)深度网络表示一个场景,其输入是单个连续的5D坐标在空间位置(x, y, z)和观看方向(θ, ϕ),其输出是该空间位置的体密度和与视图相关的发射辐射度。通过查询沿相机射线的5D坐标来合成视图,并使用经典的体渲染技术将输出的颜色和密度投影到图像中。NeRF能有效优化神经辐射场,以渲染具有复杂几何和外观的场景的真实感新视图,并展示了优于之前在神经渲染和视图合成方面的工作的结果。

Wav2Lib-用于将语音与视频中的唇部运动进行同步的深度学习模型: 上面是Wav2Lib的网络架构图。Wav2Lib研究了将任意身份的说话人脸视频与目标语音片段进行唇同步的问题。通过从强大的唇同步判别器中学习来实现。Wav2Lip模型生成的视频的唇同步准确性几乎与真实同步视频一样好。Wav2Lib模型可以实现广泛的现实应用。

循环神经网络(RNN):特别是长短期记忆网络(LSTM)和门控循环单元(GRU),用于生成序列数据,如文本或音乐。

BERT:预训练模型,可用于实现文本摘要,有两种摘要方式:抽取式摘要, 生成式摘要。BERT:基于Transformer特征提取器,它的Transformer只有编码器,没有解码器。可以在预训练模型基础上增加数据继续训练。

GPT:预训练模型,可用于机器翻译、人机对话,它基于Transformer特征提取器,它的Transformer既有编码器,又有解码器。可以在预训练模型基础上增加数据继续训练。

大模型:基于Transformer特征提取器,在大规模训练数据集上,充分利用Transformer的多头注意力机制,提取数据的特征。

著名的有ChatGPTGeminiLlama, 文心一言、盘古、通义千问、ChatGLM、百川等。通过提示词,调用这些模型接口,可以生成相应的文本。ChatGPT3.5成功后面的巨大功臣是使用了人工反馈强化学习(RLHF)实现与人类喜好对齐,下面为人工反馈强化学习架构图:

可以用数据在原有模型基础上微调,使模型掌握私有化、某些领域专业知识,从而能回答相关领域的问题。常用的微调方式有:LoRa,P-tuning,RLHF。大模型可以与专业小模型结合,获取小模型提取的特征,作为训练数据,效果达到比原来小模型更高的准确率与精度。

Stable Diffusion: 上图为Stable Diffusion的核心模型潜在扩散模型(LDM)的架构图。Stable Diffusion是一个通过提示词生成图片或通过提示词与图片对图片进行优化修改的生成模型。前者在提示词后接文本编码器CLIP,然后进入扩散模型; 后者,提示词同样经过文本编码器CLIP进入扩散模型,图片经过AE_ Encoder进入扩散模型。两者都经过扩散模型生成图片。

多模态大模型LLaVA:LLaVA一个端到训练的大型模态模型,连接视觉编码器和LLM,以实现通用的视觉和语使(LLM)LLaVA使用纯语GPT-4-LLaVAv1.5受到将线性投影改为多层感知机(MLP)后在自监督学习中性能提升的启发,使用两层MLP来提高视觉语言连接器的表示能力,相较于原始的线性投影,可以增强LLaVA的多模态能力。LLaVA出的视觉-视觉路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值