其他分享
首页 > 其他分享> > 【Deep Learning】优化深度神经网络

【Deep Learning】优化深度神经网络

作者:互联网

本文为吴恩达 Deep Learning 笔记


深度学习的实用层面


概念

训练 / 验证 / 测试:

Training Set 训练集

Development Set 验证集

Test Set 测试集

偏差 / 方差:

Bias 偏差

Variance 方差

Underfitting 欠拟合

Overfitting 过拟合

Optimal Error / Bayes Error 理想误差 / 贝叶斯误差

j5rtJg.png

机器学习的基本方法:


正则化

正则化:

Regularization 正则化

L1 Regularization L1 正则化

L2 Regularization L2 正则化

Regularization Parameter 正则化参数

Frobenius Norm Frobenius 范数

Weight Decay 权重下降

丢弃法正则化:

Dropout Regularization 丢弃法

Inverted Dropout Technique 反向随机失活技术

dl = np.random.rand(al.shape[0], al.shape[1]) < keep_prob  # keep_prob 是要保留的神经元比例
al = np.multiply(al, dl)
al /= keep_prob  # 使下一层神经元的输入值尽量保持不变

理解丢弃法:

其他正则化方法:

Data Augmentation 数据增强

Early Stopping 早停法


输入

标准化输入:

Normalizing 标准化


梯度

梯度消失和梯度爆炸:

Vanishing Gradients 梯度消失

Exploding Gradients 梯度爆炸

神经网络的权重初始化:

梯度的数值逼近:

梯度检验:

关于梯度检验的注记:


优化算法


Mini-batch

Mini-batch 梯度下降:

Batch Gradient Descent 批梯度下降法

Mini-batch Gradient Descent Mini-batch 梯度下降法

理解 Mini-batch 梯度下降:

Stochastic Gradient Descent 随机梯度下降


指数加权平均

指数加权平均:

Exponentially Weighted Averages 指数加权平均

理解指数加权平均:

v = 0
while (true):
    get next theta
    v := beta * v + (1 - beta) * theta

指数加权平均的参数修正:


其他优化算法

动量梯度下降:

Gradient Descent With Momentum 动量梯度下降

RMSprop:

Root Mean Square Prop (RMSprop) 均方根传递

Adam 优化算法:

Adaptive Moment Estimation 自适应矩阵估计

学习率衰减:

Learning Rate Decay 学习率衰减


局部最优化

局部最优化问题:

Local Optima 局部最优化

Saddle Point 鞍点

Plateau 停滞区


总结

j5rNWQ.png


超参数 批标准化 编程框架


超参数调试

调试过程:

为超参数选择合适的范围:

超参数训练的实践:

Babysitting One Model 只对一个模型进行训练

Training Many Models In Parallel 对多个模型同时进行训练


批标准化

标准化网络中的激活函数:

Batch Normalization 批标准化

将 Batch Norm 应用于神经网络:

Batch Norm 为什么凑效:

Covariate Shift 列分布差异

Batch Norm 在测试集上的使用:


多分类

Softmax 回归:

训练一个 Softmax 分类器:


编程框架

编程框架:

Tensorflow:

import numpy as np
import tensorflow as tf

cofficients = np.array([[1.],[-10.],[25.]])
w = tf.Variable(0,dtype=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()
session.run(init)
print(session.run(w))

for i in range(1000):
    session.run(train, feed_dict=(x:coefficients))
print(session.run(w))

'''
# 另一种写法
with tf.Session() as session:
    session.run(init)
    print(session.run(w))
'''

参考

标签:frac,梯度,神经网络,Deep,beta,Learning,theta,alpha,dW
来源: https://www.cnblogs.com/wxy4869/p/16485510.html