β的深度学习笔记(一) 前馈神经网络
前馈神经网络
首先我先寻找了知乎中的一个介绍进行学习:https://www.zhihu.com/question/22553761/answer/126474394
来自知乎学者YJango的回答:https://www.zhihu.com/people/YJango,以及其它文章,如果有侵权可以联系删除。
前馈神经网络是在输入层和输出层之间还存在一些线性模型,并且在这两个线性模型后都加入一个ReLU的非线性函数(又叫激活函数,保持小于0,则输出0),称为隐藏层(hidden layers),隐藏层可以增加很多个(线性模型+非线性函数)的组合。隐藏层的维度和层数可以任意选择,越多则拟合能力越强。再最后输出到输出层(将维度调整到输出维度,也可以加非线性函数)。
基础:
每层神经网络的数学理解:用线性变换跟随着非线性变化,将输入空间投向另一个空间。
每层神经网络的物理理解:通过现有的不同物质的组合形成新物质。
线性可分视角:神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。 增加节点数:增加维度,即增加线性转换能力。 增加层数:增加激活函数的次数,即增加非线性转换次数。
特别说明:二维情景:平面的四个象限也是线性可分。但下图的红蓝两条线就无法找到一超平面去分割。
神经网络的解决方法依旧是转换到另外一个空间下,用的是所说的5种空间变换操作。比如下图就是经过放大、平移、旋转、扭曲原二维空间后,在三维空间下就可以成功找到一个超平面分割红蓝两线 (同SVM的思路一样)。
我的理解是:在线性分割时,有时候我们找不到一个超平面去分割,所以需要不断的改变(进行一层的转换)形成一个新的空间,再进行直接的分割。
在自然界是有分子组成舞台,所以我们可以进行图像识别或者人脸识别,由像素组成菱角再组成五官最后到不同的人脸。每一层代表不同的不同的物质层面 (如分子层)。而每层的W存储着如何组合上一层的物质从而形成新物质。
物质组成视角:神经网络的学习过程就是学习物质组成方式的过程。增加节点数:增加同一层物质的种类,比如118个元素的原子层就有118个节点。 增加层数:增加更多层级,比如分子层,原子层,器官层,并通过判断更抽象的概念来识别物体。
神经网络的训练
知道了神经网络的学习过程就是学习控制着空间变换方式(物质组成方式)的权重矩阵后,接下来的问题就是如何学习每一层的权重矩阵W。
我们要我们的输出要接近预测值,就可以通过比较当前网络的预测值和我们真正想要的目标值,再根据两者的差异情况来更新每一层的权重矩阵(比如,如果网络的预测值高了,就调整权重让它预测低一些,不断调整,直到能够预测出目标值)。因此就需要先定义“如何比较预测值和目标值的差异”,这便是损失函数或目标函数(loss function or objective function),用于衡量预测值和目标值的差异的方程。
所用的方法是梯度下降(Gradient descent):通过使loss值向当前点对应梯度的反方向不断移动,来降低loss。一次移动多少是由学习速率(learning rate)来控制的。
但梯度下降有两个难题:局部极小值和梯度的计算。
在局部极小值时我们要跳出这个区域,从而得到一个全局最优值。所提出的方法有:调节步伐:调节学习速率,使每一次的更新“步伐”不同。优化起点:合理初始化权重(weights initialization)、预训练网络(pre-train),使网络获得一个较好的“起始点”。【由于本人研究课题为进化算法与深度学习的应用,所以我认为可以使用优秀的优化算法进行优化权重,当然这个方面已经有很多人做过了】
梯度的计算:该如何快速计算梯度?如何更新隐藏层的权重?
解决方法是:计算图:反向传播算法。【有的优化算法是和反向传播算法进行结合,来提高梯度的计算速度:文章题目
文章来源: blog.csdn.net,作者:αβγθ,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_38022166/article/details/106098671
- 点赞
- 收藏
- 关注作者
评论(0)