牛客网算法八股刷题系列(九)训练过程损失函数不下降问题

news2024/11/25 4:22:30

牛客网算法八股刷题系列——训练过程损失函数不下降问题

题目描述

在训练神经网络时,损失函数 ( Loss ) (\text{Loss}) (Loss)在最初的几个 Epoch \text{Epoch} Epoch没有下降,可能的原因是:

A \mathcal A \quad A学习率 ( Learning Rate ) (\text{Learning Rate}) (Learning Rate)太低

B \mathcal B \quad B正则参数 λ \lambda λ太高

C \mathcal C \quad C陷入局部极小值

D \mathcal D \quad D以上都有可能

正确答案: D \mathcal D D

题目解析

根据题干中的描述,默认的是梯度下降法,并且是训练过程中,损失函数不下降。

关于 A \mathcal A \quad A 选项,从学习率角度观察该问题时,主要原因是:在某神经元中各权重分量取值范围不平衡 的情况下,权重初始位置处于一个平滑 ( Flat ) (\text{Flat}) (Flat)范围。当学习率较小时,我们在训练初期可能无法快速找到正确的梯度方向。如下图所示的 r 2 r_2 r2初始化位置
学习率——损失函数不下降
针对这种情况的发生,我们自然想要增大学习率,使得平滑位置的初始化权重能够快速收敛至最优解区域(红色范围)。但实际上初始化权重的位置在权重空间中的任意位置都有可能。因此我们需要:

  • 手动调整学习率,从而选择一个合适的初始学习率;
  • 当损失函数收敛稳定的时候,再减小学习率,使其能够找到更好的最优点

因此, A \mathcal A \quad A 选项正确。

关于 B \mathcal B \quad B 选项,我们在正则化——拉格朗日乘数法中介绍过,其目标函数 L ( W , λ ) \mathcal L(\mathcal W,\lambda) L(W,λ)可表示为如下形式:
L ( W , λ ) = J ( W ) + λ ∣ ∣ W ∣ ∣ 2 − λ ⋅ C \begin{aligned} \mathcal L(\mathcal W,\lambda) = \mathcal J(\mathcal W) + \lambda||\mathcal W||_2 - \lambda \cdot \mathcal C \end{aligned} L(W,λ)=J(W)+λ∣∣W2λC

  • 其中 J ( W ) + λ ∣ ∣ W ∣ ∣ 2 \mathcal J(\mathcal W) + \lambda ||\mathcal W||_2 J(W)+λ∣∣W2使我们常见的基于 L 2 L_2 L2正则化的损失函数表达形式, λ \lambda λ是一个大于 0 0 0的常数;
  • C \mathcal C C表示 L 2 L_2 L2范数在权重空间中描述的正则化范围的半径,也是一个常数

因而 λ ⋅ C \lambda \cdot \mathcal C λC并不影响权重 W \mathcal W W的梯度。也就是说, λ ⋅ C \lambda \cdot \mathcal C λC W \mathcal W W梯度方向无关。但在梯度下降法中,其目的是在每次迭代过程中找到一个与最优梯度大小相等、方向相反向量,因而 λ ⋅ C \lambda \cdot \mathcal C λC的作用是调整该数值,使得梯度向量大小与最优梯度大小相等

这意味着, λ ⋅ C \lambda \cdot \mathcal C λC约束——用于调整反向的梯度向量大小:

  • λ \lambda λ数值较大时,由于 λ ⋅ C \lambda \cdot \mathcal C λC被约束,则 C \mathcal C C值较小。 C \mathcal C C值小意味着 L L L范数在权重空间描述的正则化范围。即便是在正则化范围内逐步找到了最优权重,但该结果依然与最优权重相差较大:
    lambda约束对损失函数下降的影响

