机器学习公式推导

  本篇笔记主要记录及推导Andrew NG的Machine Learning课程中出现的公式。

  我们假设对于任意的分类、聚类、回归等问题在自然界中总是存在一个精确的模型与之相对应,接下来我们要做的就是根据获取的样本来反推并确定这个模型。由于我们毕竟无法遍历这个问题所有的情况,所以我们只能根据获取的样本去尽可能接近的确定这个模型。

  公式化上面这段描述,问题对应的模型就藏在假设空间(Hypothesis) hθ(x) h θ ( x ) 中,我们需要通过观测样本,确定其中的 θ θ 值。在确定 θ θ 值的过程中,定义一个损失函数(Cost Function) J(θ) J ( θ ) ,如果我们获取的样本在某一个参数 θ θ 时使损失值达到最小,即表示当前 θ θ 值确定的模型可以使预测值很接近观察值。那么这个模型就是我们需要寻找的。

  对于监督学习,我们要做的就是确定目标函数,损失函数,然后通过样本训练,得到损失值最小的那一组参数值,用该参数值代入目标函数,即可得到对应问题的模型。

一、线性回归模型

1、单一变量的线性回归模型

  目标函数

hθ(x)=θ0+θ1x h θ ( x ) = θ 0 + θ 1 x

   损失函数
J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2 J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2

  公式说明:
   hθ(x(i)):i h θ ( x ( i ) ) : 第 i 个 样 本
   y(i):i y ( i ) : 第 i 个 样 本 对 应 的 实 际 值

  接下来的目标就是找到一组参数值,使得损失函数值最小,即

minimizeθ0,θ1J(θ0,θ1) m i n i m i z e θ 0 , θ 1 J ( θ 0 , θ 1 )

  求损失函数最小值时,使用梯度下降(Gradient descent)的方法。在微积分中我们学过梯度,梯度方向是函数值下降最快的方向,所以在梯度下降方法中,我们分别求 θ0θ1 θ 0 和 θ 1 的偏导数,然后用该导数值更新参数值。

}repeat until convergence{θj:=θjαθjJ(θ0,θ1)(for j = 1 and j = 0)(7) (7) r e p e a t   u n t i l   c o n v e r g e n c e { θ j := θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) ( f o r   j   =   1   a n d   j   =   0 ) }

  说明,上面公式中的 := := 表示赋值的意思,如果直接写a = 1可能会被误理解为判断a是否等于1

  求损失函数 J(θ0,θ1) J ( θ 0 , θ 1 ) θ0 θ 0 θ1 θ 1 的偏导数,

θ0J(θ0,θ1)=1mi=1m(hθ(x(i))y(i))θ1J(θ0,θ1)=1mi=1m(hθ(x(i))y(i))x(i) ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i )

使用偏导数公式对上式展开。

}repeat until convergence{θ0:=θ0α1mi=1m(hθ(x(i))y(i))θ1:=θ1α1mi=1m(hθ(x(i))y(i))x(i)(8) (8) r e p e a t   u n t i l   c o n v e r g e n c e { θ 0 := θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) θ 1 := θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) }
 

2、多变量线性回归模型

  上一节的模型中只有一个指标 x x ,理解了线性回归模型及其寻找最优化参数的过程。接下来将该思路应用到多变量模型中。

(1)目标函数

hθ(x)=θ0x0+θ1x1+θ2x2++θnxn

  上式中的 x1,x2,,xn x 1 , x 2 , ⋯ , x n 都是给定样本中的指标,其中 x0=1 x 0 = 1 是人为增加的。
  如果将目标函数使用向量表示,

hθ(x)=θTx h θ ( x ) = θ T x

(2)损失函数

J(θ)=12mi=1m(hθ(x(i))y(i))2 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2

(3)梯度下降

}repeat until convergence{θj:=θjαθjJ(θ)(for j = 0 ,, n)(9) (9) r e p e a t   u n t i l   c o n v e r g e n c e { θ j := θ j − α ∂ ∂ θ j J ( θ ) ( f o r   j   =   0   , ⋯ ,   n ) }

  分别对 θ0,θ1,θ2 θ 0 , θ 1 , θ 2 求偏导数并进行展开,如下所示

θ0:=θ0α1mi=1m(hθ(x(i))y(i))θ1:=θ1α1mi=1m(hθ(x(i))y(i))x(i)1θ2:=θ2α1mi=1m(hθ(x(i))y(i))x(i)2 θ 0 := θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) θ 1 := θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 1 ( i ) θ 2 := θ 2 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 2 ( i ) ⋯

