神经网络

本文主要介绍BP算法:

给定训练集D = \{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\},x_i \in R^dy \in R^l,即输入由d个属性描述,输出l维实值向量。

BP网络及算法中的变量符号.jpg

  • 上图给出了一个拥有d个输入神经元、l个输出神经元、q个隐层神经元的多层前馈网络结构,其中输出层第j个神经元的阈值用\theta_j表示,隐层第h个神经元的阈值用\gamma_h表示。输出层第i个神经元与隐层第h个神经元之间的连接权为v_{ih},隐层第h和神经元与输出层第j个神经元之间的连接权为w_{hj}
  • 记隐层第h个神经元接收到的输入为\alpha=\sum_{i=1}^d v_{ih}x_i,输出层第j个神经元接收到的输入为\beta_j = \sum_{h = 1}^qw_{hj}b_h,其中b_h为第h个神经元的输出。假设隐层和输出层的神经元激活函数为sigmoid(x) = \frac{1}{1+e^{-x}}
  • 对训练例(x_k,y_k),假定神经网络的输出为\hat{y}_k = (\hat{y}_1^k,\hat{y}_2^k,...,\hat{y}_l^k),即\hat{y}_j^k = f(\beta_j-\theta_j),则网络在(x_k,y_k)上的均方误差为
    E_k = \frac{1}{2}\sum_{j = 1}^{l}(\hat{y}_j^k-y_j^k)^2
  • BP算法是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,任意参数v的更新估计式为
    v \leftarrow v + \Delta v
    BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整,对E_k = 1/2\sum_{j = 1}^{l}(\hat{y}_j^k-y_j^k)^2,给定学习率\eta,有
    \Delta \omega_{hj} = -\eta\frac{\partial E_k}{\partial \omega_{hj}}
    注意到\omega_{hj}先影响到第j个输出层神经元的输入值为\beta_j,在影响到输出值\hat{y}_j^k,然后影响到E_k,有
    \frac{\partial E_k}{\partial \omega_{hj}} = \frac{\partial E_k}{\partial \hat{y}_j^k} \frac{\partial \hat{y}_j^k}{\partial \beta_j} \frac{\partial \beta_j}{\partial \omega_{hj}}
    根据\beta_j的定义,显然有
    \frac{\partial \beta_j}{\partial \omega_{hj}} = b_h
    Sigmoid函数有一个很好的性质:
    f(x)' = f(x)(1-f(x))
    那么有
    g_j = -\frac{\partial E_k}{\partial \hat{y}_j^k}\frac{\partial \hat{y}_j^k}{\beta_j} = -(\hat{y}^k_j - y_j^k)f'(\beta_j-\theta_j) = \hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k)
    因此有:
    \Delta \omega_{hj} =\eta g_j g_h
  • 类似地,有
    输出层神经元的阈值:\Delta \theta_j = -\eta g_j
    输入层到隐层的连接权:\Delta v_{ih} = \eta e_h x_i
    隐层神经元的阈值:\Delta \gamma_h = -\eta e_h
    其中,
    e_h = -\frac{\partial E_k}{\partial b_h} \frac{b_h}{\alpha_h} = -\sum_{j = 1}^l \frac{\partial E_k}{\partial \beta_j}\frac{\beta_j}{\partial b_h}f'(\alpha_h - \gamma_h) = \sum_{j = 1}^l \omega_{hj}g_j f'(\alpha_h - \gamma_h) = b_h(1-b_h)\sum_{j = 1}^l \omega_{hj}g_j
  • 学习率\eta \in (0,1)控制着算法在每一轮迭代中的更新步长,若太长则容易震荡,太小则收敛速度又会过慢。

  • 输入
    训练集D= \{(x_k,y_k)\}_{k = 1}^m;
    学习率\eta.
  • 过程
    1:在(0,1)范围内随机初始化网络中所有连接权和阈值
    2:Repeat
    3:\quadfor all (x_k,y_k)\in D do
    4:\qquad 根据当前参数和\hat{y}_j^k = f(\beta_j-\theta_j)计算当前样本的输出\hat{y}_k;
    5:\qquad 根据式g_j = \hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k)计算输出神经元的梯度项g_j
    6:\qquad 根据式e_h =b_h(1-b_h)\sum_{j = 1}^l \omega_{hj}g_j计算隐层神经元的梯度项e_h;
    7:\qquad 根据式\Delta \omega_{hj} =\eta g_j g_h\Delta \theta_j = -\eta g_j\Delta v_{ih} = \eta e_h x_i\Delta \gamma_h = -\eta e_h更新连接权\omega_{hj}v_{ih}与阈值\theta_j\gamma_h;
    8:\quad end for
    9:until 达到停止条件。
  • 输出
    连接权与阈值确定的多层前馈神经网络。

需注意的是,BP算法的目标是要最小化训练集D上的累积误差
E = 1/m \sum_{k = 1}^m E_k
标准的BP算法每次针对一个训练样例更新连接权和阈值。换言之,算法的更新规则是基于单个的E_k推到而得的。如果类似地推到基于累积误差最小化的更新规则,就得到了累积误差逆传播(accumulated error backpropagation)算法。
一般来说,标准BP算法每次更新只针对你单个样例,参数更新得非常频繁,而且对不同样例进行更新得效果可能出现抵消现象。因此,为了达到同样的累积误差极小点,标准BP算法往往需要进行更多次数的迭代。累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新得频率低得多。

可以证明:多层前馈网络若包含足够多神经元的隐含层,则它可以以任意精度逼近任意复杂度的连续函数。

BP神经网络十分强大,因此可能出现过拟合现象。这时有两种策略可以缓解过拟合现象:

  • “”早停”策略:将数据集分成训练集和验证数据集两类,训练集用于计算梯度、更新连接权重和阈值;验证集用于估计误差,如果训练集误差降低而验证集误差上升,则停止训练。同时返回具有最小验证集误差的连接权重和阈值。
  • “正则化”策略:修改误差目标函数为:
    E = \frac{1}{N}\sum_{k = 1}^N E_k + \lambda\sum_i w_i^2
    其中w_i表示连接权重和阈值;\lambda >0表示对经验误差和网络复杂度的折中;即\lambda\sum_i w_i^2刻画了网络复杂度。

[ 神经网络的基本工作原理]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • 神经网络 原理 《机器学习》周志华 5.1 神经元模型 神经网络中最0基本的成分是神经元(neuron)模型。 M...
    hxiaom阅读 1,061评论 0 0
  • 1. 章节主要内容 今天让我们来好好理解一下机器学习中的神经网络算法吧,其中多隐含层的神经网络算法就是目前最热的深...
    闪电随笔阅读 2,881评论 1 7
  • 神经网络 1 神经元模型 神经网络是由具有适应性的简单单元组成的广泛并行互连网络,它的组织能够模拟生物神经系统对真...
    edwin1993阅读 1,650评论 0 0
  • 新图678年,恒国在经历了三任君王的努力下,终于完成了新图北陆的统一。第四任君王,鲁龙·佑安,接过父亲手中的权杖,...
    古溪越阅读 256评论 2 2
  • 今天去吃面,看见路上的青菜特别好吃,就买了一把,到吃饭的时候让煮熟,然后
    Jinyuba阅读 134评论 0 0