当前位置: 首页 > news >正文

【人工智能基础06】人工神经网络基础(二):1. 权值初始化(权值优化、避免梯度爆炸、消失)、2. 权值衰减(防止过拟合)与 3. 权值共享(卷积核)

文章目录

  • 一. 权值初始化
    • 1. 零初始化(Zero Initialization)
    • 2. 随机初始化(Random Initialization)
    • 3. Xavier初始化
    • 4. Kaiming初始化(Kaiming Initialization)
  • 二. 权值衰减:通过正则防止过拟合
    • 1. 作用机制
    • 2. 目的
    • 3. 应用场景
  • 三. 权值共享与卷积:处理过拟合的问题
    • 1. 定义
    • 2. 作用
      • 2.1. 减少参数数量
      • 2.2. 平移不变性
    • 3. 实现逻辑

一. 权值初始化

权值初始化通过调整权值的分布使得输出与输入具有相同的分布,

权值初始化主要有以下作用:

  • 打破对称性:避免神经元因初始权值相同而等价,使每个神经元能学习不同特征。
  • 避免梯度问题:防止梯度消失或梯度爆炸,像Xavier和Kaiming初始化方法能根据网络情况稳定梯度。
  • 加速收敛:让网络在训练初期处于良好状态,加快损失函数下降,提升训练效率。

在这里插入图片描述

1. 零初始化(Zero Initialization)

零初始化将神经网络中的所有权值都初始化为0。 这种方法简单,但存在严重问题。

在神经网络中,如果所有神经元的权重初始值都相同,那么在反向传播时,所有神经元将计算出相同的梯度,导致它们的权重更新也相同。这样,多个神经元就会变得完全等价,相当于只有一个神经元在起作用,网络无法学习到有效的特征

因此,零初始化一般不被采用,尤其是在深层神经网络中。

 

2. 随机初始化(Random Initialization)

从一个特定的概率分布(如均匀分布或正态分布)中随机采样来初始化权值。例如,使用均值为0、标准差为1的正态分布来初始化权重。

这种方法打破了对称性问题,使每个神经元具有不同的初始权重,能够学习到不同的特征。然而,随机初始化存在一个潜在问题:如果随机分布的标准差选择不当,可能会导致梯度消失或梯度爆炸问题,尤其是在深层神经网络中。

例如,在深层网络中,如果权重初始值过大,在前向传播过程中,激活值可能会迅速增大,导致梯度爆炸;反之,如果权重初始值过小,激活值可能会迅速趋近于0,导致梯度消失。

 

3. Xavier初始化

由Xavier Glorot提出,

  • 对于线性激活函数(如tanh),权重的初始化通常基于均匀分布 U ( − 1 n i n , 1 n i n ) U\left(-\frac{1}{\sqrt{n_{in}}},\frac{1}{\sqrt{n_{in}}}\right) U(nin 1,nin 1),其中 n i n n_{in} nin是输入神经元的数量;
  • 对于ReLU激活函数,基于正态分布 N ( 0 , 2 n i n + n o u t ) N\left(0,\frac{2}{n_{in}+ n_{out}}\right) N(0,nin+nout2),其中 n i n n_{in} nin是输入神经元数量, n o u t n_{out} nout是输出神经元数量。

适应场景

  • Xavier初始化的目的是使得每一层的输入和输出的方差尽量相等,从而缓解梯度消失和梯度爆炸问题
  • 它适用于具有线性激活函数(如tanh)和ReLU激活函数的神经网络,特别是在浅层到中层的神经网络中表现较好。

 

4. Kaiming初始化(Kaiming Initialization)

由何恺明提出,针对ReLU及其变种激活函数(如Leaky - ReLU),权重初始化基于正态分布 N ( 0 , 2 n i n ) N\left(0,\sqrt{\frac{2}{n_{in}}}\right) N(0,nin2 )

由于ReLU激活函数在 x < 0 x < 0 x<0时输出为0,导致神经元输出的方差会有偏差。Kaiming初始化通过考虑ReLU的这种特性,使得每一层的输出方差保持相对稳定,有效缓解了使用ReLU激活函数时的梯度消失问题

它特别适用于以ReLU及其变种为激活函数的深层神经网络。

 
权值初始化总结

  • 好的初始化方法可以防止前向传播过程中的信息消失,也可以解决反向传递过程中的梯度消失
  • 激活函数选择双曲正切(ReLU)或者Sigmoid时,建议使用Xaizer初始化方法;
  • 激活函数选择ReLY或Leakly ReLU时,推荐使用He初始化方法。

 

二. 权值衰减:通过正则防止过拟合

权值衰减是一种在神经网络训练过程中用于防止过拟合的正则化技术。

1. 作用机制

  • 从优化的角度看,权值衰减项相当于对权重施加了一个约束。在训练过程中,当更新权重时,这个惩罚项会使得权重倾向于朝着使权重范数减小的方向更新。
  • 例如,在梯度下降更新权重时,对于L2权值衰减,权重更新公式变为 w t + 1 = w t − α ( ∇ L o r i g i n a l ( w t ) + 2 λ w t ) w_{t + 1}=w_{t}-\alpha\left(\nabla L_{original}(w_{t}) + 2\lambda w_{t}\right) wt+1=wtα(Loriginal(wt)+2λwt),其中 α \alpha α是学习率, ∇ L o r i g i n a l ( w t ) \nabla L_{original}(w_{t}) Loriginal(wt)是原始损失函数关于权重的梯度。可以看到,权值衰减项(2\lambda w_{t})会使权重的更新受到抑制,尤其是当权重较大时。

 

