吴恩达:改善深层神经网络:超参数调试、正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning, Regularizatio)

@[toc]

1.1 训练、开发、测试集

train set训练集 Dev set验证集 test set 测试集

小规模数据:训练集:其他 = 7:3

大数据时代(超百万数据):训练集占80%或者90%以上

验证集和测试集来自同一分布

如果只有训练集和验证集,那么验证集Dev set就是测试集test set

1.2 偏差、方差

[图片上传失败...(image-438142-1626709583495)]

train set error 1% 15% 15% 0.5%
dev set error 11% 16% 30% 1%
high variance high bias high bias & high variance low bias & low variance

1.3 机器学习基础

high bias(train data problem) ——big network

high variance(dev set problem)——more data/regularization

1.4 正则化

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

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 弗罗贝尼乌斯范数

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' = \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

在这里插入图片描述

在这里插入图片描述

1.10 梯度消失和梯度爆炸

1.11 神经网络的权重初始化

1.12 梯度的数值逼近

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)

双边误差公式的结果比单边的更准确

1.13 梯度检验

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!

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)

训练一次的时间可能过长

if mini-batch size = 1:stochastic gradient descent (X^{\{1\}},Y^{\{1\}}) = (X^{(1)},Y^{(1)})

但是效率过于低下

2.3 指数加权平均

V_t = \beta V_{t-1}+(1-\beta)\theta_t

2.4 理解指数加权平均

在这里插入图片描述

2.5 指数加权平均的偏差修正

V_t = \frac{\beta V_{t-1}+(1-\beta)\theta_t}{1-\beta^t}

主要是修正初期的误差

2.6 动量梯度下降法 gradient descent with momentum

问题:纵轴波动过大,横轴前进较小

目标:纵轴降低波动,横轴加速前进

类比:碗里面的小球获得加速度而加速前进

在这里插入图片描述

2.7 RMSprop

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的更新较小\\

2.8 Adam优化算法(adaptive moment estimation)

Adam算法结合了momentum算法和RMSprop算法
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}}\\

2.9 学习率衰减

1 epoch = 1 pass through data
\alpha = \frac{1}{1+decay_{rate}*epoch_{num}}*\alpha_0\\ \alpha_0 = 0.2,decay_{rate} = 1

epoch \alpha
1 0.1
2 0.067
3 0.05
4 0.04

其他衰减方法
\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的批次)\\ 离散衰减学习率

2.10 局部最优的问题

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

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

3.1 调试处理(tuning process)

超参数调节:hyperparameters
\alpha,\beta,\beta_1,\beta_2,layers,hidden \quad u,learning \quad decay\quad rate,mini-batch \quad size

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]}\\ activation\quad function:t = e^{z^{[l]}}\\ a^{[l]}_i = \frac{t_i}{\sum_{i}t_i}
最后输出的向量和为1,代表不同输出结果的概率大小。

softmax分类器在没有隐藏层的情况下,有类似线性的决策边界,但可以有超过两个分类

在这里插入图片描述

3.9 训练一个softmax分类器

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]

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))
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容