umich cv-2-2
UMICH CV Linear Classifiers
在上一篇博文中,我们讨论了利用损失函数来判断一个权重矩阵的好坏,在这节中我们将讨论如何去找到最优的权重矩阵
想象我们要下到一个峡谷的底部,我们自然会选择下降最快的斜坡,换成我们这个问题就是要求权重矩阵相对于损失函数的梯度函数,最简单的方法就是使用定义法:

我们也可以使用解析梯度,这里需要用到矩阵对向量,矩阵对标量求导的一些知识,在后面我们也会采用反向传播的方法,因为自己手算微积分毕竟比较容易出错,尤其是涉及到很多层神经网络的时候。
在作业assignment2 的第一个线性分类器的实现中,我们会使用两张种损失函数,分别是svm与softmax函数,需要我们使用解析梯度来计算,这里推荐两篇博文的推导过程,因为我这边基础也不是很好,需要再深入学习一下
svm:http://giantpandacv.com/academic/算法科普/深度学习基础/SVM Loss以及梯度推导/
softmax:https://blog.csdn.net/qq_27261889/article/details/82915598
计算得到梯度函数之后,我们就可以让loss沿着梯度的方向下降:

这里有三个超参数,是我们自己手动设置的,分别是权重矩阵初始化的策略,迭代步骤与学习率
但是对所有的样本都进行梯度下降,显然是非常耗时的一件事,所以我们一般采用sgd方法,也就是随机梯度下降:

这里又多了batch size与抽样方法两个超参数
但是SGD的缺点在于会导致梯度剧烈波动,有的地方下降很快有的地方下降很慢,同时也面临着陷入局部最优解的困境,所以出现了SGD + Momentum


加入一个速度变量这样在下降快的时候可以抑制梯度的下降,起到一个平衡作用
Momentum也有变体 Nesterov Momentum,与Momentum唯一区别就是,计算梯度的不同。Nesterov动量中,先用当前的速 v临时更新一遍参数,在用更新的临时参数计算梯度,就是一种向前看的思想:


另一类进行优化的方法采用dw的平方
Adagrad 与 Rmsprop

由于adagrad会导致下降的过快,因为有平方的存在,所以又提出了RMSProp,加入decay_rate来放缓下降速度
最常用的优化方法就是adam

注意这里要加入偏差修正项防止起始的时候误差太大
这里有一篇知乎的回答可供参考:https://www.zhihu.com/question/323747423
上面的方法都是采用一阶导数:

有时候我们也可以采用二阶导数

但是二阶导的计算可想而知的复杂,所以我们一般很少采用二阶导进行优化
最后是一些二阶导的讨论:



