重庆微信网站制作公司,网站建设报价表下载,wordpress 3.7.1,网站规划与建设进度一、优化器
1、SGD是什么#xff1f;
批梯度下降#xff08;Batch gradient descent#xff09;#xff1a;遍历全部数据集算一次损失函数#xff0c;计算量开销大#xff0c;计算速度慢#xff0c;不支持在线学习。随机梯度下降#xff08;Stochastic gradient desc…一、优化器
1、SGD是什么
批梯度下降Batch gradient descent遍历全部数据集算一次损失函数计算量开销大计算速度慢不支持在线学习。随机梯度下降Stochastic gradient descentSGD每次随机选择一个数据计算损失函数求梯度并更新参数计算速度快但收敛性能可能不太好。批量随机梯度下降Min-batch SGD用小批量样本来近似全部将样本分为m个mini-batch每个mini-batch包含n个样本。使用动量(Momentum)的随机梯度下降法(SGD): 在随机梯度的学习算法中每一步的步幅都是固定的而在动量学习算法中每一步走多远不仅依赖于本次的梯度大小还取决于过去的速度。速度是累积各轮训练参数的梯度。动量主要解决SGD的两个问题一是随机梯度方法引入的噪声二是Hessian矩阵病态问题可以理解为SGD在收敛过程中和正确梯度相比来回摆动比较大的问题。
2、简单介绍下Adam算法
RMSprop将学习率分解成一个平方梯度的指数衰减的平均。Adam中动量直接并入了梯度一阶矩指数加权的估计。其次相比于缺少修正因子导致二阶矩估计可能在训练初期具有很高偏置的RMSPropAdam还包括偏置修正修正从原点初始化的一阶矩动量项和非中心的二阶矩估计。本质上是带有动量项的RMSProp它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要是经过偏置校正后每一次迭代学习率都有个确定范围使得参数比较平稳。
3、Adam和SGD的区别
SGD缺点是其更新方向完全依赖于当前batch计算出的梯度因而十分不稳定。Adam的优点主要在于①考虑历史步中的梯度更新信息能够降低梯度更新噪声。②此外经过偏差和校正后每一次迭代学习率都有个确定单位使得参数比较平稳。但Adam可能对前期出现的特征过拟合后期才出现的特征很难纠正前期的拟合效果。且SGD和Adam都没法很好的避免局部最优问题。
二、过拟合
1、过拟合指什么造成的原因是什么解决方法有哪些
定义模型在训练集上表现很好但在测试集和新数据上表现很差。出现的原因①模型的复杂度过高、参数过多②训练数据比较小 ③训练集和测试集的分布不一致④样本里面的噪声数据干扰过大导致模型过分记住了噪声特征解决方法①降低模型的复杂度 ②数据增强 ③正则化l1, l2, dropout)④早停
2、过拟合与欠拟合的比较
过拟合模型在训练集上表现很好但在测试集和新数据上表现很差。输出结果高方差Variance模型很好的适配训练样本但在测试集上表现很糟有一个很大的方差。
欠拟合模型在训练集和测试机上的性能都较差输出结果高偏差bias模型不能适配训练样本有很大的偏差。
3、偏差和方差的区别
偏差偏差度量了学习算法的期望预测和真实结果的偏离程度刻画了学习算法本身的拟合能力。方差方差度量了同样大小的训练集的变动所导致的学习性能的变化即刻画了数据扰动所造成的影响。
三、归一化
1、批量归一化BN是什么有什么作用
批量归一化(BN)的计算公式如下 作用加快网络的训练与收敛的速度控制梯度爆炸防止梯度消失。
2、训练与推理时BN中的均值、方差计算差异是什么
训练时均值、方差分别是该批次内数据相应维度的均值和方差。推理时均值、方差是基于所有批次的期望计算得到的。其中在推理时所用的均值和方差时通过移动平均计算得到的可以减少存储每个batch均值方差的内存。
3、LNlayer normalization)和BN的区别
LN和BN相比只考虑单个sample内的统计变量因此也不用使用BN实现中的running mean, running var。LN也完全不用考虑输入batch_size的问题。
4、transformer中为什么不适用BN归一化
一种解释是cv和nlp数据特性不同对于nlp数据前向和反向传播中batch统计量及其梯度都不太稳定一个batch中每个句子对应位置分量不一定有意义。要能在某个维度做独立同分布假设才能合理归一化。对于cv来说batch之间的图像是独立的但nlp的文本本质上可以看成一个时间序列而时间序列是不定长的长度不同的序列原则上属于不同的统计对象所以很难得到稳定的统计量得不到稳定的统计量BN就无法成立因为BN依靠滑动平均来获得一组预测用的统计量。
5、梯度消失和梯度爆炸的主要原因
梯度消失主要是网络层较深其次是采用了不合适的损失函数会使得靠近输入层的参数更新缓慢。导致在训练时只等价于后面几层的浅层网络的学习。梯度爆炸一般出现在深层网络和权值初始化值太大的情况下。在深层神经网络或循环神经网络中误差的梯度可在更新中累积相乘。如果网络层之间的梯度值大于1.0那么重复相乘会导致梯度呈指数级增长梯度会变得非常大然后导致网络权重的大幅更新并因此使网络变得不稳定。梯度爆炸会使得训练过程中权重的值变得非常大以至于溢出导致模型损失变成NaN等。解决方法梯度剪切对梯度设定阈值权重正则化BN残差网络的捷径shortcut)
6、Pytorch中的乘法
数乘运算torch.mul向量点积torch.dot计算两个张量的点乘积内积两个张量都为一维向量。矩阵乘运算torch.mm 输入的两个tensor shape分别使n x c, c x m输出使n x mtorch.matmul对二维张量执行的操作就是torch.mm 此外还可以用于高维张量运算。符号乘法相当于矩阵乘torch.mm严格按照第一个参数的列数要等于第二个参数的行数。
四、神经网络
1、什么是卷积网络
对图像和滤波矩阵做内积的操作就是卷积操作。
其中图像是指不同的数据窗口数据滤波矩阵是指一组固定的权重因为每个神经元的多个权重固定所以又可以看作一个恒定的滤波器fliter内积是指逐个元素相乘再求和的操作。
2、什么是CNN的池化pooling层
池化是指取区域平均或者最大即平均池化或最大池化。 上图所展示的是取区域最大即上图左边部分中 左上角2x2的矩阵中6最大右上角2x2的矩阵中8最大左下角2x2的矩阵中3最大右下角2x2的矩阵中4最大所以得到上图右边部分的结果6 8 3 4
3、如何确定CNN的卷积核通道数和卷积输出层的通道数
CNN的卷积核通道数 卷积输入层的通道数
CNN的卷积输出层通道数 卷积核的个数
4、简述下什么是生成对抗网络GAN
假设有两个模型一个是生成模型Generative Model,下文简写为G)一个是判别模型(Discriminative Model,下文简写为D)判别模型D的任务就是判断一个实例是真实的还是由模型生成的生成模型G的任务是生成一个实例来骗过判别模型D两个模型相互对抗最终使得生成模型生成的实例域真实的没有区别判别模型无法区分自然的还是模型生成的。
5、简要介绍下tensorflow的计算图 tensorflow的计算图也叫数据流图。数据流图用节点nodes)和边edges)的有向图来描述数学计算。节点一般用来表示施加的数学操作但也可以表示数据输入feed in)的起点和输出push out)的终点或者是读取/写入持久变量persistent variable)的终点。“边”表示“节点”之间的输入/输出关系这些数据“边”可以输运“size可动态调整”的多维数据数组即“张量tensor”。张量从图中流过的直观图像是这个工具取名为“tensorflow的原因。一旦输入端的所有张量都准备好节点将被分配到各种计算设备完成异步并行地执行运算。
6、有哪些深度学习RNN、CNN调参的经验
CNN调参主要是在优化函数、emdbedding 的维度、以及残差网络的层数几个方面。
优化函数方面有两个选择SGDAdam相对来说Adam要简单很多不需要设置参数效果也还不错。embedding随着维度的增大会出现一个最大值点也就是开始时是随维度的增加效果逐渐比那好到达一个点后而后随维度的增加效果会变差。残差网络的层数与embedding的维度有关系随层数测增加效果变化也是一个凸函数。可能包含激活函数、dropout层和BN层的使用。激活函数推荐使用relu, dropout层数不宜设置过大过大会导致不收敛调节步长可以是0.05一般调整到0.5或0.5就可以找到最佳值。
7、为什么不同的机器学习领域都可以使用CNNCNN解决了这些领域哪些共性问题他是如何解决的
CNN的关键是卷积运算卷积核和卷积输入层进行局部连接可以获取整个输入的局部特征信息或者说是每个输入特征的组合特征。所以CNN的本质是完成了特征提取或者说是对原始特征的特征组合工作从而增加模型的表达能力。不同领域的机器学习都是通过数据的特征进行建模从而解决该领域的问题。故CNN解决了不同领域的特征提取问题所用的方法是基于局部连接权值共享池化操作多层次结构。
8、LSTM结构为什么比RNN好
LSTM有forget gate, input gate, cell state, hidden information等的变化因为LSTM有进有出且当前的cell information是通过input gate控制之后叠加的RNN是叠乘因此LSTM可以防止梯度小时或者爆炸。
9、Sigmoid, Tanh, Relu这三个激活函数有什么有优点和缺点
sigmoid函数①优点输出范围在01之间适合用于二分类问题可以将输出解释为概率具有平滑的导数可以利用梯度下降等优化算法进行训练。②缺点sigmoid函数存在梯度饱和问题当输入很大或很小时梯度接近于零导致梯度消失训练速度变慢且sigmoid输出不是以零为中心的这可能导致神经网络在训练过程中不稳定计算sigmoid函数的指数运算较为昂贵。Tanh函数①优点输出范围在-11相对于sigmoid均值更接近零有助于减轻梯度消失问题具有平滑的导数可用于梯度下降等优化算法。②缺点仍然存在梯度饱和的问题当输入很大或很小时梯度接近于零导致梯度消失。计算Tanh函数的指数运算也较为昂贵。Relu函数Rectified Linear Unit①优点计算简单只需比较输入是否大于零因此训练速度快。相比于前两种激活函数relu函数激活时不会饱和避免了梯度消失问题。②缺点部分神经元可能会“死亡”输出始终为零不更新这会导致网络的稀疏性Relu对于负数输入的梯度为零这可能导致梯度爆炸问题输出不受限制可能会导致梯度爆炸问题。为了克服以上缺点研究人员开发了各种改进的激活函数如Leaky Relu, Parametric ReluELU和Swish等。这些函数在一定程度上解决了梯度饱和、梯度爆炸和神经元死亡等问题。
10、为什么引入非线性激励函数
深度学习的前提是神经网络的隐层加上了非线性激活函数提升了模型的非线性表达能力使得神经网络可以逼近任意复杂的函数。假设有一个100层的全连接神经网络其隐层的激活函数都是线性的则从输入层到输出层实际上可以用一层全连接来等价替换这样无法实现真正的深度学习。举例线性函数 f(x)2x3 对 x 经过三次相同的线性变换等价于对 x 只进行一次线性变换f(f(f(x)))2(2(2x3)3)38x21。
11、为什么LSTM模型既存在sigmoid又存在tanh两种激活函数而不是选择统一一种sigmoid或者tanh这样做的目的是什么
sigmoid函数用在了各种gate上产生0-1之间的值这个一般只有sigmoid最直接了相当于要么是1被记住要么是0被忘带。tanh用在了状态和输出上是对数据的处理这个用其他激活函数或许可以。
12、如何解决RNN梯度爆炸和弥散的问题
为了解决梯度爆炸问题Thomas Mikolov首先提出了简单的启发性解决方案就是当梯度大于定阈值时将它截断为一个较小的数。 13、什么样的数据集不适合用深度学习
数据集太小数据集样本不足时深度学习相比于其他机器学习没有明显优势数据集没有局部相关特性目前深度学习表现比较好的领域主要是图像/语音/自然语言处理等这些领域的一个共性是局部相关性。图像中像素组成物体语音信号中音位组合成单词文本数据中单词组合成句子这些特征元素的组合一旦被打乱表示的含义同时也被改变。对于没有这样的局部相关性的数据集不适于使用深度学习算法进行处理。举个例子预测一个人的健康状况相关的参数会有年龄、职业、收入、家庭状况等各种元素将这些元素打乱并不会影响相关的结果。
14、广义线性模型是怎样应用在深度学习中的
深度学习从统计学角度可以看作递归的广义线性模型。广义线性模型相对于经典的线性模型核心在于引入了连接函数g(.)形式变为yg−1(wxb)。深度学习时递归的广义线性模型神经元的激活函数即广义线性模型的连接函数。逻辑回归广义线性模型的一种的Logistic函数即为神经元激活函数中的sigmoid函数很多类似的方法在统计学和神经网络中的名称不一样容易引起困惑。
15、神经网络的简单发展史
sigmoid会饱和造成梯度消失。于是有了ReLU。ReLU负半轴是死区造成梯度变0。于是有了LeakyReLUPReLU。强调梯度和权值分布的稳定性由此有了ELU以及较新的SELU。太深了梯度传不下去于是有了highway。干脆连highway的参数都不要直接变残差于是有了ResNet。
16、神经网络中激活函数的真正意义
非线性即导数不是常数。这个条件是多层神经网络的基础保证多层网络不退化成单层线性网络。这也是激活函数的意义所在。几乎处处可微可微性保证了在优化中梯度的可计算性。传统的激活函数如sigmoid等满足处处可微。对于分段线性函数比如ReLU只满足几乎处处可微即仅在有限个点处不可微。对于SGD算法来说由于几乎不可能收敛到梯度接近零的位置有限的不可微点对于优化结果不会有很大影响。计算简单非线性函数有很多。极端的说一个多层神经网络也可以作为一个非线性函数类似于Network In Network[2]中把它当做卷积操作的做法。但激活函数在神经网络前向的计算次数与神经元的个数成正比因此简单的非线性函数自然更适合用作激活函数。这也是ReLU之流比其它使用Exp等操作的激活函数更受欢迎的其中一个原因。
17、深度神经网络容易收敛到局部最优为什么应用广泛
深度神经网络“容易收敛到局部最优”很可能是一种想象实际情况是我们可能从来没有找到过“局部最优”更别说全局最优了。很多人都有一种看法就是“局部最优是神经网络优化的主要难点”。这来源于一维优化问题的直观想象。在单变量的情形下优化问题最直观的困难就是有很多局部极值。 18、如何确定是否出现梯度爆炸
模型无法从训练数据中获得更新如低损失模型不稳定导致更新过程中损失出现显著变化训练过程中模型损失变为NaN
19、GRU和LSTM的区别
GRU是Gated Recurrent Units是循环神经网络的一种。
GRU只有两个门update和resetGRU直接将hidden state 传给下一个单元。LSTM有三个门forgetinputoutputLSTM用memory cell 把hidden state 包装起来。