| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 改善深层神经网络:超参数调试、正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning Regularizatio) -> 正文阅读 |
|
[人工智能]改善深层神经网络:超参数调试、正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning Regularizatio) |
文章目录
1.1 训练、开发、测试集train set训练集 Dev set验证集 test set 测试集 小规模数据:训练集:其他 = 7:3 大数据时代(超百万数据):训练集占80%或者90%以上 验证集和测试集来自同一分布 如果只有训练集和验证集,那么验证集Dev set就是测试集test set 1.2 偏差、方差
1.3 机器学习基础high bias(train data problem) ——big network high variance(dev set problem)——more data/regularization 1.4 正则化m i n w , b J ( w , b ) J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∣ ∣ w ∣ ∣ 2 + λ 2 m b 2 ( o m i t ) L 2 r e g u l a r i z a t i o n : ∣ ∣ w ∣ ∣ 2 = ∑ j = 1 n x w j 2 = w T w L 1 r e g u l a r i z a t i o n : λ 2 m ∑ j = 1 n x ∣ w j ∣ = λ 2 m ∑ j = 1 n x ∣ ∣ w ∣ ∣ 1 min_{w,b} J(w,b)\\ J(w,b) = \frac{1}{m}\sum_{i=1}^mL(\hat y^{(i)},y^{(i)})+\frac{\lambda}{2m}||w||^2+\frac{\lambda}{2m}b^2(omit)\\ L2 \quad regularization: \quad ||w||^2 =\sum_{j=1}^{nx}w_j^2 = w^Tw\\ L1\quad regularization:\quad \frac{\lambda}{2m}\sum_{j=1}^{nx}|w_j| = \frac{\lambda}{2m}\sum_{j=1}^{nx}||w||_1 minw,b?J(w,b)J(w,b)=m1?i=1∑m?L(y^?(i),y(i))+2mλ?∣∣w∣∣2+2mλ?b2(omit)L2regularization:∣∣w∣∣2=j=1∑nx?wj2?=wTwL1regularization:2mλ?j=1∑nx?∣wj?∣=2mλ?j=1∑nx?∣∣w∣∣1? J ( w [ 1 ] , b [ 1 ] , … … w [ l ] , b [ l ] ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∣ ∣ w [ l ] ∣ ∣ F 2 λ 2 m ∣ ∣ w [ l ] ∣ ∣ F 2 = ∑ i = 1 n [ l ? 1 ] ∑ j = 1 n [ l ] ( w i j [ l ] ) 2 F r o b e n i u s n o r m 弗 罗 贝 尼 乌 斯 范 数 J(w^{[1]},b^{[1]},……w^{[l]},b^{[l]}) = \frac{1}{m}\sum_{i=1}^mL(\hat y^{(i)},y^{(i)})+\frac{\lambda}{2m}||w^{[l]}||_F^2\\ \frac{\lambda}{2m}||w^{[l]}||_F^2 = \sum_{i=1}^{n^{[l-1]}}\sum_{j=1}^{n^{[l]}}(w_{ij}^{[l]})^2\\ Frobenius \quad norm 弗罗贝尼乌斯范数 J(w[1],b[1],……w[l],b[l])=m1?i=1∑m?L(y^?(i),y(i))+2mλ?∣∣w[l]∣∣F2?2mλ?∣∣w[l]∣∣F2?=i=1∑n[l?1]?j=1∑n[l]?(wij[l]?)2Frobeniusnorm弗罗贝尼乌斯范数 1.5 为什么正则化可以减少过拟合?1.6 dropout随机失活正则化dropout:随机概率值作为每一层结点的存在概率,被删除的结点与之相关的进出路线全部删除,最后得到一个节点更少、规模更小的额网络。
inverted dropout 反向随机失活 随机失活应用于训练集train set,不适用于测试集test set,因为我们想要测试集的结果保持稳定。 1.7 理解dropout如果你担心一些层比其它层更容易发生过拟合,那么你可以把这些层的keep-prob值设置地比其它层更低。缺点是为了参加交叉验证,你需要搜索更多的超级参数。 另一种方法是只在一些层用dropout,而在另一些层不用dropout。 dropout主要用在计算机视觉领域,因为没有足够多的数据,所以经常出现过拟合。 dropout的一大缺点在于代价函数J不再明确定义,每次迭代都会随机移除一些结点 1.8 其他正则化方法增加训练集的简易方法(数据增强):翻转图片、随意更改并剪切 early stopping:提早停止训练神经网络 1.9 归一化输入数据的标准化: 1.10 梯度消失和梯度爆炸1.11 神经网络的权重初始化1.12 梯度的数值逼近g ( θ ) ≈ f ( θ + ? ) ? f ( θ ? ? ) 2 ? ( 双 边 公 差 ) O ( ? 2 ) g ( θ ) ≈ f ( θ + ? ) ? f ( θ ? ? ) ? ( 单 边 公 差 ) O ( ? ) g(\theta) \approx \frac{f(\theta+\epsilon)-f(\theta - \epsilon)}{2\epsilon} \quad(双边公差) O(\epsilon^2)\\ g(\theta) \approx \frac{f(\theta+\epsilon)-f(\theta - \epsilon)}{\epsilon} \quad(单边公差) O(\epsilon) g(θ)≈2?f(θ+?)?f(θ??)?(双边公差)O(?2)g(θ)≈?f(θ+?)?f(θ??)?(单边公差)O(?) 双边误差公式的结果比单边的更准确 1.13 梯度检验f o r e a c h i : d θ a p p r o x [ i ] = J ( θ 1 , θ 2 , … … , θ i + ? , … … ) ? J ( θ 1 , θ 2 , … … , θ i ? ? , … … ) 2 ? ≈ d θ [ i ] = ? J ? θ i c h e c k : ∣ ∣ d θ a p p r o x ? d θ ∣ ∣ 2 ∣ ∣ d θ a p p r o x ∣ ∣ 2 + ∣ ∣ d θ ∣ ∣ 2 ≈ 1 0 ? 7 g r e a t ! for \quad each \quad i:\\ d\theta_{approx}^{[i]} = \frac{J(\theta_1,\theta_2,……,\theta_i+\epsilon,……)-J(\theta_1,\theta_2,……,\theta_i-\epsilon,……)}{2\epsilon}\\ \approx d\theta^{[i]} = \frac{\partial J}{\partial \theta_i}\\ check:\frac{||d\theta_{approx}-d\theta||_2}{||d\theta_{approx}||_2+||d\theta||_2}\approx10^{-7} great! foreachi:dθapprox[i]?=2?J(θ1?,θ2?,……,θi?+?,……)?J(θ1?,θ2?,……,θi???,……)?≈dθ[i]=?θi??J?check:∣∣dθapprox?∣∣2?+∣∣dθ∣∣2?∣∣dθapprox??dθ∣∣2??≈10?7great! 1.14 关于梯度检验实现的注记正则化 + 梯度检验 梯度检验和dropout不能同时使用 2.1 mini-batch 梯度下降法5000000样本的训练集,分为1000个batch,每个batch有5000个样本。 每个epoch(代)都会遍历所有的样本一次(1000次batch),进行一次梯度下降,多次循环训练集需要多个epoch。 2.2 理解mini-batch 梯度下降法if mini-batch size = m:batch gradient descent ( X { 1 } , Y { 1 } ) = ( X , Y ) (X^{\{1\}},Y^{\{1\}}) = (X,Y) (X{1},Y{1})=(X,Y) 训练一次的时间可能过长 if mini-batch size = 1:stochastic gradient descent ( X { 1 } , Y { 1 } ) = ( X ( 1 ) , Y ( 1 ) ) (X^{\{1\}},Y^{\{1\}}) = (X^{(1)},Y^{(1)}) (X{1},Y{1})=(X(1),Y(1)) 但是效率过于低下 2.3 指数加权平均V t = β V t ? 1 + ( 1 ? β ) θ t V_t = \beta V_{t-1}+(1-\beta)\theta_t Vt?=βVt?1?+(1?β)θt? 2.4 理解指数加权平均2.5 指数加权平均的偏差修正V t = β V t ? 1 + ( 1 ? β ) θ t 1 ? β t V_t = \frac{\beta V_{t-1}+(1-\beta)\theta_t}{1-\beta^t} Vt?=1?βtβVt?1?+(1?β)θt?? 主要是修正初期的误差 2.6 动量梯度下降法 gradient descent with momentum问题:纵轴波动过大,横轴前进较小 目标:纵轴降低波动,横轴加速前进 类比:碗里面的小球获得加速度而加速前进 2.7 RMSpropS d W = β S d W + ( 1 ? β ) ( d W ) 2 S d b = β S d b + ( 1 ? β ) ( d b ) 2 W : = W ? α d W S d W + ? b : = b ? α d b S d b + ? W 方 向 斜 率 较 小 , d W 较 小 , S d W 较 小 , W 的 更 新 较 大 b 方 向 斜 率 较 大 , d b 较 大 , S d b 较 大 , b 的 更 新 较 小 S_{dW} = \beta S_{dW} + (1-\beta)(dW)^2\\ S_{db} = \beta S_{db} + (1-\beta)(db)^2\\ W:=W-\alpha \frac{dW}{\sqrt{S_{dW}+\epsilon}}\\ b:=b-\alpha \frac{db}{\sqrt{S_{db}+\epsilon}}\\ W方向斜率较小,dW较小,S_{dW}较小,W的更新较大\\ b方向斜率较大,db较大,S_{db}较大,b的更新较小\\ SdW?=βSdW?+(1?β)(dW)2Sdb?=βSdb?+(1?β)(db)2W:=W?αSdW?+??dW?b:=b?αSdb?+??db?W方向斜率较小,dW较小,SdW?较小,W的更新较大b方向斜率较大,db较大,Sdb?较大,b的更新较小 2.8 Adam优化算法(adaptive moment estimation)Adam算法结合了momentum算法和RMSprop算法 2.9 学习率衰减1 epoch = 1 pass through data
其他衰减方法 2.10 局部最优的问题高维度空间更可能存在的是鞍点,而不是局部最优。 平稳段(导数接近于0的区域)的学习率会很慢 3.1 调试处理(tuning process)超参数调节:hyperparameters 3.2 为超参数选择合适的范围β \beta β:从粗到细的取值方法、不均匀的取值方法(越接近1取值越多) 3.3 超参数运用的实践(pandas vs caviar)3.4 正则化网络的激活函数使隐藏单元的均值和方差标准化 3.5 将batch norm拟合进神经网络3.6 batch norm为什么奏效?首先在于归一化(均值为0,方差为1)在做类似的工作 其次可以使权重比你的网络更滞后或更深层 covariate shift:使你的数据改变分布 batch norm限制了在前层的参数更新会影响数值分布的程度(均值和方差是可控的),减少了输入值改变的问题,减弱了前层参数的作用与后层参数的作用之间的联系。使得不同层之间稍稍独立于其它层,这有助于加速整个网络的学习。 batch norm还有轻微的正则化效果,类似于dropout,因为给隐藏单元添加了噪音,这迫使后部单元不过分依赖任何一个隐藏单元。因为噪音很小,所以是轻微的正则化效果,可以将batch norm和dropout两者共同使用。 通过应用较大的mini batch size,减少了噪音,因此减少了正则化效果。 3.7 测试时的batch norm在训练时, μ \mu μ和 σ \sigma σ是在整个mini-batch上计算出来的,多个mini-batch自然会有多个 μ \mu μ和 σ \sigma σ。 测试时,需要逐一处理样本,只需要一个 μ \mu μ和 σ \sigma σ,此时选择指数加权平均等方法估算 使用batch归一化,能够训练更深的网络,让你的算法运行速度更快。 3.8 softmax回归softmax回归:logistic回归的一般形式,多分类识别,将logistic回归的两类拓展到多类 softmax分类器在没有隐藏层的情况下,有类似线性的决策边界,但可以有超过两个分类 3.9 训练一个softmax分类器z [ l ] = [ 5 2 ? 1 3 ] , t = [ e 5 e 2 e ? 1 e 3 ] g [ l ] ( z [ l ] ) = [ e 5 e 5 + e 2 + e ? 1 + e 3 e 2 e 5 + e 2 + e ? 1 + e 3 e ? 1 e 5 + e 2 + e ? 1 + e 3 e 3 e 5 + e 2 + e ? 1 + e 3 ] = [ 0.842 0.042 0.002 0.114 ] z^{[l]} = \left[\begin{array}{cc}5\\2\\-1\\3\end{array}\right],t = \left[\begin{array}{cc}e^5\\e^2\\e^{-1}\\e^3\end{array}\right]\\ g^{[l]}(z^{[l]}) = \left[\begin{array}{cc}\frac{e^5}{e^5+e^2+e^{-1}+e^3}\\\frac{e^2}{e^5+e^2+e^{-1}+e^3}\\\frac{e^{-1}}{e^5+e^2+e^{-1}+e^3}\\\frac{e^3}{e^5+e^2+e^{-1}+e^3}\end{array}\right] = \left[\begin{array}{cc}0.842\\0.042\\0.002\\0.114\end{array}\right] z[l]=?????52?13??????,t=?????e5e2e?1e3??????g[l](z[l])=??????e5+e2+e?1+e3e5?e5+e2+e?1+e3e2?e5+e2+e?1+e3e?1?e5+e2+e?1+e3e3????????=?????0.8420.0420.0020.114?????? hard max:[1 0 0 0] (z最大的元素输出为1,其他元素输出为0) 3.10 深度学习框架寻找合适的深度学习框架:易于编程、运行速度快、开源且良好的管理 3.11 tensorflow
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 9:59:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |