新闻详情

新闻详情

首页 / 资讯中心 / 详情

李宏毅机器学习深度学习笔记 2021(三)

发布时间:2026/10/1 18:27:58来源:尧图网络
李宏毅机器学习深度学习笔记 2021(三)
剪枝可以以不同单位进行以参数为单位评估并移除单个权重参数。以神经元为单位评估并移除整个神经元。这两种方式在实践中有显著差异。以参数为单位剪枝会导致网络结构变得不规则给实现和 GPU 加速带来困难。通常的变通方法是将“剪掉”的参数设为零但这并未真正减少参数存储。而以神经元为单位剪枝网络结构保持规则更易于实现和加速。大乐透假说在了解了剪枝的基本操作后一个自然的问题是为什么不直接训练一个小型网络而非要先训练大型网络再剪枝呢普遍答案是大型网络通常更容易训练。直接训练的小型网络往往无法达到“大型网络剪枝后”的小型网络的性能。这引出了著名的“大乐透假说”。该假说认为训练神经网络如同抽奖初始参数的好坏直接影响结果。大型网络可以看作是许多小型子网络的组合。训练大型网络相当于同时训练所有这些子网络。只要其中有一个子网络成功“中奖”即训练良好整个大型网络就表现为成功。网络越大包含的子网络越多“中奖”几率就越高。实验上该假说通过剪枝相关实验得到验证从训练好的大型网络中剪枝得到的小型网络如果使用剪枝后对应的原始初始化参数能够成功训练但如果对这些参数重新随机初始化则可能训练失败。这表明剪枝后保留的参数恰好构成了一个“幸运”的、可训练的子网络初始化状态。大乐透假说在 ICLR 2019 获得了最佳论文奖非常知名。后续研究如Deconstructing Lottery Tickets进一步发现剪枝策略中某些方法特别有效。初始化参数中正负号比绝对值更重要是决定子网络能否训练成功的关键。甚至在大型随机初始化的网络中可能已经存在一个无需训练、剪枝后即可直接使用的有效子网络分类器。然而大乐透假说并非没有争议。同期另一篇论文Rethinking the Value of Network Pruning提出了不同观点。其实验表明如果为直接训练的小型网络设置更多的训练周期epoch其性能可以媲美“先训练大再剪枝”得到的小型网络。该文认为大乐透假说观察到的现象可能只在特定条件下如学习率较小、非结构化剪枝成立。因此这一领域仍需更多研究来厘清。总结本节课我们一起学习了神经网络压缩的重要性及其首个关键技术——神经网络剪枝。我们了解了剪枝的基本流程、以不同单位参数/神经元剪枝的利弊并深入探讨了解释“为何要先大后小”的大乐透假说及其相关实验与争议。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/67437bb0dddcc377b9207593e2120900_3.png神经网络剪枝是模型压缩的有效手段它帮助我们在资源受限的设备上部署高性能的模型。理解其背后的原理如大乐透假说能让我们更好地应用和探索这一技术。37L21.2 - 神经网络压缩2从各种不同的面向来压缩神经网络 https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/9979f1055e63e7f5432fa510da72db8c_1.png在本节课中我们将要学习神经网络压缩的多种方法。上一节我们介绍了网络剪枝本节中我们来看看知识蒸馏、参数量化、网络架构设计以及动态计算等不同面向的压缩技术。知识蒸馏 (Knowledge Distillation) ‍知识蒸馏的核心概念是让一个小的“学生”网络去学习一个大的“教师”网络的输出行为而不仅仅是学习原始的训练标签。基本概念与流程知识蒸馏的过程如下首先训练一个大型神经网络称为教师网络。然后训练一个较小的神经网络称为学生网络。学生网络的学习目标不是直接匹配训练数据的真实标签而是去匹配教师网络对相同输入产生的输出分布。例如在手写数字识别任务中教师网络的输出可能是一个概率分布如数字“1”的概率是0.7“7”的概率是0.29“9”的概率是0.01。学生网络的目标就是让自己的输出分布尽可能接近这个由教师网络产生的“软标签”。为何有效你可能会问为什么不直接训练一个小网络呢一个直观的解释是教师网络为学生网络提供了额外的、更丰富的监督信息。直接告诉学生网络“这是一张‘1’的图片”可能过于困难因为‘1’可能与‘7’或‘9’有相似之处。而教师网络的软标签如‘1’: 0.7, ‘7’: 0.29则揭示了类别之间的相似性使学生网络更容易学习。公式描述学生网络的损失函数通常结合了与教师网络输出的KL散度或交叉熵以及与真实标签的交叉熵。总损失 α * 蒸馏损失(学生输出 vs 教师软标签) (1-α) * 学生损失(学生输出 vs 真实硬标签)技巧温度参数 (Temperature)https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/9979f1055e63e7f5432fa510da72db8c_3.png为了使教师网络的输出分布更平滑从而传递更多类别间关系的信息常在Softmax函数中引入温度参数T。代码描述# 普通Softmaxoutputtorch.softmax(logits,dim-1)# 带温度参数的Softmaxtemperature5soft_targetstorch.softmax(logits/temperature,dim-1)温度T大于1时会软化概率分布使各类别的概率差异变小从而让学生网络能更好地从教师网络学习到类别间的相对关系。集成模型作为教师教师网络不一定是单个大模型也可以是多个模型的集成。集成模型通常能获得更高的准确率但推理成本高昂。通过知识蒸馏可以让单一的学生网络去学习集成模型的输出从而在保持较高性能的同时大幅降低计算开销。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/9979f1055e63e7f5432fa510da72db8c_5.png参数量化 (Parameter Quantization) ⚖️参数量化的目标是通过降低存储每个参数所需的精度来减少模型大小。请注意此方法在本次作业的评估标准参数数量中可能不直接受益但仍是一种重要的压缩技术。基本方法最简单的量化方法是降低参数的数据类型精度例如从32位浮点数转换为16位甚至8位整数。这通常能在模型性能损失很小的情况下将模型体积减半或更多。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/9979f1055e63e7f5432fa510da72db8c_7.png权重聚类 (Weight Clustering)更进一步的压缩技术是权重聚类。其步骤如下对所有网络权重进行聚类如K-means将数值相近的权重归为一类。每个类用一个代表值如类中心来表示。存储时只需保存聚类中心表和一个记录每个权重属于哪个类的索引表。以下是权重聚类的操作步骤设定聚类数目K例如4类。对所有权重进行聚类分析。用聚类中心值替代原始权重值。存储时保存K个中心值和每个权重对应的聚类索引。当K值较小时存储索引所需的比特数远小于存储原始权重值。例如若K4则每个权重只需2个比特来存储其类别索引。极致压缩二值化权重 (Binary Weight)https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/9979f1055e63e7f5432fa510da72db8c_9.png参数量化的终极形式是二值化权重即每个权重只能是1或-1。这样每个权重仅需1个比特存储。研究表明在某些情况下二值化网络由于引入了极强的正则化反而可能比全精度网络表现更好因为它能有效防止过拟合。网络架构设计 ️通过设计更高效的网络层结构可以直接减少参数量。本节介绍深度可分离卷积这是本次作业中突破强基线strong baseline的关键方法。回顾标准卷积在标准卷积层中每个滤波器都是一个三维张量高 x 宽 x 输入通道数。假设输入特征图有I个通道使用O个大小为K x K的滤波器则参数量为参数量 K * K * I * O深度可分离卷积 (Depthwise Separable Convolution)深度可分离卷积将标准卷积分解为两个步骤大幅减少计算量和参数量。第一步深度卷积 (Depthwise Convolution)每个输入通道独立使用一个二维卷积滤波器。输入有I个通道就使用I个滤波器。每个滤波器只与一个输入通道进行卷积输出I个通道的特征图。此步骤负责处理空间特征但通道间无交互。参数量K * K * I第二步逐点卷积 (Pointwise Convolution)使用1x1大小的标准卷积。其作用是将深度卷积输出的I个通道的信息进行融合并变换到指定的输出通道数O。此步骤负责处理通道间的关系。参数量1 * 1 * I * O I * O总参数量对比标准卷积K * K * I * O深度可分离卷积K * K * I I * O两者比值为1/O 1/(K*K)。当O较大时比值约等于1/(K*K)。例如当K3时深度可分离卷积的参数量约为标准卷积的1/9。原理低秩近似 (Low-rank Approximation)深度可分离卷积的本质是将一个全连接层或卷积层视为一种全连接分解为两个更薄层的连续操作。这种分解限制了权重矩阵的秩从而减少了自由度参数量但通常能以较小的性能损失换取显著的空间节省。动态计算 (Dynamic Computation) ⚡https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/9979f1055e63e7f5432fa510da72db8c_11.png动态计算的目标不是单纯地让网络变小而是让同一个网络能够根据可用的计算资源如设备电量、算力动态调整其计算成本。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/9979f1055e63e7f5432fa510da72db8c_13.png调整网络深度一种方法是让网络能在中间层提前输出结果。具体做法是在网络的某些中间层后添加辅助分类器。训练时要求所有辅助分类器和最终分类器的输出都尽可能接近真实标签。推理时资源紧张则使用浅层的输出资源充足则使用深层输出。调整网络宽度另一种方法是让网络能选择性地“关闭”一部分神经元即使用子网络。在训练时同时优化多个不同宽度的子网络共享权重使它们都能取得良好性能。推理时根据资源选择激活的神经元比例。基于输入难度的动态计算更智能的方法是让网络根据输入样本的难度自行决定需要多少计算。对于简单的样本如清晰的猫图片网络可能早期层就能做出准确判断并提前退出对于困难的样本如伪装成食物的猫网络则会使用全部层进行计算。这可以在不牺牲精度的前提下平均减少计算量。总结 本节课中我们一起学习了多种神经网络压缩与加速技术知识蒸馏让小模型学习大模型的输出分布传递暗知识。参数量化通过降低权重精度、聚类或二值化来减少存储开销。网络架构设计采用如深度可分离卷积等高效结构从根本上减少参数量。动态计算使网络能根据资源或输入难度灵活调整计算成本。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/9979f1055e63e7f5432fa510da72db8c_15.png这些技术并非互斥在实际应用中常被组合使用以在模型大小、速度和精度之间达到最佳平衡。掌握这些方法将有助于你将强大的深度学习模型部署到资源受限的实际环境中。38L22.1 - 元学习1元学习跟机器学习一样也是三个步骤 https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/737139ede263592daca23d997bccebbc_1.png在本节课中我们将要学习元学习的基本概念。元学习即“学习如何学习”是机器学习领域的一个高级主题。我们将看到元学习的基本框架与传统的机器学习非常相似同样遵循三个核心步骤。什么是元学习https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/737139ede263592daca23d997bccebbc_3.png元学习中的“元”字通常翻译为“元”如“一元复始”中的“元”。从字面意思看元学习是关于“学习的学习”。因此元学习可以理解为学习如何学习。这与我们之前讨论的机器学习处于不同层次是迈向更高级领域的一步。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/737139ede263592daca23d997bccebbc_5.png为什么需要元学习在深度学习中调整超参数如学习率、网络架构是一项繁琐且关键的任务。目前业界常用的方法是使用大量GPU同时训练多个不同超参数的模型然后选择表现最好的一个。然而在学术环境中资源往往有限通常只能依靠经验和直觉来设定超参数。既然机器学习可以自动学习模型那么超参数是否也能通过学习得到呢这就是元学习可以发挥作用的地方之一。回顾机器学习 在深入元学习之前让我们先回顾一下机器学习的基本框架。你会发现元学习的基本思想与机器学习并无太大差异。机器学习就是寻找一个函数。例如构建一个图像识别系统就是寻找一个输入图片、输出识别结果的函数。机器学习包含三个步骤定义一个带有未知参数的函数。在深度学习中这通常是一个神经网络。我们用F_θ表示这个函数其中θ代表网络中的权重和偏置等待学习的参数。定义一个损失函数。损失函数L(θ)用于衡量参数θ的好坏。它基于带有标签的训练数据计算得出例如对于分类问题常计算所有样本的交叉熵之和。寻找最优参数。目标是找到一个参数θ*使得损失函数L(θ)最小。我们通常使用梯度下降等优化方法来解决这个问题。找到θ* 后我们就得到了最终可用的模型F_θ*。元学习的三个步骤 学习本身也可以看作一个函数。一个机器学习算法本质上是一个函数我们称之为F。它的输入是训练数据集输出是一个训练好的分类器。目前这些算法如梯度下降都是人工设计的。元学习的目标就是学习这个“学习算法”F。我们同样可以通过三个步骤来实现第一步定义带有未知元参数的函数在元学习中我们要找的函数F是一个学习算法。这个算法内部有一些我们希望机器自动决定的组件例如网络架构、初始化参数或学习率策略。我们用φ来表示这些待学习的元参数。因此学习算法可以表示为F_φ。不同的元学习方法主要区别在于学习算法中哪些组件即φ被设定为可学习的。第二步定义元损失函数我们需要一个损失函数L(φ)来衡量一个学习算法F_φ的好坏。如何定义这个损失呢这需要用到“训练任务”。在元学习中我们收集的是许多相关的“任务”而不是单一任务的数据。例如要训练一个二元分类器我们就准备许多个二元分类任务如任务1区分苹果和橘子任务2区分汽车和自行车。每个任务都包含自己的训练集和测试集。以下是评估学习算法F_φ的流程从第i个任务中取出训练集输入给学习算法F_φ。F_φ根据该训练集进行学习即进行一次“任务内训练”产出一个针对该任务的分类器F_θ_i*。使用该任务中的测试集来评估这个分类器F_θ_i* 的性能计算出一个损失值li**例如分类错误率或交叉熵。**li越小说明针对此任务学习到的分类器越好间接反映了学习算法F_φ在此任务上表现越好。重复以上步骤在所有N个训练任务上运行学习算法F_φ得到N个损失值l^1, l^2, …, l^N。最终元损失函数L(φ)定义为所有任务损失的平均值L(φ) Σ_{i1}^{N} l^i / N请注意这里的每个l^i是在单个任务的“测试集”上计算的。这与传统机器学习在训练集上计算损失不同。在元学习中训练的基本单位是“任务”因此任务内部的测试集可以在元学习训练过程中被合法地用于评估。第三步寻找最优元参数我们的目标是找到一个元参数φ*使得元损失函数L(φ)最小化φ argmin_φ L(φ)*如何解决这个优化问题呢如果我们可以计算L(φ)关于φ的梯度∇L(φ)那么可以直接使用梯度下降法。如果梯度无法计算例如φ是离散的网络架构选择则可以考虑使用强化学习或进化算法等黑盒优化方法。找到φ* 后我们就得到了一个“学出来的”学习算法F_φ*。元学习的完整流程与应用 整个元学习的框架如下跨任务训练使用大量训练任务通过上述三个步骤学习出最优的学习算法F_φ*。跨任务测试面对一个新的测试任务例如区分猫和狗我们将该任务的训练集输入给学到的算法F_φ*。F_φ* 会针对这个新任务进行学习产出一个分类器。最后我们用该任务的测试集来评估这个分类器的性能。测试任务是我们真正关心的、希望取得好结果的任务。而训练任务则是用于“锻造”学习算法的、与测试任务不同的任务。元学习的一个著名应用是小样本学习。小样本学习是目标希望模型只需看少量样本就能学会新任务而元学习是手段通过让模型在大量任务上学习“如何学习”从而获得强大的小样本适应能力。因此两者紧密关联但概念上略有区别。元学习与机器学习的比较 为了更清晰地理解我们来系统比较一下机器学习和元学习。| 方面 | 机器学习 | 元学习 || :— | :— | :— ||目标| 寻找一个函数f_θ(如分类器) | 寻找一个学习算法F_φ(能产出分类器) ||训练数据| 单个任务的训练集 | 多个训练任务每个任务包含支持集(训练集)和查询集(测试集) ||训练过程| 任务内训练 | 跨任务训练 ||测试过程| 任务内测试 (直接应用模型) | 跨任务测试 (包含用新任务支持集进行任务内训练 用新任务查询集进行任务内测试) ||损失函数|L(θ)对单个任务训练集求和 |L(φ)对多个任务的查询集损失l^i求和/平均 ||过拟合| 在训练集上表现好在测试集上差 | 在训练任务上表现好在新测试任务上差 ||缓解过拟合| 收集更多训练数据、数据增强 | 收集更多训练任务、任务增强 |术语澄清跨任务训练/测试涉及多个任务的学习和评估过程。任务内训练/测试在单个任务内部用其支持集学习模型或用其查询集评估模型。支持集/查询集为避免与“元学习的训练集”混淆文献中常将任务内的训练集称为支持集测试集称为查询集。外层循环/内层循环在某些元学习方法如学习初始化参数中跨任务训练被称为外层循环而任务内训练被称为内层循环。元学习的实践细节与挑战 ⚙️元学习训练的计算量通常很大。因为每计算一次元损失L(φ)都需要对每个任务完整执行一次任务内训练和测试即一个回合。与传统机器学习一样元学习也需要调参如优化φ时使用的学习率。这似乎陷入了“为减少调参而引入更多调参”的循环。但元学习的理想目标是花费一次大力气调参找到一个强大的通用学习算法F_φ*之后将其应用于任何新任务时都无需或只需极少调参。此外元学习也应有验证环节。合理的流程是拥有训练任务、验证任务和测试任务。用验证任务来选择元学习过程中的超参数最终在测试任务上报告性能。目前并非所有文献都严格遵循此流程但这应是未来标准。总结 https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/737139ede263592daca23d997bccebbc_7.png本节课中我们一起学习了元学习的基础知识元学习的核心是学习如何学习旨在让机器自动发现高效的学习算法。其框架与机器学习一脉相承都包含定义函数、定义损失、优化参数三个步骤只是操作对象从“模型参数θ”提升到了“学习算法元参数φ”。元学习在“任务”的层面上进行学习和评估需要准备大量的训练任务。元学习与机器学习在目标、数据形式、流程上既有相似之处也有关键区别理解这些区别对于掌握元学习至关重要。元学习是小样本学习等前沿方向的重要实现手段尽管在实践中面临计算量大和自身需要调参等挑战但其前景是让AI获得更强大、更通用的学习能力。39L22.2 - 元学习2万物皆可Meta 在本节课中我们将学习元学习Meta Learning的具体应用实例探讨在元学习框架下哪些组件可以被学习。我们将从梯度下降算法出发逐一分析可学习的部分并介绍相关的经典方法与研究。概述上一节我们介绍了元学习的基本概念。本节中我们将通过具体实例详细说明在元学习框架中哪些组件可以被学习。我们将从最常见的梯度下降算法开始分析其各个部分并介绍如何通过元学习来优化这些部分。梯度下降算法中的可学习组件最常用的学习算法是梯度下降Gradient Descent。在梯度下降中我们首先需要一个神经网络架构。接着我们初始化参数这个初始化的参数通常记作θ₀。然后我们从训练数据中采样一个批次Batch计算梯度并用这个梯度来更新参数。这个过程反复进行直到达到满意的训练次数最终输出训练得到的参数θ。在这个完整的过程中以下部分是可以被学习的1. 初始化的参数θ₀初始化的参数θ₀是可以学习的。通常θ₀是随机初始化的从一个固定的分布中采样出来。然而初始化的好坏对最终结果有显著影响。好的初始化参数可以带来更好的训练效果而差的初始化则可能导致结果天差地别。因此我们可以通过元学习利用一系列训练任务来找到一个对训练特别有帮助的初始化参数。以下是学习初始化参数的代表性方法MAMLModel-Agnostic Meta-Learning这是元学习领域中最知名的方法之一。它的目标是学习一个通用的初始化参数使其能够通过少量梯度更新快速适应新任务。Reptile这是 MAML 的一个变体其名称与爬行动物相关。它通过一种更简单的方式学习初始化参数。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/c3d897f20dd9d3ab1dff7e10fee531fe_1.png这些方法的细节因时间有限不在此详述但相关参考文献已列在课程材料中供大家深入阅读。在作业中我们也会涉及更多与 MAML 相关的细节问题。需要注意的是训练 MAML 本身也需要调整超参数。原始的 MAML 版本效果并不总是非常稳定。有一篇名为《How to Train Your MAML》的论文专门研究了如何更好地训练 MAML并提出了改进版本MAML。有关 MAML 的更多细节建议大家自行阅读这篇论文。讲到学习好的初始化参数这让我们联想到课程中的另一个主题自监督学习Self-Supervised Learning。在自监督学习中我们利用大量无标签数据通过预训练任务例如 BERT 中的填空题或图像中的对比学习来获得一个好的初始化参数然后将其用于下游任务。那么MAML 和自监督学习的预训练有何不同呢最明显的区别在于MAML 在训练任务中使用了标注数据而自监督学习完全不需要标注数据。自监督学习虽然有效但其背后的原理并不完全清晰。而 MAML 的有效性则更直观它在训练任务上找到了一组好的初始化参数因此有望迁移到测试任务上。在自监督学习这个概念流行之前另一种常见的做法是将多个任务的数据混合在一起当作一个任务进行训练以获得一个好的初始化参数。这种方法被称为多任务学习Multi-Task Learning。在元学习研究中多任务学习常被用作比较的基线Baseline因为两者使用的数据相同只是组织方式不同。2. 优化器Optimizer在更新参数时我们需要决定学习率Learning Rate、动量Momentum等超参数。这些超参数能否通过元学习自动学习出来呢答案是肯定的。早在 2016 年就有一篇名为《Learning to Learn by Gradient Descent by Gradient Descent》的论文提出了这种方法。该论文直接学习优化器如 Adam内部的参数并将其方法类比为训练一个 LSTM因此直接命名为LSTM Optimizer。该研究首先在 MNIST 数据集上训练并测试取得了不错的结果。更重要的是它早期就具备了“训练任务与测试任务应不同”的概念。例如训练时使用一层神经网络测试时使用两层神经网络模型依然有效。但如果改变激活函数例如从 Sigmoid 改为 ReLU学习到的优化器就可能失效。这表明了元学习泛化能力面临的挑战。3. 神经网络架构Neural Architecture我们能否学习神经网络架构本身呢当然可以。这一系列的研究就是鼎鼎大名的神经网络架构搜索Neural Architecture Search, NAS。在元学习框架中如果我们将神经网络架构本身视为要学习的函数f那么我们就是在进行 NAS。在 NAS 中f是网络架构我们的目标是找到一个f来最小化损失函数L(f)。由于f是离散的架构选择无法直接计算梯度。这时我们可以运用本课程反复强调的思路当遇到无法计算梯度的问题时强化学习Reinforcement Learning是一个可行的解决方案。如何用强化学习实现 NAS呢我们可以将f视为一个智能体Agent的参数。这个智能体的输出就是与网络架构相关的超参数例如每一层的滤波器大小、数量、步长等。然后我们训练这个智能体去最大化一个奖励Reward。这里的奖励可以直接设置为损失函数L(f)的负值即最小化L(f)等价于最大化负的L(f)。通过策略梯度等强化学习算法我们就可以训练出能设计出好架构的智能体。除了强化学习使用进化算法Evolutionary Algorithm也是可行的。此外还有一种经典方法叫做可微分架构搜索Differentiable Architecture Search, DARTS它通过巧妙的参数化使得架构选择变得可微分从而可以直接使用梯度下降来优化。4. 数据处理Data Processing在训练神经网络时我们通常需要进行数据增强Data Augmentation。目前数据增强的方法大多是通过试错Trial and Error来选择的。那么能否通过元学习自动学习出最佳的数据增强策略呢这也是可以的。已有一些论文致力于学习自动化的数据增强方法。此外在训练时我们有时需要为不同的数据样本赋予不同的权重。例如有的策略认为接近决策边界的困难样本应给予更大权重以便模型重点学习也有相反的观点认为这些样本可能标签噪声较大应给予较小权重。如何决定样本权重的策略呢我们可以通过元学习根据数据的特性自动学习出样本权重的分配策略。超越梯度下降学习全新的算法到目前为止我们看到的方法都是在梯度下降的基础上进行改进。但我们是否可以完全抛弃梯度下降让机器发明全新的学习算法呢1. 学习一个“元网络”https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/c3d897f20dd9d3ab1dff7e10fee531fe_3.png我们有可能直接学习一个神经网络该网络的参数就是f。这个网络以训练数据作为输入直接输出训练好的模型参数。如果真有这样一个网络我们就可以说机器发明了新的学习算法。这方面已有一些研究论文进行了探索。2. 端到端的“学习与推理”更进一步我们能否不再区分训练和测试两个阶段而是用一个神经网络把整个“训练测试”的过程一次性搞定呢这是有可能的。这类方法通常被称为基于度量的方法Metric-Based Approaches或学习比较Learning to Compare。在这类方法中一个神经网络同时读取支持集训练数据和查询集测试数据直接输出查询集样本的预测结果。整个过程中没有显式的参数更新步骤。如果你想了解更多关于这类方法的内容可以参考课程中过去讲解少样本学习Few-Shot Learning的相关部分。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/c3d897f20dd9d3ab1dff7e10fee531fe_5.png元学习的实际应用与评测https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/c3d897f20dd9d3ab1dff7e10fee531fe_7.png你可能会好奇元学习这种听起来有些科幻的技术真的有实际应用吗少样本图像分类Few-Shot Image Classification目前元学习技术最常用来测试的任务是少样本图像分类。在这类任务中每个分类任务只有极少数量的图片。例如一个N-way K-shot分类任务表示任务中有 N 个类别每个类别只有 K 个样本。为了进行元学习训练我们需要准备大量这样的 N-way K-shot 任务。在学术界最常用的基准数据集是Omniglot数据集。它包含 1623 个不同的手写字符每个字符有 20 个样本。研究人员可以从中采样字符来构造大量的训练任务和测试任务从而评估元学习算法的泛化能力。更广泛的应用元学习并非只能用于简单的 Omniglot 任务。下表列举了元学习在语音和自然语言处理等更复杂任务上的应用| 方法类型 | 语音检测 | 关键词识别 | 语音转换 | 序列标注 | 机器翻译 | 语音识别 || :— | :— | :— | :— | :— | :— | :— ||学习初始化 (e.g., MAML)| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ ||基于度量的方法| ✓ | ✓ | | ✓ | | ||其他 (e.g., NAS)| | ✓ | | | ✓ | |这表明元学习已经开始被推向更复杂的现实任务。我们可以期待未来元学习技术能够在实际应用中走得更远。总结https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/c3d897f20dd9d3ab1dff7e10fee531fe_9.png本节课中我们一起深入探讨了元学习的各种可能应用。我们从梯度下降的各个组件初始化参数、优化器、网络架构、数据处理策略出发分析了如何通过元学习来优化它们。接着我们展望了超越梯度下降、让机器学习全新算法的可能性。最后我们了解了元学习在少样本分类等任务上的评测方式及其在更复杂领域的应用前景。元学习作为一个充满潜力的方向正在不断拓展机器学习的边界。40回顾、总结与展望 https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/2951fb6cfa39bb2b31c5fdd374a96967_1.png在本节课中我们将回顾整个机器学习课程的核心内容总结所学知识并对未来的学习与应用进行展望。课程内容回顾 在这门课程中我们学习了机器学习的核心概念与技术。课程伊始我们明确了机器学习的本质寻找一个函数。上半学期深度学习基础与核心模型上一节我们介绍了机器学习的基本目标本节中我们来看看课程前半部分的核心内容。我们首先指出简单的线性模型linear model能力有限。因此课程直接进入深度学习领域讲解了深度学习deep learning的基本原理。以下是上半学期涵盖的核心模型卷积神经网络用于处理图像等具有矩阵结构的输入数据。自注意力机制用于处理序列数据如声音或文字。Transformer模型其输入与输出的长度可以不同。掌握了这些模型便足以处理大多数常见的应用场景。下半学期进阶主题与应用在掌握了基础模型后我们进入了一系列机器学习的进阶主题。以下是下半学期探讨的关键技术生成模型让机器学会创造例如介绍了GAN技术。自监督学习利用无标注数据进行学习例如BERT模型。领域自适应处理训练与测试数据分布不匹配的问题。强化学习以通俗易懂的方式介绍了Reinforcement Learning。对抗攻击与防御应对针对模型的恶意攻击。可解释机器学习解释模型的学习结果与决策。网络压缩在资源有限的设备上进行模型部署。终身学习探讨模型持续学习新知识的能力。元学习学习如何学习实现超越传统学习框架的目标。技术应用实例展示 ️课程中我们通过大量实例展示了机器学习技术的广泛应用可能性。以下是课程中涉及的部分应用领域影像处理不仅包括基础的影像分类还涉及影像生成、对抗攻击、模型调试、压缩、解释以及异常检测。自然语言处理实现了机器翻译与问答系统。语音处理完成了语音转文字语音辨识和说话人辨识任务。强化学习应用让机器学会了玩小游戏。这些应用旨在说明深度学习技术可以应用于各行各业。你可以思考自己关注的问题是否能用这些技术来解决。课程定位与未来学习建议 这门漫长的学习旅程现已接近尾声但这并非终点而是另一段探索的开始。本课程的核心目标并非深入钻研某个特定问题而是像“深度学习一日游”一样带领大家概览该领域的关键技术与景点为大家打开一扇扇门。真正的深入探索需要依靠各位未来的持续努力。课程结束后你可以从以下几个方面继续前进尝试解决实际问题结合课程作业中的概念尝试解决你研究或感兴趣的问题。阅读学术论文如果你已掌握课程多数内容便已具备阅读顶尖机器学习会议论文的基础能力。参与进阶学习例如关注并参与像MLSS这样的机器学习暑期学校继续深入学习。关于课程设计与挑战的说明 本学期课程开放给所有感兴趣的同学这带来了多元的背景也对课程设计提出了挑战。为此我们重新设计了教材与作业并提供了范例程式旨在让尽可能多的同学理解课程内容。我们理解同学们可能遇到的一些挑战例如模型训练时间长、运算资源有限等。需要说明的是这些挑战是深度学习实践中本质存在的困难并非课程刻意设置。课程选择不隐藏这些困难是为了呈现深度学习真实、完整的样貌避免产生“深度学习非常简单”的误解。这种体验或许像疫苗可能带来短暂不适但能帮助你未来更好地应对实际应用中更大的挑战。无论你未来是否继续深入研究深度学习本课程都希望为你提供客观、全面的认识由你自己做出选择。结语与勉励 最后想对坚持修完这门课尤其是那些在资源有限条件下克服困难的同学表达勉励之意。这让人联想到改编自《为学一首示子侄》的故事https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/2951fb6cfa39bb2b31c5fdd374a96967_3.png台湾大学有二生其一贫其一富。贫者语于富者曰“吾欲修李宏毅机器学习何如”富者曰“子何恃而训”曰“吾 Colab 足矣。”富者曰“吾数年来欲买 V100 而修犹未能也。子何恃而训”越一学期贫者完成不止十个作业以告富者。富者有惭色。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/2951fb6cfa39bb2b31c5fdd374a96967_4.png感谢大家这学期的参与。在座的各位来自不同科系未来将步入各行各业。你们之中或许有人会运用深度学习创造出今日难以想象的成就。本学期的课程到此结束。请为坚持到最后的自己献上热烈的掌声。https://github.com/OpenDocCN/dsai-notes-pt3-zh/raw/master/docs/leemldl/img/2951fb6cfa39bb2b31c5fdd374a96967_6.png本节课中我们一起学习了对整个机器学习课程的知识体系进行了全面回顾总结了从基础模型到进阶技术的核心内容探讨了课程的设计理念与面临的挑战并对未来的学习与应用方向给予了建议和勉励。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

当皇上故障排查手册:doctor一键诊断+高频问题清单,快速修复你的AI朝廷 2026/10/1 22:01:23

当皇上故障排查手册:doctor一键诊断+高频问题清单,快速修复你的AI朝廷

当皇上故障排查手册:doctor一键诊断高频问题清单,快速修复你的AI朝廷 【免费下载链接】danghuangshang Open-source multi-agent collaboration system inspired by Chinese governance — deploy and coordinate specialized AI agents with OpenClaw. …

阅读更多 →
Cyber Whale 公司档案解析:remoteintech.company 目录中欧洲远程友好型 SaaS 公司的数据模型与展示逻辑 2026/10/1 22:01:15

Cyber Whale 公司档案解析:remoteintech.company 目录中欧洲远程友好型 SaaS 公司的数据模型与展示逻辑

数据集 【免费下载链接】remote-jobs Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies 项目地址: https://gitcode.com/GitHub_Trending/re/remote-jobs 点击查看 免费下载 Cyber Whale 是收录在 remotei…

阅读更多 →
微信聊天记录导出完整指南:3 步把几年的对话搬进自己的硬盘 2026/10/1 22:01:15

微信聊天记录导出完整指南:3 步把几年的对话搬进自己的硬盘

微信聊天记录导出完整指南:3 步把几年的对话搬进自己的硬盘 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/…

