http://www.ma-xy.com
目录
第一章 神经网络 1
1.1 机器学习基本模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 回归模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 支持向量机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 常见的损失函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.4 二分类阈值模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.5
二分类
logistic
回归
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.6 偏最小二乘 logistic 回归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.7 logistic 回归的另一种形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.8 MATLAB logistic 回归示例 . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.9 多分类 softmax 回归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1.10 人工神经网络 ANN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2 前向型神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2.1 感知器 perception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2.2 线性神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.2.3 BP 神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.2.4 小波神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.2.5 RBF 径向基神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.2.6 广义回归网络 GRNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.3 竞争型神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.3.1 自组织特征映射 SOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.3.2 自适应共振网络 ARF-i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
1.3.3 学习向量量化神经网络 LVQ . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.3.4 对向传播网络 CPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1.4 反馈型神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.4.1 Hopeld 网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.4.2 双向联想记忆网络 BAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.4.3 盒中脑 BSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
1.4.4 极限学习机 ELM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1
http://www.ma-xy.com
目录 目录
1.4.5 玻尔兹曼机 BM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.4.6 限制玻尔兹曼机 RBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
http://www.ma-xy.com 2 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络
1.1 机器学习基本模型
这一章,我们主要讨论机器学习中的分类回归问题。关于分类问题,前面我们已经单独介绍
了支持向量机 SVM,关于回归问题,前一章我们也系统的介绍了回归模型。下面,我们将梳理
一下回归分类模型,介绍一些损失函数,并重点介绍用于分类问题的 Logistics 回归,最后,我们
将引入神经网络 ANN,后面章节将着重讨论神经网络模型。
观察前面介绍的分类模型 (SVM) 和回归模型,可以发现,其实分类问题和回归问题是相似
的,分类问题在于求解分类线,使样本能够分开,回归问题在于找回归线,使样本尽可能靠近回
归线,二者的本质都是根据样本 (x
i
, y
i
)
n
i=1
来求解函数关系 y = f (x)我们来梳理一下分类回归
模型,设共有 n 个变量 x
i
m 个样本。
1.1.1 回归模型
前一章我们已经介绍了一些回归模型,比如:线性回归、广义线性归、贝叶斯回归等等。
线性回归的目标是寻找一个超平面
y = w
T
x
使估计量和样本之间的离差平方和最小
min
w
||y w
T
x||
2
(1.1)
为了不限于线性,我们将 x 扩展为 ϕ(x),有
y = w
T
ϕ(x)
其中:w R
m
x R
n
ϕ = (ϕ
1
, ϕ
2
, . . . , ϕ
m
)
T
。总之,我们要确定 w,来求解回归线 w
T
ϕ(x)
1
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
1.1.2 支持向量机
对于二分类问题而言,支持向量机的目标是寻找一个超平面,不仅使两类分开,而且使最大
距离最小
max
w,b
1
||w||
(1.2)
s.t. y
i
(w
T
ϕ(x) + b) 1
其中:w R
n
x R
n
1.1.3 常见的损失函数
无论是线性回归还是二分类支持向量机,回归分类问题最终都变为一个最优化问题 (1.1)(1.2)
在机器学习中,目标函数常被称为损失函数,因为我们希望估计值 ˆy
i
和真实值 y
i
之间的损失尽
可能小 (这即是我们的目标)换句话说,最小化损失即为我们的目标。我们用 (y
i
, ˆy
i
) 来度量这
种损失,下面我们来介绍一些常用的损失函数 (y
i
, ˆy
i
)问:为什么要将所有样本损失相加
m
i=1
不能忽略一些样本的损失吗?损失函数 (目标) 的一般形式为
L(w) =
m
i=1
(y
i
, ˆy
i
) =
m
i=1
f
i
(w)
(1) 0 - 1 损失函数
(y
i
, ˆy
i
) =
1 ˆy
i
= y
i
0 ˆy
i
= y
i
(2) 感知损失函数
(y
i
, ˆy
i
) =
1 |ˆy
i
y
i
| > t
0 |ˆy
i
y
i
| t
(3)Hinge loss(合页损失)
(y
i
, ˆy
i
) = max{0, 1 y
i
ˆy
i
}
其中:y
i
{−1, 1}。该损失函数可以用来解决间隔最大化问题,比如支持向量机 SVM
(4) 平方误差损失函数
(y
i
, ˆy
i
) = ( y
i
ˆy
i
)
2
(5) 绝对误差损失函数
(y
i
, ˆy
i
) = |y
i
ˆy
i
|
http://www.ma-xy.com 2 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
(6) 指数损失函数
(y
i
, ˆy
i
) = e
(y
i
ˆy
i
)
其中:y
i
{−1, 1}Adaboost 算法就是采用了这种损失函数,在 Adaboost 中,经过 k 次迭代
后,可以得到
ˆy
(k)
i
(x) = ˆy
(k1)
i
(x) + α
(k)
G
(k)
(x)
Adaboost 每次迭代的目标都是
min
α,G
=
m
i=1
exp
y
i
ˆy
(k)
i
=
m
i=1
exp
y
i
ˆy
(k1)
i
(x) + α
(k)
G
(k)
(x)

(7) 交叉熵损失函数
(y
i
, ˆy
i
) = y
i
log ˆy
i
+ (1 y
i
) log(1 ˆy
i
)
其中:y
i
{0, 1}logistic 回归采用了这种损失函数,并规定 0 log · = 0
(8) 最大似然目标。如果我们有了各样本 y
i
的分布,我们自然希望样本出现的概率最大,于是目
标为样本的联合概率 (极大似然函数) 最大。
L(w) = P {y
1
, . . . , y
m
}
(9) 最大熵损失函数。上面,我们介绍了极大似然函数 (联合概率密度),下面,介绍熵 - 最大熵
方法。设一个随机变量 x 的概率分布为 p(x),则它的信息熵定义为
H(x) =
x
i
p(x
i
) log p(x
i
)
其中:p(x
i
) 表示随机变量 x 取值为 x
i
的概率,p(x
i
) log p(x
i
) 为平均互信息量,记为 I(x
i
)
在,我们可以定义函数
H(y
i
) =
y
i
p(y
i
) log p(y
i
)
目标设置为
L(w) =
m
i=1
H(y
i
)
我们使熵最大化。
(10) 相对熵 (KL 距离)KL 距离用来刻画 2 个随机变量分布的接近程度,相对熵的定义为
D(p||q) =
x
p(x) log
p(x)
q(x)
http://www.ma-xy.com 3 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
于是,定义相对熵目标
(y
i
, ˆy
i
) =
y
i
p(y
i
) log
p(y
i
)
q(ˆy
i
)
我们使相对熵最小化。
(11) 互信息量。熵、相对熵和互信息皆是信息论中的概念,互信息量可以看成是一个随机变量中
包含另一个随机变量的信息量。设两个随机变量为 x, y其联合概率分布为 p(x, y)边缘分布为
p(x), p(y),则它们的互信息量定义为
I(x, y) =
x
y
p(x, y) log
p(x, y)
p(x)p(y)
于是,定义互信息量目标为
(y
i
, ˆy
i
) =
y
i
ˆy
i
p(y
i
, ˆy
i
) log
p(y
i
, ˆy
i
)
p(y
i
)p(ˆy
i
)
(12)
正则化损失函数
L(w) =
m
i=1
(y
i
, ˆy
i
) + λR(w)
其中:λ 为正则化参数,R(w) 为正则项或罚项。注:对于相对熵和互信息量应该是可行的,尚未
确定。
1.1.4 二分类阈值模型
现在,我们仍然考虑二分类问题。X R
m×n
(m 个目标 n 个变量)y B
m
y
i
{0, 1}
们仍然可以写出一条线 (超平面)w
T
ϕ(x),但是,这样给出的估计 ˆy = w
T
ϕ(x) 并不 0, 1 型的,
而是连续的,而 ˆy R
m
, ˆy
i
R,其值远 0 1。既然如此,我们可以设置一个分割点 (
)θ,使 ˆy
i
> θ 1 ˆy
i
< θ 0。接下来的问题是:我们应该如何设置阈值 θ
方法 1θ ˆy = w
T
ϕ(x) 的均值,θ = E(ˆy)这样,θ 虽然是一个未知量,但它隐含在了 w
中,即我们只需要求 w 即可,而不用为 θ 特别求解。
方法 2我们可以根据样本数据 y
i
的类别比例来决定 θ。比如:样本 y
i
0 1 的比例为
2 : 1 那么,我们在给出 ˆy = w
T
ϕ(x) 后,我们取 ˆy
2
3
分位数来作为分割点,分位数前的 ˆy
i
置为 0,之后的设置为 1
依据上面的方法,我们可以写出如下分类模型
ˆy = F(w
T
ϕ(x)|θ)
其中:F(·|θ) 是一个阈值函数
F(x|θ) =
0 x θ
1 x > θ
http://www.ma-xy.com 4 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
1.1.5 二分类 logistic 回归
模型建立
仍然来讨论二分类问题,y
i
{0, 1}。我们仍然能够找到一条线
ˆy = w
T
ϕ(x)
¬我们希望 ˆy 的直方图类似图 (1.1) 的情况 (假设样本中,2 个类别的样本数目差不多)
1.1: 二分类估计模拟直方图
也就是说,更多 ˆy 分散在两端,这样有利于我们分类,ˆy 越大,样本越可能取值为 1ˆy
越小,样本越可能取值为 0
我们自然有当 ˆy 值越大时,y 取值为 1 的可能越大的规律,而恰好有这样一个 sigmoid 函数 f
2
如图 (1.2) 所示
1.2: sigmoid 函数图像
ˆy 越小时,函数值 z 越接近 0 ˆy 越大时,函数值 z 越接近 1所以,我们不能仅局限
ˆy = f
1
(x) = w
T
ϕ(x),还应该再进行一次函数变换 f
2
= sigmoid,于是,整个回归变为
ˆy = f
2
(f
1
(x))
= f
2
(w
T
ϕ(x))
=
1
1 + e
w
T
ϕ(x)
如果我们把上面的 ˆy 视为样本 y = 1 的条件概率,于是有
P (y = 1|x) =
1
1 + e
w
T
ϕ(x)
=
1
1 +
1
e
w
T
ϕ(x)
=
e
w
T
ϕ(x)
e
w
T
ϕ(x)
+ 1
http://www.ma-xy.com 5 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
推得
1
P (y = 1)
=
1
e
w
T
ϕ(x)
+ 1
1
P
1 =
1
e
w
T
ϕ(x)
1
1
P
1
= e
w
T
ϕ(x)
P
1 P
= e
w
T
ϕ(x)
于是有了我们常见的 Logistic 回归模型
ln
P
1 P
= w
T
ϕ(x)
从另一个角度来看,w
T
ϕ(x) 的取值范围为 R y {0, 1}我们要把二者对应起来,P (y = 1)
的取值范围为 [0, 1],那么
P (y = 1)
1 P (y = 1)
(0, )
再对上式取 log,其值的范围就变为 R (−∞, ),即
log
P
1 P
R
接下来的工作是:目标函数 (损失函数) 的确定以及优化算法的设计。
模型参数估计
上面建立的 logistic 回归方程为
P (y = 1|x) = f
2
(w
T
ϕ(x))
=
1
1 + e
w
T
ϕ(x)
将其写为概率形式
P (y
i
= 1 |x
i
) = p
i
=
1
1 + e
w
T
ϕ(x
i
)
看到这个单样本的条件概率分布,我们就会想到极大似然估计,我们求使样本的联合概率密度最
大的 w。由于 y
i
{0, 1},所以上式也可以写出 y
i
的条件密度
P (y
i
|x
i
) = p
y
i
1
(1 p
i
)
1y
i
为了处理方便,仍然假设样本独立同分布,于是它们的联合概率密度 (似然函数)
L(w|x) =
m
i=1
P (y
i
|x
i
) =
m
i=1
p
y
i
i
(1 p
i
)
1y
i
http://www.ma-xy.com 6 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
对上式取对数,有
log L(w|x) =
m
i=1
[y
i
ln p
i
+ (1 y
i
) ln(1 p
i
)]
=
m
i=1
y
i
ln
p
i
1 p
i
+ ln(1 p
i
)
我们的目标是求上面的对数似然函数的极大值点,即
max
w
log L(w|x)
p
i
=
e
w
T
ϕ(x
i
)
1 + e
w
T
ϕ(x
i
)
带入目标 log L(w|x),有
log L(w|x) =
m
i=1
y
i
w
T
ϕ(x
i
) ln
1 + e
w
T
ϕ(x
i
)