观察上图,当 λ 1 > λ 2 \lambda_1 >\lambda_2 λ1>λ2时,对应的正则化范围半径 C 1 < C 2 \mathcal C_1 < \mathcal C_2 C1<C2,对应的正则化范围越小。

  • 其中红色点表示 C 1 \mathcal C_1 C1对应正则化范围在 J ( W ) \mathcal J(\mathcal W) J(W)上的最优值
  • 同理,橙色点表示 C 2 \mathcal C_2 C2对应正则化范围在 J ( W ) \mathcal J(\mathcal W) J(W)上的最优值。

很明显,橙色点红色点更接近 J ( W ) \mathcal J(\mathcal W) J(W)最优解区域(红色椭圆区域)。对应在损失函数上,橙色点的损失函数下降过程会更明显。而红色点相比之下下降缓慢甚至停止下降。这同样也是欠拟合( Under-Fitting \text{Under-Fitting} Under-Fitting)的表现。 B \mathcal B \quad B 选项正确。

关于 C \mathcal C\quad C 选项,它可看做是 A \mathcal A\quad A 选项中的一种特殊情况。当 J ( W ) \mathcal J(\mathcal W) J(W)比较复杂的情况下,可能存在若干个极值点
复杂的损失函数登高线中包含若干个极值点
其中 ( 1 ) (1) (1)表示全局极小解区域 ( 2 ) (2) (2)表示鞍点 ( 3 ) (3) (3)表示局部极小解区域红色点的优化路径表示期望状态下的优化路径;相比之下,橙色点蓝色点都会使模型学习结果不准确

如果在 ( 2 ) , ( 3 ) (2),(3) (2),(3)解区域附近生成的初始权重位置,使他们更容易进入 ( 2 ) , ( 3 ) (2),(3) (2),(3)解区域并在后续迭代过程中较难跳出,最终会产生损失函数在训练初期较难下降的情况。因此 C \mathcal C\quad C 选项正确。

综合 A B C \mathcal A\quad \mathcal B\quad \mathcal C\quad ABC 三个选项均有可能发生,因此选择 D \mathcal D \quad D 选项。

延伸:训练过程损失函数不下降的其他情况

上述选项分别从正则化学习率权重初始位置三个角度描述了损失函数不下降的情况。

我们在 B \mathcal B \quad B 选项中提到了欠拟合。引起欠拟合的原因还包含:

  • 模型结构问题。当模型设计较简单——隐藏层、神经元少时,这可能导致模型拟合数据能力不足,具体做法是提升模型的复杂度

  • 权重初始化方式问题。不同的权重初始化方式会影响权重初始位置。常见的初始化方法有:零初始化均匀分布高斯分布等。

  • 特征选择问题。其中一个方向是特征选择不合理,导致数据集内包含无效特征,从而增加神经网络的学习难度;具体做法是剔除无效特征

    另一个方向是样本特征过于简单、信息量不足,即便模型学习了该特征,也无法得到期望的预测结果。具体做法是考虑加入特征组合、高次特征来丰富样本的特征空间,并且高次特征能够增加模型对于高次项的调动,从而提升模型的复杂度。
    详见正则化——权重衰减角度泰勒公式部分。

  • 激活函数的选择问题。在神经网络学习过程中,可能出现饱和区间问题——输出特征大量存在与激活函数的饱和区间中,导致权重信息梯度消失,最终导致模型提前拟合。具体做法是调整合适的激活函数。如 ReLU \text{ReLU} ReLU。以及批标准化( Batch Normalization \text{Batch Normalization} Batch Normalization),残差网络 ( ResNet ) (\text{ResNet}) (ResNet)等等。
    挖坑,关于‘残差网络’在后续进行介绍。

除此之外,关于数据集 Batch \text{Batch} Batch划分问题。如果 BatchSize \text{BatchSize} BatchSize划分过小,会导致各 Batch \text{Batch} Batch内的样本子集分布之间差异较大,从而在模型学习过程中损失函数波动较大,难以收敛(有益的影响:轻易不会陷入局部极小值/鞍点);
挖坑,后续介绍 BatchSize \text{BatchSize} BatchSize的划分问题。

如果 BatchSize \text{BatchSize} BatchSize划分过大,先不管内存问题,梯度下降的随机性减小了,首先导致收敛速度降低;其次,容易陷入极小值/鞍点

