神经网络属于“联结主义”,和统计机器学习的理论基础区别还是很不一样。

以我自己的理解,统计机器学习的理论基于统计学,理论厚度足够强,让人有足够的安全感;而神经网络的理论更侧重于代数,表征能力特别强,不过可解释性欠佳。

这两个属于机器学习的两个不同的流派,偶尔也有相互等价的算法。

本文回顾神经网络最简单的构件:感知器、多层感知器。一些简单的代码实践可以参考:Python 实现感知器的逻辑电路(与门、与非门、或门、异或门)。

感知器

感知器是二类分类的线性分类模型,将实例划分为正负两类的分离超平面(separating hyperplane),属于判别模型。

感知器基于线性阈值单元(Linear Threshold Unit, LTU)构件的。以下是 LTU:

LTU 相当于对输入做一个线性组合,再加一个阶跃函数

常用的阶跃函数是 Heaviside 和 Sign。

哪怕只有一个 LTU 也可以作为简单的线性二分类器,类似于逻辑回归或者线性 SVM

感知器就是由一层 LTU 组成。以下是一个多输出分类器。

为了求得感知器的权重参数,需要确定一个学习策略,即定义损失函数并将损失函数极小化。有这样几种选择:

1. 误分类点的总数:损失函数不是 w, b 的连续可导函数,不易优化。
2. 误分类点到超平面的总距离:感知器所采用的损失函数。

感知器的损失函数是:

$$-\frac{1}{\left \| w \right \|}\sum_{x_i\in M}y_i(wx_i+b)$$

感知器学习问题转化为上式损失函数的最优化问题,最优化的方法是随机梯度下降法(stochastic gradient decent)。

感知器收敛性:当训练数据集线性可分时,感知器学习算法原始形式是收敛的。

感知器的具体算法分为两种形式:

1. 原始形式
2. 对偶形式:暂不介绍

原始形式算法:

$$w\leftarrow w+\eta y_ix_i$$
$$b\leftarrow b+\eta y_i$$

使用 sklearn 使用感知器算法:

 1 import numpy as np
 2 from sklearn.datasets import load_iris
 3 from sklearn.linear_model import Perceptron
 4
 5 iris = load_iris()
 6 X = iris.data[:, (2, 3)] # petal length, petal width
 7 y = (iris.target == 0).astype(np.int) # Iris Setosa?
 8 per_clf = Perceptron(random_state=42)
 9 per_clf.fit(X, y)
10
11 y_pred = per_clf.predict([[2, 0.5]])
12
13 print(y_pred)

输入如下:

[1]

与逻辑回归相比,感知器不能输出概率

多层感知器

MLP 的组成:

  • 1 个输入层
  • 1 个以上的隐藏层
  • 1 个输出层

当隐藏层多于 2 层时,又叫深度神经网络(Deep Neural Network, DNN)。

训练 MLP 的算法是后馈训练算法(backpropagation training algorithm)。后馈训练算法也就是使用反向自动求导(reverse-mode autodiff)的梯度下降法

1. 前馈:在每个连接层计算每个神经元的输出。
2. 计算网络的输出误差,并且计算最后一层的每个神经元对于误差的贡献程度。
3. 继续计算上一层的每个神经元对于误差的贡献程度。
4. 直到算法到达输入层。

为了很好地实施后馈训练算法,D. E. Rumelhart 对于神经网络架构做了重大的改变:把阶跃函数改为了几率函数(logistic function)$f(z)=\frac{1}{1+e^{-z}}$。因为阶跃函数导数都为 0,无法实施梯度下降;而几率函数处处可导。

除了用几率函数作为激活函数之外,还有:

- 双曲正切函数:tanh (z) = 2σ(2z) – 1。S 形状、连续、可导,不过输出值在 -1 到 1 之间,使得训练开始时神经层输出更加正则化,常常加速收敛。
- ReLU 函数:ReLU (z) = max (0, z)。连续,但是在 z=0 处不可导,可能使梯度下降震荡。但在实际中,ReLU 效果不错,速度也快。此外,由于它没有最大值,可以缓解一些梯度下降的问题。

MLP 常常用于分类问题,每个输出对应一个不同的二值类别。如果类别太多了(比如数字图片 0~9),输出层常常用另一个共用的激活函数来代替:Softmax 函数

参考

  • 《Neural networks and deep learning》by Aurélien Géron

转载于:https://www.cnblogs.com/noluye/p/11246251.html

