CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression

这篇具有很好参考价值的文章主要介绍了CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression

本节 Slides | 本节课程视频

这一节课是对机器学习内容的一个复习,以 Softmax Regression 为例讲解一个典型的有监督机器学习案例的整个流程以及其中的各种概念。预期读者应当对机器学习的基本概念有一定的了解。

目录

  • CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression
    • 目录
    • 机器学习基础
    • Softmax Regression 案例
      • 问题定义
      • 模型假设
      • 损失函数
      • 优化方法
      • 完整算法描述

机器学习基础

针对于手写数字识别这一问题,传统的图像识别算法可能是首先找到每个数字的特征,然后手写规则来识别每个数字。这种方式的问题在于,当我们想要识别的对象的种类很多时,我们需要手动设计的规则就会变得非常复杂,而且这些规则很难设计得很好,因为我们很难找到一个完美的特征来区分所有的对象。

而机器学习方法则是让计算机自己学习如何区分这些对象,我们只需要给计算机一些数据,让它自己学习如何区分这些数据,这样的方法就可以很好地解决这个问题。

具体到有监督机器学习方法,我们需要给计算机一些数据,这些数据包含了我们想要识别的对象的一些特征,以及这些对象的标签,计算机需要从这些数据中学习到如何区分这些对象,如下图

CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression

图里中间部分即为我们需要建立的机器学习模型,通常由以下内容组成:

  1. 模型假设:描述我们如何将输入(例如数字的图像)映射到输出(例如类别标签或不同类别标签的概率)的“程序结构”,通过一组参数进行参数化。
  2. 损失函数:指定给定假设(即参数选择)在所关注任务上的表现“好坏”的函数。
  3. 优化方法:确定一组参数(近似)最小化训练集上损失总和的过程。

Softmax Regression 案例

问题定义

让我们考虑一个 k 类分类问题,其中我们有:

  • 训练数据:\(x^{(i)} \in \R^n\), \(y^{(i)} \in {1,\dots, k}\) for \(i = 1, … , m\)
  • 其中 \(n\) 为输入数据的维度,\(m\) 为训练数据的数量,\(k\) 为分类类别的数量
  • 针对 28x28 的 MNIST 数字进行分类,\(n = 28 \cdot 28 = 784\), \(k = 10\), \(m = 60,000\)

模型假设

我们的模型假设是一个线性模型,即

\[h_\theta(x) = \theta^T x \]

其中 \(\theta \in \R^{n\times k}\) 是我们的模型参数,\(x \in \R^n\) 是输入数据。

机器学习中,经常使用的形式是多个输入叠加在一起的形式,即

\[X \in \R^{m\times n}= \begin{bmatrix} {x^{(1)}}^T \\ \vdots \\ {x^{(m)}}^T \end{bmatrix}, \quad y = \begin{bmatrix} y^{(1)} \\ \vdots \\ y^{(m)} \end{bmatrix} \]

然后线性模型假设可以写为

\[h_\theta(X) = \begin{bmatrix} {x^{(1)}}^T\theta \\ \vdots \\ {x^{(m)}}^T\theta \end{bmatrix} = X\theta \]

损失函数

最简单的损失函数就是根据是否预测正确,如

