机器学习算法之神经网络算法初识

神经网络算法初识

感知机算法

1. 概述

感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”(threshold logic unit)。其学习能力非常有限,若二分类数据集线性可分,即存在一个线性超平面能将它们分开,则感知机的学习过程一定会收敛而求得适当的权向量;否则感知机学习过程会发生振荡,\omega难以稳定下来。
要解决非线性可分问题,需考虑使用多层功能神经元,即在输出层和输入层之间加入隐藏层,隐藏层和输出层神经元都是拥有激活函数的功能神经元。
感知机(perceptron)是二分类的线性分类模型,旨在求出将训练数据进行线性划分的分离超平面,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。感知机模型包含两种形式:原始形式和对偶形式。


2. 感知机模型

假设输入空间(特征空间)\chi \subseteq R^n,输出空间是\gamma = \{ -1,+1\}。由输入空间到输出空间的如下函数:
f(x) = sign(\omega \cdot x + b)其中,x \in \chi, y \in \gamma\omega \in R^n表示权值(weight)或权值向量(weight vector),b \in R叫做偏置(bias),而\omega \cdot x表示\omegax的内积。sign是符号函数,即
sign(x) = \begin{cases} +1, \quad x \geq 0 \\ -1, \quad x < 0 \end{cases}


3. 感知机学习策略

假设训练样本数据集是线性可分的,感知机学习的目标是得到一个能够将训练集正负实例点正确分开的分离超平面。为了找到这样的超平面,即确定感知机模型参数\omega,b,需要确定一个学习策略,即定义并极小化损失函数
损失函数采用误分类点到超平面的总距离,为此,写出输入空间R^n中任一点x_0到超平面S的距离\frac {1} {\parallel \omega \parallel} \mid \omega \cdot x_0 + b \mid\parallel \omega \parallel\omegaL_2范数。
给定训练数据集

T = \{(x_1,y_1), (x_2,y_2), \cdots, (x_N,x_N)\}其中,x_i \in \chi \subseteq R^n, y_i \in \gamma = \{ +1, -1 \}。则感知机sign(\omega \cdot x + b)学习的损失函数定义为
L(\omega, b) = - \sum_{x_i \in M} y_i (\omega \cdot x_i + b)其中M为误分类点的集合。这个损失函数就是感知机学习的经验风险函数。


4. 感知机学习算法

4.1. 感知机学习算法的原始形式

输入:训练数据T = \{ (x_1,y_1), (x_2,y_2), \cdots, (x_N,y_N) \},其中x_i \in \chi = R^ny_i \in \gamma = \{ -1, +1 \}i = 1, 2, \cdots, N;学习率\eta (0 < \eta \leq 1)
输出\omega, b;感知机模型f(x) = sign(\omega x + b)

  1. 选取初值\omega_0, b_0

  2. 在训练集中选取数据(x_i, y_i)

  3. 如果y_i (\omega x_i + b) \leq 0
    \begin{aligned} \omega \leftarrow \omega + \eta y_i x_i \\ b \leftarrow b + \eta y_i \end{aligned}

  4. 转到第二步,直至训练集中没有误分类点

这种学习算法直观上的解释:当一个实例点被误分类,即位于错误的一侧时,则调整\omega,b的值,使分离超平面向该误分类点的一侧移动,以减少误分类点和超平面的距离,直至超平面越过该误分类点使其被正确分类。

4.2. 感知机学习算法的对偶形式

输入:线性可分的数据集T = \{ (x_1,y_1), (x_2,y_2), \cdots, (x_N,y_N) \},其中x_i \in \chi = R^ny_i \in \gamma = \{ -1, +1 \}i = 1, 2, \cdots, N;学习率\eta (0 < \eta \leq 1)
输出a,b;感知机模型f(x) = sign (\sum_{j=1}^N \alpha_j y_j x_j \cdot x +b),其中\alpha = (\alpha_1, \alpha_2, \cdots, \alpha_N)^T

  1. \alpha \leftarrow 0, b \leftarrow 0
  2. 在训练集中选取数据(x_i, y_i)
  3. 如果y_i (\sum_{j=1}^N \alpha_j y_j x_j \cdot x_i + b) \leq 0
    \begin{cases} \alpha_i \leftarrow \alpha_i + \eta \\ b \leftarrow + \eta y_i \end{cases}
  4. 转至步骤2,直到没有误分类数据

BP神经网络

1. 概述

