因为有在看CS231学习深度学习的简单知识,所以打算整理成blog,持续更新中。。。
一、损失函数loss function
1、SVM:最简单的loss function
其中为真实label对应的分数,为label j对应的分数,Li为每个样本的分类损失,目的是最大化真实label对应分数。
在初始化时,Li的初始值接近于C-1,其中C为分类的个数,因为所有的分数都接近于0,对应为(C-1)个1相加。
所有样本的loss表示为:
2、softmax
二、模型正则项
通常为了防止模型过拟合,使得模型在效果和复杂度之间达到平衡,常常引入正则项。不同的正则项都是为了模型简单化,但是对简单的定义各异。
1) L1范式:鼓励稀疏,也就是鼓励权重向量中0的个数,从而使得模型简单化
2) L2范式:鲁棒性更好,控制向量中的整体分布,各个位置的数值均影响模型更好,即各个位置的数值较为平均。
3) dropout:随机将每一层上的一些神经元设为0,常在全连接层使用。训练时间加长,但训练后鲁棒性增强。
4) bach normalization:见下
5) dropconnect:和3不同,不是丢弃神经元,而是丢弃一些权重矩阵
6) stochastic depth:随机丢弃一些层。
三、Bach Normalization
深度学习中,通常为了能让激活函数更好地激活,防止梯度消失或者梯度爆炸 (后面会有解释),需要对特征进行归一化,将特征向量变成均值为0,方差为1的向量</