美文网首页
迷人的神经网络——机器学习笔记1

迷人的神经网络——机器学习笔记1

作者: 〇矽小筑 | 来源:发表于2019-05-21 06:45 被阅读0次

    开始接触神经网络(Neural Network,NN)的入门例子 MNIST及其论文 Y. LeCun, L. Bottou, Y. Bengio and P. Haffner: Gradient-Based Learning Applied to Document Recognition, Proceedings of the IEEE, 86(11):2278-2324, November 1998 时,难免会有很多疑问:例如:

    • 什么是CNN、RNN、LSTM?什么是卷积(convolution)层、池化(pooling)层、全连接(fully connected)层、Dropout层?
    • 为什么需要激活函数?为什么ReLU不处处可微却性能优良?
    • 什么是反向传播?怎么实现?
    • 损失函数如何设置?
    • 优化算法如何选取?什么是贝叶斯正则化?如何设置学习率可以保证最速训练且收敛到全局最优?
    • 学习率、Batch_Size和Epoch的如何设置?

    带着这些疑问找到了一本讲述传统神经网络的书《神经网络设计(第二版)》,读之后感觉豁然开朗,学了多年的《线性代数》终于明白了怎么用,而且顺便复习了很多学过的课程:线性代数、高等数学、概率论与数理统计、离散信号处理、随机信号处理、数字图像处理、数学物理方法,收获良多,故而整理下作为学习笔记。本文所有配图及其版权归原作者所有,本文仅供学习。另外中文翻译版内容有些许错误,强烈建议对照着原版pdf一起学习。

    原书名为《NEURAL NETWORK DESIGN (Second Edition)》,作者:Mattin T.Hagan、Howard B.Demuth、Mark H.Bearle 和 Orlando De Jesus。

    配套的演示软件、书籍pdf版及ppt下载页面如下:

    第1章 神经元模型及网络结构

    1.1 神经元模型

    1.1.1 单输入神经元

    标量输入 p 乘以权值(weight) w 得到 wp,作为其中的一项进入累加器,另一个输入"1"乘以一个偏置值(bias)b ,再送入累加器。累加器的输出结果 n ,通常称作 净输入 (net input) ,送给 传输函数(transfer function) f 作用后,产生标量 a ,作为神经元的输出(一些作者使用“激活函数”而不是“传输函数”,“补偿”而不是“偏置值”)。权值 w 对应生物神经元的突触连接的强度,胞体由累加器和激活函数来表述,神经元的输出 a 代表突触上的信号。神经元的实际输出依赖于不同激活函数的选择。

    a = f(wp+b)

    1.1.2 激活函数

    激活函数可以是一个关于净输入 n 的线性或非线性函数。

    (1)硬限值:如果自变量小于0,神经元输出0;如果函数大于等于0,神经元输出1。
    a= \begin{cases} 1 & n \ge 0\\ 0 & n < 0 \end{cases}
    输入/输出特性如下

    image

    (2)线性:输出等于输入
    a=n
    输入/输出特性如下图:

    (3)对数-S型(log-sigmoid):
    a=\frac{1}{1+e^{-n}}
    输入/输出特性如下

    image

    (4)Tanh (hyperbolic tangent sigmoid 双曲正切S型),用于循环神经网络RNN(recurrent neural networks):
    a=\frac{e^{n}-e^{-n}}{e^{n}+e^{-n}}

    (5)ReLU (rectified linear units),目前卷积神经网络CNN(convolutional neural networks)中喜欢使用的激活函数:
    a= \begin{cases} n & n \ge 0\\ 0 & n < 0 \end{cases}

    1.1.3 多输入神经元

    R 个输入权值 p_{1}p_{2} ,... , p_{r}对应权值矩阵 W

    共享神经元的偏置 b
    a = f(Wp+b)

    1.2 网络结构

    1.2.1 单层神经网络

    R个输入,S个神经元的权值矩阵:
    W=\left[ \begin{matrix} w11 & w12 & {\dots} & w1r \\ w21 & w22 & {\dots} & w2r\\ {\vdots} & {\vdots} & {} & {\vdots} \\ ws1 & ws2 & {\dots} & wsr \end{matrix} \right]

    1.2.2 多层神经网络

    image

    1.2.3 循环神经网络(recurrent network , RNN)

    延迟器:
    a(t)=u(t-1)
    假设时间步长的更新是离散的,并且只取整数值

    积分器:
    a(t)=\int{u(\tau)d(\tau)+a(0)}
    a(0)代表初始条件

    循环神经网络是一个带有反馈的网络,它的部分输出连接到它的输入。
    延迟器、积分器和循环神经网络RNN如图所示:


    第2章 一个小例子

    三种网络:前馈网络(感知机为代表)、竞争网络(Hamming 网络为代表)和循环神经网络(Hopfield 网络为代表)

    2.1 问题描述:模式识别

    水果的三种特征:形状、纹理和重量

    • 形状感知器:近似圆输出 1 ,近似椭圆输出 -1
    • 纹理感知器:表面光滑输出 1 , 表面粗糙输出 -1
    • 重量感知器:大于1磅输出 1 , 小于1磅输出 -1

    输入、标准的橘子和标准的苹果为:
    p= \left[ \begin{matrix} 形状 \\ 纹理 \\ 重量 \end{matrix} \right], p_{橘子}= \left[ \begin{matrix} 1 \\ -1 \\ -1 \end{matrix} \right], p_{苹果}= \left[ \begin{matrix} 1 \\ 1 \\ -1 \end{matrix} \right]

    2.2 感知机

    采用对称硬限值激活函数 handlims 的单层感知机

    2.2.1 两个输入的实例

    单神经元的感知机能把输入向量分为两类

    a=hardlinms(n)=hardlinms([w_{1,1} , w_{1,2}]p+b)
    如果输入权值矩阵(这里是一个行向量)和输入向量的内积大于或者等于 -b ,则感知机的输出为 1 ,如果内积小于 -b ,则输出 -1 。这样将空间划分为两个部分

    边界条件为:
    Wp+b=0

    2.2.2 模式识别实例

    a=hardlinms(n)=hardlinms([w_{1,1} ,w_{1,2},w_{1,3}] \left[ \begin{matrix} p_{1} \\ p_{2} \\ p_{3} \end{matrix} \right]+b)

    偏置值 b=0 , 权值矩阵 W=[0,1,0],权值矩阵正交与决策边界

    感知机的决策边界与标准向量:


    image

    2.3 Hamming 网络

    为了解决二值模式识别的问题而特别设计的(输入向量中的每个元素都只有2个可能的取值)

    包含一层前馈层和一层反馈层,两层神经元个数相同,标准的Hamming 网络如下:


    image

    Hamming 网络的目标是判断哪个标准向量最接近输入向量。判断结果由反馈层的输出表示。对于每一个标准模式而言,在反馈层中都有与之对应的神经元。当反馈层收敛后,只有一个神经元会输出非零值,该神经元就表示哪一个标准模式最接近输入向量。

    2.3.1 前馈层

    前馈层用来计算每个标准模式输入模式之间的相关性或内积。为了达到计算相关性的目的,前馈层中权值矩阵用连接矩阵 W^{1} 表示,该矩阵每一行设置为一个标准模式。在苹果和橘子实例中:
    \mathbf{W}^{1}=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T}} \\ {\mathbf{p}_{2}^{T}}\end{array}\right]=\left[ \begin{array}{cc}{1} & {-1} & {-1} \\ {1} & {1} & {-1}\end{array}\right]
    前馈层中使用线性传输函数,偏置向量中的每个元素都等于 r ,其中 r 等于输入向量中元素的个数,偏置向量为:
    \mathbf{b}^{1}=\left[ \begin{array}{l}{3} \\ {3}\end{array}\right]
    通过选择权值和偏置向量,前馈层的输出为:
    \mathbf{a}^{1}=\mathbf{W}^{1} \mathbf{p}+\mathbf{b}^{1}=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T}} \\ {\mathbf{p}_{2}^{T}}\end{array}\right] \mathbf{p}+\left[ \begin{array}{l}{3} \\ {3}\end{array}\right]=\left[ \begin{array}{c}{\mathbf{p}_{1}^{T} \mathbf{p}+3} \\ {\mathbf{p}_{2}^{T} \mathbf{p}+3}\end{array}\right]

    注意:前馈层的输出等于每个标准模式和输入向量的内积加上 r 。对于两个长度(范数)相同的向量而言,当它们方向相同时内积最大,方向相反时内积最小。通过给内积加上 r ,来确保前馈层的输出永远不会为负数,这也是反馈层所需要的。

    2.3.2 反馈层

    反馈层正是所谓的 竞争层 。初始值为前馈层的输出,这个输出代表着标准模式和输入向量的相关性。然后该层的神经元互相竞争决定一个胜者。竞争结束后,只会有一个神经元的输出为零。获胜的神经元表明了网络输入的类别。
    a= \begin{cases} \mathbf{a}^{2}(0)=\mathbf{a}^{1} & (初始条件)\\ \mathbf{a}^{2}(t+1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(t)\right) & n < 0 \end{cases}
    其中上标表示网络层数

    权值矩阵为:
    \mathbf{W}^{2}=\left[ \begin{array}{cc}{1} & {-\varepsilon} \\ {-\varepsilon} & {1}\end{array}\right]
    其中 \varepsilon 是一个小于 1/(s-1) 的数, s 为反馈层中神经元的个数。

    反馈层一次迭代计算过程为:

    \mathbf{a}^{2}(t+1)=\operatorname{ReLU}\left(\left[ \begin{array}{cc}{1} & {-\varepsilon} \\ {-\varepsilon} & {1}\end{array}\right] \mathbf{a}^{2}(t)\right)=\operatorname{ReLU}\left(\left[ \begin{array}{c}{a_{1}^{2}(t)-\varepsilon a_{2}^{2}(t)} \\ {a_{2}^{2}(t)-\varepsilon a_{1}^{2}(t)}\end{array}\right]\right)

    向量中每一个元素都要同等比例减去另一个元素的一部分,值较大的元素减幅小一些,值较小的元素减幅大一些,因此值较大的元素与值较小元素之间的差异就会增大。反馈层的作用就在于将除了初始值最大的神经元外的其他所有神经元的输出逐步缩小为0(最终输出值最大的神经元对应着与输入的 Hamming 距离最小的标准输入模式)

    运行过程如下:
    考虑用于验证感知机的椭圆形橘子
    \mathbf{p}=\left[ \begin{array}{c}{-1} \\ {-1} \\ {-1}\end{array}\right]
    前馈层的输出为:
    \mathbf{a}^{1}=\left[ \begin{array}{rrr}{1} & {-1} & {-1} \\ {1} & {1} & {-1}\end{array}\right] \left[ \begin{array}{c}{-1} \\ {-1} \\ {-1}\end{array}\right]+\left[ \begin{array}{l}{3} \\ {3}\end{array}\right] = \left[ \begin{array}{c}{(1+3)} \\ {(-1+3)}\end{array}\right] = \left[ \begin{array}{l}{4} \\ {2}\end{array}\right]

    上式的结果是反馈层的初始条件:

    反馈层第一次迭代结果:

    \mathbf{a}^{2}(1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(0)\right) = \begin{cases} \operatorname{ReLU}\left(\left[ \begin{array}{rr}{1} & {-0.5} \\ {-0.5} & {1}\end{array}\right] \left[ \begin{array}{l}{4} \\ {2}\end{array}\right]\right) \\ \\ \operatorname{ReLU}\left(\left[ \begin{array}{l}{3} \\ {0}\end{array}\right]\right)=\left[ \begin{array}{l}{3} \\ {0}\end{array}\right] \end{cases}

    反馈层第二次迭代结果:

    \mathbf{a}^{2}(1)=\operatorname{ReLU}\left(\mathbf{W}^{2} \mathbf{a}^{2}(1)\right) = \begin{cases} \operatorname{ReLU}\left(\left[ \begin{array}{rr}{1} & {-0.5} \\ {-0.5} & {1}\end{array}\right] \left[ \begin{array}{l}{3} \\ {0}\end{array}\right]\right) \\ \\ \operatorname{poslin}\left(\left[ \begin{array}{r}{3} \\ {-1.5}\end{array}\right]\right)=\left[ \begin{array}{l}{3} \\ {0}\end{array}\right] \end{cases}

    由于后续迭代的输出都相同,所以网络是收敛的。因为只有第一神经元输出了非零值,所以选择第一个标注模式 橘子 作为匹配结果。因为 橘子 的标准模式与输入模式的 Hamming 距离为 1 ,而苹果的标准模式和输入模式的 Hamming 距离为2 ,所以网络做出的选择是正确的。

    2.4 Hopfield 网络

    循环网络,可以完成 Hamming 网络两层结构才能完成的工作。Hopfield 网络的一种变形如下图:

    image

    使用输入向量来初始化该网络的神经元,然后网络不断迭代直到收敛。当网络结果正确时,其输出结果将会是某一个标准向量。

    在 Hamming 网络中由输出非零值的神经元来表明选定了哪种标准模式,而 Hopfield 网络则是直接生成一个选定的标准模式作为输出。

    网络运算:

    \begin{cases} \mathbf{a}(0)=\mathbf{p}\\ \mathbf{a}(t+1)=\operatorname{satlins}(\mathbf{W} \mathbf{a}(t)+\mathbf{b}) \end{cases}

    satlins 表示对称饱和输出函数,其输入输出为:
    a= \begin{cases} -1 & n<-1 \\ n & -1 \le n \le 1 \\ 1 & n>1 \end{cases}

    Hamming 网络的前馈层的权值为标准模式,在Hopfield 网络中权值矩阵和偏置向量的设置要复杂许多。

    2.5 总结

    感知机是前馈网络的一个实例。在这些网络中,输出是直接根据输入计算得到的,中间没有任何形式的反馈。前馈网络可以用于模式识别,也可以用于函数逼近。函数逼近在自适应滤波和自动控制等领域已有所应用。

    以 Hamming 网络为代表的竞争网络由两个主要的特性。第一,它们计算了已存储的标准模式和输入模式之间的距离。第二,它们通过竞争来决定哪个神经元所代表的标准模式最接近输入。

    以 Hopfield 网络为代表的循环网络,最初是受统计力学的启发。它们被用作联想记忆,其中已存储的数据可以通过与输入数据的关联关系而不是基于地址被提取。循环网络已经被用来解决各种优化问题。

    第3章 感知机学习规则

    在不能可视化决策边界的情况下,如何确定多输入感知机网络的权值矩阵和偏置值?
    单层感知机网络的优点和局限性

    3.1 学习规则

    指修改网络权值和偏置值的方法和过程,也称为训练算法。学习规则是为了训练网络来完成某些任务。学习规则可以归纳为三大类:

    • 有监督学习
    • 无监督学习
    • 增强(评分)学习 :适合应用于决策等控制系统

    3.2 感知机结构

    image
    网络的输出为:

    网络中的每个神经元把输入空间划分成了两个区域

    3.2.1 单神经元感知机

    考虑两个输入,输出为:
    \begin{aligned} a &= \operatorname{hardlim}(n)=\operatorname{hardlim}(\mathbf{W} \mathbf{p}+b) \\ &= \operatorname{hardlim}\left(\mathbf{w}^{T} \mathbf{p}+b\right)=\operatorname{hardlim}\left(w_{1,1} p_{1}+w_{1,2} p_{2}+b\right) \end{aligned}

    决策边界(descision boundary)通过网络的净输入 n 等于 0 的输入向量来确定
    _{1} \mathbf{w}^{T} \mathbf{p}+b=0
    对于决策边界上的所有点而言,输入向量与权值向量间的内积都相等。

    3.2.2 多神经元感知机

    每个神经元都有一个决策边界:
    _{i} \mathbf{w}^{T} \mathbf{p}+b_{i}=0

    3.3 感知机学习规则

    有监督训练的学习过程是从一组能够正确反映网络行为的样本集中获得的:

    \left\{\mathbf{p}_{1}, \mathbf{t}_{1}\right\},\left\{\mathbf{p}_{2}, \mathbf{t}_{2}\right\}, \ldots,\left\{\mathbf{p}_{Q}, \mathbf{t}_{Q}\right\}

    其中 {p}_{q} 是网络的输入, t_{q} 是该输入相应的目标输出。当每个输入作用到网络上时,将网络的实际输出与目标输出相比较。为了使网络的实际输出尽量靠近目标输出,学习规则将调整该网络的权值和偏置值。

    统一的学习规则:
    定义感知机误差 e
    e=t-a
    其中 t 代表目标输出, a 代表实际输出
    权值学习规则:
    _{1} \mathbf{w}^{n e w}=_{1} \mathbf{w}^{o l d}+e \mathbf{p}=_{1} \mathbf{w}^{o l d}+(t-a) \mathbf{p}
    将偏置值看作一个输入总是1的权值,则偏置值学习规则:
    b^{n e w}=b^{o l d}+e

    通常将权值和偏置值初始化为较小的随机数

    3.4 收敛性证明

    可以证明:

    该规则总能收敛到能实现正确分类的权值上(假设权值存在)
    感知机的学习规则将在有限次迭代后收敛

    局限性:

    无法解决 “异或”门 (两个输入值相同输出0,输入值不同输出1)问题

    3.5 小结

    决策边界总与权值向量正交

    单层感知机只能对线性可分的向量进行分类

    学习规则:
    \begin{cases} e=t-a \\ \mathbf{w}^{n e w}=\mathbf{w}^{o l d}+e \mathbf{p}=\mathbf{w}^{o l d}+(t-a) \mathbf{p} \\ b^{n e w}=b^{o l d}+e \end{cases}

    由于简书一篇文章的字数不能太多,更多的内容请转如下链接:
    迷人的神经网络——机器学习笔记1

    相关文章

      网友评论

          本文标题:迷人的神经网络——机器学习笔记1

          本文链接:https://www.haomeiwen.com/subject/hwblzqtx.html