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

最新文章

  1. 迷之bug
  2. widgets、dialogs与自动连接(auto-connect)
  3. Access denied for user 'root'@'localhost' (using password:YES)
  4. Make Notepad++ auto close HTML/XML tags after the slash(the Dreamweaver way)
  5. H5-杂七杂八的标签
  6. (Hibernate进阶)Hibernate搭建开发环境+简单实例(二)
  7. CLRS:build_max_heap(strorage in array)
  8. java web页面 base
  9. CountDownLatch和CyclicBarrier的区别
  10. slickgrid 一个优秀的JS表格插件
  11. 实现HTTP跳转到HTTPS
  12. The method setOnClickListener(View.OnClickListener) in the type View is not applicable
  13. Apple Catching(dp)
  14. iOS中Block介绍(一)基础
  15. Javascript实现继承
  16. 【转】用信鸽来解释 HTTPS
  17. [2019.04.16] 由Python写成的自动解压脚本
  18. [第二届构建之法论坛] 预培训文档(C++版)
  19. 手机号验证正则表达式+Demo(亲测完毕)
  20. 《剑指offer》总结三 之二叉树(2)

热门文章

  1. 迷茫了好一阵决定做WEB前端
  2. SQL Server字符串分割函数
  3. sublime 支持 vue 语法
  4. HDU 6182 A Math
  5. Linux 关闭正在运行的程序---命令
  6. double 失真例子
  7. 洛谷 P3371 【模板】单源最短路径
  8. [leetcode] Palindrome Number(不使用额外空间)
  9. 高性能计算机传奇(vamei)
  10. js12---闭包,原型,继承