(4)公式法

  如果我们将目标函数向量化, TXTθ=y T X T θ = y ,需要求解其中的 θ θ

Xθ=yXTXθ=XTyθ=(XTX)1XTy X θ = y X T X θ = X T y θ = ( X T X ) − 1 X T y

  这里需要说明一下, θ,y,X θ , y , X 分别代表的含义。在本文中,向量都是小写字母表示,并且都是列向量,即 n1 n ∗ 1 维。矩阵的维度 mn m ∗ n 表示有 m m n列。那么上式中,我们假设 m=4 m = 4 n=5 n = 5 其中包括 x0 x 0 ,给出一组示例数据

x01111x1210414161534852x25332x31221x445403036y460232315178 x 0 x 1 x 2 x 3 x 4 y 1 2104 5 1 45 460 1 1416 3 2 40 232 1 1534 3 2 30 315 1 852 2 1 36 178

  对应的 X X 为,每个x(i)表示一行数据的话:

X=11112104141615348525332122145403036=(x(1))T(x(2))T(x(3))T(x(4))T X = [ 1 2104 5 1 45 1 1416 3 2 40 1 1534 3 2 30 1 852 2 1 36 ] = [ ( x ( 1 ) ) T ( x ( 2 ) ) T ( x ( 3 ) ) T ( x ( 4 ) ) T ]

  对应的 y y 为:

y=[460232315178]

  对应的 θ θ 为:

θ=θ0θ1θ2θ3 θ = [ θ 0 θ 1 θ 2 θ 3 ]

二、逻辑回归模型

1、逻辑回归模型

  上面的线性回归模型输出结果为连续值,如果我们面对的是一个分类模型,比如判断是否为垃圾邮件,或者其他的分类问题时,就不能直接使用线性回归模型了。

  逻辑回归模型是在线性回归模型上的一个演变,它通过一个逻辑函数可以将线性回归模型的输出结果转变为0或1的离散输出。

(1)逻辑函数

  即Logistic Function,也称为Sigmoid Function,如下所示,

g(z)=11+ez g ( z ) = 1 1 + e − z

  对应的函数图形为:

Sigmoid函数图形

  从图中可以看到,横轴是连续取值,但是纵轴上的取值范围被限制在0和1之间,Sigmoid函数可以将连续值转变为0或1的离散值。

  如果将上面的逻辑函数 g(z) g ( z ) 应用在线性回归模型的输出函数 hθ(x) h θ ( x ) 上,就可以得到本节所讲的逻辑回归模型。

(2)目标函数

hθ(x)=11+eθTx h θ ( x ) = 1 1 + e − θ T x

  当 y=1 y = 1 时, hθ(x) h θ ( x ) 的值,可以理解为是对当前样本 x x ,在参数θ的情况下被预测为1的概率。即

P(y=1|x,θ)=hθ(x)=11+eθTx P ( y = 1 | x , θ ) = h θ ( x ) = 1 1 + e − θ T x

(3)损失函数

  在前面的线性回归模型中,损失函数如下

J(θ)=12mi=1m(hθ(x(i))y(i))2=1mi=1m12(hθ(x(i))y(i))2 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 m ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2

  上式第二行中将 12 1 2 向后移动到求和项中,如果将求和项中整体定义为

Cost(hθ(x),y)=12(hθ(x(i))y(i))2 C o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2

  那么线性回归的损失函数可以写成

J(θ)=1mi=1mCost(hθ(x),y)Cost(hθ(x),y)=12(hθ(x(i))y(i))2 J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ) , y ) C o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2

  线性回归使用的是平方损失,如果我们直接将平方损失函数应用到逻辑回归模型中,最终得到的 J(θ) J ( θ ) 可能如下图所示,

non-convex

  逻辑回归模型中使用的是对数损失,定义如下

