算法岗面试指南:深度学习核心问题一网打尽

张开发
2026/4/13 20:44:22 15 分钟阅读

分享文章

算法岗面试指南:深度学习核心问题一网打尽
算法岗面试指南深度学习核心问题一网打尽本文详细解析了算法岗面试指南深度学习核心问题一网打尽内容如下params_grad evaluate_gradient(loss_function, data, params)params params - learning_rate * params_grad优点1一次迭代是对所有样本进行计算此时利用矩阵进行操作实现了并行。2由全数据集确定的方向能够更好地代表样本总体从而更准确地朝向极值所在的方向。当目标函数为凸函数时BGD一定能够得到全局最优。缺点1当样本数目 m 很大时每迭代一步都需要对所有样本计算训练过程会很慢。2不能投入新数据实时更新模型。②随机梯度下降SGD随机梯度下降法求梯度时选取一个样本j来求梯度。\theta_{j}:w_{j}\alpha\left(y_{i}-\theta_{i}^{T} x_{i}\right) x_{j}\theta_{j}:w_{j}\alpha\left(y_{i}-\theta_{i}^{T} x_{i}\right) x_{j} 写成伪代码如下for i in range(nb_epochs):np.random.shuffle(data)for example in data:params_grad evaluate_gradient(loss_function , example ,params)params params - learning_rate * params_grad优点1由于不是在全部训练数据上的损失函数而是在每轮迭代中随机优化某一条训练数据上的损失函数这样每一轮参数的更新速度大大加快。缺点1准确度下降。由于即使在目标函数为强凸函数的情况下SGD仍旧无法做到线性收敛。2可能会收敛到局部最优由于单个样本并不能代表全体样本的趋势。3不易于并行实现。SGD 因为更新比较频繁会造成 cost function 有严重的震荡。③小批量梯度下降算法mini-batch GD小批量梯度下降法是是对于m个样本我们采用x个样子来迭代1xm。一般可以取x10当然根据样本的数据可以调整这个x的值。\theta\theta-\eta \cdot \nabla_{\theta} J\left(\theta ; x^{(i: in)} ; y^{(i: in)}\right)\theta\theta-\eta \cdot \nabla_{\theta} J\left(\theta ; x^{(i: in)} ; y^{(i: in)}\right) 伪代码如下for i in range(nb_epochs):np.random.shuffle(data)for batch in get_batches(data, batch_size50):params_grad evaluate_gradient(loss_function, batch, params)params params - learning_rate * params_grad优点1通过矩阵运算每次在一个batch上优化神经网络参数并不会比单个数据慢太多。2每次使用一个batch可以大大减小收敛所需要的迭代次数同时可以使收敛到的结果更加接近梯度下降的效果。(比如上例中的30W设置batch_size100时需要迭代3000次远小于SGD的30W次)3可实现并行化。缺点(解释1)1.不过 Mini-batch gradient descent 不能保证很好的收敛性learning rate 如果选择的太小收敛速度会很慢如果太大loss function 就会在极小值处不停地震荡甚至偏离。有一种措施是先设定大一点的学习率当两次迭代之间的变化低于某个阈值后就减小 learning rate不过这个阈值的设定需要提前写好这样的话就不能够适应数据集的特点。对于非凸函数还要避免陷于局部极小值处或者鞍点处因为鞍点周围的error是一样的所有维度的梯度都接近于0SGD 很容易被困在这里。会在鞍点或者局部最小点震荡跳动因为在此点处如果是训练集全集带入即BGD则优化会停止不动如果是mini-batch或者SGD每次找到的梯度都是不同的就会发生震荡来回跳动。2.SGD对所有参数更新时应用同样的 learning rate如果我们的数据是稀疏的我们更希望对出现频率低的特征进行大一点的更新。LR会随着更新的次数逐渐变小。缺点(解释2)1batch_size的不当选择可能会带来一些问题。batcha_size的选择带来的影响在合理地范围内增大batch_size的好处a. 内存利用率提高了大矩阵乘法的并行化效率提高。b. 跑完一次 epoch全数据集所需的迭代次数减少对于相同数据量的处理速度进一步加快。c. 在一定范围内一般来说 Batch_Size 越大其确定的下降方向越准引起训练震荡越小。2盲目增大batch_size的坏处a. 内存利用率提高了但是内存容量可能撑不住了。b. 跑完一次 epoch全数据集所需的迭代次数减少要想达到相同的精度其所花费的时间大大增加了从而对参数的修正也就显得更加缓慢。c. Batch_Size 增大到一定程度其确定的下降方向已经基本不再变化。2.梯度下降算法改进①动量梯度下降法MomentumMomentum 通过加入 γ*vt−1 可以加速 SGD 并且抑制震荡。momentum即动量它模拟的是物体运动时的惯性即更新的时候在一定程度上保留之前更新的方向同时利用当前batch的梯度微调最终的更新方向。这样一来可以在一定程度上增加稳定性从而学习地更快并且还有一定摆脱局部最优的能力。动量法做的很简单相信之前的梯度。如果梯度方向不变就越发更新的快反之减弱当前梯度。r一般为0.9。\begin{aligned} v_{t} \gamma v_{t-1}\eta \nabla_{\theta} J(\theta) \ \theta \theta-v_{t} \end{aligned}\begin{aligned} v_{t} \gamma v_{t-1}\eta \nabla_{\theta} J(\theta) \ \theta \theta-v_{t} \end{aligned} 缺点这种情况相当于小球从山上滚下来时是在盲目地沿着坡滚如果它能具备一些先知例如快要上坡时就知道需要减速了的话适应性会更好。②Nesterov accelerated gradient法NAG用 θ−γv_t−1 来近似当做参数下一步会变成的值则在计算梯度时不是在当前位置而是未来的位置上。仍然是动量法只是它要求这个下降更加智能。这个算法就可以对低频的参数做较大的更新对高频的做较小的更新也因此对于稀疏的数据它的表现很好很好地提高了 SGD 的鲁棒性。\begin{aligned} v_{t} \gamma v_{t-1}\eta \nabla_{\theta} J\left(\theta-\gamma v_{t-1}\right) \ \theta \theta-v_{t} \end{aligned}\begin{aligned} v_{t} \gamma v_{t-1}\eta \nabla_{\theta} J\left(\theta-\gamma v_{t-1}\right) \ \theta \theta-v_{t} \end{aligned} esterov 的好处就是当梯度方向快要改变的时候它提前获得了该信息从而减弱了这个过程再次减少了无用的迭代。超参数设定值: 一般 γ 仍取值 0.9 左右。③Adagrad这个算法就可以对低频的参数做较大的更新对高频的做较小的更新也因此对于稀疏的数据它的表现很好很好地提高了 SGD 的鲁棒性例如识别 Youtube 视频里面的猫训练 GloVe word embeddings因为它们都是需要在低频的特征上有更大的更新。梯度更新规则:\theta_{t1, i}\theta_{t, i}-\frac{\eta}{\sqrt{G_{t, i i}\epsilon}} \cdot g_{t, i}\theta_{t1, i}\theta_{t, i}-\frac{\eta}{\sqrt{G_{t, i i}\epsilon}} \cdot g_{t, i} 其中g为t时刻参数θ_i的梯度g_{t, i}\nabla_{\theta} J\left(\theta_{i}\right)g_{t, i}\nabla_{\theta} J\left(\theta_{i}\right) 如果是普通的 SGD 那么 θ_i 在每一时刻的梯度更新公式为\theta_{t1, i}\theta_{t, i}-\eta \cdot g_{t, i}\theta_{t1, i}\theta_{t, i}-\eta \cdot g_{t, i} 但这里的learning rate η也随t和i而变\theta_{t1, i}\theta_{t, i}-\frac{\eta}{\sqrt{G_{t, i i}\epsilon}} \cdot g_{t, i}\theta_{t1, i}\theta_{t, i}-\frac{\eta}{\sqrt{G_{t, i i}\epsilon}} \cdot g_{t, i} 其中 Gt 是个对角矩阵 (i,i) 元素就是 t 时刻参数 θi 的梯度平方和。Adagrad 的优点是减少了学习率的手动调节。超参数设定值一般η选取0.01。缺点它的缺点是分母会不断积累这样学习率就会收缩并最终会变得非常小。④Adadelta这个算法是对 Adagrad 的改进和Adagrad相比就是分母的 G 换成了过去的梯度平方的衰减平均值指数衰减平均值\Delta \theta_{t}-\frac{\eta}{\sqrt{E\left[g^{2}\right]{t}\epsilon}} g\right]}\Delta \theta_{t}-\frac{\eta}{\sqrt{E\left[g^{2{t}\epsilon}} g{R M S[g]} 这个分母相当于梯度的均方根 root mean squared (RMS)在数据统计分析中将所有值平方求和求其均值再开平方就得到均方根值 所以可以用 RMS 简写\Delta \theta_{t}-\frac{\eta{t}} g{R M S[g]}\Delta \theta_{t}-\frac{\eta{t}} g\right]} 其中 E 的计算公式如下t 时刻的依赖于前一时刻的平均和当前的梯度E\left[g^{2{t}\gamma E\left[g^{2}\right]\right]}(1-\gamma) g_{t}^{2}E\left[g^{2{t}\gamma E\left[g^{2}\right]-\frac{R M S[\Delta \theta]}(1-\gamma) g_{t}^{2} 梯度更新规则:此外还将学习率η换成了RMS[Δθ]这样的话我们甚至都不需要提前设定学习率了\Delta \theta_{t{t-1}}{R M S[g]-\frac{R M S[\Delta \theta]}} g_{t} \ \theta_{t1}\theta_{t}\Delta \theta_{t}\Delta \theta_{t{t-1}}{R M S[g]\right]}} g_{t} \ \theta_{t1}\theta_{t}\Delta \theta_{t} 超参数设定值: γ 一般设定为 0.9⑤RMSpropRMSprop 是 Geoff Hinton 提出的一种自适应学习率方法。RMSprop 和 Adadelta 都是为了解决 Adagrad 学习率急剧下降问题的。梯度更新规则:RMSprop 与 Adadelta 的第一种形式相同使用的是指数加权平均旨在消除梯度下降中的摆动与Momentum的效果一样某一维度的导数比较大则指数加权平均就大某一维度的导数比较小则其指数加权平均就小这样就保证了各维度导数都在一个量级进而减少了摆动允许使用一个更大的学习率η。E\left[g^{2{t}0.9 E\left[g^{2}\right]\right]}0.1 g_{t}^{2} \ \theta_{t1}\theta_{t}-\frac{\eta}{\sqrt{E\left[g^{2{t}\epsilon}} g\right]}E\left[g^{2{t}0.9 E\left[g^{2}\right]\right]}0.1 g_{t}^{2} \ \theta_{t1}\theta_{t}-\frac{\eta}{\sqrt{E\left[g^{2{t}\epsilon}} g} 超参数设定值:Hinton 建议设定 γ 为 0.9, 学习率 η 为 0.001。⑥AdamAdaptive Moment EstimationAdam 算法和传统的随机梯度下降不同。随机梯度下降保持单一的学习率即 alpha更新所有的权重学习率在训练过程中并不会改变。而 Adam 通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。这个算法是另一种计算每个参数的自适应学习率的方法相当于 RMSprop Momentum。除了像 Adadelta 和 RMSprop 一样存储了过去梯度的平方 vt 的指数衰减平均值 也像 momentum 一样保持了过去梯度 mt 的指数衰减平均值m_{t}\beta_{1} m_{t-1}\left(1-\beta_{1}\right) g_{t} \ v_{t}\beta_{2} v_{t-1}\left(1-\beta_{2}\right) g_{t}^{2}m_{t}\beta_{1} m_{t-1}\left(1-\beta_{1}\right) g_{t} \ v_{t}\beta_{2} v_{t-1}\left(1-\beta_{2}\right) g_{t}^{2} 如果mt和vt被初始化为0向量那它们就会向0偏置所以做了偏差校正通过计算偏差校正后的mt和vt来抵消这些偏差\hat{m{t}\frac{m}}{1-\beta_{1}^{t}} \ \hat{v{t}\frac{v}}{1-\beta_{2}^{t}}\hat{m{t}\frac{m}}{1-\beta_{1}^{t}} \ \hat{v{t}\frac{v}}{1-\beta_{2}^{t}} 梯度更新规则:\theta_{t1}\theta_{t}-\frac{\eta}{\sqrt{\hat{v{t}}\epsilon} \hat{m}}\theta_{t1}\theta_{t}-\frac{\eta}{\sqrt{\hat{v{t}}\epsilon} \hat{m}超参数设定值:建议 β1 0.9β2 0.999ϵ 10e−8。实践表明Adam 比其他适应性学习方法效果要好。Adam和 SGD区别Adam Adaptive Momentum顾名思义Adam集成了SGD的一阶动量和RMSProp的二阶动量。3.牛顿法利用二阶导数收敛速度快但对目标函数有严格要求必须有连续的一、二阶偏导数计算量大。利用牛顿法求解目标函数的最小值其实是转化成求使目标函数的一阶导为0的参数值。这一转换的理论依据是函数的极值点处的一阶导数为0.其迭代过程是在当前位置x0求该函数的切线该切线和x轴的交点x1作为新的x0,重复这个过程直到交点和函数的零点重合。此时的参数值就是使得目标函数取得极值的参数值。简述梯度下降法和牛顿法的优缺点梯度下降法和牛顿法区别1.牛顿法是通过求解目标函数的一阶导数为0时的参数进而求出目标函数最小值时的参数。①收敛速度很快。②海森矩阵的逆在迭代过程中不断减小可以起到逐步减小步长的效果。③缺点海森矩阵的逆计算复杂代价比较大因此有了拟牛顿法。2.梯度下降法是通过梯度方向和步长直接求解目标函数的最小值时的参数。越接近最优值时步长应该不断减小否则会在最优值附近来回震荡。Batch Normalization1.批标准化(Batch Normalization)可以理解为是一种数据预处理技术使得每层网络的输入都服从010均值1方差分布如果不进行BN那么每次输入的数据分布不一致网络训练精度自然也受影响。前向公式前向传播代码def batchnorm_forward(x, gamma, beta, eps):N, D x.shape#为了后向传播求导方便这里都是分步进行的#step1: 计算均值mu 1./N * np.sum(x, axis 0)#step2: 减均值xmu x - mu#step3: 计算方差sq xmu ** 2var 1./N * np.sum(sq, axis 0)#step4: 计算x^的分母项sqrtvar np.sqrt(var eps)ivar 1./sqrtvar#step5: normalization-x^xhat xmu * ivar#step6: scale and shiftgammax gamma * xhatout gammax beta#存储中间变量cache (xhat,gamma,xmu,ivar,sqrtvar,var,eps)return out, cache后向传播代码def batchnorm_backward(dout, cache):#解压中间变量xhat,gamma,xmu,ivar,sqrtvar,var,eps cacheN,D dout.shape#step6dbeta np.sum(dout, axis0)dgammax doutdgamma np.sum(dgammax*xhat, axis0)dxhat dgammax * gamma#step5divar np.sum(dxhat*xmu, axis0)dxmu1 dxhat * ivar #注意这是xmu的一个支路#step4dsqrtvar -1. /(sqrtvar**2) * divardvar 0.5 * 1. /np.sqrt(vareps) * dsqrtvar#step3dsq 1. /N * np.ones((N,D)) * dvardxmu2 2 * xmu * dsq #注意这是xmu的第二个支路#step2dx1 (dxmu1 dxmu2) 注意这是x的一个支路#step1dmu -1 * np.sum(dxmu1dxmu2, axis0)dx2 1. /N * np.ones((N,D)) * dmu 注意这是x的第二个支路#step0 done!dx dx1 dx2return dx, dgamma, dbetaBatch Norm即批规范化目的是为了解决每批数据训练时的不规则分布给训练造成的困难对批数据进行规范化还可以在梯度反传时解决梯度消失的问题。Batchnorm也是一种正则的方式可以代替其他正则方式如dropout但通过这样的正则化也消融了数据之间的许多差异信息。2. batchnorm的几个参数可学习的参数有哪些第四步加了两个参数γ和β分别叫做缩放参数和平移参数通过选择不同的γ和β可以让隐藏单元有不同的分布。这里面的γ和β可以从你的模型中学习可以用梯度下降Adam等算法进行更新。3. Batch Normalization的作用神经网络在训练的时候随着网络层数的加深,激活函数的输入值的整体分布逐渐往激活函数的取值区间上下限靠近,从而导致在反向传播时低层的神经网络的梯度消失。而BatchNormalization的作用是通过规范化的手段,将越来越偏的分布拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,从而使梯度变大,加快学习收敛速度,避免梯度消失的问题。①不仅仅极大提升了训练速度收敛过程大大加快②还能增加分类效果一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式所以不用Dropout也能达到相当的效果③另外调参过程也简单多了对于初始化要求没那么高而且可以使用大的学习率等。4. BN层怎么实现1.计算样本均值。2.计算样本方差。3.样本数据标准化处理。4.进行平移和缩放处理。引入了γ和β两个参数。来训练γ和β两个参数。引入了这个可学习重构参数γ、β让我们的网络可以学习恢复出原始网络所要学习的特征分布。5.BN一般用在网络的哪个部分啊先卷积再BNBatch normalization 的 batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理6.BN为什么要重构恢复出原始的某一层所学到的特征的。因此我们引入了这个可学习重构参数γ、β让我们的网络可以学习恢复出原始网络所要学习的特征分布。7.BN层反向传播怎么求导反向传播反向传播需要计算三个梯度值分别是\frac{\partial \ell}{\partial x_{i}}, \frac{\partial \ell}{\partial y}, \frac{\partial \ell}{\partial \beta}\frac{\partial \ell}{\partial x_{i}}, \frac{\partial \ell}{\partial y}, \frac{\partial \ell}{\partial \beta} 定义\frac{\partial \ell}{\partial y_{i}}\frac{\partial \ell}{\partial y_{i}} 为从上一层传递过来的残差。 \begin{aligned}计算 \frac{\partial \ell}{\partial Y} : \quad \frac{\partial \ell}{\partial \gamma}\sum_{i1}^{m} \frac{\partial \ell}{\partial y_{i}} \cdot \overline{x_{i}} . \ \text { 计算 } \frac{\partial \ell}{\partial \beta}: \frac{\partial \ell}{\partial \beta}\sum_{i1}^{m} \frac{\partial \ell}{\partial y_{i}} \ \text { 下面计算 } \frac{\partial \ell}{\partial x_{i}} . \end{aligned} \begin{aligned}计算 \frac{\partial \ell}{\partial Y} : \quad \frac{\partial \ell}{\partial \gamma}\sum_{i1}^{m} \frac{\partial \ell}{\partial y_{i}} \cdot \overline{x_{i}} . \ \text { 计算 } \frac{\partial \ell}{\partial \beta}: \frac{\partial \ell}{\partial \beta}\sum_{i1}^{m} \frac{\partial \ell}{\partial y_{i}} \ \text { 下面计算 } \frac{\partial \ell}{\partial x_{i}} . \end{aligned} 观察缩放和移位与归一化公式可以看到从xi到yi的链式计算过程上式三个加号对应三条链式计算。8. batchnorm训练时和测试时的区别训练阶段首先计算均值和方差每次训练给一个批量计算批量的均值方差然后归一化然后缩放和平移。测试阶段每次只输入一张图片这怎么计算批量的均值和方差于是就有了代码中下面两行在训练的时候实现计算好mean、 var测试的时候直接拿来用就可以了不用计算均值和方差。9.先加BN还是激活有什么区别先激活目前在实践上倾向于把BN放在ReLU后面。也有评测表明BN放ReLU后面效果更好。二、基础卷积神经网络1.CNN的经典模型LeNetAlexNetVGGGoogLeNetResNetDenseNet2.对CNN的理解CNN 数据输入层 (Input Layer) {[卷积计算层CONV Layer )ReLU激励层 (ReLU Layer)] 池化层 (Pooling Layer ) 全连接层 (FC Layer) 。3.CNN和传统的全连接神经网络有什么区别在全连接神经网络中每相邻两层之间的节点都有边相连于是会将每一层的全连接层中的节点组织成一列这样方便显示连接结构。而对于卷积神经网络相邻两层之间只有部分节点相连为了展示每一层神经元的维度一般会将每一层卷积层的节点组织成一个三维矩阵。全连接神经网络和卷积神经网络的唯一区别就是神经网络相邻两层的连接方式。4.讲一下CNN每个层及作用卷积层用它来进行特征提取池化层对输入的特征图进行压缩一方面使特征图变小简化网络计算复杂度一方面进行特征压缩提取主要特征激活函数是用来加入非线性因素的因为线性模型的表达能力不够。全连接层fully connected layersFC在整个卷积神经网络中起到“分类器”的作用。全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。5.为什么神经网络使用卷积层-共享参数局部连接使用卷积层的前提条件是什么-数据分布一致6.resnet相比于之前的卷积神经网络模型中最大的改进点是什么解决了什么问题跳跃连接(residual block)和瓶颈层。resnet本身是一种拟合残差的结果让网络学习任务更简单可以有效地解决梯度弥散的问题。Resnet为啥能解决梯度消失怎么做的能推导吗由于每做一次卷积包括对应的激活操作都会浪费掉一些信息比如卷积核参数的随机性盲目性、激活函数的抑制作用等等。这时ResNet中的shortcut相当于把以前处理过的信息直接再拿到现在一并处理起到了减损的效果。7.resnet第二个版本做了哪些改进Resnet性能最好的变体是哪个结构是怎么样的原理是什么Resnetv21、相比于原始的网络结构先激活的网络中f是恒等变换这使得模型优化更加容易。2、使用了先激活输入的网络能够减少网络过拟合。Resnet性能最好的变体是Resnext。ResNeXt可以说是基于Resnet与Inception Split Transfrom Concat而搞出的产物结构简单、易懂又足够强大。Inception网络使用了一种split-transform-merge思想即先将输入切分到不同的低维度中然后做一个特征映射最后将结果融合到一起。但模型的泛化性不好针对不同的任务需要设计的东西太多。ResNeXt提出了一个基数cardinatity的概念用于作为模型复杂度的另外一个度量。基数cardinatity指的是一个block中所具有的相同分支的数目。与 ResNet 相比相同的参数个数结果更好一个 101 层的 ResNeXt 网络和 200 层的 ResNet 准确度差不多但是计算量只有后者的一半。ResNet的特点 引入跳跃连接有效地解决了网络过深时候梯度消失的问题使得设计更深层次的网络变得可行。8.简述InceptionV1到V4的网络、区别、改进Inceptionv1的核心就是把googlenet的某一些大的卷积层换成11, 33, 55的小卷积这样能够大大的减小权值参数数量。inception V2在输入的时候增加了batch_normal所以他的论文名字也是叫batch_normal加了这个以后训练起来收敛更快学习起来自然更高效可以减少dropout的使用。inception V3把googlenet里一些77的卷积变成了17和71的两层串联33的也一样变成了13和31这样加速了计算还增加了网络的非线性减小过拟合的概率。另外网络的输入从224改成了299.inception v4实际上是把原来的inception加上了resnet的方法从一个节点能够跳过一些节点直接连入之后的一些节点并且残差也跟着过去一个。另外就是V4把一个先11再33那步换成了先33再11.论文说引入resnet不是用来提高深度进而提高准确度的只是用来提高速度的。9. DenseNet为什么比ResNet有更强的表达能力DenseNet在增加深度的同时加宽每一个DenseBlock的网络宽度能够增加网络识别特征的能力而且由于DenseBlock的横向结构类似 Inception block的结构使得需要计算的参数量大大降低。三、损失函数1.说一下smooth L1 Loss,并阐述使用smooth L1 Loss的优点\operatorname{smooth}{L}}(x)\left{\begin{array}{ll}0.5 x^{2} \text { if }|x|1 \ |x|-0.5 \text { otherwise }\end{array}\right.\operatorname{smooth{LLR的损失函数为交叉熵损失函数。参考文献LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[J]. Advances in neural information processing systems, 2012, 25: 1097-1105.Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4700-4708.He K, Zhang X, Ren S, et al. Identity mappings in deep residual networks[C].European conference on computer vision. Springer, Cham, 2016: 630-645.Xie S, Girshick R, Dollár P, et al. Aggregated residual transformations for deep neural networks[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1492-1500.参考链接https://zhuanlan.zhihu.com/p/26138673https://blog.csdn.net/elaine_bao/article/details/50923198https://www.cnblogs.com/guoyaohua/p/8724433.htmlhttps://blog.csdn.net/bl128ve900/article/details/95309305https://blog.csdn.net/bll1992/article/details/87431604https://blog.csdn.net/kittyzc/article/details/107444373https://blog.csdn.net/qq122716072/article/details/107083623https://www.cnblogs.com/wangguchangqing/p/12021638.htmlhttps://zhuanlan.zhihu.com/p/97324416https://blog.csdn.net/zouxy09/article/details/20319673https://blog.csdn.net/google19890102/article/details/69942970https://www.cnblogs.com/guoyaohua/p/8542554.htmlhttps://blog.csdn.net/qq_39852676/article/details/86529995本文亮点总结1.BatchNormalization的作用是通过规范化的手段,将越来越偏的分布拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,从而使梯度变大,加快学习收敛速度,避免梯度消失的问题。2.在合理地范围内增大batch_size的好处a. 内存利用率提高了大矩阵乘法的并行化效率提高。b. 跑完一次 epoch全数据集所需的迭代次数减少对于相同数据量的处理速度进一步加快。c. 在一定范围内一般来说 Batch_Size 越大其确定的下降方向越准引起训练震荡越小。机器学习/深度学习算法/自然语言处理交流群已建立机器学习算-自然语言处理微信交流群想要进交流群进行学习的同学可以直接加我的微信号HIT_NLP。加的时候备注一下知乎学校昵称 不加备注不会接受同意望谅解想进pytorch群备注知乎学校昵称Pytorch即可。然后我们就可以拉你进群了。群里已经有非得多国内外高校同学交流氛围非常好。强烈推荐大家关注机器学习算法与自然语言处理账号和机器学习算法与自然语言处理微信公众号可以快速了解到最新优质的干货资源。推荐阅读EMNLP 2021征稿通知交流群ACL-2021交流群NAACL2021-交流群写给新手炼丹师2021版调参上分手册知识蒸馏让LSTM重返巅峰最强的Attention函数诞生啦带给你意想不到的巨大提升新分类全总结最新Awesome-SLU-Survey资源库开源NaturalConv: 一个主题驱动的中文多轮对话数据集NUSA* STAR: 一种简单有效的数据增广方法for n-shot任务型对话系统AAAI 2021 | 机器翻译最新进展解读全领域涨点 | Transformer携Evolving Attention在CV与NLP领域全面涨点Facebook AI大一统使用统一Transfomer的多模态多任务学习谷歌提高长文本对话状态跟踪能力推荐李宏毅《机器学习》国语课程(2021)上线CVPR 2021接收结果出炉录用1663篇录取率27%深度学习中的知识蒸馏技术上大佬云集 AAAI 2021 图深度学习研讨会【招人】腾讯广告业务线赛尔笔记 | 篇章级机器翻译简介GPT“高仿”系列开源了最大可达GPT-3大小还能自主训练ACL 2021投稿避坑指南我大学没毕业在OpenAI搞AI想教教你如何提升“研究品味”推荐几本经典AI书籍赛尔原创AAAI 2021 | 纠结于联合学习中的建模方法快来看看图网络显式建模!如何提高PyTorch“炼丹”速度这位小哥总结了17种方法可直接上手更改的那种斯坦福CS224W《图机器学习》2021开课Jure Leskovec大牛主讲附课程PPT下载ICLR2021放榜录取860篇接受率为28.7%计算机视觉中的Transformer第二十届中国计算语言学大会CCL 2021技术评测任务征集完全图解GPT-2看完这篇就够了二完全图解GPT-2看完这篇就够了一IJCAI 2020今日开幕杰出论文奖、卓越研究奖、约翰·麦卡锡奖等8项大奖公布研究品味锻炼一份Python线性代数讲义全面回顾2020年图机器学习进展12位大神论道、寄望2021年大爆发第二十届中国计算语言学大会CCL 2021 征稿启事NTU-Xavier Bresson 图神经网络入门视频2020年arXiv十大热门论文来了不止GPT-3、SimCLR、YOLOv4...每日论文速递自然语言处理相关1月7日更新版权值衰减和L2正则化傻傻分不清楚斯坦福大学——人工智能本科4年课程清单超过500个附代码的AI/机器学习/深度学习/计算机视觉/NLP项目Awesome Transformer for Vision Resources List库2020 Top10计算机视觉论文总结论文代码解读还有demo视频摘要数据整理仓库6个数据集156个参考文献Visual Transformer 调研surveyNLP生成任务痛点58页generation评价综述机器学习画图模板ML Visuals更新谷歌最新28页高效 Transformer 模型综述Papers with Code 2020 全年回顾最新14页《图神经网络可解释性》综述论文陶大程等人编写最新41页深度学习理论综述使用PyTorch时最常见的4个错误加拿大蒙特利尔大学助理教授刘邦招收2021/2022年博士生【EMNLP2020】基于动态图交互网络的多意图口语语言理解框架一文搞懂 PyTorch 内部机制忆臻AAAI 2021论文接收列表放出!!!机器学习自然语言处理从头来看关系抽取机器学习自然语言处理Transformer的一家机器学习自然语言处理通俗易懂BiLSTM上的CRF用命名实体识别任务来解释CRF一机器学习自然语言处理通俗易懂BiLSTM上的CRF用命名实体识别任务来解释CRF二机器学习自然语言处理赛尔笔记 | 自然语言处理领域的数据增广方法机器学习自然语言处理基于小样本学习的图像分类技术综述(中文版)19页pdf机器学习自然语言处理【斯坦福NLP-CS224N硬核课】自然语言处理未来与深度学习81页ppt机器学习自然语言处理大道至简算法工程师炼丹Trick手册机器学习自然语言处理Transformer「预训练变换器文本排序」首篇综述书155页pdf概述BERT类模型文本检索进展机器学习自然语言处理周志华老师《机器学习》手推笔记214页机器学习自然语言处理原来有这个算法让点评体验如此好机器学习自然语言处理AAAI2020-图神经网络GNN过去、现在、应用和未来最新研究进展分享机器学习自然语言处理图神经网络(GNN)必读论文及最新进展跟踪机器学习自然语言处理5种神经网络常见的求导机器学习自然语言处理一文概览 CVPR2021 最新18篇 Oral 论文机器学习自然语言处理CVPR2021最新接收论文合集22个方向100篇论文汇总持续更新机器学习自然语言处理Transformer是巧合还是必然搜索推荐领域的新潮流机器学习自然语言处理AAAI 2021最佳论文《Informer》作者Transformer 最新进展机器学习自然语言处理[万字长文] 图神经网络的解释性综述机器学习自然语言处理图解Transformer完整版机器学习自然语言处理【Transformer】图解OpenAI的秘密武器GPT-2可视化Transformer语言模型机器学习自然语言处理搞懂Transformer结构看这篇PyTorch实现就够了机器学习自然语言处理深度学习中的知识蒸馏技术上机器学习自然语言处理深度学习中的知识蒸馏技术(下)-知识蒸馏与推荐系统机器学习自然语言处理2021年我终于决定入门GCN机器学习自然语言处理排序(rank)后重排(re-rank)?机器学习自然语言处理从理论到实践解决文本分类中的样本不均衡问题机器学习自然语言处理如何基于多模态识别广告文章机器学习自然语言处理总结paper分享|对话系统中的自然语言生成技术NLG机器学习自然语言处理百家争鸣|国内外NLP领域学术界和工业界的牛人和团队机器学习自然语言处理任务型对话系统公式建模实例说明机器学习自然语言处理一文看透多任务学习机器学习自然语言处理总结paper分享|对话系统中的自然语言生成技术NLG机器学习自然语言处理百家争鸣|国内外NLP领域学术界和工业界的牛人和团队机器学习自然语言处理收藏2021年浅谈多任务学习机器学习自然语言处理CTR模型越来越深如何让它变轻?机器学习自然语言处理排序(rank)后重排(re-rank)?赛尔笔记 | 对比学习简述 - 知乎 (zhihu.com)20篇「ICML2021」最新论文抢先看看机器学习2021在研究什么 - 知乎 (zhihu.com)“意念打字”速度接近常人手机聊天专家这比马斯克的“猴子玩游戏”难多了 | Nature封面 - 知乎 (zhihu.com)MLP三大工作超详细解读why do we need? - 知乎 (zhihu.com)近期必读的5篇顶会CVPR 2021【对比学习CL】相关论文和代码 - 知乎 (zhihu.com)赛尔原创IJCAI 2021 | 会议摘要有难度快来引入对话篇章结构信息 - 知乎 (zhihu.com)ViLT最简单的多模态Transformer - 知乎 (zhihu.com)台大最新《深度学习优化问题》硬核课林智仁教授讲解附课件下载 - 知乎 (zhihu.com)Rethinking “Batch” in BatchNorm - 知乎 (zhihu.com)文本情感对话系统研究综述 - 知乎 (zhihu.com)写给新手炼丹师2021版调参上分手册 - 知乎 (zhihu.com)100篇论文合集:GNN在NLP中的应用 - 知乎 (zhihu.com)《自监督学习》概述117页ppt李飞飞经典CS231N2021《卷积神经网络视觉识别》课程第十三讲 - 知乎 (zhihu.com)近期必读的5篇顶会ICML 2021【图神经网络GNN】相关论文和代码 - 知乎 (zhihu.com)成熟的AI应该自己写代码IBM发布5亿行代码数据集包含55种语言开源 - 知乎 (zhihu.com)2021机器学习研究风向是啥MLP→CNN→Transformer→MLP - 知乎 (zhihu.com)基于会话推荐系统最新长文综述163篇参考文献已被ACM Computing Surveys接收 - 知乎 (zhihu.com)弗吉尼亚理工、滑铁卢大学、威斯康星大学、弗吉尼亚大学AI硕博招生 - 知乎 (zhihu.com)UC伯克利马毅ICML投稿得到4个评审接收却仍遭AC拒绝自称论文泄露了深度学习的天机 - 知乎 (zhihu.com)TransGAN两个Transformer可以构造一个强大的GAN - 知乎 (zhihu.com)CHI2021最新「可解释人工智能XAI导论」86页PPT带你实战XAI系统 - 知乎 (zhihu.com)吊打BERT、GPT、DALL·E跨模态榜单新霸主诞生 - 知乎 (zhihu.com)拯救Sci-Hub的「最后行动」把77TB论文转化成850个BT种子传播下去 - 知乎 (zhihu.com)【2021新书】概率图模型原理与应用370页pdf概述PGM最新技术 - 知乎 (zhihu.com)为什么贝叶斯统计如此重要 - 知乎 (zhihu.com)Github标星1.2KVisual Transformer 最全最新资源包含期刊、顶会论文 - 知乎 (zhihu.com)赛尔笔记 | 可解释的自然语言处理方法简介 - 知乎 (zhihu.com)}}(x)\left{\begin{array}{ll}0.5 x^{2} \text { if }|x|1 \ |x|-0.5 \text { otherwise }\end{array}\right. Smooth L1的优点①相比于L1损失函数可以收敛得更快。②相比于L2损失函数对离群点、异常值不敏感梯度变化相对更小训练时不容易跑飞。2. L1_loss和L2_loss的区别平均绝对误差(L1 Loss): 平均绝对误差Mean Absolute Error,MAE) 是指模型预测值f(x)和真实值y之间距离的平均值其公式如下M A E\frac{\sum_{n1}^{n}\left|f\left(x_{i}\right)-y_{i}\right|}{n}M A E\frac{\sum_{n1}^{n}\left|f\left(x_{i}\right)-y_{i}\right|}{n} 均方误差MSE (L2 Loss):均方误差Mean Square Error,MSE是模型预测值f(x) 与真实样本值y 之间差值平方的平均值其公式如下M S E\frac{\sum_{i1}^{n}\left(f_{x_{i}}-y_{i}\right)^{2}}{n}M S E\frac{\sum_{i1}^{n}\left(f_{x_{i}}-y_{i}\right)^{2}}{n} 3.为何分类问题用交叉熵而不用平方损失啥是交叉熵L-[y \log \hat{y}(1-y) \log (1-\hat{y})]L-[y \log \hat{y}(1-y) \log (1-\hat{y})] 1.用平方误差损失函数误差增大参数的梯度会增大但是当误差很大时参数的梯度就会又减小了。2.使用交叉熵损失是函数误差越大参数的梯度也越大能够快速收敛。分类中为什么交叉熵损失函数比均方误差损失函数更常用交叉熵损失函数关于输入权重的梯度表达式与预测值与真实值的误差成正比且不含激活函数的梯度而均方误差损失函数关于输入权重的梯度表达式中则含有由于常用的sigmoid/tanh等激活函数存在梯度饱和区使得MSE对权重的梯度会很小参数w调整的慢训练也慢而交叉熵损失函数则不会出现此问题其参数w会根据误差调整训练更快效果更好。4.一张图片多个类别怎么设计损失函数多标签分类问题多标签分类怎么解决从损失函数角度考虑分类问题名称 输出层使用激活函数 对应的损失函数二分类 sigmoid函数 二分类交叉熵损失函数binary_crossentropy多分类 Softmax函数 多类别交叉熵损失函数categorical_crossentropy多标签分类 sigmoid函数 二分类交叉熵损失函数binary_crossentropy(多标签问题与二分类问题关系在上文已经讨论过了方法是计算一个样本各个标签的损失输出层采用sigmoid函数然后取平均值。把一个多标签问题转化为了在每个标签上的二分类问题。)5. LR的损失函数它的导数是啥加了正则化之后它的导数又是啥Logistic regression 逻辑回归是当前业界比较常用的机器学习方法。Logistic回归虽然名字里带“回归”但是它实际上是一种分类方法主要用于两分类问题利用Logistic函数或称为Sigmoid函数自变量取值范围为(-INF, INF)自变量的取值范围为(0,1)函数形式为g(z)\frac{1}{1e^{-z}}g(z)\frac{1}{1e^{-z}大模型时代单靠自学真的不够。我有完整的AI算法课程体系从基础到实战手把手带你入门。想了解的扫码加我企业微信备注课程送你一份学习规划大家好我是资深AI讲师与学习规划师。专注计算机视觉教学与算法研发过去三年我帮超过2500名有Python 基础的入门者从像素是什么到独立跑通CV项目。今天这篇长文完全按零基础实战体系撰写从图像本质到经典算法、再到OpenCV工具链和完整项目一条龙给你讲透可直接复现的CV专业指南。适合人群大学生、转行者、开发者只要会Python基础就能跟上。读完你就能掌握图像处理4大经典算法并拥有一个可直接写进简历的实战项目为方便大家学习 这里给大家整理了一份系统学习资料包 需要的同学 根据下图指示自取就可以

更多文章