相关参考:
loss非常大一直不下降,val_loss几十徘徊是为什么?

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

delphi 实现Ribbon风格的窗体

随着office2007的兴起&#xff0c;微软让我们看到了Ribbon风格的窗体&#xff0c;现在很多软件也都开始使用Ribbon风格。 那么我们如果要自己开发&#xff0c;应当怎么做呢&#xff1f;本文就是为大家解开这个疑团的。 首先&#xff0c;Delphi本身并没有Ribbon风格的窗口可以直…

epoll为什么用红黑树?

网络编程的时候有没有碰到过 Socket 对象&#xff1f;或者在配置代理的时候&#xff0c;有没有碰到配置 Socket 地址&#xff1f;当你看到服务端 Socket、客户端 Socket 等名词时&#xff0c;是否可以明确理解这些概念&#xff1f; 学习好这些知识有一条主线&#xff0c;就是抓…

Dockerfile构建镜像缓慢解决方案总结

分几种不同的情况&#xff0c;不断更新中 1、Dockerfile apk add 下载更新软件时&#xff0c;比较慢&#xff0c;如何解决 例子如下&#xff1a; 更好一下仓库源 RUN sed -i s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g /etc/apk/repositories或者改成科大的镜像 RUN…

android核心架构Framework组件介绍

作为一个android开发者&#xff0c;核心架构是必须要了解的。只有了解每个核心层的作用&#xff0c;才能更深入的理解和学习。本篇主要讲解Java Framework层核心代码流程。 文章目录一&#xff0c;Android系统架构1.System Apps2.Java Framework3.系统运行库层4.硬件抽象层&…

Matplotlib库的简单用法

Matplotlib库的简单用法 Matplotlib是python科学计算中最基础、最重要的绘图库&#xff0c;是Python中最流行的数据可视化库之一&#xff0c;它提供了大量的绘图函数和工具&#xff0c;可以让用户创建各种类型的图表和图形&#xff0c;一般使用matpltlib完全可以满足我们绘图需…

“成功学大师”杨涛鸣被抓

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 4月15日&#xff0c;号称帮助一百多位草根开上劳斯莱斯&#xff0c;“成功学大师”杨涛鸣机其团队30多人已被刑事拘留&#xff0c;培训课程涉嫌精神传销&#xff0c;警方以诈骗案进行立案调查。 …

基于4412的dm9000驱动移植

1 概述 以太网高速稳定的特性比Wifi无线传输有一定的优势&#xff0c;当无线传输无法满足一些智能设备&#xff0c;需要开发设计以太网模块。Linux支持以太网系统&#xff0c;结合4412开发板&#xff0c;重点学习dm9000驱动的设计与实现。 2 硬件资源分析 2.1 4412开发板以太网…

【Python】Python中的列表,元组,字典

文章目录列表创建列表获取元素修改元素添加元素查找元素删除元素列表拼接遍历列表切片操作元组创建元组元组中的操作字典创建字典添加/修改元素删除元素查找字典的遍历合法的key类型列表 列表是一种批量保存数据的方式&#xff0c;列表使用[]表示 创建列表 创建两个空列表 …

nginx优化及配置

nginx隐藏版本号 查看方法 浏览器F12 看network头部看server curl -i 192.168.232.7 获取头部&#xff08;查版本号&#xff09; 配置文件改 添加server_tokens off 改源码 cd /src/core vim nginx.h 修改 修改的IIS为window常用的软件服务 重新编译安装 cd nginx_1.2…

【C++】while 循环应用案例 - 猜数字游戏

目录 1、缘起 2、案例描述 3、代码 4、相关知识点 4.1、rand() 函数 4.2、srand() 函数 5、总结 1、缘起 猜数字游戏是一种简单而又有趣的游戏&#xff0c;在这个游戏中&#xff0c;计算机会生成一个随机数字&#xff0c;玩家需要通过不断猜测来猜出这个数字。在本篇博…

使用docker搭建lnmp环境+redis服务

