tensorflow实现多层感知机

在前面的博客中我们已经讨论过softmax实现分类的例子,该模型最大的特点是简单易用,但是拟合能力不强。它和传统意义上的神经网络的最大区别是没有隐含层。对于神经网络来说,引入非线性隐含层后,理论上只要隐含节点足够多,即使只有一个隐含层的神经网络也可以拟合任意函数。同时隐含层越多,越容易拟合复杂函数。理论表明,为了拟合复杂函数需要的隐含节点的数目,基本上随着隐含层的数量增加呈现指数下降的趋势。这...
摘要由CSDN通过智能技术生成

在前面的博客中我们已经讨论过softmax实现分类的例子,该模型最大的特点是简单易用,但是拟合能力不强。它和传统意义上的神经网络的最大区别是没有隐含层。

对于神经网络来说,引入非线性隐含层后,理论上只要隐含节点足够多,即使只有一个隐含层的神经网络也可以拟合任意函数。同时隐含层越多,越容易拟合复杂函数。理论表明,为了拟合复杂函数需要的隐含节点的数目,基本上随着隐含层的数量增加呈现指数下降的趋势。这也是深度学习的特点之一,层数越深,概念越抽象,需要的隐含节点就越少。

对于神经来说,一般有两种实现方式:
1)设计隐含层少,但节点数多的神经网络(宽而浅的神经网络);
2)设计隐含层多,但每层节点数目少的神经网络(窄而深的神经网络)。
相对来说,第二种的设计方法使用居多。但是使用层数较深的神经网络往往会遇到很多问题,比如过拟合参数难以调试梯度弥散等等。下面我们简单介绍一下这三个问题,以及解决的方法。

过拟合,是指该模型在训练集上的准确率升高,但是在测试集上的准确率反而下降,这意味着泛化能力不好。具体的过拟合现象可以参考前面讲述的博客
过拟合的解决思路:为了解决这个问题,Hinton提出了一个简单但是非常有效的方法——dropout。它的大致思路为:在训练时,将神经网络某一层的输出节点数据随机丢弃一部分。可以理解为我们随机把一张图片50%的点删掉(即随机将50%的点变成黑的的点),此时人可以识别出这张图像的类别,同理机器也可以识别出。该方法的实质是等于创造出了很多随机样本,通过增加样本量、减少特征数量来防止过拟合。 Dropout也可以看做bagging方法,可以理解为每次丢弃的节点数据是对特征的一种采样。也就是相当于我们训练了一个ensemble的神经网络的模型,对每个特征都做特征采样,只不过没有训练多个神经网络模型,只有一个融合的神经网络。

参数难以调试,尤其对于随机梯度下降(SGD)的参数,对SGD设置不同的学习速率,最后得到的结果可能差异巨大。神经网络通常不是一个凸优化的问题,它处处充满的局部最优。同时SGD本身也不是一个稳定的算法,结果可能会在最优解附近波动,而不同的学习速率可能导致神经网络落入截然不同的局部最优之中。但是对于神经网络来说,可能有很多个局部最优解都可以达到比较好的分类效果,而全局最优反而容易是过拟合的解。
对于学习率设置的解决措施:对于SGD,一开始我们可能希望学习率大一些,可以加速收敛,但是训练后期又希望学习速率可以小一些,这样可以比较稳定的落入一个局部最优解。
解决方法: 不同的机器学习问题所需要的学习速率也不太好设置,需要反复的调试,因此就有像Adagrad、Adam、Adadelta等(这些方法在tensorflow中有对应的函数)自适应的方法可以减轻调试参数的负担。对于这些优化算法我们使用它默认的参数设置就可以取得一个比较好的效果。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值