Cost(hθ(x),y)={log(hθ(x))log(1hθ(x))y=1y=0 C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) y = 1 − l o g ( 1 − h θ ( x ) ) y = 0

  可以画出对数损失函数图形来看,当 y=1 y = 1 并且 hθ(x)=1 h θ ( x ) = 1 时, Cost=0 C o s t = 0 ,当 y=1 y = 1 并且 hθ(x)0 h θ ( x ) → 0 时, Cost C o s t → ∞ y=0 y = 0 时情况类似。

  最后,将逻辑回归的对数损失函数进行融合,

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x)) C o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) )

  将 Cost(hθ(x),y) C o s t ( h θ ( x ) , y ) 代入 J(Θ) J ( Θ ) 可以得到逻辑回归完整的损失函数如下

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))] J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ]

  逻辑回归中使用对数损失函数来求解参数,与采用极大似然估计求参数是一致的。

  以下为对数损失函数和极大似然估计的分析过程:

  假设样本服从伯努利分布(0-1分布),则有

P(hθ(x)=y)={1ppn=0n=1 P ( h θ ( x ) = y ) = { 1 − p n = 0 p n = 1

  似然函数如下:
L(θ)=i=1mP(y=1|xi,θ)yiP(y=0|xi,θ)1yi L ( θ ) = ∏ i = 1 m P ( y = 1 | x i , θ ) y i P ( y = 0 | x i , θ ) 1 − y i

  对数似然函数为:
lnL(θ)=i=1m[yiln(P(y=1|xi,θ)+(1yi)lnP(y=0|xi,θ)]=i=1m[yiln(P(y=1|xi,θ)+(1yi)ln(1P(y=0|xi,θ))] l n L ( θ ) = ∑ i = 1 m [ y i l n ( P ( y = 1 | x i , θ ) + ( 1 − y i ) l n P ( y = 0 | x i , θ ) ] = ∑ i = 1 m [ y i l n ( P ( y = 1 | x i , θ ) + ( 1 − y i ) l n ( 1 − P ( y = 0 | x i , θ ) ) ]

  根据对数损失函数的定义
Cost(y,p(y|x)=ylnp(y|x)(1y)ln(1p(y|x)) C o s t ( y , p ( y | x ) = − y l n p ( y | x ) − ( 1 − y ) l n ( 1 − p ( y | x ) )

  那么对于全体样本,损失函数如下:
Cost(y,p(y|x)=i=1m[yilnp(yi|xi)(1yi)ln(1p(yi|xi))] C o s t ( y , p ( y | x ) = − ∑ i = 1 m [ y i l n p ( y i | x i ) − ( 1 − y i ) l n ( 1 − p ( y i | x i ) ) ]

  可以看到,对数损失函数与上面的极大似然函数本质上是等价的。所以,逻辑回归直接采用对数损失函数,与采用极大似然估计是一致的。

(4)梯度下降

  接下来使用梯度下降方法求解逻辑回归的最佳参数,求解损失函数

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))] J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ]

  的最优解过程如下,
repeat }until convergence{θj:=θjαθJ(θ):=θjα1mi=1m(hθ(x(i))y(i))x(i)j(10) (10) r e p e a t   u n t i l   c o n v e r g e n c e { θ j := θ j − α ∂ θ J ( θ ) := θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) }

  以下为求 θjJ(θ) ∂ ∂ θ j J ( θ ) 的过程,

以下为了简便,将 hθ(x) h θ ( x ) 记作 h h ,那么h=11+eθTx θ θ 求偏导数如下,

θh=xeθTx(1+eθTx)2=xeθTx1+eθTx11+eθTx=x(111+eθTx)11+eθTx=x(1h)h ∂ ∂ θ h = x e − θ T x ( 1 + e − θ T x ) 2 = x e − θ T x 1 + e − θ T x 1 1 + e − θ T x = x ( 1 − 1 1 + e − θ T x ) 1 1 + e − θ T x = x ( 1 − h ) h

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x)) C o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) )
简记为
Cost(h,y)=ylog(h)(1y)log(1h) C o s t ( h , y ) = − y l o g ( h ) − ( 1 − y ) l o g ( 1 − h )

那么
θCost(h,y)=y1hθh(1y)11h(θh)=y1hθh+(1y)11hθh=y(1h)h(1h)θh+h(1y)h(1h)θh=y+yh+hyhh(1h)θh=hyh(1h)θh=hyh(1h)xh(1h)=x(hy) ∂ ∂ θ C o s t ( h , y ) = − y 1 h ∂ ∂ θ h − ( 1 − y ) 1 1 − h ( − ∂ ∂ θ h ) = − y 1 h ∂ ∂ θ h + ( 1 − y ) 1 1 − h ∂ ∂ θ h = − y ( 1 − h ) h ( 1 − h ) ∂ ∂ θ h + h ( 1 − y ) h ( 1 − h ) ∂ ∂ θ h = − y + y h + h − y h h ( 1 − h ) ∂ ∂ θ h = h − y h ( 1 − h ) ∂ ∂ θ h = h − y h ( 1 − h ) x h ( 1 − h ) = x ( h − y )

将上式代入 J(θ)=1mmi=1Cost(hθ(x),y) J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ) , y ) ,可得到
θJ(θ)=1mi=1mθCost(hθ(x),y)=1mi=1m(hθ(x(i))y(i))x(i) ∂ θ J ( θ ) = 1 m ∑ i = 1 m ∂ ∂ θ C o s t ( h θ ( x ) , y ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x ( i )

那么对于梯度下降,
θj:=θjαθJ(θ):=θjα1mi=1m(hθ(x(i))y(i))x(i)j θ j := θ j − α ∂ θ J ( θ ) := θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i )

