常见的多类别分类模型

今天给大家介绍两个多分类任务中的经典网络模型LeNet5和AlexNet。内容源来自“有三AI”,感兴趣的读者可以关注公众号“有三AI”。

首先要给大家普及以下网络深度和网络宽度的概念,强调一点,池化层是不算入网络深度的

网络的深度:最长路径的卷积层+全连接层的数量,这是深度学习最重要的属性。

如图,以简单的LeNet5网络为例,网络中包含3个卷积层,2个全连接层,所以网络深度等于5。

C1+C3+C5+F6+OUTPUT

图1 LeNet5网络

网络的宽度:每一个网络层的通道数,以卷积网络层计算。LeNet5网络:C1(6),C3(16),

多类别图像分类的经典模型

一、LeNet网络

1. LeNet5模型结构

一共7层,3个卷积层,2个池化层,3个全连接层,输入图像大小为32*32(灰度图——单通道)。

  • C1:6个5*5的卷积核
  • C3:60个5*5的卷积核(为什么不是16*6个5*5的卷积核,下文会给出解释)
  • C5:120*16个5*5卷积核
  • 两个池化层S2和S4:都是2*2的平均池化,并添加了非线性映射
  • 第一个全连接层:84个神经元(为什么不是2的整数次幂,解释见下文)
  • 第二个全连接层:10个神经元

2. LeNet5的工程技巧

(1)  C3层与S2层之间非密集的特征图连接关系:打破对称性,同时减少计算量,共60组卷积核。

 图2 C3层特征图与S2层特征图之间的连接关系

(2)  全连接层的设计

倒数第2层维度不是常见的2的指数次幂的维度,而是84,为什么?

计算机中字符的编码是ASCII编码,这些图是用7*12大小的位图表示,84可以用于对每一个像素点的值进行估计。

二、AlexNet网络

1. AlexNet模型结构

图3 AlexNet模型结构

一共8层,5个卷积层,3个全连接层,输入图像:224*224*3

  • C1:96*3个11*11卷积核
  • C2:256*96个5*5卷积核
  • C3:384*256个3*3卷积核
  • C4:384*384个3*3卷积核
  • C5:256*384个3*3卷积核
  • 全连接层F1,F2,Output神经元数量:4096,4096,1000

2. AlexNet工程技巧

  • 多GPU训练:尽量使用更多特征图,并减少计算量。除了将模型的神经元进行了并行,还使得通信被限制在了某些网络层。第三层卷积要使用第二层所有的特征图,但是第四层却只需要同一块GPU中的第三次的特征图。
  • ReLU激活函数:加快模型收敛。
  • LRN归一化:抑制反馈较小的神经元,放大反馈较大的神经元,增强模型泛化能力
  • Dropout正则化:防止过拟合,提高泛化能力。
  • 重叠池化:更有利于减轻过拟合。
  • 数据增强:提高模型泛化能力。
  • 测试时增强:指的是在推理(预测)阶段,将原始图片进行水平翻转、垂直翻转等数据增强操作,得到多张图分别进行推理,再对结果融合。

三、分类任务中存在的难题——类别不平衡问题

不同类别下的样本数目相差过大,从而导致分类模型的性能变差。

解决方案:

  • 基于数据层面的方法:ROS,RUS,采用预训练模型,动态采样
  • 基于算法层面的方法:修改损失函数、代价敏感学习、阈值移动
  • 基于数据和算法混合的方法:LMLE,DOS,难例挖局

提升样本法:

1. 对于类别数目较少的类别,从中随机选择一些图片进行复制并添加至该类别包含的图像内,知道这个类别的图片数目和最大数目类的个数相等为止。

2. 插值方法:

  • 第一步:定义好特征空间,将每个样本对应到特征空间中的某一点,根据样本不平衡比例确定好一个采样倍率N;
  • 第二步:对每一个少样本类样本(x,y),按欧氏距离找出k个最近邻样本,从中随机选取一个样本点,假设选择的近邻点为(x_{n},y_{n})。在特征空间中样本点与最近邻样本点的连线段上随机选取一点作为新的样本点,满足以下公式:

(x_{new},y_{new})=(x,y)+rand(0\sim 1)\times ((x_{n}-x),(y_{n}-y))

  • 第三步:重复以上的步骤,知道大、小样本数量平衡。

3. 动态采样:借鉴了提升样本的思想,根据训练结果对数据集进行调整。对结果较好的类别进行随机删除样本操作;对结果较差的类别进行随机复制操作。

4. 两阶段训练法

  • 第一步:根据数据集分布情况设置一个阈值N,通常为最少类别所包含的样例个数。
  • 第二步:对样例个数大于阈值的类别进行随机抽取,直到达到阈值。此时根据阈值抽取的数据集作为第一阶段的训练样本进行训练,并保存模型参数。
  • 第三步:采用第一阶段的模型作为预训练数据,再在整个数据集上进行训练,对最终的分类结果有了一定的提升。

5. 优化目标设计——提高少类的权重(可以根据经验设置,或者基于样本数量进行自适应加权)

6.样本量过少的解决方案

迁移学习:ImageNet预训练模型的通用性

如果模型的训练数据足够大,且与任务相匹配,该预训练模型所学到的特征具备一定的通用性。

数据增强:有监督方法和无监督方法

  • 有监督方法:平移、翻转、亮度、对比度、裁剪、缩放等
  • 无监督方法:通过GAN网络生成所需样本,然后再进行训练。

Python预测多分类模型是使用Python编程语言构建的机器学习模型,用于对数据进行分类预测,其中数据具有多个离散的类别。 构建多分类模型的一种常见方法是使用监督学习算法,如逻辑回归、决策树、支持向量机或神经网络等。这些算法可以通过Python中的不同机器学习库(如Scikit-learn、TensorFlow或Keras)来实现。 在构建模型之前,首先需要准备数据集。数据集应包含已知的输入特征(例如数值、文本或图像)和相应的类别标签。通常通过划分数据集为训练集和测试集,用于训练模型和评估模型的性能。 一旦准备好数据集,就可以使用Python编写代码来训练模型。训练过程中,模型通过迭代优化模型参数,使模型能够更准确地预测样本的类别。训练过程中还需要选择合适的损失函数和优化算法来衡量模型的错误和更新参数。 训练后的模型可以用于进行分类预测。给定一个具有未知类别的输入样本,模型将根据先前学习到的模式和规律,预测出样本所属的类别。对于多分类模型,模型将给出一个概率分布,表示每个可能类别的概率。 最后,我们可以使用Python的评估指标来评估模型在测试集上的性能。常用的评估指标包括准确率、精确率、召回率和F1分数等。 总结来说,Python预测多分类模型是一种使用Python构建的机器学习模型,用于根据输入特征预测多个离散类别的模型。它需要经历数据准备、模型训练和评估等步骤,使用合适的算法和工具来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值