【AI初识境】什么是深度学习成功的开始?参数初始化

深度学习模型九大经典初始化方案 自适应初始化方法通过根据具体模型和数据动态调整初始化参数,可以显著提高模型训练的起始性能,尤其是在复杂的模型或不常见的架构中。这种方法的核心思想是在模型的训练初期,通过优化一个小的数据集上的训练损失来确定初始化参数。这个近似正交的矩阵被用作网络层的权重。在实现稀疏初始化时,通常会指定一个稀疏度参数(如每个神经元连接到的前一层神经元的数量),然后随机选择这些连接并赋予它们非零的权重。Delta-正交初始化有助于在训练过程中保持卷积层输出的特征图的多样性,从而防止梯度消失或爆炸,特别是在深层卷积网络中。 阅读详情

文章首发于微信公众号《有三AI》

【AI初识境】什么是深度学习成功的开始?参数初始化

这是《AI初识境》第5篇,这次我们说说初始化。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。

神经网络要优化一个非常复杂的非线性模型,而且基本没有全局最优解,初始化在其中扮演着非常重要的作用,尤其在没有BN等技术的早期,它直接影响模型能否收敛。

可以说万事开头难,没有好的初始化的深度学习模型训练起来更难。

作者&编辑  | 言有三

 

01 初始化的重要性

2006年Hinton等人在science期刊上发表了论文“Reducing the dimensionality of data with neuralnetworks”,揭开了新的训练深层神经网络算法的序幕。

利用无监督的RBM网络来进行预训练,进行图像的降维,取得比PCA更好的结果,通常这被认为是深度学习兴起的开篇。

这么看来,是因为好的初始化方法的出现,才有了深层神经网络工程化落地的可能性。

好的初始化应该满足以下两个条件:

(1) 让神经元各层激活值不会出现饱和现象;

(2) 各层激活值也不能为0。

也就是激活值不要太大,也不要太小,应该刚刚好,当然这还只是最基本的要求。

我们都知道在早期,sigmoid激活函数是多层感知器模型的标配,上面这篇文章同样也是用sigmoid激活函数,没有那么多问题,是因为使用了预训练。

如果不使用预训练会如何?在Xavier Glorot和Yoshua Bengio提出xavier初始化方法的论文【1】中就对不同的激活函数使用不同的数据集做过实验。

上面是一个四层的神经网络在sigmoid函数激活下的训练过程,可以看到最深的layer4层刚开始的时候很快就进入了饱和区域(激活值很低),其他几层则比较平稳,在训练的后期才能进行正常的更新。

为什么会这样呢?网络中有两类参数需要学习,一个是权重,一个是偏置。对于上面的结果作者们提出了一个假设,就是在网络的学习过程中,偏置项总是学的更快,网络真正的输出就是直接由layer4决定的,输出就是softmax(b+Wh)。既然偏置项学的快,那Wh就没有这么重要了,所以激活值可以低一点。

解释虽然比较牵强,但是毕竟实验结果摆在那里,从tanh函数的激活值来看会更直观。

这个图有个特点是,0,1和-1的值都不少,而中间段的就比较少。在0值,逼近线性函数,它不能为网络的非线性能力作出贡献。对于1,-1,则是饱和区,没有用。

 

02 常用的初始化方法

1、全零初始化和随机初始化

如果神经元的权重被初始化为0, 在第一次更新的时候,除了输出之外,所有的中间层的节点的值都为零。一般神经网络拥有对称的结构,那么在进行第一次误差反向传播时,更新后的网络参数将会相同,在下一次更新时,相同的网络参数学习提取不到有用的特征,因此深度学习模型都不会使用0初始化所有参数。

而随机初始化就是搞一些很小的值进行初始化,实验表明大了就容易饱和,小的就激活不动,再说了这个没技术含量,不必再讨论。

2.标准初始化

对于均匀分布,X~U(a,b),概率密度函数等于:

 

它的期望等于0,方差等于(b-a)^2/12,如果b=1,a=-1,就是1/3。

下面我们首先计算一下,输出输入以及权重的方差关系公式:

如果我们希望每一层的激活值是稳定的,w就应该用n的平方根进行归一化,n为每个神经元的输入数量。

所以标准的初始化方法其权重参数就是以下分布:

它保证了参数均值为0,方差为常量1/3,和网络的层数无关。                              

3.Xavier初始化

首先有一个共识必须先提出:神经网络如果保持每层的信息流动是同一方差,那么会更加有利于优化。不然大家也不会去争先恐后地研究各种normalization方法。