因为 α α 是一个常量,并且 1m 1 m 对于一个给定的样本也是一个常量,所以可以将 αm α m 直接写成 α α

三、正则化

1、过拟合

  正则化的目的是防止过拟合,当指标较多,并且训练样本较少时得到的模型可能会出现过拟合。过拟合从函数图像上的理解就是,训练得到的模型完全拟合给定样本,可能出现对于训练样本,损失值为0,而对于未在训练样本中出现过的样本,误差会很大。下图示例了过拟合,

过拟合

2、线性回归模型正则化

  图中蓝色线条为线性回归模型的过拟合情况,增加了 θ3x3 θ 3 x 3 θ4x4 θ 4 x 4 两项后,曲线完全拟合给定样本。而红色曲线是训练的比较好的情况。在这里,我们如果想将 θ3x3 θ 3 x 3 θ4x4 θ 4 x 4 从模型中剔除,可以将损失函数进行一定改造,如下所示,

minθ12mi=1m(hθ(x(i))y(i))2+1000θ23+1000θ24 m i n θ 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + 1000 θ 3 2 + 1000 θ 4 2

  上面这个损失函数中,由于给了 θ3 θ 3 θ4 θ 4 两个很大的系数,所以最终得到 θ3 θ 3 θ4 θ 4 接近于0才能使损失函数值尽可能小。

  正则化基本上就是这个过程,会为除 θ0 θ 0 之外每个参数值增加一个类似的系数。增加了正则化后的线性回归模型损失函数如下,

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθ2j] J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ]

3、欠拟合

  假如我们给 λ λ 设置一个很大的参数,可能会出现过拟合的情况,因为这时候需要得到最小损失值,可能会将所有 θ θ 全部训练为0。可能最终得到的目标函数是 hθ(x)=θ0 h θ ( x ) = θ 0 ,欠拟合的函数图形如下所示,

欠拟合

4、线性回归模型梯度下降

  对正则化之后的损失函数进行梯度下降求解参数值的过程如下所示,

repeat }until convergence{θ0:=θ0α1mi=1m(hθ(x(i))y(i))x(i)0θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))x(i)j(11) (11) r e p e a t   u n t i l   c o n v e r g e n c e { θ 0 := θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) θ j := θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) }

  这里更新 θj θ j 时乘以了一个系数 1αλm 1 − α λ m ,由于 α,λ,m α , λ , m 都是正数,所以该系数是一个大于零的分数,最终和之前不同的是在更新 θ θ 值时会逐渐缩小 θ θ 值。

5、逻辑回归模型正则化

  逻辑回归模型的正则化也是在损失函数最后增加正则项,如下所示,

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λj=1nθ2j J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ ∑ j = 1 n θ j 2

6、逻辑回归模型梯度下降

repeat }until convergence{θ0:=θ0α1mi=1m(hθ(x(i))y(i))x(i)0θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))x(i)j(12) (12) r e p e a t   u n t i l   c o n v e r g e n c e { θ 0 := θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) θ j := θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) }

7、L1正则

8、L2正则

四、神经网络

1、神经网络结构

  神经网络模型是模拟生物神经元,神经网络中每个节点可以理解成一个变量比如 xi x i ,不同层之间的连接线可以理解成参数比如 θj θ j 。神经网络结构如下所示,