lnmp搭建过程&#xff0c;前文已经写了传送门&#xff0c;本文主要写一下运行redis容器和php-fpm容器内安装redis扩展 redis 1.创建宿主机配置和数据文件夹 [rootlocalhost ~] mkdir -p /lnmp/redis/{data,conf}2.放置/lnmp/redis/conf/redis.conf文件 点我下载 3.启动容器 …

k8s+kubeedge+sedna安装全套流程+避坑指南+解决办法

最近在学习边缘计算要用到kubeedge&#xff0c;安装了好多次总会遇到各种各样的问题&#xff0c;因此在这里一一列出&#xff0c;以方便下次安装。则里面可能出错的地方太多&#xff0c;如果有问题&#xff0c;请私信联系。 一、环境准备 节点IP环境软件云端节点172.23.70.23…

Python|矿产卫片Excel经纬度坐标数据转换为shp点数据——OGR库实现

1.实验需求 基于Excel表格里面的经纬度坐标数据,自动生成点shp矢量文件,并添加属性信息。 2.编程思路详解 ①使用Pandas库读取原始矿产图斑列表表格; xlsx_path = uC:\\Users\\YaoJun\\Desktop\\矿产图斑列表.xlsx #sheet_name默认为0,即读取第一个sheet的数据 df = pd.…

TPM管理工作应该如何开展?

在制造行业&#xff0c;Total Productive Maintenance&#xff08;TPM&#xff09;管理被广泛认为是提高生产效率和设备可靠性的有效方式。然而&#xff0c;实施TPM管理需要深入的专业知识和经验。本文将探讨如何开展TPM管理工作&#xff0c;以确保制造企业的生产效率和设备可靠…

2023-Python实现烯牛数据采集

文章目录&#x1f449;1、目标网址&#x1f449;2、接口分析&#x1f449;3、代码实现【JS 逆向百例】 1/100 学习记录&#xff1a;哈喽~ 前面我们接触了一些JS逆向的数据获取&#xff0c;如果前面的百度&#xff0c;有道翻译和正方教务系统的登录加密你已掌握&#xff0c;说明…

计组2.4——加法器的设计

计组&#xff1a;2.4算术逻辑单元异或门实现奇偶校验的原理串行加法器&&并行加法器并行加法器的优化算术逻辑单元 控制信号&#xff1a; 当M0时表示算术运算 当M1时表示逻辑运算 S0~ S3表示做什么运算&#xff0c;因此ALU可以表示16种算数运算和16种逻辑运算 Ai,Bi代表…

PL-VINS线特征处理部分源码阅读

PL-VINS线特征处理部分源码阅读1 linefeature_tracker2 三角化单目三角化双目三角化3 后端优化线特征状态量重投影误差本文主要阅读PL-VINS中引入线特征的代码实现&#xff0c;包括线特征表示方法&#xff08;Plcker参数化方法、正交表示法&#xff09;、前端线特征提取与匹配、…

遥感、GIS及GPS在土壤空间数据分析、适应性评价、制图及土壤普查中的应用

摸清我国当前土壤质量与完善土壤类型&#xff0c;可以为守住耕地红线、保护生态环境、优化农业生产布局、推进农业高质量发展奠定坚实基础&#xff0c;为此&#xff0c;2022年初国务院印发了《关于开展第三次全国土壤普查的通知》&#xff0c;决定自2022年起开展第三次全国土壤…

微信支付,JSAPI支付,APP支付,H5支付,Native支付,小程序支付功能详情以及回调处理

一.支付相关文档地址支付wiki&#xff1a;https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml支付api: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/index.shtml开发工具包(SDK)下载&#xff1a;https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtm…

靶机精讲之CTF4

主机发现 靶机193 端口扫描 服务扫描 80&#xff0c;25&#xff08;明确版本&#xff09;攻击面更大 web渗透 blog是交互式的程序 发现index可进行手动爆破&#xff08;地址包含&#xff09; http://192.168.10.193/index.html?page../../../../../../../../etc/passwd 无发…