基于多层感知机的神经网络ANN

学习目标

  1. 了解人工神经网络的基本原理
  2. 通过合适的例子讨论多层感知机的运作
  3. 讨论利用反向传播bp的方法推导权值更新公式

课堂笔记

神经网络概念

        神经网络(artificial neural network)是与人类大脑思考相似的算法,可用来解决监督式的分类(classification)问题和连续数预测(numeric prediction),非监督式的聚簇问题(clustering)。具体有以下几种分类:

  1. Multi Layer Perceptron (MLP) used for classification
  2. Radial Basis Function (RBF) used for classification and numeric prediction
  3. Self Organizing Map (SOM) used for clustering
  4. Convolutional Neural Network (CNN) used for image/text classification  
  5. Long Short Term Memory (LSTM) used for modelling time series

        回顾一下人体的神经系统最主要功能单位——细胞元,可分为细胞体、树突和轴突、轴突末端,其中树突用于接收上个神经元轴突末端的信号。神经系统就是通过一个一个神经元的信号传递和交换,从而实现脑的分析功能。

基于多层感知机的神经网络ANN_第1张图片

        而对应人工神经网络中的基本功能单位是感知机。下面介绍一下感知机。

感知机       

         一个感知机可以有多个输入(树突),经过一系列转换(细胞体),并输出一个值(轴突)。也就是说感知机是处理多对一的,而函数也是处理多对一的。这里为什么又发明了感知机,感知机的价值体现在哪呢?在解释完感知机之后回答这个问题。

        感知机是处理分类问题的。比如说一个人,人有两个特征身高和体重,通过将特征值输入到感知机中,从而判断这个人胖还是瘦。那我实现这个任务之前,首先要训练机器:将很多人的特征数据和胖瘦的类别输入到感知机中,机器会根据数据不停地调整分开他们的那条直线(如图示),确定好直线也就是确定好斜率k和截距b之后,就训练成功了。而这是二维(两个特征)是一条线,如果是三维就是一个面,n个特征就是(n-1)维的超平面。同理,直线可以表示为ax+by+c=0,三维中的面可以表示为ax+by+cz+d=0,因此n维通用表示为w1x1+w2x2+w3x3+……+b=0,这个过程就是求一个线性函数。

 基于多层感知机的神经网络ANN_第2张图片 基于多层感知机的神经网络ANN_第3张图片

        确定好分类线之后,下次再输入数据,只要判断数据在线的上方还是下方,就能知道这个人是胖还是瘦了。这是有个判断函数。

        由此我们可以得出感知机的工作原理:如下图,其实就是两部分组成,一部分线性求超平面,然后将线性函数输入到激活函数中(判断函数)判断类别。

基于多层感知机的神经网络ANN_第4张图片 感知机工作原理
基于多层感知机的神经网络ANN_第5张图片 激活函数

那现在就可以解决上面提到的问题了,感知机的价值到底体现在哪呢?(此部分为了解)

        是因为用函数计算的话必须得出具体的表达式,它考虑因素会很多,比如男人和女人的身高体重对胖瘦的判断不一样,那要在定义域上要分段求各段的具体函数,解析式难求,而且如果是按年龄不同胖瘦标准也不同,当自变量的含义变了,解析式也跟着变,还得再求一遍,没有一个固定的模板,不具有通用性。

        而感知机中间的过程是计算机处理的,人类不需要知道如何算出来的,也不用管是什么特征,只需要将数据(带类别)传给感知机,感知机就会被训练出来,随着数据和训练次数的增多,变成一个越来越会判断类别的机器(准确率高),模型有了,只需要调一调参数即可,具有通用性。还有一个原因是感知机将复杂问题简单化了,它总共分为两步,线性求超平面很简单,激活函数判断也很简单,两个简单的算法把复杂问题解决了。

        然而感知机也是有缺陷的,它可以解决与或非,但不能解决异或问题

基于多层感知机的神经网络ANN_第6张图片 与或非,异或

        由上图可以看出一个感知机只能有一条直线,是不能把异或类给分开的。 

        解决方法:增加感知机个数。将x1和x2同时输入到两个感知机中,最后得出值。每个输入值连接所有感知机,称为全连接。

基于多层感知机的神经网络ANN_第7张图片基于多层感知机的神经网络ANN_第8张图片

         接下来进入正题,神经网络是如何工作的?

 神经网络

         ANN是由一个个感知机按照特定层组成,其中input layer是输入数据的特征值,隐藏层是机器内部产生,人看不到的,hidden layer可以是多层,称为多层感知机,最后output layer输出结果。ANN含有正向传播和反向传播,具体过程是:

  1. 随机生成一组w和b
  2. 通过正向传播——输入特征值经过隐藏层输出预测结果
  3. 预测结果与样本源数据中的结果比较,用损失函数error/loss计算该w和b下的与预期的差值,从而对w和b做相应的调整,使之更接近真实值。

基于多层感知机的神经网络ANN_第9张图片

         下面写这里面出现的几个重要函数

 Activation function

  • Sigmoidal step function

 激活函数,上面写的激活函数输出结果要么是0,要么是1,只有两种可能。但更多的情况是神经网络得出一个概率,即判断为1的可能性,结果是一个[0,1]上的值,这就是Sigmoidal step function,图像为下图,steepness越大,图越陡。适合于二分类算法。

基于多层感知机的神经网络ANN_第10张图片 基于多层感知机的神经网络ANN_第11张图片

  •  Softmax function

        适合于多分类,计算每个分类可能的概率。

        因为是概率,就要满足1.概率大于0     2.所有分类概率和为1

        因此引入e,值域>0,另一部分,单个除以总的,所有加起来分子分母相同,值为1。

基于多层感知机的神经网络ANN_第12张图片基于多层感知机的神经网络ANN_第13张图片

Lost/Error function

        一个数据的预测损失函数,计算预测值和实际值的误差

cost function

        全部数据的损失函数

最小二乘法

交叉熵(反映不确定性的差异)

减小误差——Backpropagation learning

        wjk(new) = wjk(current)+Δwjk                  

        where Δwjk=rError(k)Oj    

        r = learning rate parameter (0

        Error(k) = the computed error at node k       

        O = output of node j

Gradient Descent

公式: 

损失函数

:学习率,每次改变的步数。太小收敛太慢;太大容易越过最佳值。

:该点在损失函数上的斜率

:当前w/b值  

以二维为例,由图可以看出,当该点在最低值左边,斜率是负的, 公式得向右,向最低值靠近;在最低值右边,斜率正,向左移。

 基于多层感知机的神经网络ANN_第14张图片

 其它参数:

Number of epochs:训练的次数,一般100以上,越多越准确,但太多容易过拟合overfitting。

The number of hidden neurons:隐藏层个数,原则上越多越好,输入值组合越多,但也会出现过拟合现象。

ANN优点

  1. 神经网络可以很好地处理含有噪声的数据集
  2. 在多个领域都有持续良好的准确率
  3. 能够解决监督问题也能非监督问题

ANN缺点

  1. 训练内部机制无法解释
  2. 容易过拟合
  3. 大数量级,比贝叶斯决策树费时

应用

  1. Classification已被用于识别印刷和手写数字
  2. Numeric prediction预测时间序列,如天气数据(温度、压力、风速等),股票市场价格

你可能感兴趣的:(笔记,机器学习,神经网络,分类,聚类)