1. 文章
  2. 文章详情

前馈神经网络的基础与应用

深度学习

反向传播算法(back propagation algorithm, BP-algorithm)是深度学习的最重要的两大基石(另一个是梯度下降算法),几乎所有的深度学习算法底层都会调用BP算法,其本质就是对链式求导法则的应用而已. 而穿越时间的反向传播算法(back propagation through time algorithm, BPTT-algorithm) 则是BP上的应用,其核心没有改变,只不过在应用时,要注意一些穿越时间的特别之处.

深度学习包含两方面内容:

1.更好的训练深度神经网络。神经网络隐藏层超过两层就算深度神经网络,三层的NN的训练还好说,但是如果NN很多层数呢?那将会面临梯度弥散和梯度爆炸等问题。所以为了让训练的DNN取得好的效果,就有了一些训练DNN的技巧,比如反向传播算法、激活函数、批量归一化、dropout等技术的发明;而梯度下降是为了更好的优化代价函数(损失函数),不管是机器学习还是深度学习,总会需要优化代价函数。
2.设计网络结构以更好的提取特征。增加神经网络隐藏层就能提取更高层次特征,卷积神经网络能提取空间上的特征,循环神经网络能够提取时间序列特征,等等;于是各种网络结构被发明出来,比如AlexNet,LeNet,GooleNet,Inception系列,ResNet等等,另外还有LSTM等等。

数学视角:

Clipboard Image.png

神经网络的本质就是通过参数与激活函数来拟合特征与目标之间的真实函数关系。实现一个神经网络最需要的是线性代数库。


Clipboard Image.png

前馈神经网络

神经网络都要定义一个损失函数(loss function)。然后优化参数,能够让损失函数的值最小。

       此时这个问题就被转化为一个优化问题。一个常用方法就是高等数学中的求导,但是这里的问题由于参数不止一个,求导后计算导数等于0的运算量很大,所以一般来说解决这个优化问题使用的是梯度下降算法。梯度下降算法每次计算参数在当前的梯度,然后让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时截止。一般这个时候,所有的参数恰好达到使损失函数达到一个最低值的状态。

  在神经网络模型中,由于结构复杂,每次计算梯度的代价很大。因此还需要使用反向传播算法。反向传播算法是利用了神经网络的结构进行的计算。不一次计算所有参数的梯度,而是从后往前。首先计算输出层的梯度,然后是第二个参数矩阵的梯度,接着是中间层的梯度,再然后是第一个参数矩阵的梯度,最后是输入层的梯度。计算结束以后,所要的两个参数矩阵的梯度就都有了。反向传播算法的启示是数学中的链式法则。

  优化问题只是训练中的一个部分。机器学习问题之所以称为学习问题,而不是优化问题,就是因为它不仅要求数据在训练集上求得一个较小的误差,在测试集上也要表现好。因为模型最终是要部署到没有见过训练数据的真实场景。提升模型在测试集上的预测效果的主题叫做泛化(generalization),相关方法被称作正则化(regularization)。神经网络中常用的泛化技术有权重衰减等。

 在深度学习中,泛化技术变的比以往更加的重要。这主要是因为神经网络的层数增加了,参数也增加了,表示能力大幅度增强,很容易出现过拟合现象。因此正则化技术就显得十分重要。目前,Dropout技术,以及数据扩容(Data-Augmentation)技术是目前使用的最多的正则化技术。


机器学习

1、机器学习的定义

  从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。

  数据挖掘
  数据挖掘=机器学习+数据库。

     统计学习
  统计学习近似等于机器学习。统计学习是个与机器学习高度重叠的学科。统计学习者重点关注的是统计模型的发展与优化,偏数学,而机器学习者更关注的是能够解决问题,偏实践,因此机器学习研究者会重点研究学习算法在计算机上执行的效率与准确性的提升。

  计算机视觉
  计算机视觉=图像处理+机器学习。
  
  语音识别
  语音识别=语音处理+机器学习。

  自然语言处理
  自然语言处理=文本处理+机器学习。

2、回归算法

  回归算法有两个重要的子类:即线性回归和逻辑回归

  如何拟合出一条直线最佳匹配我所有的数据?一般使用“最小二乘法”来求解。“最小二乘法”的思想是这样的,假设我们拟合出的直线代表数据的真实值,而观测到的数据代表拥有误差的值。为了尽可能减小误差的影响,需要求解一条直线使所有误差的平方和最小。最小二乘法将最优问题转化为求函数极值问题。函数极值在数学上我们一般会采用求导数为0的方法。但这种做法并不适合计算机,可能求解不出来,也可能计算量太大。

  数值计算,专门用来提升计算机进行各类计算时的准确性和效率问题。例如,著名的“梯度下降”以及“牛顿法”就是数值计算中的经典算法,也非常适合来处理求解函数极值的问题。梯度下降法是解决回归模型中最简单且有效的方法之一。从严格意义上来说,由于后文中的神经网络和推荐算法中都有线性回归的因子,因此梯度下降法在后面的算法实现中也有应用。

  逻辑回归是一种与线性回归非常类似的算法,但是,从本质上讲,线型回归处理的问题类型与逻辑回归不一致。线性回归处理的是数值问题,也就是最后预测出的结果是数字,例如房价。而逻辑回归属于分类算法,也就是说,逻辑回归预测结果是离散的分类,例如判断这封邮件是否是垃圾邮件,以及用户是否会点击此广告等等。

  实现方面的话,逻辑回归只是对对线性回归的计算结果加上了一个Sigmoid函数,将数值结果转化为了0到1之间的概率(Sigmoid函数的图像一般来说并不直观,你只需要理解对数值越大,函数越逼近1,数值越小,函数越逼近0),接着我们根据这个概率可以做预测,例如概率大于0.5,则这封邮件就是垃圾邮件,或者肿瘤是否是恶性的等等。从直观上来说,逻辑回归是画出了一条分类线。

逻辑回归算法划出的分类线基本都是线性的,这意味着当两类之间的界线不是线性时,逻辑回归的表达能力就不足。下面的两个算法是机器学习界最强大且重要的算法,都可以拟合出非线性的分类线。

3、神经网络

  神经网络(也称之为人工神经网络,ANN)算法是80年代机器学习界非常流行的算法,是最强大的机器学习算法之一。

       监督学习算法:线性回归,逻辑回归,神经网络,SVM

  无监督学习算法:聚类算法,降维算法

  特殊算法:推荐算法

  梯度下降法,主要运用在线型回归,逻辑回归,神经网络,推荐算法中;牛顿法,主要运用在线型回归中;BP算法,主要运用在神经网络中;SMO算法,主要运用在SVM中。

大数据包含以下四种分析方法:

  1.大数据,小分析:即数据仓库领域的OLAP分析思路,也就是多维分析思想。
  2.大数据,大分析:这个代表的就是数据挖掘与机器学习分析法。
  3.流式分析:这个主要指的是事件驱动架构。
  4.查询分析:经典代表是NoSQL数据库。

参考:http://www.cnblogs.com/subcon...

发表评论

登录后才能评论

评论列表(0条)