冈萨雷斯《数字图像处理》学习笔记(6)--目标识别(基于神经网络)

一、二分类感知机

感知机模型

下图展示了二分类的感知机模型:
这里写图片描述
感知机模型决策函数:

f(x)=sign(i=1nωixi+ωn+1) f ( x ) = s i g n ( ∑ i = 1 n ω i x i + ω n + 1 )

其中sign(x)为符号函数,定义为如下:
sign(x)={1,x>00,x<0 s i g n ( x ) = { 1 , x > 0 0 , x < 0

感知机学习策略

损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数不是参数的连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面S的总距离,这是感知机所采用的。为此,首先写出输入空间R”中任一点 x0 x 0 到超平面S的距离(和我们初中学的点到直线的距离公式类似,只是从二维扩充到n维,下面的 b 即上面模型中的 ωn+1 ω n + 1 ):

1ω|ωx0+b| 1 ‖ ω ‖ | ω ⋅ x 0 + b |

这里, ω ‖ ω ‖ ω ω L2 L 2 范数。

其次,对于误分类的数据 (xi,yi) ( x i , y i ) 来说,

yi(ωxi+b)>0 − y i ( ω ⋅ x i + b ) > 0

成立。因为当 ωxi+b>0 ω ⋅ x i + b > 0 时, yi=1 y i = − 1 ,而当 ωxi+b<0 ω ⋅ x i + b < 0 。时, yi=+1 y i = + 1 。因此,误分类点 xi x i 到超平面S的距离是:
1ωyi(ωxi+b) − 1 ‖ ω ‖ y i ( ω ⋅ x i + b )

这样,假设超平面S的误分类点集合为M,且不考虑 1ω 1 ‖ ω ‖ (因为 1ω 1 ‖ ω ‖ 始终为正,不影响二分类的结果,并能简化计算) 那么损失函数可定义为:
L(ω,b)=xiMyi(ωxi+b) L ( ω , b ) = − ∑ x i ∈ M y i ( ω ⋅ x i + b )

感知机算法

感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先,任意选取一个超平面,然后用梯度下降法不断地极小化目标函数。极小化过程是一次随机选取一个误分类点使其梯度下降。
损失函数的梯度由下式给出:

{wL(ω,b)=xiMyixibL(ω,b)=xiMyi { ▽ w L ( ω , b ) = − ∑ x i ∈ M y i x i ▽ b L ( ω , b ) = − ∑ x i ∈ M y i

随机选取一个误分类点 (xi,yi) ( x i , y i ) ω ω 和 b 更新:
{ωω+ηyixibb+ηyi { ω ← ω + η y i x i b ← b + η y i

其中, η η 为学习率。这样通过不断更新参数,使得损失函数逐渐下降到最小值0即可。

二、多层前馈神经网络

神经网络模型

下图 展示了神经网络的结构:
这里写图片描述
最后输出层输出的值可当做属于这个类的概率,因此哪个值高就可认为它属于这类的概率高。而每个神经元的的形式与前面讨论的感知机模型类似,只是激活函数变成了如下的 ‘S形’ 函数:

hj(Ij)=11+e(Ij+θj)θ0 h j ( I j ) = 1 1 + e − ( I j + θ j ) θ 0

其中, Ij I j 是网络第 j 层每个节点激活元素的输入, θj θ j 是偏移量, θ0 θ 0 控制 S 函数的形状。上式对应的S函数如下:
这里写图片描述
任何一层中的节点输入都是来自前一层输出的加权和,令 K 层为 J 层的前一层,则有:
Ij=k=1NkwjkOk=k=1Nkwjkhk(Ik) I j = ∑ k = 1 N k w j k O k = ∑ k = 1 N k w j k h k ( I k )

其中, Ok O k 为第 k 层的输出
hj(Ij) h j ( I j ) 又可写成如下形式:
hj(Ij)=11+e(Nkk=1wjkOK+θj)θ0 h j ( I j ) = 1 1 + e − ( ∑ k = 1 N k w j k O K + θ j ) θ 0

神经网络策略

这里我们采用最简单的平方误差来定义损失函数,输出层Q中各节点的期望响应 rq r q 和相应的真实响应 Oq O q 之间的总误差平方和如下:

EQ=12q=1NQ(rqOq)2 E Q = 1 2 ∑ q = 1 N Q ( r q − O q ) 2

其中, NQ N Q 是输出层Q的节点数, 12 1 2 是为了后面取导数更为方便。

反向传播算法

以神经网络结构图为例(Q为输出层,P层在Q前一层,J层在P层前一层)。利用链式法则,我们有:

wqp=αEQwqp=αEQIqIqwqp=αEQOqOqIqIqwqp=α[(rqOq)]hq(Iq)Op=α(rqOq)hq(Iq)Op=αδqOp(1589)(1590)(1591)(1592)(1593) (1589) △ w q p = − α ∂ E Q ∂ w q p = − α ∂ E Q ∂ I q ∂ I q ∂ w q p (1590) = − α ∂ E Q ∂ O q ∂ O q ∂ I q ∂ I q ∂ w q p (1591) = − α [ − ( r q − O q ) ] h q ′ ( I q ) O p (1592) = α ( r q − O q ) h q ′ ( I q ) O p (1593) = α δ q O p

其中 δq=EQIq=(rqOq)hq(Iq) δ q = − ∂ E Q ∂ I q = ( r q − O q ) h q ′ ( I q ) wqp △ w q p 即参数更新项。
上面是输出层的,同理在隐藏层(内层)中也有:

wpj=αδpOj △ w p j = α δ p O j

其中 δp=EpIp=(rpOp)hp(Ip) δ p = − ∂ E p ∂ I p = ( r p − O p ) h p ′ ( I p )
但在隐藏层中我们无法知道 rp r p rp r p 只有在输出层才有意义,因此我们需要替换掉这项。
δp=EpIp=EpOpOpIp=EpOphp(Ip) δ p = − ∂ E p ∂ I p = − ∂ E p ∂ O p ∂ O p ∂ I p = − ∂ E p ∂ O p h p ′ ( I p )

而又有:
EpOp=q=1NqEpIqIqOp=q=1Nq(EpIq)Opp=1NpwqpOp=q=1Nqδqwqp(1594)(1595)(1596) (1594) − ∂ E p ∂ O p = − ∑ q = 1 N q ∂ E p ∂ I q ∂ I q ∂ O p (1595) = ∑ q = 1 N q ( − ∂ E p ∂ I q ) ∂ ∂ O p ∑ p = 1 N p w q p O p (1596) = ∑ q = 1 N q δ q w q p

因此,我们可以得到: δp=Nqq=1δqwqphp(Ip) δ p = ∑ q = 1 N q δ q w q p h p ′ ( I p )

我们知道对于 y=11+ex y = 1 1 + e − x 这个函数,有 y=y(1y) y ′ = y ( 1 − y )

综上,对于输出层有:

wqp=α(rqOq)Oq(1Oq)Op △ w q p = α ( r q − O q ) O q ( 1 − O q ) O p

对于隐藏层有:
wpj=αp=1NpδpwpjOp(1Op)Oj △ w p j = α ∑ p = 1 N p δ p w p j O p ( 1 − O p ) O j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值