首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

神经网络模型简介和梯度下降求解

《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!

01

回顾

上一篇总结了常用的机器学习算法,论述了为什么需要深度学习,以及一种系统地展开deep learning的学习清单,具体请参考:

都知道深度学习地实施一般都借助神经网络模型,因此,接下来,先看一看,神经网络模型是怎么一回事。

02

神经网络模型

2.1 神经网络模型组成

一般地,神经网络模型包括输入层(input layer),隐含层(hidden layers),输出层(output layer)。

如上图所示,数据传输是从 input layer -> hidden layers -> output layer ,这种网络叫做前向传播神经网络(feedforwardneural networks),在这种网络中没有环,数据传播总是前向的,从不反向,也就是说输入层会通过隐含层1,隐含层2,...,间接地影响到输出层。

有一些神经网络是特例,比如 RNN (recurrent neural networks),循环的意思是指,一个神经元的输出会影响其输入,注意,这种影响不是立即发生的,而是在一定时间之后才发生的。

2.2 小球搜寻下坡最快的例子

成本函数为 C(w,b),为了取得L的最小值,采取朝着梯度方向的逐步逼近的策略,称为梯度下降,下面再介绍下它的具体实施步骤。

如下方所示的小球,位于v1, v2 空间中,图示位置所处的成本值还是比较大的,为了逐步减小,

让小球在 v1 和 v2 方向分别移动一定距离 ,那么它移动的距离可表示为:

令,

注意,上面两个表达式都是列向量,化简后,

中间点表示为向量的点乘,

为了保证在任何时候为负值,设

其中,

为学习率

这样,就能保证在任何时候为负值,因为,

所以,只要对 v 做如下迭代,就能确保小球一直下降,最后直到位置达到某个阈值。

以上这个式子,就是梯度下降迭代某个自变量 v 的公式。

2.3 引出梯度下降的参数迭代公式

在求解神经网络模型中,成本函数 C(w,b) 对应的自变量为 w(所有的权重参数),b(每层的偏置项),根据上面的公式,自然地,可以得到 w 和 b 的迭代公式:

2.4 批梯度下降

通常训练集内包括的样本数比较大,这里有3种梯度下降的策略:

1. 每次迭代只使用随机的一个样本(极限情况1),这种情况下,每次修正方向以各自样本的梯度方向修正,横冲直撞,难以达到收敛。

2. 每次迭代使用所有样本(极限情况2),计算效率很低,训练一套网络会很慢。

3. 批处理(中间情况),mini-batch,每次选取一定数量的样本进行训练,能避免情况1的出现,也能在迭代效率上有所提升,在这种情况下,权重参数和偏置项用批处理表示为如下,

至此,批处理参数迭代公式推导结束。

下面正式进入,手写字数据集,用神经网络模型进行训练分类。

03

建立神经网络模型手写字识别

3.1 手写数据集背景介绍

这个数据集包括7万张手写数字的扫描图像,如下图所示,

用其中6万张来作为训练集,1万张用于测试,每张图像的像素是28 by 28 的灰色度图像,任务是自动识别手写的字是哪个数字。

3.2 建立神经网络模型

方便起见,输入层的神经元个数为 28 * 28 = 784 个,输出层为10个神经元,对应着数字 0,1,2,...,9 ,对7万张图像,其中5万张用于训练,1万张用图像验证集,剩下的1万张还是用测试。

3.3 图像分类分析

对于分类,传统的机器学习算法,比如逻辑回归,softmax分类器,决策树,随机森林,AdaBoost,GBDT,XGBoost等,都可以用来做分类,这些传统的ML算法,无一例外,都使用一种限定的模型,然后拿成本函数(又称损失函数)对模型进行参数求解。

但是,它们对图像识别,尤其是复杂背景下的图像识别,分类的效果,都没有神经网络模型好,这里对手写字数据集的分类,也是用建立一套神经网络模型,然后拿目标函数,通过梯度下降,学得所有神经元的权重参数,和每层的偏置项。

因此,可以看出神经网络模型训练用于分类任务求解的思路与传统的ML求解一致,只不过此时我们会使用神经网络模型,这一点是非常不同的。

3.4 手写字图像分类分析

手写字图像分类,用神经网络模型,如何进行,这是一个不用tensorflow训练的思路,只用到了Numpy库,这个方法实现了包括:

如何拆分图像任务,

建立神经网络,

训练神经网络,

梯度下降求解权重参数和偏置项,

最终分类效果(准确度等)分析

完整代码实现

预知这些过程,请关注明天的推送。

请记住:每天一小步,日积月累一大步!

《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171216G0O6U300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券