对上式 w 求导,有
log L(w) =
m
i=1
(y
i
p
i
)ϕ(x
i
)
在前面的线性回归当中,最大似然模型的极大点是解析形式的,即我们可以给 w 的显
计算公式,这是因为对数似然函数是 w 的一个二次函数。但是对 logistic 回归而言,不再有解析
解了,因为 sigmoid(f
2
) 函数是一个非线性函数。目标函数 log L(w) 是一个凸函数,因此优化
模型存在唯一解。此外,对于 w 还有一种高效的迭代算法,这种算法是基于 Newton-Raphson
代最优框架的。为最小化 ln L(w) E(w),一般的 Netwon - Raphson 的权重 w 更新公式为
w := w H
1
E(w)
由于
E(w) =
m
i=1
(y
i
p
i
)ϕ(x
2
)
H = ∇∇E(w) =
m
i=1
y
i
(1 y
i
)ϕ(x
i
)ϕ
T
(x
i
) = ϕ
T
其中:R 是一个 m ×m 的对角矩阵,R
ii
= y
i
(1 y
i
)经过最优化的洗礼,H 是什么应该是清楚
的。我们看到,Hesse 矩阵不再是常量,而是通过权重 R 依赖于 w这也解释了为什么 w 不存在
解析解。使用 0 y
i
< 1,我们看到对任意向量 u,都有 u
T
u > 0(因为 H 是正定的,所以进行
Cholesby 分解),因此,E(w) w 的一个凸函数。这样,logistic 回归的 Newton - Raphson
http://www.ma-xy.com 7 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
更新公式变为
w : = w (ϕ
T
)
1
ϕ
T
(p y)
= ( ϕ
T
)
1
(ϕ
T
Rϕw ϕ
T
(p y))
= ( ϕ
T
)
1
ϕ
T
RZ
其中:Z 是一个 m 维向量,Z = ϕw R
1
(p y)上述 w 迭代公式的形式是一组加权最小二乘
问题的规范方程。由于权矩 R 不是常量,而是依赖 w我们必须迭代地应用规范方程,每
次使用新的 w 来计算 R然后再来求解 w因此,该算法被称为迭代加权最小平方算法 (IRLS)
Rubin 1983 年开发的。
下面给出 E 的一个近似。和加权最小二乘问题一样,对角矩阵 R 可以看成偏差,因为 logistic
回归的 y 的均值和方差为
E(y) = p
V ar(y) = p(1 p)
实上, IRLS 空间 a w
T
ϕ(x) 线性问解。样,Z 的第 i
Z
i
值。Z
i
w
logistic(sigmoid) 函数的局部线性近似的方法得到
a
i
(w) : a
i
(w) +
d
a
i
dp
i
w
(y
i
p
i
)
= ϕ
T
i
w
p
i
y
i
p
i
(1 p
i
)
= Z
i
IRLS 算法步骤如下:
Step1. 初始化 w
0
,容错误差 ε
Step2. 计算 p
i
。对 i = 1 , . . . , m
p
i
= p
i
(w) =
e
w
T
ϕ(x
i
)
1 + e
w
T
ϕ(x
i
)
Step3. 计算 Z
i
E
i
= ϕ
T
i
(x
i
)w
p
i
y
i
p
i
(1 p
i
)
Step4. 更新 w
w := (ϕ
T
wϕ)
1
ϕ
T
RZ
其中:R 为对角矩阵,R
ii
= p
i
(1 p
i
)
Step5. 终止条件。不终止则返回 Step2
http://www.ma-xy.com 8 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
参数显著性检验
在前面的参数回归中,我们没有给出线性模型的系数显著性检验和拟合优度检验,而在一般
的计量经济学或者统计学书籍中都会有模型参数的显著性检验以及模型检验,并且在模型估计结
束后,各种统计软件 (R,SPSS ) 都会给出相应的检验结果。下面,我们来简单的看一下 logistics
回归模型的系数显著性检验和模型拟合优度检验,很明显,这里用到的是统计基础中假设检验的
知识。
上面建立的 logistic 回归模型为
P (y = 1|x) =
1
1 + e
w
T
ϕ(x)
其中:w = (w
1
, w
2
, . . . , w
n
)。前面我们曾提到过,如果实际中,某一系数 w
i
不应该存在,而我
们在建立模型时硬是将其设计在模型中,最后仍然会给出 w
i
的一个估计,虽 w
i
可能不是很
合理。那么,我们如何检验模型中的参数是否应该存在呢?或者说如何检验模型的合理性。我们
知道,如果 w
i
不应该存在,我们就假设 w
i
= 0 ,然后用样本数据对其进行检验。
(1)
原假设
H
0 :
w
i
= 0(
i
= 1
,
2
, . . . , n
)
。对于此假设,常用的检验统计量
Wald
检验统计
量和似然比检验统计量。Wald 检验统计量为
T =
ˆw
i
0
se( ˆw
i
)
2
χ
2
(1)
Wald 检验, w 的绝对值很大时,se(w) 会膨胀,导致 Wald 统计量的值很小,第二类错误
概率增加,应拒绝 H0 却未拒绝。为此,可以使用如下的似然比统计量
G = 2 ln
不含x
i
似然值
x
i
似然值
χ
2
(1)
(2) 原假设 H0 : w
1
= w
2
= ··· = w
n
= 0 。对于此假设,Wald 检验统计量为
T =
ˆw
se( ˆw
)
2
χ
2
(n)
似然比统计量为
G = 2
m
i=1
y
i
ln p
i
+ (1 y
i
) ln(1 p
i
)
[n
1
ln(n
1
) + n
0
ln(n
0
) n ln n] χ
2
(n)
其中:n
0
表示样本中 y
i
= 0 的样本数。
拟合优度检验
我们常用模型的离差平方和来衡量估计值与真实值之间的接近程度,下面,给出 3 个用于评
价模型好坏的度量
(1) 对数似然函数值
2 log L = 2
m
i=1
y
i
ln
p
i
y
i
+ (1 y
i
) ln
1 p
i
1 y
i
http://www.ma-xy.com 9 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
2 log L 越大,似然函数值越小,拟合效果越差。
(2)AICAIC(1973) Akaike’s Information Criterion 的缩写,计算形式为
AIC = 2 log l + 2(k + s)
其中:k 为自变量个数,s 为反应变量类别总数减 1。多模型比较时,值越小,说明模型越好。
(3)SCSC Schnarts Criterion 的缩写,是 AIC 的改进,其计算形式为
SC = 2 log L + 2(k + s) ln(n)
此外,对于分类模型,我们还有混淆矩阵 (错分矩阵) ROC 曲线等评价准则,我们会在决
策树章节进行介绍。
注:估计量 w 的渐进方差和协方差可以有信息矩阵的逆估计出来,设信息矩阵为
I =
2
L(w)
w
j
w
l
则方差为
V ar( ˆw) = I
1
SE( ˆw
j
) = ( V ar(w
j
))
1
2
j = 1, 2, . . . , n
1.1.6 偏最小二乘 logistic 回归
无论是多元线性回归还是上面介绍的 logistic 回归,都可能存在共线性问题。关于共线性问
题,我们建立的线性回归模型为
y = w
0
+ w
1
x
1
+ w
2
x
2
+ ··· + w
n
x
n
+ ε
如果上面的自变量 x
1
, x
2
, . . . , x
n
之间互相相关,那模型就不好用了,比 x
2
= 2x
1
,那么我们
就不需要 x
2
变量了,x
2
可以完全由 x
1
来代替,而且在 w 的求解公式中,我们要求 X 是非奇异
的, x
i
, x
j
之间具有线性相关性时,X 的行列式为 0因此,我们在建立模型之前,要假设各
变量之间不相关。那么,我们如何检验各变量之间的相关性呢?对于这个问题,可以依据前面介
绍的变量相关性检验方法。另一个问题是:我们如何检验模型的共线性呢?这个问题可以参考基
础的计量经济学书籍。下面,我们来建立偏最小二乘 logistics 回归,此模型是维兹和德昂赫斯于
2002 年提出的。我们仍然假设有 n 个自变 x
i
m 样本,并设因变量 y 分类数 c 类。
模型共分为两大部分:第一部分是提取偏最小二乘成分,可以视为主成分分析;第二部分即为一
般的 logistics 回归建模。
提取偏最小二乘成分
(1)
提取第一个偏最小二乘成分
t
1
Step1. 分别建立因变量 y 对自变量 x
j
, j = 1, . . . , n 的普通 (无常数项)logistics 回归。在模型中,
http://www.ma-xy.com 10 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
x
j
的回归系数为 w
1j
Step2.w
1
= ( w
11
, w
12
, . . . , w
1n
)
T
。将 w
1
标准化,得 w
1
w
1j
=
w
1j
n
j=1
(w
1j
)
2
Step3.
t
1
=
Xw
1
||w
1
||
=
Xw
1
w
T
1
w
1
其中:X 为样本矩阵,w 为向量。
(2) 提取第二个偏最小二乘成分 t
2
Step1.
X = t
1
p
T
1
+ X
1
其中:p
1
为回归系数
p
1
=
X
T
t
1
||t
1
||
2
x
1
为残差矩阵。记 X
1j
X
1
的第 j 列。
Step2. 对每个 x
j
,建立 y t
1
, X
1
j
logistics 回归,并记系数为 w
2j
Step3.w
2
标准化后得到 w
2
Step4.
t
2
=
X
1
w
2
w
T
2
w
2
(3) 提取第 h 个最小二乘成分 t
h
Step1.
X = t
1
p
T
1
+ t
2
p
T
2
+ ··· + t
h1
p
T
h1
+ X
h1
其中:X
h1
为残差矩阵,X
h1,j
X
h
1
的第 j 列向量,
p
k
=
X
T
k1
t
k
||t
k
||
2
Step2. 对每个 x
j
,建立 y t
1
, t
2
, . . . , t
h1
, X
h1,j
logistics 回归,记 w
hj
X
h1,j
的回归
系数。
Step3. w
h
标准化得到 w
h
Step4.
t
h
=
X
h1
w
h
w
T
h
w
h
http://www.ma-xy.com 11 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
Step5. t
h
表示为原始变量的线性组合
t
h
= X ˜w
h
其中:
˜w
h
=
h1
k=1
I w
k
p
T
k
w
h
建立 logistics 回归
建立 logistics 回归
ln
P (y c|t
1
, t
2
, . . . , t
h
)
1 P
= β
0c
+
n
j=1
b
j
x
j
其中:
b
j
=
h
k=1
β
j
˜w
kj
β 为待求参数。
1.1.7 logistic 回归的另一种形式
在前面的 logistics 回归中,我们将因变量 y 的标签设置为 0 1,即 y
i
{0, 1}y B
m
x R
m×n
,即共有 n 个变量,m 个样本,w R
n
(不含常数项)ϕ = ( ϕ
1
, ϕ
2
, . . . , ϕ
n
)
现在,我们将 y 标签改为 {−1, 1},其余不变,这种标签设置和 SVM 中的相同。我们仍
然求 y
i
= 1 的概率,y
i
取值的概率可以用下式表示
P (y
i
|x; w) =
1
1 + e
y
i
(w
T
ϕ(x
i
))
我们对上面的概率进行简单的说明:当 w
T
ϕ(x) 很小时,¬y
i
= 1 ,则其概率图像如图 (1.3)
1.3: 第二种 logis 回归概率示意图 1
y
i
= 1,则其概率图像如图 (1.4)
http://www.ma-xy.com 12 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
1.4: 第二种 logis 回归概率示意图 2
并且有
P (y
i
= 1 |x; w) + P (y
i
= 1|x; w) = 1
注:因为
1
1 + e
x
+
1
1 + e
x
=
e
x
1 + e
x
+
1
1 + e
x
= 1
所以,上面的概率 P (y
i
|x; w) 是合理的。写出样本的似然函数 L(w),有
L(w) =
m
i=1
P (y
i
) =
m
i=1
1
1 + e
y
i
(w
T
ϕ(x
i
))
对上式取对数,然后极大化 log L(w)
max
w
log L(w) =
m
i=1
log
1 + e
y
i
(w
T
ϕ(x
i
))
上面的问题是通常的最优化问题。我们在上面的优化目标中加入 L
2
正则化项
1
2
||w||
2
,有
min
w
C
m
i=1
log
1 + e
y
i
(w
T
ϕ(x
i
))
+
1
2
||w||
2
其中:log lnC 为权重,可取
1
m
上面的这个优化目标就是许多优化文章中使用的测试函数,
许多 SGD 以及 SGD 改进算法都是以上面的函数作为目标。另外,scikit - learn 也使用上述
标。注:关于贝叶斯 logistics 回归和变分 logistics 回归可以参考 PRML 相应的章节。
1.1.8 MATLAB logistic 回归示例
在回归模型 ˆy = w
T
x , At each set of values for the predictors, the response has a normal
distribution with mean ˆy. 在二分类 logistic 回归 ln
P
1P
= w
T
ϕ(x) 中,ln
P
1P
y = 1 的概率
的相应的变化。更一般的,At each set of values for the predictors, the response has a distribution
that can be normal, binomial, Poisson, gamma, or inverse Gaussian, with parameters including
a mean ˆy,给 ˆy 设置一个链接函数 f,于是得到更为一般的回归模型
f(ˆy) = w
T
x
http://www.ma-xy.com 13 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
因变 y 可能的分布有许多种,如果 y 取值为实数,可以假定其分布为正态分布,如 y
取值为 0, 1, 2, ... 非负整数,可以假定其分布为 poisson 分布,如果 y 取值为正数,可以假定其分
布为逆高斯分布或者 gamma 分布,如果 y 取值为 0, 1或者 0, 1, 2, 3(即分类型数据)则可以假
定其分布为二项分布。对于不同的分布,我们可以设置不同的 link(链接) 函数 f 即便对于同一
种分布,也可以设置不同的链接函数。MATLAB 中支持的因变量分布类型如表 (1.1) 所示
1.1: 因变量类型及假设分布
Response(y) Data Type Suggested Model Distribution Type
Any real number ’normal’
Any positive number ’gamma’ or ’inverse gaussian’
Any nonnegative integer ’poisson’
Integer from 0 to n ’binomial’
对不同的假设分布类型,可选用的 link 函数如表 (1.2) 所示
1.2:
假设分布及链接函数
Value Description
’comploglog’ log(log((1µ))) = Xb
’identity’, default for the distribution ’normal’ µ = Xb
’log’, default for the distribution ’poisson’ log(µ) = Xb
’logit’, default for the distribution ’binomial’ log(µ/(1µ)) = Xb
’loglog’ log(log(µ)) = Xb
’probit’ Φ
1
(µ) = XbΦ 是正态分布函数
’reciprocal’, default for the distribution ’gamma’ µ
1
= Xb
p (a number), default for the distribution ’inverse gaus-
sian’ (with p = 2)
µ
p
= Xb
MATLAB 示例如下
1 x = [2100 2300 2500 2700 2900 . . .
2 3100 3300 3500 3700 3900 4100 4 3 00 ] ;
3 n = [ 4 8 42 31 34 31 21 23 23 21 16 17 2 1 ] ;
4 y = [ 1 2 0 3 8 8 14 17 19 15 17 2 1 ] ;
5 % pro b i t
6 g = f i t gl m (x , [ y n ] , . . .
7 l in ea r , d is tr , binomial , . . .
8 l i nk , pr o b it )
9 % p r o bit l i nk s
10 s = {@norminv ,@(x ) 1. / normpdf (norminv (x) ) , @normcdf };
11 g = f i t gl m (x , [ y n ] , . . .
12 l in ea r , d is tr , binomial , l i nk , s )
13
http://www.ma-xy.com 14 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
1.1.9 多分类 softmax 回归
softmax 模型建立
前面,我们讨论了二分类问题 {0, 1} 或者 {−1, 1} logistics 回归,下面,来看一下多分类
问题。假设因变量 y k 类,标签值为 {1, 2, . . . , k}并且仍然设有 n 个自变量 x
i
m 个样本。
如果我们对此多分类问题采用 logistics 回归,则可以有如下两种做法:
(1) y 中的每个类做二分类 logistics 回归,例如:对于第 c 类而言, y = c 设置为一类,y = c
设置为另一类。
ln
P (y
i
= 1)
1 P (y
i
= 1)
= w
T
1
ϕ(x)
. . .
ln
P (y
i
= k)
1 P (y
i
= k)
= w
T
k
ϕ(x)
(2) 我们以第 c 类为例, y c 设置为一类,y > c 设置为另一类,然后建立二分类 logistics
ln
P (y
i
c)
1 P (y
i
c)
= w
T
c
ϕ(x)
上面两种方法都要建立 k 个二分类 logistics 回归。下面,我们来介绍另一种基于 logistics
多分类回归 - softmax 回归。我们要求 y
i
= j 的概率 P (y
i
= j|x
i
)。由于
k
j=1
P (y
i
= j) = 1,那
P (y
i
= j) 等价于
P (y
i
|x
i
, w) = P
I(y
i
=1)
1
P
I(y
i
=2)
2
···P
I(y
i
=k)
k
(1.3)
其中:I(y
i
= j) 为特征函数, y
i
= j 时,I(y
i
= j) = 1否则为 0P
k
P (y
i
= k|x
i
, w)
注意 a
0
= 1 0
0
= 1
由于
I(y
i
= k) = 1
k1
j=1
I(y
i
= j)
http://www.ma-xy.com 15 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
所以 y
i
的概率分布 (1.3) 可以写为
P (y
i
|x
i
, w) = P
I(y
i
=1)
1
P
I(y
i
=2)
2
···P
I(y
i
=k)
k
(1.4)
= P
I(y
i
=1)
1
P
I(y
i
=2)
2
···P
1
k1
j=1
I(y
i
=j)
k
a=e
log
e
a
======= exp
log
e
P
I(y
i
=1)
1
+ log
e
P
I(y
i
=2)
2
+ ··· + log
e
P
1
k1
j=1
I(y
i
=j)
k
= e
I(y
i
=1) log P
1
+I(y
i
=2) log P
2
+···+
(
1
k1
j=1
I(y
i
=j)
)
log P
k
最后一项分散
========= e
I(y
i
=1) log(P
1
/P
k
)+I(y
i
=2) log(P
2
/P
k
)+···+I(y
i
=k1) log(P
k1
/P
k
)+log P
k
= e
k
j=1
I(y
i
=j) log P (P
j
/P
k
)+log P
k
= e
η
T
T (y
i
)a(η)
其中:η
j
= log P
j
/P
k
η = (η
1
, ··· , η
k
)
T
T (y
i
) = [ I(y
i
= 1) , ··· , I(y
i
= k)]
T
a(η) = log P
k
由于
η
j
= log P
j
/P
k
P
j
= P
k
e
η
j
j
P
j
= 1 ,可以得到
j
P
k
e
η
j
= 1
P
k
j
e
η
j
= 1
P
k
=
1
j
e
η
j
于是,得到
P
j
= P
k
e
η
j
=
1
j
e
η
j
e
η
j
=
e
η
j
j
e
η
j
现在,我们可以假设我们的模型是
P
j
=
e
w
T
j
ϕ
j
e
w
T
j
ϕ
即样本 y
i
分为 j 类的概率
P
j
= P (y
i
= j|x
i
, w) =
e
w
T
j
ϕ
j
e
w
T
j
ϕ
也就是说,我们在判断每一类 j 时,都有一个权重 w
j
与之对应,所以对某个样本 x
i
, y
i
而言,
k 中各类的概率如表 (1.3) 所示
http://www.ma-xy.com 16 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
1.3: 样本 i 的类别概率
类别 1 2 . . . k
P
j
(
x
i
, y
i
)
· ·
e
w
T
j
ϕ
j
e
w
T
j
ϕ
·
softmax 模型写为矢量形式 (无常数项),有
P = f (ϕ(x)w)
言,ϕ(x) R
m×n
w R
n×1
y R
m×1
P R
m×1
言,
ϕ(x) R
m×n
w R
n×k
P R
m×k
至此,softmax 多分类模型已经建立好了,下面的工作就是求样本的似然函数以及对数似然
函数,然后求 w R
n×k
使其似然函数最大。
softmax 模型的求解
根据上面 y
i
的概率分 (1.3) (1.4) 我们可以写出样本 y
i
(i = 1, 2, . . . , m) 的联合概率分
(似然函数)
L(w) =
m
i=1
P (y
i
)
=
m
i=1
P
I(y
i
=1)
1
P
I(y
i
=2)
2
···P
I(y
i
=k)
k
=
m
i=1
k
j=1
e
w
T
j
x
i
j
e
w
T
j
x
i
I(y
i
=j)
对上式取对数,有
ln L(w) =
m
i=1
ln
k
j=1
e
w
T
j
x
i
j
e
w
T
j
x
i
I(y
i
=j)
=
m
i=1
k
j=1
I(y
i
= j) log
e
w
T
j
x
i
j
e
w
T
j
x
i
=
m
i=1
k
j=1
I(y
i
= j) log P (y
i
= j|x
i
, w
j
)
(1.5)
上式 (1.5) 可以看成是 logistics 回归的扩展,因为 logistics 回归的目标函数可以写为
ln L(w) =
m
i=1
1
j=0
I(y
i
= j) log P (y
i
= j|x
i
, w)
http://www.ma-xy.com 17 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
将对数似然函数 (1.5) 求导,有
w
j
ln L(w) =
ln L
w
j
=
m
i=1
j
e
w
T
j
x
i
e
w
T
j
x
i
I(y
i
= j) · e
w
T
j
x
i
· x
i
·
j
e
w
T
j
x
i
e
w
T
j
x
i
· e
w
T
j
·x
i
x
i
j
e
w
T
j
x
i
2
=
m
i=1

I(y
i
= j)
e
w
T
j
x
i
j
e
w
T
j
x
i
· x
i
=
m
i=1

I(y
i
= j) P (y
i
= j|x
i
, w
j
) · x
i

将极大似然函数估计的目标 max ln L(w) 变为极小化问题 min J(w) = ln L(w)并用梯度下降、
L-BFGS 等算法进行求解。
w
j
:= w
j
α
w
j
ln L(w) j = 1, 2, . . . , k
softmax 回归求解的特点
softmax 回归有一个特点:它有一个冗余的参数集, w ΘΘ 是一个过大的参数集。我
们从向量 w
j
出发,如果 w
j
减去一个 ψ 变为 w
j
ψ,则 softmax 模型变为
P (y
i
= j|x
i
, w
j
ψ) =
e
(w
j
ψ)
T
x
i
j
e
(w
j
ψ)
T
x
i
=
e
w
T
j
x
i
e
ψ
T
x
i
j
e
w
T
j
x
i
e
ψ
T
x
i
=
e
w
T
j
x
i
j
e
w
T
j
x
i
=: P (y
i
= j|x
i
, w
j
)
P (y
i
= j|x
i
, w
j
ψ) = P (y
i
= j|x
i
, w
j
)换句话说, w
j
中减去 ψ 完全不影响预测结果,
表明 softmax 归的参数空间 Θ 是冗余的。进一步,如果 w
是目标函 ln L(w) 的极小点,
w
ψ 同样是目标函数的极小点,并且 ψ 是任意向量,因此,使 ln L(w) 极小化的解不是
唯一的。幸运的是,由于 J(w) = ln L(w) 是一个凸函数,所以梯度下降算法仍然可用,不会遇
到局部解。但是牛顿法以及基于牛顿法的算法则没那么幸运, Hesse 矩阵是奇异的,这导致牛
顿法不能应用,因此需要用改进的 L-BFGS 等方法。
正则化 softmax
我们在目标 J(w) 中引入正则项
1
2
m
i=1
k
j=1
w
2
ij
(w R
n×k
无常数项),则我们的目标函数变为
J(w) = C
m
i=1
k
j=1
I(y
i
= j) log
e
w
T
j
x
i
j
e
w
T
j
x
i

+
λ
2
||w||
2
http://www.ma-xy.com 18 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
其中:||w||
2
=
m
i=1
k
j=1
w
2
ij
λ > 0 为罚权重。有了 λ 项之后,J(w) 就变为一个严格的凸函数,
时,就有一个唯一解 w
,并且 Hesse 矩阵变为可逆,梯度下降法、牛顿法以及 L-BFGS 等算法
都可以使用了。目标函数 J(w) 的导数为
w
j
J(w) = C
m
i=1

I(y
i
= j) P (y
i
= j|x
i
, w
j
) · x
i

