Skip to main content

[基础知识] 反向传播(一)

单个单元的学习算法

1展示了一个人工神经元(单位)。\{x_1,…,x_K\}为输入变量,\{\omega_1,…,\omega_K\}为权重,y是一个标量输出,f链接函数(也被称为:激活/决策/转移函数)。


1 一个人工神经元

该单元以下列的方式工作:
y=f(u)

其中,u是一个标量数字,是神经元的网络输入(或“新输入”)。u的定义如下:

u=\sum_{i=0}^K \omega_i x_i

使用向量表示的话,可以写成:

u=w^Tx

注意:在这里忽略了u中的偏置项。可以简单地增加一个总为1的输入维度(例如,x_0)来包含这个偏置项。

很明显,不同的链接函数会导致不同的神经元行为。在这里,我们将讨论两种链接函数的选择示例。

第一种f(u)的选择是单位阶跃函数(也被成为Heaviside阶跃函数):

f(u)=\begin{cases} 1 & \text{if u>0} \\ 0 & \text{otherwise} \end{cases}

该链接函数的神经元被成为一个感知机。感知机的训练算法是感知机算法。它的更新函数定义如下:

w^{(new)}=w^{(old)}-\eta \cdot (y-t) \cdot x

其中,t为标签(黄金标准),而\eta为学习率(\eta > 0)。注意:感知机是一个线性分类器,这就意味着它的描述能力非常有限。如果我们希望使用更加复杂的函数,就需要使用一个非线性的模型。

小拓展:更多关于感知机的知识可以阅读博客-感知机(Perceptron)

第二种f(u)的示例选择是逻辑斯蒂函数sigmoid函数的最通用形式),定义为:

\sigma(u)=\frac{1}{1+e^{-u}}

逻辑斯蒂函数有两个基本的优点:
– 输出y一般位于01之间
– 与单位跃阶函数不同,\sigma(u)是平滑并且可微的,使得更新等式的推导非常简单。

注意:\sigma(u)有下面两个非常便利的属性,并且将会在之后的推导中使用到。

\sigma(-u)=1-\sigma(u) \tag{1}
\frac{d\sigma(u)}{du}=\sigma(u)\sigma(-u) \tag{2}

第一个公式就不用推导了,下面稍微推导下第二个公式:(e^{-u})’ = – e^{-u},则有:

\begin{align}\frac{d\sigma(u)}{du} &=(-\frac{1}{{(1+e^{-u})}^2})\cdot ( – e^{-u}) \nonumber \\ &=\frac{e^{-u}}{{(1+e^{-u})}}\cdot \frac{1}{{(1+e^{-u})}} \nonumber\\ & =\sigma(u)\sigma(-u) \nonumber \end{align}

我们使用随机梯度下降法作为该模型的学习算法。为了推导这个模型等式,我们需要定义误差函数,即训练目标。下面的目标函数看起来比较方便:

E=\frac{1}{2}{(t-y)}^2

针对\omega_iE进行求导,得到:

\begin{align} \frac{\delta E}{\delta \omega_i} &=\frac{\delta E}{\delta y}\cdot \frac{\delta y}{\delta u}\cdot \frac{\delta u}{\delta \omega_i} \nonumber\\ & = (y-t) \cdot y(1-y) \cdot x_i \nonumber \end{align}

其中,\frac{\delta y}{\delta u}=y(1-y) 可以根据公式(1)和公式(2)得到(y=f(u)=\sigma(u))。有了这个推导之后,我们就可以使用随机梯度下降了:

w^{(new)}=w^{(old)}-\eta (y-t)\cdot y(1-y)\cdot x

补充一点小知识:梯度下降法的基本更新公式为\theta_{i}=\theta_{i} – \alpha \frac{\delta J}{\delta \theta_i} ,其中,\alpha是学习率。

打赏
微信扫一扫支付
微信logo微信扫一扫, 打赏作者吧~

mickey

记录生活,写给几十年后的自己。

发表评论

电子邮件地址不会被公开。 必填项已用*标注