神经网络模型

  上图中,第一层中的 x1,x2,x3 x 1 , x 2 , x 3 即前面回归模型中见到的样本各指标值,第一层也被称为输入层,最后一层的输出就是我们前面介绍到的 hθ(x) h θ ( x ) 的输出值,最后一层也被称为输出层。并且在实现神经网络模型时会为除输出层之外的每一层增加一个 x0 x 0 或$a_0^{(2)}这么一个偏置项。

  定义几个概念:

  • a(j)i a i ( j ) ,表示第 j j 层的第i个节点
  • Θ(j) Θ ( j ) ,表示从第 j j 层到第j+1层的参数矩阵,图中 Θ(1) Θ ( 1 ) 是一个 34 3 ∗ 4 的矩阵,3表示下一层(即第2层)有3个节点,4表示本层(即第1层)有4个节点(包含 x0 x 0 项)

      生物上的神经元之间传递的电信号,一般是高低电平,而非一个连续的值。所以在我们的神经网络中一般会应用一个激活函数 g(x) g ( x ) ,以后未作特殊说明, g(x) g ( x ) 一般取Sigmoid函数。上图中神经网络结构对应的表达式如下

a(2)1=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2+Θ(1)13x3)a(2)2=g(Θ(1)20x0+Θ(1)21x1+Θ(1)22x2+Θ(1)23x3)a(2)3=g(Θ(1)30x0+Θ(1)31x1+Θ(1)32x2+Θ(1)33x3)hΘ(x)=a(3)1=g(Θ(2)10a(2)0+Θ(2)11a(2)1+Θ(2)12a(2)2+Θ(2)13a(2)3) a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) h Θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) )

  需要注意的是神经网络并不是如上面示例中只有一个中间层,而是可以更多,并且每一层的激活函数 g(x) g ( x ) 也可以不相同。

2、神经网络实现的逻辑功能

  这里用简单的神经网络结构示例如何实现 XOR,XNOR,OR,AND,OR X O R , X N O R , O R , A N D , O R 等逻辑操作。

(1)AND

  网络结构如下所示

AND

  表达式为

hΘ(x)=g(30+20x1+20x2) h Θ ( x ) = g ( − 30 + 20 x 1 + 20 x 2 )

(2)OR

  网络结构如下所示

OR

  表达式为

hΘ(x)=g(10+20x1+20x2) h Θ ( x ) = g ( − 10 + 20 x 1 + 20 x 2 )

(3)NOT

  网络结构如下所示

NOT

  表达式为

hΘ(x)=g(1020x1) h Θ ( x ) = g ( 10 − 20 x 1 )

(4)XNOR

  网络结构如下所示,要想实现 XNOR X N O R 功能,简单的模型就不能实现了。下面同时使用了 AND,OR,NOT A N D , O R , N O T 进行组合,并且构建多层网络模型才得以实现。

XNOR

3、损失函数

  神经网络的损失函数如下:

