DL Homework 5

目录

习题4-1 对于一个神经元​编辑,并使用梯度下降优化参数w时,如果输入x恒大于0,其收敛速度会比零均值化的输入更慢。

习题4-5 如果限制一个神经网络的总神经元数量(不考虑输入层)为N+1,输入层大小为​编辑,输出层大小为1,隐藏层的层数为L,每个隐藏层的神经元数量为​编辑,试分析参数数量和隐藏层层数L的关系。

习题4-7 为什么在神经网络模型的结构化风险函数中不对偏置b进行正则化?

习题4-8 为什么在用反向传播算法进行参数学习时要采用随机参数初始化的方式而不是直接令W=0,b=0?

习题4-9 梯度消失问题是否可以通过增加学习率来缓解?

总结


习题4-1 对于一个神经元\sigma (w^{T}x+b),并使用梯度下降优化参数w时,如果输入x恒大于0,其收敛速度会比零均值化的输入更慢。

        分析一下这句话,首先采用的是Sigmoid函数,且函数的性质,如图所示

        代码如下:

import numpy as np
import matplotlib.pyplot as pltdef sigmoid(x):y = 1 / (1 + np.exp(-x))return yx = np.linspace(start=-5, num=50, stop=5)
plt.figure()
y = sigmoid(x)
plt.plot(x, y)
# 设置坐标轴
ax = plt.gca()
# 取消右侧和上侧坐标轴
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 设置默认的x轴和y轴方向
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置坐标原点为(0,0)
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))
plt.title('f(x)=Sigmoid')
plt.figure()
y = y * (1 - y)
plt.plot(x, y)
plt.title('f\'(x)')
# 设置坐标轴
ax = plt.gca()
# 取消右侧和上侧坐标轴
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 设置默认的x轴和y轴方向
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置坐标原点为(0,0)
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))
plt.show()

        零均值化是什么?

        零均值化是一种常见的数据预处理方法,也称为特征中心化。它通过将数据减去其均值,使得数据的均值变为0。具体而言,对于输入数据集X,零均值化的过程可以表示为 X_new = X - mean(X),其中mean(X)是数据集X的均值。

        同时根据对Sigmoid梯度的观察我们得到了问题的答案,数据经过零均值化后,使得输入的数据分布接近零中心。从而使梯度大小和方向更加稳定(可见Sigmoid梯度的函数在零中心附近的分布),从而提高收敛的速度。

  扩展

        为什么要采取零均值化或者说零均值化有什么好处?

  1. 增加收敛速度:零均值化可以使数据的分布接近零中心,消除数据中的偏差。这有助于减少梯度下降过程中的震荡现象,使得优化算法更快地找到全局最优解或局部最优解,从而加快模型的收敛速度。

  2. 提高模型的稳定性:如果数据的均值较大,那么梯度更新的幅度也会相应增大。这可能导致模型训练过程不稳定,难以获得良好的收敛性能。通过零均值化,可以减小梯度的幅度,使得优化过程更加稳定,从而提高模型的稳定性和可靠性。

  3. 增加模型的泛化能力:零均值化可以减小特征之间的尺度差异,使得不同特征的权重更加平衡。这可以避免某些特征对模型训练的主导影响,从而提高模型的泛化能力。通过零均值化,模型能够更好地学习特征之间的关系,提高对新样本的预测准确性。

  4. 降低模型过拟合的风险:过拟合是指模型在训练集上表现良好,但在测试集或新样本上表现不佳的现象。零均值化可以帮助降低模型过拟合的风险,因为它有助于减小特征之间的相关性和共线性,提高模型对新数据的泛化能力。

     预处理的其他常用的操作:

        1.特征缩放:将输入数据按比例缩放到一定范围内,如[0, 1]或[-1, 1]。常用的特征缩放方法包括最小-最大缩放和标准化。

  • 最小-最大缩放(Min-Max Scaling):将数据线性映射到指定的范围内,公式为 X_scaled = (X - min(X)) / (max(X) - min(X))。

  • 标准化(Standardization):将数据转化为均值为0,标准差为1的标准正态分布。标准化的公式为 X_scaled = (X - mean(X)) / std(X)。

        2.特征编码:对于分类任务中的类别型特征,可以使用独热编码(One-Hot Encoding)将其转换为二进制表示,以便神经网络能够更好地处理。

        预处理的好处:

  • 提高模型性能:预处理可以使得数据更适合于神经网络的训练,从而提高模型的性能和泛化能力。
  • 改善优化过程:通过预处理,可以减小梯度下降的不稳定性,加快优化过程的收敛速度。
  • 减少模型偏见:预处理可以去除数据中的偏差,使得模型更加公正地学习特征之间的关系。
  • 提高模型鲁棒性:通过预处理可以减小数据的尺度差异,增加模型对噪声和异常值的鲁棒性。

