CS231n Convolutional Neural Networks for Visual Recognition —— optimization

1. 多类 SVM 的损失函数(Multiclass SVM loss)

在给出类别预测前的输出结果是实数值, 也即根据 score function 得到的 score(s=f(xi,W)),

Li=∑j≠yimax(0,sj−syi+Δ),Δ=1(一般情况下)
  • yi 表示真实的类别,syi 在真实类别上的得分;
  • sj,j≠yi 在其他非真实类别上的得分,也即预测错误时的得分;

则在全体训练样本上的平均损失为:

L=1N∑i=1NLi
delta = 1
scores = np.dot(W, X)
correct_scores = scores[y, np.arange(num_samples)] diff = score - correct_scores + delta
diff[y, np.arange(num_samples)] = 0 thresh = np.maximum(0, diff)
loss = np.sum(thresh)
loss /= num_samples

2. 优化(optimization):梯度计算

首先来看损失函数的定义,如下为第 i 个样本的损失值(Wc×d⋅Xd×N,d 特征向量的维度,c:输出类别的个数):

Li==∑j≠yimax(0,sj−syi+1)∑j≠yi[max(0,wTjxi−wTyixi+1)]
  • 遍历 j,就是遍历 W 每一列的每一个元素, wTjxi⇒j=1,…,c;i=1,…,N
  • wTj 表示 W 的每一行,共 c 行;

下面的额关键是如何求得损失函数关于参数 wj,wyi 的梯度:

∇wyiLi=−⎛⎝∑j≠yi1(wTjxi−wTyixi+Δ>0)⎞⎠xi∇wjLi=1(wTjxi−wTyixi+Δ>0)xij≠yi
binary = thresh
binary[thresh > 0] = 1 # 实现 indicator 函数 col_sum = np.sum(binary, axis=0)
binary[y, np.arange(num_samples)] = -col_sum dW = np.dot(binary, X.T) # binary 维度信息:c*N, X 维度信息:d*N
dW /= N dW += reg * W

多类 SVM 的损失函数及其梯度计算的更多相关文章

  1. Softmax 损失-梯度计算

    本文介绍Softmax运算.Softmax损失函数及其反向传播梯度计算, 内容上承接前两篇博文 损失函数 & 手推反向传播公式. Softmax 梯度 设有K类, 那么期望标签y形如\([0, ...

  2. 【CS231N】2、多类SVM

    一.疑问 1. assignments1 linear_svm.py文件的函数 svm_loss_naive中,使用循环的方式实现梯度计算 linear_svm.py文件的函数 svm_loss_ve ...

  3. 实现属于自己的TensorFlow(二) - 梯度计算与反向传播

    前言 上一篇中介绍了计算图以及前向传播的实现,本文中将主要介绍对于模型优化非常重要的反向传播算法以及反向传播算法中梯度计算的实现.因为在计算梯度的时候需要涉及到矩阵梯度的计算,本文针对几种常用操作的梯 ...

  4. [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.1 SVM损失函数 从逻辑回归到支持向量机 为了描述 ...

  5. 实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积

    (1)定义一个形状类(Shape)方法:计算周长,计算面积子类:矩形类(Rectangle) :额外的方法:differ() 计算长宽差圆形类(Circle)三角形类(Triangle)正方形类(Sq ...

  6. Theano学习-梯度计算

    1. 计算梯度 创建一个函数 \(y\) ,并且计算关于其参数 \(x\) 的微分. 为了实现这一功能,将使用函数 \(T.grad\) . 例如:计算 \(x^2\) 关于参数 \(x\) 的梯度. ...

  7. 机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)

    1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算 参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_6 ...

  8. 日期时间类:Date,Calendar,计算类:Math

    日期时间类 计算机如何表示时间? 时间戳(timestamp):距离特定时间的时间间隔. 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms). 计算机中时间2 ...

  9. pytorch 反向梯度计算问题

    计算如下\begin{array}{l}{x_{1}=w_{1} * \text { input }} \\ {x_{2}=w_{2} * x_{1}} \\ {x_{3}=w_{3} * x_{2} ...

随机推荐

  1. 游戏server之server优化思路

    本文仅仅是提供一些游戏server优化思路,当中一些思路是用在不同场合的,不是同个架构的.须要依据应用场景选用合适方式. 本文的引用的文章都是在自己写的在本博客内的.也都是上线开几百个服的成熟项目的. ...

  2. OpenCASCADE7.3.0 is available for download

    OpenCASCADE7.3.0 is available for download OPEN CASCADE is pleased to announce a new public release ...

  3. VS NuGet使用

    通过这个可以自动联网下载内容! 很方便! 工具->NuGet包管理工具->程序包管理器控制台

  4. vue -- config.js 配置跨域文件

    1.在使用vue开发的时候经常要涉及到跨域的问题,其实在vue cli中是有我们设置跨域请求的文件的. 2.当跨域无法请求的时候我们可以修改工程下config文件夹下的index.js中的dev -- ...

  5. Http1.1和http2.0

    HTTP2.0 最近在读一本书叫<web性能权威指南>谷歌公司高性能团队核心成员的权威之作. 一直听说HTTP2.0,对此也仅仅是耳闻,没有具体研读过,这次正好有两个篇章,分别讲HTTP1 ...

  6. POJ 2039 Floyd

    句意理解题 解释输入好啦: 第一行n个数 m场电影 随后m行 每行的第一个数 代表 有k奶牛在这个电影中出现过 随后k个数 是奶牛的编号 如果两头奶牛在同一个电影中出现过 相互度为1 奶牛们的相互度可 ...

  7. javafx DropShadow

    public class EffectTest extends Application { DropShadow shadow = new DropShadow(); public static vo ...

  8. python学习日记-180823

    列表 a=[ ] 1.负数下标:a=[-1]指的是列表a最后一个下标,-2指倒数第二个下标 2.切片——利用切片获得子列表 a[1:4]——'1'切片开始处的下标,‘4’切片结束处的下标(不包括此下标 ...

  9. 【Hello 2018 D】Too Easy Problems

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 可以考虑把所有的题目按照ai排序. 然后顺序考虑最后做出来的题目个数和第i道题目的ai一样. 则1..i-1这些题目就没有用了. 值 ...

  10. libssh2进行远程运行LINUX命令

    /** * CSSHClient.h * @file 说明信息.. * DATE February 13 2015 * * @author Ming_zhang */ #ifndef _CSSHCLI ...