版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器学习第七章神经网络1神经网络模型2多层神经网络3竞争学习和自组织特征映射网络第七章神经网络2生物神经元人工神经元(简称神经元)是神经网络的基本组成单元,它是对生物神经元的模拟、抽象和简化。现代神经生物学的研究表明,生物神经元是由细胞体、树突和轴突组成的。通常一个神经元包含一个细胞体和一条轴突,但有一个至多个树突。
7.1.1神经元3
7.1.1神经元4
7.1.1神经元5
7.1.1神经元6
7.1.1神经元7
7.1.1神经元8步数操作123重复第2步,直到没有误分类点
7.1.1神经元9神经网络神经元模型在神经网络中的画法单个神经元只能划分线性可分的二分类点。如果将神经元连接成神经网络,则处理能力会大为增强,这也是神经网络得到广泛应用的原因。7.1.2神经网络10用神经网络来模拟逻辑代数中的异或运算7.1.2神经网络11用神经网络来模拟逻辑代数中的异或运算7.1.2神经网络12层状神经网络理论上,可以通过将神经元的输出连接到另外神经元的输入而形成任意结构的神经网络,但目前应用较多的是层状结构层状结构由输入层、隐层和输出层构成,其中可以有多个隐层。从信息处理方向来看,神经网络分为前馈型和反馈型两类。前馈型网络的信息处理方向是从输入层到输出层逐层前向传递。7.1.2神经网络137.1.3分类、聚类、回归、标注任务的神经网络模型141神经网络模型2多层神经网络3竞争学习和自组织特征映射网络第七章神经网络15
7.2.1三层感知机的误差反向传播学习示例16
7.2.1三层感知机的误差反向传播学习示例17
7.2.1三层感知机的误差反向传播学习示例18
7.2.1三层感知机的误差反向传播学习示例19
7.2.1三层感知机的误差反向传播学习示例20
7.2.1三层感知机的误差反向传播学习示例21
7.2.1三层感知机的误差反向传播学习示例22
7.2.1三层感知机的误差反向传播学习示例23
7.2.1三层感知机的误差反向传播学习示例24
7.2.1三层感知机的误差反向传播学习示例25
7.2.1三层感知机的误差反向传播学习示例26
7.2.1三层感知机的误差反向传播学习示例27
7.2.1三层感知机的误差反向传播学习示例28
7.2.1三层感知机的误差反向传播学习示例29
7.2.1三层感知机的误差反向传播学习示例30
7.2.1三层感知机的误差反向传播学习示例31示例代码7.2.1三层感知机的误差反向传播学习示例32反向传播学习过程经过2000轮训练,每轮平均总误差由0.32降为0.008,能够准确地模拟异或运算,最后一轮的四个输出与相应标签值对比为:[0.071589040.92822515]→[0.1.],[0.91387340.08633152]→[1.0.],[0.913752590.08644981]→[1.0.],[0.117741770.88200493]→[0.1.]。可见,预测输出很接近实际标签值。7.2.1三层感知机的误差反向传播学习示例33
7.2.2BP算法34
7.2.2BP算法35
7.2.2BP算法36
7.2.2BP算法37
7.2.2BP算法38MNIST数据集MNIST数据集是一个手写体的数字图片集,来自美国国家标准与技术研究所。它包含训练集和测试集,由250个人手写的数字构成。训练集包含60000个样本,测试集包含10000个样本。每个样本包括一张图片和一个标签。每张图片由28×28个像素点构成,每个像素点用1个灰度值表示。标签是与图片对应的0到9的数字。7.2.2BP算法39手写体数字识别示例7.2.2BP算法40手写体数字识别示例7.2.2BP算法41拟合三次多项式示例用神经网络模型来拟合三次多项式。采用Tensorflow2.0框架来实现。7.2.2BP算法42不同网络结构拟合结果-Sigmoid激活函数,MSE,5000轮7.2.2BP算法437.2.2BP算法不同训练轮数拟合结果-Sigmoid激活函数,MSE,(1,5,5,1)44采用softplus激活函数的拟合结果-5000轮,MSE,(1,5,5,1)7.2.2BP算法45
7.2.3多层神经网络常用损失函数46
7.2.3多层神经网络常用损失函数47
7.2.3多层神经网络常用损失函数48
7.2.3多层神经网络常用损失函数49
7.2.4多层神经网络常用优化算法50
7.2.4多层神经网络常用优化算法51
7.2.4多层神经网络常用优化算法52
7.2.4多层神经网络常用优化算法53
7.2.4多层神经网络常用优化算法54
7.2.4多层神经网络常用优化算法55
7.2.4多层神经网络常用优化算法56
7.2.4多层神经网络常用优化算法57多层神经网络中的过拟合减少模型规模(减少多层神经网络的层数和节点数)和增加训练样本数量是防止过拟合的重要方法。本小节讨论抑制过拟合的正则化、早停和Dropout等方法在多层神经网络中的应用。7.2.5多层神经网络中过拟合的抑制581.正则化方法的应用7.2.5多层神经网络中过拟合的抑制592.早停法的应用7.2.5多层神经网络中过拟合的抑制603.Dropout法的应用7.2.5多层神经网络中过拟合的抑制611.局部收敛BP神经网络不一定收敛,也就是说,网络的训练不一定成功。误差的平方是非凸函数,BP神经网络是否收敛或者能否收敛到全局最优,与初始值有关。2.梯度消散和梯度爆炸在校对误差反向传播的过程中,如果偏导数较小,在多次连乘之后,校对误差会趋近于0,导致梯度也趋近于0,前面层的参数无法有效更新,称之为梯度消散。梯度消散会使得增加再多的层也无法提高效果,甚至反而会降低。相反,如果偏导数较大,则会在反向传播的过程中呈指数级增长,导致溢出,无法计算,网络不稳定,称之为梯度爆炸。7.2.6进一步讨论62目前,神经网络在日常生活中有着广泛的应用,发挥着重要的作用。神经网络的安全问题也随之引起人们的关注。
神经网络的安全包括内部“投毒”和外部“攻击”两个方面。外部攻击主要是指通过研究模型的脆弱性,生成可以愚弄模型的“对抗样本”,使得模型判断错误。
内部“投毒”是指内部人员在训练样本集中掺入有误导作用的样本,使得训练出来的模型对某类样本大概率作出某类错误的判断,从而使得模型存在“后门”。神经网络的安全与诚实守信的社会主义职业道德63
社会主义职业道德是社会主义社会各行各业的劳动者在职业活动中必须共同遵守的基本行为准则。它是判断人们职业行为优劣的具体标准,也是社会主义道德在职业生活中的反映。诚实守信是做人的基本准则,也是社会道德和职业道德的一个基本规范。诚实就是表里如一,说老实话,办老实事,做老实人。守信就是信守诺言,讲信誉,重信用,忠实履行自己承担的义务。诚实守信是各行各业的行为准则,也是做人做事的基本准则,是社会主义最基本的道德规范之一。神经网络的安全与诚实守信的社会主义职业道德641神经网络模型2多层神经网络3竞争学习和自组织特征映射网络第七章神经网络65示例说明从kmeans算法实例的样本集中取出四个样本来进行竞争学习举例,它们分别是:[-2.92514764,11.0884457],[4.99694961,1.98673206],[3.8665841,-1.75282591],[2.62642744,22.08897582],在平面上的分布如所示。可见四个点大致分成两个簇。7.3.1竞争学习66
7.3.1竞争学习67上面四个样本正则化后为:[-0.255,0.967],[0.929,0.369],[0.911,-0.413],[0.118,0.993],编号分别为0到3。在圆上取两个点[-1,0]和[1,0]作为两个簇的代表。学习过程1)分别计算与两个簇点的欧氏距离,为1.22和1.58。称距离最近的簇点为“胜者”,此次学习的胜者为簇点0。7.3.1竞争学习68
学习过程7.3.1竞争学习69学习过程7.3.1竞争学习70网络结构竞争层神经元的排列有多种形式,如一维线阵、二维平面阵和三维栅格阵等等,虚线表示侧抑制关系。输入层与输出层是全连接关系。与BP神经网络不同的是,这些连接只负责将数据传递到上层,而没有所谓的连接系数,或者说所有的连接系数都为1,且不可调整。7.3.2自组织特征映射网络的结构与学习71训练过程对某一输入样本向量:1)决定胜者。将样本向量从输入层输入,计算它与输出层每一个节点代表的权值的距离,距离最小的输出节点为胜者。2)调整权值。在SOM网络中,不仅调整胜者,还要调整邻近的节点,因此,要定义一个胜者邻域。该邻域以胜者为中心设定一个半径,对覆盖范围内的输出节点的权值进行调整。一般来说都是使它们向输入的样本向量靠近,调整的幅度根据与胜者的距离远近有关。邻域半径一般会设计成随着训练轮数的增加而减少。对调整过的权值要重新进行归一化。将所有样本依次输入网络对权值进行上述调整,可进行多轮。结束的条件一般为达到最大轮数,或者权值的调整幅度小于指定的阈值。7.3.2自组织特征映射网络的结构与学习72谢谢LOGO机器学习第八章深度学习1概述2卷积神经网络3循环神经网络第八章深度学习75用本章之前讨论的各种机器学习方法(包括传统的神经网络)来解决分类、回归、标注和聚类等问题,都是“人工提取特征+模型”的套路。也就是说,需要事先通过特征工程来提取合适的特征,而这并不容易,尤其是在图像、文本、语音等领域存在很大困难,难以推广。正是以神经网络为基础的深度学习为特征提取问题提供了有效的解决方法之后,机器学习才得以异军突起,得到广泛应用。人们认识到神经网络的层数越多,处理复杂问题的能力就越强。尽管BP算法开创了多层神经网络的学习之路,但随之而来的梯度消散问题又成了拦路虎。2006年,GeofferyHinto提出了“深度信念网络”,有效缓解了BP算法导致的梯度消散问题。8.1概述76此后,其它的缓解梯度消散问题的优化技术和相关学习方法,如合理的激活函数、正则化、批标准化(BatchNormalization)、深度残差网络(DeepResidualNetwork)等,开始不断出现,神经网络的层次越来越多,处理问题的能力也越来越强。在2012年的ImageNet竞赛上,Hinton和他的学生用多层的卷积神经网络在图像分类竞赛中取得了显著提高的成绩。此后,深度学习无论在学术上还是工业上都进入了爆发式地发展时期。当然,深度学习的兴起与大数据和高性能计算平台的发展也有直接相关关系。训练深度神经网络需要大量的样本数据,训练耗时也大大增加。大数据技术的发展为深度神经网络的训练提供了大量的“燃料”,而以GPU技术与代表的高性能计算平台的发展,为深度神经网络的训练提供了高速的“引擎”。8.1概述77深度学习带来的革命性的变化是弥合了从低层的具体数据与高层的抽象概念之间的鸿沟,使得学习过程可以自动地从海量的数据中学习特征,不再需要过多的人工干预,实现了所谓的端到端(endtoend)学习。深度学习在机器视觉、语音识别、自然语言处理、推荐系统和数据挖掘等领域都取得了突破性的进展。深度学习技术是解决这些领域问题的有力工具。深度学习并不特指某个算法,而是一类神经网络学习的统称,它们的典型特点是摆脱了人工提取特征的束缚。学习深度学习的最好的方法是结合待解决的问题去学习相关最新论文。卷积神经网络和循环神经网络是深度学习中的两个主要研究和应用模型,后文将重点讨论它们的基本组成结构,以及梯度消散等基础问题。8.1概述781概述2卷积神经网络3循环神经网络第八章深度学习79手写体识别示例简易的卷积神经网络只需2轮训练就可以轻松达到0.9899的识别率。卷积层和池化层是卷积神经网络的核心组成,它们和全连接层可以组合成很深层次的网络。卷积神经网络还可以按需要添加用来抑制过拟合的Dropout层、拉平多维数据的Flatten层、加快收敛和抑制梯度消散的BatchNormalization层等等。8.2.1卷积神经网络示例80示例中卷积层的输入是:input_shape=(28,28,1),是图片数据组成的多维数据,称为张量(tensor)。一张图片除了有表示像素位置的数据外,还要有表示色彩的数据,称为通道(channel)。用RGB三色模式来表示的图片有红、绿、兰3个通道,意思是每个像素点的颜色分别用代表红、绿、兰3种颜色的亮度数据来表示,三原色合成丰富的色彩。MNIST图片中,只有一种颜色,通常称灰色亮度,因此只有1个通道。MNIST图片的维度是(28,28,1),前面两个存储28×28个像素点的坐标位置,后面的1维表示每个像素点的灰色亮度值。8.2.2卷积层818.2.2卷积层82虽然要扫描整个输入层,但一个通道只有一个卷积核,因此,对于整个输入层来说,前向传递计算时的参数是一样的,这称为参数共享(parametersharing)。参数共享大大减少了需要学习的参数的数量。8.2.2卷积层83在卷积运算中,一般会设置多个卷积核。示例中设置了32个卷积核(TensorFlow中称为过滤器filters),因此该卷积层的输出为24×24×32,也就是说将28×28×1的数据变成了24×24×32的,在画神经网络结构图时,一般用下图中的长方体来表示上述卷积运算,水平方向长度示意卷积核的数量。8.2.2卷积层84如果待处理张量规模很大,可以将卷积核由依次移动改为跳跃移动,即加大步长(strides),减少计算量,加快训练速度。为了提取到边缘的特征,可以在待处理张量的边缘填充0再进行卷积运算,称为零填充(zero-padding)。填充也可以根据就近的值进行填充。边缘填充的另一个用途是在张量与卷积核不匹配时,通过填充使之匹配,从而卷积核能扫描到所有数据。8.2.2卷积层85池化(pooling)层一般跟在卷积层之后,用于压缩数据和参数的数量。池化操作也叫下采样(sub-sampling),具体过程与卷积层基本相同,只不过卷积核只取对应位置的最大值或平均值,分别称为最大池化或平均池化。池化层的移动方式与卷积层不同,它是不重叠地移动。Flatten层很简单,只是将输入的多维数据拉成一维的,直观上可理解为将数据“压平”。8.2.3池化层和Flatten层86
8.2.4批标准化层871.VGG-16,VGG-198.2.5典型卷积神经网络881.VGG-16,VGG-198.2.6典型卷积神经网络892.残差网络残差网络(ResNet)提出了抑制退化和梯度消散,加速训练收敛的方法,克服了层数多导致的收敛慢、甚至无法收敛的问题,使网络的层数得以持续增加。8.2.6典型卷积神经网络902.残差网络8.2.6典型卷积神经网络911概述2卷积神经网络3循环神经网络第八章深度学习92循环神经网络(RecurrentNeuralNetwork,RNN)是用于对序列的非线性特征进行学习的深度神经网络。循环神经网络的输入是有前后关联关系的序列。循环神经网络可以用来解决与序列有关的问题,如序列回归、序列分类和序列标注等任务。序列的回归问题,如气温、股票价格的预测问题,它的输入是前几个气温、股票价格的值,输出的是连续的预测值。序列的分类问题,如影评的正负面分类、垃圾邮件的检测,它的输入是影评和邮件的文本,输出的是预定的有限的离散的标签值。序列的标注问题,如自然语言处理中的中文分词和词性标注,循环神经网络可处理传统机器学习中的隐马尔可夫模型、条件随机场等模型胜任的标注任务。8.3循环神经网络93类似隐马尔可夫链,把循环神经网络基本结构的中间部分称为隐层,向量s标记了隐层的状态。隐层的输出有两个,一个是y,另一个反馈到自身。到自身的反馈将与下一步的输入共同改变隐层的状态s。因此,隐层的输入也有两个,分别是当前输入x和来自自身的反馈(首步没有来自自身的反馈)。8.3.1基本单元94
8.3.1基本单元95
8.3.1基本单元96onetomany结构是单输入多输出的结构,可用于输入图片给出文字说明。manytoone结构是多输入单输出的结构,可用于文本分类任务,如影评情感分类、垃圾邮件分类等。manytomanydelay结构也是多输入多输出的结构,但它是有延迟的输出,该结构常用于机器翻译,机器问答等。8.3.2网络结构97示例示例是对三角函数的值进行预测,先对sin三角函数值顺序采点,然后用一段值序列来预测紧接的第1个值。基本结构采用了TensorFlow中Keras的SimpleRNN,它实现了RNN基本单元。它的输入有两个重要的参数:units和input_shape。units是设定该单元的状态向量s的维数,它的大小决定了W矩阵的维度。input_shape设定了输入的序列的长度和每个序列元素的特征数,每个序列元素的特征数和units共同决定了U矩阵的维度。输入序列的长度决定了SimpleRNN的循环步数,在最后一步,将状态向量s输出到一个全连接层,该连接层输出为1维的预测值,因此V矩阵的维度是units×1。8.3.2网络结构98示例在示例中,输入和输出都是一维的标量,实际上也可以是多维的向量。如,不仅要预测序列后的第1个值,还要预测序列后的第2个值,那么输出的就是一个二维的向量。8.3.2网络结构99长期依赖问题以基本单元为基础构建的循环神经网络具备记忆性,虽然能够处理有关联的序列数据问题,但是因为梯度消散和爆炸问题的存在,不能有效利用间距过长的信息,效果有限,称之为长期依赖(Long-TermDependencies)问题。长短时记忆网络是在普通循环神经网络基本单元的基础上,在隐层各单元间传递时通过几个可控门(遗忘门、输入门、候选门、输出门),控制之前信息和当前信息的记忆和遗忘程度,从而使循环神经网络具备了长期记忆功能,能够利用间距很长的信息来解决当前问题。8.3.3长短时记忆网络100
8.3.3长短时记忆网络101
8.3.3长短时记忆网络102
8.3.3长短时记忆网络103双向循环神经网络8.3.4
双向循环神经网络和深度循环神经网络104深度循环神经网络8.3.4
双向循环神经网络和深度循环神经网络105中文分词是将中文句子分解成有独立含义的字或词,如“我爱自然语言处理”可分解成“我爱自然语言处理”或“我爱自然语言处理”。标注分词方法给句子中的每个字标记一个能区分词的标签,如SBME四标注法中,“S”表示是该字是单字,“B”表示该字是一个词的首字,“M”表示该字是一个词的中间字,“E”表示该字是一个词的结尾字。8.3.5
序列标注示例1061)提取训练语料中的所有字,形成字典该步的主要目的是给训练语料中用到的字进行编号。2)将语料中的句子转化为训练样本模型对每个输入训练样本的长度要求一致,因此,可以指定一个固定长度,过长的句子应截断后面过长的部分。过短的句子在后面填充0,并指定一个新的标签“X”与之对应。通过字典将句子的汉字序列转换为数字序列。标签用独热编码表示。3)搭建模型进行训练采用深度双向循环神经网络模型。4)利用训练好的模型进行分词先要将待分词的句子转换成适合模型输入的形式,再用模型进行分词。8.3.5
序列标注示例1072020年初,一场突如其来的新冠肺炎疫情,打乱了人们迎接新春的脚步。此次疫情是新中国成立以来,我国遭遇的传播速度最快、感染范围最广、防控难度最大的重大突发公共卫生事件。我们用1个多月的时间初步遏制疫情蔓延势头,用2个月左右的时间将本土每日新增病例控制在个位数以内,用3个月左右的时间取得武汉保卫战、湖北保卫战的决定性成果,进而又接连打了几场局部地区聚集性疫情歼灭战,夺取了全国抗疫斗争重大战略成果,写下了人类抗击疫情史上艰苦卓绝、气壮山河的篇章。选用新闻稿中的“央视快评:在防控第一线考察识别评价使用干部”一句作为本次分词实验的测试样本,其分词结果为:“央视快评:在防控第一线考察识别评价使用干部”。8.3.5
序列标注示例108第2行是词向量层。所谓词向量可以简单地理解为用指定维度的向量来对汉字进行编码。在本示例中,用一个的64维向量来表示一个汉字。词向量各维度的值是要学习的参数,假设有4684个汉字,每个汉字用64维的向量来表示,则词向量层需要学习的参数共4684×64=299776个。8.3.5
序列标注示例109谢谢LOGO机器学习第九章生成对抗网络生成对抗网络生成对抗网络(GenerativeAdversarialNetwork,GAN)是一类包含了深度神经网络的用于生成样本的模型的统称。
与其它神经网络一样,生成对抗网络也要学习样本中蕴含的数据分布知识。
与其它神经网络不一样,它不是用来预测而是用来生成,即生成新的可以“以假乱真”的样本。GAN在图像生成、图像处理、序列数据生成、半监督学习、对象检测、语音合成、视频合成、对抗样本和信息隐藏等领域都有重要应用。9.1生成对抗网络框架9.2反卷积与图像生成9.3在图像处理领域的典型应用第九章生成对抗网络GAN主要由一个生成器和一个判别器组成。生成器用来生成新的样本,这些样本不是真实的样本,称之为假样本(fakesample)。而来自真实样本集中的样本是真实的,称之为真样本(realsample)。生成足够“真”的假样本,是GAN的目标,比如,在常用的图像生成应用中,就是生成一幅与目标图像风格相似的“难以区分”的假图像。9.1生成对抗网络框架114生成器一般采用神经网络,它的输入是由随机数组成的向量。生成器的作用就是将随机数向量映射到假样本。判别器一般也采用神经网络,它的输入是真样本和假样本。判别器的作用是区分出真样本和假样本。因此,它是一个二分类器。生成器和判别器之间是相互对抗的关系。生成器要生成使判别器出错的假样本,而判别器要尽量识别出假样本。GAN的训练也是一个迭代的过程。在每一轮迭代中,分别优化判别器网络的参数和生成器网络的参数。在优化判别器网络的参数时,要固定生成器网络的参数。在优化生成器网络的参数时,要固定判别器网络的参数。9.1生成对抗网络框架115说明GAN框架的结构和运行过程的简单示例生成器和判别器都采用全连接层神经网络。样本的特征的维数为2,因此,可以将样本看成平面上的点。真样本采样自平面上以(5,5)为中心的正方形区域。输入生成器的随机数向量(示例采用2维向量,也可以采用更高维的向量)采样自原点(0,0)为中心的正方形区域。9.1生成对抗网络框架116假样本集的中心从原点(0,0)附近经过曲折的移动,逐渐靠近真样本集的中心(5,5)。说明生成器逐步学习到了真实样本的分布规律,生成的假样本具有真样本的特征了。通过notebook课堂演示示例,并解释代码。
9.1生成对抗网络框架117
9.1生成对抗网络框架118在训练过程中,先是利用生成器生成假样本与真实样本一起训练判别器,然后再固定判别器来训练生成器。通过精心设计的损失函数,使得生成器和判别器的训练目标是完全对抗的,生成器要生成假样本迷惑判别器,而判别器则要分清哪些是假样本、哪些是真样本。在首次提出生成对抗网络的论文中,将这种尽力让对手得到最小回报的对抗网络的问题归结为两方极小极大博弈问题(two-playerminimaxgame)。生成对抗网络正是在这种对抗中,通过多轮迭代训练,使生成器逐渐学到了真实样本的分布,生成了让判别器难以区分的样本。9.1生成对抗网络框架119利用MNIST数据集进行生成数字图像实验9.1生成对抗网络框架1209.1生成对抗网络框架9.2反卷积与图像生成9.3在图像处理领域的典型应用第九章生成对抗网络上采样生成器的作用就是将随机数向量映射为假样本。在实际应用中,假样本往往是高维度的,例如在图像生成时的图像数据,在音乐生成时的音乐数据,等等。因此,生成器实际上是将低维度的向量转化为高维度的张量。与把用来减少数据数量的池化操作称为“下采样”一样,通常将这种扩张数据数量的操作称为“上采样(up-sampling)”。实现上采样的常用方法还有插值、反池化和反卷积等。9.2反卷积与图像生成122反卷积运算普通的卷积运算通常是将高维度的数据转化为低维度的数据。在GAN中,生成器常采用一种被称为“反卷积(deconvolution)”的运算来实现将低维度的数据转化为高维度的数据。与插值和反池化不同,反卷积运算的模型中的参数值不是事先确定的,而是要通过学习得到。9.2反卷积与图像生成123反卷积运算1.卷积核移动步长为1的卷积运算的反卷积运算卷积运算示例(第八章)9.2反卷积与图像生成124反卷积运算1.卷积核移动步长为1的卷积运算的反卷积运算9.2反卷积与图像生成125对应的反卷积运算示例新示例可以看作原示例的逆向操作,它将原来的输出张量作为输入张量,经过与卷积核的运算得到与原输入张量形状相同的输出张量。要注意的是,反卷积并不能完全恢复原来有信息,它得到的输出张量只是在形状上与原输入张量相同,而内容一般是不一样的。
9.2反卷积与图像生成126
9.2反卷积与图像生成127
9.2反卷积与图像生成128
9.2反卷积与图像生成129
9.2反卷积与图像生成130
9.2反卷积与图像生成131反卷积运算1.卷积核移动步长为1的卷积运算的反卷积运算另外一种转化为步长为1的卷积运算的方式:该方式中,先要将卷积核反转(注意不是转置,而是上下、左右对称交换位置)。为了使卷积操作后的输出张量达到4×4的形状,需要对2×2的输入张量在各个方向上进行2层零填充,达到6×6的形状。将卷积核反转后,并对输入张量进行填充后,再进行正常的步长为1卷积运算。可见两种方式的反卷积运算的输出结果相同。9.2反卷积与图像生成132
9.2反卷积与图像生成133
9.2反卷积与图像生成134在这种移动元素的方式中,将右边的元素向右边依次移动,中间空出来位置用0补空。对应卷积操作中卷积核的移动,也将这儿的元素移动次数称为“步长(strides)”,其值为补空的0元素的个数加1。示例元素移动的步长为5,记为s=5。
9.2反卷积与图像生成135
9.2反卷积与图像生成136
9.2反卷积与图像生成137
9.2反卷积与图像生成138
9.2反卷积与图像生成139
9.2反卷积与图像生成140
9.2反卷积与图像生成141
9.2反卷积与图像生成142
9.2反卷积与图像生成143
9.2反卷积与图像生成144DCGAN使用反卷积运算来实现利用MNIST数据集生成数字图像实现反卷积运算的网络层由tf.keras.layers.Conv2DTranspose()实现。在应用该函数时要注意其输出张量的形状,计算公式如下:反卷积运算的输入为7×7×256。该反卷积运算的卷积核的数量是128,卷积核的大小是5,移动步长是1,采用same填充,因此,其输出张量大小为7×7×128。9.2反卷积与图像生成145通过notebook课堂演示示例,并解释代码。DCGAN9.2反卷积与图像生成146DCGANDCGAN的生成器模型该生成器使用了4个反卷积层,使4×4大小的张量逐步扩张到8×8、16×16、32×32、64×64。9.2反卷积与图像生成147DCGAN基于CIFAR-10数据集的彩色图像生成实验9.2反卷积与图像生成1489.1生成对抗网络框架9.2反卷积与图像生成9.3在图像处理领域的典型应用第九章生成对抗网络有条件生成样本前述的GAN和DCGAN生成的样本是随机的,无法生成指定类别(标签)的样本,应用范围有限。条件生成对抗网络cGAN(ConditionalGenerativeAdversarialNets)实现了按指定标签生成对应类别的样本。cGAN的基本思想是在模型中加入类别信息,通过类别信息来“有监督地”生成样本和训练模型,即在生成时指定要生成的假样本的标签、在判别时将样本及其标签看成一个整体来判断是真实的还是假造的。指定的标签也称为条件,条件生成对抗网络就是实现了按条件生成样本的网络。9.3在图像处理中的典型应用150有条件生成样本对比GAN的基本组成,cGAN的组成如下所。实现cGAN的重点在于如何将样本及其标签信息一起输入模型中。对于这个问题,提出了多种解决方法。下面用一个示例来说明在图像生成领域通常采用的方法。9.3在图像处理中的典型应用151有条件生成样本Fashion-MNIST数据集是包含了10个类别的图像的灰度图片数据集。每张图像的像素大小为28×28,训练集有60000个样本,测试集有10000个样本。9.3在图像处理中的典型应用152通过notebook课堂演示示例,并解释代码。有条件生成样本
第1轮训练后生成的图片
第10轮训练后生成的图片9.3在图像处理中的典型应用153有条件生成样本
第50轮训练后生成的图片9.3在图像处理中的典型应用154图像转换pix2pix和CycleGAN在黑白照片上色、图像风格迁移、照片自动滤镜、人像自动美颜等众多图像转换应用中都取得了不错的效果。实际上,这两个模型是由同一研究团队先后提出,它们在结构上有许多相同的地方。与前面介绍的生成对抗网络不同,pix2pix网络和CycleGAN网络不是从随机数出发产生新图像,而是从一张图像出发产生一张新图像。根据应用的目标不同,产生的新图像与原图像相比,或者风格不同,或者颜色不同,或者修改了局部,等等。9.3在图像处理中的典型应用155图像转换在训练时,输入pix2pix网络和CycleGAN网络的训练样本,是由两类不同风格的图片组成。pix2pix模型要求训练样本是成对的数据,而CycleGAN模型无此要求,只需要相似即可。例如,当希望将白天照片转换为夜晚照片时,pix2pix模型要求样本是在同一地点拍摄的白天和晚上的成对照片,而CycleGAN模型只要求是白天拍摄的和晚上拍摄的照片即可,不必满足对应关系。9.3在图像处理中的典型应用156
9.3在图像处理中的典型应用157图像转换采用马和斑马图像风格转换的示例来讨论CycleGAN模型,该示例的训练样本和生成图像效果示意如下图所示,两组图分别是从马到斑马和从斑马到马的图像风格转换示意图。9.3在图像处理中的典型应用158
9.3在图像处理中的典型应用159图像转换2.生成器网络CycleGAN和pix2pix中的生成器采用Encoder-Decoder结构或U-net结构。数据的处理方向是从左往右,图中长方形代表神经网络的一层,其长度示意了数据的形状。可见数据的形状在生成器网络中经历了从大到小,再从小到大的过程,其中,左边的层实现了下采样,右边的层实现了上采样,中间形状最小的层称为瓶颈层(bottlenecklayer)。左边下采样层一般包含了卷积、实例标准化(InstanceNormalization)和ReLu激活等子层。右边上采样层一般包含了反卷积、实例标准化和ReLu激活等子层。中间的瓶颈层一般采用残差网络。U-Net结构中,左右对称的层增设了类似残差网络中的跨层短接,如图中虚线所示。9.3在图像处理中的典型应用160通过notebook课堂演示示例,并解释代码。
9.3在图像处理中的典型应用161
9.3在图像处理中的典型应用162
9.3在图像处理中的典型应用163
9.3在图像处理中的典型应用164图像转换3.判别器网络与普通分类判别器最后输出一个代表分类结果的概率值不同,CycleGAN中的判别器最后输出的是一个由多个值组成的矩阵。CycleGAN中判别器的最后一层一般是一个卷积核数量为1的卷积层,而不是像普通判别器那样把全连接层作为最后一层。与此相应,真样本的标签要设成相同形状的全1的矩阵,假样本的标签则设为相同形状的全0的矩阵。这样的判别器网络称为PatchGAN。9.3在图像处理中的典型应用165
9.3在图像处理中的典型应用166
9.3在图像处理中的典型应用167
9.3在图像处理中的典型应用168
9.3在图像处理中的典型应用169谢谢LOGO机器学习第十章强化学习第十章强化学习强化学习(ReinforcementLearning,RL)是学习主体(Agent)以“尝试”的方式探索世界、获取知识的学习机制。强化学习起源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。与前述的聚类、回归、分类和标注任务不同,强化学习面向的是所谓的序列决策(SequentialDecisionMaking)任务:主体根据环境的状态和反馈连续选择行为,力图收获最大收益。10.1强化学习基础10.2值函数可计算的强化学习10.3深度强化学习第十章强化学习仿真工具强化学习需要不断地尝试,因此研究强化学习,离不开仿真。OpenAI的gym仿真工具提供了对强化学习问题求解仿真的支持。gym采用Python语言,可以和本书使用的编程环境无缝衔接。可通过“condainstallgym=0.18.0”命令安装本书使用的gym仿真环境。在gym中仿真强化学习问题,先要在gym中构建相应的仿真环境(具体构建方法可参考相应网站和书籍)。gym内部预先集成了很多已经构建好的强化学习问题仿真环境供初学者使用,如冰湖问题仿真环境。10.1.1冰湖问题与强化学习基本概念174冰湖问题v0版的冰湖问题(FrozenLake-v0)的情景是agent要自主穿过有窟窿的冰面拿到飞盘。冰面由4×4的方格表示,标记为S的方格为agent的出发点,标记为G的方格为飞盘所在的位置,即agent要到达的终点。空白方格表示可以行动的安全区域,灰色方格表示有窟窿的冰面,是会掉入水中的危险区域。为了简化表示,在gym的FrozenLake-v0环境中,用由S、F、H、G四个字母组成的表格来表示冰面。10.1.1冰湖问题与强化学习基本概念175
10.1.1冰湖问题与强化学习基本概念176importgym#loadingtheGymlibraryenv=gym.make("FrozenLake-v0")#看一下动作空间print("Actionspace:",env.action_space)>>>Actionspace:Discrete(4)#看一下观察空间,以及它的取值大小print("Observationspace:",env.observation_space)>>>Observationspace:Discrete(16)
10.1.1冰湖问题与强化学习基本概念177策略示例主体的策略是从状态到动作的映射,也就是说,对一个具体的状态,策略要给出明确的动作指示来确定主体的下一步行动。在冰湖问题中,可以用如下的列表来表示一个策略:[1,3,2,2,0,0,0,1,3,0,1,2,0,3,2,3]列表最左侧的1表示在0号状态时执行编号为1的动作,即在起始点S执行向下的动作。左侧第2个位置上的3表示在1号状态时执行编号为3的动作,即在位置1执行向上的动作。以此类推。10.1.1冰湖问题与强化学习基本概念178rand_pi=[]for_inrange(16):rand_pi.append(env.action_space.sample())print("随机策略:",rand_pi)>>>随机策略:[1,3,2,2,0,0,0,1,3,0,1,2,0,3,2,3]
10.1.1冰湖问题与强化学习基本概念179回报在仿真实验中,主体的每进入到下一状态都有一个回报(reward)。如果当前动作使主体到达了终点G,则能得到一个回报值1,否则回报值为0。10.1.1冰湖问题与强化学习基本概念180尝试10.1.1冰湖问题与强化学习基本概念181defepisode(env,pi,gamma=1.0,render=False):
s=env.reset()#初始状态
sum_reward=0n=0#折扣的幂
whileTrue:ifrender:env.render()s,reward,done,_=env.step(int(pi[s]))sum_reward+=(gamma**n*reward)#累积折扣回报函数
n+=1ifdone:env.render()break#print(sum_reward)returnsum_rewardepisode(env,rand_pi,1.0,True)尝试10.1.1冰湖问题与强化学习基本概念182#多次尝试取累积折扣回报函数的均值deftest_policy(env,pi,gamma=1.0,n_episodes=10000):scores=[episode(env,pi,gamma,False)for_inrange(n_episodes)]returnnp.mean(scores)importnumpyasnpgamma=1.0#折扣系数n_episodes=10000#尝试次数print(n_episodes,"次尝试的平均得分:",test_policy(env,rand_pi,gamma,n_episodes))>>>10000次尝试的平均得分:0.0778强化学习中,主体(策略)、动作、环境、状态和回报之间的关系:主体依据策略来决定下一步动作,主体的动作又会改变环境,主体能够观察到环境状态的变化,并得到环境的立即回报。然后,主体根据新的状态并依据策略来决定新的动作。可见,强化学习是一个持续决策的过程。10.1.1冰湖问题与强化学习基本概念183
10.1.1冰湖问题与强化学习基本概念184
10.1.1冰湖问题与强化学习基本概念185
10.1.1冰湖问题与强化学习基本概念186
10.1.2马尔可夫决策过程187
10.1.2马尔可夫决策过程188
10.1.2马尔可夫决策过程189
10.1.2马尔可夫决策过程190
10.1.2马尔可夫决策过程191
10.1.2马尔可夫决策过程192
10.1.2马尔可夫决策过程193
10.1.2马尔可夫决策过程194
10.1.2马尔可夫决策过程195
10.1.2马尔可夫决策过程196随机近似方法的基本思想是通过大量的随机样本去探索系统,得到有关系统的近似模型。10.1.3蒙特卡罗近似197
10.1.3蒙特卡罗近似198
10.1.3蒙特卡罗近似199利用与探索(Exploitation&Exploration)是强化学习中非常重要的概念。利用是指从已知信息中得到最大回报。探索是指要开拓眼界、尽可能地发掘环境中更多的信息。人们在作选择时,经常会用到利用与探索的思想。比如,在选择饭店时,一般会利用自己的经验选择自己满意的饭店,以确保大概率得到理想的服务,但是也会偶尔探索一下新店,看看是否有更好的服务。常用两种策略来实现利用与探索,分别是贪心策略(greedystrategy)和ε-贪心策略(ε-greedystrategy)。10.1.4利用与探索200
10.1.4利用与探索201
10.1.4利用与探索2021.从算法优化过程分类基于值函数优化策略的算法,是先求得状态值函数或动作值函数,然后依据它们来得到最优策略,主要有动态规划法、蒙特卡罗法、时序差分法(又包括Sarsa和Qlearning)和DQN等。直接优化策略的算法,是直接从候选策略中选择最优策略,主要有策略梯度法、Actor-Critic和DDPG等。构建环境模型辅助优化策略的算法,是在环境模型未知的情况下,先对环境进行建模,再用构建的模型来辅助优化值函数,最终求得最优策略。构建的环境模型一般不能完全刻画实际的环境,因此,算法不能完全依赖构建的环境模型,而是将对构建模型的利用和对实际环境的探索结合起来进行优化。构建环境模型辅助优化策略的算法主要有Dyna、Dyna-2、基于模拟的搜索等系列算法。10.1.5强化学习算法分类2032.环境模型是否已知的分类如果已知环境模型,则强化学习问题的求解显然要容易的多。此时,称为有模型强化学习算法。在不知道环境模型时,一般要通过蒙特卡罗法来试探环境,得到与环境模型相关的知识用于优化策略。相应地,这类算法也称为无模型强化学习算法。在无模型强化学习算法中,有的算法需要一次对环境的完整尝试才能进行迭代优化,称为回合制算法。有的算法不需要完整的尝试,只需要一步试探即可进行迭代优化,称为单步制算法。10.1.5强化学习算法分类2043.值函数求解的分类在状态空间和动作空间是小型的离散空间时,值函数可以用一个小型的表格来表示。一个状态值或者一个状态-动作值对对应表格中的一格。此时,值函数的迭代优化就表现为对表格中数据的迭代计算,该类算法称为值函数可计算的强化学习算法,也称为表格型强化学习算法。如果状态空间和(或)动作空间是连续的,那么就无法用一个表格来表示值函数。此时,一般是采用映射来描述从状态值或状态-动作值对到一个实数值的对应关系,该类算法称为值函数逼近的强化学习算法。值函数逼近的方法还被应用到大型离散空间中值函数的求解。因为当空间过于庞大时,直接计算值函数实际上已经不可行。10.1.5强化学习算法分类20510.1强化学习基础10.2值函数可计算的强化学习10.3深度强化学习第十章强化学习基于值函数优化策略的方法是先求得值函数,然后通过值函数来求得最优策略。相应地,该类算法的迭代过程可分为策略评估阶段和策略改进阶段。在策略评估阶段,算法基于当前策略来求得值函数;在策略改进阶段,算法利用当前值函数来更新策略。10.2值函数可计算的强化学习方法207
10.2.1动态规划法208
10.2.1动态规划法209
10.2.1动态规划法210
10.2.1动态规划法211
10.2.1动态规划法212
10.2.1动态规划法213
10.2.1动态规划法214
10.2.1动态规划法2151.策略迭代算法10.2.1动态规划法216defpolicy_evaluation(pi,gamma=1.0):V_table=np.zeros(n_states)#状态值函数表
threshold=1e-10#收敛判断阈值
whileTrue:pre_V_table=np.copy(V_table)forsinrange(n_states):a=pi[s]
V_table[s]=sum([trans_prob*(r+gamma*pre_V_table[next_s])
fortrans_prob,next_s,r,doneinenv.P[s][a]])if(np.sum((np.fabs(pre_V_table-V_table)))<=threshold):#是否收敛
breakreturnV_table1.策略迭代算法10.2.1动态规划法217#基于新的状态值函数对策略进行改进defpolice_improvement(v_table,gamma=1.0):pi=np.zeros(n_states)forsinrange(n_states):Q_table=np.zeros(n_actions)#每个状态的动作值函数表
forainrange(n_actions):fornext_srinenv.P[s][a]:#环境模型,存储状态s下采取动作a得到的状态转移概率,下一步状态,回报,完成标志
trans_prob,next_s,r,done=next_srQ_table[a]+=(trans_prob*(r+gamma*v_table[next_s]))pi[s]=np.argmax(Q_table)#贪心策略
returnpi1.策略迭代算法10.2.1动态规划法218#策略迭代defpolicy_iteration(gamma=1.0):
pi=np.zeros(n_states)#0初始化策略
i=0whileTrue:V_table=policy_evaluation(pi,gamma)new_pi=police_improvement(V_table,gamma)i+=1#print("迭代次数:",i,"\n\tV_table:",V_table,"\n\tpi:",new_pi)if(np.all(pi==new_pi)):break
pi=new_pi
returnpigamma=1.0#折扣系数pi=policy_iteration(gamma)print("策略迭代算法计算最优策略:",pi)n_episodes=10000#尝试次数print(n_episodes,"次尝试的平均得分:",test_policy(env,pi,gamma,n_episodes))策略迭代算法计算最优策略:[0.3.3.3.0.0.0.0.3.1.0.0.0.2.1.0.]10000次尝试的平均得分:0.7356
10.2.1动态规划法2192.值迭代算法10.2.1动态规划法220#值迭代defvalue_itration(env,gamma=1.0):
V_table=np.zeros(n_states)n_iterations=10000threshold=1e-10foriinrange(n_iterations):pre_V_table=np.copy(V_table)forsinrange(n_states):Q=[]#状态s的Q值
forainrange(n_actions):next_s_prob_rewards=[]
fornext_srinenv.P[s][a]:trans_prob,next_s,r,done=next_sr
next_s_prob_rewards.append((trans_prob*(r+gamma*pre_V_table[next_s])))Q.append(np.sum(next_s_prob_rewards))V_table[s]=max(Q)if(np.sum(np.fabs(pre_V_table-V_table))<=threshold):break
returnV_table2.值迭代算法10.2.1动态规划法221best_V_table=value_itration(env=env,gamma=1.0)print("最优状态值函数:",best_V_table)best_pi=police_improvement(best_V_table,gamma=1.0)print("值迭代算法计算最优策略:",best_pi)>>>最优状态值函数:[0.823529410.823529410.823529410.823529410.823529410.0.529411760.0.823529410.823529410.764705880.0.0.882352940.941176470.]值迭代算法计算最优策略:[0.3.3.3.0.0.0.0.3.1.0.0.0.2.1.0.]
10.2.1动态规划法222随机性策略生成一个随机初始化的随机性策略10.2.2蒙特卡罗法223defcreate_random_policy(env):
pi=np.ones([env.observation_space.n,env.action_space.n])#用数组来存储策略
p=1/env.action_space.n
returnpi*ppi=create_random_policy(env)print(pi)[[0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25][0.250.250.250.25]]随机性策略按随机性策略进行尝试10.2.2蒙特卡罗法224defepisode_random(env,pi,render=False):
env.reset()ifrender:env.render()
episode=[]done=Falsewhilenotdone:s=env.env.s#读取环境状态
timestep=[]timestep.append(s)action=np.random.choice(env.action_space.n,p=pi[s])
#执行动作并记录
next_s,r,done,info=env.step(action)timestep.append(action)timestep.append(r)episode.append(timestep)ifrender:env.render()returnepisodetau=episode_random(env,pi,False)print(tau)[[0,3,0.0],[0,3,0.0],[1,1,0.0],[2,2,0.0],[6,1,0.0],[10,0,0.0],[14,2,1.0]]随机性策略测试随机性策略10.2.2蒙特卡罗法225#测试随机性策略deftest_random_policy(env,pi,gamma=1.0,n_episodes=1000):sum_reward=0.0for_inrange(n_episodes):tau=episode_random(env,pi,render=False)sum_reward+=G(tau,gamma)returnsum_reward/n_episodesprint("输入策略的得分:",test_random_policy(env,pi,1.0,1000))>>>输入策略的得分:0.016#计算一条轨迹的累积折扣回报defG(tau,gamma=1.0):i=0sum_r=0.0foreintau:#print(e[-1])sum_r+=gamma**i*e[-1]i+=1returnsum_rprint(G(tau,1.0))>>>1.0
10.2.2蒙特卡罗法226蒙特卡罗法求解过程一次尝试的轨迹:[[0,3,0.0],[0,3,0.0],[1,1,0.0],[2,2,0.0],[6,1,0.0],[10,0,0.0],[14,2,1.0]]10.2.2蒙特卡罗法227蒙特卡罗法求解过程轨迹分解为采样:[[0,3,1.0],[0,3,1.0],[1,1,1.0],[2,2,1.0],[6,1,1.0],[10,0,1.0],[14,2,1.0]]更新动作值函数:对所有s和a对应的动作值函数重新求均值10.2.2蒙特卡罗法228
10.2.2蒙特卡罗法229
10.2.2蒙特卡罗法230蒙特卡罗法求解冰湖问题10.2.2蒙特卡罗法231defmc_on_policy(env,epsilon=0.01,n_episodes=100):pi=create_random_policy(env)#产生随机策略,数组形式
Q_value=np.zeros([env.observation_space.n,env.action_space.n])
N_s_a=np.zeros([env.observation_space.n,env.action_space.n])
forkinrange(n_episodes):
G=0#累积回报
tau=episode_random(env,pi,False)#采样得到轨迹τ
foriinreversed(range(0,len(tau))):s_t,a_t,r_t=tau[i]G+=r_tifnot(s_t,a_t)in[(x[0],x[1])forxintau[0:i]]:#初次访问统计
N_s_a[s_t,a_t]+=1Q_value[s_t,a_t]=Q_value[s_t,a_t]+(G-Q_value[s_t,a_t])/N_s_a[s_t,a_t]
forsinrange(env.observation_space.n):pi[s]=epsilon/env.action_space.nindices=np.where(Q_value[s]==np.max(Q_value[s]))
tag_max_Q=random.choice(indices[0])pi[s][tag_max_Q]+=1-epsilon#最优动作的增加概率
returnpi蒙特卡罗法求解冰湖问题10.2.2蒙特卡罗法232pi_mc=mc_on_policy(env,n_episodes=30000)print(pi_mc)print(test_random_policy(env,pi_mc,1.0,1000))>>>[[0.99250.00250.00250.0025][0.00250.00250.00250.9925][0.00250.99250.00250.0025][0.00250.00250.00250.9925][0.99250.00250.00250.0025][0.00250.99250.00250.0025][0.00250.00250.99250.0025][0.00250.00250.00250.9925][0.00250.00250.00250.9925][0.00250.99250.00250.0025][0.99250.00250.00250.0025][0.00250.99250.00250.0025][0.00250.00250.00250.9925][0.00250.00250.99250.0025][0.00250.99250.00250.0025][0.99250.00250.00250.0025]]0.699
10.2.3时序差分法233
10.2.3时序差分法234Sarsa算法与Qlearning算法10.2.3时序差分法235defgreedy_sample(Q_s):max_Q=np.max(Q_s)act
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年大班规则性游戏说课稿
- 2026年网络文化市场的成功案例与市场发展
- 《律师仲裁代理实务》课件
- 2025-2026学年大单元荷叶圆圆说课稿
- 高三心理健康辅导讲座
- ProE模具设计指南
- 2026英菲尼迪QX56网络推广框架方案
- 高二化学选修4溶液pH的计算
- 《学习论证》课件
- 网吧现场复查案卷制作规范
- GEELY汽车服务顾问课件
- 实验动物饲养培训课件
- (2025)十八项医疗核心制度考试试题库及参考答案
- 质量诚信培训资料
- 新一代数据中心建设投资协议
- 宁夏林利煤炭有限公司煤矿三号井“9·27”重大瓦斯爆炸事故调查报告
- HGT21581-2012 自控安装图册
- 临床用血质量控制指标(2019版)
- 初等数学研究程晓亮刘影课后习题答案
- AQ 1095-2014 煤矿建设项目安全预评价实施细则(正式版)
- 《水电站闸门和启闭机运行维护技术规程》
评论
0/150
提交评论