不过,Xavier Glorot认为还不够,应该增强这个条件,好的初始化应该使得各层的激活值和梯度的方差在传播过程中保持一致,这个被称为Glorot条件。

如果反向传播每层梯度保持近似的方差,则信息能反馈到各层。而前向传播激活值方差近似相等,有利于平稳地学习。

当然为了做到这一点,对激活函数也必须作出一些约定。

(1) 激活函数是线性的,至少在0点附近,而且导数为1。

(2) 激活值关于0对称。

这两个都不适用于sigmoid函数和ReLU函数,而适合tanh函数。

要满足上面的两个条件,就是下面的式子。

推导可以参考前面标准初始化的方法,这里的ni,ni+1分别就是输入和输出的神经元个数了,因为输入输出不相等,作为一种权衡,文中就建议使用输入和输出的均值来代替。

再带入前面的均匀分布的方差(b-a)^2/12,就得到了对于tanh函数的xavier初始化方法。

下面这两个图分别是标准初始化和xavier初始化带来的各层的反传梯度方差,可以看出xavier确实保持了一致性。

4.He初始化

Xavier初始化虽然美妙,但它是针对tanh函数设计的,而激活函数现在是ReLU的天下,ReLU只有一半的激活,另一半是不激活的,所以前面的计算输入输出的方差的式子多了一个1/2,如下。

因为这一次没有使用均匀初始化,而是使用了正态分布,所以对下面这个式子:

需要的就是这样的正态分布。

综上,对于两大最经典的激活函数,各自有了对应的初始化方法。虽然后面还提出了一些其他的初始化方法,但是在我们这个系列中就不再详述了。

 

03 关于初始化的一些思考

初始化这个问题明显比较麻烦,不然大家也不会这么喜欢用pretrained模型了。

从前面我们可以看到,大家努力的方向有这么几个。

(1) 预训练啊。

机智地一比,甩锅给别人,?。

(2) 从激活函数入手,让梯度流动起来不要进入饱和区,则什么初始化咱们都可以接受。

这其实就要回到上次我们说的激活函数了,ReLU系列的激活函数天生可以缓解这个问题,反过来,像何凯明等提出的方法,也是可以反哺激活函数ReLU。

(3) 归一化,让每一层的输入输出的分布比较一致,降低学习难度。

回想一下,这不就是BN干的活吗?所以才会有了BN之后,初始化方法不再需要小心翼翼地选择。假如不用BN,要解决这个问题有几个思路,我觉得分为两派。

首先是理论派,就是咱们从理论上分析出设计一个怎么样的函数是最合适的。

对于Sigmoid等函数,xavier设计出了xavier初始化方法,对于ReLU函数,何凯明设计了he初始化方法。

在此之上,有研究者分别针对零点平滑的激活函数和零点不平滑的激活函数提出了统一的框架,见文【2】,比如对于sigmoid,tanh等函数,方差和导数的关系如此。

然后是实践派,在训练的时候手动将权重归一化的,见文【3】,这就是向归一化方法靠拢了,下期咱们再讲。

[1] Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neuralnetworks[C]//Proceedings of the thirteenth international conference on artificial intelligence andstatistics. 2010: 249-256.

[2] Kumar S K. On weight initialization in deep neural networks[J]. arXiv preprint arXiv:1704.08863, 2017.

[3] Mishkin D, Matas J. All you need is a good init[J]. arXiv preprint arXiv:1511.06422, 2015.

最后发一个通知,2019年有三AI培养计划出炉了,一个季度一期噢。

2019年有三AI“春季”划,给我一个荣耀,还你一生荣耀

 

总结

好的初始化方法就是赢在起跑线,不过现在的初始化方法也不是对什么数据集都有效,毕竟不同数据集的分布不同,咱们以后再谈。

下期预告:论深度学习中的归一化

 

转载文章请后台联系

侵权必究

比如网络loss不正常,怎么调都不管用。

比如训练好好的,测试就是结果不对。

bug天天有,深度学习算法工程师遇到的特别多,如果你想交流更多,就来有三AI知识星球实时提问交流吧,大咖众多,总有能解决你问题的。

初识境界到此基本就结束了,这一系列是为大家奠定扎实的深度学习基础,希望学习完后大家能有收获。

AI白身境系列完整阅读:

第一期:【AI白身境】深度学习从弃用windows开始

第二期:【AI白身境】Linux干活三板斧,shell、vim和git

