tip:老师语速超快。。。痛苦= =

线性分类器损失函数与最优化

\(Multiclass SVM loss: L_{i} = \sum_{j \neq y_{i}} max(0,s_{i}-s_{y_{i}}+1)\)

\(Loss = \frac{1}{N} \sum_{i=1}^{N} L_{i}\)

Q1: what if the sum was instead over all classes(j = yi)?

A1:在计算中,我们可以知道这个没有意义,在公式中相当于加上了1,因为yi-yi=0

Q2:我们用平均值来替代求和会怎么样?

A2:没有任何意义,只是相当于使得最后损失的计算成倍地缩小。

Q3:如果公式变成了 $ L_{i} = \sum_{j \neq y_{i}} max(0,s_{i}-s_{y_{i}}+1)^{2} $ 会怎么样?

A3:这个公式实际上是square hinge loss。第一个公式我们通常叫做 hinge loss。

Q4:最大的损失值和最小值是多少?

A4:显然最小就是0,最大是无穷

Q5:当W很小的时候,s都等于0的时候,我们的loss会是多少?

A5:loss将会是种类数-1

code:
def L_i_vectorized(x,y,W):
scores = W.dot(x)
margins = np.maximum(0,scores - scores[y] + 1)
margins[y] = 0 # margins[y] = 1
loss_i = np.sum(margins)
return loss_i

\(f(x,W) = Wx\)

\(L = \frac{1}{N} \sum_{i=1}^{N} \sum_{j!=y_{i}} max(0,f(x_{i};W)_{j} - f(x_{i};W)_{y-{i}} +1)\)

这个loss function实际上是有bug,这个可能得到我们不想得到的结果。

比如我们想找到损失函数为0的W,是否W是独一无二?

显然不是,只要score[y]>1即可……

Weight Regularization

\(L = \frac{1}{N} \sum_{i=1}^{N} \sum_{j!=y_{i}} max(0,f(x_{i};W)_{j} - f(x_{i};W)_{y-{i}} +1) + \lambda R(W)\)

L2 regularzation \(R(W) = \sum_{k}\sum{l}W_{k,l}^2\)

L1 regularzation \(R(W) = \sum\sum \left | W_{k,l} \right |\)

Elastic net(L1+L2),Max norm regularization,Dropout

加入正则化,使得泛化能力增强。

L2正则化实际上是想让你尽可能展开你的W,使得充分的考虑更多的元素。

L1会使得W变得稀疏。

Softmax Classifier(Multinomial Logistic Regression)

scores = unnormalized log probabilities of the classes

\(L_{i} = -logP(Y = y_{i} | X = x_{i})\)

最大化正确的概率(最小化负的对数概率)

Q1:最大最小的loss是多少?

A1:最小为0,最大为无穷,显然。

Q2:当w非常小,都接近0的时候,loss会是什么值?

A2:-log(1/n) 显然