\[\ell_{e r r}(h(x), y)=\left\{\begin{array}{ll} 0 & \text { if } \operatorname{argmax}_{i} h_{i}(x)=y \\ 1 & \text { otherwise } \end{array}\right. \]

我们经常用这个函数来评价分类器的质量。但是这个函数有一个重大的缺陷是非连续,因此我们无法使用梯度下降等优化方法来优化这个函数。

取而代之,我们会用一个连续的损失函数,即交叉熵损失函数

\[z_{i}=p(\text { label }=i)=\frac{\exp \left(h_{i}(x)\right)}{\sum_{j=1}^{k} \exp \left(h_{j}(x)\right)} \Longleftrightarrow z \equiv \operatorname{softmax}(h(x)) \]
\[\ell_{ce}(h(x), y) = -\log p(\text { label }=y) = -h_y(x) + \log \sum_{j=1}^k \exp(h_j(x)) \]

这个损失函数是连续的,而且是凸的,因此我们可以使用梯度下降等优化方法来优化这个损失函数。

优化方法

我们的目标是最小化损失函数,即

\[\min_{\theta} \frac{1}{m} \sum_{i=1}^m \ell_{ce}(h_\theta(x^{(i)}), y^{(i)}) \]

我们使用梯度下降法来优化这个损失函数,针对函数\(f:\R^{n\times k} \rightarrow \R\),其梯度为

\[\nabla_\theta f(\theta) = \begin{bmatrix} \frac{\partial f}{\partial \theta_{11}} & \dots & \frac{\partial f}{\partial \theta_{1k}} \\ \vdots & \ddots & \vdots \\ \frac{\partial f}{\partial \theta_{n1}} & \dots & \frac{\partial f}{\partial \theta_{nk}} \end{bmatrix} \]

梯度的几何含义为函数在某一点的梯度是函数在该点上升最快的方向,如下图

CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression

我们可以使用梯度下降法来优化这个损失函数,即

\[\theta \leftarrow \theta - \alpha \nabla_\theta f(\theta) \]

其中 \(\alpha \gt 0\) 为学习率,即每次更新的步长。学习率过大会导致无法收敛,学习率过小会导致收敛速度过慢。

CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression

我们不需要针对每个样本都计算一次梯度,而是可以使用一个 batch 的样本来计算梯度,这样可以减少计算量,同时也可以减少梯度的方差,从而加快收敛速度,这种方法被称为随机梯度下降法(Stochastic Gradient Descent, SGD)。该方法的算法描述如下

\[\left. \begin{array}{l} \text { Repeat:} \\ \text { \quad Sample a batch of data } X \in \R^{B\times n}, y \in \{1, \dots, k\}^B \\ \text { \quad Update parameters } \theta \leftarrow \theta-\alpha \nabla_{\theta} \frac{1}{B} \sum_{i=1}^{B} \ell_{ce}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right) \end{array} \right. \]

前面都是针对 SGD 的描述,但是损失函数的梯度还没有给出,我们一般使用链式法则进行计算,首先计算 softmax 函数本身的梯度

\[\frac{\partial \ell(h, y)}{\partial h_i} = \frac{\partial}{\partial h_i} \left( -h_y + \log \sum_{j=1}^k \exp(h_j) \right) = -e_y + \frac{\exp(h_i)}{\sum_{j=1}^k \exp(h_j)} \]

写成矩阵形式即为

\[\nabla_h \ell(h, y) = -e_y + \operatorname{softmax}(h) \]

然后计算损失函数对模型参数的梯度

\[\frac{\partial \ell(h, y)}{\partial \theta} = \frac{\partial \ell(\theta^T x, y)}{\partial \theta} = \frac{\partial \ell(h, y)}{\partial h} \frac{\partial h}{\partial \theta} = x(\operatorname{softmax}(h) - e_y)^T \]

写成矩阵形式即为

\[\nabla_\theta \ell(h, y) = X^T (\operatorname{softmax}(X\theta) - \mathbb{I}_y) \]

完整算法描述

最终算法描述为

\[\left. \begin{array}{l} \text { Repeat:} \\ \text { \quad Sample a batch of data } X \in \R^{B\times n}, y \in \{1, \dots, k\}^B \\ \text { \quad Update parameters } \theta \leftarrow \theta-\alpha X^T (\operatorname{softmax}(X\theta) - \mathbb{I}_y) \end{array} \right. \]

以上就是完整的 Softmax Regression 的算法描述,最终在 hw0 中我们会实现这个算法,其分类错误率将低于 8 %。文章来源地址https://www.toymoban.com/news/detail-777128.html

