资源网站搭建重庆网址大全
web/
2025/9/26 19:32:29/
文章来源:
资源网站搭建,重庆网址大全,邯郸网站建设taigew,wordpress 在safari运动很慢文章目录1. 训练#xff0c;验证#xff0c;测试集2. 偏差#xff0c;方差3. 机器学习基础4. 正则化5. 为什么正则化预防过拟合6. dropout#xff08;随机失活#xff09;正则化7. 理解 dropout8. 其他正则化9. 归一化输入10. 梯度消失 / 梯度爆炸11. 神经网络权重初始化1…
文章目录1. 训练验证测试集2. 偏差方差3. 机器学习基础4. 正则化5. 为什么正则化预防过拟合6. dropout随机失活正则化7. 理解 dropout8. 其他正则化9. 归一化输入10. 梯度消失 / 梯度爆炸11. 神经网络权重初始化12. 梯度的数值逼近13. 梯度检验14. 梯度检验的注意事项作业参考 吴恩达视频课 深度学习笔记
1. 训练验证测试集
深度学习是一个典型的迭代过程迭代的效率很关键
创建高质量的训练数据集验证集和测试集有助于提高循环效率
切分标准 小数据量时代常见做法是三七分70%验证集30%测试集也可以 60%训练20%验证和20%测试集来划分。 大数据时代数据量可能是百万级别验证集和测试集占总量的比例会趋于变得更小。 我们的目的就是验证不同的算法检验哪种算法更有效不需要拿出20%的数据作为验证集很少的一部分占比的数据就已经足够多了。数据来源 最好要确保 验证集 和 测试集 的数据来自同一分布因为要用验证集来评估不同的模型如果验证集和测试集来自同一个分布就会很好
2. 偏差方差 关键数据 训练集误差、验证集误差 如果最优误差贝叶斯误差人分辨的最优误差非常高比如15%。那么上面第二种分类器训练误差15%验证误差16%15%的错误率对训练集来说也是非常合理的偏差不高方差也非常低。 以上基于假设基本误差很小训练集和验证集 来自相同分布
根据这两个指标更好的优化算法。
3. 机器学习基础 4. 正则化
正则化有助于防止过拟合降低方差
范数norm 几种范数的简单介绍
L1 范数∣∣X∣∣1∑i1n∣xi∣||X||_1 \sum\limits_{i1}^n |x_i|∣∣X∣∣1i1∑n∣xi∣ 表示非零元素的绝对值之和L2 范数∣∣X∣∣2∑i1nxi2||X||_2 \sqrt{\sum\limits_{i1}^n {x_i}^2}∣∣X∣∣2i1∑nxi2 表示元素的平方和再开方 矩阵的范数叫做弗罗贝尼乌斯范数所有元素的平方和 ∣∣W∣∣F2||W||_F^{2}∣∣W∣∣F2
加上 L2 正则化 的损失函数 J(ω,b)1m∑i1mL(y^(i),y(i))λ2m∥ω∥22J(\omega, b)\frac{1}{m} \sum_{i1}^{m} \mathcal L \left(\hat{y}^{(i)}, y^{(i)}\right)\frac{\lambda}{2 m}\|\omega\|_{2}^{2}J(ω,b)m1i1∑mL(y^(i),y(i))2mλ∥ω∥22
L1 正则权重 w 最终变得稀疏多数变成 0L2 正则使得权重衰减
W[l](1−αλm)∗W[l]−α(梯度)W^{[l]} (1-\frac{\alpha\lambda}{m})*W^{[l]} - \alpha(梯度)W[l](1−mαλ)∗W[l]−α(梯度) 权重不但减少了还乘以了小于1的系数进行衰减
5. 为什么正则化预防过拟合
J(ω,b)1m∑i1mL(y^(i),y(i))λ2m∥ω∥22J(\omega, b)\frac{1}{m} \sum_{i1}^{m} \mathcal L \left(\hat{y}^{(i)}, y^{(i)}\right)\frac{\lambda}{2 m}\|\omega\|_{2}^{2}J(ω,b)m1i1∑mL(y^(i),y(i))2mλ∥ω∥22
当 λ\lambdaλ 设置的很大的时候最终 WWW 会变得很接近于 0神经网络中的很多单元的作用变得很小整个网络越来越接近逻辑回归 λ\lambdaλ 增大时整个神经网络会计算离线性函数近的值这个线性函数非常简单不是复杂的高度非线性函数不会发生过拟合
L2 正则化是 训练深度学习模型时最常用的一种方法
6. dropout随机失活正则化 以上是一个样本的过程其他样本也是同样的过程。
实施 dropout 举例最常用的方法 - inverted dropout反向随机失活
用一个三层网络举例
定义向量 ddd d[3]d^{[3]}d[3] 表示一个三层的 dropout 向量 d3 np.random.rand(a3.shape[0],a3.shape[1])对于元素小于 keep-prob 的对应为 0其概率为 1 - keep_prob获取激活函数 a[3]a^{[3]}a[3], a3 np.multiply(a3, d3)使得 d[3]d^{[3]}d[3] 中为 0 的元素把 a[3]a^{[3]}a[3] 对应元素归零向外扩展 a[3]a^{[3]}a[3]a3 / keep_prob
反向随机失活inverted dropout方法通过除以keep-prob确保 a[3]a^{[3]}a[3] 的期望值不变
7. 理解 dropout
其功能类似于 L2 正则化对于参数集多的层可以使用较低的 keep-prob 值不同的层可以使用不同的值缺点是需要交叉验证更多的参数
dropout 一大缺点就是代价函数不再被明确定义每次迭代都会随机移除一些节点想检查梯度下降的性能实际上是很难进行复查的
可以先关闭dropout将keep-prob 设置为 1确保 J 函数单调递减然后再尝试打开dropout
8. 其他正则化
数据扩增假如是图片数据扩增数据代价高我们可以
水平翻转随意剪裁旋转放大这种方式扩增数据进而正则化数据集减少过拟合成本很低
对于数字识别图片我们可以进行旋转扭曲来扩增数据集
early stopping 在验证集误差变坏的时候提早停止训练
early stopping 缺点不能同时处理 过拟合 和 代价函数不够小的问题
提早停止可能代价函数 J 不够小不提早结束可能会过拟合
不使用 early stopping 那么使用 L2 正则这样训练时间可能很长参数搜索空间大计算代价很高
early stopping 优点只运行一次梯度下降可以找出 w 的较小值中间值较大值无需尝试 L2 正则化超参数 λ\lambdaλ 的很多值
9. 归一化输入
归一化输入可以加速训练
零均值所有的数据减去均值归一化方差所有数据除以方差
注意μ,σ2\mu, \sigma^2μ,σ2 是由训练集得到然后用于其他所有数据集
10. 梯度消失 / 梯度爆炸 在非常深的神经网络中权重只要不等于 1激活函数将会呈指数级递增或者递减导致训练难度上升尤其是梯度与 L 相差指数级梯度下降算法的步长会非常非常小学习时间很长。
11. 神经网络权重初始化
上面讲到了梯度消失/爆炸如何缓解这个问题 为了预防 z 的值 过大 或 过小n 越大时你希望 wi 越小合理的方法是 wi1/nw_i 1/nwi1/nn 是输入特征数量
w[l]np.random.randn(shape)∗np.sqrt(1n[l−1])w^{[l]} np.random.randn(shape)*np.sqrt(\frac{1}{n^{[l-1]}})w[l]np.random.randn(shape)∗np.sqrt(n[l−1]1)n[l−1]n^{[l-1]}n[l−1] 是给第 lll 层输入的特征数量
如果使用ReLu激活函数最常用∗np.sqrt(2n[l−1])*np.sqrt(\frac{2}{n^{[l-1]}})∗np.sqrt(n[l−1]2)如果使用tanh激活函数1n[l−1]\sqrt \frac{1}{n^{[l-1]}}n[l−1]1或者 2n[l−1]n[l]\sqrt \frac{2}{n^{[l-1]}n^{[l]}}n[l−1]n[l]2 这样设置的权重矩阵既不会增长过快也不会太快下降到 0 从而训练出一个权重或梯度不会增长或消失过快的深度网络 我们在训练深度网络时这也是一个加快训练速度的技巧 12. 梯度的数值逼近
在反向传播时有个测试叫做梯度检验
我们使用双边误差 f′(θ)f(θε)−f(θ−ε)2ε\left.f^{\prime}( \theta\right)\frac{f(\theta\varepsilon)-f(\theta-\varepsilon)}{2 \varepsilon}f′(θ)2εf(θε)−f(θ−ε) 不使用单边误差因为前者更准确。
13. 梯度检验
梯度检验帮助我们发现反向传播中的 bug dθapprox [i]J(θ1,θ2,…θiε,…)−J(θ1,θ2,…θi−ε,…)2εd \theta_{\text {approx }}[i]\frac{J\left(\theta_{1}, \theta_{2}, \ldots \theta_{i}\varepsilon, \ldots\right)-J\left(\theta_{1}, \theta_{2}, \ldots \theta_{i}-\varepsilon, \ldots\right)}{2 \varepsilon}dθapprox [i]2εJ(θ1,θ2,…θiε,…)−J(θ1,θ2,…θi−ε,…)
dθ[i]∂J∂θid \theta[i]\frac{\partial J}{\partial \theta_{i}}dθ[i]∂θi∂J
检验 dθapprox [i]≈dθ[i]d \theta_{\text {approx }}[i] \approx d \theta[i]dθapprox [i]≈dθ[i]
∥dθapprox −dθ∥2∥dθapprox ∥2∣∣dθ∣∣2\frac{\left\|d \theta_{\text {approx }}-d \theta\right\|_{2}}{ \left\|d \theta_{\text {approx }}\right\|_{2}||d \theta||_2}∥dθapprox ∥2∣∣dθ∣∣2∥dθapprox −dθ∥2 检查上式的值是否 10−7 10^{-7}10−7
14. 梯度检验的注意事项
不要在训练中使用梯度检验它只用于调试如果算法的梯度检验失败要检查所有项检查每一项并试着找出bug如果使用了正则化计算梯度的时候也要包括正则项梯度检验不能与dropout同时使用可以关闭dropout进行梯度检验检验正确了再打开dropout
作业
02.改善深层神经网络超参数调试、正则化以及优化 W1.深度学习的实践层面作业初始化正则化梯度检验 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82350.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!