第三期:【AI白身境】学AI必备的python基础

第四期:【AI白身境】深度学习必备图像基础

第五期:【AI白身境】搞计算机视觉必备的OpenCV入门基础

第六期:【AI白身境】只会用Python?g++,CMake和Makefile了解一下

第七期:【AI白身境】学深度学习你不得不知的爬虫基础

第八期: 【AI白身境】深度学习中的数据可视化

第九期:【AI白身境】入行AI需要什么数学基础:左手矩阵论,右手微积分

第十期:【AI白身境】一文览尽计算机视觉研究方向

第十一期:【AI白身境】AI+,都加在哪些应用领域了

第十二期:【AI白身境】究竟谁是paper之王,全球前10的计算机科学家

AI初识境系列完整阅读

第一期:【AI初识境】从3次人工智能潮起潮落说起

第二期:【AI初识境】从头理解神经网络-内行与外行的分水岭

第三期:【AI初识境】近20年深度学习在图像领域的重要进展节点

第四期:【AI初识境】激活函数:从人工设计到自动搜索

第五期:【AI初识境】什么是深度学习成功的开始?参数初始化

第六期:【AI初识境】深度学习模型中的Normalization,你懂了多少?

第七期:【AI初识境】为了围剿SGD大家这些年想过的那十几招

第八期:【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?

第九期:【AI初识境】如何增加深度学习模型的泛化能力

第十期:【AI初识境】深度学习模型评估,从图像分类到生成模型

第十一期:【AI初识境】深度学习中常用的损失函数有哪些?

第十二期:【AI初识境】给深度学习新手开始项目时的10条建议

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI!

深度学习之参数初始化 为什么要学习参数初始化? 我们都知道,神经网络模型一般是通过随机梯度下降法来训练模型、学习参数。 我们在使用随机梯度下降法的时候需要先给参数赋初值,那么合理正确地初始化参数,能够影响到算法的收敛性、减小泛化误差等。 如果使用的框架是TensorFlow,那么在看完博客后可以看看下面这篇博客,整理了对变量进行初始化的各种函数API。 下面整理参数初始化的方式时只给出了公式,根据公式套... 阅读详情

相关推荐

[FPGA高速以太网]基于Verilog与1G/2.5G Ethernet PCS/PMA IP核的2.5G UDP通信实战

本文详细介绍了基于FPGA与1G/2.5G Ethernet PCS/PMA IP核实现2.5G UDP通信的完整实战方案。文章以黑金AX7A200开发板为硬件平台,深入讲解了从硬件选型、IP核配置、Verilog测试逻辑编写到系统调试与性能验证的全过程,重点剖析了利用SGMII接口与GTP收发器实现高速数据传输的关键技术与避坑指南,为FPGA高速以太网应用开发提供了宝贵经验。

sql99的博客 571

深度学习的多种初始化方法

深度学习的初始化很重要,若初始化值过低,会导致梯度消失,神经网络过早收敛,提前到达极小值。若初始化值过高,会导致梯度爆炸,网络会在极小值位置震荡。 权重初始化过程中,主要保证以下准则: 在每一层激活后,输入数据的均值为 0,在每一层激活后,输入的方差不变。 已知梯度前向传播: (1) a∣l−1∣=g∣l−1∣(z∣l−1∣)a^{|l-1|} = g^{|l-1|}(z^{|l-1|})...

qq_30735079的博客 2510

Ubuntu配置Qt Creator树莓派交叉编译环境一步到位

本文详细指导在Ubuntu系统上配置Qt Creator树莓派交叉编译环境。从工具链安装、sysroot创建到Qt库编译,逐步讲解如何搭建完整的ARMv7交叉编译工具链,实现高效开发树莓派应用。

1282

深度学习参数初始化(一)Xavier初始化 含代码

Xavier初始化也称为Glorot初始化,因为发明人为Xavier Glorot。Xavier initialization是 Glorot 等人为了解决随机初始化的问题提出来的另一种初始化方法,他们的思想就是尽可能的让输入和输出服从相同的分布,这样就能够避免后面层的激活函数的输出值趋向于0。........................

xian0710830114的专栏 4万+

【Unity人物动画】SALSA With RandomEyes (语音生成嘴型/人物说话) 使用