习题4-5 如果限制一个神经网络的总神经元数量(不考虑输入层)为N+1,输入层大小为M_{0},输出层大小为1,隐藏层的层数为L,每个隐藏层的神经元数量为,试分析参数数量和隐藏层层数L的关系。

首先,对于一个前馈神经网络,参数主要包括权重和偏置,层与层之间是全连接

假设隐藏层平分所有神经元,且能完整平分

可以把神经网络分成三部分

  1. 输入层到第一个隐藏层之间的参数数量:

    • 权重:需要连接输入层的每个神经元与第一个隐藏层的每个神经元,共有个权重。
    • 偏置:由于每个隐藏层的神经元数量都是 ,所以第一个隐藏层共有 个神经元,因此需要 个偏置。
  2. 第一个隐藏层到最后一个隐藏层之间的参数数量:

    • 权重:每个隐藏层之间的连接都满足每个神经元与其他神经元之间都有权重连接,因此共有个权重。
    • 偏置:由于每个隐藏层的神经元数量都是 ,所以从第二个隐藏层到最后一个隐藏层共有个偏置。
  3. 最后一个隐藏层到输出层之间的参数数量:

    • 权重:需要连接最后一个隐藏层的每个神经元与输出层的神经元,共有 个权重。
    • 偏置:因为输出层只有一个神经元,所以只需要1个偏置。

综上所述,参数数量的计算公式为: 

大概化简一下

咳咳,看不出来单调性,虽然我们都知道一定是单调增的

代数法!!!

  1. 当L=1时,即只有一个隐藏层

  2. 当L=2时,有两个个隐藏层

 到此我好像都没弄清楚到底是不是递增的嘶,插个眼,等晚点回来再算,现在脑子有点迷糊

习题4-7 为什么在神经网络模型的结构化风险函数中不对偏置b进行正则化?

        在神经网络模型中,偏置 b 是每个神经元的偏移量,用于控制神经元的激活水平。虽然偏置b和权重w具有类似的作用,都是调整神经元的输出,但两者的性质有所不同。权重 w 在模型训练过程中是需要更新的,通过反向传播算法来进行梯度下降更新。正则化可以有效地控制权重的大小,抑制过拟合现象。而对于偏置 b,它不同于权重 w,一般情况下是初始化为 0 或者随机值,而不是需要训练得到的。因此,在训练过程中不需要对偏置b进行正则化操作,因为偏置 b本身不会引起过拟合问题。

        并且如果对b进行惩罚,其实是没有作用的,因为在对输出结果的贡献中,参数b对于输入的改变是不敏感的,不管输入改变是大还是小,参数b的贡献就只是加个偏置而已。举个例子,如果你在训练集中,w和b都表现得很好,但是在测试集上发生了过拟合,b是不背这个锅的,因为它对于所有的数据都是一视同仁的(都只是给它们加个偏置),要背锅的是w,因为它会对不同的数据产生不一样的加权。

        更直白的说,偏置在偏导中是为0的是不对对模型参数引起改变,真正会引起不良改变的是w。

        顺便提一下,吴恩达老师说,其实是可以对b加偏置的,但是没必要,因为做不做没什么区别,所以这也是个不加正则化的理由吧~老师的视频链接

