AI 深度学习面试题学习

1.神经网络

1.1个激活函数的优缺点?

1.2什么ReLU用于神经网络的激活函数?

1.在前向传播和反向传播过程中,ReLU相比于Sigmoid等激活函数计算量小
2.避免梯度消失问题。对于深层网络,Sigmoid函数反向传播时,很容易就会出现梯度消失问题(在Sigmoid接近饱和区时,变换太缓慢,导数趋于0这种情况会造成信息丢失),从而无法完成深层网络的训练。3.以缓解过拟合问题发生。Relu使一部分神经元的输出为0这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

4.相比Sigmoid型函数,ReLU函数有助于随机梯度下降方法收敛为什么需要激活功能?

激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。

1.3 梯度消失和梯度爆炸的解决方案?梯度爆炸引发的问题?

梯度消失:靠近输出层的hidden layer 梯度大,参数更新快,所以很快就会收敛;而靠近输入层的hidden layer 梯度小,参数更新慢,几乎就和初始状态一样,随机分布。

另一种解释:当反向传播进行很多层的时候,由于每一层都对前一层梯度乘以了一个小数,因此越往前

传递,梯度就会越小,训练越慢。

梯度爆炸:前面layer的梯度通过训练变大,而后面layer的梯度指数级增大

在深度多层感知机(MLP)网络中,梯度爆炸会引起网络不稳定,最好的结果是无法从训练数据中学习,而最坏的结果是出现无法再更新的 NaN 权重值。

RNN中,梯度爆炸会导致网络不稳定,无法利用训练数据学习,最好的结果是网络无法学习长的输入序列数据

1.4何确定是否出现梯度爆炸?

模型不稳定,导致更新过程中的损失出现显著变化;

训练过程中模型梯度快速变大;

训练过程中模型权重变成 NaN 值;

训练过程中,每个节点和层的误差梯度值持续超过 1.0

1.5经网络中有哪些正则化技术?

