CS231n 乱写

发布时间 2023-09-12 08:44:54作者: yspm
  1. 线性分类器,\(f(x,W)=Wx+b\) 如果想直到模型究竟学到了什么,可以直接提取 W 的每一行生成一张图,因为每个分类的 score 都是这行和 x 矩阵乘得到的(或者你说转置之后作点乘)

    线性不是直线,对于一个大小为 \([n,m]\) 的图片,我们用 \([1,n\times m]\) 的向量去表示他,也可以被理解为高维空间里面的一个点,那么这时候我们相当于用一个 \(n\times m-1\) 维的超平面去切割高维空间。

  2. 损失函数 \(L=\frac{1}N\sum_{i=1}^n L_i,L_i=\sum_{j\neq y_i} \max(\Delta+s_j-s_{y_i},0)\)

    这里一共 \(N\) 个训练数据 \((x_i,y_i)\) ,只有在正确的分类的 score 大于错误分类 score 加 \(\Delta\) 才不会给损失函数造成贡献。

    在最开始训练的时候,我们把矩阵权重设置的都很小,这时候每个类别的 score 几乎都是 0,所以每张图片的 \(L_i\) 都是 \((C-1)\Delta\),其中 \(C\) 是类别数量。整体的损失函数由于是所有图片的平均,所以也是接近于 \((C-1)\Delta\)

  3. 注意到想要实现损失函数为 \(0\) ,我们的 \(W\) 可以有特别多个。这时候我们引入正则化损失 \(R(W)\),表示惩罚 \(W\) 中过于突出的某项特征。比如 \(L1\) 正则化,\(\displaystyle\sum_i\sum_j |W_{i,j}|\) 还有类似的 \(L_2\) 正则化损失 \(\sum\limits_{i,j} W_{i,j}^2\)。都可以理解为惩罚 \(W\) 中绝对值过于大的元素。举个简单例子,输入向量 \(x=[1,1,1,1]\) ,两种 \(x_1=[4,0,0,0],x_2=[1,1,1,1]\) 明显后者的拟合效果是要好一些的。

当然也可以引入参数把两种正则化手段结合起来:\(\sum\limits_{i,j} \alpha|W_{i,j}|\beta W_{i,j}^2\)

现在损失函数应长成 \(L=\frac 1N\sum L_i+\lambda R(W)\) 其中 \(\alpha,\beta,\lambda\) 都是