阅读更多 →
FastClick 移动端点击延迟消除方案:300ms 延迟原理、接入方式与源码实现解析 2026/10/1 22:01:14

FastClick 移动端点击延迟消除方案:300ms 延迟原理、接入方式与源码实现解析

前端移动开发 【免费下载链接】fastclick Polyfill to remove click delays on browsers with touch UIs 项目地址: https://gitcode.com/gh_mirrors/fa/fastclick 点击查看 免费下载 FastClick 是一个轻量级的前端 Polyfill,用于消除移动浏览器中"…

阅读更多 →
Nginx应用与运维——Nginx概述 2026/10/1 22:00:52

Nginx应用与运维——Nginx概述

Nginx概述1、Nginx的不同版本1.1、开源版Nginx1.2、商业版Nginx Plus1.3、分支版本Tengine1.4、扩展版本OpenResty2、Nginx源码架构浅析2.1、多进程模型2.1.1、信号2.1.2、频道2.1.3、共享内存2.1.4、进程调度2.1.5、事件驱动2.2、工作流机制2.2.1、HTTP请求处理阶段2.2.2、TCP…

阅读更多 →
让GPT当美术总监:用提示词定义3D游戏美术风格与决策流程 2026/10/1 22:00:45

让GPT当美术总监:用提示词定义3D游戏美术风格与决策流程

之前做一个小众的3D解谜项目,团队里没有专职美术,开发节奏又等不起外聘。玩法原型跑了两个月,美术方向还在“大家翻参考图翻到吵架”的阶段。我后来做了一个比较大胆的决定:让GPT来当这个项目的“美术总监”,专门负责定…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