L2正则化(Ridge;    L1正则化(Lasso;

权重衰减;                              丢弃法;

批量归一化;                        数据增强

早停法

1.6量归一化(BN) 如何实现?作用?

实现过程:        计算训练阶段mini_batch数量激活函数前结果的均值和方差,然后对其进行归一化,最后对其进行缩放和平移。

作用:

                1.可以使用更高的学习率进行优化;

                2.移除或使用较低的 dropout

                3.降低L2权重衰减系数;

4.调整了数据的分布,不考虑激活函数,它让每一层的输出归一化到了均值为0方差为1的分布,这保证了梯度的有效性,可以解决反向传播过程中的梯度问题

1.7经网络中权值共享的理解?

权值共享这个词是由LeNet5 模型提出来的。以CNN为例,在对一张图偏进行卷积的过程中,使用的是同一个卷积核的参数。

比如一个3×3×1的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数。

通俗说:就是用一个卷积核不改变其内权系数的情况下卷积处理整张图片。

1.8 fine-tuning(微调模型)的理解?为什么要修改最后几层神经网络权值?

使用预训练模型的好处:在于利用训练好的SOTA型权重去做特征提取,可以节省我们训练模型和调参的时间。

理由:

1.CNN中更靠近底部的层(定义模型时先添加到模型中的层)编码的是更加通用的可复用特征,而更靠近顶部的层(最后添加到模型中的层)编码的是更专业化的特征。微调这些更专业化的特征更加有用,它更代表了新数据集上的有用特征。

2.训练的参数越多,过拟合的风险越大。很多SOTA模型拥有超过千万的参数,在一个不大的数据集上训练这么多参数是有过拟合风险的,除非你的数据集像Imagenet那样大。

1.9 什么是Dropout?为什么有用?它是如何工作的?

背景如果模型的参数太多数据量太小,则容易产生过拟合。为了解决过拟合,就同时训练多个网络。然后多个网络取均值。费时

介绍Dropout可以防止过拟合,在前向传播的时候,让某个神经元的激活值以一定的概率 P停止工作,这样可以使模型的泛化性更强。

Dropout效果跟bagging 效果类似(bagging是减少方差variance,而boosting是减少偏差bias)。加入dropout会使神经网络训练时间长,模型预测时不需要dropout,记得关掉。
具体流程

i.随机删除(临时)网络中一定的隐藏神经元,输入输出保持不变,
ii.让输入通过修改后的网络。然后把得到的损失同时修改后的网络进行反向传播。在未删除的神经元上面进行参数更新

iii.重复该过程(恢复之前删除掉的神经元,以一定概率删除其他神经元。前向传播、反向传播更新参数)

1.10如何选择dropout 的概率?

input dropout 概率推荐是 0.8 hidden layer 推荐是0.5

为什么dropout可以解决过拟合?

1.取平均的作用:

Dropout生了许多子结构之后的操作,父神经网络有N节点,加入Dropout后可以看做在权值不变的情况下(参数共享)将模型数量扩增到指数级别

2.减少神经元之间复杂的共适应关系,迫使网络去学习更加鲁棒;Dropout 在训练和测试的区别?

训练时随机删除一些神经元,在测试模型时将所有的神经元加入。

1.11什么是AdamAdamSGD之间的主要区别是什么?

1.12一阶优化和二阶优化的方法有哪些?为什么不使用二阶优化?

一阶优化方法有:

SGD -> SGDM ->NAG -> AdaGrad -> AdaDelta / RMSProp(加速梯度下降) -> Adam -> Nadam二阶优化

定义:对目标函数进行二阶泰勒展开,也就是二阶梯度优化方法

牛顿法 + BFGS
利用二阶泰勒展开,即牛顿法需要计算Hessian矩阵的逆,计算量大,在深度学习中并不常用。因此一般使用的是一阶梯度优化。

1.12为什么Momentum可以加速训练?

动量其实累加了历史梯度更新方向,所以在每次更新时,要是当前时刻的梯度与历史时刻梯度方向相似,这种趋势在当前时刻则会加强;要是不同,则当前时刻的梯度方向减弱。动量方法限制了梯度更新方向的随机性,使其沿正确方向进行。

1.13什么时候使用AdamSGD

Adam等自适应学习率算法对于稀疏数据具有优势,且收敛速度很快;但精调参数的SGD+Momentum)往往能够取得更好的最终结果Adam+SGD 组合策略:先用Adam快速下降,再用SGD调优

如果模型是非常稀疏的,那么优先考虑自适应学习率的算法;

模型设计实验过程中,要快速验证新模型的效果,用Adam进行快速实验优化;在模型上线或者结果发布前,可以用精调的SGD进行模型的极致优化。

1.14 batch sizeepoch平衡

1.15 SGD每步做什么,为什么能online learning

online learning强调的是学习是实时的,流式的,每次训练不用使用全部样本,而是以之前训练好的模型为基础,每来一个样本就更新一次模型,这种方法叫做OGDonline gradient descent,目的是快速地进行模型的更新,提升模型时效性。而SGD的思想正是在线学习的思想。

1.16学习率太大(太小)时会发生什么?如何设置学习率?

1.基于经验的手动调整
的固定习率,310.50.10.050.010.0050.0001等,观察迭代loss的变化关系,找到loss下降最快关系对应的学习率。

太小,收敛过程将变得十分缓慢;
太大,梯度可能会在最小值附近来回震荡(loss爆炸),甚至可能无法收敛。

2. 基于策略的调整

fixed exponentialpolynomial

自适应动态调整。adadeltaadagradftrlmomentumrmspropsgd

Logit:对它取对数。

1.17神经网络为什么不用拟牛顿法而是用梯度下降?

牛顿法原理:使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)= 0的根。

1.18 BNDropout在训练和测试时的差别?

BN:
训练时:是对每一个batch的训练数据进行归一化,也即是用每一批数据的均值和方差。

测试时:都是对单个样本进行测试。这个时候的均值和方差是全部训练数据的均值和方差,这两个数值

