深度学习概览
- 1. 2015年,ILSVRCC比赛中,ResNet错误率首次降到5%以下,战胜了人类。
- 2. 机器学习中数据的类型
- 3. 可以认为机器学习就是得到一种概率分布(联合分布 or 条件分布) P θ ( X , Y ) P_\theta\bold(X,Y) Pθ(X,Y) or P θ ( Y ∣ X ) P_\theta\bold(Y|X) Pθ(Y∣X)
- 4. 生成式模型(Generative Model)和判别式模型(Discriminative Model)
- 5. 判别式模型虽然一般比生成式模型效果好,但是不能通过模型任意产生新的数据。
- 6.训练集,验证集, 测试集 划分
- 7.避免过拟合
- 8. 激活函数
- 9. 梯度消失和梯度爆炸
1. 2015年,ILSVRCC比赛中,ResNet错误率首次降到5%以下,战胜了人类。
2. 机器学习中数据的类型
图片:
1. 包含了很多像素点,一个像素一个字节,值为0~255
2. 图像处理中,处理不同图片大小,resize可以用最近邻插值
,双线性插值法
。
3. 处理流程图如下:
- HSV: Hue(色相),Saturation(饱和度),V(Brightness Value)明度。Jittering就是在这三个值上做5~10%随机增减再返回RGB。
文本:
- 分词: 连续文本根据标点空格分成单词列表。
- 去
停词
: 去掉出现频率大,没有啥意义的单词,比如吧,哦,了,it, of ,the … - 正则化:文本统一化,英文–>中文
词嵌入
:n个单词,每个单词对应m长的向量: n × m n \times m n×m矩阵。经验:m 约等于n的四次方根的1到10倍,然后转化成最近的2次幂。
3. 可以认为机器学习就是得到一种概率分布(联合分布 or 条件分布) P θ ( X , Y ) P_\theta\bold(X,Y) Pθ(X,Y) or P θ ( Y ∣ X ) P_\theta\bold(Y|X) Pθ(Y∣X)
条件概率分布,也就是给定X数据集,得到你认为他们的标签们的概率分布。
联合概率分布,就是说 我得到的是 数据集和标签 粘连在一起,都可以看做属性
的情况下的概率分布。
P ( X , Y ) = ∫ P ( Y ∣ X ) P ( X , Y ) d X P(\bold X,\bold Y) = \int P(\bold Y|\bold X) P\bold (\bold X,\bold Y)\mathrm{d}\bold X P(X,Y)=∫P(Y∣X)P(X,Y)dX
4. 生成式模型(Generative Model)和判别式模型(Discriminative Model)
生成式模型: 联合概率分布
判别式模型: 条件概率分布
5. 判别式模型虽然一般比生成式模型效果好,但是不能通过模型任意产生新的数据。
必备常识:
-
可以得到的信息多—> 熵就低。 因为,可以得到信息,那么就越有一定的规则,有序,即熵低。反之,无序,无新信息可获取,熵高。比如,分子运动高度无序,熵高。 一切事物趋于无序,趋于熵增。
-
概率密度分布相对集中, 即(可提供给我们的信息)多, 信息熵就小。 因为,如果概率密度集中,等同于我们知道一个点概率,我们就可以知道别的点很可能也出现。
-
一些定义和证明
H ( X ) = − ∫ P ( X ) log P ( X ) d X H(\bold X) = - \int \bold P(\bold X)\log\bold P(\bold X)\mathrm{d}\bold X H(X)=−∫P(X)logP(X)dX
H ( X , Y ) = − ∫ P ( X , Y ) log P ( X , Y ) d X d Y H(\bold X,\bold Y) = - \int \bold P(\bold X,\bold Y)\log\bold P(\bold X,\bold Y)\mathrm{d}\bold X \mathrm{d}\bold Y H(X,Y)=−∫P(X,Y)logP(X,Y)dXdY
H ( Y ∣ X ) = − ∫ P ( X , Y ) log P ( Y ∣ X ) d X H(\bold Y|\bold X) = - \int \bold P(\bold X,\bold Y)\log\bold P(\bold Y|\bold X)\mathrm{d}\bold X H(Y∣X)=−∫P(X,Y)logP(Y∣X)dX
因此,
H ( Y ∣ X ) = H ( X , Y ) − H ( X ) H(\bold Y|\bold X) =H(\bold X,\bold Y) - H(\bold X) H(Y∣X)=H(X,Y)−H(X)
可以看到条件熵更低,能获得的信息更多。对我们更有益。
6.训练集,验证集, 测试集 划分
机器学习中可以考虑: 0.7, 0.2, 0.1
深度学习中可以考虑: 0.9 0.05, 0.05
7.避免过拟合
- 正则化(L1—> 拉普拉斯先验分布 |L2–>高斯先验分布)
- Early Stopping早停法
- Dropout 神经元
总之从 1.数据集本身,2.正则,3.换模型复杂度上入手。
8. 激活函数
激活函数就是为了引入非线性!
三种常用:
σ
′
=
σ
(
x
)
(
1
−
σ
(
x
)
)
\sigma' = \sigma(x)(1-\sigma(x))
σ′=σ(x)(1−σ(x))
t
a
n
h
′
(
x
)
=
1
−
t
a
n
h
2
(
x
)
tanh'(x) = 1 - tanh^2(x)
tanh′(x)=1−tanh2(x)
ReLu 取值(0,+inf) 导数 :(0, 1)
Sigmoid 取值(0,1) 导数(0, 0.25)
Tanh 取值(-1,1) 导数(0, 1)
回归任务: 线性输出任何值, 损失函数为MSE
分类任务: 线性输出后,加入非线性比如softmax层,再输出结果标签。 损失函数是Cross Entropy损失函数
softmax:
输入指数函数后,指数归一化,就是对应的概率了。
p
i
=
e
x
i
∑
k
=
1
N
e
x
k
p_i = \frac{e^{x_i}}{\sum_{k=1}^{N}e^{x_k}}
pi=∑k=1Nexkexi
思考:
如果有个
e
x
k
e^{x_k}
exk很大,大到超出了浮点数范围,
因此一般会这样:
p
i
=
e
x
i
−
x
m
a
x
∑
k
=
1
N
e
x
k
−
x
m
a
x
p_i = \frac{e^{x_i - x_{max}}}{\sum_{k=1}^{N}e^{x_k-x_{max}}}
pi=∑k=1Nexk−xmaxexi−xmax
x
m
a
x
=
m
a
x
(
x
1
,
x
2
,
.
.
.
,
x
N
)
x_{max} = max(x_1, x_2, ..., x_N)
xmax=max(x1,x2,...,xN)
思考:softmax只有两类的时候就是sigmoid
9. 梯度消失和梯度爆炸
- 一开始权重过大, σ ′ ∗ w > 1 \sigma'*w >1 σ′∗w>1,导致爆炸
- 一开始权重过小, 反向传播后, 最前面几层,梯度消失。(sigmoid , tanh)
10.SGD, Momentum, AdaGrad, Rmsprop, Adam
-
SGD : 批次随机梯度下降
-
Momentum: w t + 1 = w t − m t \bold w_{t+1} = \bold w_t - \bold m_t wt+1=wt−mt
m t = γ . m t − 1 + α d L d w t \bold m_t = \gamma.\bold m_{t-1} + \alpha\frac{dL}{d \bold w_t} mt=γ.mt−1+αdwtdL -
AdaGrad: 类似于NLMS, 记忆梯度平方
G t = ∑ i = 1 t ( d L d w i ) 2 \bold{G_t }= \sum_{i=1}^{t}(\frac{dL}{d\bold w_i})^2 Gt=i=1∑t(dwidL)2
w t + 1 = w t − α d L d w t G t + ϵ \bold w_{t+1} = \bold w_t - \frac{\alpha \frac{dL}{d\bold w_t}}{\sqrt{\bold G_{\bold t}+\epsilon}} wt+1=wt−Gt+ϵαdwtdL -
RMSprop: 不用全部记忆,用移动指数平均。
用 v t v_t vt代替AdaGrad中的 G t G_t Gt
v t = γ v t − 1 + ( 1 − γ ) ( d L d w i ) 2 \bold{v_t} = \gamma \bold{v_{t-1}}+(1-\gamma)(\frac{dL}{d\bold w_i})^2 vt=γvt−1+(1−γ)(dwidL)2
w t + 1 = w t − α d L d w t v t + ϵ \bold w_{t+1} = \bold w_t - \frac{\alpha \frac{dL}{d\bold w_t}}{\sqrt{\bold v_{\bold t}+\epsilon}} wt+1=wt−vt+ϵαdwtdL -
Adam:结合动量和速度