上一次修改时间:2018-08-20 00:34:22

深度置信网络和卷积神经网络

  1. 受限玻尔兹曼机在推荐系统中的应用

    受限玻尔兹曼机在处理大量数据时,效果比SVD矩阵分解要好;

    电影推荐系统中,受限玻尔兹曼机面临的两个问题:1.怎么在受限玻尔兹曼机表示大量用户。2.怎么处理那些一个评分都没有用户

    解决:1.给每个用户都定制一个受限玻尔兹曼机

  2. 深度置信网络

    image.png

    注:最左边3个RBM(受限玻尔兹曼机),将图像的特征由2000个分三次压缩到30个,然后将RBM中得到权值W直接放入BP神经网络中进行训练,即中间的步骤,上图中最右边是通过训练数据对RBM中得到权值进行微调

    BP神经网络训练时存在梯度消失和梯度爆炸的问题,因此BP网络的层数不能太深(要达到比较好的效果通常只能有4到5层),因此只能提取到比较浅层的特征,要提取深层特征的话,可以像上图那样,先用深度置信网络(DBN)来进行预训练,然后将预训练中得到权值直接放BP网络进行再次训练,部分对比图如下:

    QQ图片20180815011854.png

    image.png

    image.png

  3. 卷积神经网络CNN

    image.png

    注:BP网络处理图示例,如要处理一个100*100(单位为像素)的图片,第一层网络神经元的个数需要100*100个,假设第二层也有100*100个神经元,那么权值就有100*100*100*100,即1亿个;关于权值的确定需要的训练数据,没有一个定性的标准,一般认为训练数据为权值个数的5到30倍最好,因此,要确定1亿个权值,则最少需要5亿数据

    image.png

    卷积神经网络示例:如下图,需要训练的图片为4*4,总16像素,将其分成4块,每块连接一个神经元,即每4个像素连接到一个神经元,所需要的权值只有4个,其它三区域因权值共享,权值与第一个相同,所以总共只需4个,而BP网络则需要64个权值

    image.png

    解决边缘过度不平滑的方法为重采样,采样过程如下图所示;滤波器也叫卷积和,下图中,红色方框里的数据就是黄色方框里的数字乘以卷积和得到的

    image.png------>QQ图片20180815020156.png------>QQ图片20180815020329.png

    image.png

  4. 对于卷积的操作

    image.png

    注:SAME PADDING会采样范围会超出平面,而VALID PADDING不会,因此,SAMME PADDING采样后图片大小和原图一样,VALID PADDING采样后图片大小会比原图要小

    image.png

    注:上图2*3的平面采样示例中,SAM PADDING的方式得到1*2的平面是指,1行两列的一个平面,第一列为2*3的平面中,左边的四个方框,第二列为最右边的两个方框及补充的两个0

  5. 手写体识别网络LeNET-5结构分析

    LeNET-5是一个卷积神经网络,曾经广泛的用于手写数字的识别,它对手写数字识别的准确率可达到99%以上;

    LeNET-5的官网为:http://yann.lecun.com/exdb/lenet/index.html

    以LeNET网络处理一个32*32的手写字母A为例

    image.png

    C3层采样方式为,0-15对应C3层的16个卷积和,0-5对应S2层的6个平面

    image.png

    用于训练径向基神经网络的ASCII表(表中图片为14*7个像素)

    image.png

    注:1)INPUT层为输入层,LeNET对手写图片的要求为,手写体必须在图片的中间,不能在图片的边缘,否则准确率会下降;

    2)C1层为卷积层,对IPNUT层的采样用的是5*5的方式,所以采样次数为28*28(32-5),C1层总共用了6种卷积和,对应生成6个28*28的平面,C1层需要训练的参数为,每个卷积面上有5*5(权值共享),再加一个偏置值,6层总共需要训练的参数为5*5*6+6=156个,C1层的连接数为,每个平面上的每个点都会连接到INPUT层上一个5*5的区域上,因此为每个平面的神经元个数28*28*5*5,另外,每个平面还有一个偏置值,每个平面上偏置值的连接数为28*28,C1层总的连接数为(28*28*5*5 + 28*28) *6 = 122304个;

    3)S2层为值采样层(二次采样层),S2层是将C1层的每个平面分成2*2的区域,总共14*14个,然后将每个区域里的值相加后乘以一个可以训练的参数,另外,再加上一个可以训练的偏置值,最后将结果通一个sigmoid激活函数;S2层上需要训练的参数为每个平面上的一个权值(平面的权值也是共享的)加上一个偏置值,因此为2*6=12个,因S2层上的每个神经元都需要连接C1层上2*2个神经元,再加上一个偏置值,总的连接数为:(14*14*2*2 + 14*14) * 6 = 5880个;

    4)C3层为卷积层,采样方式为如上图,第0个卷积和会对S2层的0,1,2这三个平面进行采样,第1个卷积和会对S2层的1,2,3这三个平面进行采样,依此类推到第6个,即编号为5的卷积和,编号从6-14的卷积和,需要采样4个平面,最后一个卷积和则需要采样所有6个平面,需要训练的参数和连接数如上图所示;

    5)S4层同S2层,也是值采样层,权值和连接数的计算方式同S2;

    6)C5层总共有120个神经元,且每个神经元都和S4层所有的神经元进行全连接,需要训练的参数及连接数如上图所示;

    7)F6层为径向基神经网络,总共有84个神经元,径向基神经网络可以用ASCII表单独训练,也可以训练完成后,继续在大的网络中进行微调,径向基神经网络会将输入进行距离计算,以确定INPUT层输入的结果最大概率是哪个数字;

    8)OUTPUT层,10个神经元,对应数字0-9

    LeNET-5训练完成后预测示例图

    image.png

  6. ImageNet

    image.png

    https://open.163.com/movie/2015/3/Q/R/MAKN9A24M_MAKN9QAQR.html

    ImageNet上图片分类示例

    image.png

    image.png

    image.png

    image.png

    注:上图是2010年到2015年ILSVRC比赛中冠亚军的错误率,比赛中采用的是TOP-5 error,即每张要识别的图片,模型会给出5个概率最高的答案,如果这5个答案里有一个正确,那么该图片就算识别正确

  7. 12年ILSVRC比赛冠军AlexNet网络论文摘要

    深度网络的大小主要受限于当前GPU上可用的内存大小,以及可以接受的训练时间;AlexNet网络用了两块GTX580 3GB的显卡来进行训练,训练一次的周期为5到6天,如果有更多的数据集和更好的GPU来进行计算的话,应该可以获得更好的结果;

    数据集为ImageNet上数据的一个子集,子集里有1000个分类,每个分类下面有1000左右的图片(图片都为高清图片),总共大约有120万个训练图片,5万个验证图片,15万张测试图片;

    图片预处理:首先将图像固定分辨率为256*256,如一个1000*800的图像,会按等比压缩成320*256大小,然后从长度中间裁切256像素,即左边的32像素及右边的32像素裁切掉,只保留中间的256像素;

    神经元的激动函数:

    image.png

    AlexNet使用的激活函数为RELU,该函数在x>0时,梯度等于1,所以不会那样产生学习梯度消失(如sigmoid和双曲正正切函数)和爆炸的问题;

    下图为RELU函数和双曲正切函数的训练误差对比图,实线为RELU,虚线为双曲正切函数:

    image.png

    Local Response Normalization(局部响应归一化),可以通过该方式降低1%左右的误差;

    AlexNet的结构为:

    image.png

    注:第一个卷积层总共有3层,第一层代表RGB中的一个颜色,第二个卷积层Max pooling会在第一个图像大小为224*224的范围内采样,卷积和一个有96个(上下各48个卷积和,对应两块GTX580的显卡),采样面积为11*11*3,采样的步长为4;AlexNet网络里,只有卷积层,取消了值采样层(卷积层是线性的,值采样层也是线性的,线性的加线性的结果还是线性);AlexNet里增加了池化操作,池化说明如下图所示;

    image.png

    注:池化的方式主要有两种,最大值池化和均值池化,最大值池化如上图所示,将4*4的矩阵分成4个2*2的矩阵,然后取每个小矩阵中的最大值来代替整个小矩阵;同理,均值池化是取小矩阵的均值来代替整个小矩阵;池化的主要作用是减少训练的参数,同时也有一定的特征提取的作用

    AlexNet的结构(图表):

    image.png

    注:AlexNet网络除掉输入层,总共有8层,其中1-5为卷积层,6,7,8层为全连接层;norm为局部采采归一化,pool为池化,relu为激活函数,conv为卷积采样,第8层总共有1000个神经元,对应需要分类的1000个分类,softmax可以将输出结果(33,13,1,2,8,9)这样的数字转化成概率,可以比较直观看到输出结果;

    AlexNet每层中的具体操作为:

    image.png

    image.png

    image.png

    QQ图片20180815170309.png

    AlexNet网络中需要训练的参数有6千万个,训练的图片数据为120万张,会产生过拟合的问题;减少过拟合三种方式为扩大数据集,加正则项,dropout,这里采用了扩大数据集和dropout这两种;

    image.png

    image.png

    image.png

    注:扩大数据集是指将1张256*256的图片中,随机裁切出多张224*224的图片进行再次训练,此种方法可以将原有的数据集扩大2048倍,但这种裁切出来的图片本身之间是高度相关的,高度相关的图片之间也会产生过拟合,这里AlexNet经测试采取的方式是每张图片,上下左右四个角及中间位置裁切出5张图片以及其水平翻转的图片,总共10张,即将数据集扩大了10倍,另外,AlexNet还通过改变图片的光照强度及颜色的方式扩大了数据集

    QQ图片20180815172911.png

    注:Dropout是指神经网络训练中,每次随机选取一部分神经元,使其处于不激活的状态,即不参加本次迭代下的训练

    image.png

    梯度下降算法说明:

    image.png

  8. GPU和TPU

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png