十万个深度学习为什么?

十万个深度学习为什么?

逻辑回归是一个分类算法,那么它是在回归什么呢?

答:

逻辑回归是在数据服从伯努利分布的假设下,通过极大似然的方法,运用梯度下降法来求解参数,从而达到将数据二分类的目的。
逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种广义线性回归模型,解决的是分类问题。

分类问题为什么不用 MSE,而是要用交叉熵?

答:

常见的损失函数,常见的激活函数,ELU 函数 了解吗?

答:

常见的损失函数:0-1 损失函数,绝对值损失函数,log 对数损失函数,平方损失函数,指数损失函数,hinge 损失函数,交叉熵损失函数等。

0-1 损失函数

L(Y,f(X))={1,Yf(X)0,Y=f(X)

绝对值损失函数

L(Y,f(x))=|Yf(x)|

log 对数损失函数

L(Y,P(YX))=logP(YX)

平方损失函数

L(Yf(X))=N(Yf(X))2

交叉熵损失函数

C=1nx[ylna+(1y)ln(1a)]

Sigmoid 函数:

f(x)=11+ex

特点:
它能够把输入的连续实值变换为 0 和 1 之间的输出,特别的,如果是非常大的负数,那么输出就是 0;如果是非常大的正数,输出就是 1。
缺点:

  1. 在深度神经网络中梯度反向传递时导致梯度消失,其中梯度爆炸发生的概率非常小,而梯度
    消失发生的概率比较大。
  2. Sigmoid 的 output 不是 0 均值(即 zero-centered)。
  3. 其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这
    会较大地增加训练时间。

Tanh 函数:

tanh(x)=exexex+ex

特点:它解决了 Sigmoid 函数的不是 zero-centered 输出问题,收敛速度比 sigmoid 要快,然而,
梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。

ReLU 函数:

f(x)=max(0,x)

特点:

  1. ReLu 函数是利用阈值来进行因变量的输出,因此其计算复杂度会比剩下两个函数低(后两个函数都是进行指数运算)

  2. ReLu 函数的非饱和性可以有效地解决梯度消失的问题,提供相对宽的激活边界。

  3. ReLu 的单侧抑制提供了网络的稀疏表达能力。

缺点:

  1. ReLU 的局限性:在于其训练过程中会导致神经元死亡的问题。这是由于函数 f(x)=max(0,x)导致负梯度在经过该 ReLU 单元时被置为 0,且在之后也不被任何数据激活,即流经该神经元的梯度永远为 0,不对任何数据产生响应。在实际训练中,如果学习率(Learning Rate)设置较大,会导致超过一定比例的神经元不可逆死亡,进而参数梯度无法更新,整个训练过程失败。

Leaky ReLu 函数:

f(x)={x(x>0)ax(x0)

LReLU 与 ReLU 的区别在于, 当 z<0 时其值不为 0,而是一个斜率为 a 的线性函数,一般 a 为一个很小的正常数, 这样既实现了单侧抑制,又保留了部分负梯度信息以致不完全丢失。但另一方面,a 值的选择增加了问题难度,需要较强的人工先验或多次重复训练以确定合适的参数值。
基于此,参数化的 PReLU(Parametric ReLU)应运而生。它与 LReLU 的主要区别是将负轴部分斜率 a 作为网络中一个可学习的参数,进行反向传播训练,与其他含参数网络层联合优化。而另一个LReLU 的变种增加了“随机化”机制,具体地,在训练过程中,斜率 a 作为一个满足某种分布的随机采样;测试时再固定下来。Random ReLU(RReLU)在一定程度上能起到正则化的作用。

ELU 函数:

f(x)={x,x>0α(ex1),x0

ELU 函数是针对 ReLU 函数的一个改进型,相比于 ReLU 函数,在输入为负数的情况下,是有一定的输出的,而且这部分输出还具有一定的抗干扰能力。这样可以消除 ReLU 死掉的问题,不过还是有梯度饱和和指数运算的问题。

熵,交叉熵的概念

答:

在信息论和概率统计中,熵是表示随机变量不确定的度量,随机边量 X 的熵定义如下:

H(X)=xp(x)logp(x)

熵只依赖于 X 的分布,与 X 的取值无关。
条件熵 H(Y|X) 表示在已知随机变量 X 的条件下随机变量 Y 的不确定性,H(Y|X)定义为在给定条件 X 下,Y 的条件概率分布的熵对 X 的数学期望:

H(YX)=i=1npiH(YX=xi)

Batch-norm 作用和参数

答:

  1. batch norm 对于输入数据做了零均值化和方差归一化过程,方便了下一层网络的训练过程,从而加速了网络的学习。不同 batch 的数据,由于加入了 batch norm,中间层的表现会更加稳定,输出值不会偏移太多。各层之间受之前层的影响降低,各层之间比较独立,有助于加速网络的学习。梯度爆炸和梯度消失现象也得到了一些缓解(我自己加上去的)。

  2. batch norm 利用的是 mini-batch 上的均值和方差来做的缩放,但是不同的 mini-batch 上面的数据是有波动的,相当于给整个模型引入了一些噪音,从而相当于有了一些正则化的效果,从而提升表现。
    实际 batch norm 在训练过程中,y,b 参数和 w 相似,直接利用梯度值乘以学习率,更新值就好了。
    需要注意的是,batch norm 中的 z 的均值和方差都是通过每一个 mini-batch 上的训练数据得到的。在测试过程中,不能通过单独样本的数据计算均值和方差,我们可以通过让训练过程中的每一个 mini-batch 的均值和方差数据,计算指数加权平均,从而得到完整样本的均值和方差的一个估计。在测试过程中,使用该值作为均值和方差,从而完成计算。

LR 的损失函数推导

答:

逻辑回归损失函数及梯度推导公式如下:

L(w)=i(yilogh(xi)+(1yi)log(1h(xi)))=iyi(logh(xi)log(1h(xi)))+log(1h(xi))=iyilogh(xi)1h(xi)+log(1h(xi))=iyi(wTxi)+log(111+ewxi)=i(yi(wTxi)log(1+ewTxi))

求导得:

dLdw=yx11+ewTxewTxx=x(yh(x))

残差网络有哪些作用?

答:

解决梯度消失和网络退化问题。

解决梯度消失:

残差模块能让训练变得更加简单,如果输入值和输出值的差值过小,那么可能梯度会过小,导致出现梯度小时的情况,残差网络的好处在于当残差为 0 时,改成神经元只是对前层进行一次线性堆叠,使得网络梯度不容易消失,性能不会下降。

解决网络退化:

随着网络层数的增加,网络会发生退化现象:随着网络层数的增加训练集 loss 逐渐下降,然后趋于饱和,如果再增加网络深度的话,训练集 loss 反而会增大,注意这并不是过拟合,因为在过拟合中训练 loss 是一直减小的。

而残差网络在前向传播时,输入信号可以从任意低层直接传播到高层。由于包含了一个天然的恒等映射,一定程度上可以解决网络退化问题。

交叉熵损失,二分类交叉熵损失和极大似然什么关系?

答:

什么是交叉熵损失?
机器学习的交叉熵损失函数定义为:假设有 N 个样本,

J(w)=1Nn=1NH(pn,qn)

其中:

H(p,q)=i=1Kp(xi)logq(xi)

从一个直观的例子感受最小化交叉熵损失与极大似然的关系。

J(w)=1Nn=1N[ynlogyn^+(1yn)log(1y^n)]

去掉 1/N 并不影响函数的单调性,机器学习任务的也可以是最小化下面的交叉熵损失:

J(w)=n=1N[ynlogyn^+(1yn)log(1yn^)]

等价于最大化下面这个函数:

J(w)=n=1N[ynlogyn^+(1yn)log(1yn^)]

不难看出,这其实就是对伯努利分布求极大似然中的对数似然函数(log-likelihood)。
也就是说,在伯努利分布下,极大似然估计与最小化交叉熵损失其实是同一回事。

梯度爆炸和梯度消失原因,解决方案

答:

梯度消失:(1)隐藏层的层数过多;(2)采用了不合适的激活函数(更容易产生梯度消失,但是也有可能产生。

梯度爆炸:(1)隐藏层的层数过多;(2)权重的初始化值过大。

梯度消失和梯度爆炸问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑一下三种方案解决:
(1)用 ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout 等替代 sigmoid 函数。
(2)用 Batch Normalization。
(3)LSTM 的结构设计也可以改善 RNN 中的梯度消失问题。

你对 fast rcnn 了解多少?

答:

两阶段目标检测算法
Fast RCNN,是 RCNN 算法的升级版,之所以提出 Fast R-CNN,主要是因为 R-CNN 存在以下几个问题:

  1. 训练分多步。通过上一篇博文我们知道 R-CNN 的训练先要 fine tuning 一个预训练的网络,然后针对每个类别都训练一个 SVM 分类器,最后还要用 regressors 对 bounding-box 进行回归,另外region proposal 也要单独用 selective search 的方式获得,步骤比较繁琐。
  2. 时间和内存消耗比较大。在训练 SVM 和回归的时候需要用网络训练的特征作为输入,特征保存在磁盘上再读入的时间消耗还是比较大的。
  3. 测试的时候也比较慢,每张图片的每个 region proposal 都要做卷积,重复操作太多。虽然在 Fast RCNN 之前有提出过 SPPnet 算法来解决 RCNN 中重复卷积的问题,但是 SPPnet 依然存在和 RCNN 一样的一些缺点比如:训练步骤过多,需要训练 SVM 分类器,需要额外的回归器,特征也是保存在磁盘上。因此 Fast RCNN 相当于全面改进了原有的这两个算法,不仅训练步骤减少了,也不需要额外将特征保存在磁盘上。

池化的作用

答:

  1. 保留主要特征的同时减少参数和计算量,防止过拟合。
  2. invariance(不变性),这种不变性包括 translation(平移),rotation(旋转),scale(尺度)。

BN 的作用 ,如何做

答:

数据分布更一致,收敛速率增加,可以达到更好的精度。

常见的 attention 机制,说明 channel attention 和 self attention 的原理

答:

self-attention、channel attention、spatial attention、multi-head attention、transformer
自注意力机制是注意力机制的变体,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。

softmax 求导

auc 含义公式

AUC 是 ROC 曲线下面的面积,AUC 可以解读为从所有正例中随机选取一个样本 A,再从所有负例中随机选取一个样本 B,分类器将 A 判为正例的概率比将 B 判为正例的概率大的可能性。AUC 反映的是分类器对样本的排序能力。AUC 越大,自然排序能力越好,即分类器将越多的正例排在负例之前

公式如下:

AUC=i ∈positiveClass rankiM(1+M)2M×N

posted @   梁君牧  阅读(72)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
🚀