目录

一、什么是深度学习

二、神经网络的数学基础

三、神经网络入门

四、深度学习用于计算机视觉

五、学习书籍


 

一、什么是深度学习

1、人工智能、机器学习、深度学习的关系

     “深度”是指一系列连续的表示层。数据模型中包含多少层,称为模型的深度。这些分层几乎总是通过神经网络的模型来学习得到的。

     深度网络可以看作下图的多级信息蒸馏操作:信息穿过连续的过滤器,其纯度越来越高,对识别任务的帮助越来越大。

2、深度学习核心思想:卷积神经网络和反向传播 。

     权重(每层的参数):学习是指为神经网络的所有层找到一组权重值,使得该网络能够将每个示例输入与其目标正确地一一对应。

     损失函数(categorical_crossentropy,目标函数):输入的是网络预测值与真实目标值,然后计算一个距离值,衡量该网络在这个示例上的效果好坏。

     反向传播(优化器):深度学习的核心算法。利用距离值作为反馈信号来对权重值进行微调,以降低当前示例的损失值。

3、从机器学习到深度学习

     机器学习

     概率建模朴素贝叶斯算法(分类器);logistic回归(分类算法);

     核方法(一组分类算法):SVM(支持向量机,通过将两种不同类别的数据点之间找到良好的决策边界,以该边界将训练数据划分为两个空间/类别,来解决分类问题。                  步骤2步:先将数据映射到一个新的高维表示,再间隔最大化(尽量让超平面/或线与每个类别最近的数据点之间的距离最大化)。               核函数:在新空间中计算点对之间的距离(SVM一般不计算点的坐标)。             核函数是人为选取的,SVM中只有分割超平面是学习得到的。             缺点:SVM是比较浅层的方法,很难扩展到大型数据集,在图像分类等感知问题上效果也不好。)

     决策树随机森林算法梯度提升机

     但是,以上全是机器学习时代的辣鸡(小声bb),直到深度学习时代的到来,深度卷积神经网络的出现,渐渐取而代之。

     深度学习优点特征工程自动化!!!(以前的浅层学习是依次连续学习(贪婪学习),收益会随着层数的增加而迅速降低,但是深度学习可以在同一时间共同学习所有表示层,且主动调节适应,无需人为干预)。

     在kaggle竞赛,梯度提升机用于处理结构化数据的问题(XGBoost库),深度学习则用于图像分类等感知问题(Keras库)。

二、神经网络的数学基础

张量张量运算微分梯度下降

:分类问题中的某个类别;     样本:数据点;      标签:某个样本对应的类

(以下知识点对应有代码解释,详情见书)

1、神经网络

     加载数据库:     训练集:进行学习;     测试集:进行测试

     网络架构:     :(神经网络的核心)一种数据处理模块/过滤器。     全连接层softmax层

     训练网络:     编译损失函数优化器在训练和测试过程中需要监控的指标。     步骤:对数据进行预处理,将其变换成网络要求的形状,并将所有值缩放到[0,1]区间。

2、神经网络的数据表示(张量)

     张量:存储数据(数字)的多维数组;是矩阵向任意维度()的扩张。     标量:仅包含一个数字的张量。     :张量的个数(nD张量对应n个轴)。     向量(1D张量)、矩阵(2D张量)、多个矩阵组成的新的数组(3D张量)、多个3D张量组成的新的数组(4D张量)、以此类推。     如:6000张照片,28x28像素:张量形状为(6000,28,28),3D张量有3个轴。     张量切片:选择的张量里的特定元素(一定范围内的)。

     向量数据全连接层(2D 张量)来处理,形状为 (samples, features)。
     时间序列数据或序列数据循环层(3D 张量)来处理,形状为 (samples, timesteps, features)。一般用RNN。
     图像: 4D 张量,TensorFlow形状为 (samples, height, width, channels) 或Theano形状为 (samples, channels,height, width)。channels:彩色图为3,灰度图为1。一般用CNN。
     视频: 5D 张量,可以理解为很多帧(frames)的彩色图像,形状为 (samples, frames, height, width, channels) 或 (samples,frames, channels, height, width)。

3、张量运算:(类似向量、矩阵运算)

     逐元素运算加法运算;     relu运算(修正线性单元,梯度恒为一,后期学习效率高)    sigmod运算(后期梯度接近0)

     广播

     张量点积

     张量变形:改变张量的行和列,得到想要的形状,但是元素总数不变。     转置

4、每个神经层都会对数据进行变换(张量运算),方法为:

output = relu(dot(w, input) + b)
#w和b都是张量,也是该层的权重,分别对应kernel和bias属性

     在根据反馈信号调整权重的训练循环中,最好用可微来计算相对于网络系数的梯度,然后向梯度的反方向改变系数,从而降低损失(使距离值最小)。

     计算损失函数最小值(参考类似《最优化方法》):随机梯度下降(SGD)

     训练循环(迭代计算):fit()函数

三、神经网络入门

1、神经网络刨析

     层兼容性:每一层只能接受特定形状的输入张量,并返回特定形状的输出张量。(可以理解为上下层的接口得一致)

     层构成的网络结构线性堆叠(一层对一层)、双分支网络、分头网络、Inception模块

     损失函数选用:二分类问题:二元交叉熵损失函数;   多分类问题:分类交叉熵损失函数;   回归问题:均方误差损失函数;  序列学习问题:联结主义时序分类损失函数。

2、Keras库TensorFlow开发平台、Jupyter云端笔记本、英伟达显卡NVIDIA GPU

四、深度学习用于计算机视觉

用于图像分类的卷积神经网络包含两部分:一系列池化层和卷积层、一个密集连接分类器

1、边界效应、     填充(由于边界效应,边界的点无法进行卷积核运算,因为当卷积核滑动到边界点上时,总有一边是缺失的。所以在计算中,会用填充来暂时补充缺失的地方)、     步幅(卷积核滑动到的长幅,默认为1)

2、特征图下采样(特征图的尺寸会减半):

     使用下采样的原因,一是减少需要处理的特征图的元素个数,二是通过让连续卷积层的观察窗口越来越大(即窗口覆盖原始输入的比例越来越大),从而引入空间过滤器的层级结构.

     最大池化(max-pooling)运算(从输入特征图中提取窗口,并输出每个通道的最大值。一般采用2x2的窗口和步幅2,目的是将特征图下采样二倍);     步进卷积:一般不采用这种方式(卷积使用3x3窗口和步幅1);     平均池化:取平均值而不是最大值。     总体来说,最大池化的效果更好,观察不同特征的最大值能够给出更多的信息。

3、如何从头开始训练一个卷积神经网络

     制备/下载原始数据集:训练集、验证集、测试集

     构建网络:选用多少层

     数据预处理:读取图像、将JPEG图解码为RGB像素网格、将像素网格转换为浮点数张量、将像素值(0~255)缩放到[0,1]区间内。     (Keras自带ImageDataFenerator类,可自动处理)

     过拟合(原因是学习样本太少,导致无法训练出能够泛化到新数据的模型,一般在样本量较少时)解决方法:数据增强(利用随即变换(旋转、剪切、缩放等)来生成可信图像,增加样本,提高精度)

4、预训练网络

     是一种保存好的网络,已在大型数据集上训练好。     模型(神经网络架构):VGG16ResNetInceptionInception-ResNetXception等。

     使用预训练网络的两种方法特征提取微调模型

     特征提取:步骤:取出之前训练好的网络的卷积基(池化层和卷积层),在上面运行新数据,然后在输出上面训练一个新的分类器。     卷积层提取的表示的通用性(以及可复用性)取决于该层在模型中的深度。(模型中更靠近底部的层提取的是局部的、高度通用的特征图(比如视觉边缘、颜色和纹理),而更靠近顶部的层提取的是更加抽象的概念(比如“猫耳朵”或“狗眼睛”))。

     微调模型:步骤:在已经训练好的基网络上太你家自定义网格,冻结基网络,训练所添加的部分,解冻基网络的一些层,联合训练解冻的这些层和添加的部分。

5、卷积神经网络的可视化

     三种可视化方法:可视化卷积神经网络的中间激活/输出,可视化卷积神经网络的过滤器,可视化图像中类激活的热力图

五、学习书籍

 《Python深度学习》     弗朗索瓦·肖莱      中国工信出版集团,人民邮电出版社

六、吴恩达——深度学习 

 输入特征向量的维度:n=像素x像素x3(通道)

训练集:{(输入x1,输出y1),(x2,y2),······,(xm,ym)}

Logistic:二元分类问题(输出结果为0或者1)

回归函数

损失函数

成本函数

激活函数:二元分类(0or1):σ函数,     其它大多数情况:Relu函数or带泄露的Relu函数,     还有tanh函数

恒等激活函数:直接取值(适用于输出为一个实数),但是一般不用这种方法,失去了神经网络的灵魂。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