J(\Theta) = -\frac 1m \sum_{i=1}^m\sum_{k=1}^K[y_k^{(i)}log(h_\Theta(x^{(i)})_k) + (1-y_k^{(i)})log(1-(h_\Theta(x^{(i)})_k)] + \frac \lambda {2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_l+1}(\Theta_{ji}^{(l)})^2\tag{1}\label{1} J(\Theta) = -\frac 1m \sum_{i=1}^m\sum_{k=1}^K[y_k^{(i)}log(h_\Theta(x^{(i)})_k) + (1-y_k^{(i)})log(1-(h_\Theta(x^{(i)})_k)] + \frac \lambda {2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_l+1}(\Theta_{ji}^{(l)})^2\tag{1}\label{1}

  上式中, L L 表示神经网络的总层数,sl表示第 l l 层中神经元的个数(不包括偏置单元)。hΘ(x)RK,hΘ(x))i=ith output,其中 K K 表示第K个节点,那么 y(i)k y k ( i ) 表示对于样本 i i 的第k个输出值。当分析的问题为二分类问题时, k=1 k = 1 ,当分析的问题为多分类问题时, k k 为对应的分类数。

4、BP算法(Backpropagation Algorithm)

  我们需要根据上一节中列举的损失函数求出全部的θ值,得到 minΘJ(Θ) m i n Θ J ( Θ ) ,接下来用梯度下降求解的话,需要计算 Θ(l)ijJ(Θ) ∂ ∂ Θ i j ( l ) J ( Θ )

  对于一个包含两个隐含层的神经网络结构,给定一组样本 (x,y) ( x , y ) ,可以依次得到每一层相关数据:

\begin{split}
&a^{(1)}=x \\
&z^{(2)}=\Theta^{(1)}a^{(1)} \\
&a^{(2)}=g(z^{(2)}) \ (add a_0^{(2)})\\
&z^{(3)}=\Theta^{(2)}a^{(2)}\\
&a^{(3)}=g(z^{(3)})\ (add a_0^{(3)})\\
&z^{(4)}=\Theta^{(3)}a^{(3)}\\
&a^{(4)}=h_\Theta(x)=g(z^{(4)})
\end{split}\tag{2}\label{2}
\begin{split}&a^{(1)}=x \\&z^{(2)}=\Theta^{(1)}a^{(1)} \\&a^{(2)}=g(z^{(2)}) \ (add a_0^{(2)})\\&z^{(3)}=\Theta^{(2)}a^{(2)}\\&a^{(3)}=g(z^{(3)})\ (add a_0^{(3)})\\&z^{(4)}=\Theta^{(3)}a^{(3)}\\&a^{(4)}=h_\Theta(x)=g(z^{(4)})\end{split}\tag{2}\label{2}

  根据公式 (1) (1) ,对于二分类的单个样本,损失函数如下

J(\Theta) = - [ylog(h_\Theta(x)) + (1-y)log(1-(h_\Theta(x))] + \lambda\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_l+1}(\Theta_{ji}^{(l)})^2 \tag{3}\label{3} J(\Theta) = - [ylog(h_\Theta(x)) + (1-y)log(1-(h_\Theta(x))] + \lambda\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_l+1}(\Theta_{ji}^{(l)})^2 \tag{3}\label{3}

  以下为该公式的推导过程

计算 Θ(3) Θ ( 3 ) 的梯度,结合公式 (2) (2)

\frac {\partial J(\Theta)}{\partial \Theta^{(3)}}=\frac {\partial J(\Theta)}{\partial a^{(4)}}*\frac {\partial a^{(4)}}{\partial z^{(4)}} * \frac {\partial z^{(4)}}{\partial \Theta^{(3)}} \tag{4}\label{4} \frac {\partial J(\Theta)}{\partial \Theta^{(3)}}=\frac {\partial J(\Theta)}{\partial a^{(4)}}*\frac {\partial a^{(4)}}{\partial z^{(4)}} * \frac {\partial z^{(4)}}{\partial \Theta^{(3)}} \tag{4}\label{4}

如果将式 (4) (4) 中等号右边前两项定义为 δ(4) δ ( 4 ) ,则有
\delta^{(4)}=\frac {\partial}{\partial z^{(4)}}J(\Theta)=\frac {\partial J(\Theta)}{\partial a^{(4)}}*\frac {\partial a^{(4)}}{\partial z^{(4)}}\tag{5}\label{5} \delta^{(4)}=\frac {\partial}{\partial z^{(4)}}J(\Theta)=\frac {\partial J(\Theta)}{\partial a^{(4)}}*\frac {\partial a^{(4)}}{\partial z^{(4)}}\tag{5}\label{5}

结合 (3)(5) (3) (5) 并且 a(4)=hΘ(x)=g(z(4)) a ( 4 ) = h Θ ( x ) = g ( z ( 4 ) ) 得到如下推导过程:
g(z(4))g(z(4))=11+ez(4)=ez(4)(1+ez(4))2=g(z(4))(1g(z(4))) g ( z ( 4 ) ) = 1 1 + e − z ( 4 ) g ′ ( z ( 4 ) ) = e − z ( 4 ) ( 1 + e − z ( 4 ) ) 2 = g ( z ( 4 ) ) ( 1 − g ( z ( 4 ) ) )

\begin{split}
\delta^{(4)}&=\frac {\partial}{\partial z^{(4)}}J(\Theta)\\
&=\frac {\partial J(\Theta)}{\partial a^{(4)}}*\frac {\partial a^{(4)}}{\partial z^{(4)}}\\
&=-[y\frac 1{h_\Theta(x)}*h_\Theta'(x)+(1-y)\frac 1{1-h_\Theta(x)}*(-(h_\Theta'(x))]\\
&=-[y\frac 1{g(z^{(4)})}*g'(z^{(4)})+(1-y)\frac 1{1-g(z^{(4)})}*(-g'(z^{(4)}))]\\
&=-[y(1-g(z^{(4)})) + (y-1)g(z^{(4)})]\\
&=g(z^{(4)})-y\\
&=a^{(4)}-y
\end{split}\tag{6}\label{6}
\begin{split}\delta^{(4)}&=\frac {\partial}{\partial z^{(4)}}J(\Theta)\\&=\frac {\partial J(\Theta)}{\partial a^{(4)}}*\frac {\partial a^{(4)}}{\partial z^{(4)}}\\&=-[y\frac 1{h_\Theta(x)}*h_\Theta'(x)+(1-y)\frac 1{1-h_\Theta(x)}*(-(h_\Theta'(x))]\\&=-[y\frac 1{g(z^{(4)})}*g'(z^{(4)})+(1-y)\frac 1{1-g(z^{(4)})}*(-g'(z^{(4)}))]\\&=-[y(1-g(z^{(4)})) + (y-1)g(z^{(4)})]\\&=g(z^{(4)})-y\\&=a^{(4)}-y\end{split}\tag{6}\label{6}

