计算机系统应用教程网站

网站首页 > 技术文章 正文

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

btikc 2024-10-12 11:31:03 技术文章 2 ℃ 0 评论

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



神经网络与深度学习

前言


1.神经元的构成

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

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

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

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

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

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

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

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

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

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

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



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



什么是神经网络

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

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


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

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

采样层

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


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


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表