通俗易懂的卷积神经网络教程-第三讲

通俗易懂的卷积神经网络教程-第三讲

我们复习一下上一节的内容,我们把一张28*28*1图片矩阵通过2次卷积,两次池化过程给它变成了4*4*12的矩阵。

 

之后呢,我们就要直接用BP神经网络进行全连接。用什么输入变量进行全连接呢?首先我们把这124*4的矩阵的其中第一个(PP1)给展开为一条,一共4*4=16个变量:

1

2

...

16

 

接着我们把第二个、第三个...一直到第12个矩阵(PP2~PP12)全部给同理展开成为一条,然后我们把所有的行变量合并成一个矩阵:

PP1

1

2

...

16

PP2

1

2

...

16

...

...

...

...

...

PP12

1

2

...

16

这样我们就得到了一个12*16=192的矩阵,接下来我们把第二行拼接到第一行末尾,第三行拼接到第二行末尾,以此类推,第12行拼接到71行末尾得到一个1*192的数组:

1

2

...

192

这样我们放入到BP全连接的输入变量就搞定了,那么怎么进行全连接呢?

(1)根据BP网络的内容我们知道,我们需要输出的结果是和标签变量一样的东西,标签变量是啥来着?我们复习一下:

如果是数字图片,标签中一共因变量Y共有十个值:如果图片中的数字是0,那么第一个格子中就是1,其余的就是0,可以写成:

1

0

0

0

0

0

0

0

0

0

是其他数字的话这张图最后的形式就是:

标签

Y1

Y2

Y3

Y4

Y5

Y6

Y7

Y8

Y9

Y10

其中Y1~Y100或者1的数字,如果图片中的数字是X,那么第X+1的位置就是1,其余位置就是0

(2)我们输出的结果是和标签一样,那么输出的东西就是10个因变量Y,我们一共有输入变量192个,而输出变量是10个,如果把这些小球画出来就是这样的:


(3)这些小球用线连接了起来,那么线一共多少个呢,一个黄色小球对应10个橙色,那么192个黄色小球对应了10*192=1920个线条。有1920个线条就有1920个权值。于是我们生成1920个随机数,作为权值w,我们把第一个输入变量小球对应第一个输出变量小球的权值叫做w1,1,以此类推,把第i个输入变量小球对应第j个输出变量小球的权值叫做wi,j

(4)我们有权值,还需要一个参数叫做偏置量b,这个需要多少个?输出变量有多少个,就有多少个b,我们这里面有10个,那么就随机生成10个偏置量。我们把第i个输出变量小球对应的偏置量叫做bi

(5)我们生成权值和偏置量之后,我们用第一个黄色的小球的值与w1,1相乘,然后用第二个小球与w2,1相乘,以此类推第192个小球与w192,1相乘,我们得到了192个值,然后我们把这些值相加,之后再加一个b1,我们就得出了Y1值,也就是第一个橙色输出变量小球的值。

(6)我们用第1个黄色的小球的值与w1,2相乘,然后用第二个小球与w2,2相乘,以此类推第192个小球与w192,2相乘,我们得到了192个值,然后我们把这些值相加,之后再加一个b2,我们就得出了Y2值,也就是第一个橙色输出变量小球的值。

(7)同理求出Y3~Y10。这样我们就得出了10个橙色小球,也就是输出变量值。

(8)但是这样还没有完事儿,我们不能够光输出这样的值,我们应该给Y1~Y10扣上一个sigmoid函数,给它搞到0~1之间的一个数。这个函数这么写:

这两个公式就可以把Yj全部都给算出来,算出来之后,我们就得到了一个1*10的数组:

y1

y2

...

Y10

比如这个数组的值是:

0.00

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0.00

我们得到数组之后,我们要做的是什么呢?计算一个目标函数,这个目标函数。这个目标函数应该如何计算我接下来再说。

为什么接下来再说,你们想想,我们上面计算了只是一张28*28的图片,而我们一共输入了6W张图片啊,我们是不是应该也按照上面,也就是从第一节开始到现在的方法把其它的图片都导入进去求Y值呀。但是其它图片太多了,共59999个,我们导入不了怎么办?

于是我们引入另外一个机制,叫做:数据块大小batchsize。我们根据batchsize的值,仅仅导入两位数的图片就好啦。比如我们设定batchsize50,我们6W张图片的话,就用60000/50=1200组,我们分成1200组分别导入,也就是进行1200次卷积计算,每一组一共导入50张图片。

我们假定先进行第一组训练,我们随机选择50张图片,把其图片以及标签导入进入,然后通过上面的算法把输出的十个变量Y1~Y10都算出来,一共算了50组这样的数据,然后我们把这些Y1~Y10与它们应该一一对应的标签进行相减,然后平方后,相加,比如第一张图的输出值是:

0.00

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0.00

它的标签是:

1

0

0

0

0

0

0

0

0

0

那么我们把它们的对应位置相减:

输出

0.00

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0.00

标签

1

0

0

0

0

0

0

0

0

0

相减

-1

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0

相减之后,我们再把相减的值给平方了:

相减

-1

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0

平方

1

0.0001

0.0001

0.0016

0.0016

0.0025

0.0001

0.0001

0.0001

0

之后,我们再把平方后的数据加和为1.0062

