y = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . . + b 1 y=w_1x_1+w_2x_2+w_3x_3+....+b_1 y=w1x1+w2x2+w3x3+....+b1
y = w 1 x 1 2 + w 2 x 2 2 + w 3 x 3 2 + . . . . + b 2 y=w_1x_1^2+w_2x_2^2+w_3x_3^2+....+b_2 y=w1x12+w2x22+w3x32+....+b2
数据需要预处理,如:feature scaling(特征归一化)、PCA(主成分分析)……
(1)深度学习中的数据预处理方法
(2)机器学习(深度学习)中数据问题的处理方法
梯度下降的局限(Limitations of Gradient Decedent)(真实应用中,可以忽略):
怎样判断是bias大还是variance大?
如果模型函数不能拟合数据(欠拟合),则是bias大,这里的bias不要简单的理解为模型函数中加的偏置常数:b。这里的bias可以理解为模型最优值。
如果模型在训练数据上可以得到小的错误,但在测试集上有大的错误(过拟合),说明variance大。在机器学习算法中,我们常常将原始数据集分为三部分:training data、validation data,testing data。这个validation data是什么?它其实就是用来避免过拟合的,在训练过程中,我们通常用它来确定一些超参数(比如根据validation data上的accuracy来确定early stopping的epoch大小、根据validation data确定learning rate等等)。那为啥不直接在testing data上做这些呢?因为如果在testing data做这些,那么随着训练的进行,我们的网络实际上就是在一点一点地overfitting我们的testing data,导致最后得到的testing accuracy没有任何参考意义。因此,training data的作用是计算梯度更新权重,validation data如上所述,最终我们在testing data进行准确率的判断,testing data也就成为了一个网络能不能泛化的判断标准。
更多的数据:自然数据、人为扩展数据(旋转角度、弹性扭曲、语音识别中可以增加不同的背景噪声等)
正则化也叫规范化(Regularization)、权重衰减(weight decay)、L2规范化:有可能使bias增大:
点我了解规范化防止过拟合
提前停止训练(early stopping)
弃权(dropout):随机的、临时的删除隐藏层中的神经元、输入数据。
Deep lerning无非是多了几个隐藏层。但一个项目中,具体该用几层?每层又有几个神经元?超参数怎么调?没有具体的答案,只能在实践中去尝试,去总结经验。
反向传播(Backpropagation):链式法则(chain rule),由后往前逐步向前求导,如下图所示,找到损失函数与权值( w w w)和偏置( b b b)的关系。然后进行参数调整(如公式所示),使代价函数逐步降低。
w 2 = w 1 − η ∂ y ∂ w 1 w_2=w_1-etafrac{partial y}{partial w_1} w2=w1−η∂w1∂y
b 1 = b 1 − η ∂ y ∂ b 1 b_1=b_1-etafrac{partial y}{partial b_1} b1=b1−η∂b1∂y
其中 η eta η 是学习率,是一个大于0的正数。
异常检测中高的正确率,并不能代表系统的好坏。如下图所示,当门限值 λ = 0.2 lambda=0.2 λ=0.2 时,五张异常图片全部判断 错误,但它的正确率依然在 95% 以上。我们可以通过调整门限值 λ lambda λ 的大小,来增加检测出异常的可能性,但与 此时虚警(错判)的概率也增加了。但是在军事领域、医疗领域等,虚警的代价往往要高于漏检的代价。针对 此类检测好坏判断指标有很多,ROC是其中一种。
上图是一个典型的卷积神经网络,主要由卷积层、全连接层构成。卷积层主要包括特征提取、池化,下面也将进行介绍。我们知道计算机对颜色没有任何感知能力,任何图片在计算机看来都是一些数字,如下图所示。各种彩色的图片也是有RGB三种颜色不同的比例调和而成。他们本质上都是些数值矩阵(map data)。灰度图片只有一个map data。而彩色图片相对麻烦些,需要分解成R、G、B三个通道的map data,进行特征提取。
特征提取与池化本质上来说都是对图片数据进行压缩。特征提取需要一个叫做卷积核(filter)的矩阵,如下图黄色部分,它也是一个数值矩阵。filter中的数值与map data中对应位置的数值相乘再相加,便形成右边粉红色部分的一个数值。filter根据步长,移动位置(图中步长stride=1,所以每次移动一列,步长不一样形成的新的矩阵的大小有所不同),形成了一个新的矩阵(feature map),这就是特征提取卷积的过程。有时,为了提取图片边缘部分的信息,在原始图片外围部分补充一些矩阵(padding,如第二个蓝色动图),这些补充部分填充数值0即可。为了更好的对图片特征提取,一张图片会设置多张不同filters,每一个filter卷积之后,都会形成一张新的feature map。至于filter中的数值,我们只要给它赋初值,由反向传播、梯度下降法,filter中的数值会自我调整与更新,使损失函数降低。而彩色图片每一次进行特征提取,会同时考虑R、G、B三通道,如果第一次特征提取卷积有25个filters,将会形成25个新的feature map,然后对它们池化。假如第二次卷积也有25个filters,那么形成的feature map依然是25,不是25*25。因为每一个filter会同时考虑宽度、高度、深度,第一次特征提取卷积,每一个filter会同时提取3通道(R、G、B即深度)的特征,形成25个feature map。而第二次特征提取卷积,每一个filter会同时提取25个(第一次特征提取卷积之后的结果)深度,形成新的25个feature map。
而池化分为最大池化和平均池化,而最大池化在实际运用中最为常见。池化层一般放在特征提取之后,所以池化的对象是特征提取卷积之后的数据。如下图所示,一个4*4的矩阵被分为四个2*2的小矩阵。从每一个小矩阵中提取最大值,形成新的矩阵,这就是最大池化的过程。而平均池化是提取每一个小矩阵的平均值。池化层也有padding的选项,但跟特征提取卷积一样,在外围补0,然后再池化。分享一个大神制作的基于卷积神经网络的手写数字识别3D建模
全连接层,就是把卷积层提取压缩之后的数据拉平(flatten),如下图所示,然后送入全连接网络。
什么时候用卷积神经网络CNN?
Some patterns are much smaller than the whole image:比整体小的多的部分也含有信息
The same patterns appear in different regions:同样的信息可能出现在不同区域
下面给个列子,用卷积模型区分神奇宝贝
与数码宝贝
两者相似度很高,人类也难以分辨。下面搭建神经网络进行分类。
但是通过深度学习却可以获得极高的准确率,邻人难以置信。通过Explainabl ML观察模型做出判断的依据:
saliency:显著;特征
通过图像可以看出,判断是神奇宝贝和数码宝贝的依据主要根据图形的边缘部分。与宝贝主体没有关系。为什么会这样??
从上图可以看出,并不是真正的区分神奇宝贝与数码宝贝,利用Explainabl ML可以看出是“真分类”,还是“假分类”。
创建神经网络之后,我们需要进行权重和偏置的初始化。之前的方式就是根据独立高斯随机变量来选择权重和偏置,其被归一化为均值为0,标准差1。
上种方式获得了不错的效果。但有没有更好的方式。我们会使用均值为0,方差为 1 n i n frac{1}{sqrt{n_{in}}} nin 1的高斯随机分布初始化这些权重。其中 n i n {n_{in}} nin表示有 n i n {n_{in}} nin个输入权重的神经元。此种方法可以加快网络的训练,有时在准确率性能上有很大的提升。而偏置可以继续使用均值为0,标准差为1的高斯分布进行初始化。
自动编码器(功能有点类似主成分分析PCA)
正向RNN、反向RNN、双向RNN
本文发布于:2024-01-31 11:26:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170667161528183.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |