机器学习知识点总结

1、1*1卷积的作用

1. 实现跨通道的交互和信息整合

2. 进行卷积核通道数的降维和升维

2、L1和L2正则化

L0:计算非零个数,用于产生稀疏性,但是在实际研究中很少用,因为L0范数很难优化求解,是一个NP-hard问题,因此更多情况下我们是使用L1范数

L1:计算绝对值之和,用以产生稀疏性,因为它是L0范式的一个最优凸近似,容易优化求解

L2:计算平方和再开根号,L2范数更多是防止过拟合,并且让优化求解变得稳定很快速(这是因为加入了L2范式之后,满足了强凸)。

区别: L1 的结果更稀疏, L2 的结果更均匀的趋近于 0

 L1 中, w 总是多减去一个符号函数的函数*alpha,把 w 往 0 拉,并可以使得 w

为 0。可以减少存储空间。缺点是加入L1后目标函数在原点不可导,需要做特殊处理。

 L2 中, w 乘以一个( 0, 1 )之间的正数,也把 w 往 0 拉,但是由于 w 的系数在

( 0, 1 )之间不为 0,所以可以使 w 接近 0,但不能使 w 为 0。缺点就是L1的优点:无法获得sparse(稀疏特征)模型。

3、初始化

1.影响是否收敛

2.影响收敛速度

3.影响收敛点位置

1.正则化会使参数小一点

2.优化希望参数大一点,可以成功传播信息,例如可以克服梯度消失问题

--->初始化需要在这两者之间进行折中

4、反向传播算法

Step 1 前向传播

1.输入层---->隐含层:

神经元h1的输入加权和

计算神经元h1的输出o1:(此处用到激活函数为sigmoid函数)

同理,可计算出神经元h2的输出o2

2.隐含层---->输出层:

计算输出层神经元o1和o2的值

这样前向传播的过程就结束了,我们得到输出值为[0.75136079 ,0.772928465],与实际值[0.01 , 0.99]相差还很远,现在我们对误差进行反向传播,更新权值,重新计算输出。

Step 2 反向传播

1.计算总误差

总误差:(square error)

2.隐含层---->输出层的权值更新

以权重参数w5为例,如果我们想知道w5对整体误差产生了多少影响,可以用整体误差对w5求偏导求出:(链式法则)

最后三者相乘

这样我们就计算出整体误差E(total)对w5的偏导值。-(target-outo)*outo(1-outo)*outh

最后我们来更新w5的值。 w=w-学习率×梯度

3.隐含层---->隐含层的权值更新:

 方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新时,是out(h1)---->net(h1)---->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算。

这样误差反向传播法就完成了,最后我们再把更新的权值重新计算,不停地迭代,在这个例子中第一次迭代之后,总误差E(total)由0.298371109下降至0.291027924。迭代10000次后,总误差为0.000035085,输出为[0.015912196,0.984065734](原输入为[0.01,0.99]),证明效果还是不错的。

5、机器学习中防止过拟合的处理方法

Early stopping、数据集扩增、正则化方法、Dropout、决策树剪枝、svm松弛变量、较少网络深度

1.范数正则化

 L1 :结果更稀疏。与无范数正则化相比,使 w 往 0 靠近。可推导。

 L2:结果更均匀,接近于 0,使 w 往负半轴移动。

2.数据增强

 旋转、镜像、平移、噪声

3.多任务学习

 前提是任务之间具有关联性,不同任务之间才可以互相促进

4.提前终止

 前提条件:将数据集分为训练集和验证集两个部分

 存在的问题:验证集没有被用来训练模型,数据集利用不充分

算法 1 ( 确定次数,重新训练):

 第一次训练:根据验证集损失不变来确定训练次数 a

 第二次训练:

 重新初始化模型参数 w

 将训练集和验证集合并到一起,全部作为训练集来训练模型,训练 a 次(可以是 a 个 epoch,也可以是 a 个 iteration)

算法 2( 确定损失,继续训练):

 第一次训练:根据验证集损失不变来确定验证集的平均损失 e,以及参数 w

 第二次训练:

 保持 w 不变

 将训练集和验证集合并到一起,全部作为训练集来训练模型。同时,验证集部分继续拿来测试损失

 在 w 的基础上继续用合并后的训练集来训练模型,但验证集的损失小于e 时停止训练

说明

 提前终止和 L2 正则化具有相似的作用,(训练次数*学习率)相当于(权重衰减系数的倒数)

 限制(训练次数 a)和(学习率),可以限制 w 所能到达的参数空间大小

5.参数共享

 减少参数数目,相当于减小模型容量

 卷积神经网络

6.稀疏表示

 与权重衰减直接惩罚模型参数不同,稀疏表示是惩罚激活函数,使激活单元的输出变