习题4-8 为什么在用反向传播算法进行参数学习时要采用随机参数初始化的方式而不是直接令W=0,b=0?

    

  1. 对称性破坏: 当所有的权重和偏置都被初始化为零时,神经网络中每个隐藏层的所有神经元将是对称的。这样一来,在反向传播过程中,梯度的更新会变得对称,导致每个隐藏层的神经元始终更新相同的梯度。结果是,无论网络有多少层,它们最终都会执行相同的功能,失去了多层网络的优势,这种现象称为对称权重现象。

  2. 防止陷入局部最优解: 如果所有的参数都初始化为零,那么所有的神经元在前向传播过程中将会计算相同的值,从而导致在反向传播过程中梯度也相等。这将使得神经网络更容易陷入局部最优解。通过随机初始化,我们可以给每个参数赋予一个随机的初始值,增加了网络发现全局最优解的可能性,并且能够更好地逃离局部最优解。

偷的学长的一个图(因为我跑了半天,没跑出来这个图,咳咳),很明确的指出,对称权重的危害!!!二分类准确率维持为50%左右,说明模型没有学到任何内容。反向更新毫无效果,训练和验证loss几乎没有怎么下降。

        除了随机参数初始化,我们还可以怎样令网络避免对称权重现象?

        Dropout正则化:Dropout是一种通过随机断开网络中某些神经元连接的方法,在网络的训练过程中起到随机删除部分神经元的作用。Dropout可以有效避免对称权重现象,因为它可以防止网络中某些神经元过于强调某些输入特征,从而保证了每个神经元都学习到不同的特征。同时,Dropout还可以有效地防止过拟合,提高了模型的泛化能力。

习题4-9 梯度消失问题是否可以通过增加学习率来缓解?

        梯度消失问题是指。在深度神经网络中,随着反向传播算法向前传递梯度时,梯度逐渐变小到接近于零的现象

        增加学习率在一定程度上可以缓解。适当增大学习率可以使学习率与导数相乘结果变大,缓解梯度消失;过大学习率可能梯度巨大,导致梯度爆炸。

为缓解梯度消失问题,可以考虑以下方法:

  1. 使用激活函数:选择合适的激活函数可以缓解梯度消失问题。例如,ReLU (Rectified Linear Unit) 激活函数能够有效地抑制梯度消失,并且在实际应用中被广泛使用。

  2. 权重初始化:合理的权重初始化可以减少梯度消失问题。通过选取适当的初始化方法,如Xavier或He初始化,可以使得权重具有合理的范围和分布,有助于梯度的传播和避免梯度消失。

  3. 使用批归一化(Batch Normalization):批归一化可以加速模型的训练过程,同时有助于缓解梯度消失问题。它通过对每一层的输入进行归一化操作,使得数据分布更加稳定,有利于梯度的传播。

  4. 调整网络结构:合理设计网络结构也可以减轻梯度消失问题。例如,使用残差连接(Residual Connections)可以使得信息更容易跨层传播,从而避免梯度逐渐消失。

        总之,增加学习率并不是解决梯度消失问题的有效方法。合理选择激活函数、权重初始化,使用批归一化和调整网络结构等方法更为可靠。

总结

        本次作业其实总体来说比较简单,很多东西好像在写实验的博客的时候都接触过,这次作业就像一个汇总,把零零碎碎之前写过的一些知识点合起来写一个博客,但是也是有新收获的,之前虽然考虑过为什么不对b做偏置,但是后来因为自己懒还是没有明确,这次作业也算是一个敲响自己的警钟了, 以后不能随便偷懒,万一面试等等环境遇到,岂不是亏死!!!fighting!

参考

4.3 正则化_哔哩哔哩_bilibili

【精选】NNDL 作业4:第四章课后题-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/156046.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyQuery库写一个有趣的爬虫程序

