美文网首页
神经网络(Neural Network)

神经网络(Neural Network)

作者: 夜猫子丶CC | 来源:发表于2020-08-10 12:17 被阅读0次

    一. 概述

    1. 神经元生物模型

    (1)结构:许多树突(dendrite)用于输入,一个轴突 (axon)用于输出。

    (2)特性:兴奋性和传导性。兴奋性是指当信号量超过某个阈值时,细胞体就会被激活,产生电脉冲。传导性是指电脉冲沿着轴突并通过突触传递到其它神经元。

    (3)有两种状态的机器:激活时为“是”,不激活时为“否”。神经细胞的状态取决于从其他神经细胞接收到的信号量,以及突触的性质(抑制或加强)。

    2. 神经元数学模型

    (1)神经元——不重要

    ① 神经元是包含权重和偏置项的函数:接收数据后,执行一些计算,然后使用激活函数将数据限制在一个范围内(多数情况下)。

    ② 单个神经元:线性可分的情况下,本质是一条直线,ω·x+b=0,这条直线将数据划分为两类。而线性分类器本身就是一个单层神经网络。

    ③ 神经网络:非线性可分的情况下,神经网络通过多个隐层的方法来实现非线性的函数。

    (2)权重/参数/连接(Weight)——最重要

    每一个连接上都有一个权重。一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。

    (3)偏置项(Bias Units)——必须

    ① 如果没有偏置项,所有的函数都会经过原点。

    ② 正则化偏置会导致欠拟合:若对偏置正则化,会导致激活变得更加简单,偏差就会上升,学习的能力就会下降。

    ③ 偏置的大小度量了神经元产生激励(激活)的难易程度。

    二. 激活函数

    1.概念

    (1)定义:也称为转换函数,是一种将输入 (input) 转成输出 (output) 的函数。

    (2)作用:一般直线拟合的精确度要比曲线差很多,引入激活函数能给神经网络增加一些非线性的特性。

    (3)性质:

    ① 非线性:导数不是常数,否则就退化成直线。对于一些画一条直线仍然无法分开的问题,非线性可以把直线变弯,就能包罗万象;

    ② 可微性:当优化方法是基于梯度的时候,处处可导为后向传播算法提供了核心条件;

    ③ 输出范围:一般限定在[0,1],使得神经元对一些比较大的输入会比较稳定;

    ④ 非饱和性:饱和就是指,当输入比较大的时候输出几乎没变化,会导致梯度消失;

    ⑤ 单调性:导数符号不变,输出不会上蹿下跳,让神经网络训练容易收敛。

    2. 常见函数

    (1)线性函数 (linear function)——purelin()

    回归问题

    (2)符号函数 (sign function)——hardlim() 

    ① 如果z值高于阈值,则激活设置为1或yes,神经元将被激活。

    ② 如果z值低于阈值,则激活设置为0或no,神经元不会被激活。

    分类问题(二分类)

    (3)对率函数 (sigmoid function)——logsig()

    ① 优点:光滑S型曲线连续可导,函数阈值有上限。

    ② 缺点:❶ 函数饱和使梯度消失,两端梯度几乎为0,更新困难,做不深;

                    ❷ 输出不是0中心,将影响梯度下降的运作,收敛异常慢;

                    ❸ 幂运算相对来讲比较耗时

    分类问题(二分类)

    (4)双曲正切函数(hyperbolic tangent function)——tansig()

    ① 优点:取值范围0中心化,防止了梯度偏差

    ② 缺点:梯度消失现象依然存在,但相对于sigmoid函数问题较轻

    (5)整流线性单元 ReLU 函数(rectified linear unit)

    ① 优点:❶ 分段线性函数,它的非线性性很弱,因此网络做得很深;

                    ❷ 由于它的线性、非饱和性, 对于随机梯度下降的收敛有巨大的加速作用;

    ② 缺点:❶ 当x<0,梯度都变成0,参数无法更新,也导致了数据多样化的丢失;

                    ❷ 输出不是0中心

    relu(x)= max(0,x)

    (6)渗漏型整流线性单元激活函数 Leaky ReLU 函数

    ① 优点:❶ 是为解决“ReLU死亡”问题的尝试,在计算导数时允许较小的梯度;

                    ❷ 非饱和的公式,不包含指数运算,计算速度快。

    ② 缺点:❶ 无法避免梯度爆炸问题;(没有体现优于ReLU)

                    ❷ 神经网络不学习 α 值。

    f(x) = max(αx, x)

    (7)指数线性单元 ELU (Exponential Linear Units)

    ① 优点:❶ 能避免“死亡 ReLU” 问题;

                    ❷ 能得到负值输出,这能帮助网络向正确的方向推动权重和偏置变化;

                    ❸ 在计算梯度时能得到激活,而不是让它们等于 0。

    ② 缺点:❶ 由于包含指数运算,所以计算时间更长;

                    ❷ 无法避免梯度爆炸问题;(没有体现优于ReLU)

                    ❸ 神经网络不学习 α 值。

    f(x)=α(e^x-1) or x

    (8)Maxout(对 ReLU 和 Leaky ReLU的一般化归纳)

    ① 优点:❶ 拥有ReLU的所有优点(线性和不饱和)

                    ❷ 没有ReLU的缺点(死亡的ReLU单元)

                    ❸ 可以拟合任意凸函数

    ② 缺点 :参数数量增加了一倍。难训练,容易过拟合

    f(x)=max (ω1x+b1,ω2x+b2)

    (9)Swish

    ① 优点:❶ 在负半轴也有一定的不饱和区,参数的利用率更大

                    ❷ 无上界有下界、平滑、非单调

                    ❸ 在深层模型上的效果优于 ReLU

    f(x) = x · sigmoid(βx)

    三. 神经网络算法(Nerual NetWorks)

    1. 层

    每个层都包含一定数量的单元(units)。增加层可增加神经网络输出的非线性。

    (1)输入层:就是接收原始数据,然后往隐层送

    (2)输出层:神经网络的决策输出

    (3)隐藏层:神经网络的关键。把前一层的向量变成新的向量,让数据变得线性可分。

    2. 单层神经网络——感知机:自动决策

    (1)结构:仅包含输入层和输出层,直接相连。

    (2)作用:仅能表示线性可分函数或决策,且一定可以在有限的迭代次数中收敛。

    (3)局限:可以建立与门、或门、非门等,但无法建立更为复杂的异或门(XOR),即两个输入相同时输出1,否则输出0。(“AI winter”)


    3. 两层神经网络——前馈神经网络(Feedforward Neural Network)

    (1)目的:拟合某个函数f^*    (两层神经网络可以逼近任意连续函数)

    (2)结构:包含输入层、隐藏层和输出层 ,由于从输入到输出的过程中不存在与模型自身的反馈连接,因此被称为“前馈”。   (层与层之间全连接)

    (3)作用:非线性分类、聚类、预测等,通过训练,可以学习到数据中隐含的知识。

    (4)局限:计算复杂、计算速度慢、容易陷入局部最优解,通常要将它们与其他网络结合形成新的网络。

    (5)前向传播算法(Forward Propagation)

    ① 方法:从左至右逐级依赖的算法模型,即网络如何根据输入X得到输出Y,最终的输出值和样本值作比较,计算出误差

    ② 目的:完成了一次正反向传播,就完成了一次神经网络的训练迭代。通过输出层的误差,快速求解对每个ω、b的偏导,利用梯度下降法,使Loss越来越小。

    ② 局限:为使最终的误差达到最小,要不断修改参数值,但神经网络的每条连接线上都有不同权重参数,修改这些参数变得棘手。

    (6)误差反向传播(Back Propagation)

    ① 原理:梯度下降法求局部极值

    链式法则:复合函数的导数可以用构成复合函数的各个函数的导数的乘积表示。

    ② 方法:从后往前,从输出层开始计算 L 对当前层的微分,获得各层的误差信号,此误差信号即作为修正单元权值的依据。计算结束以后,所要的两个参数矩阵的梯度就都有了。

    ③ 局限:如果激活函数是饱和的,带来的缺陷就是系统迭代更新变慢,系统收敛就慢,当然这是可以有办法弥补的,一种方法是使用交叉熵函数作为损失函数。


    四. 多层神经网络——深度学习

    1. 概念

    (1)原理:随着网络的层数增加,每一层对于前一层次的抽象表示更深入。在神经网络中,每一层神经元学习到的是前一层神经元值的更抽象的表示。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。

    (2)方法:ReLU函数在训练多层神经网络时,更容易收敛,并且预测性能更好。

    (3)优点:① 易于构建,表达能力强,基本单元便可扩展为复杂的非线性函数

                          ② 并行性号,有利于在分布是系统上应用

    (4)局限:① 优化算法只能获得局部极值,性能与初始值相关

                          ② 调参理论性缺乏

                          ③ 不可解释,与实际任务关联性模糊

    2. 卷积神经网络(Convolutional Neural Networks)

    (1)原理:由手工设计卷积核变成自动学习卷积核

    LeNet-5

    (2)卷积(Convolutional layer): 输入与卷积核相乘再累加(内积、加权叠加)

    ① 公式:

    ② 目的:提取输入的不同特征,得到维度很大的特征图(feature map)

    ③ 卷积核:需要训练的参数。一般为奇数维,有中心像素点,便于定位卷积核

    ④ 特点:局部感知、参数变少、权重共享、分层提取

    (3)池化(Pooling Layer):用更高层的抽象表达来表示主要特征,又称“降采样”

    ① 分类:最大(出现与否)、平均(保留整体)、随机(避免过拟合)

    ② 目的:降维,不需要训练参数,得到新的、维度较小的特征

    (4)步长(stride):若假设输入大小是n∗n,卷积核的大小是f∗f,步长是s,则最后的feature map的大小为o∗o,其中o=⌊\frac{n−f}{s}  ⌋+1

    (5)填充(zero-padding)

    ① Full模式:即从卷积核(fileter)和输入刚相交开始做卷积,没有元素的部分做补0操作。

    ② Valid模式:卷积核和输入完全相交开始做卷积,这种模式不需要补0。

    ③ Same模式:当卷积核的中心C和输入开始相交时做卷积。没有元素的部分做补0操作。

    (7)激活函数:加入非线性特征

    (8)全连接层(Fully-connected layer)

    如果说卷积层、池化层和激活函数层等是将原始数据映射到隐层特征空间(决定计算速度),全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用(决定参数个数)。

    参考:

    [1] 神经网络(入门最详细)_ruthy的博客-CSDN博客_神经网络算法入门

    [2] 神经网络(容易被忽视的基础知识) - Evan的文章 - 知乎

    [3] 人工神经网络——王的机器

    [4] 如何简单形象又有趣地讲解神经网络是什么? - 舒小曼的回答 - 知乎

    [5] 神经网络15分钟入门!足够通俗易懂了吧 - Mr.括号的文章 - 知乎

    [6] 神经网络——最易懂最清晰的一篇文章_illikang的博客-CSDN博客_神经网络

    [7] 直觉化深度学习教程——什么是前向传播——CSDN

    [8] “反向传播算法”过程及公式推导(超直观好懂的Backpropagation)_aift的专栏-CSDN

    [9] 卷积、反卷积、池化、反池化——CSDN

    [10] 浙大机器学习课程- bilibili.com

    相关文章

      网友评论

          本文标题:神经网络(Neural Network)

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