参考cs231n与这位的博文https://www.zhihu.com/people/will-55-30/posts?page=1 非常感谢!
- Linear Classification
f(x, W)
x为输入数据即图像,W为参数矩阵,f得到多个scores表明每种分类对应的分数,然后比较scores即可得到图片对应的分类
different structures of function->different CNN architectures
最简单的linear classifier:f(x,W)=Wx
如果输入图像为32323的话,可以解出上述方程的维度

通常还会添加一个常量偏置向量b,来表示对不同类型的偏好值
参数矩阵的每一行对应着每个类型的模板
可将模板可视化,会发现得到的图像与某个类别并不是非常一样
这是因为在该分类器中一个类型只对应一个模板,这样就要把这个类型中各式各样的图像总结到一个模板,比如马这个类别有头朝左的也有朝右的,那模板中的马就可能有两个头。
imagine images as points in high dimensional space, linear classifier is trying to make linear separation

但有些情况下,线性划分会变得十分困难,同一个类别的图像出现在不同的区域中

实际应用中,直接以原始像素值作为线性分类器的参数其实不太合理,在深度神经网络大规模运用前,常使用的是两步走策略,首先拿到图片,计算图片的各种特征代表compute various feature representations, then concatenate these different feature vectors to get some feature representation of the image,然后将这个feature representation作为线性分类器的参数
通过特征转换,就可以把复杂的数据集,变成线性可分的
卷积神经网络就是一个feature extraction的过程,刚开始的几层可能是提取一些边缘这样简单的特征,随着深度加深可能就是一个更加高级的特征了
然后CNN中这个feature extraction是靠训练来完成的,从数据中学习特征,并非向上面那种提前记录特征
是训练整个网络中的W而非最上层W
一个是记录一些特征放到分类器里,一个是学一些特征放到分类器(最上层W)里

loss function
度量W的badness

Li称作损失函数
-
SVM
SVM
最小值0,最大值无穷大
当W很小,所有的分数都接近于0的时候,Li=分类数目-1,这个特点经常用于debug
L=0时W并不唯一
def L_i_vectorized(x, y, W)
scores=W.dot(x)
margins=np.maximum(0, scores-scores[y]+1)
margins[y]=0
loss_i=np.sum(margins)
return loss_i
-
Softmax Classifier(Multinomial Logistic Regression)比SVM使用更广泛
最小值是0,最大值是正无穷(想象一下log的图像就行)
当所有S都很小近乎为0时,Li=log分类数目
为了防止过拟合->正则化
loss function是在努力match训练集,而最终是要使它能较好的用于测试集,而正则化便是使拟合的函数维度不要那么高(太高就是过拟合了),尽量简单
类比回归问题,通过加入回归项,使模型的幂次数降低,这相当于一个惩罚项,若想要高幂次就要克服这个惩罚


L1正则化会使权重矩阵在最优化的过程中变得稀疏
L2的权重向量大多是分散的小数字
一般来说L2的效果比L1好
Dropout随机失活
与L1正则化,L2,最大范式约束互为补充。在训练的时候让神经元以超参数p的概率被激活或者被设置为0。相当于在训练过程中,对完整的神经网络中抽样出一些子集,每次基于输入数据只更新子网络的参数。不使用随机失活相当于对数量巨大的子网络们做了model ensemble,以此来计算一个平均预测。

注:model ensemble
Model Ensembles
1.Train multiple independent models
2.at test time average their results
2% extra performance

supervised learning
首先有数据集,然后用线性分类器来获得一些分数函数,然后用数据集来计算出分数,然后使用损失函数来衡量线性分类器的badness,常常会给这个损失函数增加一个regularization在拟合训练数据与模型简单性之间进行权衡
网友评论