本文是接着上一篇深度学习之 6 线性回归实现2_水w的博客-CSDN博客
目录
深度前馈网络
人工神经网络
1、人脑神经网络
2、一个解决异或问题的简单网络
3、神经网络结构
前馈神经网络
1、前馈神经网络的结构和表示:
2、隐藏单元——激活函数:
3、输出单元
4、前馈神经网络参数学习
反向传播算法
1、微分链式法则
2、反向传播算法
◼ 代码过程:
◼ 人类大脑由 神经元 、 神经胶质细胞 、 神经干细 胞 和 血管 组成◼ 神经元(neuron) 也叫神经细胞(nerve cell),是人脑神经系统中最基本的单元◼ 人脑神经系统包含近 860亿 个神经元◼ 每个神经元有上千个 突触 与其他神经元相连◼ 人脑神经元连接成巨大的复杂网络,总长度可达 数千公里
(1)神经元结构:
(2)神经元之间的信息传递:
(3)人工神经元:
(4)人工神经网络:
(1)感知器求解异、或、非及异或问题:
输入为[1; 2]的单层单个神经元(输入层不计入层数),采用阶跃激活函数。
(2)双层感知器 —— 一个简单的神经网络
◼ 输入仍为[1; 2],让网络包含两层:
◼ 给出异或问题的一个解:
◼ 解释:非线性空间变换
(1)万能近似定理:
(2)万能近似定理应用到神经网络:
◼ 根据万能近似定理,对于具有 线性输出层 和 至少一个 使用“挤压”性质的激活函数的 隐藏层 组成的神经网络,只要其隐藏层神经元的数量足够多,它就可以以任意精度来近似任何一个定义在实数空间中的有界闭集函数。◼ 神经网络 可以作为一个 “万能”函数 来使用,可以用来进行复杂的特征转换,或逼近一个复杂的条件分布。
(3)为什么要深度:
◼ 单隐层网络 可以近似任何函数,但其 规模可能巨大✓ 在最坏的情况下,需要 指数级的隐藏单元 才能近似某个函数[Barron, 1993]◼ 随着 深度的增加 ,网络的 表示能力呈指数增加◼ 更深层的网络具有更好的泛化能力:模型的性能随着随着深度的增加而不断提升
◼ 参数数量的增加 未必 一定会带来模型效果的提升:更深的模型往往表现更好,并不仅仅是因为模型更大。 想要学得的函数应该由许多更简单的函数复合在一起而得到。
(4)常见的神经网络结构:
其他结构设计方面的考虑:除了深度和宽度之外,神经网络的结构还具有其他方面的多样性。
- 改变层与层之间的连接方式
✓ 前一层的每个单元仅与后一层的一个小单元子集相连✓ 可以极大地减少参数的数量✓ 具体的连接方式高度依赖于具体的问题
- 增加跳跃连接
✓ 从第 层与第 + 2 层甚至更高层之间建立连接✓ 使得梯度更容易从输出层流向更接近输入的层,利于模型优化
◼ 前馈神经网络(Feedforward Neural Network, FNN)是最早发明的简单人工神经网络前馈神经网络也经常被称为 多层感知器 (Multi-Layer Perceptron, MLP),但这个叫法并不十分合理( 激活函数通常并不是感知器所采用的不连续阶跃函数 );◼ 第0层为输入层,最后一层为输出层,其他中间层称为隐藏层;◼ 信号从输入层向输出层单向传播,整个网络中无反馈,可用一个 有向无环图 表示;
◼ 前馈神经网络的符号表示 :
◼ 隐藏单元的设计是一个非常活跃的研究领域,但是目前还没有很明确的指导原则◼ 激活函数的性质要求:✓ 连续并可导 (允许少数点上不可导)的 非线性 函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数。✓ 激活函数及其导函数要尽可能的简单 ,有利于提高网络计算效率。✓ 激活函数的 导函数的值域要在一个合适的区间内 ,不能太大也不能太小,否则会影响训练的效率和稳定性。
(1)Sigmoid型函数:
◼整流线性单元(ReLU)函数及其扩展 :
◼其他激活函数 :
✓ Sigmoid输出单元常用于输出Bernoulli分布✓ 适合二分类问题
✓ Softmax输出单元常用于输出Multinoulli分布✓ 适合多分类问题
◼ 学习准则
◼ 梯度下降✓ 基于学习准则和训练样本,网络参数可以通过梯度下降法进行学习,✓ 通过链式法则可以逐一对每个参数求偏导,但是效率低下;✓ 在神经网络的训练中经常使用 反向传播算法 来高效地计算梯度;
给定一个样本(, ),假设神经网络输出为y^,损失函数为(, ^),采用梯度下降法需要计算 损失函数关于每个参数的偏导数。
◼ 如何计算前馈神经网络中参数的偏导数 —— 反向传播(Back Propagation,BP)算法
考虑求第层中参数()和()的偏导数,由于() = ()(−1) + (),根据链式法则:
◼