神经网络入门回顾(感知器、多层感知器)相关推荐

  1. 深度学习入门系列1:多层感知器概述

    本人正在学习<deep learning with python>–Jason Brownlee,有兴趣的可以一起学习. 仅供学习参考,不做商用! 大家好,我技术人Howzit,这是深度学 ...

  2. 神经网络与机器学习 笔记—多层感知器(MLP)

    多层感知器(MLP) Rosenblatt感知器和LMS算法,都是单层的并且是单个神经元构造的神经网络,他们的局限性是只能解决线性可分问题,例如Rosenblatt感知器一直没办法处理简单异或问题.然 ...

  3. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-多层感知器(神经网络)与激活函数概述-04

    多层感知器 计算输入特征得加权和,然后使用一个函数激活(或传递函数)计算输出. 单个神经元 多个神经元 单层神经元缺陷 多层感知器 多层感知器 激活函数 relu:曲线如下图,假如过来的函数是x当x小 ...

  4. 深度学习02-神经网络(MLP多层感知器)

    文章目录 神经网络 简介 学习路径 分类 多层感知器(MLP) 神经网络认识 两层神经网络 输入层 从输入层到隐藏层 从隐藏层到输出层 激活层 输出的正规化 如何衡量输出的好坏 反向传播与参数优化 过 ...

  5. MP模型、单层感知器、多层感知器的理解

    神经网络基础 序言 MP模型 1.逻辑与: 2.逻辑或: 3.逻辑异或: 单层感知器 多层感知器(BP) 序言 关于神经网络的内容已经学习了很多,也发现了一些问题,而这些问题是因为基础不牢靠引起的,所 ...

  6. 多层感知器用实际例子和Python代码进行解释情绪分析

    多层感知器用实际例子和Python代码进行解释情绪分析 多层感知器是一种学习线性和非线性数据之间关系的神经网络. 这是专门介绍深度学习系列的第一篇文章,深度学习是一组机器学习方法,其根源可以追溯到20 ...

  7. 多层感知器(MLP)

    多层感知器 多层感知器(Multilayer Perceptron,缩写MLP)是一种前向结构的人工神经网络,映射一组输入向量到一组输出向量.MLP可以被看作是一个有向图,由多个的节点层所组成,每一层 ...

  8. 逻辑斯第回归、softmax分类与多层感知器

    本专栏将推出一系列深度学习与图像处理相关的教程文章.注重原理精讲和代码实现.实现框架将重点选择Tensorflow或Pytorch.本讲从逻辑斯第回归入手,然后讲解softmax分类器,最后讲解多层感 ...

  9. keras从入门到放弃(六)多层感知器(神经网络)

    多层感知器(神经网络) 从线性回归模型和对数几率回归模型本质上都是单个神经元 计算输入特征的加权 使用一个激活函数计算输出 单个神经元(二分类) 多和神经元(多分类) 但是单层神经元有缺陷 无法拟合& ...

最新文章

  1. 《多处理器编程的艺术》读书笔记(2)--- 互斥
  2. iOS开发网络篇—NSURLConnection基本使用(一)
  3. Object-C 如何把一个时间戳转换为一个标准的时间格式?
  4. 设计模式学习笔记(9)——代理模式
  5. Springmvc文件上传(servlet3.0)/下载(ssm)以及坑点
  6. 盘点618 .NET 程序员必“败”书单
  7. 遗传算法可用什么算法代替_获取可用密码算法的列表
  8. AutoCAD 2021 macOS Big Sur 11版 注册机无法打开?注册机怎么使用?
  9. 2021年高考成绩什么时候查询辽宁,2021年辽宁高考成绩什么时候几点可以查
  10. 移动硬盘拒绝访问找到数据的法子
  11. 深入PHP内核之ZVAL
  12. 深挖基于 CSS 的变换与动画技术
  13. json字符串中的大括号转义传到后台_string.format格式化字符串中转义大括号“{}”...
  14. Hadoop大数据开发基础课后答案
  15. 电场在计算机专业的应用,电磁学在电力系统中的应用
  16. Mac系统安装Photoshop CS6教程
  17. 小程序tabBar右上角添加角标
  18. STATA长面板数据分析
  19. 使用netron对mnist网络结构分析
  20. HTML基本知识学习 2021-04-08

热门文章

  1. 小学四则运算结对项目报告(GUI)
  2. cocos2dx中使用iconv转码(win32,iOS,Android)
  3. [转]automaticallyAdjustsScrollViewInsets(个人认为iOS7中略坑爹的属性)
  4. 提升速度与精度,FedReg: 减轻灾难性遗忘加速联邦收敛(ICLR 2022)
  5. Kaggle新赛:自动检测赛场上的头盔撞击事件
  6. “3D几何与视觉技术”全球在线研讨会第四期~几何深度学习
  7. CVPR2020 | 阿里结构感知3D目标检测,KITTI BEV 排行榜第一!
  8. php写语音朗读,详解在网页上通过JS实现文本的语音朗读
  9. Python精简入门级学习(二)
  10. 《是碰巧还是执着?python所阅读的每一场知识点,唯一的共同点就是——参赛选手中,有详解Python的装饰器!》