深度前馈网络
1、前言
深度前馈网络(deep feedforward network)是典型的深度学习模型。这种模型被称为前向的,是因为信息流过x的函数,流经用于定义f的中间计算过程,最终到达输出y。在模型的输出和模型本身之间没有反馈链接。当前馈神经网络被扩展成包含反馈连接时,它们被称为循环神经网络。
对于前馈神经网络,将所有的权重值初始话为小随机数是很重要的。偏置可以初始化为0或者小的正值。
2、输出单元
2.1 用于高斯输出分布的线性单元
一种简单的输出单元是基于仿射变换的输出单元,放射变换不带有非线性。这些单元往往被直接称为线性单元。
给定特征h,线性输出单元层产生一个向量
y
ˉ
=
W
T
h
+
b
\bar{y}=W^Th+b
yˉ=WTh+b。
线性输出层经常被用来产生条件高斯分布均值。
2.2 用于Bernoulli输出分布的sigmoid单元
许多任务需要预测二值型变量y的值。具有两个类的分类问题可以归结为这种形式。此时最大似然的方法是定义y在x条件下的Bernoulli分布。
sigmoid输出单元定义为
y
ˉ
=
σ
(
w
T
h
+
b
)
\bar{y}=\sigma{(w^Th+b)}
yˉ=σ(wTh+b)
我们可以认为sigmoid的输出单元具有两个部分。首先,它使用一个线性层来计算
z
=
w
T
h
+
b
z=w^Th+b
z=wTh+b。接着,它使用sigmoid激活函数将z转化成概率。
2.3 用于Multinoulli输出分布的softmax单元
任何时候当我们想要表示哟个具有n个可能取值的离散型随机变量的分布时,我们都可以使用softmax函数。它可以看作是sigmod函数的扩展。
softmax函数最常用作分类器的输出,用来表示n个不同类上的概率分布。
z
=
W
T
h
+
b
z=W^Th+b
z=WTh+b
s
o
f
t
m
a
x
(
z
)
i
=
e
x
p
(
z
i
)
∑
j
e
x
p
(
z
j
)
softmax(z)i=\frac{exp(z_i)}{\sum_j^{}{exp(z_j)}}
softmax(z)i=∑jexp(zj)exp(zi)
log
s
o
f
t
m
a
x
(
z
)
i
=
z
i
−
log
∑
j
e
x
p
(
z
j
)
\log{softmax(z)i}=z_i-\log{\sum_j^{}{exp(z_j)}}
logsoftmax(z)i=zi−logj∑exp(zj)
3、隐藏单元
整流线形单元是隐藏单元极好的默认选择。
除非另有说明,大多数的隐藏单元都可以描述为接受输入向量x,计算仿射变换
z
=
W
T
x
+
b
z=W^Tx+b
z=WTx+b,然后使用一个作用于每个元素的非线性函数g(z)。大多数隐藏单元的区别仅仅在于激活函数g(z)的形式。
g
(
z
)
=
m
a
x
0
,
z
g(z)=max{0,z}
g(z)=max0,z
5、结构设计
通用近似定理表明,一个前馈神经网络如果具有线性输出层和至少一层具有人喝一种“挤压”性质的激活函数(例如logistic sigmoid激活函数)的隐藏层,只要基于网络足够数量的隐藏单元,它可以以任意的精度来近似人喝从一个有限空间到另一个有限空间的Borel可测函数。
具有d个输入,深度为l,每个隐藏层有n个单元的深度整流网络可以描述的线性区域的数量是
6、BP及其他微分算法
在训练过程中,前向传播可以持续向前直到它缠身一个标量代价函数
J
(
θ
)
J(\theta)
J(θ)。反向传播算法允许来自代价函数的信息通过网络向后流动,以便计算梯度。
反向传播仅指计算梯度的方法,而另一种方法,例如随机梯度下降,使用该梯度来进行学习。