接下来求 J(Θ)Θ(2) ∂ J ( Θ ) ∂ Θ ( 2 ) J(Θ)Θ(1) ∂ J ( Θ ) ∂ Θ ( 1 ) ,由式 (2) (2) 可得,
\frac {\partial J(\Theta)}{\partial \Theta^{(2)}}=\frac {\partial J(\Theta)}{\partial a^{(4)} }\frac {\partial a^{(4)}}{\partial z^{(4)}}\frac {\partial z^{(4)}}{\partial a^{(3)}}\frac {\partial a^{(3)}}{\partial z^{(3)}}\frac {\partial z^{(3)}}{\partial \Theta^{(2)}}\tag{7}\label{7} \frac {\partial J(\Theta)}{\partial \Theta^{(2)}}=\frac {\partial J(\Theta)}{\partial a^{(4)} }\frac {\partial a^{(4)}}{\partial z^{(4)}}\frac {\partial z^{(4)}}{\partial a^{(3)}}\frac {\partial a^{(3)}}{\partial z^{(3)}}\frac {\partial z^{(3)}}{\partial \Theta^{(2)}}\tag{7}\label{7}

δ(3)=z(3)J(Θ)=J(Θ)a(4)a(4)z(4)z(4)a(3)a(3)z(3) δ ( 3 ) = ∂ ∂ z ( 3 ) J ( Θ ) = ∂ J ( Θ ) ∂ a ( 4 ) ∂ a ( 4 ) ∂ z ( 4 ) ∂ z ( 4 ) ∂ a ( 3 ) ∂ a ( 3 ) ∂ z ( 3 ) ,结合 (5) (5) 则有
\delta^{(3)} = \frac{\partial }{\partial z^{(3)}}J(\Theta)=\delta^{(4)}*\frac {\partial z^{(4)}}{\partial a^{(3)}}\frac {\partial a^{(3)}}{\partial z^{(3)}}=\delta^{(4)}*\Theta^{(3)}*g'(z^{(3)})\tag{8}\label{8} \delta^{(3)} = \frac{\partial }{\partial z^{(3)}}J(\Theta)=\delta^{(4)}*\frac {\partial z^{(4)}}{\partial a^{(3)}}\frac {\partial a^{(3)}}{\partial z^{(3)}}=\delta^{(4)}*\Theta^{(3)}*g'(z^{(3)})\tag{8}\label{8}

\frac {\partial J(\Theta)}{\partial \Theta^{(1)}}=\frac {\partial J(\Theta)}{\partial a^{(4)} }\frac {\partial a^{(4)}}{\partial z^{(4)}}\frac {\partial z^{(4)}}{\partial a^{(3)}}\frac {\partial a^{(3)}}{\partial z^{(3)}}\frac {\partial z^{(3)}}{\partial a^{(2)}}\frac {\partial a^{(2)}}{\partial z^{(2)}}\frac {\partial z^{(2)}}{\partial \Theta^{(1)}}\tag{9}\label{9} \frac {\partial J(\Theta)}{\partial \Theta^{(1)}}=\frac {\partial J(\Theta)}{\partial a^{(4)} }\frac {\partial a^{(4)}}{\partial z^{(4)}}\frac {\partial z^{(4)}}{\partial a^{(3)}}\frac {\partial a^{(3)}}{\partial z^{(3)}}\frac {\partial z^{(3)}}{\partial a^{(2)}}\frac {\partial a^{(2)}}{\partial z^{(2)}}\frac {\partial z^{(2)}}{\partial \Theta^{(1)}}\tag{9}\label{9}