SALSA使用探索 之前做项目时想做人物说话的嘴部动作,因为我们的语音是AI合成的,语音片段很多,如果能根据语音生成嘴部动画,那将极大便利我们的工作。后面是找到了SALSA的这款插件,并摸索出使用方法。 1 插件介绍 官方网站:https://crazyminnowstudio.com/ 一个能做2D纸片人和3D人物模型嘴部和眼睛动画的插件,由两人组成的独立工作室(疯狂米诺工作室)开发。 插件全名为SALSA With RandomEyes,2014年上架Asset Store,目前是已下架,替换为新版本

里约热内驴的博客 1万+

FPGA实战:AXI BRAM Controller配置避坑指南(Vivado 2023版)

本文详细解析了Vivado 2023环境下AXI BRAM Controller的配置技巧与避坑指南,涵盖AXI4协议转换、BRAM地址空间配置、信号异常处理及突发传输优化等核心内容。针对写时序冲突、跨时钟域处理等常见问题提供实用解决方案,帮助开发者提升FPGA系统性能与稳定性。

q1w3e5r7t9y的博客 344

深入理解AI大模型:参数、Token、上下文窗口、上下文长度和温度

本文将深入浅出地为你解析这些概念,并结合实际案例和数据,帮助你理解 AI 大模型的运作机制。

Y525698136的博客 3万+

RouterOS网桥VLAN实战:从零构建安全隔离的二层虚拟网络

本文详细讲解了如何在RouterOS上利用网桥和VLAN功能,从零开始构建安全隔离的二层虚拟网络。通过分步实战演示,涵盖核心概念、网桥创建、PVID设置、VLAN规则配置及安全过滤,帮助网络管理员实现办公、访客与服务器网络的逻辑隔离与灵活管理,提升网络安全性。

u9v0w的博客 505

「AI初识境」什么是深度学习成功的开始?参数初始化

https://www.toutiao.com/a6694435439375286797/ 这是《AI初识境》第5篇,这次我们说说初始化。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。 神经网络要优化一个非常复杂的非线性模型,而且基本没有全局最优解,初始化在其中扮演着非常重要的作用,尤其在没有BN等技术的早期,它直接影响模型能否收敛。 可以说万事开头难,没有好的初始化的深度...

喜欢打酱油的老鸟 443

用Python+OpenCV给斗地主做个‘外挂’:手把手教你写个桌面记牌器(附源码)

本文详细介绍了如何使用Python和OpenCV开发一个智能斗地主记牌器,包括环境搭建、图像采集与预处理、扑克牌识别技术及PyQt5界面设计。通过实战案例,帮助开发者掌握图像处理与界面开发的结合应用,提升游戏辅助工具的编写能力。

weixin_29079643的博客 547

通过采用下面方法检查内容,还是系统无法更新下载,但是错误代码变成了——下载错误 - 0x80004002-到底如何解决?必须重装系统吗?-这个到底是系统问题,还是硬件问题?

‌。

qq_15963745的博客 338

xavier初始化_【AI初识境】什么是深度学习成功的开始?参数初始化(xavier,he等)...

这是《AI初识境》第5篇,这次我们说说初始化。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。神经网络要优化一个非常复杂的非线性模型,而且基本没有全局最优解,初始化在其中扮演着非常重要的作用,尤其在没有BN等技术的早期,它直接影响模型能否收敛。可以说万事开头难,没有好的初始化的深度学习模型训练起来更难。 ...

weixin_39995943的博客 313

使用Gitlab 搭建私有镜像仓库(外置Nginx)

为了让团队尽快使用Gitlab的CI进行工作,必须做好Gitlab的初始化工作,大家都知道拉取镜像由于某些原因,会比较慢,因此构建自己的私有镜像仓库就成为了关键的一步。当然私有镜像仓库的搭建有很多种方式,这里直接使用Gitlab提供的镜像仓库功能。一揽子解决方案比较香。gitlab真的越来越好用了,有了这个镜像仓,也没必要再使用三方的镜像仓库了。Devops 真好用!

网尘的技术专栏 1829

xavier初始化_AI初识:参数初始化深度学习成功的开始

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。点击文末“”立刻申请入群~作者:全能言有三授权转载自公众号:有三AI【导读】神经网络要优化一个非常复杂的非线性模型,而且基本没有全局最优解,初始化在其中扮演着非常重要的作用。尤...

weixin_39657300的博客 419

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

AI修行三十篇文章到不惑,已经掌握了什么,接下来还要说什么

文/编辑 | 言有三AI修行之路系列文章是有三AI的代表性作品,共分为5个系列,分别是AI白身境,AI初识境,AI不惑境,AI有识境,不可知。其中前4个系列我们会推出对应...

