diff --git a/chapter_model_deployment/model_compression.md b/chapter_model_deployment/model_compression.md index 978cb0cf..55c70701 100644 --- a/chapter_model_deployment/model_compression.md +++ b/chapter_model_deployment/model_compression.md @@ -113,7 +113,7 @@ $$\mathcal{L}_{KD}(\theta_S) = \mathcal{H}(o_S,\mathbf{y}) +\lambda\mathcal{H}(\ 其中,$\mathcal{H}(\cdot,\cdot)$是交叉熵函数,$o_S$和$o_T$分别是学生网络和教师网络的输出,$\mathbf{y}$是标签。公式 :eqref:`ch08-equ-c2Fcn_distill`中的第一项使得学生神经网络的分类结果接近预期的真实标签,而第二项的目的是提取教师神经网络中的有用信息并传递给学生神经网络,$\lambda$是一个权值参数用来平衡两个目标函数。$\tau(\cdot)$是一个软化(soften)函数,将网络输出变得更加平滑。 -公式 :eqref:`ch08-equ-c2Fcn_distill`仅仅从教师神经网络分类器输出的数据中提取有价值的信息,并没有从其它中间层去将教师神经网络的信息进行挖掘。因此,Romero等人[@FitNet])进一步地开发了一种学习轻型学生神经网络的方法,该算法可以从教师神经网络中任意的一层来传递有用的信息给学生神经网络。此外,事实上,并不是所有的输入数据对卷积神经网络的计算和完成后续的任务都是有用的。例如,在一张包含一个动物的图像中,对分类和识别结果比较重要的是动物所在的区域,而不是那些无用的背景信息。所以,有选择性地从教师神经网络的特征图中提取信息是一个更高效的方式。于是,Zagoruyko和Komodakis([@attentionTS])提出了一种基于感知(attention)损失函数的学习方法来提升学生神经网络的性能,公式 :eqref:`ch08-equ-c2Fcn_distill`仅仅从教师神经网络分类器输出的数据中提取有价值的信息,并没有从其它中间层去将教师神经网络的信息进行挖掘。因此,Romero等人[@FitNet])进一步地开发了一种学习轻型学生神经网络的方法,该算法可以从教师神经网络中任意的一层来传递有用的信息给学生神经网络。此外,事实上,并不是所有的输入数据对卷积神经网络的计算和完成后续的任务都是有用的。例如,在一张包含一个动物的图像中,对分类和识别结果比较重要的是动物所在的区域,而不是那些无用的背景信息。所以,有选择性地从教师神经网络的特征图中提取信息是一个更高效的方式。于是,Zagoruyko和Komodakis([@attentionTS])提出了一种基于感知(attention)损失函数的学习方法来提升学生神经网络的性能,如 :numref:`ch08-fig-distillation`所示。该算法在学习学生神经网络的过程中,引入了感知模块Attention,选择性地将教师神经网络中的信息传递给学生神经网络,并帮助其进行训练。感知图可以识别输入图像不同位置对最终分类结果的重要性,并从教师网络传递到学生网络。 +公式 :eqref:`ch08-equ-c2Fcn_distill`仅仅从教师神经网络分类器输出的数据中提取有价值的信息,并没有从其它中间层去将教师神经网络的信息进行挖掘。因此,Romero等人[@FitNet])进一步地开发了一种学习轻型学生神经网络的方法,该算法可以从教师神经网络中任意的一层来传递有用的信息给学生神经网络。此外,事实上,并不是所有的输入数据对卷积神经网络的计算和完成后续的任务都是有用的。例如,在一张包含一个动物的图像中,对分类和识别结果比较重要的是动物所在的区域,而不是那些无用的背景信息。所以,有选择性地从教师神经网络的特征图中提取信息是一个更高效的方式。于是,Zagoruyko和Komodakis([@attentionTS])提出了一种基于感知(attention)损失函数的学习方法来提升学生神经网络的性能,如 :numref:`ch08-fig-distillation`所示。该算法在学习学生神经网络的过程中,引入了感知模块Attention,选择性地将教师神经网络中的信息传递给学生神经网络,并帮助其进行训练。感知图可以识别输入图像不同位置对最终分类结果的重要性,并从教师网络传递到学生网络。 ![一种基于感知(attention)的教师神经网络-学生神经网络学习算法](../img/ch08/distillation.png) :width:`500px` diff --git a/chapter_preface_advanced/index.md b/chapter_preface_advanced/index.md index bd0598f8..6a809e4f 100644 --- a/chapter_preface_advanced/index.md +++ b/chapter_preface_advanced/index.md @@ -25,7 +25,7 @@ ![MindSpore系统架构图](../img/Advanced/preface3_arc.png ) -​ 既要对上承接模型算法的变化,满足算法开发者研究不断探索的诉求, 又要在最终的二进制输出上满足多样性硬件的诉求,满足不同部署环境的资源要求。既要满足系统的通用,也要满足易用性的灵活性要求,还要满足性能的不断优化诉求,这里引入编译器的概念再合适不过了。 编译器概念可以很好抽象上面提到的挑战和问题,编译器输入的是用户编程代码,输出的是机器执行的高效代码,编译器的作用主要是转换和优化,这和机器学习系统的输入输出,机器学习系统的目标是完全一致的。所以在进阶篇我们将用两个章节详细介绍AI编译器,里面的很多概念是和通用编译器中的概念是相同的,比如AOT(Ahead of Time提前编译)、JIT(Just in time)、IR(中间表示)、PASS优化、AST(Abstract Struct Trees)、副作用、闭包等概念和编译器中相关定义相同,对编译器相关概念需要了解的读者可以翻阅相关的编译原理教材了解。 +​ 既要对上承接模型算法的变化,满足算法开发者研究不断探索的诉求, 又要在最终的二进制输出上满足多样性硬件的诉求,满足不同部署环境的资源要求。既要满足系统的通用,也要满足易用性的灵活性要求,还要满足性能的不断优化诉求,这里引入编译器的概念再合适不过了。 编译器概念可以很好抽象上面提到的挑战和问题,编译器输入的是用户编程代码,输出的是机器执行的高效代码,编译器的作用主要是转换和优化,这和机器学习系统的输入输出,机器学习系统的目标是完全一致的。所以在进阶篇我们将用两个章节详细介绍AI编译器,里面的很多概念是和通用编译器中的概念是相同的,比如AOT(Ahead of Time提前编译)、JIT(Just in time)、IR(中间表示)、PASS优化、AST(Abstract Syntax Trees)、副作用、闭包等概念和编译器中相关定义相同,对编译器相关概念需要了解的读者可以翻阅相关的编译原理教材了解。 ​ AI编译器是一种相对较新的概念和工具,一个强大的AI编译器将让算法科学家和开发人员享受其带来的益处,包括表达的便捷和执行的高性能,是AI框架设计的核心。为了更好的理解AI编译器架构,先从如下图传统编译器LLVM架构说起,在这里可以把LLVM编译器分成三个部分:前端、IR和后端。前端将高级语言转换成IR,后端将IR转换成目标硬件上的机器指令,IR作为桥梁在前后端之间进行基于IR的各种优化。这样无论是新增硬件的支持,还是新的前端支持都可以尽可能的复用IR相关的部分。IR可以是单层的IR,也可以是多层的IR, LLVM IR是典型的单层的IR,前后端优化都基于相同的LLVM IR进行。