结不雅注解,我们可以比使⽤归⼀化的⾼斯分布做得更好,为什么?假设我们使⽤⼀个有⼤量输⼊神经元的⽹络,⽐如说 1,000 个,假设,我们已经使⽤归⼀化的⾼斯分布初始化了连接第⼀个隐蔽层的权重,如今我将留意⼒集中在这⼀层的连接权重上,忽视⽹络其他部分:
为了简化,假设我们使悠揭捉?练输⼊ x,个中⼀半的输⼊神经元值为 1,另⼀半为 0,以下的论点更广泛适⽤,但你可以大年夜这种间谍作况获得要点。让我们推敲隐蔽神经元输⼊的带权和z =∑j W j X j+ b。个中 500 个项消去了,因为对应的输⼊ X j 为 0。所以 z 是遍历总共 501 个归⼀化的⾼斯随机变量的和,包含 500 个权重项和额外的 1 个偏置项,是以 z 本⾝是⼀个均值为 0标准差为√ 501 ≈ 22.4 的⾼斯分布。z 其实有⼀个⾮常宽的⾼斯分布,完全不是⾮常尖的外形:
尤其是,我们可以大年夜这幅图中看出 |z| 会变得异常的⼤,即 z ≫ 1 或者 z ≪−1。如不雅是如许,隐蔽神经元的输出 σ(z) 就会接近 1 或者 0。也就表⽰我们的隐蔽神经元会饱和。所以当出现如许的情况时,在权重中进⾏微⼩的调果断仅会给隐蔽神经元的激活值带来极其微弱的改变。⽽这种微弱的改变也会影响⽹络中剩下的神经元,然后会带来响应的价值函数的改变。结不雅就是,这些权重在我们进⾏梯度降低算法时会进修得⾮常迟缓。
假设我们有⼀个有 n 个输入权重的神经元。我们会使⽤均值为 0 标准差为 1/ √ n 的⾼斯随机分布初始化这些权重。也就是说,我们会向下挤压⾼斯分布,让我们的神经元更弗成能饱和,我们会持续使⽤均值为 0 标准差为 1 的⾼斯分布来对偏置进⾏初始化,后⾯会告诉你原因。有了这些设定,带权和 z =∑jW jX j+ b 仍然是⼀个均值为 0,不过有尖利峰值的⾼斯分布。假设,我们有 500 个值为 0 的输⼊和 500 个值为 1 的输⼊。那么很轻易证实 z 是服大年夜均值为 0 标准差为√ 3/2 = 1.22... 的⾼斯分布。
如许的⼀个神经元更弗成能饱和,是以也不大年夜可能碰到进修速度降低的问题,让我们在 MNIST 数字分类义务上⽐较⼀下新旧两种权重初始化⽅式,同样,照样使⽤ 30 个隐蔽元,⼩批量数据的⼤⼩为 10,规范化参数 λ = 5.0,然后是交叉熵价值函数。我们将进修速度大年夜 η = 0.5 降到 0.1,因为如许会让结不雅在图像中表示得加倍明显。
两种情况下,我们在 96% 的精确率上重合了。最终的分类精确率⼏乎完全⼀样。然则新的初始化技巧带来了速度的晋升,在第⼀种初始化⽅式的分类精确率在 87% 以下,⽽新的⽅法已经⼏乎达到了 93%。看起来的情况就是我们新的关于权重初始化的⽅式将练习带到了⼀个新的境界,让我们可以或许加倍快速地获得好的结不雅。
9、宽泛策略
直到如今,我们还没有解释对诸如进修速度 η,规范化参数 λ 等等超参数选择的⽅法,我只是给出那些效不雅很好的值⽽已,实践中,当你使⽤神经收集解决问题时,寻找好的超参数其实是很艰苦的⼀件事。例如,我们要解决 MNIST 问题,开端时对于选择什么样的超参数⼀⽆所知。假设,刚开端的实验中选择前⾯章节的参数都是运⽓较好,但在使⽤进修速度 η=10.0 ⽽规范化参数 λ = 1000.0,下⾯是我们的⼀个测验测验:
我们分类精确率并不比随机选择更好,⽹络就像随机噪声产⽣器⼀样,你可能会说,“这好办,降低进修速度和规范化参数就好了。”不幸的是,你并不先验地知道这些就是须要调剂的超参数。可能真正的问题出在 30 个隐蔽元中,本身就不克不及很有效,不管我们若何调剂其他的超参数都没有作⽤的?可能我们真的须要⾄少 100 个隐蔽神经元?或者是 300个隐蔽神经元?或者更独裁的⽹络?或者不合输出编码⽅式?可能我们的⽹络⼀直在进修,只是进修的回合还不敷?可能 minibatch 的太⼩了?可能我们须要切换成⼆次价值函数?可能我们须要测验测验不合的权重初始化⽅法?等等。很轻易就在超参数的选择中迷掉了⽅向。如不雅你的⽹络范围很⼤,或者使⽤了很多的练习数据,这种情况就很令⼈掉望了,因为⼀次练习可能就要⼏个⼩时甚⾄⼏天乃⾄⼏周,最终什么都没有获得。如不雅这种情况⼀直发⽣,就会袭击你的⾃信⼼。可能你会困惑神经⽹络是不是合适你所碰到的问题?可能就应当放弃这种测验测验了?
假设,我们第⼀次碰到 MNIST 分类问题。刚开端,你很有豪情,然则当第⼀个神经⽹络完全掉效时,你会就得有些沮丧,此时就可以将问题简化,丢开练习和验证集合中的那些除了 0 和 1的那些图像,然后试着练习⼀个⽹络来区分 0 和 1,不仅仅问题⽐ 10 个分类的情况简化了,同样也会削减 80% 的练习数据,如许就给出了 5 倍的加快。如许可以包管更快的实验,也能赐与你关于若何构建好的收集更快的洞察。
推荐阅读
就像你看到的,这个函数返回一个 promises,将会赋值给 val,猜一下生成器和异步函数示例做了什么!无论你在这个函数返回了什么,你其实是暗地里返回一个 promise 解析到那个值。如不雅你>>>详细阅读
本文标题:理解深度学习的钥匙–参数篇
地址:http://www.17bianji.com/lsqh/34849.html
1/2 1