多层感知器及常见激活函数-深度神经网络DNN及计算推导
多层感知器
在之前的博客中,我们了解到,感知器(指单层感知器)具有一定的局限——无法解决异或问题,即线性不可分的问题。
将多个单层感知器进行组合,就可以得到一个多层感知器(MLP——Multi-Layer Perceptron)结构。 多层感知器包含输入层,一个或多个隐藏层以及一个输出层。每层的神经元与下一层进行完全连接。
如果网络中包含一个以上的隐层,则称其为深度人工神经网络。
说明:
- 通常我们说的神经网络的层,指具有计算的层,因为输入层没有计算,因此,通常输入层不计入神经网络的层次。
- 多层感知器(深度神经网络)可以解决线性不可分问题。
激活函数
激活函数概念
在神经网络中,激活函数用来为每一个结点(神经元)定义输出,该输出可以作为下一个结点(神经元)的输入。
激活函数的作用
激活函数提供网络的非线性建模能力。如果不使用激活函数,即使是多层神经网络,也无法解决线性不可分的问题。
激活函数的特征
激活函数的一些属性:
非线性 可以解决非线性可分问题。当激活函数是线性时,多层神经网络相当于单层神经网络。
范围性 当激活函数是有限范围时,基于梯度的训练方法往往更稳定,因为模式呈现仅显着影响有限的权重。当范围无限时,训练通常更有效,因为模式呈现显着影响大多数权重。在后一种情况下,通常需要较小的学习率。
可微性 该属性用来实现基于梯度的优化方法。
单调性 当激活函数是单调的时,与单层模型相关联的误差表面保证是凸的。
平滑性并且具有单调导数 在某些情况下,这些函数已被证明更为普遍。
原点中心化
当激活函数具有此属性时,使用较小的随机值初始化权重,可以让神经网络学习更加有效(更有利于权重的更新)。否则,在初始化权重时必须特别小心。如果函数f满足以下条件,则表明函数是原点中心化的。f(0)=0f(0)=0
f′(0)=1f′(0)=1
导函数在0点处连续
常见激活函数
常见的激活函数如下:
- 阶跃函数
- sigmoid函数
- tanh函数
- relu函数
练习
画出各种激活函数在[-10, 10]区间的图像。
import matplotlib.pyplot as plt
import numpy as npx = np.arange(-10, 10, 0.1)
y = np.where(x >= 0, 1, 0)
plt.plot(x, y)
x = np.arange(-10, 10, 0.1)
y = 1 / (1 + np.exp(-x))
plt.plot(x, y)
x = np.arange(-10, 10, 0.1)
y = (np.exp(x) - np.exp(-x)) /(np.exp(x) + np.exp(-x))
plt.plot(x, y)
x = np.arange(-10, 10, 0.1)
y = np.where(x >= 0, x, 0)
plt.plot(x, y)
学习步骤
多层感知器(深度神经网络DNN)的学习过程步骤如下:
- 从输入层开始,通过网络进行正向传播(forward propagation),并计算输出。
- 根据输出与真实值,计算误差。
- 反向传播(back propagation)误差,根据误差值,更新每层的权重。
人工神经网络学习过程
前向传播
计算误差
反向传播
**
权重的初始化
注意,在深度神经网络中,权重一定不能全部初始化为0,否则,在正向传播时,所有的神经元都会得到相同的值,同时,在反向传播时,权重也会更新相同的值。这会使得神经网络拥有不同权重的意义不复存在。
多层感知器及常见激活函数-深度神经网络DNN及计算推导相关推荐
- 深度学习之多层感知器及激活函数
目录 一.多层感知机MLP 1.1定义 二.MLP实现非线性分类 2.1MLP实现与门 2.2MLP实现非与门 2.3MLP实现或门 2.4MLP实现同或门 三.MLP实现多分类 四.激活函数 4.1 ...
- 深度学习02-神经网络(MLP多层感知器)
文章目录 神经网络 简介 学习路径 分类 多层感知器(MLP) 神经网络认识 两层神经网络 输入层 从输入层到隐藏层 从隐藏层到输出层 激活层 输出的正规化 如何衡量输出的好坏 反向传播与参数优化 过 ...
- 【深度学习BookNote】多层感知器(multi-layer perceptron)
多层感知器(multi-layer perceptron) 神经网络的变种目前有很多,如误差反向传播(Back Propagation,BP)神经网路.概率神经网络.卷积神经网络(Convolutio ...
- 深度学习入门系列1:多层感知器概述
本人正在学习<deep learning with python>–Jason Brownlee,有兴趣的可以一起学习. 仅供学习参考,不做商用! 大家好,我技术人Howzit,这是深度学 ...
- 人工神经网络:多层感知器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.今日所学 二.今日重点 前言 虽然异或问题成为感知器和早期神经网络的阿喀琉斯之踵,但它并非无解的问题.恰恰相反,解 ...
- 多层感知器神经网络模型,人工智能神经网络模型
有哪些深度神经网络模型? 目前经常使用的深度神经网络模型主要有卷积神经网络(CNN).递归神经网络(RNN).深信度网络(DBN).深度自动编码器(AutoEncoder)和生成对抗网络(GAN)等. ...
- 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-多层感知器(神经网络)与激活函数概述-04
多层感知器 计算输入特征得加权和,然后使用一个函数激活(或传递函数)计算输出. 单个神经元 多个神经元 单层神经元缺陷 多层感知器 多层感知器 激活函数 relu:曲线如下图,假如过来的函数是x当x小 ...
- 深度学习(一)多层感知器MLP/人工神经网络ANN
目录 一.定义和公式 1. 多层感知器 Multi Layer Perceptron MLP 2. MLP实现非线性分类 3. Keras介绍 二. 代码实战 1. 建立MLP模型实现二分类 1.1 ...
- OpenCV 神经网络 - 多层感知器(MLP)
一.简述 人工神经网络(ANN) 简称神经网络(NN),能模拟生物神经系统对物体所作出的交互反应,是由具有适应性的简单单元(称为神经元)组成的广泛并行互连网络. 二.M-P神经元 "M-P神 ...
最新文章
- 计算机无法转换输入发,电脑输入法切换不了怎么办
- Spring Cloud 覆写远端的配置属性
- Tomcat中部署后JspFactory报异常的解决方案
- 使用memocache
- 用VC写Assembly代码(6)--附录1[堆和栈的区别]
- 数字表达_神奇的数字英语表达一定会让你大吃一惊
- java中nio流_Java输入输出流IO介绍(与NIO比较)
- Android开发手记(23) Notification
- R语言data manipulation学习笔记之创建变量、重命名、数据融合
- python文件处理——文件读写
- python解释器的下载与安装
- 13款最佳免费网络监控工具,网站监控软件的总结。
- Midas GTS NX To 3DEC网格转换程序
- java web张龙_圣思园张龙javaWeb视频教程全集配套源码和PDF课件
- python制作动态表情包,用 Python 开发一个【GIF表情包制作神器】
- linux 光盘刻录命令,Linux命令刻录光盘
- LeetCode 237. 删除链表中的节点
- JSP中把动态页面转换为静态页面
- 十年磨一剑,两万字长文深剖析分享IC验证经验
- 查询并处理占用8080端口进程
热门文章
- 如何使用sizeof获取指针指向数组的长度
- WaterMark 1.0
- 微机中的实际地址、物理地址、有效地址、逻辑地址之间的区别
- vue双向绑定是如何实现的
- 华盛顿大学西雅图分校计算机专业排名,2020年华盛顿大学西雅图分校世界排名...
- calendar.getActualMaximum(calendar.DAY_OF_MONTH)的坑点
- anchor机制讲解
- 环境实验耐高温、耐低温、温度变化、恒定湿热、湿热循环
- linux 下dump文件放在那里,怎么查看dump文件目录
- CSS3视窗单位vw、vh、vmin、vmax说明