文章目录
0. 前言
在你刚入门深度学习时,是不是对损失函数 、梯度下降、神经元、卷积、池化,前向传播、反向传播等等概念,感觉模棱两可,似懂非懂。本文主要是从深度学习神经网络中的一些概念开始入手,可能有总结的不对的地方,欢迎批评指正!
参考学习b站视频如下:https://www.bilibili.com/video/BV1K94y1Z7wn?p=1&vd_source=937a8096d469d1dfd67bb84e20237f49
1. 为什么提出深度学习?
首先,讲述一个机器学习算法K近邻算法,这个算法主要是计算两张图片像素点之间的距离,距离总和近的确定为某一类别。采用该算法做分类的缺点:图片背景影响较大,没有考虑图片背景的无效影响因素。而我们更应该关注的是主体,而不是背景。
综上,K近邻算法不适合用来做图像的分类。
对于某些应用而言,深度学习在大数据集上的表现比其他机器学习方法好。
深度学习算法更适合无监督和半监督学习,更适合强特征提取,也更适合于图像识别领域、文本识别领域、语音识别领域等。
2、神经网络基础
(1)线性函数(得分函数)
即从输入—>输出的映射。
Wx+b=y(W为权重矩阵,x为图像像素点,b为偏差矩阵,y为输出结果)。
有几组类别就有几组权重参数。多组权重参数构成了决策边界。
比如需要将数据集分成三类猫、狗、汽车,则就需要三组权重参数。
(2)损失函数
如何衡量分类的结果???
结果的得分值有着明显的差异,所以我们就需要明确知道模型当前的效果,有多好还是有多差。
损失函数=数据损失+正则化惩罚项。
(3)softmax分类器
(4)梯度下降
梯度下降就是找最好的参数,可以使损失函数得出的误差值最小,也就是找在最好的W。
即对损失函数求一阶导数,若导数值为负,就向右优化,若导数值为正,就向左优化,找到一阶导数为0的点,此时的误差为0。
(5)链式法则
梯度是一步一步传的。
(6)反向传播
就是反向逐层的去计算梯度值。
(7)神经网络结构是非线性的
因为神经网络有大量的神经节点,节点中的函数如果用非线性的如 sigmoid 和 ReLU 等等,那么整个神经网络就是非线性的了。
(8)神经元
参数个数对结果的影响,参数越大,可能会出现过拟合的现象。
(9)正则化
主要是由于模型过于复杂,训练数据少,参数变量多。正则化就是保留所有的变量,将一些不重要的特征的权值置为0或权值变小使得特征的参数矩阵变得稀疏,使每一个变量都对预测产生一点影响。
因为越复杂的模型,越是会尝试拟合所有的训练数据,包括一些异常样本,这就容易造成在较小的区间内预测值产生较大的波动,这种大的波动反映了在某些小的区间里导数值很大。而只有较大的参数值才能产生较大的导数,因此复杂的模型,其参数值会比较大。
惩罚力度对结果的影响。针对的是测试集的效果要好,而不是训练集。
(10)激活函数
Sigmod:存在梯度消失的现象。
Relu:小于0的梯度为0,直接剔除,不进行传播,大于0的等于其本身,梯度为1。是当前激活函数的主体。
(11)DROP-OUT层(解决过拟合的问题)
过拟合是神经网络非常头疼的一个大问题!
在每一层,随机选择杀死部分神经元。在每一次训练过程中,随机选择。
3. 卷积神经网络
(1)卷积神经网络与神经网络的区别
神经网络中输入的是一个向量,图像的像素点;而卷积神经网络输入的是一个三维的图像,不会展开所有的像素点成为一个向量。
(2)卷积层做的事情
对一个区域进行特征提取,最终得到一个特征值。
(3)卷积核尺寸
卷积核大小就是在输入矩阵上选择多大的一块尺寸进行特征提取,卷积核越小,提取越细粒度。一般是3*3,步长一般为1。
(4)边界填充
如果不进行padding填充的话,边界上的点被利用的次数少,越往中间上的点利用的次数越多。
(5)卷积核的个数
有几个卷积核就可以得到几个特征图。
(6)卷积结果计算
(7)参数共享
(8)池化层
压缩特征或者是下采样。采用Max Pooling方法。
池化层没有涉及到任何矩阵的计算,只是起一个筛选、压缩、过滤的作用。
4. 整体的网络结构
(1)网络结构介绍
卷积、激活、卷积、激活、池化…
几次卷积之后,形成一个特征比较大的矩阵,就进行一次池化,压缩矩阵。
(2)经典网络—Vgg
特点1:卷积核都是3*3的;
特点2:可能会随着卷积的层次深度越多,会出现倒退的现象。
(3)Resnet残差网络
为了解决上述Vgg的缺点而提出来的。
(4)感受野