神经网络和深度学习
深度学习
- 什么是神经网络?
- 神经网络的监督学习
- 为什么深度学习会兴起?
- 关于这门课?
- 课程资源
神经网络的编程基础
- 二分类
- 逻辑回归的代价函数
- 梯度下降法
- 导数
- 跟多的代数例子
- 计算图
- 使用计算图求导数
- 逻辑回归中的梯度下降
- m个样本的梯度下降
- 向量化
- 向量化的更多例子
- 向量化逻辑回归
- 向量化logistic回归的梯度输出
- Python中的广播
- 关于python numpy向量的说明
- jupyter/iPython Notebooks快速入门
- 选修logistic损失函数的释放
浅层神经网络
- 神经网络概述
- 神经网络的表示
- 计算一个神经网络的输出
- 多样本向量化
- 向量化实现的解释
- 激活函数
- 为什么需要非线性激活函数?
- 激活函数的导数
- 神经网络的梯度下降
- 直观理解反向传播
- 随机初始化(Random+Initialization)
深层神经网络
- 深层神经网络
- 前向传播和反向传播
- 深层网络中的前向传播
- 核对矩阵的维数
- 为什么使用深层表示?
- 搭建神经网络块
- 参数vs超参数
- 深度学习和大脑的关联性
改善深层神经网络:超参数调试、正则化、以及优化
深度学习实践层面
- 训练、验证、测试集(Train/Dev/Test sets)
- 偏差、方差(Bias/Vavriance)
- 机器学习基础
- 正则化(Regularization)
- 为什么正则化有利于预防过拟合
- dropout正则化
- 理解dropout
- 其他正则化
- 归一化输入(Normalizing inputs)
- 梯度消失/梯度爆炸(Vanishing / Exploding gradients)
- 神经网络的权重初始化
- 梯度的数值逼近(Numerical approximation of gradients)
- 梯度检验(Gradient checking)
- 梯度检验应用的注意事项(Gradient Checking Implementation Notes)
优化算法(Optimization algorithms)
-
Mini-batch梯度下降(Mini-batch gradient descent)
-
理解mini-batch梯度下降法(Understanding mini-batch gradient descent)
-
指数加权平均数
-
理解指数加权平均数
-
指数加权平均数的偏差修正
-
动量梯度下降法(Gradient descent with Momentum)
v d w = β v d w + ( 1 − β ) d w v d b = β v d b + ( 1 − β ) d b W = W − α v d w , b = b − α v d b H y p e r p a r a m e t e r s : α , β ( β = 0.9 ) v_{dw} =\beta v_{dw} + (1-\beta){dw}\\ v_{db} = \beta v_{db} + (1-\beta){db}\\ W = W - \alpha v_{dw}, b = b - \alpha v{db}\\ Hyperparameters:\alpha, \beta(\beta = 0.9) vdw=βvdw+(1−β)dwvdb=βvdb+(1−β)dbW=W−αvdw,b=b−αvdbHyperparameters:α,β(β=0.9) -
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 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}}},b = b - \alpha\frac{db}{\sqrt{S_{db}}} Sdw=βSdw+(1−β)dW2Sdb=βSdb+(1−β)db2W=W−αSdwdw,b=b−αSdbdb
-
Adam优化算法(Adam optimization algorithm)
Adam算法结合了Momentum和RMSProp梯度下降法,能有效适用于不同神经网络。
Momentum
v d w = β 1 v d w + ( 1 − β 1 ) d w v d b = β 1 v d b + ( 1 − β 1 ) d b v_{dw} =\beta_1 v_{dw} + (1-\beta_1){dw}\\ v_{db} = \beta_1 v_{db} + (1-\beta_1){db}\\ vdw=β1vdw+(1−β1)dwvdb=β1vdb+(1−β1)db
RMSprop
S d w = β 2 S d w + ( 1 − β 2 ) d W 2 S d b = β 2 S d b + ( 1 − β 2 ) d b 2 S_{dw} = \beta_2{S_{dw}} + (1-\beta_2)dW^2 \\ S_{db} = \beta_2{S_{db}} + (1-\beta_2)db^2 \\ Sdw=β2Sdw+(1−β2)dW2Sdb=β2Sdb+(1−β2)db2
计算偏差修正
v d W c o r r e c t e d = v d w 1 − β 1 t v d b c o r r e c t e d = v d b 1 − β 1 t S d W c o r r e c t e d = S d w 1 − β 2 t S d b c o r r e c t e d = S d b 1 − β 2 t v^{corrected}_{dW} = \frac{v_{dw}}{1-\beta^t_1}\\ v^{corrected}_{db} = \frac{v_{db}}{1-\beta^t_1} \\ S^{corrected}_{dW} = \frac{S_{dw}}{1-\beta^t_2}\\ S^{corrected}_{db} = \frac{S_{db}}{1-\beta^t_2} vdWcorrected=1−β1tvdwvdbcorrected=1−β1tvdbSdWcorrected=1−β2tSdwSdbcorrected=1−β2tSdb
更新权重
< E m p t y M a t h B l o c k > <Empty \space Math \space Block> <Empty Math Block>
b = b - \frac{v{corrected}_{db}}{\sqrt{S{corrected}_{db}} + \epsilon}\ -
学习率衰减(Learning rate decay)
α = 1 a + d e c a y − r a t e ∗ e p o c h − n u m ∗ α 0 \alpha = \frac1{a + decay-rate * epoch-num}*\alpha_0 α=a+decay−rate∗epoch−num1∗α0
-
other learning rate decay methods
$$
f(x) = \left{
\begin{array}{lr}
0.95^{epoch-num}\alpha_0& 指数衰减\
\frac{k}{\sqrt{epoch}}\alpha_0& \
(\frac{1}{2})^{epoch_num}*\alpha_0 & 离散下降(discrete stair cease)\end{array}
\right.
$$ -
局部最优的问题(The problem of local optima)
超参数调试、Batch正则化和程序框架(Hyperparameter tuning)
- 调试处理
- 为超参数选择合适的范围
- 超参数调试实践:Pandas VS Caviar
- 归一化网络的激活函数
- 将Batch Norm拟合进神经网络
- Batch Norm 为什么奏效?
- 测试时的Batch Norm
- Softmax回归(Softmax regression)
- 训练一个Softmax分类器
结构化机器学习项目
机器学习策略一
- 为什么是ML策略?
- 正交化
- 单一数字评估指标
- 满足和优化指标
- 训练/开发/测试集划分
- 开发和测试集的大小
- 什么时候该改变开发/测试集合指标?
- 为什么是人的表现?
- 避免偏差
- 理解人的表现
- 超过人的表现
- 改善你的模型的表现
机器学习策略二
- 进行误差分析
- 清除标注错误的数据
- 快速搭建你的第一个系统,并进行迭代
- 使用来自不同分布的数据进行训练和测试
- 数据分布不匹配是的偏差与方差分析
- 处理数据不不匹配问题
- 迁移学习
- 多任务学习
- 什么是端到端的深度学习?
- 是否要使用端到端的深度学习?
卷积神经网络
卷积神经网络
- 计算机视觉
- 边缘检测示例
- 更多边缘检测内容
- Padding
- 卷积步长
- 三维卷积
- 单层卷积网络
- 简单卷积网络示例
- 池化层
- 卷积神经网络示例
- 为什么使用卷积?
深度卷积网络:实例探究
-
为什么要进行实例探究
-
经典网络
LeNet-5
AlexNet
VGGNet
-
残差网络(ResNets)(Residual Networks )
-
残差网络为什么有用?
-
网络中的网络以及1*1卷积
-
谷歌Inception网络简介
-
Inception网络
-
使用开源的实现方案(Using open-source implementations)
-
迁移学习(Transfer Learning)
-
数据增强(Data augmentation)
-
计算机视觉现状
目标检测
- 目标定位
- 特征点检测
- 目标检测
- 滑动窗口的卷积实现
- Bouding Box预测
- 交并比
- 非极大值抑制
- Anchor Boxes
- YOLO算法
- 候选区(Region proposals)
特殊应用:人脸识别和神经风格转换
- 什么是人脸识别?
- One-Shot学习
- Siamese网络
- Triplet损失
- 人脸验证与二分类
- 什么是神经网络迁移
- 深度卷积网学习什么?
- 代价函数
- 内容代价函数(Content Cost Function)
- 风格代价函数(Style cost function)
- 一维到三维推广
序列模型(Sequence Models)
循环序列模型(ReCurrent Neural Networks)
-
为什么选择序列模型?
-
数学符号
-
循环神经网络模型
-
通过时间的反向传播
-
不同类型的循环神经网络
-
语言模型和序列生成
-
对新序列采样
-
循环神经网络的梯度消失
-
GRU单元
-
长短期记忆(LSTM)
-
对双向循环神经网络
-
深层循环神经网络
自然语言处理与词嵌入(Natural Language Processing and Word Embeddings)
- 词汇表征(Word Representation)
- 使用词汇嵌入
- 词嵌入的特性
- 嵌入矩阵
- 学习词嵌入
- Word2Vec
- 负采样
- Glove词向量
- 情感分类
- 词嵌入出偏
序列模型和注意力机制(Sequence models & Attention mechanism)
- 序列结构的各种序列
- 选择最可能的句子
- 集束搜索
- 改进进集搜索
- 集束缚的误差分析
- Bleu得分
- 注意力模型直观理解
- 注意力模型
- 语音识别
- 触发字检测
- 结论和致谢