2-1 动手学深度学习v2-Softmax回归-笔记

回归 VS 分类

  • 回归估计一个连续值
  • 分类预测一个离散类别

从回归到多类分类

回归

  • 单连续数值输出
  • 输出的区间:自然区间 R \mathbb{R} R
  • 损失:跟真实值的区别
    请添加图片描述

分类

  • 通常多个输出(这个输出的个数是等于类别的个数)
  • 输出的第 i i i个元素是用来预测第 i i i类的置信度
    请添加图片描述

从回归到多类分类——均方损失

请添加图片描述

  • 对类别进行一位有效编码(因为类别不是一个数,可能是一个字符串等等)
    假设我们有 n n n个类别,我们可以用最简单的一位有效编码来进行编码。假设我们有 n n n个类别,那么我们的标号就是一个长为 n n n的向量,从 y 1 y_{1} y1 y n y_{n} yn,其中,假设我的真实的类别是第 i i i个,那么 y i y_{i} yi等于 1 1 1,其他的元素全部等于 0 0 0。意思就是这个向量中,我们恰好有一个位置为 1 1 1,这个位置的下标表示第 i i i个元素,其他的元素全部为 0 0 0
    y = [ y 1 , y 2 , . . . , y n ] T \pmb{y}=[y_{1},y_{2},...,y_{n}]^{T} y=[y1,y2,...,yn]T
    y i = { 1 i f i = y 0 o t h e r w i s e y_{i}= \begin{cases} 1 \quad if \quad i= y\\ 0 \quad otherwise \end{cases} yi={1ifi=y0otherwise
  • 使用均方损失训练(当我们有了编码以后,我们可以用最简单的回归问题的均方损失来训练,我们可以在不改动的情况下)
  • 最大值最为预测(假设我们有我们训练出来的一个模型,我们做预测的时候,那么就是我们选取 i i i时的最大化 o i o_{i} oi即置信度的值,作为我的预测, i i i是我们预测的一个标号)
    y ^ = a r g m a x i o i \hat{y}=\underset {i}{argmax} \ o_{i} y^=iargmax oi

从回归到多类分类——无校验比例

对于分类来讲,我们其实不关心,它们之间的实际的值,我们关心的是说,我是不是能够对正确类别的置信度特别大。

我们可以将我们的目标函数改为,我们需要使得我们对正确类 y y y的置信度,就是 o y o_{y} oy,要远远大于其他非正确类的 o i o_{i} oi,要大于某一个阈值, Δ \Delta Δ
这样子能保证我的模型真正地能够将我的真正的类和不一样的类拉开距离。

虽然我们这里没有说你具体 o i o_{i} oi要什么样的值,大一点小一点都没关系,我们关心的是一个相对值,但是我们如果把值放在一个合适的区间,也会让我们后面的变得更加简单。

  • 对类别进行一位有效编码

  • 最大值最为预测 y ^ = a r g m a x i o i \hat{y}=\underset {i}{argmax} \ o_{i} y^=iargmax oi

  • 需要更置信的识别正确类(大余量)
    o y − o i ≥ Δ ( y , i ) o_{y}-o_{i}\geq\Delta(y,i) oyoiΔ(y,i)

从回归到多类分类——校验比例

我们希望使得我们的输出能够是一个概率,现在我们的输出是 o 1 o_{1} o1一直到 o n o_{n} on,就是一个 o \pmb{o} o的一个向量。那么我们怎么做这个事情呢?
我们可以引入一个新的操作子,叫做 s o f t m a x softmax softmax,我们将 s o f t m a x softmax softmax作用在 o o o上面,得到一个 y ^ \pmb{\hat{y}} y^,它是一个长为 n n n的向量,但是它有我们要的属性,即它的每个元素都非负,而且它的和为1。

  • 输出匹配概率(非负,和为 1 1 1
    y ^ = s o f t m a x ( o ) \pmb{\hat{y}}=softmax(\pmb{o}) y^=softmax(o) y ^ i = e x p ( o i ) ∑ k e x p ( o k ) \hat{y}_{i}=\frac{exp(o_{i})}{\sum_{k}exp(o_{k})} y^i=kexp(ok)exp(oi)具体我们的操作是说, y ^ \pmb{\hat{y}} y^里面的第 i i i个元素,它是等于 o \pmb{o} o里面的第 i i i个元素,作指数,指数的好处是说我不管它里面的值是多少,我都能够把它变成非负;再除以所有的 o k o_{k} ok作指数的和,这样我们能够保证 y ^ \pmb{\hat{y}} y^所有的元素加起来的和为 1 1 1。这样的好处就是说,我们的 y ^ \pmb{\hat{y}} y^它其实就是一个概率啦。

回忆一下,我们对真实标号的 y \pmb{y} y,也是作成一个概率,因为他刚好只有一个元素为 1 1 1,剩下的全部为 0 0 0,任何满足所有元素非负,且和为 1 1 1的,都可以当作一个概率。
那么我们就得到两个概率,一个是真实的 y \pmb{y} y的概率,一个是预测的 y ^ \pmb{\hat{y}} y^的概率。

  • 概率 y \pmb{y} y y ^ \pmb{\hat{y}} y^的区别作为损失

Softmax和交叉熵损失

我们假设有两个离散概率 p \pmb{p} p q \pmb{q} q,都有 n n n个元素

  • 交叉熵常用来衡量两个概率的区别 H ( p , q ) = ∑ i − p i l o g ( q i ) H(\pmb{p},\pmb{q})=\underset {i}{\sum}-p_{i}log(q_{i}) H(p,q)=ipilog(qi)
  • 将它作为损失
    l ( y , y ^ ) = − ∑ i y i l o g y ^ i = − l o g y ^ y l(\pmb{y},\hat{\pmb{y}})=-\underset {i}{\sum}y_{i}log\hat{y}_{i}=-log\hat{y}_{y} l(y,y^)=iyilogy^i=logy^y我们知道,真实值里面只有 1 1 1个为 1 1 1,其余都为 0 0 0,因而公式可以简写为,负的 l o g log log对真实类别 y y y它的预测的 y ^ \hat{y} y^,就是对真实类别我的预测值求 l o g log log然后求负数。
    可以看到,对分类问题来讲,我们不关心对非正确类的预测值,我们只关心对正确类的预测值它要执行度要多大
  • 其梯度是真实概率和预测概率的区别
    ∂ o i l ( y , y ^ ) = s o f t m a x ( o ) i − y i \partial_{o_{i}}l(\pmb{y},\pmb{\hat{y}})=softmax(\pmb{o})_{i}-y_{i} oil(y,y^)=softmax(o)iyi
    请添加图片描述请添加图片描述
    请添加图片描述请添加图片描述
    请添加图片描述

总结

  • Softmax回归是一个多类分类模型
  • 使用Softmax操作子得到每个类的预测置信度
  • 使用交叉熵来衡量预测和标号的区别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/455405.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue2 eCharts实现自定义节点图标 graph关系图

先展示最后效果图 在查阅eCharts官网的配置项手册会发现提供了自定义节点图标的方法&#xff1a; 代码如下&#xff0c;可直接复制&#xff1a; &#xff08;注释已标记&#xff09; <div class"container"><div class"title"><span class…

nginx+flask+Gunicorn反代理服务拿不到真实IP的解决

背景 本人在宝塔linux环境&#xff0c;要部署flask的简单后端并且用Ngnix反代理&#xff0c;用Gunicorn框架部署。&#xff08;o(╥﹏╥)o中间磕磕绊绊总算部署上去了&#xff0c;需要了解Gunicorn怎么部署的朋友&#xff0c;评论区留言&#xff0c;我加补一篇介绍&#xff09;…

Web课程学习笔记--CSS选择器的分类

CSS 选择器的分类 基本规则 通过 CSS 可以向文档中的一组元素类型应用某些规则 利用 CSS&#xff0c;可以创建易于修改和编辑的规则&#xff0c;且能很容易地将其应用到定义的所有文本元素 规则结构 每个规则都有两个基本部分&#xff1a;选择器和声明块&#xff1b;声明块由一…

YUM | 起源 | 发展 | 运行逻辑

介绍 YUM&#xff08;Yellowdog Updater, Modified&#xff09;起源于 Red Hat Linux 发行版 up2date 工具。 最初&#xff0c;up2date 是由 Red Hat 公司提供的用于管理系统更新的工具。然而&#xff0c;社区逐渐对 up2date 出现一些不满&#xff0c;主要是由于其使用体验和…

5.0 ZooKeeper 数据模型 znode 结构详解

数据模型 在 zookeeper 中&#xff0c;可以说 zookeeper 中的所有存储的数据是由 znode 组成的&#xff0c;节点也称为 znode&#xff0c;并以 key/value 形式存储数据。 整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。 进入 zookeeper 安装的 …

实践:微服务版本升级步骤以及maven仓库相关概念

进行微服务开发的时候&#xff0c;上层服务依赖于下层的服务的api&#xff0c;比如适配属于上层服务&#xff0c;用户属于下层服务。 例子: 上层服务 <!--订单管理微服务api依赖--> <dependency><groupId>com.jn.server</groupId><artifactId>…

【翻译】Processing安卓模式的安装使用及打包发布(内含中文版截图)

原文链接在下面的每一章的最前面。 原文有三篇&#xff0c;译者不知道贴哪篇了&#xff0c;这篇干脆标了原创。。 译者声明&#xff1a;本文原文来自于GNU协议支持下的项目&#xff0c;具备开源二改授权&#xff0c;可翻译后公开。 文章目录 Install&#xff08;安装&#xff0…

使用PDFBox实现pdf转其他图片格式

最近在做一个小项目&#xff0c;项目中有一个功能要把pdf格式的图片转换为其它格式&#xff0c;接下来看看用pdfbox来如何实现吧。 首先导入pdfbox相关依赖&#xff1a; <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</a…

假期刷题打卡--Day24

1、MT1198阶乘差 求1!-2!-3!-…-n! 格式 输入格式&#xff1a; 输入为整型 输出格式&#xff1a; 输出为整型 样例 1 输入&#xff1a; 5输出&#xff1a; -151 分析过程 看到这个题目的时候&#xff0c;感觉这个题目出现的没有必要&#xff0c;就和前面阶乘和一样的…

7.0 Zookeeper 客户端基础命令使用

zookeeper 命令用于在 zookeeper 服务上执行操作。 首先执行命令&#xff0c;打开新的 session 会话&#xff0c;进入终端。 $ sh zkCli.sh 下面开始讲解基本常用命令使用&#xff0c;其中 acl 权限内容在后面章节详细阐述。 ls 命令 ls 命令用于查看某个路径下目录列表。…

前端JavaScript篇之如何判断一个对象是否属于某个类?

目录 如何判断一个对象是否属于某个类&#xff1f; 如何判断一个对象是否属于某个类&#xff1f; 要判断一个对象是否属于某个类&#xff0c;我们可以使用以下几种方法&#xff1a; 使用instanceof运算符&#xff1a; instanceof运算符用于检查一个对象是否是某个类的实例。它…

[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…