这样我们第一张图就算好了,同理我们算第二、第三。。。一直到第50张图,我们会得到50个结果,我们把这50个结果加和,然后除以50,得到了一个平均值,这个值用术语就叫做MSE平均方差。

我们把第一组batchsize50个数据求完了,这样,第一次正向传播就结束了。我们今天就讲到这里,下节课再见!

 

下节课我们讲解反向传播。

 

————————————————

如果对我的课程感兴趣的话,欢迎关注小木希望学园-微信公众号: 

mutianwei521

也可以扫描二维码哦!

<think>好的,用户的问题是想了解卷积神经网络(CNN)和传统神经网络(比如全连接网络)之间的区别,并希望用简单的例子来说明。我需要用通俗易懂的中文来解释,同时符合系统级指令中的格式要求,比如行内数学表达式用$...$,独立公式用$$...$$,还要生成相关问题,并在回答中引用给定的参考资料。 首先,我需要回顾一下用户提供的引用内容,看看哪些部分可以用来支持回答。引用[1]提到CNN可以识别场景和物体标签,引用[2]的是传统神经网络在手写识别中的应用,引用[3]和[4]解释了CNN中的卷积操作,包括滤波器和内积计算。这些都可以作为素材。 接下来,我应该从几个方面来比较CNN和传统神经网络: 1. **连接方式**:传统神经网络是全连接的,每个神经元连接前一层的所有神经元,而CNN使用局部连接(卷积核),减少参数数量。 2. **参数共享**:CNN的卷积核在整张图像上共享参数,进一步减少参数,并捕捉空间特征。 3. **层次结构**:CNN通常有卷积层、池化层等,专门处理图像数据,保留空间信息;传统网络可能更扁平,处理向量化输入。 需要用例子来说明。比如图像识别,传统神经网络需要将图像展平成一维向量,丢失空间信息,参数过多。而CNN通过卷积操作,保持二维结构,提取局部特征。引用[4]中的例子,比如计算内积得到-8的结果,可以具体说明卷积过程。 还要注意使用用户提供的例子,比如引用[2]中的手写识别,说明传统神经网络的处理方式,而引用[1]和[4]中的CNN应用场景。 然后,确保数学表达式正确,比如卷积操作中的计算,用$...$包裹,例如输入矩阵和滤波器相乘相加的过程。可能需要写一个独立公式来展示全连接层的参数数量,比如输入是28x28图像,传统网络输入层有784个节点,假设隐藏层有1000个节点,参数就是784*1000,用$$...$$格式。 生成的相关问题需要围绕用户可能感兴趣的方向,比如应用场景、具体计算步骤、优缺点比较等,确保问题自然且相关。 最后,检查引用标识是否正确添加,比如在提到参数共享时引用[4],在提到手写识别时引用[2],在提到卷积计算时引用[3]和[4]。 现在,组织这些内容,确保结构清晰,分点说明区别,每个点下用例子和引用来支持,最后生成相关问题。</think>### 卷积神经网络(CNN) vs 传统神经网络(NN) #### 1. **连接方式与参数量的区别** - **传统神经网络**:每个神经元与前一层的所有神经元全连接。 例如手写数字识别中,输入是$28 \times 28=784$像素的图像,假设隐藏层有1000个神经元,仅这一层就有$784 \times 1000=784,000$个参数[^2]。 $$参数量 = 输入维度 \times 输出维度$$ - **卷积神经网络**:通过局部连接(滤波器)减少参数量。例如一个$3 \times 3$的滤波器只需9个参数,且滤波器在整张图像上共享参数[^4]。 $$参数量 = 滤波器尺寸 \times 通道数$$ **例子**: 输入为猫的图片($100 \times 100$像素),传统NN需要将图片展平为10,000个输入节点,而CNN用$3 \times 3$滤波器仅需9个参数提取边缘特征[^1]。 --- #### 2. **特征提取方式** - **传统神经网络**:直接将原始数据(如展平的像素)输入网络,依赖全连接层学习全局模式,但容易忽略空间信息。 例如识别数字“8”时,可能无法区分像素分散的情况[^2]。 - **卷积神经网络**:通过卷积操作捕捉局部特征(如边缘、纹理)。 例如滤波器计算内积: ```text 输入窗口:[[0,4,0], [1,0,1], [2,1,0]] 滤波器:[[1,0,-1], [1,0,-1], [1,0,-1]] 输出值 = (0×1)+(4×0)+(0×-1)+...+(0×-1) = -8 [^4] ``` --- #### 3. **层次结构与空间信息保留** - **传统神经网络**:层级结构简单,输入数据被展平为一维向量,丢失空间关系。 例如识别“桥梁”时,无法利用像素间的相对位置[^1]。 - **卷积神经网络**:通过卷积层、池化层逐步提取高阶特征(如形状→物体部件→整体),同时保留空间信息。 例如第一层检测边缘,第二层组合成车轮,第三层识别完整汽车[^3]。 --- ### 总结对比 | **特性** | 传统神经网络 | 卷积神经网络 | |------------------|------------------------------|----------------------------------| | 输入处理 | 展平为一维向量 | 保留二维/三维结构 | | 参数量 | 巨大(全连接) | 较小(局部连接 + 参数共享) | | 适用场景 | 简单分类(如手写数字) | 图像、视频、空间数据 | | 特征提取 | 依赖人工特征工程 | 自动学习局部到全局特征[^4] | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值