班级的网站设计怎么做,做网站的专业叫什么,上海建筑设计院有限公司是国企吗,wordpress id清空第1周 机器学习的实用层面 1.1 训练/开发/测试 早期机器学习时代#xff08;数据规模较小#xff09;#xff0c;如果不需要dev set#xff0c;常见的划分有 70%/30% 的训练/测试 划分#xff0c;如果需要验证集#xff0c;常见的是 60%/20%/20%划分 在big data era…第1周 机器学习的实用层面 1.1 训练/开发/测试 早期机器学习时代数据规模较小如果不需要dev set常见的划分有 70%/30% 的训练/测试 划分如果需要验证集常见的是 60%/20%/20%划分 在big data era由于数据集非常大test和dev的占比通常变得更小因为dev set的目的就是检测哪个算法更有效所以dev集只需要big enough for you to evaluate 不同算法比如你有100million数据使用1万data作为dev集is more than enoughtest集也是一样。 MAKE SURE the dev and test sets come from the same distribution In practice有时没有/不需要test set很多人会直接把train/dev划分称为 train/test划分Andrew认为这是不严谨的 1.2 偏差(Bias) / 方差(Variance) High Bias欠拟合 High Variance: 过拟合 举个例子以错误率为例train/dev1%/11%高方差过拟合15%/16%高偏差欠拟合15%/30%高偏差高方差欠拟合 1.3 机器学习基础 在现代的deep learning只要bigger network more data 合适的其他设置如regulation等在降低偏差的同时通常可以同时 降低/不伤害 方差反之亦然。这也是为什么在深度学习中我们不用太关注Bias-Variance trade-off 的原因Andrew认为这也是deep火起来的一个原因。 1.4 正则化 以logistic regression为例我通常只加对W的L2正则项不加b的正则项目加不加影响不大因为W通常是很高维的高偏差问题主要和它有关we arent fitting all the parameters well L1 norm可以使模型更sparse有人认为这有利于降低存储模型的存储空间但in practice我发现L1 norm可以使模型稀疏但其实并没有降低太多存储内存所以我不认为L1的目的是为了压缩模型。我在实践中喜欢L2 norm。 对矩阵的L2正则化叫做 Frobenious norm而不叫 L2 norm|| W ||^2 在对于的BP过程中dW要额外加一项你可以看到这也是为什么L2 regularization 被称为i weight decay 1.5 正则化为什么可以减少过拟合 直观上来感受以一个多层神经网络和L2 正则化为例通过控制正则化参数lambda它相当于消除实践中更准确的说是降低了许多神经元unit的影响从而simpler the network。 另一个直观例子假设激活函数为tanh()在靠近0周围的部分近似线性而两边是非线性的正则化使得W值变小W乘以上一层输入得到的值也变小了就会集中在线性区。 1.6 dropout正则化 反向随机失活 inverted dropout记得在 a (a*mask) / keep_prop 1.7 理解dropout dropout相当于降低了模型复杂度 Intuition: 依然以网络结构为例不能依赖any one feature也就是给某一个输入节点赋予过大的权重因为任何feature都有可能被dropso have to spread the weights利用绝大部分特征。 类似L2正则化dropout通常会产生一个效果即 shrinking the squared norm of the weights并且does some outer regularization。甚至更适用于不同scale的输入范围。 根据不同层可能过拟合的程度不同层可以设置不同的keep_prop缺点是交叉验证选参数代价大。一直替代的方法是对所有层keep_prop 1 / a same number. 除非网络过拟合了否则我通常不会用dropout。它在其他领域应用得比较少主要是在CV因为通常我们没有足够的数据导致过拟合。 一个缺点是此时代价函数 J is no longer well-defined此时你很难监测迭代进行梯度下降时的J的性能所以我们失去的debug工具绘制损失图。通常我会先关闭dropout运行NN确保J单调递减然后再加入dropout。 1.7 其他正则化方法 Data Augmentation. 比如对称图像随机旋转和裁剪OCR图像设置可以各种扭曲 early stopping. 画出 training/dev error 随着 迭代次数的 曲线。 缺点是它couple了两个任务最优化代价函数J同时要降低过拟合风险这使得我们无法独立地处理这两个任务。即我们尝试用一种方式同时解决两个问题这也使得我们的任务变得更复杂。提早停止梯度下降在某种程度上我们breaking 了 降低J的任务此时代价函数可能还不够小 优点是这个正则化方法不需要额外参数在梯度下降的过程中就可以完成。但是如果负担得起 L2 正则化超参数搜索的计算开销的话通常我们还是选择 L2。我发现 L2使得超参数的search space更容易分解咸鱼对这句话的理解是加了L2之后迭代过程相对固定只要不断迭代就行了最终比较不同超参数组合的J值而early stopping看中间迭代值不同超参数组合具体在哪次迭代停止都不一样我们关注了中间值使得range search可能也不是那么容易锁定。 1.9 标准化输入 当不同特征scale相差较大时可以看到 J 的等高图是一个扁长的椭圆假设此时特征2维此时直接使用SGD会导致Z字形轨迹不同方向梯度大小不一样而学习率一样。 特征尺度相差不大就不需要做归一化但即使做了归一化也不会有什么harm所以当我不确定特征scale是否相差很大时我都会选择做归一化。 1.10 梯度消失和梯度爆炸 直观理解 Andrew举了一个使用线性激活函数的例子那就相当于不断乘以Wi那么前向时Wi略大于1激活值就会爆炸偏小就会消失接近0反向时梯度值类似。咸鱼觉得Relu会遇到这种情况。 另外CS231n中Karpathy讲的以tanh为激活函数时直接使用高斯随机产生权重*某较小的数也会存在梯度消失问题要么激活值接近0要么激活值接近1两者都导致梯度消失。 1.11 神经网络的权重初始化 使用 标准高斯函数*一个较小的数 随机初始化权重存在一个问题随着输入数据量的增长随机初始化的神经元的输出数据的分布中的方差也在增大。我们可以除以输入数据量的平方根来调整其数值范围这保证了网络中所有神经元起始时有近似同样的输出分布。实践经验证明这样做可以提高收敛的速度。 Xavier初始化以tanh为激活函数Wi np.random.randn( Ni - 1 * Ni ) / np.sqrt( Ni-1)这使得 Zi 和 Ai-1 有大致相同的范围方差 。 In practice我认为这些初始化公式只是给了你一个起始点如果你愿意W的方差参Xavier将其调整为1/n数可以作为你可以调整的一个超参数。有时这样调优的效果很微小通常这不会是我想要调的首要超参但在有些应用中调这个参数也能提升了一些性能。考虑到其他超参的重要性我通常给这个超参低点的优先级。 1.12 梯度的数值逼近 使用 双边的数值梯度 近似 解析梯度 1.13 梯度检验 1.14 关于梯度检验实现的标注 1、不要再训练中使用梯度检验它只用在调试中。因为梯度检验很费时 2、如果检验失败look at specific components to try to identify bug 3、记住正则化项 4、Doesn‘t work with dropout。梯度检验时先关闭dropout设置keep_node1 5、Run at random intialization; perhaps again after some training. 这种情况很少发生但是也有可能small random initial values运行梯度检验有可能是对的但随着训练进行权重away from zero梯度检验将失败。虽然我不常这么做但你可以选择的是在初始化时跑梯度检验然后让模型训练一段时间权重away from 初始化值后在进行梯度检验。 转载于:https://www.cnblogs.com/JesusAlone/p/8513487.html