正则化
对于不同的权重参数,我们更偏向于选择各个特征权重均衡的参数。
我们假设一组W1 = [4,0,0,0] W2 = [1,1,1,1]
即使使用W1权重的结果符合预期,但由于其泛化能力几乎为0,不可工程化,其应用能力十分狭窄。正则化则是为了避免W1的情况,也就是过拟合。
- 我们将其各个特征权重参数的平方和作为评判指标,则上述W1的惩罚项为16,W2的则为4,因此!对于W1的惩罚值应该偏大一些。
PS.对于每一层神经网络,我们无法知道其到底做什么,所以将其视作黑盒!
模型训练后权重参数忽大忽小的原因
数据集不好,存在多个离群点、异常点。(建模比赛中经常会在数据集中加入异常点来增大难度)
- 解决方法1:人工审核一遍,去除部分异常点。(算法层面较难分辨出离群点)
- 解决方法2:增大batch-size,以防止模型过拟合
- 解决方法3:通过聚类算法DBSCN,筛选出-1的点,即离群点
损失函数
损失函数 = 数据损失 + 正则化惩罚项
- 数据损失:预测数值和真实值之间的差异
- 正则化惩罚项:权重均衡的W其惩罚较小,越不均衡的W其惩罚越大!
(我们总是希望模型不要太复杂,过拟合的模型是毫无用处的)
Relu函数(激活函数)(非线性函数,用的更多!)
max(0,x)去除负值
PS.有针对Relu改造的函数:不直接抹去(设置为0),而是给定一点点负值,改进方法很多
Sigmoid函数(激活函数)(线性函数)
对于分类任务,经过模型预测后,我们可以得到一个得分值。
但是!和得分值相比,得到样本在每一个类别的概率是不是更好呢?!这就是sigmoid函数所做的事
- 然而sigmoid函数中存在梯度消失现象,即无法更新权重参数!也正是这个现象,导致了神经网络早期的不盛行。
Softmax分类器
Ps....利用log函数,因为log函数,当x = 1 时,y = 0,即当概率为1的时候,其损失为0,也就是完美。
Epoch、BN
Epoch = n : 完成了n次前向计算 + 反向传播的过程
BN = batch normalizatio:每一层都要进行一次BN,让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。
前向传播 + 反向传播
- 前向传播:计算损失值
得出损失值后,如何更新参数呢?那就是反向传播(梯度下降)的事了!
- 反向传播 :梯度下降,即朝着损失函数减小的方向走!(沿着梯度的反方向走)
- 对于局部最优解的问题:由于权重参数众多,就算有部分参数是局部最优解(下山的时候遇到平台了,扩大搜索范围),也可以忽略不计,没法证明是最优,这是一个相对问题!
Ps.Y = WX + b b是针对输出进行微调,有几个输出,就有几个微调项(b)
数据预处理(防过拟合)
origin data经过“去均值:X-X.mean” 得到 zero centered data
再经过normalization:即除以其各自维度的标准差,即可得到最终的normalized data
参数初始化
一般采用随机策略初始化参数(除非有预训练模型,即他已经有了经验了,就用他的那个参数就好)
不能初始化太大的参数,不然过拟合了!所以初始化的参数一定要很小!
Drop out
- 随机杀死神经元,将特征杀死,防止过拟合!PS...2000人上课,为了整体的效率,开除1000人
RNN循环神经网络
RNN的重要特点:在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的。
RNN不能主动输出永远循环,输出需要手动利用h进行计算!
LSTM长短期记忆网络(特殊的RNN)
和RNN不同的一点是,LSTM的每一步的参数是不同的!
-
三类门结构:遗忘门、输入门、输出门
-
类比语言模型的例子,当我看到一个主语后,我就把之前的主语给忘了,也就是说记忆力有限,但我只记重要的
-
基本LSTM分步动图预览
(红色表示sigmoid(0,1),蓝色表示tanh(-1,1)C表示细胞状态,h表示之前一步的状态,x表示输入信息)
个人理解(里面名词并不专业,主要是为了便于理解过程):sigmoid:遗忘/记住
1.(x+h)经过红色 = 遗忘A
2. 遗忘A * Ct-1 = 遗忘相应信息的细胞状态 算作C - A1
3.(x+h)经过蓝色 = 信息(含A的但不仅仅只有A)
4. 信息(含A的但不仅仅只有A) * 记住A = A2
5. A2 + (C - A1) = Ct(更新了A的细胞状态)
6. Ct 经过蓝色 * (x+h)经过红色 = 选择细胞状态的部分去作为输出:ht
7. 输出的是h不是C,h是从C来的,由红色选择输出内容
8. 遗忘、输入、输出都由sigmoid控制!(经过同样的红色,结果也不一样,因为权重变了)