深度学习常见面试题(2024.8.30笔记)

1.激活函数的作用

单纯的神经网络只能够处理线性数据,而激活函数所起到的作用就是在神经网络中加入了非线性因素,使得神经网络可以拟合各种曲线,进而能够对非线性的数据进行处理,用来解决线性模型表达能力不足的问题,进一步提高神经网络的拟合能力,能够适应更多不同场景的应用。

2.如何解决过拟合?

导致过拟合的原因有训练数据量少,模型过于复杂。常见解决方法有:

  • 增加训练数据量
  • Batch Normalization
  • Dropout
  • Early Stopping
  • L1/L2正则化
3.常见的正则化方法

正则化的本质是针对某一问题加以先验限制条件或约束以达到某种目的的一种手段。

常见的正则化方法有L1正则化和L2正则化,它们是在损失函数中添加一个正则项。

  • L1正则项是指权值向量中各个元素的平均值之和。
  • L2正则项是指权值向量中各个元素的平方和然后再求平方根。
4.批量归一化的作用

神经网络的训练过程本质上就是学习数据分布,如果训练数据与测试数据分布不同将大大降低网络的泛化能力,因此需要在训练开始前对所有的输入数据进行归一化处理。

在训练过程中进入网络结构的一般都是一个mini batch数据,而对应的数据之间可能存在较大的差异,因此需要模型的参数不断的进行调整以便能够适应对应的数据,这就会给模型训练带来极大不便,使得模型难以收敛,而对数据进行归一化操作以后就使得数据变得稳定,参数的变化也会比较稳定,从而有助于加快模型的收敛速度。

批量归一化是针对每一批数据,在网络的每一层输入之前增加归一化处理(均值为0,方差为1),将所有批数据强制在统一的数据分布下。可以看作在每一层输入和上一层输出之间加入了一个新的计算层,对数据的分布进行额外的约束,从而增强模型的泛化能力。但批量归一化层同时也降低了模型的拟合能力,归一化之后的输入分布被强制为0均值和1标准差。

5.常见的优化方法

梯度下降法是深度学习领域内目前最为常见的优化方法,梯度下降是利用函数一阶梯度信息寻找函数局部最优解的方法。常见的梯度下降算法有:

  • SGD(stochastic gradient descent,随机梯度下降)在计算过程中,每次随机抽取部分样本进行更新,可以大大加快更新速度。
  • Momentum方法是通过指数加权平均法,累计历史梯度值,进行参数更新,这样会朝着更有利于收敛的方向进行更新,收敛速度较快。
  • AdaGrad方法通过对不同的参数分量使用不同的学习率,总体的学习率会逐渐较小,在离最优目标较远时采用较大的学习率,加快训练的速度;随着迭代次数的增加,学习率逐渐下降。
  • RMSProp方法是对AdaGrad的一个改进算法,解决了AdaGrad激进的学习率缩减问题,将学习率除以了一个指数衰减的衰减均值,控制历史梯度对历史梯度信息获取的多少,可以更加稳定的反应梯度变化的情况。
  • Adam方法借鉴了AdaGrad自适应学习率和动量梯度下降法的优点,使用动量和自适应学习率来加快收敛速度,既能适应系数梯度,又能缓解梯度震荡。
6.如何解决梯度消失和梯度爆炸

导致梯度消失和梯度爆炸的原因本质上是一致的,都是因为在反向传播过程中进行进行权重的更新时,导致梯度出现了不合理的变化。

梯度消失是由于采用了不合理的激活函数,因此想要解决梯度消失问题可采用合适的激活函数,或者采用Batch Normalization方法。

梯度爆炸是由于初始化权重不合理,权重值太大, 常见的解决方法可对相应的梯度进行裁剪,即设置一个阈值,在进行梯度更新时如果梯度超过阈值就将其限制在该范围内从而防止梯度爆炸,或采用更合理的激活方法等。

7.如何理解反向传播

模型训练的本质是最小化损失函数,在训练过程中通常是采用的方法是梯度下降算法,对网络中所有权重计算损失函数的梯度,利用梯度值来对权重进行更新以便能够使损失函数最小化。为了降低损失函数的值,可以从后往前依次求对应参数的偏导,这个过程就是反向传播。

8.CNN的网络结构以及各层的作用

CNN的网络结构包含以下几个部分:

  • 卷积层:对输入层输入进来的数据进行特征的提取
  • 池化层:又称为降采样层,作用是对感受域内的特征进行筛选,降低输出特征的尺寸,减少模型的参数量, 常见的池化方法有最大池化和平均池化
  • 输出层:对卷积神经网络提取到的特征进行汇总分类并输出。
相关推荐
阡之尘埃1 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
aloha_7891 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
dsywws2 小时前
Linux学习笔记之vim入门
linux·笔记·学习
孙同学要努力3 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
Eric.Lee20213 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
其实吧34 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
丕羽4 小时前
【Pytorch】基本语法
人工智能·pytorch·python
ctrey_4 小时前
2024-11-1 学习人工智能的Day20 openCV(2)
人工智能·opencv·学习
SongYuLong的博客4 小时前
Air780E基于LuatOS编程开发
人工智能
Jina AI4 小时前
RAG 系统的分块难题:小型语言模型如何找到最佳断点?
人工智能·语言模型·自然语言处理