cs331n 线性分类器损失函数与最优化的更多相关文章

  1. 『cs231n』线性分类器损失函数

    代码部分 SVM损失函数 & SoftMax损失函数: 注意一下softmax损失的用法: SVM损失函数: import numpy as np def L_i(x, y, W): ''' ...

  2. cs231n笔记 (一) 线性分类器

    Liner classifier 线性分类器用作图像分类主要有两部分组成:一个是假设函数, 它是原始图像数据到类别的映射.另一个是损失函数,该方法可转化为一个最优化问题,在最优化过程中,将通过更新假设 ...

  3. cs231n线性分类器作业 svm代码 softmax

    CS231n之线性分类器 斯坦福CS231n项目实战(二):线性支持向量机SVM CS231n 2016 通关 第三章-SVM与Softmax cs231n:assignment1——Q3: Impl ...

  4. cs231n笔记:线性分类器

    cs231n线性分类器学习笔记,非完全翻译,根据自己的学习情况总结出的内容: 线性分类 本节介绍线性分类器,该方法可以自然延伸到神经网络和卷积神经网络中,这类方法主要有两部分组成,一个是评分函数(sc ...

  5. 1. cs231n k近邻和线性分类器 Image Classification

    第一节课大部分都是废话.第二节课的前面也都是废话. First classifier: Nearest Neighbor Classifier 在一定时间,我记住了输入的所有的图片.在再次输入一个图片 ...

  6. [基础]斯坦福cs231n课程视频笔记(一) 图片分类之使用线性分类器

    线性分类器的基本模型: f = Wx Loss Function and Optimization 1. LossFunction 衡量在当前的模型(参数矩阵W)的效果好坏 Multiclass SV ...

  7. SVM – 线性分类器

    感知机 要理解svm,首先要先讲一下感知机(Perceptron),感知机是线性分类器,他的目标就是通过寻找超平面实现对样本的分类:对于二维世界,就是找到一条线,三维世界就是找到一个面,多维世界就是要 ...

  8. 2. SVM线性分类器

    在一个线性分类器中,可以看到SVM形成的思路,并接触很多SVM的核心概念.用一个二维空间里仅有两类样本的分类问题来举个小例子.如图所示 和是要区分的两个类别,在二维平面中它们的样本如上图所示.中间的直 ...

  9. Python机器学习(基础篇---监督学习(线性分类器))

    监督学习经典模型 机器学习中的监督学习模型的任务重点在于,根据已有的经验知识对未知样本的目标/标记进行预测.根据目标预测变量的类型不同,我们把监督学习任务大体分为分类学习与回归预测两类.监督学习任务的 ...

随机推荐

  1. 解决ASP.NET MVC(post数据)Json请求太大,无法反序列化,而报【远程服务器返回错误: (500) 内部服务器错误】

    1. 修改web.config文件可以改变这个默认值(上传1个G) <configuration> <system.web> <httpRuntime maxReques ...

  2. 如何保证Redis的高可用

    什么是高可用 全年时间里,99%的时间里都能对外提供服务,就是高可用 主备切换 在master故障时,自动检测,将某个slave切换为master的过程,叫做主备切换.这个过程,实现了Redis主从架 ...

  3. 【Oracle】Linux7安装11g 86%报错:Error in invoking target 'agent nmhs' of makefile

    http://blog.itpub.net/29475508/viewspace-2120836/

  4. C#学习-字段

    字段的定义由3部分组成,访问修饰符.字段的类型和字段的名称.以下是 public class Person { //姓名,类型为字符串类型 private string name; //年龄,类型为i ...

  5. python之GIL官方文档 global interpreter lock 全局解释器锁

    0.目录 2. 术语 global interpreter lock 全局解释器锁3. C-API 还有更多没有仔细看4. 定期切换线程5. wiki.python6. python.doc FAQ ...

  6. 【Codeforces】Gym100633 D. LWDB

    题解 点分治,然后每个点上挂着一个距离不超过\(a_{i}\)的颜色改成\(c\) 用一个单调栈维护距离单调递减,每次查询在每个包括这个点的分治中心的单调栈上二分,找到修改最靠前的颜色作为这个点的颜色 ...

  7. python全栈开发day58-mysql存储过程,权限,索引,慢日志,执行计划,分页优化处理

    1.存储过程 delimiter // create procedure insert_data(in rows int) begin DECLARE n INT DEFAULT 1; drop ta ...

  8. net core体系-web应用程序-4net core2.0大白话带你入门-2asp.net core新建项目

    新建asp.net core项目   开发环境:Windows Server R2 2008 开发工具:Microsoft Visual Studio 2017 新建asp.net core项目 创建 ...

  9. python自带进程池

    注意:必须加 close() 和 join(),且 close 必须在 join 之前 代码: import multiprocessing #执行方法 def func(*args,**kwargs ...

  10. oracle中查询条件包含null时

    不能使用=null或者!=null 应该使用is null和is not null