一.神经网络
我们所说的深度学习,其最基础最底层的模型称之为"神经网络"(neural network),因为我们希望机器能够像我们人类大脑的神经网络处理事件一样去解决问题,最终达到"人工智能"的效果。
二.神经元
神经网络的基本单位叫做神经元,是我们人类思考的基础。机器模拟的神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。当我们用“神经元”组成网络以后,描述网络中的某个“神经元”时,我们更多地会用“单元”(unit)来指代。同时由于神经网络的表现形式是一个有向图,有时也会用“节点”(node)来表达同样的意思。
三.单层神经网络
单层神经网络也叫做感知器(Perceptron),其有两个层次的神经元节点。分别是输入层和输出层。输入层里的"输入单元"只负责传输数据,不做计算。输出层里的"输出单元"则需要对前面一层的输入进行计算,我们把需要计算的层次称之为"计算层",所以这种仅有一个计算层的网络称之为"单层神经网络"。
四.层级运算
神经网络的输入层和输出层都可以有多个神经元,也就是数据的维度。从神经网络的前一层至后一层的运算,我们大概可以认为是一种矩阵运算。其本质是M(输出维度)个含有N(输入维度)个变量的线性代数方程组。
五.权重和阈值
我们知道神经网络的输入层是有多个的神经元的,不同的输入对于输出结果的影响肯定也各不相同,不同的输入对应着不同的权重,阈值代表着类别的临界点。感知器类似一个逻辑回归模型,以线性分类任务为例:阈值就相当于决策分界。例如二维的数据平面中一条直线,3维数据的一个平面,n维数据的一个n-1维超平面。
六.异或分类
1969年,人工智能界的大佬Minsky出版了一本叫《Perceptron》的书,里面用详细的数学证明了感知器的弱点,尤其是XOR(异或)分类,我们可以把异或分类看作一个正方形,4个顶点分别为(0,0),(0,1),(1,0),(1,1)。即值为0,1,1,0。其对角属于一类,显然,无法找出一条直线作为决策边界可以使(0,0)和(1,1)在一个区域,而(1,0)和(0,1)在另一个区域。这就是单层神经网络的软肋。
六.两层神经网络
由于上述原因,两层神经网络就此诞生。两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层,也叫隐藏层。此时,中间层和输出层都是计算层。输出层神经元是对中间层神经元形成的决策边界构造线性组合。比如说上述问题,我们设置中间层两个神经元,其阈值分别为(0,1)和(1,0)的切角,最终的输出层再进行整合。那么针对于(0,0),(0,1),(1,0),(1,1)四个输入,中间层的两个神经元分别输出为(1,0,1,1)和(1,1,0,1),最终输出层输出为(0,1,1,0)。我们也可以理解成,中间层将原有的一条线性阈值变成了若干条,再由最终输出层进行整合。两层神经网络通过两层的线性模型模拟了数据内真实的非线性函数。所以从理论上来说,两层神经网络可以无限逼近任意连续函数。也就是说,面对复杂的非线性分类任务,两层神经网络也可以分类的很好。
七.多层神经网络
与两层神经网络原理一样,将中间的层数增多,即成为了多层神经网络,随着层数的深入,函数的模拟能力变的更强,每一层对于前一层次的抽象表示更深入。例如第一个隐藏层学习到的是“边缘”的特征,第二个隐藏层学习到的是由“边缘”组成的“形状”的特征,第三个隐藏层学习到的是由“形状”组成的“图案”的特征,最后的隐藏层学习到的是由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。每增加一层就相当于增加一层矩阵运算。
八.硬件条件
随着神经网络的深入,对硬件的要求也会显著的提高,这也就是当初内个年代只有单层神经网络的原因。对于多层神经网络,一般都是通过高性能GPU或者是集群来提供硬件支持。
九.相关学习资源
http://www.ruanyifeng.com/blog/2017/07/neural-network.html
https://www.cnblogs.com/subconscious/p/5058741.html
共同学习,写下你的评论
评论加载中...
作者其他优质文章