感知器算法与神经网络,及反向传播算法的推导

姓名:Jyx
描述:人工智能学习笔记

  1. 感知器模型
    1.1 感知器模型的推广
  2. 神经网络
  3. 反向传播算法
    \newcommand{\diff}[2]{\dfrac{\partial #1}{\partial #2}}
#感知器模型([wiki](https://en.wikipedia.org/wiki/Perceptron)) 一个简单的感知器算法可以表示如下 $$ \begin{aligned} y &= \sgn(\bm{w}^T \bm{x} + b)& \text{ 或者} \\ y &= \sgn(\bm{w}^{*T} \bm{x}^*)&, where\ \bm{w}^* = [\bm{w}^T, b]^T, \bm{x}^* = [\bm{x}^T, 1]^T \end{aligned} $$ ![这里写图片描述](https://img-blog.csdn.net/20180626221919288?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podWltZW5nOTk5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 出于简化考虑,本文采用第二种表达方式,如无特别说明一般用$\bm{w}, \bm{x}$代替$\bm{w}^*,\bm{x}^*$。 感知器的代价函数定义为: $$ J(\bm{w}) = \sum_{x \in Y}(\delta_{\bm{x}} \bm{w}^T \bm{x}), \delta_{\bm x}=\left\{ \begin{aligned} -1, &\bm x \in \omega_1 \\ +1,&\bm x \in \omega_2 \end{aligned} \right. $$ $\omega_1, \omega_2$代表类别,$Y$代表错误分类的样本的集合。 显然代价函数总是正的。 采用梯度下降法,权重更新公式为 $$ \bm{w}(t+1) = \bm{w}(t) - \rho_t\dfrac{\partial J(\bm{w})}{\partial \bm{w}} \bigg |_{\bm{w} = \bm{w}(t)} = \bm{w}(t) - \rho_t\sum_{x \in Y}(\delta_{\bm{x}} \bm{x}) $$

算法描述:

  • 随机选择 w ( 0 ) \bm{w}(0) w(0), 选择 ρ 0 \rho_0 ρ0
  • t = 0 t = 0 t=0
  • 重复
  • Y = ∅ Y = \varnothing Y=
  • F o r   i = 1   t o   N For\ i = 1\ to\ N For i=1 to N
    I f   δ x i w ( t ) T x i ≥ 0   t h e n   Y = Y ∪ { x i } If\ \delta_{\bm x_i} \bm{w}(t)^T\bm{x}_i \geq 0\ then\ Y = Y \cup \{\bm{x}_i\} If δxiw(t)Txi0 then Y=Y{xi}
  • E n d   F o r End\ For End For
  • w ( t + 1 ) = w ( t ) − ρ t ∑ x ∈ Y δ x x \bm{w}(t+1) = \bm{w}(t) - \rho_t \sum_{\bm{x} \in Y} \delta_{\bm{x}} \bm{x} w(t+1)=w(t)ρtxYδxx
  • 调整 ρ t → ρ t + 1 \rho_t \to \rho_{t+1} ρtρt+1
  • t = t+ 1
  • 直到$Y = \varnothing $

这不是一个标准的梯度下降过程,因为函数 j ( w ) j(\bm{w}) j(w)随着训练的进行一直在改变。但算法依然收敛。

## 感知器模型的推广
异或问题

简单的感知器模型只能处理线性可分的问题,著名的异或问题感知器算法就不能解决。为此,可以使用两层感知器,
两层感知器的局限:
两层感知器的处理能力依旧有限:两层感知器可以分离由多面体区域的并集构成的类,而不能分离这些区域的并集。
为此,我们可以选择三层感知器。

# 神经网络 上面讨论通过增加感知器的层数来增强感知器的分类能力,但另一方面我们也可以改变感知器的其它方面来增强他的分类能力,比如激活函数。这就是神经网络。 在查找资料的过程中,找到一个很有用的博客[专题:深度神经网络基本问题的原理详细分析和推导](https://blog.csdn.net/zpcxh95/article/details/69952020),里面具体描述了神经网络的方方面面

关于激活函数的一个定理

整个机器学习中最重要的一个部分就是优化,优化可以看成是在一定损失函数下的拟合问题。通用逼近定理给出了一些拟合的结论。通用逼近定理这里就不罗列了,有兴趣参考wiki,这里摘录一段网上一篇blog对通用逼近定理的解释

一个仅有单隐藏层的神经网络。在神经元个数足够多的情况下,通过特定的非线性激活函数(包括sigmoid,tanh等),足以拟合任意函数。这使得我们在思考神经网络的问题的时候,不需要考虑:我的函数是否能够用神经网络拟合,因为他永远可以做到——只需要考虑如何用神经网络做到更好的拟合(摘自https://blog.csdn.net/zpcxh95/article/details/69952020)

#反向传播算法 > 反向传播算法从根本上而言是一种多元函数的链式法则的应用。其中也没有高深的推导,只是有层窗户纸让人看不真切 > 这里力图把本人理解的关键点写清楚。 > 推荐一篇比较形象的推导[反向传播算法](https://blog.csdn.net/mao_xiao_feng/article/details/53048213)

一个简单的神经网络定义如下
这里写图片描述
在本文推倒中假定网络共有 L ( 1 , ⋯   , L ) L ( 1 , \cdots, L ) L(1,,L)层,每层有 k i k_{i} ki个神经元,有两个特例:对于第一层输入层 k 1 k_1 k1就等于输入向量的特征维数,对于最后一层输出层 k L k_L kL就等于输出向量的维数,又假定输入向量共有 N ( x 1 , ⋯   , x N ) N ( \bm{x}_1, \cdots , \bm{x}_N) N(x1,,xN)个, f i l f_i^l fil表示第 l l l层的第 i i i个激活函数, w i j l w_{ij}^l wijl表示第 l l l层第 i i i个神经元的第 j j j个权向量, b l b^l bl表示第 l l l层的偏置。 y ^ \hat{\bm{y}} y^表示网络的输出。 v i l v_i^l vil表示第 l l l层第 i i i个神经元的输出

###一般形式
按照上面的定义,每一层的输出可以表示为上一层输出的函数,即
KaTeX parse error: Multiple \tag
note: 这里有个重点 w i j l 和 v j l − 1 w_{ij}^l和v_j^{l-1} wijlvjl1是独立的变量,这意味着对 ξ i l \xi_i^l ξil求导时 v j l − 1 v_j^{l - 1} vjl1可以看作常量
同一般的反向传播算法这个名字暗示的那样,我们从最后一层开始往回计算梯度,即先计算 w i j L w_{ij}^L wijL的梯度,再依次 w i j l − 1 , ⋯   , w i j 2 w_{ij}^{l-1}, \cdots , w_{ij}^2 wijl1,,wij2

1. 第 L L L
对于损失 L ( y , y ^ ) L(\bm{y},\hat{\bm{y}}) L(y,y^),可以写成 v i L ( y ^ i = v i L ) v_i^L(\hat{y}_i = v_i^L) viL(y^i=viL)的函数
KaTeX parse error: Undefined control sequence: \diff at position 172: …L) \tag{4} \\ \̲d̲i̲f̲f̲{L}{w_{ij}^L} &…
利用2式和3式,可以得到
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \diff{\xi_i^L…
所以5式和6式可以化简成
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \diff{L}{w_{i…

2. l < L l < L l<L
l < L l < L l<L时,根据神经网络的构成,每一层都只和下一层有关。迭代递归下去可以知道,损失 L ( y , y ^ ) L(\bm{y},\hat{\bm{y}}) L(y,y^)总可以写成某一层的函数,即
L ( y , y ^ ) = L ( y , v 1 l , v 2 l , ⋯   , v k l l ) (7) L(\bm{y},\hat{\bm{y}}) =L(\bm{y}, v_1^l, v_2^l, \cdots , v_{k_l}^l) \tag{7} L(y,y^)=L(y,v1l,v2l,,vkll)(7)
注意式(7)和式(3)虽然形式不同,但确实是同一个函数,只不过展开深度的不同。
因为式(7)和式(3),根据上面的推导过程,立即可以得到
KaTeX parse error: Undefined control sequence: \diff at position 18: …begin{aligned} \̲d̲i̲f̲f̲{L}{w_{ij}^l} &…
KaTeX parse error: Undefined control sequence: \diff at position 1: \̲d̲i̲f̲f̲{L}{v_i^l}并不像第 L L L层那样好求,因为网络太复杂并且网络结构不确定,直接展开求解显然不可能,这时,反向传播算法中的传播 就来了,考虑网络的结构,我们可以一层一层递归解决
假定第 l + 1 l+1 l+1层已经解决,即KaTeX parse error: Undefined control sequence: \diff at position 1: \̲d̲i̲f̲f̲{L}{v_i^{l+1}}已知。
考虑第 l + 1 l+1 l+1层,综合式(1)和式(7)
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ L(\bm{y},\hat{…
这样KaTeX parse error: Undefined control sequence: \diff at position 1: \̲d̲i̲f̲f̲{L}{v_i^l}已经求出,带入5,6式即可求出 l l l层梯度

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值