的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。增长节点数:增长维度,即增长线性转换能力。增长层数:增长激活函数的次数,即增长非线性转换次数。算法
1.调节步伐:调节学习速率,使每一次的更新“步伐”不一样;2.优化起点:合理初始化权重(weights initialization)、预训练网络(pre-train),使网络得到一个较好的“起始点”,如最右侧的起始点就比最左侧的起始点要好。经常使用方法有:高斯分布初始权重(Gaussian distribution)、均匀分布初始权重(Uniform distribution)、Glorot 初始权重、He初始权、稀疏矩阵初始权重(sparse matrix)。网络
浅层神经网络能够模拟任何函数,但数据量的代价是没法接受的。深层解决了这个问题。相比浅层神经网络,深层神经网络能够用更少的数据量来学到更好的拟合。深层的前提是:空间中的元素能够由迭代发展而来的。ide
L2正则化,Dropout(若规律不是在全部样本中都存在,则dropout会删除这样的规律),每一个epoch以后shuffle训练数据,设置early-stopping。加Batch Normalization(BN首先是把全部的samples的统计分布标准化,下降了batch内不一样样本的差别性,而后又容许batch内的各个samples有各自的统计分布),BN最大的优势为容许网络使用较大的学习速率进行训练,加快网络的训练速度(减小epoch次数),提高效果。函数
若用多个梯度的均值来更新权重的批量梯度降低法能够用相对少的训练次数遍历完整个训练集,其次可使更新的方向更加贴合整个训练集,避免单个噪音样本使网络更新到错误方向。然而也正是由于平均了多个样本的梯度,许多样本对神经网络的贡献就被其余样本平均掉了,至关于在每一个epoch中,训练集的样本数被缩小了。batch中每一个样本的差别性越大,这种弊端就越严重。通常的解决方法就是在每次训练完一个epoch后,将训练集中样本的顺序打乱再训练另外一个epoch,不断反复。这样从新组成的batch中的样本梯度的平均值就会与上一个epoch的不一样。而这显然增长了训练的时间。同时由于没办法保证每次更新的方向都贴合整个训练集的大方向,只能使用较小的学习速率。这意味着训练过程当中,一部分steps对网络最终的更新起到了促进,一部分steps对网络最终的更新形成了干扰,这样“磕磕碰碰”无数个epoch后才能达到较为满意的结果。学习
为了解决这种“不效率”的训练,BN首先是把全部的samples的统计分布标准化,下降了batch内不一样样本的差别性,而后又容许batch内的各个samples有各自的统计分布。优化
1. 为何神经网络高效:并行的先验知识使得模型可用线性级数量的样本学习指数级数量的变体ui
2. 学习的本质是什么:将变体拆分红因素和知识(Disentangle Factors of Variation)spa
i. 为何深层神经网络比浅层神经网络更高效:迭代组成的先验知识使得样本可用于帮助训练其余共用一样底层结构的样本。设计
ii. 神经网络在什么问题上不具有优点:不知足并行与迭代先验的任务orm
3. 非迭代:该层状态不是由上层状态构成的任务(如:很深的CNN由于有max pooling,信息会逐渐丢失。而residual network再次使得迭代的先验知足)
1)卷积:对图像元素的矩阵变换,是提取图像特征的方法,多种卷积核能够提取多种特征。一个卷积核覆盖的原始图像的范围叫作感觉野(权值共享)。一次卷积运算(哪怕是多个卷积核)提取的特征每每是局部的,难以提取出比较全局的特征,所以须要在一层卷积基础上继续作卷积计算 ,这也就是多层卷积。
2)池化:降维的方法,按照卷积计算得出的特征向量维度大的惊人,不但会带来很是大的计算量,并且容易出现过拟合,解决过拟合的办法就是让模型尽可能“泛化”,也就是再“模糊”一点,那么一种方法就是把图像中局部区域的特征作一个平滑压缩处理,这源于局部图像一些特征的类似性(即局部相关性原理)。sparse interaction(稀疏的交互),parameter sharing(参数共享),equivalent respresentation(等价表示)。适合于自动问答系统中的答案选择模型的训练。
DNN的输入是向量形式,并未考虑到平面的结构信息,在图像和NLP领域这一结构信息尤其重要,例如识别图像中的数字,同一数字与所在位置无关(换句话说任一位置的权重都应相同),CNN的输入能够是tensor,例如二维矩阵,经过filter得到局部特征,较好的保留了平面结构信息。
filter尺寸计算:Feature Map的尺寸等于(input_size + 2 * padding_size − filter_size)/stride+1
在RNN中U、V、W的参数都是共享的,也就是只须要关注每一步都在作相同的事情,只是输入不一样,这样来下降参数个数和计算量。
时序长短可变(只要知道上一时刻的隐藏状态ht−1ht−1与当前时刻的输入xtxt,就能够计算当前时刻的隐藏状态htht。而且因为计算所用到的WxhWxh与WhhWhh在任意时刻都是共享的。递归网络能够处理任意长度的时间序列)顾及时间依赖,将来信息依赖(双向递归)
RNN主要包括LSTM,GRU
GRU对LSTM作了两个大改动:
1. 将输入门、遗忘门、输出门变为两个门:更新门(Update Gate)和重置门(Reset Gate)。
2. 将单元状态与输出合并为一个状态:。
GRU只用了两个gates,将LSTM中的输入门和遗忘门合并成了更新门。而且并不把线性自更新创建在额外的memory cell上,而是直接线性累积创建在隐藏状态上,并靠gates来调控。