第五章 神经网络

神经元模型

神经网络指由具有适应性的简单单元组成的广泛并行互连的网络。其中的简单单元就是神经元,M-P神经元模型是一个经典并且沿用至今的模型,对于一个神经元:
y=f(\sum^n_{i=1}w_ix_i- \theta)
其中x_i代表其他神经元的输入,w_i为其他神经元和本神经元的连接权重,\theta是本伸进元的阈值,f()为激活函数。整个公式的理解就是所有连接神经元对本神经元的所有输入和本神经元的阈值进行比较,通过激活函数判断最后的输出。

对于激活函数有:

  • 阶跃函数
    sgn(x)=\begin{cases} 1, x \geq 0; \\ 0,x<0; \end{cases}
  • Sigmoid函数
    sigmoid(x)=\frac1{1+e^{-x}}
    可以将较大范围内的输入挤压到(0,1)范围内。

将所有的神经元连接到一起就形成了神经网络,可以将其视为一个包含了许多参数的模型。例:10个神经元的网络模型参数个数=90个连接权重+10个神经元阈值。

感知机与多层网络

感知机由两层神经元组成,分别成为输入层和输出层。输入层负责信号的输入,输出层接受信号,然后进行函数判断,又称为功能神经元。感知机通过权重w_i和阈值\theta来实现简单的逻辑运算,而w_i\theta就可以通过学习来获得(可以将\theta看作是w_{n+1} \times -1整个问题就可以看作是权重的学习过程)。