得稀疏。

7.模型集成

 bagging:学习多个模型,用多个模型的平均结果作为最终结果,也称为模型平均

 boosting:逐渐增加神经网络中的隐含层

8.dropout

 类似于 bagging 集成,但不完全相同。 bagging 的各个基学习器是相互独立的,而

dropout 的各个基学习器存在共享参数

 可以实现指数级数量的模型集成

9.batch normaliaztion 批标准化



6、激励函数分类

 sigmoid:左右软包和(梯度消失)、输出均值非 0、收敛较慢

 tanh:左右软包和(梯度消失)、输出均值为 0、收敛较 sigmoid 快,但总体也不快

 ReLU:左硬饱和(右侧避免了梯度消失,左侧出现神经元死亡)、输出均值非 0,收

敛较快

 LReLU:无饱和,需要人工设置左侧的斜率 a,输出均值近似于 0,收敛快

 PReLU:无饱和,左侧的斜率 a通过学习得到,输出均值近似于 0,收敛快(LReLU

的改进)

 RReLU:无饱和,左侧的斜率 a随机获得,输出均值近似于 0,收敛快(LReLU 的改

进)

 ELU:左侧软包和,是sigmoid 和 ReLU 的综合体,输出均值近似于 0,收敛快

(LReLU 的改进)

主要考查的性能

 饱和特性(与梯度消失、神经元死亡的关系)

 输出均值(会影响收敛速度, 均值越靠近 0, SGD 更接近自然梯度, 收敛越快)

 收敛速度

作用

 神经网络中如果只有线性的卷积和全连接层,即使网络再深,也只能进行线性表达。

 引入非线性激活函数和池化等运算,可以增强神经网络的非线性表达能力,使得神经

网络可以更好地解决较为复杂的问题。

 梯度的后向传递过程中,计算公式中包含了一个 f'(x) 因子(激活函数关于输入的

导数)。一旦输入落入饱和区, f'(x) 就会变得接近于 0,导致了向底层传递的梯

度也变得非常小。此时,网络参数很难得到有效训练。这种现象被称为梯度消失。

 一般来说,sigmoid 网络在 5 层之内就会产生梯度消失现象。

7、批标准化

 目的:增强层的表达能力

 原因:如果只对输入数据进行简单的标准化使其符合标准正态分布,那么该

层的表达能力会被降低。例如:当激活函数为 sigmoid 时,如果把数据限制

到 0 均值单位方差,那么相当于只使用了激活函数中近似线性的部分,这显

然会降低模型表达能力。

8、偏差和方差

偏差:预测值与真实值的差异

方差:预测值之间的离散程度

9、学习率调整

fixed 固定策略、step 均匀分步策略、multistep 多分步或不均匀分步、inv

11、非递归遍历二叉树

前序:中左右;中序:左中右;后序:左右中

12、SVM核函数

13、lossfunction

14、optimization

SGD、Adam、RMSProp都属于一阶优化算法

Momentum、Adagrad

梯度gradient与导数derivative的区别在于,前者用于多变量的目标函数,后者用于单变量的目标函数。

梯度可以用雅克比矩阵表示,矩阵中的每个元素代表函数对每个参数的一阶偏导数。

一阶优化算法只需要计算一阶偏导数,计算更容易

二阶优化算法虽然计算复杂,但是不容易陷入鞍点。

Adam首选,RMSProp次之。

15、batchnormalization

是一个可学习、有参数的网络层。为什么呢?如果我们直接对网络某一层A的输出数据做归一化然后送入网络下一层B,这样会影响到本层所学习到的特征。(比如网络中某一层学习到的特征分布在S型激活函数的某一侧,你强制把它归一化到标准差为1内。)怎么办?论文引入了可学习的参数γ、β(文中把他称为变换重构)来保留其学习到的特征,公式如下:

接着论文中进一步证明了这一切参数都是可以链式求导的(具体见论文),因此γ、β也就可以像权重W那样不断迭代优化啦。

另一个问题是BatchNormalization层加在哪?有两个落户地址:a) W x +b 之后,非线性激活函数之前 b) 非线性激活函数后。作者认为前者效果要更好一点,给出的解释是:前一个激活层是非线性输出,其分布很可能在训练中变化,而Wx+b更可能“more Gaussian”。(当然也有人简单尝试了一下Post-activation batch normalization,效果也还不错)

可以选择比较大的初始学习率,让你的训练速度飙涨。

移除或使用较低的drop out、L2正则项参数。

b 可以忽略了,因为b 的作用其实被 β 代替了。









猜你喜欢

转载自blog.csdn.net/xiaozhshi/article/details/80206569