其他分享
首页 > 其他分享> > 深度学习相关面试知识点

深度学习相关面试知识点

作者:互联网

深度学习

该内容由个人整理和归纳,如有不同见解,还望指教~

为什么要通过梯度下降求解参数?

梯度的方向是函数增长速度最快的方向,那么梯度的反方向就是函数下降最快的方向,通过往函数下降最快的方向走,可以走到函数的极小/最小值点。

Embedding

为什么需要 Embedding?

初始化

为什么要初始化神经网络权重?(全0初始化的问题?)

全零初始化方法在前向传播过程中会使得隐层神经元的激活值均未0,在反向过程中根据BP公式,不同维度的参数会得到相同的更新。
需要破坏这种“对称性”。

为什么要用Xavier初始化权重?

本质是为了让输入输出的方差在一个水平上,让收敛过程稳定,防止输入空间比输出空间稠密太多导致收敛震荡,以及防止输入空间比输出空间稀疏太多收敛过慢。

Glorot(Xavier)初始化器的缺点

因为Xavier的推导过程是基于几个假设的,

损失函数

focal loss怎么实现的(字节)

https://mp.weixin.qq.com/s/eLO7kW0af6UuFp8JIrlesQ

center loss(字节)

优化器

https://mp.weixin.qq.com/s/g8GLF0rf3IPAjRb9wZaS4w

优化方法有哪些?(京东)

为什么有解码器和编码器的模型需要两个优化器?

When to use individual optimizers in PyTorch?

因为在构建优化器对象时,需要传入模型参数 model.parameters() 作为一个输入,与此同时也可以分别设置不同部分的学习率

小批梯度下降的样本数 m 怎么选择?

小批梯度下降的样本怎么进行采样?

梯度下降算法中的学习率如何选取?

GD和SGD原理和各自的缺陷?(京东)

ADAM和SGD的优缺点以及讲诉方法(云从)

Mini-Batch SGD相对于One Example SGD的两个优势:梯度更新方向更准确;并行计算速度快;

反向传播 BP 算法

以目标函数的负梯度方向对参数进行调整并更新参数,\(W \gets W - \alpha \frac{\partial Loss}{\partial W}\)

首先,假设某个神经元的输入为z,经过激活函数\(f_1(·)\)得到输出\(a\)。即函数值\(a=f1(z)\)。如果这里的输入\(z\)又是另一个函数\(f_2\)的输出的话(当然啦,这里的\(f_2\)就是线性映射函数,也就是连接某两层的权重矩阵),即\(z=f_2(x)\),那么如果基于\(a\)来对\(z\)中的变量\(x\)求导的时候,由于

\[\frac{\partial a}{\partial x}=\frac{\partial a}{\partial z}\cdot \frac{\partial z}{\partial x}=f_1'(z)\cdot \frac{\partial z}{\partial x} \]

显然只要乘以激活函数\(f_1\)的导数,就不用操心激活函数的输出以及更后面的事儿了(这里的“后面”指的是神经网络的输出端方向),只需要将精力集中在前面的东西,即只需要关注z以及z之前的那些变量和函数就可以了。因此,误差反向传播到某非线性映射层的输出时,只需要乘上该非线性映射函数在z点的导数就算跨过这一层啦。

而由于\(f_2(·)\)是个线性映射函数,即\(f_2(x)=w\cdot x\),因此

\[\frac{\partial z}{\partial x}=f_2'(x)=[wx]'=w \]

因此,当误差反向传播到线性映射层的输出时,若想跨过该层,只需要乘以线性映射函数的参数就可以啦~即乘上w。

而这里的x,又是更后面的非线性映射层的输出,因此误差在深度前馈网络中反向传播时,无非就是反复的跨过非线性层和线性层,也就是反复的乘以非线性函数的导数(即激活函数的导数)和线性函数的导数(即神经网络的参数/权重/连接边)

梯度消失与梯度爆炸

标签:知识点,frac,函数,方差,梯度,均值,更新,面试,深度
来源: https://www.cnblogs.com/IO382/p/15791244.html