一、神经网络
1. 激活函数的选择
我们一般不会选择sigmoid函数,若对于最终结果是0/1的输出层来说可以使用sigmoid函数,因为tanh(正弦函数)一般来说的都是优于sigmoid函数的 而大多数来说我们会使用ReLU函数
2. 为什么需要激活函数
因为我们知道在神经网络中某一个隐藏层节点的激活值计算一般分为两步:先进行一个线性变换,再进行一个非线性变换(也就是激活函数产生作用的地方)。 但是若没有激活函数,那么隐藏层的节点只会进行线性变化,而这样就会导致,无论你的神经网络有多少隐藏层,却只做线性运算,那么还不如直接去掉全部的隐藏层(隐藏层也就失去了存在的意义)
3. 参数与超参数
?区分两者最大的一点就是是否通过数据来进行调整,模型参数通常是有数据来驱动调整,超参数则不需要数据来驱动,而且可以通过对超参数进行改变来影响参数的大小。例如学习率、隐藏层的大小或激活函数的选择等等都是超参数 对于超参数的选择来说,我们的办法就是使参数在一个范围里面取值,然后训练模型,最后选择出最佳的超参数
4.归一化输入
原图:
训练神经网络,其中一个加速训练的方法就是归一化输入。归一化输入需要两个步骤,第一步是零均值化,即每个元素减去均值操作,这步的目的是让数据的均值变成0,公式如下: ①
μ
=
1
m
∑
i
=
1
m
x
(
i
)
\mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}
μ=m1?∑i=1m?x(i) ②
x
(
i
)
=
x
(
i
)
?
μ
x^{(i)}=x^{(i)}-\mu
x(i)=x(i)?μ 效果图:
第二步是归一化方差,这步目的是使数据更加的集中在原点,处理如下: ①
σ
2
=
1
m
∑
i
=
1
m
x
(
i
)
2
\sigma^2=\frac{1}{m}\sum_{i=1}^{m}{x^{(i)}}^2
σ2=m1?∑i=1m?x(i)2 ②
x
(
i
)
=
x
(
i
)
σ
2
x^{(i)}=\frac{x^{(i)}}{\sigma^2}
x(i)=σ2x(i)? 效果图:
5. Batch norm(批归一化)
向深度学习模型输入数据时,标准做法是将数据归一化为零均值和单位方差,这也就是输入归一化,接下来介绍对的是对网络的任意隐藏层的归一化,叫做batch norm
可以对a归一化,也可以对z归一化,不过通常来说我们会使用对z归一化
公式:
6. 指数加权平均数与偏差修正
他的公式为:
v
t
=
β
v
t
?
1
+
(
1
?
β
)
θ
t
v_t=\beta v_{t-1}+(1-\beta)\theta_t
vt?=βvt?1?+(1?β)θt?,他的作用是计算前
1
1
?
β
\frac{1}{1-\beta}
1?β1?条数据的平均数。那么为什么不直接用平均数呢,因为当数据集比较大时,计算平均数会很耗资源,而指数加权平均数则不会,且指数加权平均数可以通过调节β来趋近真正平均数
偏差修正可以修正前期的误差,使指数加权平均数更加准确,公式为:
v
t
=
v
t
1
?
β
t
v_t=\frac{v_t}{1-\beta^t}
vt?=1?βtvt??,
v
t
v_t
vt?同上
7. 梯度下降的优化算法
①Momentum算法
Momentum就是在普通的梯度下降法中引入指数加权移动平均,即定义一个动量,它是梯度的指数加权移动平均值,然后使用该值代替原来的梯度方向来更新
在机器学习中,普通的随机梯度下降法中,由于无法计算损失函数的确切导数,嘈杂的数据会使下降过程并不朝着最佳方向前进,使用加权平均能对嘈杂数据进行一定的屏蔽,使前进方向更接近实际梯度。 公式:
v
d
W
=
β
v
d
W
+
(
1
?
β
)
d
W
v_{dW}=\beta v_{dW}+(1-\beta)dW
vdW?=βvdW?+(1?β)dW和
v
d
b
=
β
v
d
b
+
(
1
?
β
)
d
b
v_{db}=\beta v_{db}+(1-\beta)db
vdb?=βvdb?+(1?β)db
②RMSprop算法
起到的效果是使竖直变化变小,水平变化变大(以二维为例)来使参数空间快速向最佳位置移动。
对于水平方向来说,如果平缓,则历史梯度平方和较小,对应学习下降的幅度较小,水平移动距离变短,这样会减慢梯度下降的速度,所以应该加快水平方向变化
对于竖直方向来说,如果陡峭,则历史梯度平方和较大,对应学习下降的幅度较大,竖直移动距离变长,这样会减慢梯度下降的速度,所以应该减慢竖直方向变化
③Adam算法
adam算法是momentum算法和RMSprop算法结合体 ? 超参数设置:
8. 学习率衰减
学习率衰减的作用是为了防止学习率过大,在收敛到全局最优点的时候会来回摆荡,所以要让学习率随着训练轮数不断按指数级下降,收敛梯度下降的学习步长,最终提高模型效率 此时的学习率衰减公式有多个或者手动设置学习率,分别是:
二、ML策略
1. 正交化
正交化(正交性)是一种系统设计属性,它可以确保修改算法的一个指令或者组成部分将不会对系统的其他组成部分产生或者传播副作用。使得核查算法变得容易,减少测试和开发算法的时间。
2. 评测指标
- 查准率-Precision:是指在所有预测为1的样本中预测正确的比率
- 查全率-Recall:是指在所有真正为1的样本中预测正确的比率
- 若一个算法的调和平均数高则该算法性能就比较好,
F
1
s
c
o
r
e
=
2
P
R
P
+
R
F_1 score=\frac{2PR}{P+R}
F1?score=P+R2PR?
3. 优化指标和满足指标(optimizing and satisficing)
优化指标是指要使该项尽可能的达到最优 满足指标是指要使该项满足要求,达到某种门槛即可
4. 误差分析
手工检查模型识别失误的数据,根据失误数据的特点来确定下一步模型迭代的方向
5. 标注错误的数据是否需要删除
- 对与随机错误(敲错键盘等随机失误)而言,DL是有较强的健壮性的
- 对于系统失误的话,就会对该模型产生不好的效果
如下图,对于标注错误的数据则可以不用处理
三、迁移学习
1. 概念
迁移学习(Transfer Learning)是将已经习得的经验应用到其他活动上。 迁移学习专注于存储已有问题的解决模型,并将其利用在其他不同但相关问题上。比如说,用来辨识汽车的知识(或者是模型)也可以被用来提升识别卡车的能力。
2. 什么适合迁移?
加入我们需要把A模型转移到B模型
- A,B两个模型要有同样的输入
- A模型的数据要远大于B模型的数量,因为B模型的样本比A模型的样本更重要
- A模型的神经网络模型的前几层对B模型也有效
四、多任务学习
1. 概念
在多任务学习中,多个任务是同时开始学习的,它试图让 单个神经网络同时做几件事情 ,而且这几件事是有一定联系的,最后使该神经网络可以很好的处理这几件事情
2. 什么适合多任务?
- 在训练的一组任务,可以共用低层次特征(要求任务有联系)
- 此条没有那么绝对:每个任务数据量相似
- 要训练一个足够大的神经网络,并且在每个任务上的表现也要好
所以多任务学习的替代方法是为每个任务训练一个单独的神经网络
五、端到端学习
1. 概念
简而言之,以前有一些数据处理系统或者学习系统,它们需要多个阶段的处理。那么端到端深度学习就是忽略所有这些不同的阶段,用 单个神经网络代替它。端到端深度学习做的是,训练一个巨大的神经网络,然后fit巨大的数据,最后输出一个可靠的结果
六、其他
1. 结构数据与非结构数据
结构化数据:了解样本每个特征具体是什么,代表什么含义,如房价信息样本 非结构化数据:不知道样本的特征是什么样,如音频样本
本文只用于个人学习与记录,侵权立删
|