δ(2)=z(2)J(Θ)=J(Θ)a(4)a(4)z(4)z(4)a(3)a(3)z(3)z(3)a(2)a(2)z(2) δ ( 2 ) = ∂ ∂ z ( 2 ) J ( Θ ) = ∂ J ( Θ ) ∂ a ( 4 ) ∂ a ( 4 ) ∂ z ( 4 ) ∂ z ( 4 ) ∂ a ( 3 ) ∂ a ( 3 ) ∂ z ( 3 ) ∂ z ( 3 ) ∂ a ( 2 ) ∂ a ( 2 ) ∂ z ( 2 )
结合 (8) (8)
\delta^{(2)}=\frac{\partial }{\partial z^{(2)}}J(\Theta)=\delta^{(3)}*\frac {\partial z^{(3)}}{\partial a^{(2)}}\frac {\partial a^{(2)}}{\partial z^{(2)}}=\delta^{(3)}*\Theta^{(2)}*g'(z^{(2)})\tag{10}\label{10} \delta^{(2)}=\frac{\partial }{\partial z^{(2)}}J(\Theta)=\delta^{(3)}*\frac {\partial z^{(3)}}{\partial a^{(2)}}\frac {\partial a^{(2)}}{\partial z^{(2)}}=\delta^{(3)}*\Theta^{(2)}*g'(z^{(2)})\tag{10}\label{10}

结合式 (5)(8)(10) (5) (8) (10) 可以提炼出一个式子,
\delta^{(l)}=\frac{\partial }{\partial z^{(l)}}J(\Theta)\tag{11}\label{11} \delta^{(l)}=\frac{\partial }{\partial z^{(l)}}J(\Theta)\tag{11}\label{11}

正是有了式 (11) (11) 的存在,当反向BP算法反向计算时,会根据保存的上一步的计算结果,进行一些简单计算得到下一层。这样在神经网络很复杂的时候,可以避免大量重复计算。
(4) (4) 中最后一项 z(4)Θ(3)=a(3) ∂ z ( 4 ) ∂ Θ ( 3 ) = a ( 3 ) ,所以
\frac {\partial J(\Theta)}{\partial \Theta^{(3)}}=\delta^{(4)}*a^{(3)}=(a^{(4)}-y)a^{(3)}\tag{12}\label{12} \frac {\partial J(\Theta)}{\partial \Theta^{(3)}}=\delta^{(4)}*a^{(3)}=(a^{(4)}-y)a^{(3)}\tag{12}\label{12}

(7) (7) 中最后一项 z(3)Θ(2)=a(2) ∂ z ( 3 ) ∂ Θ ( 2 ) = a ( 2 ) ,所以
\frac {\partial J(\Theta)}{\partial \Theta^{(2)}}=\delta^{(3)} * a^{(2)}=\delta^{(4)}*\Theta^{(3)}*g'(z^{(3)})*a^{(2)}\tag{13}\label{13} \frac {\partial J(\Theta)}{\partial \Theta^{(2)}}=\delta^{(3)} * a^{(2)}=\delta^{(4)}*\Theta^{(3)}*g'(z^{(3)})*a^{(2)}\tag{13}\label{13}

(9) (9) 中最后一项 z(2)Θ(1)=a(1) ∂ z ( 2 ) ∂ Θ ( 1 ) = a ( 1 ) ,所以
J(Θ)Θ(1)=δ(2)a(1)=δ(3)Θ(2)g(z(2))a(1)(14) (14) ∂ J ( Θ ) ∂ Θ ( 1 ) = δ ( 2 ) ∗ a ( 1 ) = δ ( 3 ) ∗ Θ ( 2 ) ∗ g ′ ( z ( 2 ) ) ∗ a ( 1 )

  最后对于上面的四层神经网络模型,结合公式推导过程,可以得到PPT中如下公式, δ(l)j δ j ( l ) 可以理解为第 l l 层第j个节点的误差。

δ(4)j=a(4)jyjδ(3)j=(Θ(3))Tδ(4).g(z(3))δ(2)j=(Θ(2))Tδ(3).g(z(2)) δ j ( 4 ) = a j ( 4 ) − y j δ j ( 3 ) = ( Θ ( 3 ) ) T δ ( 4 ) . ∗ g ′ ( z ( 3 ) ) δ j ( 2 ) = ( Θ ( 2 ) ) T δ ( 3 ) . ∗ g ′ ( z ( 2 ) )

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值