前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习中神经网络的权重为什么要被 "随机" 初始化?

深度学习中神经网络的权重为什么要被 "随机" 初始化?

作者头像
double
发布2019-10-22 20:33:41
3K0
发布2019-10-22 20:33:41
举报
文章被收录于专栏:算法channel算法channel

1 前言

初始值的选取非常重要,不恰当的初始值可能最后导致模型不能收敛。深度学习的参数训练也不例外,通常它们会被 "随机" 初始化。可是,为什么要这么做呢?为了弄清它,先从相关背景出发,理解背后的原因和相关更丰富的知识。

2 确定性算法

顾名思义,同一个程序的运行结果一定是一致的,比如冒泡排序,归并排序,每一次运行程序,都会得到相同的结果。

确定性算法都会有一个最好的、最坏的、平均的时间复杂度。乍看起来,这种确定性很好,但是这种确定算法可以解决一切问题吗?

3 非确定性算法

确定性算法在面对含有复杂的解空间问题时,显得束手无策。举个例子,配送员今天计划要送出1000个订单,如果给出一个最短路算法,想一想这个问题的解空间。解空间的大小为:1000!(1000的阶乘),足够丰富,这个数字足够大,感兴趣的可以留言写出它的大小。单机拿这个数字没办法;如果换成集群,有可能获得精确解,但如果要求秒级给出最短路,集群也很可能满足不了。

另一种方法就是使用非确定性算法。它们加入了随机性成分,有可能很快就能得到一个解,或许它不是最好的(best),但是近似好(approximate good),这相对于问题的复杂程度而言,能得到一个这种解已经令人满意了(satisfactory).

非确定性算法的特点是每次跑代码可能得到的结果不太一致,并且也不能保证解的质量和运行的时长。

4 随机搜索算法(Stochastic Search Algorithms)

随机搜索算法不是胡乱搜索,相反会精心设计随机性。

搜索往往是具有挑战性的任务,它指从一个初始状态或位置,不断经过优化后,到达一个最终状态或位置。一些经典的算法包括,遗传算法,模拟退火,随机梯度下降。

那么,在寻找更好解的过程中,这些算法的本质都是:

  • 初始化时,采用随机解
  • 在寻找更好解的过程中,启用随机算法

对上面两步做一些解释。因为我们队搜索空间的结构一无所知,所以,为了消除搜索过程的偏好性,我们从一个随机的位置开始。

随着搜索空间的逐渐打开,我们可能面临一个风险:陷于不想要到达的搜索区域(局部最优)。但是,搜索过程中,启用随机就有可能避免这种情况,进而发现更好的候选解(达到全局最优)。

这是一块很有趣的领域,其中包括运筹优化领域(Operation Research:简称为 OR)。

5 Random Initialization in Neural Networks

深度学习中训练网络是通过随机梯度下降,它启用随机性是为了发现足够好的权重值。对于特定的训练数据,精心设计的网络将会适用一个不同的带有模型技术的网络。它也会像上面几节说的那样,随机化一个初始值,然后搜索过程也会启用随机。

特别地,随机梯度下降要求权重参数被初始化为一个很小的随机值,如[0.01,0.32,...]等。训练时,在每一个epoch都会重新对训练数据洗牌,这样确保在不同的batch梯度计算会不同。

这个搜索过程,有一个新鲜的称谓叫做学习(深度学习),最近与同事聊天,有人说玩的是概念,换一个新名词,大家就觉得这是最近几年出现的一项新技术,真的是这样吗?

6 为什么不将权重都置0?

我们是否可以将所有的权重都置为0?这样,学习算法的公式将不能对权重参数做出任何调整,模型将会陷于困局。但是值得注意的是每一个神经元上的bias默认置为0.

特别地,隐含层上的节点需要有不同的权重,这样才能训练时会得到更新。这被称为训练期间打破对称性。

7 何时初始化为相同的权重?

如果每次都将权重置为随机值,它可能不利于我们做网络模型的配置评估。相反,对于一个训练集上得到的模型用于生产环境时,每次最终状态如果权重参数都相同将会给模型配置评估带来帮助。

8 初始化权重参数的方法

传统的,权重参数被设置为一个很小的随机值。神经网络的权重参数初始化时一项重要的研究领域,精心设计的初始化参数会加速学习过程。

深度学习框架,Keras,提供了一些网络初始化方法,它们都是用小的随机值初始化权重:Zeros, Ones, Constant, RandomNormal(随机正态分布的tensor), RandomUniform(随机均匀分布的tensor)。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4 随机搜索算法(Stochastic Search Algorithms)
  • 5 Random Initialization in Neural Networks
    • 6 为什么不将权重都置0?
      • 7 何时初始化为相同的权重?
        • 8 初始化权重参数的方法
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档