美文网首页
数据挖掘干货总结(十)-- 神经网络和深度学习

数据挖掘干货总结(十)-- 神经网络和深度学习

作者: ShaunXi | 来源:发表于2022-04-28 14:07 被阅读0次

    本文共计2584字,预计阅读时长二十分钟


    神经网络与深度学习

    前言

    1.神经元的构成

    2.树突神经元接收信号的部位,多个

    3.轴突神经元输出信号的部位,一个,但是在末端可以分叉,即神经末梢

    4.突触神经末梢与其他神经元的树突接触的区域(当然也可以与胞体直接接触)

    5.神经网络是指一种结构,指类似于神经元之间形成的一种网络状的结构。下图即为人工神经网络(Artificial Neural Networks,简写为ANNs)

    6.人工智能机器学习神经网络深度学习之间的关系

    – 神经网络和深度学习都属于机器学习的一种

    – 深度学习是神经网络的一大分支

    – 深度学习的基本结构是深度神经网络

    7.深度学习能否取代传统机器学习

    • 有的观点认为:深度学习会导致其他机器学习算法濒临灭绝,因为其有着非常卓越的预测能力,尤其大规模数据集上。

    • 有的观点认为:传统机器学习算法不会被取代,深度学习容易把简单问题复杂化,深度学习适合不可知域,若有领域知识的话,传统算法表现更好。

    下面进入正文内容    》》》》》》》


    什么是神经网络

    1.最简单的神经网络——线性感知机

    线性感知机的原理是根据输入的一维或多维信号p,预设w和b,经过处理后(S = p1*w1+p2*w2+...+pn*wn+1*b)得到一个输出值,再由输出值与实际值计算得到误差,对w和b进行更新,直到所有的样本都能被输出正确。但是感知机仅在线性可分的情况下有效,无法处理非线性问题。

    2.遇到了非线性问题

    对于非线性问题,之前SVM算法里解决办法是引入了一个新的概念:核函数。它可以将样本从原始空间映射到一个更高维的特质空间中,使得样本在这个新的高维空间中可以被线性划分为两类,即在空间内线性划分。(文末有SVM的传送门)

    而另一种解决方法便是采用多个感知机,构成神经网络(所以传统神经网络也被称为多层感知机)。

    3.神经网络基于感知机的扩展

    1)加入了隐藏层,隐藏层可以有多层,增强了模型的表达能力,如下图实例

    2)输出层的神经元也可以不止一个输出,可以有多个输出,这样模型可以灵活的应用于分类回归,以及其他的机器学习领域比如降维和聚类等。多个神经元输出的输出层对应的一个实例如下图,输出层现在有4个神经元了。

    3)对激活函数做扩展,感知机的激活函数是sign(z),虽然简单但是处理能力有限,因此神经网络中一般使用的其他的激活函数,比如我们在逻辑回归里面使用过的Sigmoid函数。

    如何训练神经网络

    1.寻找特征

    人类学习新事物的过程,是对一个物体总结出几个特征,再与以往的认知进行匹配,进一步进行识别或判断。人工神经网络也是类似,一般是综合一些细粒度的基础特征,最终得到几个可用的结构性特征。例如,一个个的像素点对于模型训练来说,意义不大,只有将粒度放大到一定程度,比如轮胎、车把等特征,才有利于模型的训练。

    2.确定神经网络的结构

    上图是不同结构的神经网络(多层感知机)可以解决的问题,一般来说,双隐层神经网络能够解决任意复杂的分类问题。

    3.确定(隐层)的节点数量

    以一个三层的神经网络为例,一般有几个经验:

    1)隐层节点数量一定要小于N-1(N为样本数)

    2)训练样本数应当是连接权(输入到第一隐层的权值数目+第一隐层到第二隐层的权值数目+...第N隐层到输出层的权值数目,不就是边的数量么)的2-10倍(也有讲5-10倍的),另外,最好将样本进行分组,对模型训练多次,也比一次性全部送入训练强很多。

    3)节点数量尽可能少,简单的网络泛化能力往往更强

    4)确定隐层节点的下限和上限,依次遍历,找到收敛速度较快,且性能较高的节点数

    4.训练神经网络

    • BP算法

    Back Propagation,也称为Error Back Propagation(误差反向传播法),实现步骤见下图(多看几遍就清晰了):

    信号正向传播(FP):样本由输入层传入,经过各个隐层逐层处理后,传向输出层,若输出层的实际输出和期望的输出不符,则转入误差的反向传播阶段。

    误差反向传播(BP):将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差型号即为修正各个单元权值的依据。

    BP算法的缺点:

    1)5层以内的神经网络,可以选择用BP算法训练,否则效果不理想,因为深层结构涉及多个非线性处理单元层,属于非凸目标函数,普遍存在局部最小,使得训练困难

    2)梯度越来越稀疏:从顶向下,误差矫正信号越来越小

    3)只能用带标签的数据进行训练,而大部分数据是没有标签的,但是我们大脑是可以从没有标签的数据中学习

    引入深度学习

    2006年,深度神经网络(DNN)深度学习(deep learning)概念被提出来,神经网络又开始焕发一轮新的生命。事实上,Hinton研究组提出的这个深度网络从结构上讲,与传统的多层感知机没有什么不同,并且在做有监督学习时算法也是一样的。唯一的不同是这个网络在做有监督学习前要先做非监督学习,然后将非监督学习学到的权值当作有监督学习的初值进行训练。

    1.为了解决非监督学习的过程自动编码器

    ①自动编码器(Auto Encoder

    • 无标签,用非监督学习方法学习特征

    • 给定一个神经网络,假定输入输出是相同的,然后训练调整其参数,得到每一层的权重

    • 通过编码器产生特征,然后训练下一层,逐层下去

    • 一旦监督训练完成,该网络就可用来做分类

    • 神经网络顶层可以作为一个线性分类器,我们    可以用一个更好性能的分类器替代它

    ②稀疏自动编码器(Sparse Auto Encoder

    • 目的:限制每次得到的表code尽量稀疏,因为稀疏的表达往往比其他表达要有效

    • 做法:在AutoEncoder基础上加了L1正则

    ③降噪自动编码器(Denoising Auto Encoder

    • 训练数据中加入噪声,所以自动编码器会自动学习如何去除噪声,从而获得没有被噪声污染过的输入,泛化能力更好

    2.为了解决DNN的全连接卷积神经网络CNN

    卷积层(Convolution)

    当DNN在处理图片的时候,如果继续沿用全连接的话,数据量会异常的大。例如

    对于一个1000 * 1000像素点的图像,用1000 * 1000个神经元去记录数据,采用全连接的话,1000 * 1000 * 1000 * 1000 = 10^12个连接,即要训练10^12个参数

    如果采用局部感受野,令一个神经元记录10*10的区域,训练的参数可以降到10^8个。

    进一步采用权值共享,让所有神经元共享一套权重值(滤波器Filters),用这个滤波器在原图上滑动扫描后便会得到一个feature map(图像的一种特征),根据自编码模型,只有一个特征对模型来说,过于简单了,学不出什么规律,因此换用不同的滤波器,便可以得到不同的 feature map(特征),如选用100个滤波器,得到100个feature map,每个map是10*10,最终的参数为100*10*10 = 10^4

           由滤波器得到feature map的动态图如下:

    因为在用滤波器一个步长一个步长往后面扫描的时候,涉及到了一个时序的问题,即卷积的过程

    因此滤波器在扫描的之前,要先翻转180°,这个时候我们称这个滤波器为卷积核。翻转180°的具体论证过程见链接:

    https://blog.csdn.net/zy3381/article/details/44409535

    池化层(Pooling)

    作用是在不变性的情况下减少参数,例如平移、旋转、缩放等

    典型结构

    CNN一般采用卷积层和池化层交替设置,即一层卷积接一层池化层,池化层后接一层卷积层,最后几层可以采用全连接或高斯连接

    训练过程

    卷积层:

    – Map个数取决于卷积核个数,常用的6或者12

    – 第j个map的输出计算:上一层所有map跟自己对应的卷积核做卷积然后求和,再加上偏置,求sigmoid函数

     

    采样层:

    – 对上一层map的相邻小区域进行聚合统计(最值或者均值)

    (任何疑问建议,欢迎留言评论~)

    相关文章

      网友评论

          本文标题:数据挖掘干货总结(十)-- 神经网络和深度学习

          本文链接:https://www.haomeiwen.com/subject/ticdyrtx.html