神经网络主要由三部分组成:网络架构激活函数参数学习算法;误差逆传播算法(error BackPropagation, BP)是一种使用较为广泛的参数学习算法。算法基本思想:学习过程由信号的正向传播误差的反向传播两个过程组成。

  1. 正向传播时,训练样本从输入层传入,经隐藏层逐层处理后,传到输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶段。
  2. 反向传播时,将输出以某种形式通过隐藏层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,该误差信号作为修正各单元权值的依据。

BP神经网络采用BP算法带来的问题:基于局部梯度下架调整权值时容易出现梯度弥散(Gradient Diffusion)现象,根源在于非凸目标代价函数导致求解陷入局部最优。并且,随着网络层数的增加,这种情况会愈发严重。


2. 算法介绍

给定训练集D = \{ (x_1,y_1), (x_2, y_2), \cdots, (x_m, y_m) \}, x_i \in R^d, y_i \in R^l,即输入示例由d个属性描述,输出l维实值向量。给出一个拥有d个输入神经元、l个输出神经元、q个隐藏神经元的多层前馈网络结构。其中\theta_j表示输出层第j个神经元的阈值,\gamma_h表示隐藏层第h个神经元的阈值;v_{ih}表示输入层第i个神经元与隐藏层第h个神经元之间的连接权,\omega_{hj}表示隐藏层第h个神经元与输出层第j个神经元之间的连接权。于是隐藏层第h个神经元的输入为\alpha_h = \sum_{i=1}^d v_{ih} x_i;输出层第j个神经元的输入为\beta_j = \sum_{h=1}^q \omega_{hj} b_h,其中b_h为隐藏层第h个神经元的输出。
对于训练样本(x_k, y_k),神经网络的输出为\hat {y}_k = (\hat {y}_1^k, \hat {y}_2^k, \cdots, \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)^2BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整。对于误差E_k,给定学习率\eta,有
\begin{aligned} \Delta \omega_{hj} &= - \eta \frac {\partial E_k} {\partial \omega_{hj}} \\ &= \frac {\partial E_k} {\partial \hat {y}_j^k} \cdot \frac {\partial \hat {y}_j^k} {\partial \beta_j} \cdot \frac {\partial \beta_j} {\partial \omega_{hj}} \end{aligned}根据\beta_jj的定义,显然有
\frac {\partial \beta_j} {\partial \omega_{hj}} = b_h此外Sigmoid函数有一个很好的性质:
f^{'} (x) = f(x) (1 - f(x))于是,有
\begin{aligned} g_j &= - \frac {\partial E_k} {\partial \hat {y}_j^k} \cdot \frac {\partial \hat {y}_j^k} {\partial \beta_j} \\ &= - (\hat {y}_j^k - y_j^k) f^{'}(\beta_j - \theta_j) \\ &= \hat {y}_j^k (1 - \hat {y}_j^k) (y_j^k - \hat {y}_j^k) \end{aligned}于是,得到更新公式
\begin{aligned} \Delta \omega_{hj} &= \eta g_j b_h \\ \Delta \theta_j &= - \eta g_j \\ \Delta v_{ih} &= \eta e_h x_i \\ \Delta \gamma_h &= - \eta e_h \end{aligned}其中
\begin{aligned} e_h &= - \frac {\partial E_k} {\partial b_h} \cdot \frac {\partial b_h} {\partial \alpha_h} \\ &= - \sum_{j=1}^l \frac {\partial E_k} {\partial \beta_j} \cdot \frac {\partial \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 \end{aligned}

2.1. 误差逆传播算法

输入:训练集D = \{ (x_k, y_k) \}_{k=1}^m;学习率\eta
输出:连接权与阈值确定的多层前馈神经网络
过程:

  1. (0,1)范围内随机初始化网络中所有连接权和阈值
  2. repeat
  3. for all (x_k, y_k) \in D do
  4.    根据当前参数和式\hat {y}_j^k = f(\beta_j - \theta_j)计算当前样本的输出\hat {y}_k
  5.    根据式g_j = \hat {y}_j^k (1 - \hat {y}_j^k) (y_j^k - \hat {y}_j^k)计算输出层神经元的梯度项g_j
  6.    根据式e_h = b_h (1 - b_h) \sum_{j=1}^l \omega_{hj} g_j计算隐藏神经元的梯度项e_h
  7.    根据下式更新连接权\omega_{hj}, v_{ih}与阈值\theta_j, \gamma_h
    \begin{cases} \Delta \omega_{hj} = \eta g_j b_h \\ \Delta \theta_j = - \eta g_j \\ \Delta v_{ih} = \eta e_h x_i \\ \Delta \gamma_h = - \eta e_h \end{cases}
  8. end for
  9. until 达到停止条件
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容