本次assignment A2 的第一个线性分类器 主要内容就是分别采用svm与softmax损失函数进行优化计算,也没有用到后面复杂的优化方法,就是最简单的学习率乘以dw,比较复杂的就是解析梯度的推导,可参考上面的两篇博文
umich cv-2-2的更多相关文章
- 关于国内外CV领域牛人的博客链接 .
此文为转载文章,尊重知识产权http://blog.csdn.net/carson2005/article/details/6601109此为原文链接,感谢作者! 以下链接是关于计算机视觉(Compu ...
- 计算机视觉(ComputerVision, CV)相关领域的站点链接
关于计算机视觉(ComputerVision, CV)相关领域的站点链接,当中有CV牛人的主页.CV研究小组的主页,CV领域的paper,代码.CV领域的最新动态.国内的应用情况等等. (1)goog ...
- 几个常用的CV知识点
刚结束一段实习,图像算法工程师.总结一下图像算法的几个基本的操作,图像操作算子各式各样,各显神通,光是滤波filter这一个专题就可以有很多的技巧和功能. 我从做过的两个小项目入手, 简单介绍一下该项 ...
- 基于Emgu CV的人脸检测代码
这个提供的代码例子是Emgu CV提供的源码里面自带的例子,很好用,基本不需要改,代码做的是人脸检测不是人脸识别,这个要分清楚.再就是新版本的Emgu CV可能会遇到系统32位和64位处理方式有区别的 ...
- 自己积累的一些Emgu CV代码(主要有图片格式转换,图片裁剪,图片翻转,图片旋转和图片平移等功能)
using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; na ...
- 挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆
挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV. PV:计划值,在即定时间点前计划 ...
- Emgu.CV 播放视频
using Emgu.CV; using System; using System.Drawing; using System.Threading; using System.Windows.Form ...
- Emgu.CV/opencv 绘图 线面文字包括中文
绘图很简单 Emgu.CV.Image<Bgr, Byte> image; 使用image.Draw可以画各种图形和文字包括英文及数字,不支持中文 CircleF circle = ...
- yuv420p转为emgucv的图像格式Emgu.CV.Image<Bgr, Byte>
GCHandle handle = GCHandle.Alloc(yuvs, GCHandleType.Pinned); Emgu.CV.Image<Bgr, Byte> image = ...
- "Emgu.CV.CvInvoke”的类型初始值设定项引发异常 解决办法
系统win7 32位,只在这一台电脑上出现这种问题,已知VS编译是X86,在数台电脑上测试都正常. 后来把opencv的dll路径例如 E:\...\x86 加入到系统环境变量中就正常了. emgu ...
随机推荐
- 有哪些ASIC加速技术可以实现低功耗运行?
目录 文章主题: 10. 有哪些ASIC加速技术可以实现低功耗运行? 背景介绍:随着移动设备.物联网.云计算等应用场景的不断增长,功耗成为了一个日益重要的技术问题.为了在移动设备上实现更长时间的运行, ...
- 基于GPT搭建私有知识库聊天机器人(二)环境安装
1.需要安装的包 pip3 install flask //python开发web框架 pip3 install langchain //LLM开发框架 pip3 install openai //L ...
- 【SpringBoot】Session共享
本文参考 Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了! 在传统的单服务架构中,只有一个服务器,那就不会存在session共享的问题,但如果在分布式/集群项目中, ...
- 从逻辑门到 CPU
目的,造一个很简单的,概念上的 CPU,虽然简单,但是是五脏俱全的 CPU 从最基础的逻辑门开始造,零基础可以看 制造基本武器:与门.非门.或门 现在计算机都是二进制,那二进制是一开始就能想到的吗?显 ...
- Linux下手工编译libiconv库的小问题
我的电脑是 Ubuntu 14.04 LTS, 自己手工编译 php5.6, 打开 ZEND_EXTRA_LIBS='-liconv' 时, 发现没有安装 libiconv, 也就是编码转换的库, 所 ...
- vscode+gdb 配置
到这个网址下载 mingw c语言环境 https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ 我是windows64 位,直接下载这个 ...
- Programming abstractions in C阅读笔记:p88-p90
<Programming Abstractions In C>学习第44天,p88-p90总结. 一.技术总结 1.内存分配 内存分配可以分为:static allocation.auto ...
- AVR汇编(三):寻址方式
AVR汇编(三):寻址方式 AVR具有多种寻址方式,在介绍具体的汇编指令之前,有必要对它们做一定了解. 前面介绍过,AVR将内存空间分为多个部分:寄存器堆.I/O空间.数据空间.程序空间.这些空间支持 ...
- 《高级程序员 面试攻略 》rabitmq rcoketmq kafka的区别 和应用场景
RabbitMQ.RocketMQ 和 Kafka 都是流行的消息中间件系统,用于实现分布式应用程序之间的异步通信.虽然它们都有类似的目标,但在设计和应用场景上存在一些区别. 1. RabbitMQ( ...
- [ABC141E] Who Says a Pun?
2023-02-17 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 dp,字符串 解题思路 看到求两个完全相同的子串时,我们可以发现其与求最长 ...