从神经元谈到深度神经网络
序列文章 上文《一文速览机器学习的类别(Python代码)》 提到逻辑回归并做了简单介绍。本文将从神经元到逻辑回归模型结构,并将其扩展到深度深度网络模型。
一、谈谈智慧
对于人类智慧奥秘的探索,不同时代、学科背景的人对于智慧的理解及其实现方法有着不同的思想主张。有的主张用显式逻辑体系搭建人工智能系统,即符号主义。有的主张用数学模型模拟大脑组成以实现智慧,即联结主义,这也就是我们本文讨论的方向。
那大脑为什么能够思考?科学家发现,原因在于人体的神经网络,而神经网络的基本组成就是神经元:
1、外部刺激通过神经元的神经末梢,转化为电信号,传导到神经元。
2、神经元的树突接收电信号,由神经元处理是否达到激活阈值再输出兴奋或者抑制电信号,最后由轴突将信号传递给其它细胞。
3、无数神经元构成神经中枢。神经中枢综合各种信号,做出判断。
4、 人体根据神经中枢的指令,对外部刺激做出反应。
二、神经元
既然智慧的基础是神经元,而正因为神经元这些特点才使大脑具有强大的 “运算及决策的能力”,科学家以此为原理发明了人工神经元数学模型,并以神经元为基础而组合成人工神经网络模型。(注:下文谈到的神经元都特指人工神经元)
如上图就是人工神经元的基本结构。它可以输入一定维数的输入(如:3维的输入,x1,x2, x3),每个输入都相要乘上相应的权重值(如:w0,w1,w2),乘上每一权重值的作用可以视为对每一输入的加权,也就是对每一输入的神经元对它的重视程度是不一样的。
接下来神经元将乘上权重的每个输入做下求和(也就是加权求和),并加上截距项(截距项b可以视为对神经元阈值的直接调整),最后由激活函数(f)非线性转换为最终输出值。
激活函数的种类很多,有sigmoid,tanh,sign,relu,softmax等等(下一专题会讨论下激活函数)。激活函数的作用是在神经元上实现一道非线性的运算,以通用万能近似定理——“如果一个前馈神经网络具有线性输出层和至少一层隐藏层,只要给予网络足够数量的神经元,便可以实现以足够高精度来逼近任意一个在 ℝn 的紧子集 (Compact subset) 上的连续函数”所表明,激活函数是深度神经网络学习拟合任意函数的前提。
三、神经元到逻辑回归
单个神经元且其激活函数为sigmoid时,既是我们熟知的逻辑回归的模型结构。
逻辑回归是一种广义线性的分类模型且其模型结构可以视为单层的神经网络,由一层输入层、一层仅带有一个sigmoid激活函数的神经元的输出层组成,而无隐藏层。(注:计算网络层数不计入输入层)
在逻辑回归模型结构中,我们输入数据特征x,通过输出层神经元激活函数σ(sigmoid函数)将输入的特征经由sigmoid(wx + b)的计算后非线性转换为0~1区间的数值后输出。学习训练过程是通过梯度下降学到合适的参数w的模型 Y=sigmoid(wx + b),使得模型输出值Y与实际值y的误差最小。
四、逻辑回归到深度神经网络
基于前面的介绍可以知道,神经网络也就是神经元按层次连接而成的网络,逻辑回归是单层的神经网络,当我们给仅有输入层及输出层的单层神经网络中间接入至少一层的隐藏层,也就是深度神经网络了。
深度神经网络包含了三种网络层:输入层、隐藏层及输出层。
- 输入层:为数据特征输入层,输入数据特征个数就对应着网络的神经元数。
- 隐藏层:即网络的中间层,隐藏层层数可以为0或者很多层,其作用接受前一层网络输出作为当前的输入值,并计算输出当前结果到下一层。隐藏层是神经网络性能的关键,通常由含激活函数的神经元组成,以进一步加工出高层次抽象的特征,以增强网络的非线性表达。隐藏网络层数直接影响模型的拟合效果。
- 输出层:为最终结果输出的网络层。输出层的神经元个数代表了分类标签的个数(注:在做二分类时,如果输出层的激活函数采用sigmoid,输出层的神经元个数为1个;如果采用softmax分类器,输出层神经元个数为2个)
数据特征(x)从输入层输入,每层的计算结果由前一层传递到下一层,最终到输出层输出计算结果。每个网络层由一定数量的神经元组成,神经元可以视为一个个的计算单元,对输入进行加权求和,故其计算结果由神经元包含的权重(即模型参数w)直接控制,神经元内还可以包含激活函数,可以对加权求和的结果进一步做非线性的计算,如sigmoid(wx + b)。