AI深度学习

损失函数:
1、绝对值损失函数
2、平方损失函数 (回归任务)
3、指数损失函数
4、交叉熵损失函数  (分类任务)

正则化:
L1正则化是指权值向量中各个元素的绝对值之和,可以实现让参数矩阵稀疏,让参数稀疏的好处,可以实现对特征的选择
L2正则化是指权值向量中各个元素的平方和然后再求平方根,解决过拟合问题。
 
1*1卷积:
 实现跨通道交互、升降维、增加非线性

过拟合: 泛化能力差,原因:
    网络太复杂,数据量不够; ---调小模型,增加数据集
    训练集与测试集特征分布不一致;--正则化,dropout
    样本中噪声数据干扰太大,
    迭代次数太多了 -----提前停止
    
BN以及BN在测试阶段如何处理 ?
 对每一个batch的数据根据求得的均值和方差进行归一化处理,主要作用是加速训练收敛,防止过拟合。
 测试阶段,可以根据训练数据机每一个batch的均值和方差做平滑处理或者求均值,得到全局的均值和方差。

dropout在测试阶段如何处理 ?
  Dropout 是在训练过程中以一定的概率的使神经元失活,即输出为0,以提高模型的泛化能力,减少过拟合。
  在测试时,应该用整个训练好的模型,因此不需要dropout。在测试的时候没有神经元被丢弃,因此输出值需要按dropout比率缩小。


BN和Dropout单独使用都能减少过拟合并加速训练速度,但如果一起使用的话并不会产生1+1>2的效果,相反可能会得到比单独使用更差的效果

为什么会出现梯度消失和梯度爆炸 ?
梯度消失:在神经网络中,当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加,分类准确率反而下降了。 这种现象叫梯度消失。
梯度爆炸:由于初始化权值过大,前面层会比后面层变化的更快,就会导致权值越来越大,梯度爆炸的现象就发生。 这种现象叫梯度爆炸

因为通常神经网络所用的激活函数是sigmoid函数,这个函数有个特点,就是能将负无穷到正无穷的数映射到0和1之间,并且对这个函数求导的结果是f′(x)=f(x)(1-f(x))。
因此两个0到1之间的数相乘,得到的结果就会变得很小了。神经网络的反向传播是逐层对函数偏导相乘,因此当神经网络层数非常深的时候,最后一层产生的偏差就因为乘了很多的小于1的数而越来越小,最终就会变为0,从而导致层数比较浅的权重没有更新,这就是梯度消失

1、选择合适的激活函数
一般使用 Relu函数,Relu的导数为1.不建议使用Sigmoid函数和tanh函数,因为二者的导函数的区域小,容易梯度消失。
2、选择合适的参数初始化方法
3、使用权重参数正则化
4、使用Batch Normalization
5、使用残差结构

分类有哪些评估指标: 
1、正确率 = 实际为正例/(预测为正例)   检索出来的条目有多少是正确的
2、召回率 = 预测为正例且实际为正例 /实际为正列    所有正确条目有多少被检索出来了
F1Score = 2*PR/(P +R)

讲一下SOFTMAX ?
该元素的指数与所有输出元素指数和的比值。通过Softmax函数就可以将多分类的输出值转换为范围在[0, 1]和为1的概率分布


RNN梯度消失问题,为什么LSTM和GRU可以解决此问题 ? 
RNN由于网络较深,后面层的输出误差很难影响到前面层的计算,RNN的某一单元主要受它附近单元的影响。而LSTM因为可以通过阀门记忆一些长期的信息,相应的也就保留了更多的梯度。而GRU也可通过重置和更新两个阀门保留长期的记忆,也相对解决了梯度消失的问题。

LSTM到底解决了什么?三种门以及sigmoid函数对每个门的作用 ?
LSTM一定程度上缓解了梯度消失问题, 输入门     遗忘门     输出门
LSTM中的三个门是用的sigmoid作为激活函数,生成候选记忆时候用的才是tanh,门的激活函数如果用relu的话会有个问题,就是relu是没有饱和区域的,那么就没法起到门的作用。候选记忆用tanh是因为tanh的输出在-1~1,是0中心的,并且在0附近的梯度大,模型收敛快。
LSTM这两个激活函数的作用分别是什么 sigmoid将一个实数输入映射到[0,1]范围内,tanh函数将一个实数输入映射到[-1,1]范围内;

几种激活函数的优缺点:
  sigmoid函数  
    优点:Sigmoid函数的输出在(0,1)之间,输出范围有限,优化稳定,可以用作输出层。连续函数,便于求导。
    缺点:sigmoid函数在变量取绝对值非常大的正值或负值时会出现饱和现象,意味着函数会变得很平,并且对输入的微小改变会变得不敏感,容易出现梯度消失,计算复杂。
  Tanh函数
    优点:取值范围为[-1,1],均值为0。
    缺点:但仍然存在梯度饱和和及算法复杂
  ReLU函数
    优点:在x>0区域上,不会出现梯度饱和、梯度消失的问题,计算复杂度低
    缺点:输出不是0均值的,在x<0时,梯度为0。这个神经元及之后的神经元梯度永远为0,不再对任何数据有所响应,导致相应参数永远不会被更新。

模型训练难点以及解决方法: 
1、收敛速度慢  -----
    1.1 设置合理的初始化权重w和偏置b
    1.2 优化学习率,开始学习率大一些,从而加速收敛。训练后期学习率小一点,从而稳定的落入局部最优解。
    1.3 网络节点输入值正则化 batch normalization
    1.4 采用更先进的网络结构,减少参数量
2、线性模型的局限性-----
   2.1 激活函数使用
   2.2 两个小卷积核的叠加代替一个大卷积核
   2.3 1x1小卷积核的使用 
3 过拟合问题-----
   3.1 输入增强,增大样本量
   3.2 dropout,减少特征量
4 梯度弥散, 无法使用更深的网络 
   4.1 relu代替sigmoid激活函数
   4.2 使用残差网络
 

你可能感兴趣的:(python)