hacker_long的专栏 571

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【硬核科技】转行AI,从零出发

文/编辑 | 言有三AI修行之路系列文章是有三AI的代表性作品,共分为5个系列,分别是AI白身境,AI初识境,AI不惑境,AI有识境,不可知。其中前4个系列我们会推出对应...

湾区人工智能 308

【AI初识境】如何增加深度学习模型的泛化能力​​​​​​​

文章首发于微信公众号《有三AI》 【AI初识境】如何增加深度学习模型的泛化能力 这是专栏《AI初识境》的第9篇文章。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。 今天来说说深度学习中的generalization问题,也就是泛化和正则化有关的内容。 作者&编辑| 言有三 1 什么是generalization 机器学习方法训练出来一个模型,希望它不仅...

hacker_long的专栏 1762

「AI初识境」被Hinton,DeepMind和斯坦福嫌弃的池化到底是什么?

https://www.toutiao.com/a6694763453334159880/ 这是专栏《AI初识境》的第8篇文章。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。 今天来说说深度学习中的池化问题,包含池化的种类,作用机制以及最新的思考。 作者&编辑 | 言有三 1 池化还要不要了 这一次咱们反着来,说说学术界对池化的最新观点。通常我们认为,池化可以增...

喜欢打酱油的老鸟 597

「AI初识境」如何增加深度学习模型的泛化能力

https://www.toutiao.com/a6694764857343869454/ 2019-05-25 09:06:50 这是专栏《AI初识境》的第9篇文章。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。 今天来说说深度学习中的generalization问题,也就是泛化和正则化有关的内容。 作者&编辑 | 言有三 1 什么是generalizatio...

喜欢打酱油的老鸟 1709

人工智能-python-深度学习-初识Tensor

本文介绍了人工智能(AI)的基本概念及其实现过程,重点阐述了深度学习框架Torch和张量(Tensor)的核心知识。AI通过模拟人类智能行为,依托数据、算法和计算力解决问题。Torch作为高效的深度学习框架,支持GPU加速和灵活建模。Tensor作为基础数据结构,具有多维、自动求导和设备切换等特点。文章详细讲解了Tensor的创建方式、属性操作、数据转换及设备管理,并强调了其在AI开发生态中的重要性,为深度学习实践奠定基础。

x112xxds的博客 1044

【AI初识境】如何增加深度学习模型的泛化能力

这是专栏《AI初识境》的第9篇文章。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。今天来说说深度学习中的generalization问题,也就是泛化和正则化有...

hacker_long的专栏 1602

2019年上半年收集到的人工智能深度学习方向干货文章

2019年上半年收集到的人工智能深度学习方向干货文章 随机森林VS神经网络:哪个更好? 深度学习--感知机讲解 深度学习NN、CNN、RNN、和DNN你了解吗? 手工计算深度学习模型中的参数数量 使用神经网络生成抽象随机艺术 如何优化深度学习模型 形象理解深度学习中八大类型卷积 「AI初识境」深度学习中常用的损失函数有哪些? 「AI初识境」给深度学习新手做项目的1...

喜欢打酱油的老鸟 942

【完结】12篇文章告诉你深度学习理论应该学到什么水平

专栏《AI初识境》正式完结了,在这一个专题中,我们给大家从神经网络背景与基础,讲到了深度学习中的激活函数,池化,参数初始化,归一化,优化方法,正则项与泛化能力,讲到了深度学习中的评测指标,优化目标,以及新手开始做训练时的注意事项。 消化完这12期文章后,你肯定具备了扎实的深度学习理论基础,接下来就大胆地往前走吧,下面再次回顾提炼一下主要内容。 作者&编辑 | 言有三 1、...

hacker_long的专栏 1649

<深度学习初识>——《深度学习》

深度学习通识及知识框架总结。

m0_57859086的博客 1358

batch normalization_【AI初识境】深度学习模型中的Normalization,你懂了多少?

这是《AI初识境》第6篇,这次我们说说Normalization。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。数据经过归一化和标准化后可以加快梯度下降的求解速度,这就是Batch Normalization等技术非常流行的原因,它使得可以使用更大的学习率更稳定地进行梯度传播,甚至增加网络的泛化能力。今天就来说说和Batch Normalization相关的概念。作者&amp...

weixin_39911916的博客 141
上一篇: 【AI初识境】激活函数:从人工设计到自动搜索
下一篇: 【AI初识境】深度学习模型中的Normalization,你懂了多少?
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值