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