用于<分类>的卷积神经网络、样本不平衡问题的解决

news/2024/11/28 21:48:39/

输入图像——卷积层——池化层——全连接层——输出

卷积层:核心,用来提取特征。
池化层:对特征降维。实际的主要作用是下采样,减少参数量来提高计算速度。
卷积神经网络的训练:前向传播(分类识别)、反向传播(求各层误差,更新权值)

用来分类的卷积神经网络模型(经典)

(1)AlexNet:5层卷积+最后连接3个全连接层。ReLU激活函数(收敛速度快,减少训练时间,避免梯度弥散)。Dropout机制(让某些神经元停止工作,降低过拟合现象)。数据增强随机裁剪(训练样本扩充,减少过拟合风险)。重叠池化(池化操作步长小于池化的窗口大小)。

(2)VGG:使用多个小卷积核代替一个大尺寸卷积核(网络深度更深,深就可以提取出更复杂更抽象的高层特征+达到一个大卷积核的感受野,但小卷积核的计算参数和计算量较少)。

(3)ResNet:添加恒等映射层(高层特征和低层特征融合,解决了网路训练时梯度消失的问题。因为层越多提取的信息就越丰富,但层多也容易梯度消失)

轻量型网络

神经网络需要高强度计算,在小型嵌入式系统中对网络模型进行部署,常见的方法:

(1)先在服务器上部署模型,服务器完成计算后结果返回本地应用————特点:高度依赖网络环境

(2)压缩大型经典分类网络模型,减少模型运算的参数数量————常用的模型压缩方式:权值剪枝、模型量化

MobileNet:为移动端或嵌入式设备研发的。使用深度可分离卷积把卷积操作分为Depthwise和Pointwise两部分(深度可分离卷积计算量比传统卷积少8-9倍。缺:模型准确率受损)

SqueezeNet:在AlexNet网络基础上扩展而来,但比AlexNet模型的参数小50倍。

不平衡数据分类

描述:训练样本数据中,各类样本数据不平衡,模型不能从少数的类别样本中学习到足够的信息,影响模型准确率和泛化能力。

解决:(1)从数据层面改善————直接对训练样本数据进行调整;使用采样的方法来增加少数类别的样本数量或减少多数类别的样本数量,从而使每类的分布达到均衡

①少数类别的样本上采样——重复的从少数类别的训练样本中选择数据并输入到网络中——随机均匀上采样:随机获取训练样本中部分数据,进行样本复制,然后作为新的样本添加到该类别样本的训练集中——缺:模型缺少泛化能力——解决:SMOTE
SMOTE:是把距离相近的训练样本当做是同一种类别的样本,首先在少数类别的样本中选择一个样本数据,然后使用K近邻的思想在多个K近邻样本中随机选择一个样本数据,且这个样本也是属于少数类别的。对于这两个样本数据,在它们之间随机选择一点,作为一个新的少数类样本,从而使数据集达到平衡。

②多数类别的样本下采样——减少多数类别的训练样本

③结合前两种进行混合采样——同时在少类别样本和多类别样本上采样

(2)从算法角度解决————算法角度中,让每个类别在模型训练时获得同等关注
①阈值分类调整法:只需要设定每个类别的分类阈值,输出的结果满足相应的阈值要求即为相应的类别。
②GMBoost:是一种集成学习方法,是基于SMOTEBoost 改进得出的,该方法的核心是在训练弱分类器时,不再使用错误率更新弱分类器权重和样本权重,而是使用几何平均值G-mean代替。③SMOTEBoostSVM:是基于SMOTEBoost算法思想提出的,该方法先根据数据不平衡的比例将多数类别样本划分为多个子数据集,每个多数类别子数据集和少数类别数据集共同作为训练样本,使用 Adaboost训练子分类器。然后筛选出子分类器分类结果不同的样本生成候选的训练集样本,再用代价敏感的SVM分类器学习训练候选样本。
④对损失函数进行修改——李正欣对于二分类情况下的不平衡问题研究出两种损失函数的改进方式,让模型可以更加关注少数类别的训练样本
⑤Haveai提出对模型进行两阶段训练的方法,先在平衡的样本上训练,在将训练好的模型在不平衡的样本上训练,然后对网络的最后一层进行微调
 


http://www.ppmy.cn/news/30393.html

相关文章

深度账户抽象(Account Abstraction)第 3 部分:Wallet创建

Wallet创建 我们还没有解决的是每个用户的钱包合约最初是如何在区块链上结束的。部署合约的“传统”方式是使用 EOA 发送包含合约部署代码的且没有收件人的交易。这在这里会非常令人不满意,因为我们刚刚做了很多工作来实现它,所以有人可以在没有 EOA 的情况下与链交互。如果用…

产品经理如何去做需求分析,建议收藏

目录 一、需求收集 1. 产品需求 2. 功能需求 3. 迭代需求 二、需求分析 1. 系统了解需求(5W2H法) 2. 判断需求真实性 3. 分析现有解决方案-竞品分析 4. 行业结构分析 5. 总结 三、方案验证 四、商业模式 五、路线规划 六、战略制定 七、总…

ESP32使用TCP HTTP访问API接口JSON解析获取数据

ESP32使用TCP HTTP访问API接口JSON解析获取数据API接口代码解析获取时间代码烧录效果总结API接口 单片机常用的API接口基本都是返回的一串JSON格式的数据,这里以ESP32联网获取时间信息作为获取API数据的示例,以便后续移植使用。 很多功能性的API接…

编写http workshop脚本从网页缓存里解析音乐

前一篇文章 编写http workshop脚本从网站下载音乐 示范了如何使用HttpClient访问API,以及Json数据的解析; 今天我们通过解析一个网页展示如何使用内置的LibXml2的功能解析HTML,提取我们关心的内容。 这里随便搜了2个资源类的网站,竟然使用的格式是一模一样的: https://www…

[Linux入门篇]一篇博客解决C/C++/Linux System Call文件操作接口的使用

目录 0.前言 1.C / C ->文件操作 1.1 C语言文件操作 1.1.1 C语言文件打开/关闭/写入 1.1.2 C语言文件的追加操作 1.1.3 C语言文件的读取 1.2 C语言文件操作 1.2.1 C文件打开 / 关闭 / 写入 1.2.2 C文件读取 1.2.3 文件追加 2.三个默认输入输出流 2.1 C语言中的三…

js-DOM03-事件

事件(Event) - 事件对象 - 当响应函数被调用时,浏览器每次都会将一个事件对象作为实参传递进响应函数中, 这个事件对象中封装了当前事件的相关信息,比如:鼠标的坐标,键盘的按键…

C语言 猜名次、猜凶手、杨辉三角题目详解

猜名次题目:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二&#xff…

C语言练习 | 初学者经典练习汇(2)

目录 1、编写一个程序从1到100中,所有出现9的个数 2、分数求和 3、10个整形数字中选出最大值 4、打印9*9的乘法口诀 5、字符串逆序 6、计算一个数的每位之和(递归实现) 7、递归实现n的K次方 8、写个冒泡排序,把一个整形数组变成升序。 9、二进制…