计算机视觉CS231n学习(2)
损失函数和优化器
-
损失函数
损失函数反应我们现在的分类器的好坏程度
-
多分类SVM损失:
1这个常数是人为设定的,决定着到什么程度才认为loss为0
当其中某个分类目标的预测可能性得分值发生微小变化时,loss值不一定改变
这个loss函数的最小值为0,最大值为+∞
假设我们发现了参数W,使得loss值为0,参数W是唯一的吗?NO!
-
正则化
模型的预测应该能够匹配训练数据,所以计算在训练集上的损失,并根据这个损失值反向传播更新参数,使得模型越来越接近真实结果,但是模型也应该是简单的(拥有泛化能力,不过拟合),也能够正常应用在测试数据上(所以加入正则项:入R(W) )
-
L1 正则化
-
L2 正则化
-
弹性网络(L1 + L2)
-
-
Softmax Classifier
Softmax function:
所以Loss =
这个损失函数的最小值为0,最大值为+∞
-
SVM VS Softmax
如果对一个数据点进行了微小的改变,这两个loss函数怎么变化?
SVM可能不会变化
Softmax变化较明显
-
-
优化器 Optimization --减小loss,寻找最好的参数w
-
随机搜索(碰到哪个更好用哪个)
-
有限差分近似
h就是每次更新的一小步。这个计算量非常大
-
运用微积分计算解析梯度
-
梯度校验:用数值微分来校验微积分计算的梯度
-
梯度下降
weights = weights - step_size * weight_grad
step_size:学习率
-
随机梯度下降
选择batch_size的数据进行计算loss,计算梯度
-
-
图像特征 Image Features
动机:在应用特征转换器后,本来不能用线性分类器分类的点,可以被线性分类器分类
例子:颜色直方图(方向梯度直方图 HoG)
例子:词包
反向传播
-
Computational graphs 计算图
Backpropagation 反向传播 example:
(下图包括下下下图的反向传播求的是梯度值(偏导))
-
比较复杂的可以使用链式法则
上述图片中没有max门,max门反向传播时会将这个梯度传给原来较大值,较小值的梯度为0
-
反向传播求梯度的一些规律总结
add gate: gradient distributor: 直接接收传播过来的梯度,不做改变
max gate: gradient router: 将这个梯度传给原来较大值,较小值的梯度为0
mul gate: gradient switcher: 两个数相乘,一个数的梯度为接收到传播过来的梯度乘以另一个数
-
关于卷积神经网络中的全连接层 --神经网络
一个简单的CNN:卷积层 -> 池化层 -> 展平层 -> 全连接层
首先,卷积层和池化层就是为了得到一个多维的特征矩阵,就是特征提取、特征处理之类的,此时和计算最后的结果是无关的
然后,展平层是为了将这些多维特征矩阵展平为一维向量,来参与后面全连接层的运算
最后,全连接层用来计算最后的结果,结构和上面几张图的神经网络类似,全连接层可以有很多层(深度学习)
反向传播更新参数时,全连接层中的各个神经元之间的节点的权重会被更新,卷积层中的卷积核上面的数值也会更新(卷积核尺寸不会变 是超参数)。
反向传播的核心目标就是计算损失函数对网络中所有可学习参数的梯度(即偏导数)