IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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 偏差、方差

img

train set error1%15%15%0.5%
dev set error11%16%30%1%
high variancehigh biashigh bias & high variancelow bias & low variance

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=1m?L(y^?(i),y(i))+2mλ?w2+2mλ?b2(omit)L2regularization:w2=j=1nx?wj2?=wTwL1regularization:2mλ?j=1nx?wj?=2mλ?j=1nx?w1?

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=1m?L(y^?(i),y(i))+2mλ?w[l]F2?2mλ?w[l]F2?=i=1n[l?1]?j=1n[l]?(wij[l]?)2Frobeniusnorm

1.5 为什么正则化可以减少过拟合?

1.6 dropout随机失活正则化

dropout:随机概率值作为每一层结点的存在概率,被删除的结点与之相关的进出路线全部删除,最后得到一个节点更少、规模更小的额网络。

#layer l = 3, keep-prob = 0.8
d3 = np.random.rand(a3.shape[0],a3.shape[1])<keep_prob
a3 = np.multiply(a3,d3)  #a3 *=d3
a3 /= keep-prob

inverted dropout 反向随机失活

随机失活应用于训练集train set,不适用于测试集test set,因为我们想要测试集的结果保持稳定。

1.7 理解dropout

如果你担心一些层比其它层更容易发生过拟合,那么你可以把这些层的keep-prob值设置地比其它层更低。缺点是为了参加交叉验证,你需要搜索更多的超级参数。

另一种方法是只在一些层用dropout,而在另一些层不用dropout。

dropout主要用在计算机视觉领域,因为没有足够多的数据,所以经常出现过拟合。

dropout的一大缺点在于代价函数J不再明确定义,每次迭代都会随机移除一些结点

1.8 其他正则化方法

增加训练集的简易方法(数据增强):翻转图片、随意更改并剪切

early stopping:提早停止训练神经网络

在这里插入图片描述

1.9 归一化输入

数据的标准化:
x ′ = x ? μ σ μ = 1 m ∑ i = 1 m x ( i ) , σ = 1 m ∑ i = 1 m ( x ( i ) ? μ ) 2 x' = \frac{x-\mu}{\sigma}\\ \mu = \frac{1}{m}\sum_{i=1}^{m}x^{(i)},\sigma = \frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu)^2 x=σx?μ?μ=m1?i=1m?x(i),σ=m1?i=1m?(x(i)?μ)2
在这里插入图片描述
在这里插入图片描述

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 RMSprop

S 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?WdWSdW?WbdbSdb?b

2.8 Adam优化算法(adaptive moment estimation)

Adam算法结合了momentum算法和RMSprop算法
V d W = 0 , V d b = 0 , S d W = 0 , S d b = 0 V d W = β 1 V d W + ( 1 ? β 1 ) d W V d b = β 1 V d b + ( 1 ? β 1 ) d b m o m e n t u m S d W = β 2 S d W + ( 1 ? β 2 ) ( d W ) 2 S d b = β 2 S d b + ( 1 ? β 2 ) ( d b ) 2 R M S V d W c o r r e c t = V d W 1 ? β 1 t , V d b c o r r e c t = V d b 1 ? β 1 t S d W c o r r e c t = S d W 1 ? β 2 t , S d b c o r r e c t = S d b 1 ? β 2 t W : = W ? α V d W c o r r e c t S d W c o r r e c t + ? b : = b ? α V d b c o r r e c t S d b c o r r e c t + ? V_{dW} = 0,V_{db} = 0,S_{dW} = 0,S_{db} = 0\\ V_{dW} = \beta_1 V_{dW} + (1-\beta_1)dW\\ V_{db} = \beta_1 V_{db} + (1-\beta_1)db\quad momentum \\S_{dW} = \beta_2 S_{dW} + (1-\beta_2)(dW)^2\\ S_{db} = \beta_2 S_{db} + (1-\beta_2)(db)^2\quad RMS\\ V_{dW}^{correct} = \frac{V_{dW}}{1-\beta_1^t}, V_{db}^{correct} = \frac{V_{db}}{1-\beta_1^t}\\ S_{dW}^{correct} = \frac{S_{dW}}{1-\beta_2^t}, S_{db}^{correct} = \frac{S_{db}}{1-\beta_2^t}\\ W:=W-\alpha \frac{V_{dW}^{correct}}{\sqrt{S_{dW}^{correct}+\epsilon}}\\ b:=b-\alpha \frac{V_{db}^{correct}}{\sqrt{S_{db}^{correct}+\epsilon}}\\ VdW?=0,Vdb?=0,SdW?=0,Sdb?=0VdW?=β1?VdW?+(1?β1?)dWVdb?=β1?Vdb?+(1?β1?)dbmomentumSdW?=β2?SdW?+(1?β2?)(dW)2Sdb?=β2?Sdb?+(1?β2?)(db)2RMSVdWcorrect?=1?β1t?VdW??,Vdbcorrect?=1?β1t?Vdb??SdWcorrect?=1?β2t?SdW??,Sdbcorrect?=1?β2t?Sdb??W:=W?αSdWcorrect?+? ?VdWcorrect??b:=b?αSdbcorrect?+? ?Vdbcorrect??

