深度学习(7)LeNet与AlexNet原理

1. LeNet-5

1. LeNet-5网络诞生背景

LeNet-5,5的意思就是,这个网络有5层隐藏层,如图,池化运算只是一种操作,卷积核里面才有参数(w,b),所以是两次卷积+三次全连接,一共是5层

目标检测 里面,都喜欢叫特征提取主干,就是这个model模型专门做提取的。这里是一张狗的图片,我们最希望的是,就把这只狗的信息提取出来,比如草啊之类是无关信息不需要,然后放入卷积池化中(就简单叫 任务层),然后把提取到的信息,经过卷积运算之后,放入全连接中进行分类(到底是狗还是猫)。

因此目标检测就是 回归 + 分类首先我们要知道狗在哪里,这张图片狗的区域在哪里,在哪里就是一个坐标,左边就是一个连续值。

所以特征提取主干是由:两个卷积和两个平均池化层组成(因为在那个时代,1987,最大池化还没有发明出来)

整个过程是:

X------>卷积------>Sigmoid------>池化------>卷积------>Sigmoid------>池化------>全连接------>全连接------>全连接

在神经网络当中,我们输入数据肯定不是一张一张的输入,肯定是一批次**一批次(Batch Size)**的输入。比如说我们有1000张数据,每一批次都设置为100张,也就是总共有10批次。然后每批次100张一起输入到模型当中,去批量的更新w和b,这样就比较快。

所以一次100张,只用CPU去运算就很慢了,所以才需要GPU,所以学习深度学习一定要有GPU,特别是计算机视觉,一定要有个GPU,便宜点的也没问题。

因此我们输入的数据一般是4维的:

**B:**100张(一批次)

**C:**3(通道数,彩色图)

**W,H:**28 * 28(图片的宽高)

因此经过卷积核计算之后,输出的数据也是4维的:

**B:**100张(一批次)

**FN:**卷积核的个数

**FW:**输出的宽

**FH:**输出的高

那么全连接的输入:

**B:**100张(一批次)

**L:**FN * OW * OH(展平,保留卷积的空间信息,变成长条状的参数放入全连接中)

**FL:**如图,120,84,10是每一层全连接的神经元(这个具体个数是人为来定的)然后每一层全连接的输出就是下一层的输入

2. LeNet-5网络参数详解

上面是LeNet具体的初始网络参数,整个运算都是使用这些参数

我们可以发现,在卷积神经网络中,卷积运算都是在增加通道数,池化运算都是在使特征图变小,后面的AlexNet和VGG,Goodlenet,RestNet都是这样的。

卷积是用来增多特征的,卷积每一个通道都用于独立描述一个特征

池化是用来修改特征表现的,如平滑或者突出

第五层结束之后,进行展平操作,得到400个数据和全连接相连

3. LeNet-5总结

只要是使用卷积运算的就是卷积神经网络,池化层有没有不重要,有卷积层就算卷积神经网络的一种。

卷积运算通常增加通道数,这样就能把特征提取出来,每一个特征都都用一个独立的通道数来表示。

在LeNet之前,我们都是用机器学习来做分类任务的,所以LeNet具有开创意义

2. AlexNet

1. AlexNet诞生背景

在1987年LeNet出现之后,2012年AlexNet才出世,主要是因为,当时那个年代卷积操作太消耗资源了,计算很慢,那个时候计算机硬件跟不上。然后慢慢的被其他机器学习方法超越,因为机器学习有很强的理论支持(比如说为什么二次函数的最小值是这个点取到),而深度学习解释性比较差,基本都是先拿到一个好的结果,然后拿结果去解释为什么这么设计,只能等科学家们研究明白神经网络到底是怎么运行的,才能解释了。

可以理解为,数据本身所存在的维度无法被人类察觉,这样就不会被严谨性支配了。

2. AlexNet网络结构

其实最主要的差别就是,比起LeNet,AlexNet多了两次卷积层,然后激活函数使用的是ReLU

3. AlexNet网络参数详解

其实和LeNet过程差不多,值得一提的是,这里池化层用的是最大池化的算法,不过总之也不会改变通道数。

通过ReLU激活函数之后,还是用了Dropout操作,使一些神经元失效, 可以在一定程度上防止过拟合

4. Dropout操作

比如说把dropout设置为0.2,也就是每次反向传播的时候20%神经元随机失活,相当于就是,这一次这些神经元不更新w、b,不是死亡,下一轮更新还会继续更新的,这样就一定程度的避免了过拟合频繁的更新某个参数,并且可以加速训练。

可以理解为:让一部分神经元失活,来防止最后预测的时候只有一部分权重占主导地位,导致预测错误,而使用dropout就会使得每个权重都会承担一些特征,防止某些个别特征影响过大。

5. 图像增强

