FunnyWii
FunnyWii
Published on 2022-11-20 / 102 Visits
0
0

深度学习八股文 - 基础概念

NN中的Bias?

偏置允许激活函数向左或向右移动以更好地适应数据。

反向传播是啥?

允许来自 Cost Function 的信息,从网络末端反向向前传播,以便计算梯度 -> 更新参数。

梯度消失

首先,要知道NN是基于链式法则,因此层数越深,梯度将以指数形式传播。

梯度越来越小,权重值不再产生变化,模型也就停止了训练。

原因一是在深层网络中,二是采用了不合适的激活函数,比如sigmoid

解决梯度消失

  • 使用其他Activation Function,比如ReLU
  • residual networks 残差网络
  • batch normalization 批量归一化

梯度爆炸

大梯度误差不断累积,导致模型的权重更新非常大。这会导致模型不稳定,不能学习。

一般出现在深层网络权值初始化值太大的情况下

解决梯度爆炸

解决方案

  • Pre-training 预训练 Fine-tunning 手动微调
  • Gradient Cut 对梯度设置阈值。
  • Weights Regurarization

0初始权重可以捏?

用0初始化权重会导致神经元学习相同的特征,因为每个权重的导数都一样。

逻辑回归和NN之间的关系?

基本上,可以把逻辑回归看作是一个单层神经网络。

用牛顿法等二阶方法来训练逻辑回归是可能的。但是这种计算方式对于较大的NN来说并不高效。

NN比逻辑回归强在哪

MLP(多层感知机)的存在让NN可以提取更有用的数据结构。而逻辑结构不能自己学习。

MLP (Multilayer Perceptron)

也叫人工神经网络(ANN,Artificial Neural Network)。

多层感知机最底层是输入层,中间是隐藏层,最后是输出层。每个层时间都是全连接的。

网格搜索和随机搜索

蓝蓝教过了。

在NN中避免OverFitting

  • Dropout layer.
  • Data augmentation. 数据增强,比如翻转(Flip),旋转(Rotation),缩放比例(Scale), 裁剪(Crop),移位(Translation),高斯噪声(Gaussian Noise)
  • Fine-tuning. 原理就是利用已知的网络结构和已知的网络参数,修改output层为我们自己的层,微调最后一层前的若干层的参数,这样就有效利用了深度神经网络强大的泛化能力,
  • Adjust learning rate or batch size.
  • Early Stop

Dropout

在每一个batch的训练当中随机减掉一些神经元

Batch normalization

先计算输入的均值方差,之后将均值方差变换为0和1。之后将数据乘以 ​\gamma 并加上 ​\beta (两个可训练的参数),并输出。

将数据规整到统一区间,减少数据的发散程度,降低网络的学习难度。使用 ​\gamma​\beta 作为还原参数,在一定程度上保留原数据的分布。

为何非线性激活函数有必要

非线性激活函数可以使神经网络随意逼近复杂函数,类似非线性的Sine函数随意逼近各种复杂函数一样。

没有激活函数带来的非线性,多层神经网络和单层无异。

SGD(Stochastic Gradient Descent)

BGD会使用数据中的所有点计算MSE和对应梯度,每走一步(更新模型参数),为了计算original-loss上的梯度,就需要遍历整个数据集。

SGD每次随机选择一个mini-batch去计算梯度,走一步只需要遍历一个mini-batch

RMSprop (Root Mean Square Propagation)

是一种梯度下降优化算法,用于神经网络的小批量(mini-batch)学习。它使用平方梯度的移动平均数来规范梯度,以处理梯度消失和爆炸的问题。简单地说,它使用一个自适应的学习率,而不是把学习率当作一个超参数。

Batch size

大批量 - 更快的收敛,但可能使模型停留在局部最小值,需要更多的时间。

小批量 - 敛速度变慢,但引入了更多的随机性,结果可能更好。

Learning Rate

大的学习率 - 使模型学习得更快,但代价是最终会得到一个次优的权重集。
小的学习率 - 模型学习到更理想的权重集,但需要更长的时间来训练,并增加过拟合的风险。


Comment