#感知器模型([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}) $$姓名:Jyx
描述:人工智能学习笔记
算法描述:
- 随机选择 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)Txi≥0 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)−ρt∑x∈Yδ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)随着训练的进行一直在改变。但算法依然收敛。
## 感知器模型的推广异或问题
简单的感知器模型只能处理线性可分的问题,著名的异或问题感知器算法就不能解决。为此,可以使用两层感知器,
两层感知器的局限:
两层感知器的处理能力依旧有限:两层感知器可以分离由多面体区域的并集构成的类,而不能分离这些区域的并集。
为此,我们可以选择三层感知器。
关于激活函数的一个定理
整个机器学习中最重要的一个部分就是优化,优化可以看成是在一定损失函数下的拟合问题。通用逼近定理给出了一些拟合的结论。通用逼近定理这里就不罗列了,有兴趣参考wiki,这里摘录一段网上一篇blog对通用逼近定理的解释
#反向传播算法 > 反向传播算法从根本上而言是一种多元函数的链式法则的应用。其中也没有高深的推导,只是有层窗户纸让人看不真切 > 这里力图把本人理解的关键点写清楚。 > 推荐一篇比较形象的推导[反向传播算法](https://blog.csdn.net/mao_xiao_feng/article/details/53048213)一个仅有单隐藏层的神经网络。在神经元个数足够多的情况下,通过特定的非线性激活函数(包括sigmoid,tanh等),足以拟合任意函数。这使得我们在思考神经网络的问题的时候,不需要考虑:我的函数是否能够用神经网络拟合,因为他永远可以做到——只需要考虑如何用神经网络做到更好的拟合(摘自https://blog.csdn.net/zpcxh95/article/details/69952020)
一个简单的神经网络定义如下
在本文推倒中假定网络共有
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}
wijl和vjl−1是独立的变量,这意味着对
ξ
i
l
\xi_i^l
ξil求导时
v
j
l
−
1
v_j^{l - 1}
vjl−1可以看作常量
同一般的反向传播算法这个名字暗示的那样,我们从最后一层开始往回计算梯度,即先计算
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
wijl−1,⋯,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层梯度