精华内容
下载资源
问答
  • 概念理解 感知机 感知机(perceptron)是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1...从神经网络模型的角度看,感知机是最简单的分类模型多层感知机 多层感知器(Multilayer P...

    神经网络中有许多的名词,比如MLP\ANN\CNN\RNN\DNN等,在文章开始之前先给出一个大致说明,免得像我一样为了区分多层感知机(MLP)与多层神经网络的概念搜索半天资料。

    首先,深度前馈网络(deep feedforward network),也叫做前馈神经网络(feedforward neural network)或者多层感知机(Multilayer Perceptron,MLP),多层感知机(MLP)又叫人工神经网络(Artificial Neural Network,ANN),是典型的深度学习模型。其次,我觉得多层神经网络是一个很广泛的概念,所有那些具有较多隐藏层/中间层的神经网络都可以成为多层神经网络,还有一个深度神经网络(DNN)的概念,我觉得它就是多层神经网络。最后,卷积神经网络(CNN)和循环神经网络(RNN)是两种对简单全连接神经网络的传播过程进行设计的特殊/专业神经网络,这两种神经网络以后学习到时会介绍,这里就不具体说明了。
    所以,感知机模型如果中间有很多隐藏层的话,也就属于多层神经网络。

    对于神经网络的众多名称,‘花书’是这样说明的,“这个领域已经更换了很多名字,它反映了不同的研究人员和不同观点的影响。同时也因为它被赋予了许多不同的名称(其中大部分已经不在使用),最近才成为众所周知的深度学习”。

    概念理解

    感知机

    感知机(perceptron)是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1)。感知机对应于输入空间中将实例划分为两类的分离超平面。感知机旨在求出该超平面,为求得超平面导入了基于误分类的损失函数,利用梯度下降法 对损失函数进行最优化(最优化)。
    从神经网络模型的角度看,感知机是最简单的分类模型。

    多层感知机

    多层感知器(Multilayer Perceptron,缩写MLP)是一种前向结构的人工神经网络,映射一组输入向量到一组输出向量。MLP可以被看作是一个有向图,由多个的节点层所组成,每一层都全连接到下一层。除了输入节点,每个节点都是一个带有非线性激活函数的神经元(或称处理单元)。一种被称为反向传播算法的监督学习方法(BP算法)常被用来训练MLP。
    MLP是一种非线性分类器,传统的感知机模型是两层的NN,是线性的,而MLP是三层及以上的NN,就可以实现非线性任务,比如三层的MLP可以实现异或(XOR)问题。
    多层感知机的层与层之间是全连接的,即每一层的任意一个神经元均与其前一层的所有神经元有连接,这种连接其实代表了一种权重加和。

    上面这样对感知机与多层感知机的解释很简短明了,但是对很多初学者很不友好,所以我找到一篇文章从多层感知器到卷积网络(一)来一起食用。文章作者白话的非常清楚,从神经网络的原来讲起,介绍简单且广泛,另外神经网络中最基本的神经元与反向传播在文中配图介绍。

    激活函数

    从上面的介绍我们已经直到,神经元是神经网络的基本单元,除了输入节点,每个节点都是一个带有非线性激活函数的神经元。那么为什么需要激活函数,激活函数又是什么?以下进行简单说明。

    不管是单层感知机还是多个感知器,只要不带激活函数,都只能解决线性可分的问题,解决不了线性不可分问题。激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,使得神经网络可以更好地解决较为复杂的问题。

    激活函数(Activation Function),就是作用在人工神经网络的神经元上函数,负责将inputs加权求和后的输入映射到输出端。

    常见的激活函数有:函数图形可见深度学习笔记六:常见激活函数总结
    以下列出常见的四种。

    • Sigmoid(S型激活函数,将输入映射到一个0到1之间的值)
    • tanh(双曲正切函数,将输入映射到一个-1到1之间的值)
    • ReLU(近似生物神经激活函数)
    f(x)=max(0,x)
    • Softmax(在多分类中常用的激活函数,是基于逻辑回归的。)

    pytorch实现

    import torch
    from torch.autograd import Variable
    
    # 一定要继承 nn.Module
    class TwoLayerNet(nn.Module):
        def __init__(self, input_size, hidden_size, output_size):
            super(TwoLayerNet, self).__init__()
            self.twolayernet = nn.Sequential(
                nn.Linear(input_size, hidden_size),
                nn.ReLU(),
                nn.Linear(hidden_size, output_size),
            )
    
        def forward(self, x):
            y_pred = self.twolayernet(x)
            return y_pred
    
    # M是样本数量,input_size是输入层大小, hidden_size是隐含层大小,output_size是输出层大小
    M, input_size, hidden_size, output_size = 64, 1000, 100, 10
    
    # 生成随机数当作样本
    x = Variable(torch.randn(M, input_size))
    y = Variable(torch.randn(M, output_size))
    
    model = TwoLayerNet(input_size, hidden_size, output_size)
    
    # 定义损失函数
    loss_fn = nn.MSELoss(size_average=False)
    
    learning_rate = 1e-4
    EPOCH = 300
    
    # 使用optim包来定义优化算法
    optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
    
    for t in range(EPOCH):    
        y_pred= model(x)
        loss = loss_fn(y_pred, y)
        if (t+1) % 50 == 0:
            print(loss.data[0])
        
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    

    参考:
    “花书”《深度学习》
    系统学习深度学习(九)–激活函数总结
    神经网络激活函数的作用是什么?
    深度学习:神经网络中的激活函数
    https://github.com/LianHaiMiao/pytorch-lesson-zh/blob/master/basis/4、多层感知机.ipynb

    展开全文
  • (1)感知机模型(双层神经网络模型:输入层和计算单元,瓶颈:XOR问题——线性不可分) (2)多层神经网络(解决线性不可分问题——在感知机的神经网络上多加一层,并利用“后向传播”(Back-propagation)学习...

    (1)感知机模型(双层神经网络模型:输入层和计算单元,瓶颈:XOR问题——线性不可分)

                           

    (2)多层神经网络(解决线性不可分问题——在感知机的神经网络上多加一层,并利用“后向传播”(Back-propagation)学习方法,可以解决XOR问题)(1974年,哈佛博士论文)

    (3)BP算法训练的神经网络:信号正向传播和误差反向传播(修正权值)

    缺点:

    l  梯度越来越稀疏:从顶层向下,误差校正信号越来越小

    l  收敛到局部最小值:随机值初始化会导致这种情况的发生(从远离最优区域开始的时候)

    l  只能用有标签的数据来训练

    (4)生物学实验

     

    (4)深度学习:首先利用无监督学习对每层进行逐层预训练(Layers Pre-Training)去学习特征(学到数据本身的结构),每次单独训练一层,并将训练结果作为更高一层的输入;然后到最上层改用监督学习从上到下进行微调(Fine-tune)去学习模型

    Ps:由于深度学习的第一步不是随机初始化,而是通过学习输入的数据结构得到的,因此这个值更接近全局最优。

    步骤:模仿大脑的学习(编码)和重构(解码)——不是训练数据到标记的“映射”,而是去学习数据本身内在结构和特征[隐含层也叫做特征探测器(Feature detector)]。(通常隐含层中的神经元数比输入/输出层的少,这是为了使神经网络只学习最重要的特征并实现特征的降维)

    1)无监督训练

     

     

     

    2)有监督微调:第一种——只调整分类器;第二种——通过有标签样本,微调整个系统。

     

    Deep Learning和 neural network异同

    二者的相同在于deep learning采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看作是一个logistic regression模型;这种分层结构,是比较接近人类大脑的结构的。

    而为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。传统神经网络中,采用的是back propagation的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。而deep learning整体上是一个layer-wise的训练机制。这样做的原因是因为,如果采用back propagation的机制,对于一个deep network(7层以上),残差传播到最前面的层已经变得太小,出现所谓的gradient diffusion(梯度弥散)。

    BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想。深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源。

    BP算法存在的问题:

    (1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;

    (2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);

    (3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习;

    deep learning训练过程具体如下:

    1)使用自下上升非监督学习(就是从底层开始,一层一层的往顶层训练):

    采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是feature learning过程):

    具体的,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数;

    2)自顶向下的监督学习(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调):

    基于第一步得到的各层参数进一步fine-tune(微调)整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程。

     

    参考:http://www.cnblogs.com/caocan702/p/5662789.html

    转载于:https://www.cnblogs.com/flippedkiki/p/7764914.html

    展开全文
  • 单层感知机多层前馈神经网络

    千次阅读 2017-08-30 13:31:11
    感知机是一个二元分类的线性模型。它采用海维赛德(Heaviside)阶跃函数作为激活函数。 海维赛德阶跃函数: x为‘门限值,如0.5’,y=0,否则y=1. 程序说法是: x 从神经元细胞借鉴的‘门限’和‘权重和’的概念是...
    单层感知机:
    感知机是一个二元分类的线性模型。它采用海维赛德(Heaviside)阶跃函数作为激活函数。
    海维赛德阶跃函数: x为‘门限值,如0.5’,y=0,否则y=1. 程序说法是: x<0.5?0:1
    从神经元细胞借鉴的‘门限’和‘权重和’的概念是建模的关键。
    向量xw的点积--》海维赛德阶跃函数(作为激活函数)--》分类0,1
    XW+b, b为偏好。如果b为负,样本X一定,为使结果仍为0.5,要求W更大。
    所以调整b可以调整决策边界。
    输入X并不影响b,b通过感知学习算法获得。
    单层感知机--》多层感知机。
    单层感知机:输入--》(X点乘W)+b--》海维赛德阶跃函数--》分类结果
    output = H(Wi · Ai + b),  H指海维赛德阶跃函数
    感知学习算法:功能类拟于前面的更新函数,调整权重W和偏好b.
    如果样本没有被线性划分,感知学习算法不会中止。
    W初始化为小随机值或0.
    XOR逻辑是线性不可分的。
    x1 x2 y
    0  0  0
    0  1  1
    1  0  1
    1  1  0
    早期感知机的限制:不能处理XOR等非线性问题,多层感知机可以。
    单层感知机为什么不能分类线性问题,证明见:http://blog.csdn.net/panda07100/article/details/38580993
    由于这个限制,导致AI第一次冬天,1974–1980,直到后来的反向传播算法。
    单层感知机小结:
    output = H(Wi · Ai + b),  H指海维赛德阶跃函数




    多层感知机(多层前馈神经网络):
    联系:多层感知机的每个神经元都‘类似’一个单层感知机。
    区别:激活函数不再局限于海维赛德阶跃函数,因而形成现在广泛使用的神经元。单层感知机只有一个神经元,多层感知机有多个神经元。
    人工神经元对输入的选择与过滤:
    1. 连接权重weight: 指输入与神经元之间的连接权重。如果为0,则过滤掉该输入值。
    2. 激活函数:如果激活值为0,则过滤掉所有输入。
    input_sumi = Wi · Ai + b
    ai = g( Wi · Ai + b), g指一个一般的激活函数。
    激活值:也简称为激活,指输出值ai,这里容易与g的输入值混淆。
    设激活函数为sigmoid激活函数:g (z) = 1/(1 + e−z),那么多层感知器就是逻辑回归logistic regression。
    参见:http://blog.csdn.net/vagrantabc2017/article/details/77649673 中‘逻辑回归Logistic Regression’的说明。
    通常,一层中的所有神经元的激活函数都是一样的。
    权重w:线,或箭头,表示连接强度。
    偏好b: 作用:不管input如何,因为有b,总有一些神经元被激活;允许网络尝试新的解释或行为。与w类似,在学习过程中被不断调整。
    激活函数f: 统管神经元。
    输入的传播是前向传播。
    很多激活函数的值域是[-1,1]或[0,1].
    如果激活函数输出了非0值到下一个神经元,称为‘被激活’。
    激活函数是研究深度学习的一个重要部分。
    与生物神经元的比较:
    输入: 通过树突dendrites输入
    点乘: 通过细胞体求和
    激活函数:通过轴突完成激活函数
    参见:http://blog.csdn.net/vagrantabc2017/article/details/77684112
    前馈神经网络架构:
    1. 一个输入层:有几个features,就有几个神经元,如x1,x2,x3。
    2. 多个隐藏层:全连接(经典方式),是处理非线性分类的关键。
    3. 一个输出层:可以是回归,也可以是分类,由输出层的激活函数的类型决定。常见的输出层激活函数是softmax或sigmoid激活函数。
    softmax: 结果分为互斥的几类,输出归属这些类的分布。
    sigmoid:为每一个类别输出一个概率。
    4. 层之间的连接:在全连接中,连接指前一层所有神经元到后一层所有神经元的连接权重。使用反向传播学习算法找最优解。
    展开全文
  • M-P模型1943年,McCulloch and Pitts抽象出了“M-P神经模型”,神经元接受到来自nn个其他神经元传递过来的输入信号,通过带权重的值连接传递,神经元接受到的总输入值与神经元的阈值进行比较,通过激活函数...

    M-P模型

    1943年,McCulloch and Pitts抽象出了“M-P神经元模型”,神经元接受到来自n个其他神经元传递过来的输入信号,通过带权重的值连接传递,神经元接受到的总输入值与神经元的阈值进行比较,通过激活函数(activation function)处理输出。

    激活函数

    理想中的激活函数如下图所示的阶跃函数,它将输入值映射为输出值0 (对应于神经元抑制)或 1(对应于神经元兴奋)。
    这里写图片描述
    但是,阶跃函数在(0,0)处出现断点,是非连续函数。

    因此,需要找一个近似于阶跃函数的连续函数替代它。

    这个函数便是Sigmoid函数。如图b所示:


    sigmoid(x)=11+ex

    并且它有一个非常好的性质:


    f(x)=f(x)(1f(x))

    感知机

    感知机由两层神经元组成,输入层接受外界输入信号后传递给输出层,输出层是M-P神经元。如下图所示,


    这里写图片描述

    机器学习到底学的是什么

    如上图所示的w1,w2,是连接2个神经元间的权值。更一般地,给定训练数据集,确定权重wi(i=1,2,3...,n)以及阈值θ的过程,便是学习的主要目标,这就是学习到的东西。

    再看感知机

    感知机只有输出层神经元进行激活函数处理,属于一层功能神经元(functional neuron),其学习能力非常有限。

    对于这个一层功能神经元模型,只能处理线性可分的问题,比如与,或,非的问题,对这些问题的学习,感知机一定可以收敛,并且存在一个线性超平面将它们分开,如下图所示,可以求得适当的权向量w=(w1;w2;...;wn+1)

    这里写图片描述

    观察上图d

    发现它有两个超平面来包裹了一个区域,求解异或问题,已经不是线性问题了,而是非线性问题,需要考虑一种解决非线性问题的网络。

    飞跃到多层功能神经元

    如下图所示,是两层感知机(两层功能神经元)。

    输出层与输入层之间的一层神经元,称为隐含层(hidden layer)。

    隐含层和输出层都是拥有激活函数的功能神经元。

    这里写图片描述

    多层前馈神经网络

    更一般地,常见的神经网络是如图所示的层级结构,每层神经元与下一层神经元互联,神经元之间存在同层连接,也不存在跨层连接。这样的网络结构称为“多层前馈神经网络”(mutli-layer feedforward neural networks)。

    这里写图片描述

    参考

    本文属于常规概念总结,参考周志华 《机器学习》

    展开全文
  • MLP多层感知机 数据获取、预处理 模型搭建 训练与评估 卷积神经网络 高效建模 Keras Sequential高效建模 Functional API建模 经典网络调用 高效训练 当模型建立完成后,通过 tf.keras.Model 的 compile 方法配置训练...
  • 继上文的集成学习模型之后,本文实践使用的pyspark提供的多层感知机神经网络模型,这是一种比较简单但是却又很重要的神经网络模型。MLP是一种前向结构的人工神经网络,映射一组输入向量到一组输出向量。MLP可以被...
  • @(Aaron)[机器学习 | 多层感知机] 主要内容包括: 多层感知机的基本知识 使用多层感知机图像分类的从零开始...在这里,我们将以多层感知机(multilayer perceptron,MLP)为例,介绍多层神经网络的概念。   多层感知
  • 神经网络模拟人脑的神经系统而来 MP神经元 模拟人类的一个神经元,是一个单层的神经网络,被称为“简单单元” MP神经元与感知机的关系 逻辑回归到神经元 逻辑回归中主要包括线性变换和非线性变换两部分,神经元中...
  • 感知机模型起源于人工神经网络中最简单的结构,大致结构如下 多层感知机 ​ 感知机的输入层是在模拟输入的"形状",可以通过约束条件:联立的一元方程组来描述输入在空间中定位,一层输入可以近似成用无限条直线...
  • 一、神经网络的由来 ...感知机实际上是一个线性的模型,可以理解成只有一层的神经网络。 代码实现: import numpy as np class Perceptron: def __init__(self, N, alpha=0.1): self.W = np.random...
  • 一、多层感知机简介 Softmax回归可以算是多分类问题logistic回归,它和神经网络的最大区别是没有隐含层。理论上只要隐含节点足够多,即时只有一个隐含层的神经网络也可以拟合任意函数,同时隐含层越多,越容易拟合...
  • 多层感知机模型 这里定义含有两个隐含层的模型,隐含层输出均为256个节点,输入784(MNIST数据集图片大小28*28),输出10。 激活函数 比较常用的是 ReLU:relu(x)=max(x,0),本例中没有加激活函数。 softmax(同...
  • 文章目录神经元常见的激活函数输出层激活函数感知机感知机学习损失函数感知机学习算法感知机拓扑结构多层前馈神经网络神经网络的学习:误差逆传播算法(BP算法)标准BP算法累积BP算法BP网络的过拟合BP网络的全局极小...
  • 经典手写Mnist数据集一个最简单的神经网络多层感知机模型训练的全过程
  • 感知机多层网络

    千次阅读 2015-07-26 18:44:22
    1.神经网络1.1 定义人工神经网络(ANN)又称神经网络(NN),是一种模拟人脑的学习系统的生物模型神经网络的由大量相互连结的节点构成一个复杂的网络结构,每个节点都有多个输入和一个输出,并且每个输入对应有一...
  • 多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。以单隐藏层为例并沿用本节之前定义的符号,多层感知...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 720
精华内容 288
关键字:

感知机模型多层神经网络