卷积神经网络基本实现原理

卷积神经网络工作原理(基本的四步)
以下截图转载自:
https://www.youtube.com/watch?v=FmpDIaiMIeA&index=3&list=PLVZqlMpoM6kbaeySxhdtgQPFEC5nV7Faa
如有侵权,请告知,删除就是。
一 :识别
前提:由于图像以矩阵(2维)储存,所以我们要输入一个矩阵(图像)经过CNN后再得到输出。
在这里插入图片描述
(1)卷积操作(特征提取):
解释:为什么要进行卷积操作?难道原图不是最好的特征图像吗?
人可以看出下面四幅图是X,但机器呢?
在这里插入图片描述用训练(最后解释训练)得到的一个卷积核(二维或一维的小矩阵,也就是X的一个特征,就如X有经过训练后得到的三个基本特征分别是/,,x,)再矩阵(图像)上逐格进行运算,运算后变得到一个新的二维矩阵,这个新的矩阵就是原图的特征图像。
(先说一下怎么进行运算)
->
在这里插入图片描述
(怎么逐步)
在这里插入图片描述
但我们知道卷积核只是(举例)X的一个小特征,一个X就可以包涵多个小特征,
在这里插入图片描述
一个人脸有成千上万个特征,我们要拿成千上万个卷积核(小特征)去提取,运算量非常大,这就引出了我们下一步操作,即是RUEL。

(2)RELU(激活函数):
解释:RELU操作即是设定一个阈值,把池化后的到的矩阵上小于阈值的点都变为0,更加便于运算(因为0*x=0),而且阈值以下的点都是特征高度不匹配的,所以变为0并不会使特征图像变化。(下图把小于0的点变为0)
在这里插入图片描述
此时运算量虽然大大减小,但还能通过池化方法进一步缩小。
(3)下采样(池化):把得到的特征图像进行缩小,减少运算量。
(怎样缩小)

在这里插入图片描述
(池化方法有两种分别是最大值提取与平均值提取)
在这里插入图片描述

这三个基本操作已经把特征图像与运算量一步步缩小,那么这三个步骤循环几次运算量岂不是更小(美滋滋),而且此时图像的线性对应,已经逐步转化为非线性对应。就是假如X的一个特征原本假如是/,经过RELE与池化后就算/上多出几个点就会被忽略。

在这里插入图片描述
(4)全连接层
假如X有经过训练后得到的三个基本特征分别是/,,x,我们用这三个不同卷积核对图像进行(卷积-RELU-池化)后得到三个最终的不同的特征图,全连接就是把这三个小矩阵(特征图)变成一个特征向量:就是把多维,多个特征变成一维特征,就叫特征向量
在这里插入图片描述
列如把X的特征x放在第一位,/放在第二位,\放在第三位,三个特征图就变为了一维12行的特征向量了,此时每个特征点都对应以个权重(权重怎么来的稍后解释),例如x特征出现时原图为X的概率为0.9,/出现时X概率为……,这个时候我们把每一个特征点都乘以相应的权重在相加,就能判断出原图是X的概率是多少,如果值非常大那么我们便断定此图就是X。

二:训练一个模型(最终卷积核与权重的获取):
前面我们说到X有三个小特征,那么这三个小特征是怎么得来的呢?
特征向量上每一个特征点所对应的权重又是怎么来的?
先解释一下超参数:例如卷积核的大小(里面的数字是随机生成的,参数只需要定义大小就行),池化方法大小等一系列无法通过学习得到,而需要人为给定的参数的总称叫做超参数。不过这些参数已经有大致的最优范围,这些我们都是可以借鉴先人的,只需要根据情况进行微调就行。
我们给定要训练的图像,即是正确的X(需要大量的不同的X的图像去喂饱它),起初,算法会根据<超参数>自动随机定义卷积核即其对应的权重,池化方法与池化大小等,那么就又回到了识别的第一步,只不过此时的卷积核是不准确的,输出的结果:即是原图为X的概率不会是100%,甚至偏差很大,这时就需要一个损失函数与误差反向传播算法(具体我不理解),误差反向传播算法会把误差原因传递给自定义的卷积核与权重,使其进行修改调整,这时又要引入梯度下降原理(https://blog.csdn.net/crazy_scott/article/details/79780885)
简单的说就是求导,求出损失函数的最小值,即是导数为0的点。
在这里插入图片描述
只不过,X有多个卷积核每个特征点对应的权重,不是普通的二维求导,而是多维求导。通过此过程把损失函数的值,即误差一步步的降到最小值,每一次调整都会进一步的接近比较完美的卷积核与权重,当误差值最小的时候,我们便把此模型叫为训练好的模型。训练好的模型有最完美的卷积核与其对应的权重,训练的过程就叫做机器学习的过程,卷积核并不是人为给定的,而是机器通过自身的学习得到的,这就是机器学习的强大与魅力所在!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习的神经网络模型,用于处理具有网格结构的数据,如图像和音频。它的基本原理包括以下几个方面: 1. 卷积操作:CNN通过应用卷积操作来提取输入数据中的特征。卷积操作是通过将一个滤波器(也称为卷积核)在输入数据上滑动并计算滤波器与输入数据的乘积之和来实现的。这样可以有效地捕捉到输入数据的局部特征。 2. 神经网络结构:CNN通常由多个卷积层、池化层和全连接层组成。卷积层用于提取输入数据的特征,池化层用于减小特征图的尺寸并保留最重要的信息,全连接层用于将提取的特征映射到相应的输出类别。 3. 数据预处理:在训练CNN之前,对输入数据进行预处理是很重要的。常见的预处理操作包括对输入数据进行归一化、缩放和平衡处理,以确保数据的质量和一致性,提高CNN的性能。 4. 优化器:在CNN的训练过程中,需要使用优化器来更新网络的权重和偏置,以降低损失函数的值。常用的优化器包括随机梯度下降(SGD)、动量法(Momentum)、Adagrad、Adam等。 5. 反向传播:CNN通过反向传播算法来更新网络的权重和偏置。反向传播是一种基于梯度下降的方法,通过计算损失函数对网络参数的偏导数,然后根据偏导数的方向来调整网络参数,从而使损失函数的值最小化。 6. 监督训练:CNN是一种有监督学习的方法,需要使用标注好的训练数据来进行训练。训练数据通常由输入数据和对应的标签组成,其中输入数据表示特征,标签表示对应的类别或输出。 总的来说,卷积神经网络通过卷积操作、神经网络结构、数据预处理、优化器和反向传播等基本原理来实现对输入数据的特征提取和分类。通过训练数据来优化网络的参数,使其能够学习输入数据与输出之间的映射关系,从而实现对未知数据的准确预测和分类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值