其实一开始对于机器学习还不了解的时候,别人问我什么是机器学习的时候,我会毫不犹豫的说神经网络吖~hhh。而目前机器学习之所以成为大众的聚焦点也是得益于神经网络的升级版——深度学习。深度学习可以看作是一组算法的组合,这些算法能够高效地进行多层人工神经网络训练。深度学习常见的例子有:谷歌图片搜索和谷歌翻译等。
本博文会先介绍神经网络,然后再简单的介绍一下深度学习。
受生物学的启发,人工神经网络是由一系列简单的单元相互紧密联系构成的,每个单元有一定数量的实数输入和唯一的实数输出。人工神经网络是建立在对人脑如何应对复杂问题的假设和模型上的。早在20世纪的40年代,Warren McCulloch和Walter Pitt描述出了神经元如何工作。Rosenblatt在20世纪50年代给出了基于神经元模型的感知器算法。但在之后的几十年中,由于没有好的训练多层神经网络的算法。神经网络的研究进入一次寒冬。直到1986年,D.E. Rumelhart、G.E. Hinton、R.J. Williams提出了反向传播算法。
深度学习算法可以通过无类标数据训练的深度神经网络(多层神经网络)进行特征检测。
单层神经网络:
1943年提出的第一个脑神经元的抽象模型,也称为麦卡洛可—皮茨神经元(MCP)如下图所示:
神经元是大脑中互相连接的神经细胞,它可以处理和传递化学和电信号。麦卡洛可和皮茨将神经细胞描述为一个具备二进制输出的逻辑门。树突接收多个输入信号,如果累加的信号超过某一阈值,经细胞体的整合就会生成一个输出信号,并通过轴突进行传递。对于单层神经网络,如下图所示:
1957年,Frank Rossenblatt基于MCP神经元模型提出了感知器学习法则(自适应线性神经元Adaline算法)。自学习算法可以自动通过优化得到权重系数,在此系数与输入值的乘积决定了神经元是否被激活。在监督学习与分类中,类似算法可用于预测样本所属的类别。将其看作一个二值分类的任务,把两类分别记为1(正类别)和-1(负类别)。我们可以定义一个激励函数,它以特定的输入值x与相应的权值向量w的线性组合作为输入,其中,z也称作净输入
权值向量:输入值:。对于一个特定样本的激励,也就是的输出,如果其值大于预设的阈值,我们将其划分到1类,否则为-1类。激励函数是一个简单的分段函数:
为了简单起见,将阈值移动到等式的左边,并增加一个初始项权重记为,且设,那么净输入可以改写为:。
下面直接给出书里面的截图:
通过梯度下降法来学习模型的权重系数。训练集上的每一次迭代,使用如下规则来更新权重向量w:
其中,。基于整个训练数据集来计算梯度,并沿着与梯度相反的方向前进以更新模型的权重。为了找到模型的最优权重,将待优化的目标函数定义为误差平方和(SSE)代价函数,为学习速率。在每次迭代后同时更新所有权重,并将权重向量的偏导定义为:
其中,为特定样本的真实类标,为神经元的激励。尽管Adaline包含一个输入层和一个输出层,但由于两层之间只有单一的网络连接,因此依旧称为单层神经网络。
多层神经网络
多层感知器(multi-layer perceptron,MLP)。如下图所示。三层MLP的概念:一个输入层、一个隐含层、以及一个输出层。当网络中包含多个隐层时,称为深度人工神经网络。
理论部分将直接给出书中截图(本人由于之前已经对神经网络有一定了解了,故此直接跳过看代码):