多类 SVM 的损失函数及其梯度计算
CS231n Convolutional Neural Networks for Visual Recognition —— optimization
1. 多类 SVM 的损失函数(Multiclass SVM loss)
在给出类别预测前的输出结果是实数值, 也即根据 score function 得到的 score(s=f(xi,W)s=f(x_i, W)),
L_i=\sum_{j\neq y_i}\max(0, s_j-s_{y_i}+\Delta), \quad \Delta=1(一般情况下)
- yiy_i 表示真实的类别,syis_{y_i} 在真实类别上的得分;
- sj,j≠yis_j, j\neq y_i 在其他非真实类别上的得分,也即预测错误时的得分;
则在全体训练样本上的平均损失为:
L = \frac1N\sum_{i=1}^NL_i
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)] = 0thresh = np.maximum(0, diff)
loss = np.sum(thresh)
loss /= num_samples
2. 优化(optimization):梯度计算
首先来看损失函数的定义,如下为第 ii 个样本的损失值(Wc×d⋅Xd×NW_{c\times d}\cdot X_{d\times N},dd 特征向量的维度,cc:输出类别的个数):
\begin{split} L_i =&\sum_{j\neq y_i}\max(0, s_j-s_{y_i}+1)\\ =&\sum_{j\neq y_i} \left[ \max(0, w_j^Tx_i - w_{y_i}^Tx_i + 1) \right] \end{split}
- 遍历 jj,就是遍历 WW 每一列的每一个元素, wTjxi⇒j=1,…,c;i=1,…,Nw_j^Tx_i ⇒ j=1,\ldots,c; i=1,\ldots,N
- wTjw_j^T 表示 WW 的每一行,共 cc 行;
下面的额关键是如何求得损失函数关于参数 wj,wyiw{j, w_{y_i}} 的梯度:
\begin{split} &\nabla_{w_{y_i}} L_i = - \left( \sum_{j\neq y_i} \mathbb{1}(w_j^Tx_i - w_{y_i}^Tx_i + \Delta > 0) \right) x_i\\ &\nabla_{w_j} L_i = \mathbb{1}(w_j^Tx_i - w_{y_i}^Tx_i + \Delta > 0) x_i\quad j\neq y_i \end{split}
binary = thresh
binary[thresh > 0] = 1 # 实现 indicator 函数col_sum = np.sum(binary, axis=0)
binary[y, np.arange(num_samples)] = -col_sumdW = np.dot(binary, X.T) # binary 维度信息:c*N, X 维度信息:d*N
dW /= NdW += reg * W
多类 SVM 的损失函数及其梯度计算相关推荐
- 多类SVM的损失函数
原文:Multi-class SVM Loss 作者: Adrian Rosebrock 翻译: KK4SBB 责编:何永灿 from: http://geek.csdn.net/news/det ...
- 多分类交叉熵损失函数的梯度计算过程推导
Softmax函数公式: Si 代表的是第i个神经元的输出 其中wij 是第i个神经元的第 j 个权重,b是偏移值.zi 表示该网络的第i个输出 隐藏层输出经过softmax: 具体过程如下图所示: ...
- 最优化基础:损失函数可视化、折页损失函数 梯度计算
本文主要内容为 CS231n 课程的学习笔记,主要参考 学习视频 和对应的 课程笔记翻译 ,感谢各位前辈对于深度学习的辛苦付出.在这里我主要记录下自己觉得重要的内容以及一些相关的想法,希望能与大家 ...
- Contrastive Loss 对比损失函数及梯度的计算
Contrastive loss 最初源于 Yann LeCun "Dimensionality Reduction by Learning an Invariant Mapping&quo ...
- P3:线性分类、损失函数与梯度下降
子豪兄YYDS: https://www.bilibili.com/video/BV1K7411W7So?p=3 一.线性分类器 线性分类器,确定一条直线,让用例可以分为两类,线性分类器的关键在于一个 ...
- CS231n学习笔记-损失函数、损失函数与梯度下降
第三讲 线性分类.损失函数与梯度下降 问题:线性分类器是不能对非线性数据分类 损失函数 Multiclass SVM loss SVM(支持向量机)采取中庸的方法进行分类,分类时采用最大适配进行分类, ...
- 可视化深入理解损失函数与梯度下降 | 技术头条
作者 | Hugegene 译者 | 刘畅 责编 | Rachel 出品 | AI科技大本营(id:rgznai100) [导语]本文对梯度函数和损失函数间的关系进行了介绍,并通过可视化方式进行了详细 ...
- Pytorch中的向前计算(autograd)、梯度计算以及实现线性回归操作
在整个Pytorch框架中, 所有的神经网络本质上都是一个autograd package(自动求导工具包) autograd package提供了一个对Tensors上所有的操作进行自动微分的功能. ...
- 梯度、梯度法、python实现神经网络的梯度计算
[机器学习]梯度.梯度法.python实现神经网络的梯度计算 一.python实现求导的代码: 二.what is 梯度 三.使用梯度法寻找神经网络的最优参数 四.神经网络的梯度计算 一.python ...
最新文章
- cisco PIX防火墙的配置及注解完全手册
- SLAM综述-Lidar SLAM
- 音视频互动开发平台之AnyChat SDK
- HSV RGB颜色空间互转
- kubelet创建容器的步骤
- 如何看待 Apache Log4j 2 远程代码执行漏洞?
- jrebel不能使用ajax,Jrebel不生效的原因和解决办法
- mysql8 修改root密码
- ESRI ArcGIS 9.0系列软件报价(转)
- OpenCV-图像处理(28、轮廓发现(find contour in your image))
- Html学习手册(W3CSchool.chm)
- Java项目集成永中文档在线预览
- canvas绘制图形的相关API
- 日积(Running)月累(ZSSURE):Learning How to Learn,学习习惯
- [原创]网页中自动连续播放音乐文件的实现
- php pecl 扩展,PECL
- 吴恩达深度学习课后编程题讲解(python)
- 人脸识别、行人识别、图片库
- 写论文第二步——管理文献 上(文献管理软件)
- 数组转对象 和 对象转数组的简单处理
热门文章
- 计算机英语微课,【计算机英语论文】大学计算机基础微课设计研究
- java.io.IOException: Server asks us to fall back to SIMPLE auth, but this client is confi的问题
- 虚拟机 之 root 用户密码重新设定(忘记了)
- socket简介和udp网络程序-发送、接收数据
- java jsp验证码_JSP实现随机验证码
- ++库 照片风格转换风格_如何用神经网络实现照片的风格转换
- ediplus 复制编辑一列_Excel中如何使用公式查找一列中的重复值并且在另一列里面列出来...
- 来看一下:构造函数的小秘密详解
- python对于文件的读取和重建
- LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)