学习过程通过下式描述:
w_i \leftarrow w_i+\Delta w
\Delta w_i=\eta(y-y')x_i
其中\eta \in (0,1)学习效率y是真实输出,y为预测输出,通过每次输出预测的差值对w_i进行调整。

感知机的特点在于,结构简单,但是只能处理比较简单的线性可分问题(即通过一个超平面就可以将两类模式分开),在这类问题中,学习过程会收敛,从而才会有稳定的结果。

对于异或逻辑运算这种非线性可分的问题,就需要比较复杂的多层网络,这种网络除了输入层和输出层,还包含了存于中间的隐含层,隐含层也有函数激活功能,数目为一层或者多层。多层网络的结构特点在于,层间不连,邻层全连,隔层不连,也称为多层前馈神经网络(前馈指的是没有回路和环路)。

误差逆传播算法

误差逆传播算法(error BackPropagation,简称BP)是一种用于训练多层神经网络的算法,多用于多层前馈神经网络,所以有“BP网络”,但是这个算法还可以用于其他神经网络。

对于给定的训练集:
D=\lbrace (x_1,y_1)(x_2,y_2), \dots,(x_m,y_m)\rbrace,x_i \in R^d,y_i \in R^l
其中:
m为样本个数,d为属性个数,l为输出神经元个数。假定q为隐层神经元的个数,\theta_j表示第j个输出神经元的阈值,\gamma_h表示第h隐层神经元的阈值,v_{ih}表示输入层和隐层之间的权重,w_{hj}表示隐层和输出层之间的权重。则隐层第h个神经元接收的输入为:
\alpha_h=\sum_{i=1}^dv_{ih}x_i
输出层第j个 神经元接收的输入为:
\beta_j=\sum_{h=1}^qw_{hj}b_n
神经网络的输出为:
\hat{y}_j^k=f(\beta_j-\theta_j)
则网络在(x_k,y_k)上的均方误差为:
E_k=\frac12 \sum^l_{j=1}(\hat{y}^k_j-y^k_j)^2
网络中需要确定的参数数目为:d \times q+q \times l+q+l,即两层权重和两层阈值,通过迭代学习算法,对参数进行更新估计,因此对于每一个参数有:
v \leftarrow v+\Delta v
BP算法基于梯度下降策略,以w_{hj}为例进行计算。
通过E_kw_{hj}偏导数构建(\eta为学习率):
\Delta w_{hj}=- \eta \frac{\delta E_k}{\delta w_{hj}}
从输入层到输出层理解,可得:
\frac{\delta E_k}{\delta w_{hj}}=\frac{\delta E_k}{\delta \hat{y}_j^k} \cdot \frac{\delta \hat{y}_j^k}{\delta \beta_j} \cdot \frac{\delta \beta_j}{\delta w_{hj}}
其中:
\frac{\delta \beta_j}{\delta w_{hj}}=b_h
g_i=\frac{\delta E_k}{\delta \hat{y}_j^k} \cdot \frac{\delta \hat{y}_j^k}{\delta \beta_j}
所以得到:
\Delta w_{hj}=\eta g_i b_n
类似可以计算其他参数:
\Delta \theta_j=-\eta g_i
这个式子我的理解就是g_i为均方误差对输入的变化,阈值对应输入的反向变化可以达到同样结果。
\Delta v_{ih}=\eta e_hx_i
\Delta \gamma_h=-\eta e_h
输入层和隐含层之间,隐含层和输出层之间各种参数的计算思想相同,但是可以使用不同的\eta为了调整学习速度。

BP算法的整体流程如下:

输入:训练集D,学习率
过程:
  (0,1)范围内随机初始化所有参数
  repeat
    for all D do
      计算当前样本输出
      计算输出层神经元梯度项gj
      计算隐层神经元梯度项eh
      更新连接权和阈值
    end for
  until 达到条件
输出:神经网络

上述这种针对单个样本的均方误差最小进行调整的方式,称为标准BP算法,如果用累积误差最小化的规则更新,就是累积误差逆传播算法(累积BP)。两种方法都很常用,标准BP算法,参数更新频繁,且更新效果存在“抵消”现象,往往进行多次迭代;累积BP算法读取整个训练集之后更新参数,频数低,但是累积误差下降到一定程度后,进一步下降会十分缓慢,因此当D比较大的时候,标准算法更快。

已经证明如果有足够多的隐含层神经元,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数,然而没有明确的准则设置数目,常用“试错法”。

为了应对BP网络的过拟合,有以下两中策略:

  • 早停
    当训练集误差降低但验证集误差升高的时候,停止训练,返回最小验证集误差对应的连接权和阈值
  • 正则化
    在目标函数中增加用于描述网络复杂度的部分,利用\lambda,1-\lambda来折中两项(交叉验证估计)

全局最小和局部极小

伸进网络的训练过程实际上就是寻找最优的w\theta使得误差E最小,存在两种最优:对于w^*\theta^*,若存在\epsilon使得对于:
\forall(w,\theta) \in \lbrace (w;\theta) \mid ||(w;\theta)-(w^*;\theta^*)|| \leq \epsilon \rbrace
都有E(w; \theta) \geq E(w^*;\theta^*),则(w^*,\theta^*)局部极小解;若对于任意(w; \theta)都有E(w; \theta) \geq E(w^*;\theta^*),则(w^*,\theta^*)全局最小解

全局最小解对应的数值唯一,局部极小解可能有多个,全局一定局部,局部不一定全局。在寻找最优参数的过程中,就是寻找全局最小解的过程,从一定的初始值,沿着一定的方向进行优化,沿着下降的方向自然是最快的,例如上面提到的基于梯度下降的搜索方法,但是找到的最小值可能是局部最小而非全局最小,因此就需要一些跳出局部最小的方法(都是启发式,没有理论支持):

  • 通过从多种初始化参数数值进行训练,就会得到多个最小解,将所有最小解中的最小的作为结果,就有可能是全局最小
  • 模拟退火技术,以一定概率接受次优解,便能够跳出局部最小,通过概率随事件变小,从而保证算法稳定
  • 随机梯度下降,与标准梯度下降相比,在计算梯度中加入了随机因素,从而在局部极小点计算的梯度可能仍不为零,从而有机会跳出

其他常见神经网络

  • RBF网络
  • ART网络
  • SOM网络
  • 级联相关网络
  • Elman网络
  • Boltzmann机

深度学习

复杂的模型参数数目多,功能强,但是训练效率低下,而且容易过拟合,但是大数据以及,高计算的出现,使这类复杂模型有了更好的利用。

深度学习在神经网络方面就可以理解为,通过添加多个隐层,然后通过每一层的分解处理,将低层特征逐渐转化为高层特征,从而在输出层可以使用“简单模型”来完成复杂的学习任务。通过机器自己学习来产生好的特征就可以省去人类子集的设计,就更接近于“全自动数据分析”。

主要实现方式有:

  • 无监督逐层训练
    先将每一层的下层输出作为输入,本层的输出作为上层的输出,训练本层的隐结点,称为预训练。预训练完成后,对整个网络进行微调。这种方法可以看做将大量参数进行分组,先找局部比较好的设置,再从整体上进行微调。例如:深度信念网络(DNB)
  • 权共享
    每组的神经元都使用相同的权,节省训练开销。例如:卷积神经网络(CNN)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容