在我们项目当中,最困难的就是数据集,因为获得数据集需要成本,有数据才能训练,有数据才能测试,而且你数据不够,也没办法去验证不同网络之间的区别,所以有一些图像增强 的操作帮助我们扩增数据集

扩增数据集有两个好处:增加训练数据集,防止过拟合

1. 水平翻转

将图片水平翻转,使得我们的数据集直接增加了一倍,因为明显两张图片对于计算机来说是完全不一样的,但是输出的结果都应该是鸟

2. 随机裁剪

很明显,随机裁剪能产生更多数据集,比如说你裁剪就留下了一个鸟头,也应该识别出这是鸟

3. PCA

就是类似于对图片加了滤镜、饱和度调整等等操作,但是不管怎么样,还是应该很容易看出来这是鸟才对

抖动系数是人为设置的,通过设置抖动系数,也就是说,其实你想输出几张图像增强的图片都可以

4. 总结

其实就是:由于网络只对一种鸟进行一次识别是学不好的,所以不得不进行多层次的学习,得以学习到其本质,而图像扩增就是对这种数据进行多次利用的一种手段。通过不同的角度(翻转、裁剪、滤镜等改变)都可以识别出这是哪一张鸟。

但是这一系列操作只能增强网络对这一种鸟的识别准确率,不可能说,你把这种鸟研究透了,其他种类的鸟你也都认识了。因此本质上,想要增强网络,还是得依靠大量的初始数据集,图像增强操作只能让网络更好一点,属于是锦上添花的东西。

6. LRN正则化

LRN正则化,全称为Local Response Normalization(局部响应归一化),是一种在深度学习,特别是在卷积神经网络(CNN)中常用的正则化技术

比如说:你有 10 个通道,在某个像素位置 (x,y) 上,每个通道都有一个激活值。LRN 会看这个位置在"附近几个通道"的激活强度平方和,如果这个和很大,说明很多通道都很活跃,那么当前通道的激活就会被"压低";反之,如果只有当前通道活跃,它就会被相对放大。

想象一个班级考试的场景

假设你们班有 30 个同学(这就像神经网络里的 30 个通道 )。

老师出了一道题,每个同学都写了一个答案,分数从 0 到 100 不等。

现在,老师想"调整"一下大家的分数,不是为了公平,而是为了突出真正答得好的人 ,同时压一压那些只是凑热闹、分数虚高的人

于是老师定了一个规则:

"每个人的最终得分 = 原始分 ÷(他和他前后 2 个同学的分数平方和 的某个根)"

比如:

  • 小明考了 90 分
  • 他前面两个同学考了 85 和 88,后面两个考了 87 和 92
  • 那么小明的新分数就会被"除以一个比较大的数",因为周围人都很强 → 说明这个题大家都答得好,小明不算特别突出
  • 但如果小明考了 90,而周围同学都只考了 30、40,那他的新分数就会相对更高,因为他"鹤立鸡群"

这就是 LRN 的核心思想
不让一个人(或一个通道)轻易冒尖,除非他真的比"邻居"强很多。


回到神经网络

在 CNN 里:

  • 每个"通道"就像一个同学,负责检测某种特征(比如边缘、颜色、纹理)
  • 在图像的某个位置(比如左上角),每个通道都会输出一个"激活值"(可以理解为"这个位置有多像我负责的特征")
  • 如果很多通道在这个位置都输出很高的值,说明这里很"热闹",但可能没啥特别意义
  • LRN 就会把所有人的值都"压一压"
  • 但如果只有一个通道特别高,其他都很低,那它就值得被保留甚至放大

目的:让网络更关注"独特"的特征,而不是一堆通道一起瞎喊。

这就是"局部响应归一化"------"局部"指附近的通道,"归一化"就是重新调整大小。

6. 总结

相关推荐
GG向前冲2 小时前
【深度学习】利用GPU跑Pytorch框架深度学习配置全流程
人工智能·pytorch·深度学习
SmartBrain2 小时前
AI技术进阶之路(系列之一):从函数到深度学习
人工智能·语言模型·架构·cnn
古城小栈2 小时前
AI直连Windows:Windows MCP开源,开启无视觉操控新时代
人工智能·windows
m0_462605222 小时前
G1 - 生成对抗网络(GAN)
人工智能·神经网络·生成对抗网络
三万棵雪松2 小时前
【AI小智后端部分(二)】
人工智能·ai小智·opus编码
愚公搬代码2 小时前
【愚公系列】《扣子开发 AI Agent 智能体应用》031-实战案例:多 Agent 模式开发旅游助手
人工智能·旅游
Elastic 中国社区官方博客2 小时前
Jina 模型的介绍,它们的功能,以及在 Elasticsearch 中的使用
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·jina
大得3692 小时前
gpt-oss:20b大模型知识库,ai大模型
人工智能·python·gpt
2401_841495642 小时前
【机器学习】生成对抗网络(GAN)
人工智能·python·深度学习·神经网络·算法·机器学习·生成对抗网络