Machine Learning:Neural Network
一:前言
1,Wikipedia上对Neural Network的定义:
In machine learning,artificial neural networks (ANNs) are a family of statistical learning algorithms inspired by biological neural networks (thecentral
nervous systems of animals, in particular thebrain) and are used to estimate or
approximate functions that can depend on a large number of input sand are generally unknown. Artificial neural networks are generally presented
as systems of interconnected "neurons" which can compute values from inputs, and are capable ofmachine learning as well aspattern recognition
thanks to their adaptive nature.
2,为什么要引入Neural Network?
我们前面学习了回归和分类模型,然而它们的实际应用受制于数据的规模(也就是维度灾难(curse of dimensionality))。Neural Network用于处理大量输入特征是非常有优势的,例如抽取计算机视觉中图片的像素作为输入特征,那么这将得到数量巨大的输入特征集;如果仍然回归和分类模型,学习参数所需要的时间将会是不能承受的;
二:Neural Network—Representation
1,Neural Network模型
在神经网络中,我们把第一层称为input layer,最后一层称为output layer,中间若干层都称为hidden layer。
下面我们来看一个非常简单的神经网络:
这个简单的神经网络相当于一个逻辑分类器。之所以会是这样的结果,是因为output layer上neutron的转换函数是sigmoid函数。当然这完全可以根据我们的实际问题去选择合适的activation function。
下面我们来详细的描述一下神经网络:
上图中,a(i,j)表示为第j层的第i个activation,它是由activation function转换得到的,也就是这里的g(.);一般来说,各层的activation function是一样的(除了output layer,这个需要根据最后需要的形式来确定,比如离散、连续还是multi-classification等等),当然你也可以选择使它们不一样,这样增大了实现起来的难度。Theta权重参数矩阵控制layer j到layer j+1的映射。
2,Forward Propagation Algorithm
这种Forward propagation的方式是从input layeràhidden layeràoutput layer来进行对h(x)的计算;我们并不是直接对原始数据进行建模、调参,而是利用中间层得到的结果,然而中间层的结果是由原始数据学习而来的;换言之,这有很大的灵活性,每层之间的转换可以是任何线性组合或者多项式组合等。
下面来看一下如何利用神经网络实现逻辑表达式:
通过多And、Or、Not的分析,组合成了一个小的神经网络实现了XNOR的功能。
3,神经网络的multi-classification问题
对于multi-classification,我们用了softmax activation function来表示最后的输出结果。
三,Neural Network—Learning
下面我们将以分类问题来阐述Neural Network的学习过程,类比逻辑回归得到Neural Network的Cost Function,然后用梯度下降算法求出参数。
1,Error Back Propagation Algorithm:
我们知道梯度下降算法分为两个步骤:
(1), 对Cost Function求关于参数theta的偏导数;
(2),根据偏导数对参数theta进行更新、调整;
Error Back Propagation Algorithm提供了一种高效的求偏导数的方法。
例如在上图所示的神经网络中,我们进行一般化的推导:
通过上面的推导,我们已经得到了一个高效的求解偏导数的方法:通过Forward propagation求出a(i)的值,再通过back propagation求出delta的值,然后带入式子(6)中即可;
现在我们来整合一下Neural Network Learning的整个过程,举一个具体的例子:
上面的back propagation Algorithm直接引用了上面推导的结果;
总结一下back propagation Algorithm:
2,下面介绍一下Neural Network在MATLAB中的实现技巧:
简单的说就是先把权重参数矩阵unroll成一个向量,然后利用库中现成的梯度下降算法求出最优参数,最后reshape成矩阵的形式;之所以这样做是因为现成的梯度下降算法的参数即initTheta要求必须是一个向量的形式。
3,Gradient Checking
这是一种数学上求偏导数的方法。
它可以用来校验实现的梯度下降算法是否运行正确,当二者的数据非常相似时,则表明运行的结果是正确的;若二者结果相差很大,则表明梯度下降算法没有正确运行;
4,如何初始化权重矩阵Theta的值
四,总结一下整个过程
总结匆忙,难免会有纰漏和错误,还望大家不吝指正、赐教;
----------------------------------------------------------------------------------------------------------------------
本文中课件来自斯坦福大学Andrew Ng老师的机器学习PPT