棋牌网站搭建平台,电商未来发展趋势前景,快速的网站建设,软件开发培训机构哪个好文章目录第一周#xff1a;深度学习的实用层面训练、开发、测试集偏差、方差机器学习基本步骤L2正则化Dropout#xff08;随机失活#xff09;正则化其它正则化方法正则化输入神经网络的权重初始化梯度检验第二周#xff1a;优化算法Mini-Batch梯度下降法指数加权平均指数加…
文章目录第一周深度学习的实用层面训练、开发、测试集偏差、方差机器学习基本步骤L2正则化Dropout随机失活正则化其它正则化方法正则化输入神经网络的权重初始化梯度检验第二周优化算法Mini-Batch梯度下降法指数加权平均指数加权平均的偏差修正动量梯度下降法RMSpropAdam优化算法学习率衰减第三周超参数调试、Batch正则化、程序框架调试处理为超参数选择合适的范围Batch Norm/z的归一化处理Batch Norm作用的原理SoftMax回归第一周深度学习的实用层面
训练、开发、测试集
应用深度学习是一个典型的迭代过程因为不可能一开始就确定最优的超参数需要多次循环往复才能设计优秀的神经网络因此循环该过程的效率是决定项目进展速度的一个关键因素而创建高质量的训练数据集验证集和测试集也有助于提高循环效率。如果不需要无偏估计也可以不设置测试集。 数据规模较小时开发和测试集占总数据的30%~40%数据量较大时验证集和测试集占数据总量的比例会趋于变得更小。 建议确保验证集和测试集的数据来自同一分布。
偏差、方差
假设已有一个识别猫的分类器。已知人眼识别的错误率接近0% 训练集错误率15% 测试集错误率16% 拟合结果的偏差较大 训练集错误率5% 测试集错误率20% 拟合结果方差较大 训练集错误率20% 测试集错误率40% 拟合结果偏差和方差都较大 训练集错误率0.1% 测试集错误率1% 拟合结果的误差和方差合理
机器学习基本步骤 L2正则化
解决高方差通常采用增加数据量如果可行、正则化的方法。
假设采用tanh作为激活函数当λ很大而w接近0的时候z的范围非常接近0而对于tanh接近0的部分约等于线性函数因此将神经网络的各个层向线性靠近使得多层的神经网络计算结果更简单参考前面课程中介绍的为什么要使用非线性激活函数减轻过拟合的情况。
Dropout随机失活正则化
对于神经网络的每个隐层对每个节点设定其失活的概率被设置为失活的节点其激活后的值设置为0不参与神经网络的计算。在测试时不使用dropout方法。
假设有一L3的神经网络d3是一个布尔类型的矩阵d3.shape(第3层节点数, 样本数) 在Python的运算中将d3中的True解析为1False解析为0其中每个元素为True或False的概率由输入 keep-prob决定。 a3 np.multiply(a3,d3)让d3中 0 元素与a3中相对元素归零。 a3 / keep-prob以保证a3的期望值不变。
可以为不同层设置不同的keep-prob值将易发生过拟合的层keep-prob值设置得更低也可以将某些不会发生过拟合的层的keep-prob值设置为1即不使用dropout阻塞节点。
使用dropout的一个缺点是代价函数J无法明确定义不便观察训练效果。
其它正则化方法
①数据扩增将原输入的图片进行对称、裁剪、旋转处理以较小的代价得到更大的数据集。 ②提前终止训练当神经网络在迭代到某时刻时其表现已满足要求提前终止。 early stopping 的主要缺点就是不能独立地处理这两个问题因为提早停止梯度下降也就是停止了优化代价函数J因为终止后不再尝试降低代价函数J所以代价函数J的值可能不够小同时又希望不出现过拟合没有采取不同的方式来解决这两个问题而是用一种方法同时解决两个问题这样做的结果是要考虑的东西变得更复杂。
注意正则化有损于训练集的表现因为它会限制网络过度拟合训练集的能力但是它最终会提高测试集的表现。
正则化输入 神经网络的权重初始化
为了避免深层神经网络中梯度爆炸和梯度消失的现象需要对各层节点的权值进行合理初始化。
梯度检验 注意 ①不要在训练中使用梯度检验它只用于调试。 ②如果approx[]与[]的值相差很大查找不同的值找出是哪个导致approx[]与[]的值相差这么多。如果你发现相对某些层或某层的或的值相差很大但是dw[]的各项非常接近的各项与和的各项都是一一对应的这时可能在计算参数的导数的过程中存在 bug。反过来也是一样。 ③在实施梯度检验时如果使用正则化注意包括正则项。 ④梯度检验不能与 dropout 同时使用。
第二周优化算法
Mini-Batch梯度下降法
将大规模的输入集合切分成子集并进行梯度下降的处理。如X具有5,000,000样本数minibatch_size1000则X可划分为X{1}…X{5000}对每个子集进行向量化的正向传播、反向传播、更新参数。
采用Mini-Batch梯度下降法时cost值并非随着迭代次数单调下降但整体趋势是下降的。
MiniBatch_Size的选择 ①当MiniBatch_Size1时每次迭代仅输入一个样本本质上是随机梯度下降算法。 ②当MiniBatch_Sizem时本质上是Batch梯度下降法。 因此要在1~m的范围内选择合适的值使得每次迭代都能快速进行且迭代次数不至于过多。
batch梯度下降法从某处开始相对噪声低些幅度也大一些。 在随机梯度下降法中每次迭代只对一个样本进行梯度下降大部分时候向着全局最小值靠近。有时候你会远离最小值因为那个样本恰好给你指的方向不对因此随机梯度下降法是有很多噪声的平均来看它最终会靠近最小值不过有时候也会方向错误因为随机梯度下降法永远不会收敛而是会一直在最小值附近波动但它并不会在达到最小值并停留在此。
指数加权平均
基本公式 当β较小时1-β较大θt的权重较高能更快适应变化但受噪声影响更大。 反之θt的权重较低适应变化更慢但受噪声影响小整体趋于稳定。
第100天的数据是θ[1-100]的权值和此时β0.9θ[90]及其之前的数据的权值很小因此V100约为最近10天的温度平均情况。
指数加权平均的偏差修正
按照上述公式初始时期对温度的估计会明显偏小。 如果关心初始时期的偏差可以在第t天时用Vt/(1-β^t)估计当天的温度。 随着t的增加偏差修正的效果逐渐下降。因此只有在初期的时候偏差修正起作用。
动量梯度下降法
在梯度下降的过程中希望纵轴的摆动尽量小横轴的跨度尽量大。 注意右侧Vdw并非上一层的Vdw而是该层上次更新参数时的Vdw RMSprop Adam优化算法
本质上是动量法和RMSprop的结合。
学习率衰减
当训练结果接近最优值时继续训练会使参数值在其附近摆动此时可以尝试减小学习率使其逼近最优解。
第三周超参数调试、Batch正则化、程序框架
调试处理
在神经网络中超参数的重要程度存在差异。如α是最重要的超参数而Adam方法中的ε重要性很低。 在搜索超参数时采用随机取样而不是网格取样效果更好。因为超参数的重要性存在差异 在最优样本附近进行细粒度搜索以确定更好的超参数值。
为超参数选择合适的范围
例如对α在[0.0001, 1]进行取值时用对数标尺而非线性标尺搜索超参数的方式会更合理。 在 Python 中使 r-4*np.random.rand()α 10r 当选择β时可以考察1-β的值。当β接近1时其对变化的灵敏度会显著提高因此不能使用线性标尺。
Batch Norm/z的归一化处理
Batch Norm一次只能处理一个 mini-batch 数据 默认对每层的z进行归一化而非a。 时刻记住每层网络的每个单元的输出z都是下层网络的输入类比输入层的一个或多个样本的同一位置的特征。
将Batch Norm拟合进神经网络中对每个batch第k层的z[k]根据γ[k]和β[k]计算得归一化后的值再进行激活。 因为归一化的操作所以z[k]w[k]*a[k-1]b[k]中的b[k]可以删去。 操作流程 for k in batch_num: 前向传播计算z{k}并用BN计算z~{k} 反向传播计算dw{k}dγ{k}dβ{k} 更新参数wγβ # 可以使用梯度法Adam方法动量法等
Batch Norm作用的原理
当神经网络在之前层中更新参数Batch Norm可以确保无论其怎样变化得到z的均值和方差保持不变所以即使z的值改变至少他们的均值和方差是由β和γ决定的值。 Batch Norm减少了输入值改变的问题使这些值变得更稳定神经网络后层会有更坚实的基础。即使输入分布改变了一些后层网络的值会改变得更少即使后层适应的程度减小了。它减弱了前层参数的作用与后层参数的作用之间的联系使得网络每层都可以自己学习稍稍独立于其它层这有助于加速整个网络的学习。
SoftMax回归 Loss(y, y_hat) -ylog(y_hat) Cost(Y, Y_hat) ΣLoss(Y, Y_hat) / m dz[l] y_hat - y
有关tensorflow的用法的章节不在此记录。