《深入浅出深度学习:原理剖析与python实践》第八章前馈神经网络(笔记)
8.1 生物神经元(BN)结构
1、人脑中有100亿-1000亿个神经元,每个神经元大约会和其他1万个神经元相连
2、细胞体:神经元的主体,细胞体=细胞核+细胞质+细胞膜,存在膜电位
3、树突:从细胞体向外延伸出许多突起的神经纤维。输入端
4、轴突:细胞体伸出的最长的一条突起,也叫神经纤维。长而细。末端细分支为神经末梢。输出端
5、突触:一个神经元轴突的神经末梢和另一个神经元的细胞体或树突进行通信连接。
6、神经传导流程:多个树突接受输入信息,输入信息累加大于某一个特定阈值,信息通过轴突传播出去,神经元被激活。否则,若输入信息小于阈值,神经元处于抑制状态。
8.2 人工神经元模型(AN/M-P模型)
1、AN处理数据流程
预激活阶段:接受来自其他m个神经元传递过来的输入信号,这些输入信号通过与相应权重进行加权求和传递给下一阶段
h = b + ( i∑wi × xi ) i=1...m
第二阶段:将预激活的加权结果传递给激活函数,经过激活函数处理,预激活的数据被压缩到一个范围区间内,数值的大小决定神经元处于活跃状态还是抑制状态,输出结果传递给下一层的神经元
a = ƒ ( h )
生物神经元 | 人工神经元 |
细胞核 | 神经元 |
树突 | 输入 |
轴突 | 输出 |
突触 | 权重 |
8.3 单层感知机
1、单层感知机是1957年由计算机科学家Rosenblatt提出的神经网络模型,由输入层和输出层构成
2、Perceptron由m个输入神经元和n个输出神经元构成,是一个全连接的二分图结构。
(1)单层感知机在输入层接收数据,把输入数据与相应权重参数累加
hk = bk + ( i∑wik × xi ) k = 1...n. i = 1...m
(2)将累加结果输入到激活函数中,单层感知机的输出层可以采用Logistic/softmax函数作为最后的结果输出
yk = softmax(hk) k = 1...n
3、感知机的工作原理:本质是在高维空间中,构造出合理的边界超平面(b + ∑wixi),把不同类别的数据集分离。对于线性可分或近似线性可分的数据集有很好的效果。对于线性不可分数据集,效果不理想。
8.4 多层感知机
1、理论依据:1991年Kurt Hornik提出的全局逼近定理----对于含有一个隐藏层的前馈神经网络,如果隐藏层可以由任意多的神经元构成,那么神经网络能够逼近实数范围内的任意连续函数。
简而言之,对于分类问题,隐藏层的作用就是把线性不可分的数据,通过线性变换(预激活阶段)和非线性的激活(激活阶段)的操作,使得数据在输出层变成线性可分
2、神经网络中包含的隐藏层越深,隐藏层包含的神经元越多,它能提取的特征就越丰富,就具备更强大的学习能力,但是实际上,随着网络逐渐加深,神经网络的性能在达到一个极值后(一般两到三层),就停止提升。
8.5 激活函数
1、激活态:处在活跃状态的神经元
2、抑制态:处在非活跃状态的神经元
3、隐藏层神经元中引入了激活函数使MLP模型能力提升。如果多层神经网络只添加隐藏层,而没有添加激活函数,或者激活函数是线性函数,那么MLP等价于单层感知机。
4、激活函数在神经网络中的作用
(1)非线性的激活函数使得模型能够处理更加复杂的非线性数据集问题,提高了模型的学习能力
(2)通过激活函数的处理,神经元被划分为激活态和抑制态,因此,在训练的过程中,能够把重点的神经元置为激活态,把相对无关的神经元置为抑制态,自动特征提取。
5、激活函数性质:非线性、可微性、单调性
6、常用激活函数
(1)阶跃函数:不连续、不光滑、不可导
(2)sigmoid函数和tanh函数:有缺陷
(3)近似生物神经元的激活函数:例ReLU和softplus
《深入浅出深度学习:原理剖析与python实践》第八章前馈神经网络(笔记)的更多相关文章
- 推荐《深入浅出深度学习原理剖析与python实践》PDF+代码
<深入浅出深度学习原理剖析与Python实践>介绍了深度学习相关的原理与应用,全书共分为三大部分,第一部分主要回顾了深度学习的发展历史,以及Theano的使用:第二部分详细讲解了与深度学习 ...
- 深入浅出深度学习:原理剖析与python实践_黄安埠(著) pdf
深入浅出深度学习:原理剖析与python实践 目录: 第1 部分 概要 1 1 绪论 2 1.1 人工智能.机器学习与深度学习的关系 3 1.1.1 人工智能——机器推理 4 1.1.2 机器学习—— ...
- 参考《深度学习原理与应用实践》中文PDF
读国内关于深度学习的书籍,可以看看<深度学习原理与应用实践>,对深度学习原理的介绍比较简略(第3.4章共18页).只介绍了"神经网络"和"卷积神经网络&quo ...
- 学习《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码
入门神经网络深度学习,推荐学习<深度学习入门:基于Python的理论与实现>,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白.理解神经网络,很容易就 ...
- 给深度学习入门者的Python快速教程
给深度学习入门者的Python快速教程 基础篇 numpy和Matplotlib篇 本篇部分代码的下载地址: https://github.com/frombeijingwithlove/dlcv_f ...
- 深度学习入门者的Python快速教程 - 基础篇
5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
- 30个深度学习库:按Python、C++、Java、JavaScript、R等10种语言分类
30个深度学习库:按Python.C++.Java.JavaScript.R等10种语言分类 包括 Python.C++.Java.JavaScript.R.Haskell等在内的一系列编程语言的深度 ...
随机推荐
- 【插件开发】—— 8 IPreferenceStore,插件的键/值存储!
前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭配 6 SWT复杂空间与布局搭配 7 SWT布局详解 ...
- float(double)快速转换int的方法
自己写一个软件渲染器的时候,无意中发现float转换int非常耗时,于是查阅文章,这才有了这个命题,以前不清楚还有这么个机制.网上看了很多文章,搜索到了一个数字6755399441055744,这个是 ...
- CF1119F Niyaz and Small Degrees
题意 给你\(n\)个点的树,边有边权 问使得所有的点度数都小于等于\(x\)的最小删边的代价 \([x \in 0...n-1]\) 题解 首先对于每个\(x\) 可以有一个\(O(nlogn)\) ...
- UOJ228 简单数据结构练习题
Description 传送门 维护一个数列, 有以下操作: 对[l,r]同时加上x 把[l,r]开根后下取整. 查询[l,r]之和 n,m \(\leq\)$ 100000, $\(a_i,x \l ...
- HDU 5558 后缀数组
思路: 这是一个错误的思路, 因为数据水才过= = 首先求出来后缀数组 把rank插到set里 每回差i两边离i近的rank值,更新 如果LCP相同,暴力左(右)继续更新sa的最小值 //By Sir ...
- [BZOJ1061][Noi2008]志愿者招募 线性规划+费用流
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1061 根据题意列方程,然后用网络流解线性规划. 题解直接贴ByVoid的吧,太神了:htt ...
- e.Row.RowType == DataControlRowType.DataRow详解(转)
代码语句如下: protected void OnRowCreate(object sender, GridViewRowEventArgs e) { if (e.Row.RowT ...
- 使用Kotlin,抛弃findViewById
有没有觉得Android的findViewById挺烦人的.使用Kotlin可以让你彻底抛弃这个烦恼 步骤1.在build.gradle(Module:app)中添加如下一句话 这个在老一点版本的An ...
- 10.3 Implementing pointers and objects and 10.4 Representing rooted trees
Algorithms 10.3 Implementing pointers and objects and 10.4 Representing rooted trees Allocating an ...
- [转]Git分支管理策略
如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control System). 眼下最流行的"版本管理系统",非Git莫属. 相比同类软件, ...