+ λw
j
1.1.10 人工神经网络 ANN
神经网络的导出
我们从前面的线性回归模型开始:对 y 的估计为
ˆy = w
T
ϕ(x)
w 给定之后,对每个样本 x
i
, y
i
,都能给出其 y
i
的估计 ˆy
i
。现在,我们来把它改进,像前面
softmax 那样,可以给出 l 个权重向量 w
j
(j = 1, 2, . . . , l),每一个权重向量 w
j
都会有一个估
ˆy
l
= w
T
l
ϕ(x),然后把 l 个线性模型进行组合。或者,从组合预测的思想来看,通过一个模
ˆy = w
T
ϕ(x) 以给出 y 一个估计,那么不妨多造几个模型来估计 y,然后将这些估计值加权
组合,例如
ˆy
1
= w
T
1
ϕ(x)
ˆy
2
= w
T
2
ϕ(x)
. . .
ˆy
l
= w
T
l
ϕ(x)
然后,做最终的估计
ˆy =
l
j=1
ˆy
j
β
j
(1.6)
其中:β = (β
1
, β
2
, . . . , β
l
)
T
为组合权重。当然,还可以将每个样本赋予不同的组合权重, β
矩阵的形式。将上式 (1.6) 用图形表示,如图 (1.5) 所示
1.5:
线性回归组合模型的网络示意图
http://www.ma-xy.com 19 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
对所有样本 x 而言,其模型可以写为
ˆy = f
2
f
1
(x)
= f
2
(w
T
j
ϕ(x))
=
l
j=1
w
T
j
ϕ(x)β
j
上述模型即为一个简单的 3 层神经网络 ANN。其中:w 不再是一个单一的权重向量,而是由 l
个向量组成的矩阵,w R
n×l
w
j
R
n
,这里共有 n 个变量,m 个样本,l 个线性模型,然
将它们组合。并且,由于模型结构图 (1.5) 很像人脑神经元连接形成的网络,所以这种模型被称
为神经网络模型。
神经网络的讨论
上面,我们由线性回归组合模型引出了神经网络,下面,来研究一下神经网络 ANN
(1) 激活函数。在上面的网络中,我们只是确定了各个神经元的连接权 w
ij
, β
j
,并没有讨论其
它内容。其实,我们可以给它增加映射函数,比如我们将 x 映射为 ϕ(x)再比如 logistics 回归中
P = f
2
(f
1
(x)) = f
2
(w
T
ϕ(x))
logistics 就是在 w
T
ϕ(x) 上又增加了一个映射函数 f
2
=
1
1+e
x
。所以,我们可以在各神经元上增
加映射函数,比如:x 上增加 ϕ(x),中间的 ˆy 增加 f
1
,后面的 y 再增加 f
2
,于是有
f
2
β
T
f
1
w
T
ϕ(x)
ˆy
(2) 阈值。其实,神经网络已经能够将 x 映射到高维,所以不妨去掉 ϕ(x)变为 w
T
x像常见的
线性回归 y = w
T
x + b 那样,应该有一个常数项 b w
0
。在神经网络当中,我们将 b 视为阈值
θ,如图 (1.6) 所示的阈值结构
1.6: 神经网络阈值结构
(3) 多维输出问题。前面我们一直研究 y
i
R 的问题,现在,我们来研究 x
i
, y
i
R
n
× R
p
的问
题,即 n 个自变量 x p 个因变量 y 之间的函数关系式。一般模型很难处理这种多维输出的问
题,但对于神经网络而言,这种问题则相对简单,如图 (1.7) 所示
http://www.ma-xy.com 20 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
1.7: 多输出问题的神经网络结构示意图
(1.7) 构, f : R
n
R
p
题。且,
类问特别出问题,此,经网多分也是的,们只
y
j
(j = 1, 2, . . . , p) 设置为 0 1 即可,当样本为第 j 类时,y
j
= 1 y
i
= 0( i = j)这里的 p
为多分类的种类数。
(4) 层神经网络。对于前面的神经网络,它们是多个线性回归模型的组合,既然如此,我们就
可以组合之后再组合。不断组合下去可以形成很深的神经网络结构,如图 (1.8)
所示
1.8: 多层神经网络结构示意图
理论上,网络的层数可以无穷多,从而神经网络可以拟合任意任意的函数,但是,这种深层
网络在实际应用时却有许多问题,比如:网络层数过多导致的过拟合现象;网络层数过多,参数
w, θ 的求解出现问题等等。由于参 w, θ 的求解受限制,所以在神经网络发展初期其网络结构
都非常浅 (一般只 3 4 )2006 年起,由 Hinton 设计的 DBM 深层网络引发了深度网
的革命,深度学习现如今发展的如火如荼,关于深度学习问题,我们会在后面章节进行讨论。
(5) 网络搭建的思考。在建立一个神经网络模型时,我们应该做如下思考:
¬从网络整体来看
1. 网络的输入 X 和输出 Y 是什么?
2. 网络的层数是多少?
3. 各层的神经元数目是多少?
4. 映射函数/激活函数 f
1
, f
2
是什么?
5. 网络的连接形式是什么?上面给出的网络连接形式都是前一层神经元与后一层某个神经
的全链接,当然,我们可以不连接某些神经元,例如图 (1.9) 所示
http://www.ma-xy.com 21 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
1.9: 非全连接网络结构示意图
6. 网络的训练方式,即网络参数如何求解?这个问题是重点中的重点。
从单一神经元来看,单一神经元结构示意图 (1.10) 所示
1.10: 单一神经元结构示意图
1. 该神经元与哪些神经元连接?
2. 神经元的输入是什么?
3. 神经元的输出是什么?
一些常用的激活函数
下面,我们来介绍一些常用的激活函数/递函数 f。像前面 logistics 归中的 sigmoid
数那样,我们在神经网络的各层中引入激活函数,常用的激活函数有 ( f 为函数,x 输入。
注意这里的 x 与前面的意义不同,仅是一个符号):
(1)0 - 1 函数/硬阈值函数
f(x) =
0 x θ
1 x > θ
其中:θ 为阈值。MATLAB 命令为 hardlim
(2) 线性函数
f(x) = ax + b
其中:a, b 是外来参数。MATLAB 命令为 purelin
(3) 阈值线性函数
f(x) =
r x > θ
ax |x| θ
r x < θ
http://www.ma-xy.com 22 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.1 机器学习基本模型
其中:θ 为阈值,a 为外来参数。
(4)sigmoid 函数
f(x) =
1
1 + e
x
MATLAB 命令为 logsig
(5)tanh 函数
f(x) =
2
1 + e
2x
+ 1 =
e
x
e
x
e
x
+ e
x
tanh 函数和 sigmoid 很想,并且 tanh 的均值为 0,因此,在实际应用中 tanh 的应用要多一些。
MATLAB 命令为 tansig
(6)softplus
f(x) = log
e
(1 + e
x
)
f
(x) =
1
1 + e
x
= sigmoid(x)
(7)ReLu来,ReLu 迎,具,如:TheanoTensorFlow
MXNet 以及 DeeplearnToolbox 等几乎都使用 Relu 及其变形作为传递函数。Relu 是线性传递函
f = ax + b 的修正,是 Rectied Linear unit 的缩写,其函数形式为
f(x) = max{0, x}
x 取值比 0 小时,f 的输入即为 02005.Krizhershy 3发现:使用 Relu 得到的 SGD 的收敛
速度比 sigmoid 或者 tanh 快很多,这种现象很有可能是因为 Relu 是线性的。在实际的操作中,
如果设置了一个很大的学习率 η,那么,我们网络中的许多神经元 (40%) 会“死亡”。下面,我
们来介绍一些 Relu 的改进。
(8)Leaky-ReluLeaky-Relu 就是用来解决 Relu 死机的问题,其函数形式为
f(x) =
x x 0
αx x < 0
其中:α 是一个很小的常数,一般取为 0.001。这样即修正了数据分布,有保留了负轴上的一
值。关于 Leaky-Relu 的效果,有些实验证明它是成功的,当然也有一些失败了。一般的 α 是人
为实现赋值的,如果我们不把 α 视为人为定量,而将其视为网络参数,和 w, θ 等一起求解亦是
可行的,并且 Kaiming He1指出,这种 α 不仅可以训练,而且效果更好。
(9) 随机 Relu。随机 Relu Leaky-Relu 的随机版本,它将 α 设置为随机变量,函数形式为
f(x) =
x x 0
αx x < 0
http://www.ma-xy.com 23 http://www.ma-xy.com
http://www.ma-xy.com
1.1 机器学习基本模型 第一章 神经网络
其中:α U(l, µ)。在测试阶段,把训练过程中所有的 α 求平均值,作为测试 α
(10)Max outGoodfellow 2013 年提出 Max out Networkmaxout 的函数形式就像它的名字
那样
f(x) = max
i
x
i
这里顺便提一下 Maxout Network,其网络的主要结构为
h
i
(x) = max
j[1,k]
z
ij
其中:
z
ij
=
x
T
w
:
ij
+ θ
ij
w R
d×m×k
。这里 w 3 维的,d 表示输入神经元个数,m 表示隐
含层神经元个数,k 表示每个隐含层节点对应了 k “隐隐含层”节点, k “隐隐含层”
点都是线性输出的,而 maxout 就是取这 k 个中的最大值,其结构示意图如图 (1.11) 所示
1.11: maxout 网络结构示意图
常见的传递函数的图像如图 (1.12)
¬
所示
1.12: 传递函数图像
¬
此图来自维基百科
http://www.ma-xy.com 24 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
关于网络的学习规则,不同的网络结构有不同的学习规则,而不同的学习规则又形成了不同
的网络,因此,我们将在具体的神经网络模型中讨论相应的学习规则。根据网络结构的不同,神
经网络可以分为 3 大网络结构:前向型神经网络、竞争型神经网络和反馈型神经网络。
1.2 前向型神经网络
1.2.1 感知器 perception
感知器结构
美国学者 Frank Rosenblatt 1958 年提出单层感知器,其网络结构如图 (1.13) 所示
1.13: 单层感知器网络结构图
其中:x R
m×n
传递函数 f = handlimw R
n
y {0, 1}
m
θ R。我们将单层感知
器模型写为
ˆy = f (w
T
x θ)
可以发现,单层感知器的功能就是对 x 进行正确的分类,且分类为 {0, 1} 二分类,因为最终 ˆy
输出值只能是 0 或者 1当然,我们可以用单层感知器模型来处理多分类 (k 分类) 问题,其结构
如图 (1.14) 所示
1.14: 单层感知器多分类网络结构图
其模型为
ˆy
j
= f(s
j
) = f
n
i=1
x
i
w
ij
θ
j
= f(w
T
j
x θ
j
)
http://www.ma-xy.com 25 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
感知器学习算法
设共有 n 个变量 x
i
m 个样本 (x
i
, y
i
) R
n
× R
k
y 为期望输出,ˆy 为实际输出。
Step1. 初始化。输出层神经元个数 k初始连接权重 w(0) R
n×k
初始阈值 θ迭代次数 t := 0
Step2. 对样本 x
i
, y
i
, i = 1, 2, . . . , m,计算该样本 x
i
, y
i
的输出。
ˆy
i
j
= f(w
T
j
x
i
θ
j
)
Step3. 计算实际输出 ˆy
i
与期望输出 y
i
的误差。
e
i
= ˆy
i
y
i
R
k
Step4. 调整权重及阈值。
w
j
:= w
j
+ w
j
= w
j
+ αx
i
e
j
θ := θ + βe
其中:α, β 为学习率,可变化。
Step5. 所有样本完成一次更新。
Step6. 终止条件。不终止,则置 t := t + 1,返回 Step2
注:1. 终止条件可以设置容错误差 ε
2.
x R
m×n
× w R
n×k
θ R
m×1
= ˆy {0, 1}
m×k
ˆy {0, 1}
m×k
y R
m×k
= e R
m×k
3. 上述算法的目标并不是离差平方和
i
e
2
最小,而仅仅是将 e 传递给 w, θ后面,我们会介绍
离差平方和最小方法。
4. 单层感知器不能解决亦或问题 XORXOR 问题的示例如图 (1.15) 所示
1.15: XOR 问题示意图
MATLAB 示例如下
1 %% perc e pti o n
2 x = [ 0 0 1 1 ; 0 1 0 1 ] ;
3 y = [ 0 1 1 1 ] ;
4 net = p e rcep t ion ;
http://www.ma-xy.com 26 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
5 net = t r ai n ( net , x , y) ;
6 view ( net ) ;
7 y_hat = net (x)
8
上面的注 4 中提到单层感知器不具有解决非线性分类问题 XOR 的能力,为此,我们可以设
计多层感知器,即综合多个线性来解决非线性问题。例如:有两个单层感知器,则可以形成两条
如图 (1.16) 中的分割线,我们要判断各点所属的类,只要综合这两条分类线的结果即可。
1.16: 多层感知器解决 XOR 示意图
在介绍 BP 神经网络和反向传播算法之前,我们先来讨论一下“离差平方和最小”的目标。
就像上面注 2 中提到的那样,对于多输出 y误差 e 是一个 i k 列的矩阵,每个样本 i 在第 j
类处都会有个误差 e
ij
。如果是二分类问题和回归问题,离差平方和可以写为
J(w, θ) =
m
i=1
(ˆy
i
y
i
)
2
= ||ˆy y||
2
但是对于矩阵而言,误差
e
的离差平方和会有三种情况:
(1) 我们考虑将 m 个样本的离差平方和再求和,有
J
1
(w, θ) =
m
i=1
||ˆy
i
y
i
||
2
(2) 考虑把 k 个输出神经元的误差求和,即先求单一的输出神经元的离差平方,然后再相加
J
2
(w, θ) =
k
j=1
||ˆy
j
y
j
||
2
(3) 当然,上面两种的计算结果是一样的,为
J
3
(w, θ) =
m
i=1
n
j=1
(ˆy
i
j
y
i
j
)
2
很奇怪,为什么 (1)(2)(3) 相同还要分开写?虽然 3 最终结果是一样的,但是中间步骤
不一样的,如果不看 (1)(2) 公式中的求和,则有 ||ˆy
i
y
i
||
2
||ˆy
j
y
j
||
2
而我们后面恰好就要
着重讨论分开的形式。我们以 (2) 为目标,用线性神经网络来作为示例。
1.2.2 线性神经网络
由于感知的输 ˆy 0 1 y 0 1,从而导致了 e 的元素也 0
1。我们要想用“离差平方和最小”方法,则需要将 handlim 去掉,或者将其换为可导的传递函
http://www.ma-xy.com 27 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
数,因 handlim w 导为 0。如果我们不考虑 handlim 函数 f ,直接 w
T
x ˆy,则
e = ˆy y 的元素为实数。
记第 j 个输出神经元的误差为
e
j
= y
j
ˆy
j
= y
j
w
T
j
x θ
(1.7)
则第 t 次运行的均方误差为
E
j
(w) =
1
2
||e
j
||
2
=
1
2
e
T
j
e
j
(1.8)
(1.7) 和式 (1.8) w θ 求导,有
E
j
(w)
w
j
= w
j
e
j
w
j
= xe
j
E
j
(w)
θ
= e
j
其中:x 为整个样本数据集,这一点一定要注意。由于
E(w) =
k
j=1
E
j
(w)
所以
E
w
j
=
k
j=1
E
j
(w)
w
j
= xe
j
由此,得到权重 w 的更新公式
w
j
:= w
j
α
E
w
j
= w
j
+ αxe
j
1.2.3 BP 神经网络
BP BP 算法
考虑如下多层前向神经网络
1.17: 多层前向神经网络
http://www.ma-xy.com 28 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
络。 n x
i
(i =
1, 2, . . . , n) () n 元, () K 元,
则第一层和第二层的连接权重为 W = (w
ik
)
n×K
,设置输出 (三层) J 个神经元,则第二
层与第三层的连接权重 V = (v
kj
)
K×J
,设置隐含层的阈值为 b
1
,传递函数为 f
1
(·),输出层的阈
值为 b
2
传递函数为 f
2
现在共有 m 个样本 (x
i
, y
i
)
m
i=1
我们要求 W, V, b
1
, b
2
一个可行的目标
是:像线性神经网络那样,使用 J 输出神经元总误差平方和最小。设 j 个输出神经元的误
差为
e
j
= y
j
ˆy
j
= y
j
f
2
f
1
(W
T
x + b
1
) · V
:j
+ b
2
其中:V
:,j
表示矩阵 V 的第 j 列,下面简写为 v
j
。则第 j 神经元的误差平方 E
j
=
1
2
e
T
j
e
j
由此,J 个输出神经元的总误差平方为
E =
J
j
=1
E
j
=
j
1
2
e
T
j
e
j
我们要求 W, V, b
1
, b
2
使 E 最小, E W, V, b
1
, b
2
求导,并令导数为 0 即可。 θ = {W, V, b
1
, b
2
}
E
θ
=
j
E
j
θ
由此,我们只要求出第 j 个神经元的 E
j
关于 θ 的导数即可。一定要注意的是, j 个神经元的
输出为 ˆy
j
= f
2
f
1
(W
T
x + b
1
) · V
:j
+ b
2
,于是有
E
j
v
j
= e
j
e
j
v
j
= e
j
f
2
f
1
(W
T
x + b
1
) (1.9)
也就是说, j 个输出神经元的误差 e
j
传递给了权重矩阵 V 的第 j 列。并且值得一提的是,
导过程要求 f
2
可导。上式的 x 是所有样本,当然,我们还可以详细的写出关于 v
kj
的导数,亦
可以粗略写出关于矩阵 V 的导数。
E
j
b
2
= e
j
f
2
E
j
W
=
E
j
e
j
e
j
W
= e
j
f
2
f
1
x
E
j
b
1
= e
j
f
2
f
1
(1.10)
上面给出的是参数的部分梯度 (所有样 x 的第 j 输出神经元误差的导数方),即 E
http://www.ma-xy.com 29 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
的一部分 E
j
。下面,我们给出总离差平方 E 下的导数,有
E
v
j
=
j
E
j
v
j
= e
j
f
2
f
1
(W
T
x + b
1
)
E
b
2
=
j
E
j
b
2
=
j
e
j
f
2
E
W
=
j
E
j
W
=
j
E
j
e
j
e
j
W
=
j
e
j
f
2
f
1
x
E
b
1
=
j
E
j
b
1
=
j
e
j
f
2
f
1
这样,我们就得到了所有样本 x 的所有输出神经元误差的导数方向,我们用梯度下降来更新
参数 W, V, b
1
, b
2
,使总离差平方和最小,有更新公式
v
j
:= v
j
+ v
j
= v
j
α
E
v
j
W := W + W = W α
E
W
b
1
:= b
1
β
E
b
1
b
2
:= b
2
β
E
b
2
其中:α, β 为学习率,可以自适应。总的来说,我们要更新某个参数 θ,除了要用到所有样本 x
之外,还要把所有输出神经元的梯度累加才可以。
上面的这种做法是:E =
j
E
j
(j = 1, 2, . . . , J),这里的 E
j
是第 j 个输出神经元的离差平
方和。我们还可以用 E =
E
i
(i = 1, 2, . . . , m)这里的 E
i
是第 i 个样本的离差平方和。一个
是纵向一个是横向,不过,总的来说,二者都要求在总离差梯度
θ
E 更新参数 θ,我们称这
种方法为全导向传播算法 ( BP)。后面介绍的 BP 算法是在
θ
E
j
或者
θ
E
i
下更新参数的。
此外,还应该注意的是,上面的全 BP(或者 BP) 算法是使用所有样本 x 来计算梯度的,其
梯度方向是全局梯度方向,但是就像我们在回归模型中介 SGD( SGD 进等) 法时
说的那样,不仅可以用全部样本 x 来计算梯度方向,还可以用部分样本 (批量梯度 MBGD) 以及
单一样本的随机梯度 SGD 来计算梯度方向。下面,给出一次一个样本的随机梯度 SGD BP
算法的步骤:
Step1. 初始化。
网路结构以及网络参数设置 W, V, b
1
, b
2
, f
1
, f
2
学习率 α, β容许误差 ε迭代设置:t := 0, T
max
Step2. t 时刻,遍历所有样本 x
i
, i = 1 , 2, . . . , m,执行 Step3 - Step6
http://www.ma-xy.com 30 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
Step3. 对样本 x
i
,按网络结构进行前向传播
W
T
x
i
W
T
x
i
+ b
1
f
1
(W
T
x
i
+ b
1
)
V
T
f
1
(W
T
x
i
+ b
1
)
V
T
f
1
(W
T
x
i
+ b
1
) + b
2
f
2
(V
T
f
1
(W
T
x
i
+ b
1
) + b
2
) = ˆy
i
Step4. 计算样本 x
i
, y
i
的误差 e
i
e
i
= ˆy
i
y
i
R
J
E
i
=
1
2
||e
i
||
2
e
i
是一个向量, y
i
同维度,e
i
j
R 是第 j 个输出神经元的误差。如果是批量样本,e
j
是一个
向量。
Step5. 误差反向传播。(关于导数的计算,仿照前面全 BP 的计算方 (1.9) (1.10)本质是
复合函数的链式求导法则)
E
i
V
=
E
i
e
i
e
i
V
= e
i
f
2
f
1
(W
T
x
i
+ b
1
)
E
i
W
=
E
i
e
i
e
i
W
= e
i
f
2
f
1
x
i
E
i
b
2
=
E
i
e
i
e
i
b
2
= e
i
f
2
E
i
b
1
=
E
i
e
i
e
i
b
1
= e
i
f
2
f
1
Step6. 按梯度方向更新 W, V, b
1
, b
2
,使 E
i
最小
V := V + V = V α
E
i
V
W := W + W = W α
E
i
W
b
1
:= b
1
β
E
i
b
1
b
2
:= b
2
β
E
i
b
2
Step7. 终止条件:T
max
或者 ε达到最大迭代次数或者误差 e < ε 则终止;否则, t := t + 1
返回 Step2
上述 BP 算法是一般形式的 BP 算法,每次输入一个样本 x
i
, y
i
然后根据非全局误差 e
i
E
i
来计算梯度,更新权重等参数。由于每次使用一个样本来计算梯度,这样的梯度方向并不
全局下降方向,也就是说,此次的权重更新只能使样本 x
i
, y
i
的误差 e
i
减小,而其它样本则未可
http://www.ma-xy.com 31 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
知。当然我们可以选择一次输入一个样本 (SGD),一次输入部分样本 (MBGD) 以及一次输入整
个样本 (GD),并且样本可以按照顺序输入,也可以随机抽取输入。一般而言,我们经常使用批
量梯度下降算法,其梯度方向是使该批样本的误差下降的方向,更新后的参数并不一定能使所有
样本的误差下降。
BP 算法的问题及改进措施
BP 算法存在以下几个主要的问题:
1. 收敛速度慢。由于有两层 for 循环,所以其迭代速度是可想而知的,并且,它对于一个简单
的问题,收敛速度仍然很慢。
2. 非全局极小点。由于不是 BP 算法,并且每次使用一个样本来计算梯度,而每个样本的
梯度方向不一样,会导致该样本的梯度与上一个样本梯度发生冲突,甚至梯度下降方向
全相反,从而遗忘 (抵消) 上一个样本的梯度方向 (特征)例如可能出现如图 (1.18) 的情况
1.18: BP 算法的锯齿梯度下降示意图
3. 每个样本带来的梯度大小不等。先来看单一样本 x
i
, y
i
的梯度
E
i
W
=
E
i
e
i
e
i
W
= e
i
f
2
f
1
x
i
从上面的梯度计算公式中可以看出:W 的梯度大小和 x
i
的大小有关,如 x
i
很大,
则会导致其梯度方向很大。这是非常不好的,如果一个极端的 (坏的) 样本 x
i
带来了很大
的梯度,那么,其余的样本基本上上就不起作用了,这样收敛的极小点是没有意义的。
为了克服 BP 算法的缺点,我们介绍 BP 算法的一些改进措施:
1. 问题 1 中说 BP 算法的收敛速度慢,我们并不太可能改进 BP 的框架,那么我们就去改进
它的学习率 α, β给出以下 3 种可行的方案:¬ α, β W 前后相差不大 (即前后梯度
方向相似的) 时较大; α, β 在平均梯度方向上较大;®当前后两次的梯度方向符号一致
时,增大 α, β
2. 问题 2 中说 BP 法会遗忘上一个样本的梯度,那我们此次的梯度方向就不仅用此次样本
的误差下降方向,再加上上一次的量,有
W := α
E
W
+ ηW
也就是说权重更新 W 不仅与梯
E
w
有关,而且还与其上个样本的梯度方向关,
这种方法被称为动量梯度下降方法。
http://www.ma-xy.com 32 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
3. 问题 3 中说 BP 算法的梯度大小受样本大小的影响,为此,我们在将样本输入到网络之前,
先对其进行归一化处理。归一化处理的本质工作是将样本值压缩,避免样本有太大的差异。
归一化有许多方法,这里我们不详细介绍。MATLAB 中使用 mapminmax 来实现如下归一
x =
x x
min
x
max
x
min
并通过参数’apply’ ’reverse’ 来分别指定归一化和反归一化操作,例如:x=mapminmax(’apply’,x)
就是对 x 进行归一化操作。
上面,我们 SGD 等随机优化算法来求解 BP 神经网络。可以看出,BP 神经网络最
仍然是一个最优化问题,并且是一个最小二乘优化问题,我们仍然可以用一些一般性的算法,
如牛顿法、F-BFGS 算法以及 L-M 算法等。下面,我们简单的介绍一些参数更新方案:
(1) GD
W (t + 1) = W (t) α
E(t)
W (t)
(2) 动量因子 momentum
W (t + 1) = α(1 η)
E(t)
W (t)
+ ηW (t)
W
(
t
+ 1) =
W
(
t
) +
W
(
t
+ 1)
(3) 变学习率算法
α(t + 1) =
k
inc
α(t) E(t + 1) < E(t)
k
doc
α(t) E(t + 1) > E(t)
η(t + 1) =
1.05η(t) E(t + 1) < E(t)
0.7η(t) E(t + 1) > 1.04E(t)
η(t)
(4) RPROP
W (t + 1) = W (t + 1) · sign[g(t)] =
W (t)k
inc
· sign[g(t)] 连续两次梯度方向相同
W (t)k
doc
· sign[g(t)] 连续两次梯度方向相反
W (t)
其中:g(t) =
E(t)
W (t)
(5) CG(Conguga gradient)
p(0) = q(0)
W (t + 1) = W (t) + αp(t)
p(t) = g(t) + β(t)p(t 1)
http://www.ma-xy.com 33 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
对于 β(t)¬Fletcher-Reeres(CGF) 的计算方法是
β(t) =
g
T
(t)g(t)
g
T
(t 1)g(t 1)
Polck - Ribiere(CGP) 的计算方法是
β(t) =
g
T
(t 1)g(t)
g
T
(t 1)g(t 1)
(6) Newton
W (t + 1) = W (t) H
1
(t)g(t)
其中:H Hesse 矩阵。海赛矩阵不易求解,转而有 OSS Quasi-Newton 等算法。
(7) LM(levenberg-marquardt)
由于误差 E 具有平方和误差的形式,为最小二乘优化问题,我们有
H J
T
J
g = J
T
e
其中:J E 对权重 W 一阶导数,雅可比矩阵。有权重更新公式
W (t + 1) = W (t) J
T
J + µJJ
1
J
T
e
µ = 0 时为牛顿法。
1.4: MATLAB 中的 BP 算法命令表
简称 函数命令 描述
LM trainlm 基于 Levenberg-Maruardt 算法的 BP 算法
BFG trainbfg 基于 BFGS Quasi-Newton 算法的 BP 算法
GDX traingdx 自适应学习率以及动量梯度下降 BP 算法
GDA traingda 自适应学习率的梯度下降 BP 算法
GDM traingdm 自适应学习率的梯度下降 BP 算法
GD traingd 梯度下降 BP 算法
OSS trainoss One Step Secant BP 算法
RP trainrp RPROP Resilient
反向传播
(
反弹
)
SCG trainscg 按比例缩小的共轭梯度下降 BP 算法
CGB traincgb Powell Beale restarts 共轭梯度下降 BP 算法
CGF traincgb Fletcher Reeves updates 共轭梯度下降 BP 算法
CGP traincgp Polak - Ribiere 变梯度 BP 算法
MATLAB 中提供了许多种 BP 算法,如表 (1.4) 所示。表中各种算法的特点可以参见MAT-
LAB 神经网络 43 个案例分析》P392 或者《MATLAB 神经网络应用设计》P87上述算法的本
质都在寻找梯度下降方向,并没有改变 BP 算法的大的算法结构,也没有改变神经网络的网络结
构。对于 BP 神经网络框架的改进,可以尝试下面几个方向:
http://www.ma-xy.com 34 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
1. 初始网络权重的改进。在前面的 BP 算法中,网络参数 W, V, b
1
, b
2
的初始值是随机设置的,
这种做法会导致网络收敛速度较慢,可以使用 GA 等优化算法挑选一些合适的初始值,然
后再运行 BP 网络。
2. 网络节点的改进。一般的 BP 网络中,各层神经元个数是事前确定的。这里,我们可以将网
络中神经元的个数也归入到网络优化当中,使用 GA 等算法进行预先求解。
3. 神经元连接方式的改进。一般的 BP 经网络各层神经元之间采用全连接的形式,我们可
以采用部分连接的形式,也可以尝试随机连接的形式。
4. 传递函数 f
1
, f
2
的改进。下面,我们将介绍一种小波神经网络,这种网络就是将传递函
f
1
, f
2
设置为小波函数 g。一个关键的问题是小波函数 g 的求导。
注:关于神经网络的逼近能力 (拟合能力)Hecht-Nielsen 证明了如下 Kolmogorov 定理:
定理 (Kolmogorov 定理) f : U R C
1
f 可以精确的用 3 层前馈神经网络实现。
MATLAB 示例
MATLAB 提供了许多神经网络函数命令,下面,我们简单的介绍一些网络。
¬tnet 用于函数拟合,其调用格式为
net = tnet(hiddenSize,train,Fcn)
示例:
1 [ x , y ] = s i m p l ef i t . dat aset ;
2 net = f i t n e t (1 0) ;
3 view ( net )
4 net = t r ai n ( net , x , y) ;
5 y_hat = net (x) ;
6 pe r f = perform ( net , y_hat , y)
7
feedforwardnet 用于构建前馈神经网络,其调用格式为
net = feedforwardnet(hiddenSize,train,Fcn)
示例:
1 net = f eedfo rward net (10) ;
2 net = t r ai n ( net , x , y) ;
3 view ( net ) ;
4 y_hat = net (x) ;
5 pe r f = perform ( net , y_hat , y)
6
1.2.4 小波神经网络
todo:待补充。
http://www.ma-xy.com 35 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
1.2.5 RBF 径向基神经网络
当网络的一个或多可调参数 (W, b) 任何一个输出都有响时,称该类网络为全局
网络。由于每输入一个样本,权重都要调整一次,从而导致了全局逼近网络的学习速度很慢,比
如前面介绍的 BP 神经网络。如果对于输入空间的某一个局部区域只有少数几个链接权值影响输
出,则称该网络为局部逼近网络。常见的局部逼近网络为 RBF 网络、小脑模型 CMAC B
条网络等,下面,我们就来介绍 RBF 径向基神经网络。
RBF 径向基插值
设共有 m 个样本 x
i
, y
i
(i = 1, 2, . . . , m)x
i
, y
i
R
n
× R。多变量插值可以表述为:寻找一
个函数 F : R
n
R,满足
F (x
i
) = y
i
i = 1 , 2, . . . , m
上面表述的插值问题是严格的插值问题,它要求插值函数 F 经过 n 个样本点。径向基函数
插值就是构造如下形式的插值函数
F (x) =
m
i=1
w
i
φ(||x x
i
||)
其中:{φ||x x
i
||}
m
i=1
m 个函数的集合,称为径向基基组,φ||x x
i
|| 称为径向基,||·|| 表示
范数,x
i
为径向基 φ||x x
i
|| 的中心。当然,径向基 φ 的个数可以不是 m
看,径像,个是 K(x, x
i
)个是
φ(||x x
i
||)。但是径向基函数是完全插值问题,要求 F (x
i
) = y
i
m
i=1
w
i
φ(||x
1
x
i
||) = y
1
m
i=1
w
i
φ(||x
2
x
i
||) = y
2
. . .
m
i=1
w
i
φ
(
||
x
m
x
i
||
) =
y
m
将上式表述为矩阵的形式,有
φ
11
φ
12
. . . φ
1m
φ
21
φ
22
. . . φ
2m
.
.
.
.
.
.
.
.
.
.
.
.
φ
m1
φ
m2
. . . φ
mm
w
1
w
2
.
.
.
w
m
=
y
1
y
2
.
.
.
y
m
其中:φ
ij
= φ(||x
i
x
j
||)i, j = 1, 2, . . . , m。即
ϕw = y
http://www.ma-xy.com 36 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
其中:ϕ = {φ
ij
}
m
i,j=1
我们要求 w如果 ϕ 为非奇异矩阵, ϕ
1
存在,那么 w = ϕ
1
x接下来的问题是:如何
保证矩阵 ϕ 是非奇异的呢?
可以证明,对大量径向基函数 φ在某些条件下,上述问题的答案为:(1986.Micchelli 定理)
如果 {x
i
} m 个互不相同的点的集合, m ×m 阶矩阵 ϕ 是非奇异的。有大量的径向基函数
满足 Micchelli 定理,比如:
(1) 多二次函数
φ(r) = (r
2
+ c
2
)
1
2
对某些c > 0, r R
(2) 拟多二次函数 (Inverse multiquadrics)
φ(r) =
1
(r
2
+ c
2
)
1
2
(3) 高斯函数
φ(r) = e
r
2
2σ
2
(4)Reected Sigmoid
φ(r) =
1
1 + e
r
2
σ
2
上面的拟多二次函数和高斯函数都是局部函数,当 r 时,φ(r) 0,并且二者的 ϕ
阵是正定的。我们将上面的径向基函数 F (x) =
m
i=1
w
i
φ(||x x
i
||) 绘制成神经网络的形状,其网
络结构图如图 (1.19) 所示
1.19: RBF 网络结构图
我们知道每个样 x
i
(i = 1, 2, . . . , m) 都会是一个径向基函数 φ 的中心,其对应于 RBF
络结构图
(
1.19)
的中间层有
m
个神经元,每一个为
φ
(
x
i
)(
i
= 1
,
2
, . . . , m
)
在介绍 RBF 网络的训练算法之前,我们来看一下 RBF 网络的缺点:
1. 插值函数 F (x) 会经过所有样本点 (x
i
, y
i
),当样本中包含噪声 (坏点/坏样本) 时,RBF
拟合出一个坏的曲面 F 从而使网络的泛化能力下降,由于输入样本 x
i
中含有坏样本,
们就想挑选一些样本来做基 φ 的中心,而那些坏样本不能做 φ 的中心,这样,F 就不会经
http://www.ma-xy.com 37 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
过“坏点”了。将径向基网络中间层的神经元个数设置为 k(k < m),即从样本集中挑选 k
个作为基中心,则 RBF 可以写为
F (x) =
k
i=1
w
i
φ(||x x
i
||)
至于如何从样本集中挑选 k 个样本,留在后面讨论 (主要目的是去掉样本中的坏点)
2. 基函数个等于训练本数目时,当样数目 m 大时,远超于物过程中有自由度,
问题就把那位超定了,ϕ 可能不稳定。我们采用正则化方法解决这个问题。
上面我们立了 RBF 络,下面要讨的问题是:1. 层神经元数以径向基中心,
即如何从样本集中选取 k 样本作为径向基中心;2. 向基函数中的参数如何确定;3.RBF
络的训练方法。
RBF 的求解
首先,我们来解决径向基中心 x
i
(i = 1, 2, . . . , k) 的选取问题。我们的目标是从 m 个样本中
选出 k 个,使 k 个样能够可能 m 的特征。聪明我,马就能到用 K -
means 聚类方法来选择 k 个样本中心,如果我们能通过 K 均值聚类来挑选 k 个径向基中心,那
么想必其它聚类算法 (无监督方法) 也是可行的。但是在用 K 均值聚类时,我们仍然要确定聚类
中心数/径向基中心数 k,至于如何确定 k我们不做讨论。假设我们已经得到了 k k 个径向
基中心 x
i
,下面我们来求解权重 w = (w
1
, w
2
, . . . , w
k
)
T
方法 1:最小二乘法 由于我们把径向基的个数从 m 调整为 k,所以 ϕ 不再是一个方阵,w
能像前面的 ϕ
1
y 那样求解了。和前面参数回归部分处理的方法一样,我们将 ϕ
1
处理成 ϕ
广义逆 (伪逆)ϕ
,于是有
w = ϕ
y
其中:ϕ
= ( ϕ
T
ϕ)
1
ϕ
T
ϕ
T
ϕ 是一个方阵。我们令 R = ϕ
T
ϕ r = ϕ
T
y
方法 2:递乘方 二乘使的是的。但是,层神
个数 k 很大时,求 (ϕ
T
ϕ)
1
会是一个非常吃力的工作,因此,我们有必要对矩阵进行改造。
R = ϕ
T
ϕ r = ϕ
T
y,则原回归问题写为
ϕ
T
ϕw = ϕ
T
y
Rw = r
其中:R 定义为 k × k 相关函数,r 称为互相关向量。我们将 r 重写,对 n = 1, 2, . . . , m,有
r(n) =
n1
i=1
ϕ(x
i
)y
i
+ ϕ(x
n
)y
n
= r(n 1) + ϕ(x
n
)y
n
= R(n 1)w(n 1) + ϕ(x
n
)y
n
(1.11)
http://www.ma-xy.com 38 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
其中:ϕ(x
i
) =
φ(x
i
,x
1
)
.
.
.
φ(x
i
,x
k
)
R
k
。在上面的第一个等式中,将 i = n 单独提取处理,在最后一个
等式中,用 r(n 1) = R(n 1)w(n 1) 代替 r(n 1)
在式 (1.11) 的右边加上 ϕ(n)ϕ
T
(n)w(n 1),然后再减去它,有
r(n) = R(n 1)w(n 1) + ϕ(x
n
)y
n
+ ϕ(n)ϕ
T
(n)w(n 1) ϕ(n)ϕ
T
(n)w(n 1)
=
R(n 1) + ϕ(n)ϕ
T
(n)
w(n 1) + ϕ(n)
y
n
ϕ
T
(n)w(n 1)
(1.12)
上式 (1.12) R(n 1) + ϕ(n)ϕ
T
(n) = R(n) 是相关函数,而 y
n
ϕ
T
(n)w(n 1) 称为先验估
计误差。这里使用“先验”是为了强调估计误差 α(n) 是基于权重向量 w(n 1) 的老估计。回到
(1.12)
r(n) = R(n)w(n 1) + ϕ(n)α(n)
将上述方程带入 r(n) = R(n)w(n) 中,有
R(n)w(n) = R(n)w(n 1) + ϕ(n)α(n)
于是有
w(n) = w(n 1) + R
1
(n)ϕ(n)α(n)
上述问题的关键是:如何求解 R
1
(n)
我们已经知道
R(n) = R(n 1) + ϕ(n)ϕ
T
(n)
那么对于 R
1
(n),可以通过迭代算法进行求解。先引入矩阵逆的计算
引理 (矩阵逆的计算) 设矩阵 A
A = B
1
+ CDC
T
其中:B 为非奇异矩阵,B
1
存在,A, B 有相同的维度,D 为一非奇异矩阵。则 A
1
A
1
= B BC(D + C
T
BC)
1
C
T
B
根据上述矩阵逆的引理,我们有
R
1
(n) = R
1
(n 1)
R
1
(n 1)ϕ(n)ϕ
T
(n)R
1
(n 1)
1 + ϕ(n)R
1
(n 1)ϕ(n)
这里,我们在方程右端第二项利用了相关矩阵的对称性 R
T
= R
下面,我们各处 RBF 的递归最小二乘算法。为了书写方便,我们引入两个新的变量
R
1
(n) = p(n)
g(n) = R
1
(n)ϕ(n) = p(n)ϕ(n)
http://www.ma-xy.com 39 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
g(n) 为增益向量,因为 w(n) = w(n 1) + g(n)α(n)RBF 递归最小二乘算法为:
Step1. 初始化。
训练样本 {ϕ(i), y(i)}w(0) := 0p(0) = λ
1
I,容错误差 ε,径向基个数 k
Step2. 计算径向基中心 x
j
(j = 1, 2, . . . , k)
Step3. 确定高斯径向基 φ(r) = e
r
2
2σ
2
的参数 σ
σ
j
=
c
max
2k
j = 1, 2, . . . , k
其中:c
max
为选取中心 x
j
的最大距离。
Step4. 对样本 n = 1 , 2, . . . , m 进行如下计算
p(n) = p(n 1)
p(n 1)ϕ(n)ϕ
T
(n)p(n 1)
1 + ϕ
T
(n)p(n 1)ϕ(n)
g
(
n
) =
p
(
n
)
ϕ
(
n
)
α(n) = y(n) w
T
(n 1)ϕ(n)
w(n) = w(n 1) + g(n)α(n)
Step5. 终止条件。不终止则返回 Step4
注意:初始值 p(0) = λ
1
Iλ 是小的正常数,是基于如下正则化目标
J(w) =
1
2
m
i=1
y
i
w
T
ϕ
i
2
+
1
2
λ||w||
2
(1.13)
方法 3LMS 算法 一般的,我们研究以 (1.13) 为目标的 LMS 算法,我们将正则化项去掉,
w 使 J (w) 最小
min
w
J(w) =
1
2
m
i=1
y
i
w
T
ϕ
i
2
=
1
2
m
i=1
e
2
i
其中:e
i
为样本 x
i
, y
i
的误差。
现在,我们不仅要求 w 使 J(w) 最小,还要求径向基中心 c 和高斯径向基的外来参数 (“超
参数”)σ 使 J(w) 最小。整理一下 RBF 模型
y = w
T
φ(||x c||)
=
k
j=1
w
j
φ(||x c
j
||)
=
k
j=1
w
j
exp
1
2σ
2
j
||x c
j
||
其中:k 为径向基个数,φ 为径向基函数,φ(x) = exp
1
2σ
2
j
||x c
j
||
为高斯径向基,σ
j
为径
向基超参,c
j
为径向基中心。
http://www.ma-xy.com 40 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.2 前向型神经网络
以, w
j
使 J(w, c, σ) 小, c
j
σ
j
使 J(w, c, σ) 小。
J(w, c, σ) 关于参数 θ = (w, c, σ) 求导,有
J
θ
=
1
2
m
i=1
e
2
i
θ
=
m
i=1
e
i
e
i
θ
所以,只需要求每个样本 x
i
, y
i
的残差 e
i
关于参数 θ 的导数即可,有
e
i
= y
i
k
j=1
w
j
exp
1
2σ
2
j
||x
i
c
j
||
为使 J(w) 最小,参数修正量 θ 与梯度方向
θ
相反,于是有
c
j
= η
w
j
σ
2
j
m
i=1
e
i
φ(||x
i
c
j
||)(x
i
c
j
)
σ
j
= η
w
j
σ
2
j
m
i=1
e
i
φ(||x
i
c
j
||)||x
i
c
j
||
2
w
j
= η
m
i=1
e
i
φ(||x
i
c
j
||)
上述梯度方向是所有样本的梯度方向,是全局梯度 ( GD),在算法编程的表现是:当所有
样本循环遍之后才新一次权参数。当然,们也可以使用梯度下 SGD(次一个样)
和批量梯度下降 MBGD(一次部分样本) 加快收敛速度。对于 SGD 的一次一个样本而言,记
样本为 x
l
, y
l
,则目标为
min E(θ) =
1
2
e
2
l
并且有如下参数更新公式
c
j
= η
w
j
σ
2
j
e
l
φ(||x
l
c
j
||)(x
l
c
j
)
σ
j
= η
w
j
σ
2
j
e
l
φ(||x
l
c
j
||)||x
i
c
j
||
2
w
j
= ηe
l
φ(||x
l
c
j
||)
注:2002.Rifkin 博士论文中细致的比较了基于 RLS 算法的 RBF SVM 在线性可分模式下的
性能,实验明:¬RLS SVM 乎相同;者都对异常样点敏感,在 USPS 据集上,
RLS SVM ROC 曲线上一样的好甚至更好,在 MIT 人脸识别上,SVM RLS 要好。
MATLAB 示例
MATLAB 中提供了两个径向基网络:newrb newrbe,并提供了径向基函数 radbas
¬newrb 用来设计一个 approximate 径向基网络,其调用格式为
net = newrb(x,y,goal,spread,MN,DF)
其中:x 是一个 n ×m 输入矩阵;y 是一个 p ×m 的目标矩阵;goal MSE 的容错程度,默认
http://www.ma-xy.com 41 http://www.ma-xy.com
http://www.ma-xy.com
1.2 前向型神经网络 第一章 神经网络
0spread 是径向基函数的扩展速度;MN 是神经元最大数目;DF 是两次显示之间所添加的
神经元数目。
newrbe 用于设计一个精确径向基网络,其调用格式为
net = newrbe(x,y,spread)
示例:
1 x = [ 1 , 2 , 3 ] ;
2 y = [ 2 . 0 , 4 . 1 , 5 . 9 ] ;
3 net = newreb (x , y) ;
4 %net = newrb(x , y) ;
5 x_new = 1 . 5;
6 y_hat = sim ( net , x_new) ;
7
1.2.6 广义回归网络 GRNN
广义回归网络 GRNN 是美国学 Donald.F.Specht 1991 年提出的网络结构,具有很强
的非线性映射能力和高度的容错性和鲁棒性,适用于非线性函数拟合、逼近问题。GRNN
近能力和学习速度上较 RBF 有更强的优势,网 (函数) 最终收敛于样本量积聚较多的回归面,
并且在样本量较少时效果也很好。
在前面的 RBF 中,我们曾经提到过径向基函数 φ 和核函数是相似的,下面我们来看一下非
参数核回归和 RBF 之间的关系。在非参数回归部分,我们介绍了一些非参数回归方法,其中就
N-W 常系数核权重回归,其回归式为
ˆy =
ˆ
f(x) =
m
i=1
y
i
K
xx
i
h
m
j=1
K
xx
j
h
其中:h 为窗宽,x
i
R
n
,共有 m 个样本和 m 个核。我们令
W
hi
(x) =
K
xx
i
h
m
j=1
K
xx
j
h
则有
ˆy =
m
i=1
y
i
W
hi
(x) (1.14)
且权重和为 1,即
i
W
hi
= 1
下面,我们将 RBF 网络中的径向基函数 φ 也归一化
φ(x) =
φ
||xx
i
||
h
m
j=1
φ
||xx
i
||
h
http://www.ma-xy.com 42 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.3 竞争型神经网络
用归一化径向基 φ 来重新构建 RBF 模型,有
F (x) =
m
i=1
w
i
φ(x) =
m
i=1
w
i
exp
||xx
i
||
2σ
2
m
j=1
exp
||xx
j
||
2σ
2
(1.15)
其中:φ(x) 为归一化的径向基函数。上面式 (1.15) 即为广义回归神经网络 DRNNMATLAB
是用 newgrnn 来实现 GRNN 的,其调用格式为
net = newgrnn(x,y,spread)
1.3 竞争型神经网络
1.3.1 自组织特征映射 SOM
SOM 网路结构
自组织特征映射网络 (self-Organizing Feature Map) 是一种无监督学习算法,由芬兰赫尔辛
基大学教授 Kohonen 1981 年提出,所以也称为 Kohonen 网络。SOM 可用于语音识别、图像
处理、组合优化和数据分析等众多领域。
前面我们讨论的神经网络都属于有监督学习模型,并且网络神经元的连接有一个特点是:
有上下层神经元的连接,某一层的各神经元之间不连接,如图
(
1.20) 所示
1.20: 层间连接示意图
常用的 SOM 神经网络由输入层和输出层 (争层) 成,输入层各神经元通过权重将外界
信息 (样本) 集到输出层各神经元。输出层神经元与输入层神经元全连接,输入层和输出层
部神经元不连接,输出层内的每个神经元与其邻近的神经元连接,连接时互相激励的作用,训练
后,输出层不同神经元节点代表不同的分类模式,所以 SOM 的输出层也叫做特征映射层。
竞争层神经元的排列方式可以是一维的、二维的也可以是高维的,甚至还可以是不规则排列
的。下面图 (1.21) 给出了输出层二维排列的 SOM
http://www.ma-xy.com 43 http://www.ma-xy.com
http://www.ma-xy.com
1.3 竞争型神经网络 第一章 神经网络
1.21: 输出层二维排列的 SOM
其中:输入层神经元个数为 n竞争层神经元个数为 k ×k = K 个,二维输出层上的各神经
元之间可以是全连接,也可以是局部连接。SOM 的目标是在无监督 ( y) 的情况下,从输入数
据中找出规律,网络通过自身训练自动对输入模式 (样本) 进行分类。
SOM 学习算法
上面介绍了 SOM 的网络结构,下面介绍它的学习算法。SOM 学习算法包含竞争、合作和
更新 3 个过程:
(1) 程:中,元。看,
() 线的,
u
i
=
j
w
ij
x
j
,即输入向 x 和权重 W 的内积 (注:权重矩阵用 W, W
1
, V 等表示,矩阵元素
w
ij
表示,矩阵某行某列用 W
:j
= w
j
表示)。而该内积最大在输入向量和权重均为归一化时,
等价于 x, W 的欧几里得距离最小,所以,当输入向量为 x,且第 l 个神经元获胜时,满足条件
||x w
l
|| = min
1iK
||x w
i
||
(2) 作过程:确定获胜神经元的加强中心。以在竞争过程中获胜的神经元为中心,设置邻域大
小,在邻域范围内的神经元称为兴奋神经元,即加强中心。
(3) 更新过程:采用 Hebb 学习规则对权重进行更新。
SOM 学习算法的步骤如下:
Step1. 初始化。
输入层神经元个 n,输出层神经元个数 K,初始连接权重 w(0),竞争神经元 j 个邻接神
经元集合 S
j
S
j
(0) 是随机的,S
j
(t) 随迭代次数 t 不断减小,置 t := 0
Step2. 将一个样本 x = ( x
1
, x
2
, . . . , x
n
)
T
输入到网络。
Step3. 计算欧几里得距离 d
j
输入样本与每个输出神经元 j 之间的欧几里得距离
d
j
= ||x w
j
|| =
n
i=1
x
i
(t) w
ij
(t)
2
其中:w
j
表示矩阵的第 j 列。计算出最小距离对的神经元 j
j
= arg min
1jK
{d
j
}
http://www.ma-xy.com 44 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.3 竞争型神经网络
Step4. 给出获胜神经元 j
的一个邻域 S
j
(t)按下式修正获胜神经元 j
及其“邻接神经元”
权值
w
ij
(t + 1) = w
ij
(t) + η(t)[x
i
(t) w
ij
(t)]
其中:η 为学习率,可以是 η(t) =
1
t
Step5. 计算输出 y
k
y
k
= f(min
j
||x w
j
||)
其中:f 为激励函数,可以是 0, 1 函数也可以是线性函数。
Step6. 终止条件。如果不终止,则返回 Step2.
MATLAB 应用实例
MATLAB 提供 selforgmap 来实现 SOM 网络,其调用格式为
selforgmap(dimensions,cowerSteos,initNeighbor,topolugyFun,distanceFcn)
其中:dimensions 是行向量维数,默认为 8 × 8coverSteps Number of training steps for initial
covering of the input space, 默认为 100initNeighber 初始邻域大小;topologyFcn 为层拓扑
函数,默认为’hextop’distanceFcn 为距离函数,默认为’linkdist’。函数示例如下
1 x = simp l e c luste r _ d atase t ;
2 net = selforgmap ( [ 8 , 8 ] ) ;
3 net = t r ai n ( net , x) ;
4 view ( net ) ;
5 y = net ( x ) ;
6 c l a s s e s = vec2ind (y) ;
7
1.3.2 自适应共振网络 ARF-i
ART(Adaptive Resonance Theory) 络,
Grossberg Carpentent 1986 出。ART 近,
容量可以随学习模式 (本数量) 增加而增加,记忆模式也与生物的记忆形式类似,与常见
其它一些神经网络相比,ART 有以下优点:
¬可以进行时的在线学习(线学是机器学研究一个重要)可以在动环境
下学习;®对已学习的模式 (样本) 可以快速得到结果;¯系统存储的增加不影响系统的其它属性,
但对许多神经网络而言,当系统存储能力增加时,由于整个系统的复杂度增加,很多关键属性特
征将恶化。
根据网络输入和结构的不同,ART 网络可分为:¬ART1可以处理双极形式二进制型信号;
ART2,可以处理连续型模拟信号;®ART3 是一种分级搜索模型,可以是任意多层神经网络。
Carpenter 等人已经证明:对任意二进制输入 (0,1) ART1 都能稳定的进行学习,直到耗尽其
存储能力为止。
todo: 引入:《人工神经网络原理》P109-P129
http://www.ma-xy.com 45 http://www.ma-xy.com
http://www.ma-xy.com
1.3 竞争型神经网络 第一章 神经网络
1.3.3 学习向量量化神经网络 LVQ
LVQ 网络结构
学习向量量化 LVQ Kohonen 出的一种有监的学习算法,在模式识别和优领域
广泛应用。LVQ 网络 3 个网络层组成:输入层、竞争层和线性输出层。输入层和竞争层之
采用全连接方式,竞争层与线性输出层之间采用部分连接的方式。竞争层神经元的个数总是大于
线性输出层神经元的个数,每个竞争层神经元只与一条线性输出层神经元连接,且连接权重恒为
1,每个线性输出层神经元可以与多个竞争层神经元相连接。竞争层神经元和线性输出层神经元
的值只能是 0 或者 1。当某个输入模式被输入到网络时,与输入模式距离最近 的竞争层神经元
被激活,神经元状态为 1与被激活神经元连接的线性输出层神经元变为 1LVQ 网络结构如图
(1.22) 所示。
1.22: LVQ 网络结构图
LVQ 学习算法
LVQ 的学习算法是:“奖罚”学习算法。具体地,假设在训练样本集内随机选择 D 个初始模
板向量 (初始 Veronoi 向量)对于来自训练集的任意一个样本 x如果 x 与最近的模板属于同一
类,则无需学习;否则将惩罚分类错误的模板,奖励其对应正确类别的模板。若经过迭代后,
有向量量化 (Veroni 向量) 不再明显变化,则收敛。
例如:某 LVQ 竞争层有 6 个神经元,输出层有 3 个神经元 (代表 3 )。若竞争层的 13
神经元与 1 输出神经元连接,25 与第 2 个输出神经元连接,36 与第 3 个神经元连接,
则竞争层与输出层的连接权重为
W
2
=
1 0 0
0 1 0
1 0 0
0 0 1
0 1 0
0 0 1
注:W
2
的行表示输出层 3 个神经元。我们在训练之前预先设定好 W
2
,从而指定了输出神经元
的类别,训练中不再改变。网络的学习通过改变输入层到竞争层权重 W
1
来进行,根据输入样本
类别和获胜神经元所属类别可判断当前分类是否正确,若分类正确,则将获胜神经元的权向量向
输入向量 (样本) 方向调整,分了错误则向相反的方向调整。下面给出 LVQ 学习算法的步骤。
http://www.ma-xy.com 46 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.3 竞争型神经网络
LVQ 学习算法 1
Step1. 初始化。初始化 W
2
且训练过程中不再改变;输入层到竞争层的权重 W
1
= (w
ij
);学习
η(0),置 t := 0T
max
Step2. 将一个样本 x, x R
n
输入到输入层,计算竞争层神经元与输入向量的距离
d
j
= ||x w
j
|| j = 1, 2, . . . , l
其中:l 为竞争层神经元个数,x R
n
w
j
R
n
W
1
矩阵的第 j 列。
Step3. 选取获胜神经元
j
= min
j
{d
j
}
记与 j
连接的线性输出层神经元的标签为 c
i
(预测类别)
Step4. 更新权重 W
1
。样本 x 的实际类别为 c
x
,如果 c
i
= c
x
,则
w
j
:= w
j
+ η(x w
j
)
否则
w
j
:= w
j
η(x w
j
)
其它非获胜神经元的权重不变。
Step5. 更新学习率
η(t) = η(0)
1
t
T
max
Step6. 终止条件。如果不终止,置 t : t + 1 返回 Step2。注:我们在 t 时刻下循环所有样本。
LVQ 学习算法 2 LVQ 学习算法 1 中,每个样本 x 只会有一个获胜神经元 j
即只有一
个神经元更新权重 w
j
为了提高分类正确率以及算法的收敛速率,Kohonen 改进了 LVQ1并称
该进后的算法为 LVQ2LVQ2 算法基于光滑的移动决策边界逼近 Bayes 极限。在这之后,LVQ2
被修改为 LVQ2.1,并进一步有了 LVQ3LVQ2 的算法步骤如下:
Step1. 利用 LVQ1 对所有样本进行学习。
Step2. 将一样 x = (x
1
, x
2
, . . . , x
n
)
T
R
n
输入到输入层,并计算它与竞争层个神经元之间的
距离
d
j
= ||x w
j
|| j = 1, 2, . . . , l
Step3. 选择与 x 距离最近的 2 个竞争层神经元 i, j
Step4. 如果神经元 i, j 满足以下两个条件:
1. i, j 对应不同的输出类;
2.
min
d
i
d
j
,
d
j
d
i
> ρ
其中:ρ =
1w
1+w
w [0.2, 0.5]
http://www.ma-xy.com 47 http://www.ma-xy.com
http://www.ma-xy.com
1.3 竞争型神经网络 第一章 神经网络
则有
(1) 如果 i 对应类别 c
i
与样本 x 的类别 c
x
一致时,有
w
i
:= w
i
+ α(x w
i
)
w
j
:= w
j
α(x w
j
)
(2) 如果 j 对应类别 c
j
与输入向量 x 的类别 c
x
一致时,有
w
i
:= w
i
α(x w
i
)
w
j
:= w
j
+ α(x w
j
)
Step5. 如果不满足 Step4,则只要更新距离最近的神经元权重即可。
Step6. 终止条件。如果不终止,置 t := t + 1,返回 Step2
MATLAB 应用示例
MATLAB 中用 lvqnet 来实现 LVQ 网络,其调用格式为
lvqnet(hiddenSize,lvqLR,lvqLF)
其中:lvqLR 为学习率,默认为 0.01lvqLF 为学习函数,默认为’learnlv1’。示例为
1 [ x , y ] = i r is _ da t as e t ;
2 net = l vqn et ( 10) ;
3 net . trainParm . epochs = 50;
4 view ( net ) ;
5 y_hat = net (x) ;
6 pr e f = perform ( net , y_hat , y) ;
7 c l a s s e s = vec2ind (y_hat)
8
注:MATLAB 中还提供了 competlayer patternnet 网络。
1.3.4 对向传播网络 CPN
CPN 网络结构
对向传播网络 CPN(Counter Propagation Network) 是将 Kononen 特征映射网络与 Gross-
berg 本竞争型网络相结合,并它会各自特点的一种特征映射网络。由美国计算机专 Robert
Hecht-Nielsen 1987 年提出,并广泛用于模式分类、函数逼近、统计方式和数据压缩等领域。
CPN 络结构分 3 层:输入层、竞争层和输出层。输入层与竞争层构成 SOM 网络,竞
争层与输出层构成基本竞争型网络。从整体上看,网络属于有导师型网络,并结合了 SOM 无导
师的特点,其网络示意图如图 (1.23) 所示
http://www.ma-xy.com 48 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.3 竞争型神经网络
1.23: CPN 网络结构图
其中:输入层神经元个数为 n m 个样本,竞争层有 l 个神经元,其输出为 0, 1输出层
K 个神经元 ( K ),输入层到竞争层权重为 W ,竞争层到输出层权重为 V 。从输出层到
竞争层,CPN 网络按 SOM 习规则产生获胜神经元,得到各输出神经元的实际输出值,
按照有导师式的误差校正方法修正权重 V
CPN 学习算法
下面,我们给出 CPN 的学习算法。
Step1. 初始化。初始化权重 W, V ,并将样本归一化。
Step2. 输入单一样本 x, x R
n
到输入层。
Step3. 将权重 w
j
归一化
w
j
=
w
j
||w
j
||
j = 1, 2, . . . , l
Step4. 求竞争层中每个神经元 j(j = 1, 2, . . . , l) 的输入
S
j
= xw
j
Step5. 求上千种 {w
j
} 中与 x 最接近的向量 w
j
j = j
时, b
j
= 1 否则记为 b
j
= 0
j
神经元的输出设置为 1,其余不变。
Step6. 修正 w
j
w
j
:= w
j
+ η(x w
j
)
并将 w
j
归一化。
Step7. 修正 v
k
v
k
:= v
k
+ βb
j
(c
k
c
k
) k = 1, 2, . . . , K
其中:c
k
为第 k 个输出类别,c
k
为真实输出类别。上式可简写为
v
j
k
:= v
j
k
+ βb
j
(c
k
c
k
)
只需要调整竞争层获胜神经元 j
到输出层神经元的连接权向量 v
j
即可,其余权重不变。
Step8. 求输出值
c
k
= bv
k
k = 1, 2, . . . , K
http://www.ma-xy.com 49 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
其中:c {0, 1}
l
。可简写为
c
k
= v
kj
Step9. 返回 Step2,直到 m 个样本都输入一遍。
Step10. 终止条件。不终止,则置 t := t + 1,返回 Step2
1.4 反馈型神经网络
1.4.1 Hopeld 网络
Hopeld 网络的建立
1982 年,美国加州理工大学生物物理学家 Hopeld 提出一种新颖的人工神经网络 - Hopeld
网络。Hopeld 网络摒弃了神经网络中“层”的概念,创造出全连接神经网络,并且在网络训练
时引入 Lyapunov 函数 (能量函数)通过网络训练来使网络的能量最小。这一引入阐明了神经网
络与动力学之间的关系,使神经网络的稳定性有了判断依据。Hopeld 根据网络输入和输出的不
同,可以分为两种类型:离散型 Hopeld 网络和连续型 Hopeld 网络。
Hopeld 早提出的是离散型二 Hopeld 神经网路 (DHNN),其神经元的输出只有 1
1前面我们谈到的前向型神经网络和竞争型神经网络,它们的网络结构都是前向的,不具有自
回归,如图
(
1.24) 所示
(a) 前向型网络 (b) 反馈型神经网络 1 (c) 反馈型神经网络 2
1.24: 反馈网络示意图
如果从图论中图的连接方式来看,前向型网络是图 (1.24) (a) 的单向连接,而反馈型神经
网络则是图 (1.24) (b)(c) 的无向连接或双向连接。
为了导出 Hopeld 网络,我们仍然从分类/回归问题开始:
ˆy = f (w
T
x θ)
其中:为了迎合神经网络,我们将 +θ 写为 θ现在考虑一个有意思的问题,如果我们令 y = x
呢?有
ˆx = f (w
T
x θ)
http://www.ma-xy.com 50 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
在系统论中,上述两个模型都是系统,只不过一个是因响应系统,一个是自响应系统。如果设迭
代次数 (时间) t,则
x(t + 1) = f (w
T
x(t) θ)
t + 1 时刻系统值 x(t + 1) t 时刻系统值 x(t) 有关。在微分方程部分,我们研究了这种方程
的一些性质,比如:Lyapunov 稳定,吸引子等等。
假设我们已经有了权重矩阵 W R
n×n
则通过不断的迭代,我们会有系统轨迹 x(0),x(1),. . .
{x(t)}
T
为系统轨迹,平稳是指: t 时, lim
t→∞
x(t) x
,则称 x
为稳定点。我们写
出使 x(t) 稳定的过程:
Step1. 初始化。初始权重 w
0
bais θ
0
x(0),置 t := 0 T
max
Step2. 计算 x(t + 1)
x(t + 1) = f (w
T
x(t) θ)
Step3. 判断是否稳定。
x(t + 1) = x(t)
Step4. 终止条件。如果 x(t + 1) = x(t) 或者 t = T
max
则终止。
现在,我们有 m 个样本,每个样 k x
k
= (x
k
1
, x
k
2
, . . . , x
k
n
) {−1, 1}
n
,即共 n 变量
x
i
,且 n 个变量均为 1, 1 型变量。在给定 w = ( w
ij
)
n×n
后,可以写出其关系式
x = f(w
T
x θ)
并且,为了使 x 能够为 ±1,我们设置 f sgn,于是有
x = f(w
T
x θ)
= sgn(w
T
x θ)
注:我们给定的权重 w = (w
ij
)
n×n
w
ii
= 0 ,并且可以设置 w
ij
= w
ji
将上面的关系式绘制成网络图,如图 (1.25) 所示
1.25: 自回归网络图
http://www.ma-xy.com 51 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
就某个神经元 x
j
(j = 1, 2, . . . , n) 来看,有
x
j
= f
i
w
ij
x
j
θ
j
= sgn
i
w
ij
x
j
θ
j
=
1
1
w, θ
给定之后,如果给定某个样本
x
k
(k = 1, 2, . . . , m) x
k
输入到到网络中,由前面的动
力学 (微分方程) 部分,我们知道 x
k
随着时间 t 的变化会稳定下来:x
k
(0), x
k
(1), . . . , x
k
(t) x
k
并且,我们是在 t 时刻将 x
k
(t) 整体输入到网络中,并转化为 x
k
(t + 1)现在,我们仅转化样本
x
k
的一个分量 x
k
j
或部分分量,让其余分量不变,以减小计算量和存储量,于是 x
k
有以下收敛
步骤:
Step1. 初始化。第 k 个样本 x
k
(0)w, θ,置 t := 0T
max
Step2. 挑选第 j 个变量进行更新
x
k
j
(t + 1) = f
i
w
ij
x
k
j
θ
j
其余变量保持不变
x
k
i
(t + 1) = x
k
i
(t) i = 1, 2, . . . , n, i = j
Step3. 判断是否稳定
x
k
(
t
+ 1) =
x
k
(
t
)
Step4. 终止条件。 x
k
(t + 1) = x
k
(t) 或者 t = T
max
则终止;否则, t := t + 1返回 Step2
Hopeld 网络的学习算法
上面的收敛过程中,我们假设已经得到了权重 w, θ但是,w θ 应该如何获得呢?从网络
最初建立时的初始空间状态,到设计适当的连接权重 w 和阈值 θ 使网络具有知识,具有对给
模式 (样本) 的联想能力,其中的权重设计过程就 Hopeld 网络的学习过程。下面,我们来介
绍几种求权重 w 的方法。
方法 1Hebb 外积法 (1) 若只有一个样本 x
k
(k = 1, 2, . . . , m),对 x
k
而言,若网络达到稳定
状态,则有
(
先忽略
θ
)
x
k
= sgn(x
k
w)
x
k
j
= sgn
n
i=1
w
ij
x
k
i
j = 1, 2, . . . , n
http://www.ma-xy.com 52 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
sgn 函数的特点可知, x
k
j
n
i=1
w
ij
x
k
i
> 0则上式成立。由上述内容可知,网络的连接权
重与输入向量的各分量的关系式为
w
ij
= αx
k
j
x
k
i
其中:α 为正常数。(2) 若有 m 个样本 x
k
,则由归纳法有权重 w
ij
的推广公式
w
ij
= α
m
k=1
x
k
j
x
k
i
w
ii
= 0 ,所以上式可以写为
w = α
m
k=1
(x
k
)
T
x
k
I
由此,可以得到权重 w 的更新迭代公式的规律:一个样本加一次 (x
k
)
T
x
k
,于是有
w
0
= 0
w
k
= w
k1
+ (x
k
)
T
x
k
I k = 1, 2, . . . , m
从上述连接权重的学习过程可以看出,权重 w 样本的记忆是累加实现的,每记一个新
样本 x
k
就更新一个权重 w
k
。但是,就像前面 BP 算法分析的那样,一次一个样本的更新权重
w 会使 w“遗忘”前面的样本。事实上,当网络规模 n 达到一定时,要记忆的样本 m 越多,联
想时出错的可能就越大。研究表明,对于具有 n 个神经元的 Hopeld 网络, m 超过 0.15n 时,
网络的联想记忆就有可能出错,错误结果对应的是能量函数的局部极小点。
方法 2:伪逆法 Hebb 方法可知
w
ij
=
m
k=1
x
k
i
(x
T
)
k
j
将内积写成如下形式
i
(x
T
)
k
i
x
l
i
= x
T
x
则伪逆学习规则用下式求 w
w = X(X
T
X)
1
= XX
其中:X 是所有样数据。我们知道伪逆 X
是基于最小二乘法的,关伪逆我们这里做一
简单的说明: m × n 维矩 X 是方阵时,求逆就变成了伪逆,并且当 m > n,伪逆写
X
= (X
T
X)
1
X
T
;当 m < n,则伪逆写为 X
= X
T
(X
T
X)
1
。另外,还可以用 SVD QR
等方法求伪逆 X
http://www.ma-xy.com 53 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
方法 3正交化法 MATLAB 用函数命令 newhp 建立 Hopeld 网络,newhp 就是采用 SVD
法来求解伪逆矩阵,进而求解权重 wd 的。其计算步骤如下:
Step1. 初始化。X = {x
1
, x
2
, . . . , x
m
} m 个样本数据,x
i
{0, 1}
n
τ > 1h
Step2. 计算 AA = ( x
1
, x
m
, x
2
x
m
, . . . , x
m1
x
m
)
T
R
n×(n1)
Step3. A 进行 SVD 奇异值分解
A = USV
T
其中:MATLAB 命令为 svd(A)U, V 为正交矩阵,U = (u
1
, u
2
, . . . , u
n
), V = (v
1
, v
2
, . . . , v
m1
)
S 对角矩阵,S = (
Σ 0
0 0
) Σ = diag(λ
1
, λ
2
, . . . , λ
k
)k 空间为 n 为空间的子空间,由 k
独立基组成,k = rank(A),设 {u
1
, u
2
, . . . , u
k
} A 上的正交基,而 {u
k+1
, u
k+2
, . . . , u
n
} n
维空间的补正交基。
Step4. 利用 U 来设计权重。
w
m
=
k
i=1
u
i
u
T
i
w
p
=
k
i=k+1
u
i
u
T
i
w
t
= w
m
τw
p
其中:τ 为大于 1 的参数;w
m
, w
p
满足对称条件,因而 w
t
中分量也满足对称条件,这就保证
了系统在异步时能够收敛并且不会出现震荡现象。
Step5. 构建网络的偏差矩阵
b
t
= x
m
w
t
x
m
Step6. 计算 w
w = exp(hw
t
)
Step7. 计算 b
b = V ×
C
1
× I(k) 0(k, n k)
0(n k, k) C
2
× I(n k)
× U
T
× b
t
其中:C
1
= exp(h)
1
C
2
=
exp(2xh1)
t
Hopeld 网络的能量函数
Hopleld 运行过程中,网络不断趋于稳定,那么,我们能否用 Lyapunov 函数来描述这种系
统稳定呢?我们定义 Hopeld 网络的能量函数 (Lyapunov 函数)
E =
1
2
n
i=1
n
j=1
w
ij
x
i
x
j
+
n
i=1
θ
i
x
i
http://www.ma-xy.com 54 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
Hopeld 网络是一个非线性动力系统,网络状态的变化过程实际上就是一个使能量函数极小化的
过程。为了说明能量单调递减,考虑网络中的任意一个神经元 j
E
j
=
1
2
n
i=1
w
ij
x
i
x
j
+ θ
j
x
j
=
1
2
x
j
n
i=1
w
ij
x
i
+ θ
j
x
j
t 时刻到 t + 1 时刻,j 神经元的能量变化为
E
j
= E
j
(t + 1) E
j
(t)
=
1
2
x
j
n
i=1
w
ij
x
i
+ x
j
θ
j
= x
j
n
i=1
w
ij
x
i
θ
j
+
1
2
x
j
n
i=1
x
i
由于在 t + 1 时刻只有神经元 j 调整了状态,并且个神经元不存在自反馈,所以
E
j
= x
j
n
i=1
w
ij
x
i
θ
j
t + 1 时刻,有
1. 若神经元 j 的状态未变,则 x
j
= 0 E
j
= 0
2. 若神经元 j 的状态由 t 时刻的 1 变为 t + 1 时刻的 1,则 x
j
= 2
n
i=1
w
ij
x
i
θ
j
> 0
E
j
< 0
3. 若神经元 j 的状态由 t 时刻的 1 变为 t + 1 时刻的 1 x
j
= 2
n
i=1
w
ij
x
i
θ
j
0
所以 E
j
0
综上,当神经元 j 的状态改变时,无论变化如何,能量改变量 E
j
0由于 j 任意一个神
经元,所以,网络的能量变化量总小于等于 0,即
E 0
由此,Hopeld 网络平稳过程是一个能量极小化过程。并且由于能量函数有界,所以网络一定会
趋于稳定状态。
MATLAB 应用示例
MATLAB 中使用 newhp 函数来实现离散型 Hopeld 网络,其调用格式为
net = newhp(T)
其中:T m 个目标向量的 m ×n 矩阵,元素为 ±1激活函数为 satlins(饱和线性函数)其示
例为
http://www.ma-xy.com 55 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
1 T = [ 1 1 1 1 ; 1 1 1 1;1 1 1 1 ; 1 1 1 1; 1 1 1 1 ] ;
2 net = newhp(T) ;
3 P = { rands ( 5 ,4 ) };
4 [Y, Pf , Af ] = net ({4 , 5 0} ,{} ,P) ;
5 Y{end}
6
1.4.2 双向联想记忆网络 BAM
BAM 的网络结构
前面的 Hopeld 络是自连接自回归的形式,B.Kosko 1988 年提出 BAM(Bidirectional
Associature Menory) 神经网络,可以实现双向联想 (x y, y x),其网络结构如图 (1.26)
1.26: BAM 网络结构图
BAM 的输入层有 n 个神经元,输出层有 l 个神经元, X Y 的权重为 W Y X
的反向权重为 W
T
设共有 m 个样本 x
k
每个样本 x
k
n 个输入变量,x
k
= ( x
k
1
, x
k
2
, . . . , x
k
n
)
{0, 1}
n
/{−1, 1}
n
l 个输出变量 y
k
= ( y
k
1
, y
k
2
, . . . , y
k
l
) {0, 1}
l
/{−1, 1}
l
假设我们已经给出了
权重 W ,则 BAM 的运行方式为:将样本 x
k
输入到输入层,有
y
k
= f
y
(W x
k
)
然后,再将输出 y
k
返回到输入层
x
k
= f
x
(W
T
y
k
)
= f
x
W
T
f
y
(W x
k
)
x
k
, y
k
的神经元状态不再改变时,网络稳定。由上式我们可以看到 x
k
的更新过程:t 时刻,网络状
态为 x
k
(t), y
k
(t)t+1 时刻,网络状态为 x
k
(t+1) = f
x
W
T
f
y
(W x
k
(t))
, y
k
(t+1) = f
y
(W x
k
(t))
为了使网络神经元状态处 1},令 f
x
= f
y
= sgn,或者 f
x
= f
y
= satlins。上面,我们
假设已经给出连接权重 W ,下面,我们就来求解 W
BAM 网络的求解
(1) 当网络只需要存储一个样本 (x
k
, y
k
) 时,若使网络稳定,要满足
sgn(W x
k
) = y
k
sgn(W
T
y
k
) = x
k
(1.16)
http://www.ma-xy.com 56 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
易证明,当 W x
k
, y
k
的外积时
W = y
k
x
k
W
T
x
k
y
k
T
(1.16) 式条件必然成立。
(2) 当网路要存储 m 个样本 (x
k
, y
k
)
m
k=1
时,由归纳法可得到权重 W 的计算公式
W =
m
k=1
y
k
(x
k
)
T
W
T
=
m
k
=1
x
k
(
y
k
)
T
Hopeld 网络的权重一样,BAM 的权重也可以用其它方法求解。
BAM 网络稳定性
¬无阈值 θ。定义 BAM 网络的 Lyapunov 函数 (能量函数)
E =
1
2
X
T
W
T
Y
1
2
Y
T
W X
其中:X, Y 为样本矩阵。由 Y
T
W X = (Y
T
W X)
T
= (W X)
T
Y = X
T
W
T
Y ,所有 E 也可
写为
E = X
T
W
T
Y (1.17)
可见,(1.17) 式与 Hopeld 网络的能量函数相似。由上述内容可知,样本点 (x
k
, y
k
) BAM
络的稳定状态。
x 引起的能量变化为 E
x
E
x
= X
T
W
T
Y =
n
i=1
x
i
l
j=1
w
ji
y
j
y 引起的能量变化为 E
y
E
y
= Y
T
W X =
l
j=1
y
j
n
i=1
w
ij
x
i
X = 0 时,x
i
l
j=1
w
ji
y
j
E
x
0 Y = 0 时,y
j
l
i=1
w
ij
x
i
E
y
0
所以,当 X = 0, Y = 0 时,E 0
考虑阈值 θ θ
i
(i = 1, 2, . . . , n) x
i
的阈值,µ
j
(j = 1, 2, . . . , l) y
j
的阈值,则时的
BAM 网络为
Y
k
(t + 1) = f
y
(W X
k
(t) µ)
X
k
(t + 1) = f
x
(W
T
Y
k
(t + 1) θ) = f
x
(W
T
f
y
(W X
k
(t) µ) θ)
http://www.ma-xy.com 57 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
定义其 Lyaponov 函数为
E = XW Y
T
+ Xθ + Y µ
有能量差为
E = E(t + 1) E(t)
= (∆X)W Y
T
+ (∆X)θ
T
= (∆X)(W Y
T
θ
T
)
= (∆x
i
)
l
j=1
w
ij
y
+
θ
i
由于 x
i
是双性的, x
i
1}所以 x
i
必为 ±2 0¬如果 x
i
= 0 则状态有变化,E < 0
如果 x
i
= 2
l
j=1
y
j
w
ij
θ
i
< 0从而 E < 0®如果 x
i
= 2 ,则
l
j=1
y
j
w
ij
θ
i
> 0
从而 E < 0,由此可见,当 BAM 网络状态改变时,有 E < 0
1.4.3 盒中脑 BSB
BSB 网络结构
盒中脑模型 (Brain State in a Box) Anderson 1977 年提出。BSB 基本上是一个带幅度
限制的正反馈系统,我们仍然使用前面聚类数据 {x
k
}
m
k=1
x
k
= ( x
k
1
, x
k
2
, . . . , x
k
n
) R
n
由此,
们可以想到它的网络结构是:输入层有 n 个神经元,输出层有 n 个神经元;设输入层到输出层
的连接权重为 W R
n×n
,并且假设 W 是对称矩阵,且 W 的最大特征值为正实数,λ
max
> 0
BSB 的网络结构如图 (1.27)
1.27: BSB 网络结构图
我们仍然假设已经有了 W 以便观察 BSB 的运行方式:对于某一个样本 x
k
x
k
输入到
网络,有
y
k
= x
k
+ βW x
k
然后,将 y
k
反向传递给输入层,有
x
k
= φ(y
k
)
http://www.ma-xy.com 58 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
其中:β 是一个小常数,x
k
n 维向量,φ sgn 或者 siglins 函数。由上面的传递过程,我们
可以看出,x
k
在不同时刻 t 的状态为
y
k
(t) = x
k
(t) + βW x
k
(t)
x
k
(t + 1) = φ(y
k
(t)) = φ(x
k
(t) + βW x
k
(t))
直觉上,BSB 模型的正反馈环节导致初始状态 x
k
(0) 范数随着迭代次数 t 的增加而增加,
直到它撞到盒子 (单位超立方体) 的壁上,然后顺着壁滑行,最终停在盒子的一个稳定角点上,
也是 BSB 名字的由来。
BSB 模型稳定性
我们就输入层某个神经元 j(j = 1, 2, . . . , n) 来看
x
j
(t + 1) = φ
n
i=1
c
ji
x
i
(t)
其中:系数 c
ji
= δ
ji
+ β
w
ji
δ
ji
Kronecker delta 函数,仅当 j = i 时为 1
定义 BSB 模型的 Lyapunov 函数如下 (1990.Grossberg)
E =
β
2
n
i=1
n
j=1
w
ji
x
j
x
i
=
β
2
X
T
X
Golden 1986 年分析了 BSB 模型,指出:BSB 模型实际上是一个梯度下降算法,使能量函数
E 最小,并且,值得一提的是:这要求权重矩阵 W 满足下面 2 个条件:¬W 是对称的;W
半正定的,λ
min
0。这样,当在时刻 t + 1 时,状态向量 x(t + 1) 与在时刻 t 的状态向量 x(t)
不同时,BSB 模型的能量函数 E t 增加而减小。更近一步,能量函 E 最小点定义了
BSB 的平衡状态,模型由
x(t + 1) = x(t)
表征,即 BSB 是一个能量最小化网络。
BSB 模型的平衡状态由单位超立方体的特定的角点和它的原点定义,在后一种情况,状态向
量的任何波动,无论多小,都会被模型的正反馈环节放大,因此导致模型从原点向稳定状态转移。
换句话说,原点是一个鞍点。对超立方体来说,要使它的每一个角点作为 BSB 模型的平衡状态,
权重矩阵 W 还要满足第 3 个条件 (1988.Greenberg)®权重矩阵 W 是对角有事的 (dominant)
w
jj
i=j
|w
ij
| j = 1, 2, . . . , n
为了使平稳状态 x 稳定,也就是为了使单位超立方体的一个特定角点是一个笃定的吸引子,
在单位超立方体中,必须有一个吸引盒 N (x),使得对 N(x) 中的所有初始状态向量 x(0)BSB
http://www.ma-xy.com 59 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
x使子,W 4
(1988.Greenberg)¯W 是强对角优势的,即
w
jj
i=j
|w
ij
| + α j = 1, 2, . . . , n
如果 BSB 型的权 W 只是对称的和半正定的,则单位超立方体中只有一些角点是吸引
子,如果 W 还满足条件®¯,则单位超立方体中的所有角点都是潜在的吸引子。
1.4.4 极限学习机 ELM
中, () 中,
用,下, y x 关, t x (例:
y(t) = f(x(t))),还 t τ x (例:y(t) = f (x(t), x(t τ )))Elman
J.L.Elman 1990 针对语音处理问题提出来的一种网络,它是一种典型的局部回归网络。
Elman 网络具有与多层前向网络相似的多层结构,它的主要结构是前向连接,有输入层、隐含层、
承接层和输出层 4 个网络层,输入层隐含层和输出层同 BP 网络相似,而承接层的作用是:通过
连接记忆将上一个时刻的隐含层状态同当前时刻的网络输入一起作为隐含层的输入,相当于状态
反馈。隐含层传递函数仍为某种非线性函数,一般为 sigmoid 函数;输出层的传递函数为线性函
数;承接层也为线性函数,其网络结构示意图如图 (1.28) 所示
1.28: ELM 网络结构示意图
设输入层有 n 个神经元,输出层有 K 个神经元,隐含层有 L 神经元,承接层有 L 个神
经元,输入层到隐含层的权重为 W 承接层到隐含层的权重为 R隐含层到输出层的权重为 V
我们共有 m 个样本 x
k
= ( x
k
1
, . . . , x
k
n
), k = 1, 2, . . . , m
仍假设已经有了网络权重 W, R, V 来研究 ELM 的运行方式。ELM 的运行方式为:将样本
x
k
输入到输入层,隐含层的输入为 W
T
x
k
+ R
T
Y
J
隐含层输出为 Y
L
= f
1
(W
T
x
k
+ R
T
Y
J
)
接层的输入为 Y
L
,承接层的输出为 Y
J
= Y
L
,输出层的输出为 o
k
= f
2
(V
T
Y
L
)
http://www.ma-xy.com 60 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
由上面 ELM 运行方式可以看出,ELM 网络的权重更新 (学习方) 可以 BP 法。
m 个样本的总离差平方和最小为目标,有
min
w
E =
m
k=1
E
k
=
1
2
m
k=1
||o
k
y
k
||
2
=
1
2
m
k=1
(e
k
)
T
e
k
=
1
2
m
k=1
K
i=1
(o
k
i
y
k
i
)
2
=
1
2
K
i=1
||o
i
y
i
||
2
就像 BP 算法中那样,无论求 min E 还是 min E
k
我们都用全部样本 X,所以求解的梯度
方向是全局梯度方向,为了加快收敛速度,我们采用 SGD MBGD 等方法。对于计算梯度的问
题,只需要在 BP 算法的基础上再求一个 R 权重的梯度即可,这里,我们不再继续讨论了。后面,
我们将进入深度学习部分,我们先从 BM 网络谈起,接着按照 BM RBM DBN DBM
的顺序进行。
MATLAB 中使用 elmannet 函数来实现 ELM 网络,其调用格式为
elmannet(layerdelays,hiddenSizes,trainFcn)
其中:layerdelays 是延迟数,默认为 1:2
1.4.5 玻尔兹曼机 BM
BM 简介
深度学习模型 DBN DBM 是由限制玻尔兹曼机 RBM 堆积而成的, RBM 是在玻尔兹
曼机 BM 的基础上进行改进的,为此,我们先来讨论一下 BM并且,由于深度学习发展速度非
常快,基本上每天都有新内容,所以 DBN DBM 能已经被淘汰掉了。关于深度学习模型,
我们只介绍一些有里程碑意义的模型。
模拟退火算法是 1953 N.Metropolis 等人在研究二维相变时提出的。1983 年,S.Kirkpatrzck
等用模拟退火设计大规模集成电路 (VLSI)G.E.HintonTJ.Sepjmowski D.H.Ackley 等于 1983
年,借助统计力学的概念和方法,把模拟退火方法引入到 Hopeld 络中,使 Hopeld 有了
机性,从而提出了玻尔兹曼机。1984 S.Geman D.Geman 给出退火率 T 1/ log t但这个
退火过程太慢,因而效率很低,几乎没有太大使用价值。1985 年,Harold Szu 提出了一种快速
模拟退火法,称为柯西机 (Cauchy Machine),这使得 BM 方法有了应用的可能。从前面优化部
分介绍的模拟退火来看,它相对于普通的爬山法而言,具有随机性,有一定概率跳出局部极小点,
因此,模拟退火法可以看成是“随机梯度下降法”
BP Hopeld 使向,
¬网络中存在输入到输出的非线性映射,从而使网络的误差或能量函数是含有许多极小点的非
线性超平面,即非凸;在算法上,只能按目标函数梯度减小的方向变化,这导致 BP Hopeld
http://www.ma-xy.com 61 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
很有可能陷入局部极小点。为此,我们可以在算法中引入随机梯度方向来克服这一缺陷。随机型
神经网络有以下特点:
1. 各神经元的输入不能决定其输出状态是 0 或者 1,而是决定了输出为 0 或者 1 的概率;
2. 在网络学习阶段,随机型神经网络并不基于某种确定性算法调整网络连接权值,而是按
某种概率分布进行处理;
3. 在网络运行阶段,随机型神经网络不是按照某种确定性的网络方程进行状态改变,而是
照某种概率分布决定网络状态的转移。
BM 的网络结构
BM 的网络结构 Hopeld 网络的结构相似,网络中 n 神经元之间相互连接,为双向
连接结构,且每个神经元到自身无反馈 w
ii
= 0。我们可以假 w
ij
= w
ji
(i, j = 1, 2, . . . , n)。每
个神经元的输出 x
j
均为 0 1,其网络结构如图 (1.29) 所示
1.29: BM 网络结构示意图
注:输入层加上输出层为可视层,对自己学习 (自联想) 无输出层,而互联想,有输出层。
果不层次构,网络如图 (1.29)(b) 示,共 n 经元, t 刻,络的
X(t) = (x
1
, x
2
, . . . , x
n
)。如果考虑层次结构,可将 BM 分为可视 v 和隐含层 h,设可视层
(visiable) 神经元个数为 n
v
隐含层 (hidden) 神经元个数为 n
h
则有 n = n
v
+ n
h
隐含层和可
视层神经元状态 v
j
, h
i
的状态值为 0 1这里所说的 v
j
, h
i
即为 x
j
值得一提的是: Hopeld
网络不同的是,这里的 v
i
, h
j
或者 x
j
的状态值为随机变量,其输出
i
w
ij
x
i
θ
j
只是 x
j
值为 0 1 的概率,而不是具体的神经元状态,即
P (x
j
= 1) =
i
w
ij
x
i
θ
j
v = (v
1
, v
2
, . . . , v
n
v
)
T
{0, 1}
n
v
量,量, 0 1
h = (h
1
, h
2
, . . . , h
n
h
)
T
{0, 1}
n
h
量,量, 0 1a =
(a
1
, a
2
, . . . , a
n
h
)
T
(/bias)a
i
Rb = (b
1
, b
2
, . . . , b
n
h
)
T
置向量 (阈值/bias)b
j
R神经元 v
i
h
j
的连接权重为 W
ij
W = ( W
ij
)
n
v
×n
h
R
n
v
×n
h
注:x (v, h)θ W (W, R, L, a, b)
http://www.ma-xy.com 62 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
神经元 v
i
v
j
的连接权重为 L
ij
L = (L
ij
)
n
v
×n
v
R
n
v
×n
v
神经元 h
i
h
j
的连接权重为
R
ij
,则 R = (R
ij
)
n
h
×
n
h
R
n
h
×n
h
,且注意:各神经元自身不连接,权重为 0
上面,给出了 BM 的网络结构,下面,来看一下 BM 的网络输出。在 Hopeld 网络中,神
经元 j 的输出为
x
j
= sgn
i
w
ij
x
i
θ
j
=
0
1
但上面说到 BM 的神经元输出值不再是一变量,而是一个随机变量。所以,我们只能给出神
经元 j 取值为 1 的概率。那么,神经元 j 取值为 1 的概率是多少呢?或者说我们如何依据输
i
w
ij
x
i
θ
j
来设定其概率呢?(概率求和需要为 1)可以借助下面的函数图 (1.30) 进行说明
1.30: BM 神经元概率值示意图
神经元 j 取值为 1 的概率为
P (x
j
= 1) =
1
1 + e
s
j
/T
=
1
1 + e
(
i
w
ij
x
i
θ
j
)
/T
神经元 j 取值为 0 的概率为
P (x
j
= 0) = 1 P (x
j
= 1) =
e
s
j
/T
1 + e
s
j
/T
=
1
1 + e
s
j
/T
其中:T 为温度参数。可以看出,如果神经元 j 的输出 s
j
0 P (x
j
= 1) = P (x
j
= 0) = 0.5
s
j
越大,P (x
j
= 1) 越大。并且,网络参数 T 会对产生影响:温度 T 越高曲线越平滑,P (x
j
= 1)
相对于 s
j
的变化越小,因此,即使神经元 j 的输出 s
j
有较大的变化,也不会对 P (x
j
= 1) 产生
很大的影响。并且, T 时,曲线变为一条恒为 0.5 的直线,P (x
j
= 0) = P (x
j
= 1) ,也
就意味着网络中各神经元有更多机会进行状态选择;相反,当 T 越小时,P (x
j
= 1) s
j
变化
越敏感,即 s
j
的一个小变化,P (x
j
= 1) 也会有很大变化,且 T −∞ 时,概率 1BM
网络也就变为了 Hopeld 网络。
上面,给出了 BM 网络的输出,下面,我们应该讨论的是:1.BM 网络整体取某一状态的概
(联合概率密度),即 X = (x
1
, x
2
, . . . x
n
)
T
的概率 P (X = (x
1
, x
2
, . . . x
n
))2.BM 网络的运行
规则;3.BM 网络的能量函数;4.BM 网络的学习方法,即权重 θ W (W, R, L, a, b) 的求解。
BM 网络的运行规则
假设我们已经得到了参数 θ W (W, R, L, a, b)BM 网络的运行规则 Hopeld 网络相
似,问题是:¬何确定网络已经稳定?步工作还是同步工作? t 时刻改变几个神经元的
http://www.ma-xy.com 63 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
状态?异步工作是改变一个或部分神经元的状态,同步工作是改变所有神经元的状态。对某个样
x
k
(k = 1, 2, . . . , m) 而言,将 x
k
输入到 BM 网络中,其异步运行规则如下:
Step1. 初始化。初始温度 T (t = 0) = T
0
,终止温度 T
min
,参数 θ = W = ( W, R, L, a, b)
Step2. t 时刻,在温度 T (t) = T
k
下,从网络中随机挑选一个神经元 j(j = 1, 2, . . . , n)计算
其输出
s
j
=
i
w
ij
x
i
θ
j
计算神经元 j 的概率值
P (x
j
= 1) =
1
1 + e
s
j
/T
k
Step3. 更新网络状态。对第 j 个神经元,按上述概率随机更新神经元 j 的状态,得到 x
j
(t + 1)
其余神经元的状态不变,即
x
i
(t + 1) = x
i
(t) i = 1, 2, . . . , n, i = j
Step4. 判断网络在温度 T
k
下是否达到平衡状态,如果未平衡,则转到 Step2否则,转到 Step5
Step5. 终止条件。不终止,则置 t := t + 1,并设置此时的温度 T (t + 1) < T (t),转到 Step2
注:降温函数可以使用
T (t)/T
0
1/ ln t
T (t)/T
0
1/t
T (t + 1) = T
0
/ log(t + 1)
T (t + 1) = T
0
/(t + 1)
T (t + 1) = λT (t)
BM
网络的能量函数
Hopeld 相同,我们也采用能量函数来描述网络状态。定义 BM 网络的能量函数为
E
θ
(x) = x
T
W x + θ
T
x
如果是 v h,则写为
E
θ
(v, h) = v
T
W h
1
2
v
T
Lv
1
2
h
T
Rh v
T
b h
T
a
E =
1
2
n
i=1
n
j=1
w
ij
x
i
x
j
+
i=1
θ
i
x
i
http://www.ma-xy.com 64 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
可知,单一神经元 x
j
的能量 E
j
E
j
=
1
2
n
i=1
w
ij
x
i
x
j
+ θ
j
x
j
=
1
2
x
j
n
i=1
w
ij
x
i
+ θ
j
x
j
t 时刻到 t + 1 时刻的能量变化为
E
j
= E
j
(t + 1) E
j
(t)
=
1
2
[x
j
(t + 1) x
j
(t)]
n
i=1
w
ij
x
i
+ [x
j
(t + 1) x
j
(t)]θ
j
=
1
2
x
j
n
i=1
w
ij
x
i
+ x
j
θ
j
= x
j
n
i=1
w
ij
x
i
θ
j
+
1
2
x
j
n
i=1
w
ij
x
i
假设 BM 采用异步操作方式,即每时 t 有一个神经元 j 的状态可能改变,其余神经元
状态不变,则上式 E
j
可以简写为
E
j
= x
j
n
i=1
w
ij
x
i
θ
j
= x
j
s
j
为了分析 E
j
的大小,在 t + 1 时刻,考虑如下三种情况:
1. s
j
= 0 ,则 E
j
= 0
2. s
j
> 0 P (x
j
= 1) > 0.5即神经元 j 取值为 1 的概率较大。此时可以得到以下结论:
(a) x
j
(t) = 1 ,则 x
j
= 0 的概率较大,因此,E
j
= 0 的概率较大;
(b) x
j
(t) = 0 ,则 x
j
= 1 的概率较大,因此,E
j
< 0 的概率较大.
3. s
j
< 0,则 P (x
j
= 1) < 0.5,即神经元 j 输出为 0 的概率较大,此时可得到以下结论:
(a) x
j
(t) = 1 ,则 x
j
= 0 的概率较大,因此,E
j
= 0 的概率较大;
(b) x
j
(t) = 0 ,则 x
j
= 1 的概率较大,因此,E
j
< 0 的概率较大.
综上可知,当神经元 j 的状态改变时,其能量函数的变化量 E
j
0 的概率较大。由于神
经元是任意一个神经元,所以网络全局能量的变来给 E 0 的概率也较大。 Hopeld
网络不同的是:Hopeld 是确定能使能量下降 (单看成目标函数),而 BM 网络只是可能使
量函数下降,因此,BM 具有跳出局部极小点的能力。
http://www.ma-xy.com 65 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
Boltzmann 分布
从前面的 Hopeld 网络中,我们知道,将一个样本 x
k
输入网络后,随着时间 t 的不断迭代,
网络最终会收敛到收敛态,称为 x
k
也称 x
k
Hopeld x
k
的记忆,当然,我们会要求 x
k
x
k
尽可能接近。
现在,在 BM 网络中,我们仍然会有 x
k
x
k
,只不过二者都不再是确定变量,而是随机
变量。也就是说,现在要求 θ使 x
k
, x
k
的概率分布尽可能接近。或者从所有样本来说,我
们求使样本出现概率最大的 θ max
θ
P (x
1
, x
2
, . . . , x
m
),其中:x
i
为某一样本。 BM 以及
后面的 RBM 中,我们也可能将 m 个样本 {x
k
}
m
k=1
写为 v, h 的形式 {v
k
}
m
k=1
上面只是督学言,如果监督习,们可使 n
h
= n
y
,然
P (h
1
, h
2
, . . . , h
m
) 表示输出样本 y 的概率。下面,我们先来求出某一样本 x
k
出现的概率,之后
再求其联合概率分布。样本 x
k
出现的概率即为 BM 络处于某一状态的概率,例如:P (x
1
=
1, x
2
= 0 , . . . , x
n
= 0)
假设 BM t 时刻的状态为 X
1
R
n
t + 1 时刻的状态为 X
2
,并且 BM 采用异步运行方
式,那么有
(1) 如果在 t 时刻,神经元 j 的状态 x
j
1设此时的能量函数值为 E(X
1
) t + 1 时刻,
经元 j 的状态 x
j
0,此时的能量函数值为 E(X
2
),那么
E = E(X
2
) E(X
1
) = x
j
s
j
= (0 1)s
j
= s
j
P (x
j
= 1) =
1
1 + e
E/T
P (x
j
= 0) = 1 P (x
j
= 1) =
e
E/T
1 + e
E/T
从而
P (x
j
= 0)
P (x
j
= 1)
= e
E/T
=
e
E(X
2
)/T
e
E(X
1
)/T
由于网络异步运行,因此有
P (X
2
)
P (X
1
)
=
e
E(X
2
)/T
e
E(X
1
)/T
(2) 如果在 t 时刻神经元 j 的状态 x
j
0能量为 E(X
1
) t + 1 时刻 x
j
1能量为 E(X
2
)
那么
E = E(X
2
) E(X
1
) = (1 0)s
j
= s
j
P (x
j
= 1) =
1
1 + e
E
/
T
P (x
j
= 0) = 1 P (x
j
= 1) =
e
E/T
1 + e
E/T
http://www.ma-xy.com 66 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
从而
P (x
j
= 0)
P (x
j
= 1)
=
e
E(X
2
)/T
e
E(X
1
)/T
由于网络异步运行,因此有
P (X
1
)
P (X
2
)
=
e
E(X
1
)/T
e
E(X
2
)/T
由上述 (1)(2) 可知,BM 的任意两个状态 X
1
, X
2
出现的概 P (X
1
), P (X
2
) 与其能量之
存在一定的关系:某个网络状态对应的能量越低,该状态出现的概率就越大。
事实上,统计力学的相关研究表明:在温度 T ,分子停留在状态 x 概率满足 Boltzmann
概率分布
P (E = E(x)) =
e
E(x)/T ·RH
Z(T )
其中:E(x) 表示状态 x 时的能量,RH > 0 为玻尔兹曼常数,E 表示分子能量的一个随机变量,
Z(T ) 为概率分布的标准化因子 (归一化因子),忽略 RH,有
Z(T ) =
xD
e
E(x)
D 为状态 x 的可能取值空间,空间大小为 2
n
或者 2
n
v
×n
h
上面的状态概率分布 P (E = E(x)) 可以记为
P
θ
(v, h) = P (v, h|θ) = P (v, h; θ) = P
θ
(x) =
1
Z(T )
e
E
θ
(v,h)
从中可以看出,能量 E(x) 越大,则状态 x 的概率值越小。为书写简便,我们默认已经给出网络
参数 θ,所以 P
θ
(v, h) = P (v, h)
BM 学习方法
面, BM “输出” x
k
率,率,且,
BM 知道 BM
θ W (W, R, L, a, b)。下面,我们就要来讨论如何求解参数 θ W (W, R, L, a, b)
我们知道,对于某一个样 x
k
而言,其本身有一个概率 P (x
k
= x),而 x
k
输入到 BM
网络后,又有一个概率,我们自然要在这两个概率上做文章,比如:要求 BM (概率分)
来逼近 (近似) 样本的真实分布,甚至还可以从 BM 中生成样本。
设共有 m 个样本 {x
k
}
m
k=1
,或者写为 v, h 的形式 {v
k
}
m
k=1
,记样本集为 D
m
= {v
k
}
m
k=1
,每
个样本 v
k
{0, 1}
n
v
,例如:样本 1 经过01 编码 后是 n
v
长度的 v
1
= (0 , 1 . . . , 1, 0);样本 2
01 编码 后是 n
v
长度的 v
2
= (1, 1 . . . , 1, 1)。并且,假设各样本独立同分布。下面介绍两种求
解参数的方法:1. K-L 距离最小法 (交叉熵最小)2. 样本概率最大 (极大似然估计法)
http://www.ma-xy.com 67 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
方法 1K-L 距离最小法 Hinton 最初开 BM 网络时,就是采用的 K-L 最小方法,原文为:
能量函数和样本概率分布为
E
θ
(v, h) = v
T
W h
1
2
v
T
Lv
1
2
h
T
Rh
P (v) =
1
Z
θ
h
exp(E
θ
(v, h))
其中:Z
θ
=
v
h
exp(E
θ
(v, h))。某一神经元的概率为
p(h
j
= 1 |θ, h
·j
) = g
i
W
ij
v
i
+
m=j
R
jm
h
·,m
p(v
i
= 1 |h, v
·i
) = g
j
W
ij
h
j
+
k=i
L
ik
v
k
权重更新公式为
W = α
E
P
data
[vh
T
] E
P
model
[vh
T
]
L = α
E
P
data
[vv
T
] E
P
model
[vv
T
]
R = α
E
P
data
[hh
T
] E
P
model
[hh
T
]
其中:
P
data
(v, h) = P
data
(v)P
data
(h|v)
P
data
(v) =
1
m
m
k=1
δ(v v
k
)
下面,来对上面的公式进行说明。不考虑偏置 bias,仅就权重 θ (W, R, L) 看,对某一
个样本 v
k
而言
p
+
(v
k
, h
l
) =
e
E
θ
(v
k
,h
l
)/T
Z
θ
边缘分布 p(v
k
) 写为
p
+
(v
k
) =
h
l
p
+
(v
k
, h
l
) =
1
Z
θ
e
E
θ
(v
k
,h
l
)/T
其中:v
k
{0, 1}
n
v
是样本,h
l
{0, 1}
n
h
是长度为 n
h
的任意的 01 值向量 (h 如何确定呢?)
p
+
表示 P
data
,称 p
+
(v
k
) 为样本的实际概率。简单理解:样本实际概率就和频数一样,只不
这里有了具体的“频数”计算公式。如果我们给出了 h 的所有可能 (或者说 h
l
已知),那么,我
们只需要将样本 v
k
(k = 1, 2, . . . , m) 带入上面的计算公式即可 (不是带入到 BM 模型中)
v
k
输入到 BM 模型中,记由模型生成的概率为 p
(v
k
),即为 P
model
。我们要求 p
+
(v
k
)
p
(v
k
) 尽可能接近,用 KL 距离来衡量两个概率分布之间的接近程度,有
G(θ) =
m
k=1
p
+
(v
k
) ln
p
+
(v
k
)
p
(v
k
)
=
m
k=1
p
(v
k
) ln
p
(v
k
)
p
+
(v
k
)
http://www.ma-xy.com 68 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
其中:G(θ) 0,并且,只有在 p
+
(v
k
) = p
(v
k
) 时,G(θ) = 0。显然 G 越小,实际概率 (样本
概率)p
+
(v
k
) 越接近期望概率 (模型输出概率)p
(v
k
)因此,BM 模型学习的过程就是使 G 达到
最小的过程。
当然,要注意的是,上面使 G(θ) 小的过程是在所有样本 D
m
上进行的,而不是像 SGD
那样一次一个样本 v
k
。对于 G(θ),我们已经有了 p
+
(v
k
)(p
+
(v
k
) 来源于数据集而非模型,就像
数据自身的频率或者经验密度经验分布那样)下面来看 p
(v
k
)。将 v
k
输入到 BM 络后,在
网络运行时有
p
(v
k
) =
h
l
p(v
k
, h
l
) =
1
Z
θ
e
E(v
k
,h
l
)/T
下面,将 G(θ) 关于 θ (W, R, L) 求导,有
G
W
ij
=
k
p
+
(v
k
)
p
(v
k
)
p
(v
k
)
W
ij
而对 p
(v
k
),有
p
(v
k
)
W
ij
=
1
T
h
p
(v
k
, h
l
)s
k,l
i
s
k,l
j
p
(v
k
)
λ,µ
p
(v
λ
, h
µ
)s
λ,µ
i
s
λ,µ
j
其中:s
α,β
i
为第 i 个神经元的状态值;s
α,β
j
为第 j 个神经元的状态值,且
e
E(v
α
,h
β
)/T
W
ij
=
1
T
s
α,β
i
s
α,β
j
e
E(v
α
,h
β
)/T
于是有
G
W
ij
=
1
T
k
p
+
(v
k
)
p
(v
k
)
h
l
p
(v
k
, h
l
)s
k,l
i
s
k,l
j
p
(v
k
)
λ,µ
p
(v
λ
, h
µ
)s
λ,µ
i
s
λ,µ
j
由于
p
+
(v
k
, h
l
) = p
+
(h
l
|v
k
)p
+
(v
k
)
p
(v
k
, h
l
) = p
(h
l
|v
k
)p
(v
k
)
p
+
(h
l
|v
k
) = p
(h
l
|v
k
)
所以有
p
(v
k
, h
l
)
p
+
(v
k
)
p
(v
k
)
= p
+
(v
k
, h
l
) (1.18)
并且,由于
k
p
+
(v
k
) = 1 (1.19)
http://www.ma-xy.com 69 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
将上式 (1.18) 和式 (1.19) 带入到
G
W
ij
,有
G
W
ij
=
1
T
k
h
l
p
+
(v
k
, h
l
)s
k,l
i
s
k,l
j
λ
µ
p
(v
λ
, h
µ
)s
λ,µ
i
s
λ,µ
j
=
1
T
ρ
+
ij
ρ
ij
其中:ρ
+
ij
是样本中两个神经元 i, j 都处于 1 的平均概率;ρ
ij
是网络运行中两个神经元 i, j 都处
1 的平均概率。
最小化 G 的步骤是:当网络处于 T 温度下的热平衡 (v
k
的平稳输 v
k
已经形成)
ρ
+
ij
, ρ
ij
,计算权重更新方向
W
ij
=
η
T
(ρ
+
ij
ρ
ij
)
并更新权重
W
ij
:= W
ij
+ W
ij
其中:η 为学习率。更新公式中的
η
T
ρ
+
ij
表示连接权重的调整量 W
ij
ρ
+
ij
成正比, s
i
s
j
同时为 1 数量越大,ρ
+
ij
越大,W
ij
越大,称
η
T
ρ
+
ij
为正学习项;相反的,称
η
T
ρ
ij
为反学习
项。下面,我们给出 BM 的算法步骤:
Step1. 初始化。
初始权重 W = (W
ij
)
n×n
, W
ij
[1, 1], W
ij
= W
ji
初始温度 T
0
终止温度 T
end
样本数据
D
m
= {v
k
}
m
k=1
网络更新次数 (Gibbs 采样数)d,循环次数 t, t
max
学习率 η,由样本集 D
m
计算样本概率 p
+
(v
k
),并令 p
(v
k
) = 0 , k = 1, 2, . . . , m
Step2. 将某一样本 v
k
(k = 1, 2, . . . , m) 输入到 BM 可视层。
Step3. 从初始温度 T
0
开始,按照 BM 运行规则,将网络状态 v
k
更新至终止温度 T
end
并输出
平衡状态 h
l
。注:T (t) =
T
0
1+ln t
或者 T (t) =
T
0
log(t+1)
Step4. 在隐含层的平衡状 h
l
下,保持温度 T = T
end
不变,对整个网络状态进行 d 更新
(一旦达到平衡态,就可以采样 2 个神经元为 1 的概率)每次更新后,当神经元 i j 同时为 1
时,计算
Count
+
ij
= Count
+
ij
+ 1
Step5. 重新从初始温度 T
0
开始,按照 BM 运行规则,将整个网络(这里没有输入样本) 的状态
更新至终止温度 T
end
下的平衡态 v
k
, k = 1, 2, . . . , m
Step6. 在网络平衡状态下,保持 T = T
end
不变,对整个网络继续进行 d 次更新 (采样)每次更
新当神经元 i, j 同时为 1 时,计算
Count
ij
= Count
ij
+ 1
Step7. 返回 Step2,直到进行 t 次循环,并且,t > n
v
http://www.ma-xy.com 70 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
Step8. 按下式计算 ρ
+
ij
, ρ
ij
(i, j = 1, 2, . . . , n)
ρ
+
ij
=
1
td
Count
+
tj
ρ
ij
=
1
td
Count
ij
Step9. 更新权重。
W
ij
:= W
ij
+ W
ij
= W
ij
+
η
T
end
(ρ
+
ij
ρ
ij
)
Step10. 返回 Step2,直至进行 t
max
次循环。
下面,我们再给出一个更详细的步骤:
Step1. 初始化。
初始权重 W = (W
ij
)
n×n
, W
ij
[1, 1], W
ij
= W
ji
初始温度 T
0
终止温度 T
end
样本数据
D
m
= {v
k
}
m
k=1
,网络更新次数 (Gibbs 采样数/Markov 链长)d,循环次 t, t
max
,学习率 η
由样本集 D
m
计算样本概率 p
+
(v
k
),并令 p
(v
k
) = 0 , k = 1, 2, . . . , m,容许误差 ε
Step2. 正阶段对于一个样本 v
k
, k = 1, 2, . . . , m将其输入到 BM 网络,并随机设置其隐含层
神经元状态 h
k
(当然,如果是有标签样本的话,h
k
设置为标签状态)注意:这里的 h
k
随机开始
要让其达到稳定是耗时的,不如有指导性的设置。
¬在温度 T 下,使网络达到平衡;
t := 1 ,挑选隐含层节点 j(j = 1, 2, . . . , n
h
),将其状态翻转
h
j
=
1 h
j
(t 1) = 0
0 h
j
(t 1) = 1
其余神经元状态不变。
®计算翻转后的网络能量变化
E(t 1) = v
T
W h(t 1)
E(t) = v
T
W h(t)
E
j
= E(t) E(t 1)
¯ j 变。 E
j
< 0变; E
j
0
P
j
= e
E
j
/T (t)
,如果 P
j
> λ,则接受新状态,否则状态不变。
°
如果隐含层节点为完全考察
(
未遍历
)
,或者状态未稳定,则返
;否则转到
±
。当在温度
T
下稳定时,才进入下一温度。
±终止条件。 T (t) T
end
则终止;否则, t := t+1计算温度 T (t) =
T
0
1+ln t
或者
T
(
t
) =
T
0
log(t+1)
Step3. 记录平衡时隐含层神经元状态 h
l
Step4. 在隐含层的平衡状 h
l
下,保持温度 T = T
end
不变,对整个网络状态进行 d 更新
(一旦达到平衡态,就可以采样 2 个神经元为 1 的概率)每次更新后,当神经元 i j 同时为 1
时,计算
Count
+
ij
= Count
+
ij
+ 1
http://www.ma-xy.com 71 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
Step5. 选取新样本 v
k
返回 Step2在遍历所有样本后,计算可视层神经元 v
i
和隐含层神经元
h
j
状态同时为 1 的频率 ρ
+
ij
ρ
+
ij
=
1
td
Count
+
ij
i, j = 1, 2, . . . , n
注:仔细观察 td,可以知道吉布斯采样的由来,以及
h
的求解。
Step6. 负阶:对虚拟样 v
k
(这里的样本数量可以是 m 可以不是),随机设置可视 v
隐含层 h 的初始状态 (随机 2 )。置 t := 1,更 v, h 的状态,直到网络平衡为止。输出网络
平衡态 v
k
, h
l
Step7. 在隐含层的平衡状 h
l
下,保持温度 T = T
end
不变,对整个网络状态进行 d 更新
(一旦达到平衡态,就可以采样 2 个神经元为 1 的概率)每次更新后,当神经元 i j 同时为 1
时,计算
Count
ij
= Count
ij
+ 1
Step8. 选取新样本 v
k
,返回 Step6。直到遍历所有样本。注意:这里的 Step2 Step6 可以合
并。计算可视层神经元 v
i
和隐含层神经元 h
j
状态相同的频率 ρ
ij
ρ
ij
=
1
td
Count
ij
Step9. 调整权重
W
ij
:= W
ij
+ W
ij
= W
ij
+
η
T
(ρ
+
ij
ρ
ij
)
Step10. 返回 Step2,直到 W
ij
< ε,即 ρ
+
ij
= ρij
相接近时。
注:1.ρ
+
ij
=
v
i
, h
j
+
data
=
p(h, v)v
i
h
j
2.d 过程即为 Gibbs 采样过程。
方法 2极大似然估计法 上面求解参数 W 的方法是基于最小化 K-L 距离的,下面介绍参数的
极大似然估计。当前,我们已经讨论过了:把样本 v
k
(k = 1, 2, . . . , m) 输入到 BM 网络中,当网
络稳定时,会得到其概率
p
(v
k
) =
h
l
p
(v
k
, h
l
) =
1
Z
θ
h
l
e
E(v
k
,h
l
)
现在,我们要求 θ,使样本出现的 (联合) 概率最大
max
θ
L(θ) = P (v
1
, v
2
, . . . , v
m
) =
m
k=1
p(v
k
)
由于 max L max ln L 是等价的,有
max
θ
ln L(θ) = log
m
k=1
p(v
k
) =
m
k=1
log p(v
k
)
http://www.ma-xy.com 72 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
将上式关于 θ 求导,有
ln L(θ)
θ
=
m
k=1
ln p(v
k
)
θ
所以,我们先来处理单一样本 v
k
的导数。这里 p(v
k
) 可以记为 p
θ
(v
k
), p(v
k
|θ) 或者 p(v
k
; θ)
下面就来处理
ln p(v
k
)
θ
,由边缘分布,有
ln p(v
k
) = ln
h
p(v
k
, h)
= ln
1
Z
h
e
E(v
k
,h)
= ln
h
e
E(v
k
,h)
ln Z
ln p(v
k
)
θ
=
θ
ln
h
e
E(v
k
,h)
θ
ln Z
=
1
h
e
E
(
v
k
,h
)
h
e
E(v
k
,h)
E
(
v
k
, h)
θ
+
1
v,h
e
E(v,h)
v,h
e
E(v,h)
E
(
v, h
)
θ
=
h
e
E(v
k
,h)
h
e
E(v
k
,h)
E(v
k
, h)
θ
+
v,h
p(v, h)
E(v, h)
θ
=
h
e
E(v
k
,h)
Z
h
e
E(v
k
,h)
Z
E(v
k
, h)
θ
+
v,h
p(v, h)
E(v, h)
θ
=
h
e
E(v
k
,h)
h
e
E(v
k
,h)
Z
E(v
k
, h)
θ
+
v,h
p(v, h)
E(v, h)
θ
=
h
p(v
k
, h)
p(v
k
)
E(v
k
, h)
θ
+
v,h
p(v, h)
E(v, h)
θ
=
h
p(h|v
k
)
E(v
k
, h)
θ
+
v,h
p(v, h)
E(v, h)
θ
ln p(v
k
)
θ
=
h
p(h|v
k
)
E(v
k
, h)
θ
+
v,h
p(v, h)
E(v, h)
θ
(1.20)
= E
p(h|v
k
)
E(v
k
, h)
θ
+ E
p(v,h)
E(v, h)
θ
=
E(v
k
, h)
θ
p(h|v
k
)
+
E(v, h)
θ
p(v,h)
http://www.ma-xy.com 73 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
这里,用极大似然求解的梯度与 KL 距离求解的梯度一致,就像前面的 BM 学习算法中描述
的那样:p(h|v
k
) 部分是我们从样本 v
k
出发,求解的 h 的状态;而 p(h, v) 部分是随机出发,求
出的整个网络 v, h 的状态。我们将其改写为
E
p(h|v
k
)
E(v
k
, h)
θ
= ρ
+
ij
E
p(v,h)
E(v, h)
θ
= ρ
ij
我们先来看
E(v, h)
θ
上式的取值取决于能量函数 E(v, h) 的形式。一般而言,E(v, h) 有以下几种形式
E(v, h) = v
T
W h
1
2
v
T
Lv
1
2
h
T
Rh v
T
b h
T
a
E(v, h) = v
T
W h
1
2
v
T
Lv
1
2
h
T
Rh
E(v, h) = v
T
W h v
T
b h
T
a 限制玻尔兹曼机
E(v, h) = v
T
W h
1
2
v
T
Lv v
T
b h
T
a 半限制玻尔兹曼机
前面,我们说过不讨论阈值 a, b,所以,这里采用第二种 E(v, h),它的导数为
E
W
= vh
T
E
L
= vv
T
E
R
= hh
T
下面来讨论 (1.20) 式中等式右边的第二项
v,h
p(v, h)
E(v, h)
θ
=
v
h
p(v)p(h|v)
E
θ
=
v
p(v)
h
p(h|v)
E
θ
因此,只要知
h
p(h|v) 即可。其中:p(h|v) 是隐含层神经元 h = (h
1
, h
2
, . . . , h
n
h
) 条件联
合概率分布,我们自然会想:联合概率分布是否为各边缘分布的乘积?
p(h|v) =
n
h
j=1
p(h
j
|v)
可惜的是,只有在各随机变量 (隐含层神经元) 相互独立的时候,联合概率才等于各概率的乘积,
也就是如果隐含层 h 神经元之间不存在互连接 (h
i
, h
j
无关)则上式成立。为了使用上式,我们
可以构建如下图 (1.31) 的限制玻尔兹曼机 RBM,这个留在后面介绍。
http://www.ma-xy.com 74 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
1.31: RBM 网络结构图
回到我们的问题当中,第一个数据期望 ⟨·⟩
data
是易求的,⟨·⟩
data
v
i
, h
j
同时取 1 的概率;
⟨·⟩
model
是以最终模 (稳定时的模) 定义的分布来求的,当隐含层神经元未知时,⟨·⟩
model
要花费指数时间来精确计算,我们不得不寻找其近似方法。
典型 BM 学习方法主要有:吉布斯采样 (Gibbs sampleing)平行回火 (paralled tem-pering)
(Variational approach)、随 (stochastic approximation procedure, SAP)
对比散度算法 (contrastive divergence, KCD)、持续对比散度 (persistant contrastive dirergance,
PCD) 和快速持续对比散度 (fast persistent contrastive dirergence, FPCD)
Gibbs sampling 就是前面在 BM 学习算法中用到的方法。吉布斯采样法是马尔科夫链算法的
一种,给定一个 n 维随机向量 x = (x
1
, x
2
, x
n
),无法求得 x 的联合概率分布 p(x),但是知道给
x 的部分分量后,x
i
的条件概率分布 p(x
i
|x
i
)其中:x
i
表示 x 中不含 x
i
的部分。可以从
x 的任意状态 (即样本状态) 开始,利用条件分布 p(x
i
|x
i
) 迭代并对其分量依次采样。随着采样
次数的增加,随机变量 x
1
(k), x
2
(k), . . . , x
n
(k) 的概率分布将以 k 的几何级数的速度收敛于 x
联合概率分布 p(x)。在 BM 的每个迭代过程中,设置一个马尔科夫链,并将其运行到平衡状态,
用马尔科夫链近似期望值 E
P
model
[·]这个算法的优点是通用性较好,缺点是计算量较高,运行缓
慢,在每次迭代过程中都要等到每个马尔科夫链达到平稳分布 (平稳状态)
随机近似 SAP 1992.Neal4提出一种新的 BM 训练算法。在前面的 BM 学习算法步骤中,我们
曾提到过,h 从一个随机状态开始,要花费很长时间才能达到热平衡,那么为什么不给一个近似
平稳的状态呢?例如:我们可以选用上一个样本的平衡作为开始。我们称这种预先存储好的近似
平衡的状态为 particle(粒子,是一个向量)可以在正负阶段使用粒子,在正阶段,会夹逼出一个
数据向量,而负阶段就不需要夹逼任何东西。
SAP 方法属于广义 Robbins-Monro 式随机近似法,用于近似期望值 E
P
model
[·]SAP 学习过
程可行的主要原因是:当学习率 η 相对于马尔科夫链的混合速率变得足够小时,持续马尔科夫链
将会一直接近平稳分布,对于成功的参数更新,从持续马尔科夫链采集的数据将会高度关联。
给定一个独立同分布的样本集 D
m
= {x
k
}
N
k=1
,考虑含有充分统计量的样本分布
p(x|θ) =
1
Z
θ
exp(θ
T
ϕ(x))
上式取对数,并关于 θ 求导,有
log p(θ|x)
θ
=
1
N
N
n=1
ϕ(x
n
) E
P
model
[ϕ(x)] = S(θ)
http://www.ma-xy.com 75 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
算法 1 A Stochastic Approximation Procedure for Estimating the BM(SAP)
1: Give a data set
D
m
=
{
x
k
}
N
k=1
; Randomly initialize
θ
and
M
sample particles
X
0,M
=
{˜x
0,1
, . . . , ˜x
0,M
}
2: for t = 0 : T (number of interations) do
3: for i = 1 : M (number of parallel Markov chains) do
4: Sample ˜x
t+1,i
,given ˜x
t,i
using transition operator T
t
(˜x
t+1,i
˜x
t,i
)
5: end for
6: update
θ
t+1
= θ
t
+ α
t
1
N
N
n=1
ϕ(x
n
)
1
M
M
m=1
ϕ(˜x
t+1,m
)
= θ
t
+ α
t
S(θ
t
) + α
t
E
P
model
[ϕ(x)]
1
M
M
m=1
ϕ(˜x
t+1,m
)
= θ
t
+ α
t
S(θ
t
) + α
t
ϵ
t+1
注:ensure almost sure envergence to aon as ymptotically stable point of
˙
θ = S(θ), require
t=0
α
t
= ,
t=0
α
2
t
< .
7: Decrease α
t
8: end for
假设 θ
t
˜x
t
是当前时刻的参数和状态, θ
t
, ˜x
t
按下列算法 (1) 更新。其中:用点估计 ϕ(˜x
t+1
)
来估计 E
P
model
[ϕ(x)]
变分推断 在变分学习中,对每个训练样本可视层向量 v用近似后验分布 q(h|v, µ) 替换隐单元
向量上的真实后验分布 p(h|v, θ)BM 模型的对数似然函数有下面形式的变分下界
ln p(v, θ)
j
q(h
j
|v, µ) ln p(v, h, θ) + H(q)
= ln p(v, θ) KL(q(h|v, µ)||p(v|h, θ))
其中:H(·) 为熵。变分近似法能够很好的估计 E
P
data
[·]而不能用于估计 E
P
model
[·]变分近似法
的伪代码如下 (2)
Neal 的方法在全批量上是适用的,而在 mini batch 上比较困难,因为我们用到了同样的数
据向量,会使得权重更新有很多相同。所以,针对数据向量而存储的粒子将不再是在热平衡 (
衡态) 附近了。假设当一个数据向量 v 被夹逼的时候,这些好的解 (也就是隐含层状态)
着那个数据向量的解释是单峰的,即对于一个数据向量 v,没有 2 个不同的解释 h。基于此,我
们简记一下平均场逼近法:
http://www.ma-xy.com 76 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
算法 2 A Variational Approach for Estimating the BM(SAP)
1: Given: a data set D
m
= {v
k
}
N
k=1
; Randomly initialize θ and M sample particles
{˜v
0,1
,
˜
h
0,1
}, . . . , {˜v
0,M
,
˜
h
0,M
}
2: for t = 0 : T (number of interations) do
3: // variational inference(变分推断:正阶段)2
4: for each training example v
n
, n = 1, 2, . . . , N do
5: Randomly initialine µ and run mean - eld updates(平均场) until convergence
6: µ
j
g(
i
W
ij
v
i
+
m=j
R
mj
µ
m
)
7: Set µ
n
= µ
8: end for
9: // Stochastic Appkroximation(随机近似:负阶段)
10: for each sample m = 1 : M(number of persistent Markov Chains) do
11: Sample (˜v
t+1,m
,
˜
h
t+1,m
), given (˜v
t,m
,
˜
h
,m
) by using a Gibbs sample in
p(h
j
= 1 |v, h
j
) = g
i
W
ij
v
i
+
m=j
R
jm
h
m
p(v
i
= 1 |h, v
i
) = g
j
W
ij
h
j
+
k=i
L
ik
v
k
12: end for
13: // Parameter update
W
t+1
W
t
+ α
t
1
N
N
n=1
v
n
(µ
n
)
T
1
M
M
m=1
˜v
t+1,m
(h
t+1,m
)
T
R
t+1
R
t
+ α
t
1
N
µ
n
(µ
n
)
T
1
M
M
m=1
h
t+1,m
(h
t+1,m
)
T
L
t+1
L
t
+ α
t
1
N
v
n
(v
n
)
T
1
M
M
m=1
˜v
t+1,m
(˜v
t+1,m
)
T
14: Decrease α
t
15: end for
http://www.ma-xy.com 77 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
(1) 如果我们想得到正确统计数据,需要随机循环来更新神经元状态
p
i
= p(s
i
= 1) = σ
b
i
+
j
s
j
W
ij
(2) 如果我们不打算保持 i 的二值状态 (我们说神经元 i 是随机的,值仅有 0 1),而保持一个
实值状态,可以用
p
t+1
i
= σ
b
i
+
j
p
t
j
W
ij
用一个概率实值来代替原来的随机二值,但这样并不是很好,因为随机二值是在非线性函数内部
的。如果是一条线性函数,那没事。但因为是 sigmoid 非线性函数,每当我们替代时,就得不到
正确答案。
(3) 为了解决 biphasic oscillations, 我们采用 damped mean eld(和动量 moment 相似)
p
t+1
i
= λp
t
i
+ (1 λ)σ
b
i
+
j
p
t
j
W
ij
1.4.6 限制玻尔兹曼机 RBM
RBM 网络结构
在分析 BM 的极大似然目标的梯度时,我们发现,如果可视层、隐含层层内神经元之间无连
接的时候,可能会有更好的计算性质:联合概率等于边缘概率乘积,即
p
θ
(h|v) =
n
h
j=1
p
θ
(h
j
|v)
为此,我们有半限制玻尔兹曼机和限制玻尔兹曼机,如图 (1.32) 所示
(a) 半限制 (b) 限制
1.32: 半限制和限制玻尔兹曼机网络结构图
关于 v, h, n
v
, n
h
, a, b, W, L 的符号说明如前所述,这里不再重述。对于 () 限制玻尔兹曼机,
我们可以写出其能量函数 E(v, h)
E(v, h) = v
T
W h
1
2
v
T
Lv h
T
a v
T
b
E(v, h) = v
T
W h
1
2
v
T
Lv
http://www.ma-xy.com 78 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
下面,我们仅讨论限制玻尔兹曼机 RBMRBM 处于某一状态 (v, h) 的概率为
p(v, h) =
1
Z
e
E(v,h)
其中:Z 为归一化因子,Z =
v
h
e
E(v,h)
包含 2
n
v
×n
h
项求和。RBM 取值某一样本 v
k
的概
率为
p(v
k
) =
h
p(v
k
, h) =
1
Z
h
e
E(v
k
,h)
用极大似然估计法来估计参数 θ,求 θ 使样本的联合概率密度 (似然函数) 最大,有
max
W,a,b
L(W, a, b) = P (v
1
, v
2
, . . . , v
m
) =
m
k=1
p(v
k
)
取对数,有
max
W,a,b
ln L(W, a, b) =
m
k=1
log p(v
k
)
ln L(W, a, b) 关于参数 θ (W, a, b) 求导,有
ln L
θ
=
m
k=1
ln p(v
k
)
θ
ln p(v
k
)
θ
=
h
p(h|v
k
)
E(v
k
, h)
θ
+
v,h
p(v, h)
E(v, h)
θ
(1.21)
= E
p(h|v
k
)
E(v
k
, h)
θ
+ E
p(v,h)
E(v, h)
θ
下面,我们来分析 (1.21) 式右边第二项
v,h
p(v, h)
E(v,h)
θ
v,h
p(v, h)
E(v, h)
θ
=
v
h
p(v)p(h|v)
E
θ
=
v
p(v)
h
p(h|v)
E
θ
因此,只要求出
h
p(h|v) 即可, p(h|v)。前面我们提到过,只要隐含层层内各神经元之间不
连接 (即相互独立),则有
p(h|v) =
n
h
j=1
p(h
j
|v)
http://www.ma-xy.com 79 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
并且,对 RBM (在半限制玻尔兹曼机则不成立)
p(h
j
|v, h
j
) = p(h
j
|v)
同理,在 RBM
p(v|h) =
n
v
i=1
p(v
i
|h)
并且如果设置激励函数/传递函数为 sigmoidp(v
i
= 1 |h) = σ(b
i
+ W
i:
h),则有
p(v|h) =
n
v
i=1
p(v
i
|h) =
n
v
i=1
σ(b
i
+ W
i:
h)
我们将 θ 还原为 (W, a, b),于是有下面的关于 W
ij
, a
i
, b
i
的导数情况
(1) 关于 W
ij
的导数
h
p(h|v)
E
W
ij
=
h
n
h
i=1
p(h
i
|v)
E
W
ij
=
h
p(h
i
|v)p(h
i
|v)
E
W
ij
E
W
ij
=h
i
v
j
==========
h
p(h
i
|v)p(h
i
|v)h
i
v
j
=
h
i
h
i
p(h
i
|v)p(h
i
|v)h
i
v
j
=
h
i
p(h
i
|v)h
i
v
j
h
i
p(h
i
|v)
h
i
p(h
i
|v)=1
============
h
i
p(h
i
|v)h
i
v
j
= [p(h
i
= 0 |v) · 0 ·v
j
+ p(h
i
= 1 |v) · 1 ·v
j
]
= p(h
i
= 1 |v)v
j
(2) 关于 b
i
的导数
h
p(h|v)
E
b
i
=
h
p(h|v)v
i
= v
i
其中:
E
b
i
= v
i
h
p(h|v) = 1
http://www.ma-xy.com 80 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
(3) 关于 a
i
的导数 (类似于 W
ij
的情况)
h
p(h|v)
E
a
i
= p(h
i
= 1 |v)
对于 (1.21) 式,我们已经求出等号右边第二项,于是有
ln p(v
k
)
W
ij
=
h
p(h|v
k
)
E(v
k
, h)
W
ij
+
v,h
p(v, h)
E(v, h)
W
ij
= p(h
i
= 1 |v
k
)v
k
j
v
p(v)p(h
i
= 1 |v)v
j
ln p(v
k
)
b
i
= v
k
i
v
p(v)v
i
ln p(v
k
)
a
i
= p(h
i
= 1 |v)
v
p(v)p(h
i
= 1 |v)
其中:
p(h
j
= 1 |v, h
j
) = p(h
j
= 1 |v) = σ(a
j
+ v
T
W
:j
)
W
:j
表示权重矩阵 W 的第 j 列,可写为 W
j
, W
·j
或者 W
:,j
BM 中,已经说明了 p(x
i
= 1) = σ(
j
W
ij
x
j
+ θ
i
)这里,我们再用另一种方法推导。
要求 p(h
j
= 1 |v),令 h
j
= ( h
1
, h
2
, . . . , h
k1
, h
k+1
, . . . , h
n
h
)
T
,并令
α
j
(v) = b
j
+
n
v
i=1
v
i
W
ij
β(v, h
j
) =
n
v
i=1
a
i
v
i
+
n
h
k=j
b
k
h
k
+
n
v
i=1
n
h
k=j
v
i
W
ik
h
k
E(v, h) = β(v, h
j
) h
j
α
j
(v)
http://www.ma-xy.com 81 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
于是有
p(h
j
= 1 |v) = p(h
j
= 1 |h
j
, v)
=
p(h
j
= 1 |h
j
, v)
p(h
j
, v)
=
p(h
j
= 1 , h
j
, v)
p(h
j
= 1 , h
j
, v) + p(h
j
= 0 , h
j
, v)
=
1
2
e
E(h
j
=1,h
j
,v)
1
2
e
E(h
j
=1,h
j
,v)
+
1
2
e
E(h
j
=0,h
j
,v)
=
1
1 + e
E(h
j
=0,h
j
,v)+E(h
j
=1,h
j
,v)
=
1
e
[β(v,h
j
,v)+0·α
j
(v)]+[β(v,h
j
)1·α
j
(v)]
=
1
α
j
(v)
= sigmoid(α
j
(v))
= sigmoid
b
j
+
n
v
i=1
v
i
W
ij
= σ
b
j
+
n
v
i=1
v
i
W
ij
ln L
θ
=
m
k=1
ln p(v
k
)
θ
得到 m 样本的导 (不仅可以使用一个样本、m 个样本,还可以使用批量样本 mini batch)
ln L
W
ij
=
m
k=1
p(h
i
= 1 |v
k
)v
k
j
v
p(v)p(h
i
= 1 |v)v
j
ln L
b
i
=
m
k
=1
v
k
i
v
p(v)v
i
ln L
a
i
=
m
k=1
p(h
i
= 1 |v)
v
p(v)p(h
i
= 1 |v)
最终,有参数的更新公式
θ := θ + ηθ
RBM 学习算法
RBM 模型可以使用前面 BM Gibbs simple、变分近似法以及随机逼近 SAP 等方法进行
求解。G.E.Hinton 2002 年提出一种更离散的算法:k-CD(Contrastive Divergence) Hinton
http://www.ma-xy.com 82 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
的个人主页上可以找到相应的 M 文件。 k-CD 之后,又相继出现了持续对比散度 PCD 以及
快速持续对比散度 FPCD 等改进算法。下面,我们主要介绍 CD 算法和 PCD 算法。
k-CD 算法 通过上面的分析我们知道,权重 W
ij
的更新公式为
ln L
W
ij
=

