还剩58页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
深度学习导论欢迎来到深度学习世界!这门前沿技术正在改变我们的生活方式,从智能手机上的语音助手到医疗诊断系统,深度学习的应用无处不在在这门课程中,我们将系统地探索深度学习的理论基础、关键技术和实际应用无论您是初学者还是寻求提升的从业者,本课程都将为您提供全面而深入的知识和技能让我们一起踏上这段激动人心的学习之旅,探索人工智能的未来!课程目标与大纲掌握理论基础实践编程技能理解神经网络的基本原理、各类模型的数学基础及深度学学习使用PyTorch和TensorFlow等主流框架构建、训练习的核心算法和部署深度学习模型解决实际问题把握技术前沿通过案例学习应用深度学习解决计算机视觉、自然语言处了解深度学习最新研究进展及未来发展趋势,培养持续学理等领域的实际问题习能力什么是深度学习?深度学习是机器学习的一个子领域,它使用多层人工神经与传统机器学习不同,深度学习网络来模拟人脑的学习过程通过多层次的数据表示,深•能自动进行特征提取,无需人工设计特征度学习算法能够自动发现数据中的复杂模式和规律•随着数据量增加,性能持续提升•可以处理非结构化数据(图像、文本、音频等)深度学习之所以深,是因为其神经网络包含多个隐藏层•具有强大的表示学习能力,每一层都能学习数据的不同抽象级别的特征随着层数的增加,网络可以学习越来越复杂的概念深度学习、机器学习与人工智能的关系人工智能使机器模拟人类智能的广泛领域机器学习通过经验自动改进的AI子领域深度学习使用多层神经网络的机器学习方法人工智能是一个广泛的领域,旨在创建能够模拟人类智能的系统机器学习是人工智能的一个分支,专注于开发能够通过经验自动改进的算法而深度学习则是机器学习的一个特定子集,它使用多层神经网络从大量数据中学习复杂模式随着计算能力和数据量的增长,深度学习在近年来取得了突破性进展,成为推动人工智能发展的主要力量深度学习的发展历史1943-1958起源麦卡洛克和皮茨提出第一个神经元数学模型;罗森布拉特发明感知机1969-1980第一次低谷明斯基和派珀特的著作指出单层感知机的局限性,研究进入低谷1986-1990反向传播鲁梅尔哈特等人普及反向传播算法,解决多层网络训练问题2006-至今深度学习革命辛顿等人提出深度信念网络;GPU加速训练;大数据推动实际应用爆发深度学习的应用领域计算机视觉自然语言处理图像分类、目标检测、人脸识别、自动机器翻译、情感分析、问答系统、文本驾驶生成游戏与娱乐语音处理游戏AI、虚拟现实、内容推荐、创语音识别、语音合成、音乐生成、意生成音频分类医疗健康金融领域疾病诊断、药物研发、医学影像分析、股票预测、欺诈检测、风险评估、智能健康监测客服神经网络基础什么是人工神经网络?神经网络架构人工神经网络是受人脑神经系统启发而设计的计算模型典型的神经网络由三类层组成它由大量相互连接的处理单元(神经元)组成,能够通过
1.输入层接收外部数据学习来改进其性能
2.隐藏层对输入进行变换和特征提取神经网络的基本特性包括
3.输出层产生最终结果•并行分布式处理层与层之间通过带有权重的连接进行信息传递,这些权重•自适应学习能力在训练过程中不断调整,使网络能够学习复杂的数据模式•对噪声的鲁棒性•分层次的信息处理神经元模型感知机模型数学表达感知机是神经网络的基本单元,由罗神经元的输出可以表示为森布拉特于1958年提出它接收多个y=fΣw_i*x_i+b输入,每个输入都有一个相关的权重其中,x_i是输入,w_i是权重,b,然后通过激活函数产生输出是偏置,f是激活函数感知机的基本操作包括通过调整权重和偏置,神经元可以学
1.计算输入的加权和习不同的决策边界,从而实现各种分
2.添加偏置项类任务
3.通过激活函数处理结果局限性单个感知机只能学习线性可分的问题,无法解决简单的XOR问题这一局限性可以通过多层感知机(MLP)来克服,即将多个神经元按层组织,形成更复杂的网络结构激活函数函数双曲正切函数修正线性单元变体Sigmoid tanhReLU ReLU将输入映射到0,1区间,将输入映射到-1,1区间,最流行的激活函数,计算简Leaky ReLU、ELU、历史上常用但存在梯度消失具有零中心化特性,但仍存单,缓解梯度消失,但存在SELU等变体通过允许负值问题输出可解释为概率,在梯度消失问题通常比死亡ReLU问题fx=输入产生小的负值输出,解适用于二分类问题Sigmoid表现更好max0,x,负值输出为0决了死亡ReLU问题,提高了训练稳定性前向传播输入层接收数据网络接收原始输入数据,如图像的像素值或文本的词向量计算加权和每个神经元计算输入的加权和并加上偏置值应用激活函数使用非线性激活函数处理加权和,引入非线性变换生成输出信息层层传递直至输出层,产生最终预测结果前向传播是神经网络处理信息的基本机制,信息从输入层流向输出层,不断进行变换这一过程可以表示为一系列矩阵运算,使得计算能够高效并行化前向传播的结果与目标值之间的差异(即损失)将用于后续的反向传播过程,以调整网络参数反向传播算法计算损失对比网络输出与实际目标值,计算损失函数值,衡量预测误差计算输出层梯度计算损失函数相对于输出层神经元的梯度,表示误差对输出的敏感度反向传递误差利用链式法则,将梯度逐层向后传递,计算每层参数的梯度更新参数使用梯度下降等优化算法,根据计算出的梯度更新网络权重和偏置反向传播是深度学习中的核心算法,它高效地计算损失函数相对于网络参数的梯度该算法由鲁梅尔哈特等人于1986年提出,解决了多层神经网络训练的难题,为深度学习的发展奠定了基础反向传播的数学基础是链式法则,它允许我们通过层层计算偏导数,从而获得损失函数对每个参数的梯度损失函数损失函数类型适用场景数学表达式特点均方误差MSE回归问题MSE=1/n*Σy_i-ŷ_i²对异常值敏感交叉熵损失分类问题CE=-Σy_i*logŷ_i衡量概率分布差异Huber损失回归问题分段函数结合MSE和MAE优点铰链损失支持向量机max0,1-y*ŷ专注于决策边界损失函数是评估模型预测结果与真实标签之间差异的度量选择合适的损失函数对模型的训练至关重要,不同任务类型通常需要不同的损失函数好的损失函数应当具有数学上的可微性,这样才能计算梯度并用于模型优化此外,损失函数还需要能够准确反映任务的目标,比如在不平衡分类问题中,可能需要使用加权交叉熵损失优化算法梯度下降梯度下降原理梯度下降是深度学习中最基本的优化算法,其核心思想是沿着损失函数的负梯度方向调整参数,以达到最小化损失的目的在每一步迭代中,参数更新公式为θ=θ-η∇Jθ,其中η是学习率,∇Jθ是损失函数J关于参数θ的梯度梯度下降就像在山上寻找最低点一样每一步,我们都观察周围最陡的下降方向,然后向那个方向移动一小步通过不断重复这个过程,最终可以达到(局部)最低点学习率是梯度下降中的关键超参数学习率过大会导致收敛不稳定甚至发散;学习率过小则会导致收敛过慢实践中,通常采用学习率衰减策略,即随着训练的进行逐渐减小学习率批量梯度下降随机梯度下降vs批量梯度下降BGD随机梯度下降SGD使用整个训练集计算梯度并更新参数每次使用单个样本计算梯度并更新参数•优点梯度估计准确,收敛稳定•优点计算高效,有助于逃离局部最小值,适合在线学习•缺点计算成本高,内存需求大,容易陷入局部最小值•缺点梯度估计噪声大,收敛不稳定•适用小型数据集,凸优化问题•适用大型数据集,非凸优化问题小批量梯度下降MBGD使用小批量样本计算梯度并更新参数•优点平衡了BGD和SGD的优缺点,利于GPU加速•缺点需要调整批量大小•适用大多数深度学习应用,是最常用的方法学习率与动量学习率()η控制每次参数更新的步长学习率过大会导致震荡或发散,过小则收敛缓慢自适应学习率方法可以根据训练过程自动调整学习率,如学习率衰减、学习率调度器等动量(Momentum)在参数更新中加入历史梯度的累积效应,使优化过程更平滑、更快速动量法的更新公式v=γv-η∇Jθ,θ=θ+v,其中γ是动量系数,通常设为
0.9Nesterov加速梯度NAG动量的改进版,通过预先计算参数的近似未来位置来计算梯度,实现更精确的更新NAG在接近最小值时能更好地减速,避免过冲,提高收敛速度和稳定性过拟合与欠拟合欠拟合适当拟合过拟合模型过于简单,无法捕捉数据的复杂模模型复杂度适中,能够较好地捕捉数据模型过于复杂,记住了训练数据的噪式,在训练集和测试集上都表现不佳模式,在训练集和测试集上都有良好表声和特殊性,在训练集上表现极佳但在欠拟合的模型具有高偏差和低方差的特现这是我们追求的平衡状态测试集上表现不佳过拟合的模型具有点低偏差和高方差的特点偏差-方差权衡是机器学习中的核心概念高偏差模型倾向于欠拟合,难以捕捉数据的真实规律;高方差模型倾向于过拟合,对训练数据中的噪声过于敏感寻找平衡点是模型设计和训练的关键正则化方法L1正则化(Lasso)L2正则化(Ridge)在损失函数中添加参数绝对值之和的惩罚项促使许多参数变为精在损失函数中添加参数平方和的惩罚项使参数值更小但不为零,确的零,实现特征选择,产生稀疏模型防止任何特征具有过大的影响力数据增强早停(Early Stopping)通过对训练数据进行变换(如旋转、缩放、裁剪等)来人为增加训监控验证集性能,当性能不再改善时停止训练,避免过度拟合训练练样本,提高模型对变化的鲁棒性数据正则化是防止过拟合的重要技术,通过限制模型复杂度或引入额外约束来提高模型的泛化能力不同的正则化方法适用于不同的场景,往往需要通过交叉验证来选择最佳的正则化类型和强度丢弃法()DropoutDropout原理Dropout是神经网络中常用的正则化技术,由Hinton等人于2012年提出其核心思想是在训练过程中随机丢弃一部分神经元(即将其输出置为0),每个批次都随机选择不同的神经元进行丢弃Dropout可以被视为训练了多个不同网络的集成,每个网络使用参数的一个子集在测试阶段,使用完整网络但将权重按保留概率缩放Dropout通常应用于全连接层,丢弃率p是一个重要的超参数,通常设置为
0.2到
0.5之间值得注意的是,Dropout一般只在训练阶段使用,测试阶段会使用完整网络Dropout的优点包括减少神经元之间的共适应性,防止特征检测器过度专门化,提高模型的鲁棒性实验表明,Dropout可以显著减少过拟合,在各种任务上取得了良好效果批量归一化()Batch Normalization加速训练通过标准化每一层的输入分布,减轻了内部协变量偏移问题,使得可以使用更大的学习率,显著加快训练收敛速度正则化效果批量归一化具有隐式的正则化效果,因为每个训练样本的输出取决于批次中的其他样本,增加了一定的噪声减轻梯度问题通过标准化减轻了梯度消失和梯度爆炸问题,使得深层网络更容易训练,不那么依赖权重初始化方法批量归一化(BN)是由Sergey Ioffe和Christian Szegedy在2015年提出的,它在每个批次的数据上进行标准化处理,使每一层的输入分布保持相对稳定BN层通常位于线性变换和激活函数之间,包含可学习的缩放参数γ和偏移参数β,使网络能够恢复原始的表达能力BN在卷积神经网络中特别有效,已成为现代深度网络架构的标准组件在推理阶段,BN使用训练期间累积的移动平均值和方差,而不是批次统计卷积神经网络()简介CNN专为图像设计CNN是专门为处理网格结构数据(如图像)设计的深度学习架构局部连接与权重共享利用局部连接和权重共享显著减少参数数量,提高效率层级特征提取通过多层结构自动学习层次化特征表示,从简单边缘到复杂形状卷积神经网络(CNN)由Yann LeCun等人在20世纪90年代提出,是深度学习领域最成功的架构之一它受到视觉皮层组织结构的启发,通过学习空间层次特征来理解图像内容与传统全连接网络相比,CNN能够更好地利用图像的空间结构信息CNN在计算机视觉领域取得了突破性成就,包括图像分类、目标检测、图像分割、人脸识别等现代CNN架构如ResNet、DenseNet等已经达到或超过了人类在某些视觉任务上的表现的基本结构CNN输入层接收原始图像数据,通常表示为三维张量(高度×宽度×通道数)卷积层应用卷积滤波器提取特征,每个滤波器学习检测特定模式池化层下采样特征图以减少维度,提高计算效率和抽象能力全连接层整合提取的特征,执行最终的分类或回归任务CNN的每个卷积层包含多个学习的滤波器,这些滤波器在输入上滑动并计算卷积,生成特征图通过深层次堆叠,网络能够学习从低级(如边缘、纹理)到高级(如形状、物体部分)的视觉特征除了基本组件外,现代CNN还包含批量归一化层、残差连接、注意力机制等高级结构,以提高性能和训练稳定性CNN的设计遵循特征提取和分类的分离原则,使其成为端到端视觉识别的强大工具卷积层卷积操作原理卷积层是CNN的核心组件,它通过卷积操作提取空间特征卷积操作涉及一个小尺寸的滤波器(或称为卷积核)在输入特征图上滑动,计算每个位置上的点积,生成输出特征图卷积层的主要参数包括•滤波器数量决定输出特征图的通道数•滤波器大小常见如3×
3、5×5等•步幅(stride)滤波器每次移动的像素数•填充(padding)在输入周围添加像素的方式卷积层具有以下优点池化层最大池化Max Pooling平均池化Average Pooling带步幅的卷积从输入区域中选取最大值作为输出这种计算输入区域的平均值作为输出平均池现代网络中,有时使用带步幅的卷积替代操作保留了显著特征,适合提取纹理、边化保留了背景信息,适合提取整体特征池化层,实现下采样的同时也学习如何下缘等高频信息最大池化是CNN中最常用在某些任务中,全局平均池化常用于替代采样这种方法使得下采样过程也是可学的池化方式,尤其适合提取特征是否存在全连接层,减少参数量并防止过拟合习的,而不仅仅是固定的操作的情况池化层的主要目的是减少特征图的空间维度,降低计算复杂度,并在一定程度上提供对小位移的不变性池化操作通常使用2×2窗口和步幅2,这样可以将特征图的高度和宽度减半全连接层全连接层的功能参数量与计算全连接层位于CNN的末端,将前面各全连接层的参数数量通常很大例如,层提取的局部特征整合成全局特征表示如果上一层有1024个神经元,全连接每个全连接层的神经元都与上一层的层有512个神经元,则连接权重就有所有神经元相连接,因此称为全连接1024×512=524,288个,加上512个偏置参数全连接层主要负责执行高级推理任务,这种大量参数可能导致过拟合,因此全如分类或回归它利用提取的特征做出连接层通常配合使用Dropout等正则化最终决策,可看作是传统多层感知机的技术计算方式为简单的矩阵乘法加偏一部分置项现代趋势与替代方案在现代CNN设计中,全连接层逐渐被全局平均池化层所替代,以减少参数数量和过拟合风险近年来,一些研究表明,在某些任务上,完全移除全连接层并使用卷积层直到网络末端可以提高性能并保留空间信息,特别是在语义分割等密集预测任务中经典架构CNN LeNet-5输入层32×32灰度图像C1:卷积层6个5×5滤波器,步幅1S2:池化层2×2平均池化,步幅2C3:卷积层16个5×5滤波器S4:池化层2×2平均池化,步幅2C5:卷积层120个5×5滤波器F6:全连接层84个单元输出层10个类别LeNet-5是由Yann LeCun等人在1998年提出的早期卷积神经网络架构,最初用于手写数字识别尽管结构简单,只有约6万个参数,但它奠定了CNN的基本架构范式卷积层提取特征,池化层降维,最后使用全连接层分类LeNet-5使用sigmoid和tanh激活函数,而非现代网络中常用的ReLU尽管在现代标准下看似简单,但LeNet-5在当时是一个突破,证明了使用反向传播训练CNN的可行性,为后续深度学习研究铺平了道路经典架构CNN AlexNet突破性成就深层结构2012年ImageNet竞赛冠军,Top-58层架构(5个卷积层和3个全连接层错误率降至
15.3%,比第二名低
10.8),当时被认为非常深,参数量达个百分点,掀起深度学习革命6000万创新点设计特点首次大规模使用ReLU激活函数、使用重叠池化、局部响应归一化和数Dropout正则化和GPU并行训练,证据增强技术,引入多GPU训练策略明了深度模型的强大能力AlexNet由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton设计,在硬件限制下采用了双GPU设计,将网络分为两条路径它的成功标志着深度学习时代的真正开始,证明了深度卷积网络在视觉识别任务上的优越性,推动了计算机视觉领域的范式转变经典架构CNN VGGNet设计理念VGGNet由牛津大学Visual GeometryGroup于2014年提出,其核心理念是使用非常简单但深层的网络结构VGG的主要贡献是证明了网络深度对性能的关键影响VGG使用统一的小滤波器设计所有卷积层均使用3×3滤波器和1像素步幅,所有池化层均使用2×2窗口和2像素步幅这种统一结构使网络易于理解和实现VGG主要有两个版本•VGG16包含13个卷积层和3个全连接层•VGG19包含16个卷积层和3个全连接层尽管参数量庞大(约
1.38亿参数),VGG依然是特征提取的流行骨干网络,常用于迁移学习VGG的设计优势在于概念简单,清晰展示了增加深度如何提升性能,其缺点是计算成本高且参数量大VGG的架构设计思想对后续深度CNN设计有着深远影响,并成为许多计算机视觉应用的基准模型经典架构CNN GoogLeNetInception模块网络结构辅助分类器GoogLeNet的核心创新是引入了Inception GoogLeNet包含22层(深度为9个为解决深度网络的梯度消失问题,模块,它并行使用不同大小的卷积核(1×
1、Inception模块),但参数量仅有500万,远GoogLeNet在中间层添加了辅助分类器,在3×
3、5×5)和池化操作,然后将结果拼接少于AlexNet和VGG这种高效的参数利用训练时提供额外梯度这些分类器在推理阶这允许网络在不同尺度上同时学习特征使其成为移动设备等资源受限环境的理想选段被丢弃,不影响最终预测择GoogLeNet(也称为Inception v1)由Google团队在2014年提出,赢得了ILSVRC2014竞赛它展示了如何通过精心设计的网络架构,在不增加计算复杂度的情况下提高性能后续的Inception v
2、v
3、v4版本进一步改进了原始架构,增加了批量归一化等技术经典架构CNN ResNet残差连接ResNet的关键创新是残差块,通过添加跳跃连接(skip connection)直接将输入添加到输出这使得网络只需学习残差映射Fx=Hx-x,而不是直接学习Hx解决梯度消失跳跃连接为梯度提供了一条捷径,使其能够在反向传播过程中更容易流向浅层,有效缓解了深层网络中的梯度消失问题超深架构ResNet首次成功训练了超过100层的网络,包括ResNet-
50、ResNet-101和ResNet-152等变体实验证明,增加深度确实能提高性能影响力ResNet赢得ILSVRC2015竞赛,错误率低至
3.57%,超越人类水平它的设计理念被广泛应用于各种深度学习任务ResNet由微软研究院的何恺明等人于2015年提出,解决了深度网络训练的退化问题它证明了增加网络深度不一定会导致性能下降,关键在于如何设计网络结构残差学习的思想已成为现代深度网络设计的基石,激发了DenseNet、SENet等后续创新架构循环神经网络()简介RNN处理序列数据循环连接RNN专为处理序列数据设计,能捕捉时间通过循环连接保持内部记忆状态,将过去或序列依赖关系信息用于当前预测多种应用参数共享适用于自然语言处理、语音识别、时间序在所有时间步使用相同参数,有效减少模列预测等任务型复杂度循环神经网络本质上是一种包含循环的神经网络,它允许信息在网络中持续流动与前馈神经网络不同,RNN中的神经元可以使用自身的输出作为输入,形成了一种记忆机制,使网络能够记住之前看到的信息尽管基本RNN在捕捉短期依赖方面表现良好,但由于梯度消失和梯度爆炸问题,它在学习长期依赖方面存在困难这个问题促使了LSTM和GRU等改进型RNN结构的诞生的基本结构RNN单时间步计算在每个时间步t,RNN接收当前输入x_t和前一时间步的隐藏状态h_t-1,然后计算新的隐藏状态h_t h_t=tanhW_hx·x_t+W_hh·h_t-1+b_h其中,W_hx是输入到隐藏状态的权重矩阵,W_hh是隐藏状态到隐藏状态的权重矩阵,b_h是偏置项输出可以从隐藏状态派生y_t=W_hy·h_t+b_y时间展开RNN可以被展开为一个深度前馈网络,每一层对应一个时间步这种时间展开的视角帮助我们理解RNN如何通过时间传递信息,以及如何使用反向传播通过时间(BPTT)算法进行训练RNN有多种配置方式,适应不同的序列任务•一对多一个输入生成序列输出(如图像描述)•多对一序列输入生成单一输出(如情感分析)•多对多序列输入生成序列输出(如机器翻译)长短期记忆网络()LSTMLSTM单元结构三种门控机制信息流动控制LSTM引入了一个内部单元状态(cell LSTM使用三种门控单元调节信息流动LSTM的精妙之处在于它可以选择性地记住state)作为主要的信息传递途径,与普通或忘记信息通过门控机制,LSTM能够学•遗忘门决定丢弃哪些信息RNN只有一个隐藏状态不同这个单元状会保留长期记忆中的重要信息,同时在需要•输入门决定存储哪些新信息态可以被看作是一个传送带,信息可以在很时更新或使用这些信息,有效解决了普通长的序列中流动而不被改变•输出门决定输出哪些信息RNN的梯度消失问题LSTM由Hochreiter和Schmidhuber于1997年提出,是最成功的RNN变体之一,在语言建模、语音识别、机器翻译等序列处理任务中取得了显著成功尽管计算复杂度较高,但其处理长期依赖的能力使其成为处理复杂序列数据的首选模型门控循环单元()GRUGRU设计理念门控循环单元(GRU)是由Cho等人于2014年提出的LSTM简化版本GRU保留了LSTM处理长期依赖的能力,同时简化了内部结构,减少了参数数量和计算复杂度与LSTM使用单元状态和隐藏状态两个向量不同,GRU只使用一个隐藏状态向量传递信息GRU通过两个门控机制来控制信息流•更新门(Update Gate)决定保留多少过去的信息•重置门(Reset Gate)决定忽略多少过去的信息GRU的计算过程如下
1.计算更新门和重置门
2.生成候选隐藏状态
3.使用更新门融合当前和过去信息相比LSTM,GRU参数更少(约为LSTM的75%),训练速度更快,在许多任务上性能相当甚至更优序列到序列模型()Seq2Seq编码器处理输入序列,将其压缩为上下文向量上下文向量包含输入序列的语义表示,连接编解码器解码器基于上下文向量生成输出序列序列到序列(Seq2Seq)模型是一种端到端的深度学习架构,设计用于将一个序列转换为另一个序列,例如将英语句子翻译成中文句子该模型由Sutskever等人和Cho等人在2014年独立提出,已成为自然语言处理中的基础架构Seq2Seq的编码器和解码器通常使用RNN(特别是LSTM或GRU)实现编码器读取输入序列并生成固定维度的上下文向量,解码器则将这个向量展开为目标序列在实际应用中,基本Seq2Seq模型存在信息瓶颈问题,因为所有输入信息都被压缩到一个固定长度的向量中这个问题后来通过注意力机制得到了解决注意力机制选择性关注模拟人类注意力,只关注与当前任务相关的信息动态连接为编码器和解码器之间建立直接连接,缓解信息瓶颈权重分配根据相关性为输入序列的不同部分分配不同权重注意力机制由Bahdanau等人于2015年首次引入神经机器翻译,是解决Seq2Seq模型中固定长度上下文向量限制的创新方法它使解码器能够在生成每个输出时关注输入序列的不同部分,显著提高了长序列处理能力注意力的计算通常包括三个步骤计算注意力得分(如点积、加性注意力)、归一化得分(通常使用softmax)、计算上下文向量(输入的加权和)注意力机制不仅提高了性能,还增强了模型的可解释性,因为我们可以可视化模型在每一步关注的输入部分模型Transformer突破性创新Transformer模型由Google团队在2017年的论文Attention isAll YouNeed中提出,是深度学习领域的里程碑它完全抛弃了循环和卷积结构,仅基于注意力机制构建,实现了序列处理的并行化Transformer的核心组件包括•多头自注意力(Multi-Head Self-Attention)•位置编码(Positional Encoding)•前馈神经网络(Feed-Forward Network)•层归一化(Layer Normalization)•残差连接(Residual Connection)Transformer的主要优势
1.高度并行化,训练速度快
2.能有效处理长程依赖
3.模型具有极强的可扩展性
4.适用于大规模预训练Transformer已成为现代NLP的基础架构,催生了BERT、GPT、T5等众多强大模型它的影响力已超越NLP领域,在计算机视觉、语音处理、强化学习等多个领域都有应用这一架构的成功证明了注意力机制在序列建模中的强大能力,推动了深度学习研究的新方向模型简介BERT双向编码表示预训练与微调范式BERT(Bidirectional EncoderBERT引入了预训练+微调的范式,即先Representations fromTransformers)在大规模无标签文本上进行通用语言理解的是由Google AI团队于2018年提出的语言模预训练,然后在特定任务上进行微调这种型BERT的核心创新在于它是第一个深度方法极大降低了NLP任务的入门门槛双向预训练语言表示模型,能够同时考虑单BERT有两种规模词的左右上下文,获取更丰富的语义信息•BERT-Base12层,768维隐藏层,12BERT基于Transformer的编码器部分构建个注意力头,通过掩码语言模型(MLM)和下一句预•BERT-Large24层,1024维隐藏层测(NSP)两个任务进行预训练,16个注意力头应用与影响BERT在多项NLP任务上取得了突破性进展,包括问答、文本分类、命名实体识别等它的成功引发了预训练语言模型的研究热潮,影响了RoBERTa、ALBERT、DistilBERT等后续模型BERT的局限性在于它的双向性使其难以用于文本生成任务,这一问题由GPT等自回归模型解决生成对抗网络()基本原理GAN生成器Generator尝试创建逼真的假数据,目标是生成鉴别器无法区分的样本生成器接收随机噪声作为输入,通过多层神经网络将其转换为目标域的数据,如图像或文本鉴别器Discriminator尝试区分真实数据和生成的假数据,目标是正确分类输入样本的来源鉴别器实质上是一个二元分类器,判断样本是来自真实数据分布还是生成器创建的对抗训练生成器和鉴别器形成一个零和博弈,相互竞争提升能力这种对抗过程使得生成器不断改进,最终能够生成高质量、难以与真实数据区分的样本生成对抗网络(GAN)由Ian Goodfellow等人于2014年提出,是一种创新的生成模型框架GAN通过两个神经网络相互博弈的方式进行训练,这种训练方式被比喻为伪造者与鉴定专家的对抗伪造者(生成器)努力创造以假乱真的赝品,鉴定专家(鉴别器)则努力识别真品与赝品GAN训练面临的主要挑战包括模式崩溃(模型只生成有限几种样本)、训练不稳定(难以平衡两个网络的能力)和评估困难(缺乏客观指标)研究人员提出了多种改进版本,如DCGAN、WGAN、CycleGAN等,以解决这些问题的应用GAN生成对抗网络在各个领域展现出惊人的创造力,其应用范围非常广泛图像生成与编辑视频合成创建高清逼真的人脸、场景和艺术作品;照片风格转换;图像修复与补全;生成短视频;实现视频到视频的转换;人脸动作和表情迁移超分辨率重建数据增强与隐私保护科学研究生成合成训练数据;创建匿名但保留统计特性的数据集药物分子设计;模拟物理系统;生物医学图像合成强化学习基础环境智能体智能体交互的外部系统学习做出决策的实体状态环境和智能体的当前情况奖励动作评估动作好坏的信号智能体可以执行的操作强化学习(RL)是机器学习的一个重要分支,专注于如何让智能体在与环境交互中学习最优策略与监督学习不同,强化学习没有显式的标签数据,而是通过试错和奖励反馈来学习强化学习的目标是找到一个策略,使智能体能够获得最大的累积奖励强化学习的基本框架基于马尔可夫决策过程(MDP),包括状态空间、动作空间、转移概率和奖励函数智能体与环境的交互可以描述为智能体观察当前状态,选择一个动作,环境转移到新状态并给予奖励,循环往复深度强化学习深度强化学习结合深度学习和强化学习的强大方法深度神经网络用于表示策略或价值函数强化学习算法指导智能体与环境交互并学习深度强化学习(DRL)是将深度学习与强化学习相结合的领域,它使用深度神经网络来表示强化学习中的价值函数、策略或环境模型这种结合使得智能体能够在高维状态空间(如图像、视频)中学习,并处理复杂的决策问题深度强化学习的突破性成就包括AlphaGo击败世界围棋冠军,OpenAI Five在Dota2中战胜职业选手,以及机器人控制、自动驾驶等领域的进展这些成功表明DRL在处理复杂、高维度和序列决策问题上具有巨大潜力深度强化学习面临的挑战包括训练不稳定、样本效率低、难以探索和缺乏理论保证研究人员正在通过改进算法、引入先验知识和开发更高效的探索策略来解决这些问题学习与深度网络()Q QDQN学习基础深度网络()Q QDQNQ学习是一种无模型强化学习算法,目标是学习动作-价值当状态空间巨大或连续时,传统Q表变得不可行DQN使函数Qs,a,表示在状态s下执行动作a的长期期望回报用深度神经网络来近似Q函数,解决了这一问题DQN的算法通过不断更新Q值表来逼近最优动作-价值函数,更新关键创新包括公式为•经验回放存储和重用过去的经验,打破样本相关性Qs,a←Qs,a+α[r+γ·max_aQs,a-Qs,a]•目标网络使用单独的网络生成目标值,提高训练稳定性其中,α是学习率,γ是折扣因子,r是即时奖励,s是下一状态•端到端学习直接从原始像素输入学习控制策略2015年,DeepMind团队使用DQN在多种Atari游戏中实现了超人类表现,这被视为深度强化学习的里程碑DQN后来被多种算法改进,如Double DQN(减少值估计的过高估计)、Dueling DQN(分离状态价值和优势函数)、Rainbow(集成多种改进技术)等策略梯度方法直接策略优化与值函数方法不同,策略梯度方法直接参数化并优化策略函数πa|s,表示在状态s下选择动作a的概率通过计算策略梯度并沿着提高期望回报的方向更新参数基于梯度的学习策略梯度定理提供了期望回报关于策略参数的梯度表达式通过采样轨迹并使用蒙特卡洛方法估计梯度,然后使用随机梯度上升更新策略处理连续动作策略梯度方法自然支持连续动作空间,只需输出动作分布的参数(如高斯分布的均值和方差)这使其特别适合机器人控制等连续控制任务方差减少技术基线函数(如值函数)可用于减少梯度估计的方差,提高学习稳定性优势函数As,a通过减去状态值预期,进一步降低了方差常见的策略梯度算法包括REINFORCE(最基本的蒙特卡洛策略梯度方法)、Actor-Critic(结合策略和值函数学习)、TRPO(信任区域策略优化)和PPO(近端策略优化)其中PPO因其简单性和良好性能成为现代深度强化学习的流行选择深度学习框架简介PyTorch动态计算图张量操作自动微分PyTorch的核心优势是其动态计算图(define-PyTorch提供强大的张量库,支持GPU加速计算PyTorch的自动微分引擎(autograd)能够自by-run),使得代码调试、理解和修改更加直张量操作语法直观,类似NumPy,使得科学动计算任意计算图的梯度,这对实现复杂的神经观计算图是在运行时动态构建的,这与计算工作流程无缝过渡PyTorch张量可以与网络模型和自定义损失函数至关重要强大的TensorFlow早期的静态图设计形成鲜明对比NumPy数组轻松互换,便于与现有科学计算生autograd功能使实现新的网络架构和训练算法态系统集成变得简单PyTorch由Facebook AIResearch团队开发,自2017年发布以来迅速获得学术界和工业界的广泛采用它的设计理念是提供灵活、直观的API,使研究人员能够快速原型化和实验新想法PyTorch的生态系统包括TorchVision、TorchText等领域特定库,以及丰富的预训练模型和社区贡献基本操作PyTorch张量创建与操作自动微分import torch#创建需要梯度的张量x=torch.ones2,2,requires_grad=True#创建张量y=x+2x=torch.tensor[1,2,3]z=y*y*3y=torch.zeros3,4out=z.meanz=torch.rand2,3#反向传播#张量运算out.backwarda=x+10b=torch.matmuly,z.t#查看梯度c=torch.nn.functional.relua printx.grad#dout/dx#GPU支持if torch.cuda.is_available:device=torch.devicecudax_gpu=x.todevice保存与加载模型#保存模型torch.savemodel.state_dict,model.pth#加载模型model=MyModelmodel.load_state_dicttorch.loadmodel.pthmodel.eval使用构建神经网络PyTorch使用nn.Module创建CNN模型import torch.nn asnn classSimpleCNNnn.Module:import torch.nn.functional asF def__init__self:superSimpleCNN,self.__init__class SimpleNNnn.Module:self.conv1=nn.Conv2d1,32,3,1def__init__self:self.conv2=nn.Conv2d32,64,3,1superSimpleNN,self.__init__self.dropout=nn.Dropout2d
0.25self.fc1=nn.Linear784,128self.fc1=nn.Linear9216,128self.fc2=nn.Linear128,64self.fc2=nn.Linear128,10self.fc3=nn.Linear64,10def forwardself,x:def forwardself,x:x=self.conv1xx=x.view-1,784x=F.reluxx=F.reluself.fc1x x=self.conv2xx=F.reluself.fc2x x=F.reluxx=self.fc3x x=F.max_pool2dx,2return F.log_softmaxx,dim=1x=self.dropoutxx=torch.flattenx,1x=self.fc1xx=F.reluxx=self.fc2xreturn F.log_softmaxx,dim=1PyTorch的nn模块提供了构建神经网络所需的所有基本组件,包括线性层、卷积层、池化层、激活函数、损失函数等模型定义遵循面向对象的范式,通过继承nn.Module类并实现forward方法来创建自定义网络架构中的数据加载和预处理PyTorch使用Dataset和DataLoader使用DataLoaderfrom torch.utils.data importDataset,DataLoader#创建数据集实例from torchvisionimport transformstrain_dataset=MyDatasettrain_data,#自定义数据集train_labels,class MyDatasetDataset:transform=transformdef__init__self,data,labels,transform=None:self.data=dataself.labels=labels#创建数据加载器self.transform=transform train_loader=DataLoadertrain_dataset,def__len__self:batch_size=64,return lenself.data shuffle=True,num_workers=4def__getitem__self,idx:x=self.data[idx]y=self.labels[idx]#遍历数据批次for batch_idx,data,target inenumeratetrain_loader:if self.transform:#训练代码...x=self.transformx outputs=modeldataloss=criterionoutputs,targetreturn x,y loss.backwardoptimizer.step#数据变换transform=transforms.Compose[transforms.ToTensor,transforms.Normalize
0.5,,
0.5,]PyTorch的数据处理API提供了灵活的数据加载和预处理机制Dataset类表示数据集,DataLoader类处理批次创建、洗牌和并行加载torchvision、torchaudio和torchtext等库提供了常见数据集和特定领域的变换这种设计使数据预处理流程既灵活又高效,特别是在处理大型数据集时中的模型训练与评估PyTorch设置训练环境device=torch.devicecuda iftorch.cuda.is_available elsecpumodel=MyModel.todevicecriterion=nn.CrossEntropyLossoptimizer=optim.Adammodel.parameters,lr=
0.001训练循环def trainmodel,train_loader,optimizer,epoch:model.trainfor batch_idx,data,target inenumeratetrain_loader:data,target=data.todevice,target.todeviceoptimizer.zero_gradoutput=modeldataloss=criterionoutput,targetloss.backwardoptimizer.step评估模型def evaluatemodel,test_loader:model.evaltest_loss=0correct=0with torch.no_grad:for data,target intest_loader:data,target=data.todevice,target.todeviceoutput=modeldatatest_loss+=criterionoutput,target.itempred=output.argmaxdim=1,keepdim=Truecorrect+=pred.eqtarget.view_aspred.sum.itemreturn test_loss,correct/lentest_loader.dataset深度学习框架简介TensorFlow开源框架计算图Google开发的全栈机器学习平台,支持研究基于数据流图的编程模型,支持静态图和动态与生产部署图执行丰富生态跨平台部署TensorBoard可视化、TF Serving部署服务支持在各种设备上运行,从服务器到移动设备、TF Lite移动优化和IoT设备TensorFlow于2015年由Google开源,目前已成为最流行的深度学习框架之一它的名称来源于其核心数据结构张量(多维数组)和基于这些张量的数据流图TensorFlow
2.0在2019年发布,带来了重大改进,包括默认采用动态执行模式(Eager Execution)、简化API和改进的部署选项TensorFlow的设计理念是提供一个统一平台,支持从研究原型到大规模生产部署的全流程它的优势包括成熟的生产部署工具、卓越的分布式训练能力以及对各种硬件加速器的广泛支持基本操作TensorFlow张量操作自动微分保存与加载模型import tensorflowas tf#使用梯度带记录操作#保存整个模型x=tf.Variable[
1.0,
2.0,
3.0]model.savemy_model.h5#创建张量a=tf.constant[1,2,3]with tf.GradientTape astape:#仅保存权重b=tf.zeros[2,3]y=tf.reduce_sumtf.squarex model.save_weightsmodel_weights.hc=tf.random.normal[3,2]5#计算梯度#张量运算dy_dx=tape.gradienty,x#加载模型d=a+5printdy_dx.numpy#[
2.
4.
6.]from tensorflow.keras.models importe=tf.matmulc,b load_modelf=tf.nn.relud model=load_modelmy_model.h5#查看张量#加载权重printa.numpy#转换为NumPy数组model.load_weightsmodel_weights.hprinttf.reduce_sumb5使用构建神经网络TensorFlow使用Keras Sequential API使用Keras函数式APIfrom tensorflow.keras.models importSequential from tensorflow.keras.models importModelfrom tensorflow.keras.layers importDense,Flatten fromtensorflow.keras.layers importInput,Dense,concatenate#创建顺序模型#定义输入model=Sequential[input1=Inputshape=784,Flatteninput_shape=28,28,input2=Inputshape=10,Dense128,activation=relu,Dense64,activation=relu,#构建网络分支Dense10,activation=softmax x1=Dense64,activation=reluinput1]x2=Dense8,activation=reluinput2#编译模型#合并分支model.compile merged=concatenate[x1,x2]optimizer=adam,output=Dense1,activation=sigmoidmergedloss=sparse_categorical_crossentropy,metrics=[accuracy]#创建包含多个输入的模型model=Modelinputs=[input1,input2],outputs=output#查看模型结构#编译模型model.summary model.compileoptimizer=adam,loss=binary_crossentropyTensorFlow
2.x以Keras作为其高级API,提供了构建神经网络的简洁接口Keras支持三种主要的模型定义方式SequentialAPI(适用于线性堆叠层)、函数式API(适用于复杂网络拓扑)和子类化API(适用于需要自定义前向传播的情况)这些API使得从简单的多层感知机到复杂的多输入多输出模型都能轻松构建中的数据加载和预处理TensorFlowtf.data API数据增强从磁盘加载import tensorflowas tffromtensorflow.keras.preprocessing.image#从目录加载图像import ImageDataGeneratortrain_ds=#从张量创建数据集tf.keras.preprocessing.image_dataset_from_ddataset=#创建数据增强器irectorytf.data.Dataset.from_tensor_slices datagen=ImageDataGenerator path/to/data,features,labels rotation_range=20,validation_split=
0.2,width_shift_range=
0.2,subset=training,#应用变换height_shift_range=
0.2,seed=123,dataset=dataset.shufflebuffer_size=1000horizontal_flip=True,image_size=224,224,dataset=dataset.batch32zoom_range=
0.2,batch_size=32dataset=fill_mode=nearest dataset.prefetchtf.data.AUTOTUNE#数据集优化#遍历数据集#将增强应用到数据上train_ds=train_ds.cache.prefetchfor x,y indataset:train_generator=datagen.flow buffer_size=tf.data.AUTOTUNE#训练代码...x_train,y_train,batch_size=32中的模型训练与评估TensorFlow使用fit方法训练自定义训练循环#训练模型#定义损失函数和优化器history=model.fit loss_object=tf.keras.losses.SparseCategoricalCrossentropyx_train,y_train,optimizer=tf.keras.optimizers.Adambatch_size=32,epochs=10,#定义训练步骤validation_data=x_val,y_val,@tf.functioncallbacks=[def train_stepimages,labels:tf.keras.callbacks.EarlyStoppingpatience=3,with tf.GradientTape astape:tf.keras.callbacks.ModelCheckpoint predictions=modelimages,training=Truebest_model.h5,loss=loss_objectlabels,predictionssave_best_only=True,gradients=tape.gradientloss,model.trainable_variablestf.keras.callbacks.TensorBoardlog_dir=./logs optimizer.apply_gradients]zipgradients,model.trainable_variables#绘制训练历史train_losslossimport matplotlib.pyplot asplt train_accuracylabels,predictionsplt.plothistory.history[accuracy]#训练循环plt.plothistory.history[val_accuracy]for epochin rangeEPOCHS:plt.titleModel accuracyfor images,labels intrain_ds:plt.xlabelEpoch train_stepimages,labelsplt.ylabelAccuracyplt.legend[Train,Validation],loc=upper leftfor test_images,test_labels intest_ds:plt.show test_steptest_images,test_labels深度学习在计算机视觉中的应用图像分类目标检测识别图像中的主要对象或场景,如ResNet、EfficientNet等模型在定位并识别图像中的多个对象,YOLO、SSD、Faster R-CNN等算法实现实ImageNet数据集上取得突破性进展时检测图像分割图像生成与编辑像素级别的分类,U-Net、Mask R-CNN等模型用于医疗影像分析、自动驾使用GAN、扩散模型等创建、修改和增强图像,应用于艺术创作、内容生成驶等场景深度学习在自然语言处理中的应用机器翻译文本分类问答系统文本生成基于Transformer模型的神深度学习模型用于情感分析、从非结构化文本中提取答案的GPT等大型语言模型能生成连经机器翻译系统(如Google垃圾邮件过滤、内容标签等任系统,如医疗助手、法律顾问贯、自然的文本,用于撰写辅Translate)实现了接近人类务,企业利用这些技术分析客等专业领域应用这些系统能助、内容创作、对话系统等水平的翻译质量,支持100多户评论和社交媒体数据够理解复杂问题,从大量文档这些模型通过大规模语料预训种语言之间的互译这些系统BERT等预训练模型显著提高中定位相关信息,并生成准确练,掌握了语法规则、常识知能够处理上下文信息,生成流了分类准确率,能够理解上下、连贯的回答,改变了人机交识和上下文理解能力,能够生畅自然的翻译结果文和句子关系互方式成各种风格和主题的文本深度学习在语音识别中的应用端到端语音识别系统现代语音识别系统使用深度学习模型直接将语音信号转换为文本,无需传统的声学模型、发音词典和语言模型的复杂管道这些端到端系统通常基于深度RNN、LSTM或Transformer架构,能够捕捉语音信号的时间动态特性最先进的系统如Wav2Vec、HuBERT和Whisper采用自监督学习方法,从大量未标记语音数据中学习表示,然后在少量标记数据上微调,实现了跨语言、抗噪声的强大识别能力语音处理技术进展•语音增强使用深度学习模型去除背景噪声和混响•说话人分离从混合语音中分离出不同说话人的声音•语音合成基于深度学习的文本转语音系统,生成自然流畅的语音•多语言识别单一模型支持识别多种语言的语音•低资源语言迁移学习和元学习方法扩展到资源有限的语言深度学习在推荐系统中的应用用户表示学习深度学习模型能从用户行为历史、人口统计信息和社交数据中学习复杂的用户兴趣表示这些表示捕捉用户的短期和长期兴趣,并随着用户行为的变化而动态更新物品表示学习通过处理物品元数据、内容特征和交互模式,深度模型学习物品的低维表示例如,对于电影推荐,模型可以学习蕴含类型、导演风格和情感特征的表示用户-物品交互建模深度神经网络可以学习用户与物品之间的复杂非线性交互模式,超越传统的矩阵分解方法注意力机制和图神经网络进一步提高了模型捕捉细粒度交互的能力序列推荐基于RNN、LSTM和Transformer的模型能有效捕捉用户行为的时间动态性,根据用户的最近交互序列预测下一个可能的兴趣物品深度学习推荐系统已成为电子商务、社交媒体、音乐和视频流媒体平台的核心技术例如,YouTube的推荐系统使用深度神经网络处理用户观看历史,Amazon利用图神经网络捕捉产品间关系,Netflix则结合内容特征和协同过滤进行个性化推荐这些系统既提高了用户满意度,也显著增加了平台的用户参与度和收入深度学习的未来发展趋势自监督学习小样本学习利用未标记数据从数据本身创建监督信号,减少对大量标记数据的开发能够从少量样本快速泛化的算法,包括元学习和迁移学习方法依赖类似人类从环境中学习的方式,自监督学习允许模型通过预这些技术模拟人类从少量例子中快速学习的能力,对于资源有限测数据的部分来学习有用表示,已在NLP和计算机视觉中取得突破的领域和个性化应用至关重要神经架构搜索可解释性与公平性自动设计最优神经网络架构,取代人工设计过程使用强化学习或开发可理解、透明且无偏见的AI系统,满足监管要求和社会期望进化算法搜索最佳网络结构,已产生超越人工设计模型的架构,如随着AI在医疗、金融等高风险领域的应用,需要能够解释决策过程EfficientNet和MobileNetV3并确保公平对待不同群体的方法课程总结前沿应用计算机视觉、自然语言处理、语音识别、推荐系统等实际应用框架与工具PyTorch、TensorFlow等实用工具的掌握与应用高级模型CNN、RNN、LSTM、Transformer、GAN等复杂架构核心算法反向传播、优化方法、正则化技术等基础算法基础理论神经网络基本原理、数学基础和深度学习本质在这门课程中,我们从深度学习的基础概念出发,逐步深入到复杂模型结构、训练技术和实际应用通过理论学习和实践训练,您已经掌握了设计、实现和评估深度学习模型的能力,具备了解决现实世界复杂问题的技术基础深度学习是一个快速发展的领域,今天学到的知识只是起点持续学习、实践和跟踪最新研究是保持竞争力的关键希望这门课程激发您对人工智能的热情,并为您的职业或研究道路提供坚实基础参考资料与进一步学习经典教材在线课程学术资源实践平台《深度学习》(deeplearning.ai的深度学NIPS、ICML、ICLR、Kaggle提供竞赛和数据集,Goodfellow,Bengio,习专项课程和机器学习工CVPR等顶级会议的论文集是提升实战能力的绝佳平台Courville著)是该领域的经程师系列由Andrew Ng主是跟踪最新进展的窗口GitHub上的开源项目如典参考书,全面覆盖深度学讲,内容深入浅出Fast.ai arXiv.org上的预印本提供最PyTorch Examples、习的理论基础《动手学深的面向实践者的深度学习新研究成果Papers withTensorFlow Models提供度学习》(李沐等著)提供课程注重实用技能,适合快Code网站将论文与实现代码了高质量代码示例,可以学了理论和实践的结合,配有速应用关联,便于实践习最佳实践详细代码示例。
个人认证
优秀文档
获得点赞 0