2. 目的

  1. 防止过拟合
    在神经网络训练过程中,如果模型过于复杂或者训练数据有限,很容易出现过拟合现象。权值衰减通过限制权重的大小,使得模型不能过于依赖某些特定的特征或者权重组合,从而降低模型的复杂度。

  2. 提高模型的泛化能力
    通过权值衰减,模型能够更好地适应不同的数据分布,减少对训练数据中噪声的过度拟合。
    例如,在图像分类任务中,如果没有权值衰减,模型可能会过度学习训练图像中的一些细微特征(如特定的噪声、背景图案等),而权值衰减可以使模型更关注于图像中的主要物体特征,从而在新的图像上也能正确分类。

 

3. 应用场景

  1. 深度神经网络的训练
    例如,在训练一个用于手写数字识别的卷积神经网络时,添加权值衰减可以有效防止模型对训练数据中某些特定数字的书写风格过度拟合,从而提高模型在新的手写数字样本上的识别准确率。
  2. 模型复杂度较高的情况
    当模型具有大量的参数(如深层网络、具有大量神经元的网络等)时,权值衰减尤其有用。因为参数越多,模型越容易过拟合,权值衰减可以有效地约束这些参数,防止模型过于复杂。

 

三. 权值共享与卷积:处理过拟合的问题

1. 定义

权值共享是卷积神经网络(CNN)中的一个核心概念。在 CNN 的卷积层中,卷积核(滤波器)在整个输入图像(或输入特征图)上滑动,并且在不同位置上使用相同的权重参数。

例如,一个 3×3 的卷积核在输入图像上滑动时,无论它在图像的左上角还是右下角进行卷积操作,其内部的 9 个权重参数都是相同的。

 

2. 作用

2.1. 减少参数数量

  • 在处理图像等数据时,如果不使用权值共享,对于一个大尺寸的输入图像,全连接网络需要学习的参数数量会极其庞大。例如,一张 1080p(1920×1080)的图像包含约 200 万个像素值,若使用一个有 1000 个神经元的全连接隐藏层来处理该图像,仅这一层就包含约 20 亿个参数。
  • 而权值共享使得网络参数数量只与卷积核的大小和数量有关,与输入图像的大小无关,大大减少了需要学习的参数数量,降低了计算成本和内存需求,同时也减少了过拟合的风险。

2.2. 平移不变性

  • 权值共享使网络具有平移不变性。这意味着无论目标物体在图像中的哪个位置出现,卷积核都能以相同的方式检测到它,因为在不同位置使用的是相同的权重

  • 例如,在人脸识别任务中,不管人脸出现在图像的中心还是边缘,卷积神经网络都能够利用权值共享机制,通过相同的卷积核来提取人脸的特征,这对于图像识别等任务非常重要。

 

3. 实现逻辑

  • 在卷积神经网络的计算过程中,通过将卷积核在输入图像上按一定的步长滑动,在每个滑动位置进行卷积操作。
  • 这个操作的数学过程是将卷积核的权重与对应的输入图像局部区域的像素值进行逐元素相乘然后求和,得到输出特征图中的一个元素。
  • 由于在整个滑动过程中,卷积核的权重保持不变,从而实现了权值共享。例如,对于一个输入为 n × n n×n n×n的图像和一个 k × k k×k k×k的卷积核 k < n k < n k<n,以步长为 s s s进行滑动卷积,输出特征图的大小 ( n − k ) / s + 1 (n - k)/s + 1 (nk)/s+1,而在这个过程中,卷积核的权重在所有滑动位置上都是共享的。

 


http://www.mrgr.cn/news/79526.html

相关文章:

  • c#动态更新替换json节点
  • OWASP 十大安全漏洞的原理
  • Spring Boot 进阶指南:深入核心与实战技巧
  • 【云计算】虚拟化技术
  • 第三部分:进阶概念 9.错误处理 --[JavaScript 新手村:开启编程之旅的第一步]
  • HTA8998 实时音频跟踪的高效内置升压2x10W免电感立体声ABID类音频功放
  • spring boot验证码
  • Kafka服务器的简单部署以及消息的生产、消费、监控
  • 【CKS最新模拟真题】获取多个集群的上下文名称并保存到指定文件中
  • Unity教程(十九)战斗系统 受击反馈
  • 避大坑!Vue3中reactive丢失响应式的问题
  • 链表OJ题型讲解与总结
  • 力扣每日一题 - 999. 可以被一步捕获的棋子数
  • 默认插槽,具名插槽(v-slot:具名,name=‘ ‘),作用域插槽
  • Ubuntu Linux 图形界面工具管理磁盘分区和文件系统(八)
  • 电子商务人工智能指南 1/6 - 搜索、广告和发现
  • 1-1 C语言链表
  • 报错:Invalid HTTP method: PATCH executing PATCH http://XXX.XXX
  • HarmonyOS(63) ArkUI 自定义占位组件NodeContainer
  • centos部署SkyWalking并在springcloud项目中用法举例
  • openharmony开发资料合集
  • 13.在 Vue 3 中使用OpenLayers加载鹰眼控件示例教程
  • 18.[极客大挑战 2019]BabySQL1
  • 书后习题答案:《Python程序设计基础(第2版)》,电子工业出版社,2020.01
  • SpringBoot自动配置底层核心源码
  • 电子商务人工智能指南 2/6 - 需求预测和库存管理