PyQuery库是一个基于jQuery语法的Python库,它可以方便地对HTML/XML文档进行解析和操作。使用PyQuery库可以快速地获取网页中的数据,进行数据清洗和分析。PyQuery库的基本用法包括字符串初始化、打开网页、css属性、标签内容等获取、DOM基本操作等相关技巧…

基于吉萨金字塔建造算法的无人机航迹规划-附代码

基于吉萨金字塔建造算法的无人机航迹规划 文章目录 基于吉萨金字塔建造算法的无人机航迹规划1.吉萨金字塔建造搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用吉萨金字塔建造算法…

NLP之LSTM与BiLSTM

文章目录 代码展示代码解读双向LSTM介绍(BiLSTM) 代码展示 import pandas as pd import tensorflow as tf tf.random.set_seed(1) df pd.read_csv("../data/Clothing Reviews.csv") print(df.info())df[Review Text] df[Review Text].astyp…

思维训练 第四课 省略句

系列文章目录 文章目录 系列文章目录前言一、省略的十五种情况1.并列复合句中某些相同成分的省略2.在用when, while, if, as if, though, although, as ,until, whether等连词引导的状语从句中,如果谓语有be,而主语又跟主句的主语相同或是(从句主语是&am…

STM智能小车——OLED实现测速小车

目录 1. 测速模块 2. 测试原理和单位换算 3. 定时器和中断实现测速开发和调试代码 4. 小车速度显示在OLED屏 1. 测速模块 用途:广泛用于电机转速检测,脉冲计数,位置限位等。有遮挡,输出高电平;无遮挡,输出低电平接线…

Linux———— 运算命令

Shell与其他编程语言一样,支持多种类型的运算符,包括: 算术运算符:用于执行数学运算,例如加法、减法、乘法和除法。 关系运算符:用于比较两个值之间的关系,例如相等、大于、小于等。 布尔运算…

3 — NLP 中的标记化:分解文本数据的艺术

一、说明 这是一个系列文章的第三篇文章, 文章前半部分分别是: 1 、NLP 的文本预处理技术 2、NLP文本预处理技术:词干提取和词形还原 在本文中,我们将介绍标记化主题。在开始之前,我建议您阅读我之前介绍的关…

前聚美优品运维负责人谈CMDB

导读CMDB大家并不陌生,在运维的工作中几乎都会用到CMDB,在聚美内部我们也称它为资产系统,管理整个服务器的资产,当然也包括一些配置上的变更。 讲师介绍 张川,前聚美优品运维负责人。任职聚美优品四年间,负…

解决ubunut20.04系统麦克风异常问题

背景 在部分ubunut环境中,我们指定了麦克风的下标,使用指定的麦克风有问题,只能录音一次,第二次就失效了,不过只是部分ubunut系统会遇到这个情况 # 找到以usb_mic_prefix为前缀的麦克风下标 import speech_recognitio…

10步搭建跨境商城,打造全球销售帝国

我将向您介绍如何通过10个简明步骤搭建一个强大的跨境商城,从而打造一个覆盖全球的销售帝国。在这个全球化时代,跨境电商已成为许多企业扩大业务的关键途径。然而,搭建一个成功的跨境商城并不容易,需要充分了解市场需求、制定合适…

【备忘录】SpringBoot+ dynamic-datasource配置自定义多数据源

一、 业务场景解释 由于公司业务需要开发设计一款文件读取导入工具,导入的配置和目标数据库并不一定在同一个数据库地址,故需要使用到自定义数据源,并且支持数据源切换 大致场景如下: 二、工具选择 鉴于市面上有很多工具&#…

matab读取包含struct混合类型的mat文件转为txt文件

现有一个mat文件,其内容如下: 目标:要将data.mat中的Obs_Iridium_A为文本格式。 分析: data.mat里面包含了4个struct结构的成员,Obs_Iridium_A是其中之一,Obs_Iridium_A为1*7496维,7496代表里…