v
i
h
j
data
v
i
h
j
model
其中:⟨·⟩
data
⟨·⟩
model
分别是从数据和最终模型中估计 · 的期望值。第一个期望
v
i
h
j
data
样本数据中可视层 v
i
和隐含层 h
j
同时为 1 的频率,而
v
i
h
j
model
是以最终模型定义的分布来
求得的频率。在吉布斯采用中,用
v
i
h
j
来近似
v
i
h
j
model
,然而,运行很多步 (d )
斯采样器是低效的,为此,我们只运行 1 (k ) 吉布斯采样,用一个非常粗略的
v
i
h
j
1
来估
v
i
h
j
modal
v
i
h
j
model
v
i
h
j
1
= v
1
i
h
1
j
然而,
v
i
h
j
1
具有很大的方差,为了减小方差,可以用下面的方法来估计
v
i
h
j
model
h
0
p(h, v
0
)
v
1
= E(v|h
0
) = p(v|h
0
)
h
1
= E(h|v
1
) = p(h|v
1
)
其中: 表示采样,v
0
为一个样本。如果使用 N 步对比散度 (N 通常较小)生成可视层向量的
时候,都可以使用期望值,需要隐含层向量时,除了最后一次使用期望向量外,都可以使用采样
技术。N-CD 算法的伪代码如下 (3)
PCD 算法 Tideman 提出 PCD 算法,弥补了 CD 算法无法极大化似然函数的缺陷。大量实验
表明,PCD 算法训练的 RBM 具有更好的学习能力。PCD 算法从持续马尔科夫链得到负阶段样
本来近似梯度。令 t 步的持续马尔科夫链为 v
t
,梯度的更新规则为
θ = η
E(vh
T
0
) E(˜v
t+k
˜
h
T
t+k
)
其中:˜v
t+k
,
˜
h
t+k
是从状 ˜v 开始进行 k 个持续马尔科夫链步骤得到的样本。PCD 伪代码如下
(4)
http://www.ma-xy.com 83 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
算法 3 N - CD for RBM
1: 初始化:样本集 D
m
= {v
k
}
m
k=1
N,初始权重 W
0
, a
0
, b
0
,容许误差 ε,学习率 η
2: while 未达到停止准则 do
3: // 停止准则可以是最大迭代次数或者梯度 W < ε
4: 随机挑选 M
b
个样本的小批量 O =
v
(1)
, v
(2)
, . . . , v
(M
b
)
,进行如下计算
W
1
M
b
M
b
t=1
v
(t)
ˆ
h
(t)T
b
1
M
b
M
b
t=1
v
(t)
a
1
M
b
M
b
t=1
ˆ
h
(t)
5: for t = 1 to M
b
do
6: ˜v
(t)
v
(t)
7: end for
8: for n 0; n < N; n n + 1 do
9: for t = 1 to M
b
do
10:
˜
h
(t)
sampled from
n
h
j
=1
σ
a
j
+ ˜v
(t)T
W
:j
11: ˜v
(t)
sampled from
n
v
j=1
σ
b
i
+ W
i:
˜
h
(t)
12: end for
13: end for
14: 计算
¯
h
(t)
σ
a + ˜v
(t)T
W
W W
1
M
b
M
b
t=1
˜v
(t)
¯
h
(t)T
b
b
1
M
b
M
b
t=1
˜
v
(t)
a a
1
M
b
M
b
t=1
¯
h
(t)
15: 更新权重
W W + ηW
b b + ηb
a a + ηa
16: end while
17: 输出:W, a, b.
http://www.ma-xy.com 84 http://www.ma-xy.com
http://www.ma-xy.com
第一章 神经网络 1.4 反馈型神经网络
算法 4 PCD for RBM
1: 初始化:样本集 D
m
= {v
k
}
m
k=1
N 初始权重 W
0
, a
0
, b
0
容许误差 ε学习率 ηGibbs steps
N,初始虚拟样本 {˜v
k
}
m
k=1
2: while 未达到停止准则 do
3: // 停止准则可以是最大迭代次数或者梯度 W < ε
4: 从样本集 D
m
中随机挑选 M
b
个样本的小批量 O =
v
(1)
, v
(2)
, . . . , v
(M
b
)
进行如下计算
W
1
M
b
M
b
t=1
ˆ
h
(t)
v
(t)
T
b
1
M
b
M
b
t=1
v
(t)
a
1
M
b
M
b
t=1
ˆ
h
(t)
5: for n 0; n < N; n n + 1 do
6: for t = 1 to M
b
do
7:
˜
h
(t)
sampled from
n
h
j=1
σ
a
j
+ ˜v
(t)T
W
:j
8: ˜v
(t)
sampled from
n
v
j=1
σ
b
i
+ W
i:
˜
h
(t)
9: end for
10: end for
11: 计算
W W
1
M
b
M
b
t=1
˜v
(t)
˜
h
(t)T
b b
1
M
b
M
b
t=1
˜v
(t)
a a
1
M
b
M
b
t=1
˜
h
(t)
12: 更新权重
W W + ηW
b b + ηb
a a + ηa
13: end while
14: 输出:W, a, b.
http://www.ma-xy.com 85 http://www.ma-xy.com
http://www.ma-xy.com
1.4 反馈型神经网络 第一章 神经网络
http://www.ma-xy.com 86 http://www.ma-xy.com
http://www.ma-xy.com
参考文献
[1] Kaiming He. Delving deeo into rectier:surpassing human-level performance on imagenet
classication. 2005.
[2] Jorden.M. An introduntion to variaational methods for graphical models. 1999.
[3] Krizhershy. Imagenet classication with deep convolutional neural networks. 2005.
[4] Neal. Conectionist learning of bm. 1992.
87