2.9 学习率衰减

1 epoch = 1 pass through data
α = 1 1 + d e c a y r a t e ? e p o c h n u m ? α 0 α 0 = 0.2 , d e c a y r a t e = 1 \alpha = \frac{1}{1+decay_{rate}*epoch_{num}}*\alpha_0\\ \alpha_0 = 0.2,decay_{rate} = 1 α=1+decayrate??epochnum?1??α0?α0?=0.2,decayrate?=1

epoch α \alpha α
10.1
20.067
30.05
40.04

其他衰减方法
α = 0.9 5 e p o c h n u m α 0 α = α 0 e p o c h n u m ? α 0 o r k t ? α 0 ( t 是 m i n i ? b a t c h 的 批 次 ) 离 散 衰 减 学 习 率 \alpha = 0.95^{epoch_{num}}\alpha_0\\ \alpha = \frac{\alpha_0}{epoch_{num}}*\alpha_0 \quad or \frac{k}{\sqrt{t}}*\alpha_0(t是mini-batch的批次)\\ 离散衰减学习率 α=0.95epochnum?α0?α=epochnum?α0???α0?ort ?k??α0?tmini?batch

2.10 局部最优的问题

高维度空间更可能存在的是鞍点,而不是局部最优。

平稳段(导数接近于0的区域)的学习率会很慢

3.1 调试处理(tuning process)

超参数调节:hyperparameters
α , β , β 1 , β 2 , l a y e r s , h i d d e n u , l e a r n i n g d e c a y r a t e , m i n i ? b a t c h s i z e \alpha,\beta,\beta_1,\beta_2,layers,hidden \quad u,learning \quad decay\quad rate,mini-batch \quad size α,β,β1?,β2?,layers,hiddenu,learningdecayrate,mini?batchsize

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回归的两类拓展到多类
z [ l ] = w [ l ] a [ l ? 1 ] + b [ l ] a c t i v a t i o n f u n c t i o n : t = e z [ l ] a i [ l ] = t i ∑ i t i z^{[l]} = w^{[l]}a^{[l-1]}+b^{[l]}\\ activation\quad function:t = e^{z^{[l]}}\\ a^{[l]}_i = \frac{t_i}{\sum_{i}t_i} z[l]=w[l]a[l?1]+b[l]activationfunction:t=ez[l]ai[l]?=i?ti?ti??
最后输出的向量和为1,代表不同输出结果的概率大小。

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

import numpy as np
import tensorflow as tf

coefficients = np.array([[1],[-20],[25]])

w = tf.Variable([0],dtrpe = tf.float32)
x = tf.placeholder(tf.float32,[3,1])
cost = x[0][0]*w**2 + x[1][0]*w + x[2][0]
train = tf.train.GradientDescentOptimizer(0.01).minimize(cost)
init = tf.global_variables_initializer()
session = tf.Session()  #with tf.Session() as session:
session.run(init)			#session.run(init)
print(session.run(w))		#print(session.run(w))

for i in range(1000):
    session.run(train,feed_dict={x:coefficients})
print(session.run(w))
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:10:46  更:2021-07-15 16:12:19 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码