是通过移动平均法求得。

当一个模型训练完成之后,它的所有参数都确定了,包括均值和方差,gammabata

Dropout:有在训练的时候才采用,是为了减少神经元对部分上层神经元的依赖,类似将多个不同网络结构的模型集成起来,减少过拟合的风险。

1.19若网络初始化为0的话有什么问题?

w初始化全为0,很可能直接导致模型失效,无法收敛

1.20 sigmoidsoftmax的区别?softmax的公式?

1.21改进的softmax失函数有哪些?

1.Large Margin Softmax Loss (L-Softmax)
加了一个margin,要保证大于某一个阈值。这样可以尽量实现让类间间距更大化,类内距离更小。

2.Center Loss
通过将特征和特征中心的距离和softmax loss一同作为损失函数,使得类内距离更小,有点L1L2正则化。

1.22深度学习调参有哪些技巧?

1.准备数据

1.1 保证有大量、高质量并且带有干净标签的数据;

1.2 样本要随机化,防止大数据淹没小数据;

1.3 样本要做归一化.

2.预处理0均值和1方差化

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

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

相关文章

遇到该问题:kex_exchange_identification: read: Connection reset`的解决办法

kex_exchange_identification: read: Connection reset 是一个非常常见的 SSH 连接错误。它表明在 SSH 客户端和服务器建立安全连接的初始阶段(密钥交换,Key Exchange),连接就被对方(服务器)强制关闭了。 …

(论文蒸馏)语言模型中的多模态思维链推理

(论文总结)语言模型中的多模态思维链推理 论文名称研究背景动机主要贡献研究细节两阶段框架实验结果促进收敛性摆脱人工标注错误分析与未来前景 论文名称 Multimodal Chain-of-Thought Reasoning in Language Models http://arxiv.org/abs/2302.00923 …

React Native 接入 eCharts

React Native 图表接入指南 概述 本文档详细介绍了在React Native项目中接入ECharts图表的完整步骤,包括依赖安装、组件配置、数据获取、图表渲染等各个环节。 目录 1. 环境准备2. 依赖安装3. 图表组件创建4. 数据获取Hook5. 图表配置6. 组件集成7. 国际化支持8…

基于C#的OPCServer应用开发,引用WtOPCSvr.dll

操作流程: 1.引入WtOPCSvr.dll文件 2.注册服务:使用UpdateRegistry方法注册,注意关闭应用时使用UnregisterServer取消注册。 3.初始化服务:使用InitWTOPCsvr初始化 4.使用CreateTag方法,创建标签 5.读写参数使用下面三…

Java类加载器getResource行为简单分析

今天尝试集成一个第三方SDK,在IDE里运行正常,放到服务器上却遇到了NPE,反编译一看,原来在这一行:String path Test.class.getClassLoader().getResource("").getPath(); // Test.class.getClassLoader().ge…

【CodeTop】每日练习 2025.7.4

Leetcode 1143. 最长公共子序列 动态规划解决,比较当前位置目标和实际字符串的字母,再根据不同情况计算接下来的情形。 class Solution {public int longestCommonSubsequence(String text1, String text2) {char[] t1 text1.toCharArray();char[] t2…

ES6从入门到精通:Promise与异步

Promise 基础概念Promise 是 JavaScript 中处理异步操作的一种对象,代表一个异步操作的最终完成或失败及其结果值。它有三种状态:Pending(进行中)、Fulfilled(已成功)、Rejected(已失败&#xf…

数据结构:二维数组(2D Arrays)

目录 什么是二维数组? 二维数组的声明方式 方式 1:静态二维数组 方式 2:数组指针数组(数组中存放的是指针) 方式 3:双指针 二级堆分配 💡 补充建议 如何用“第一性原理”去推导出 C 中…

HAProxy 和 Nginx的区别

HAProxy 和 Nginx 都是优秀的负载均衡工具,但它们在设计目标、适用场景和功能特性上有显著区别。以下是两者的详细对比:1. 核心定位特性HAProxyNginx主要角色专业的负载均衡器/代理Web 服务器 反向代理/负载均衡设计初衷高性能流量分发高并发 HTTP 服务…

基于Java+SpringBoot的健身房管理系统

源码编号:S586源码名称:基于SpringBoot的健身房管理系统用户类型:多角色,用户、教练、管理员数据库表数量:13 张表主要技术:Java、Vue、ElementUl 、SpringBoot、Maven运行环境:Windows/Mac、JD…

【MySQL安装-yum/手动安装,卸载,问题排查处理完整文档(linux)】

一.使用Yum仓库自动安装 步骤1:添加MySQL Yum仓库 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm步骤2:安装MySQL服务器 sudo yum install mysql-server -y步骤3:启动并设置开机自启 sudo systemctl start mysqld sudo systemct…

自定义线程池-实现任务0丢失的处理策略

设计一个线程池,要求如下:队列最大容量为10(内存队列)。当队列满了之后,拒绝策略将新的任务写入数据库。从队列中取任务时,若该队列为空,能够从数据库中加载之前被拒绝的任务模拟数据库 (TaskDa…

【NLP入门系列四】评论文本分类入门案例

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 博主简介:努力学习的22级本科生一枚 🌟​;探索AI算法,C,go语言的世界;在迷茫中寻找光芒…

Ubuntu安装ClickHouse

注:本文章的ubuntu的版本为:ubuntu-20.04.6-live-server-amd64。 Ubuntu(在线版) 更新软件源 sudo apt-get update 安装apt-transport-https 允许apt工具通过https协议下载软件包。 sudo apt-get install apt-transport-htt…

C++26 下一代C++标准

C++26 将是继 C++23 之后的下一个 C++ 标准。这个新标准对 C++ 进行了重大改进,很可能像 C++98、C++11 或 C++20 那样具有划时代的意义。 一:C++标准回顾 C++ 已经有 40 多年的历史了。过去这些年里发生了什么?这里给出一个简化版的答案,直到即将到来的 C++26。 1. C++9…

【MySQL】十六,MySQL窗口函数

在 MySQL 8.0 及以后版本中,窗口函数(Window Functions)为数据分析和处理提供了强大的工具。窗口函数允许在查询结果集上执行计算,而不必使用子查询或连接,这使得某些类型的计算更加高效和简洁。 语法结构 function_…

微型气象仪在城市环境的应用

微型气象仪凭借其体积小、成本低、部署灵活、数据实时性强等特点,在城市环境中得到广泛应用,能够为城市规划、环境管理、公共安全、居民生活等领域提供精细化气象数据支持。一、核心应用场景1. 城市微气候监测与优化热岛效应研究场景:在城市不…

【仿muduo库实现并发服务器】eventloop模块

仿muduo库实现并发服务器一.eventloop模块1.成员变量std::thread::id _thread_id;//线程IDPoller _poll;int _event_fd;std::vector<Function<Function>> _task;TimerWheel _timer_wheel2.EventLoop构造3.针对eventfd的操作4.针对poller的操作5.针对threadID的操作…

Redis 加锁、解锁

Redis 加锁和解锁的应用 上代码 应用调用示例 RedisLockEntity lockEntityYlb RedisLockEntity.builder().lockKey(TradeConstants.HP_APP_AMOUNT_LOCK_PREFIX appUser.getAccount()).value(orderId).build();boolean isLockedYlb false;try {if (redisLock.tryLock(lockE…

在 Windows 上为 WSL 增加 root 账号密码并通过 Shell 工具连接

1. 为 WSL 设置 root 用户密码 在 Windows 上使用 WSL&#xff08;Windows Subsystem for Linux&#xff09;时&#xff0c;默认情况下并没有启用 root 账号的密码。为了通过 SSH 或其他工具以 root 身份连接到 WSL&#xff0c;我们需要为 root 用户设置密码。 设置 root 密码步…