全零初始化的问题:

在Linear Regression中,常用的参数初始化方式是全零,因为在做Gradient Descent的时候,各个参数会在输入的各个分量维度上各自更新。更新公式为:

而在Neural Network(Deep Learning)中,当我们将所有的parameters做全零初始化,根据公式:

可知,每一层的Zl均为0,如果使用sigmoid activation,则al的值都等于0.5。在反向传播时,误差值

因为有ω在里面,所以导致δ都变成了零,而我们用于做Gradient Descent的梯度

也就通通变为了零,从而,我们的Back propagation算法失效,参数矩阵将始终保持全零的状态,无法更新。

Parameter初始化过小的问题:

首先,Parameter过小,则经过一层层的Sigmoid Function,activation会越来越小,也就是最终的输出结果会非常接近于0。从Sigmoid的图形可以看出,在接近0的图形范围内,函数是类似线性的。所以Parameter初始化过小,会导致神经网络失去非线性功能。此外,在接近0点的部分,Sigmoid Activation的δ'(z)接近于1/4。同样地,在公式中:

随着Backpropagation的进行,δ指数级衰减。下式中的梯度会随着层数的回溯,越来越小,直至消失消失。

Parameter初始化过大的问题:

将导致Z值过大,从Sigmoid和Tanh图形可知,当Z值过大时,激励函数会饱和,其梯度将趋近为0。导致的结果是,参数将无法进行更新,或更新很慢。

而如果我们通过调整bias,使得各层的z始终为0,则会有梯度爆炸的问题。还是在下式中

各层的δ‘(z)都是1/4,但ω却是很大的值。所以随着Backpropagation的推进,前层的δ会越来越大,如果层数很多,甚至变为NAN。

深度学习中的主流初始化方法有Xavier和He

Xavier Initialization有三种选择,Fan_in:

Fan_out:

Average:

He Initialization:

Parameter Initializations in Deep Learning的更多相关文章

  1. Decision Boundaries for Deep Learning and other Machine Learning classifiers

    Decision Boundaries for Deep Learning and other Machine Learning classifiers H2O, one of the leading ...

  2. Edge Intelligence: On-Demand Deep Learning Model Co-Inference with Device-Edge Synergy

    边缘智能:按需深度学习模型和设备边缘协同的共同推理 本文为SIGCOMM 2018 Workshop (Mobile Edge Communications, MECOMM)论文. 笔者翻译了该论文. ...

  3. A Brief Overview of Deep Learning

    A Brief Overview of Deep Learning (This is a guest post by Ilya Sutskever on the intuition behind de ...

  4. Rolling in the Deep (Learning)

    Rolling in the Deep (Learning) Deep Learning has been getting a lot of press lately, and is one of t ...

  5. 深度学习Deep learning

    In the last chapter we learned that deep neural networks are often much harder to train than shallow ...

  6. Deep learning:五十一(CNN的反向求导及练习)

    前言: CNN作为DL中最成功的模型之一,有必要对其更进一步研究它.虽然在前面的博文Stacked CNN简单介绍中有大概介绍过CNN的使用,不过那是有个前提的:CNN中的参数必须已提前学习好.而本文 ...

  7. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)

    理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...

  8. Deep Learning in a Nutshell: History and Training

    Deep Learning in a Nutshell: History and Training This series of blog posts aims to provide an intui ...

  9. Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...

随机推荐

  1. Django设置允许跨域请求

    方式一: 在中间件中 def process_response(self, request, response): response['Access-Control-Allow-Origin'] = ...

  2. Python所有转义字符总汇

    转义字符就是让程序按照已经设置好的字符输出,不然程序当成其他的输出了,下面总结所有python转义字符 \\ 反斜杠符号\' 单引号\" 双引号\a 响铃\b 退格(Backspace)\e ...

  3. 使用Nginx代理和转发Websocket连接

    1.Websocket 简介 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端. 2.Nginx 简介 ...

  4. HashMap、Hashtable和ConcurrentHashMap的区别

    HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相 ...

  5. postmaster - PostgreSQL多用户数据库服务器

    SYNOPSIS postmaster [ -A 0 | 1] [ -B nbuffers] [ -c name=value] [ -d debug-level] [ -D datadir] [ -F ...

  6. 《Webkit技术内幕》之页面渲染过程

    文章同步到github<Webkit技术内幕>之页面渲染过程 最近拜读了传说中的<Webkit技术内幕>一书,有很大收获,尤其是对页面渲染有了较深的认识.由于功力有限,而且书中 ...

  7. Java常用类库API之数字处理工具类

    数字处理工具类BigDecimal和DecimalFormat Java提供的java.text.DecimalFormat类,帮助我们用最快的速度将数据格式化为我们想要的样子.例如,取两位小数 im ...

  8. Git常用命令的操作

    Git命令 一.创建版本库 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 使用命令git add <file>,注意,可反复多次使用,添加多个文件: 使 ...

  9. Java 输入输出图片文件的简单方式

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...

  10. Change the environment variable for python code running

    python程序运行中改变环境变量: Trying to change the way the loader works for a running Python is very tricky; pr ...