到了这里,关于CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI】《动手学-深度学习-PyTorch版》笔记(十一):分类问题-softmax回归

    1)连续值与离散值 线性回归模型,适用于输出为连续值的情景。 softmax回归模型,适用于输出为离散值的情景。例如图像类别,就需要对离散值进行预测。softmax回归模型引入了softmax运算,使输出更适合离散值的预测和训练。 2)输出个数 线性回归模型,输出单元为1个,而

    2024年02月14日
    浏览(38)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(十二):从零开始实现softmax回归

    对于图像算法,每个像素可以视为一个特征,例如图像的分辨率为28x28,则有784个特征。而且常常将二维的图像像素矩阵展开为长度为784的向量。 本例中,将使用Fashion-MNIST数据集,它是一个服装分类数据集,可以将服装分为10个类别。 输入图像的分辨率为28x28,即特征是长度

    2024年02月13日
    浏览(33)
  • 16 dlsys GAN

    和有监督的分类工作不同,生成任务的目标更不明确。难以评价生成结果的好坏。 假设我们有一个先知判别器oracle discriminator可以分辨我们生成的内容是真还是假。 D(x) 表示判别数据为真的概率。 我们想让生产成的结果足够真实,所以要 fool Oracle discriminator: 但是实际上我们

    2024年02月13日
    浏览(20)
  • 【BBuf的CUDA笔记】九,使用newbing(chatgpt)解析oneflow softmax相关的fuse优化

    随着年纪越来越大,读代码越来越困难,如果你发现看不懂同事写的代码应该怎么办呢?不要担心,大语言模型的时代了来了,chatgpt和gpt4会教会我们怎么读代码。本篇文章就来展示一下使用newbing(chatgpt)来读oneflow softmax相关的fuse优化kernel的过程。本文的代码解释均由chat

    2024年02月01日
    浏览(32)
  • 多标签分类论文笔记 | ML-Decoder: Scalable and Versatile Classification Head

    个人论文精读笔记,主要是翻译+心得,欢迎旁观,如果有兴趣可以在评论区留言,我们一起探讨。 Paper: https://arxiv.org/pdf/2111.12933.pdf Code: https://github.com/Alibaba-MIIL/ML_Decoder 翻译 本文介绍了一种新的基于注意力的分类头——ML-Decoder。ML-Decoder通过查询预测类标签的存在,与全局

    2024年02月05日
    浏览(31)
  • 深度学习笔记(四)——使用TF2构建基础网络的常用函数+简单ML分类实现

    文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 1、张量处理类 强制数据类型转换: 查找数据中的最小值和最大值: 上一行例子中是对整个张量查找,也按照一定的方向查找

    2024年01月16日
    浏览(29)
  • 【阅读笔记】Blockchain management and ML adaptation for IoT environment in 5G and beyond ...

    本文是一篇CCF C类文章,作者来自印度旁遮普邦帕蒂拉塔帕工程技术学院计算机科学与工程系 🙋‍♂️张同学 📧zhangruiyuan@zju.edu.cn 有问题请联系我~ 5G 和 B5G有什么区别? 答:5G主要解决了我们熟悉的高清视频、传输速率等问题;而B5G(Beyond-5G)将解决一些应用场景与技术的完

    2023年04月09日
    浏览(39)
  • nlp大模型课程笔记

    👆说明之前的大模型其实有很多都是基于迁移学习的方法。 attention机制的总结,解决了信息瓶颈的问题。 处理词组时BPE的过程 👆pos表示的是token所在的位置 👆技巧是layer normalization。 参数高效微调方法 大多数的模型做的都是基座模型、不一定具备对话能力。 一般会通过基

    2024年02月11日
    浏览(23)
  • 复杂算法分析与设计课程笔记

    1. 网络资源: 北京大学慕课-算法设计与分析 屈婉玲教授_哔哩哔哩_bilibili foretmer的个人空间-foretmer个人主页-哔哩哔哩视频 2. 内容 找max/min,max+min,second,k-th 最小生成树kruskal 素数测试 prime test 最小割 min_cut DAG k-path 集合分割 set_split 顶点覆盖 vertex_cover 集合覆盖 set_cover 最大割

    2024年02月01日
    浏览(28)
  • 刘二大人Pytorch课程笔记

    Lecture01. Overview 没啥好记的,理解就好 人工智能和机器学习等的关系: 正向传播 正向传播本质上是按照输入层到输出层的顺序,求解并保存网络中的中间变量本身。 反向传播 反向传播本质上是按照输出层到输入层的顺序,求解并保存网络中的中间变量以及其他参数的导数(

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包