一、迁移学习的基本方法

1、基于样本迁移

根据一定的权重生成规则,对数据样本进行重用,进行迁移学习。
在迁移学习中对于源域和目标域,通常假定产生它们的概率分布是不同且未知的,由于实例的维度和数量通常非常大,因此直接对概率分布进行估计是不可行的,所以,大量的研究工作都着眼于对源域和目标域的分布比值进行估计,所估计得到的比值即为样本的权重。通常假设目标域与源域的比值小与无穷,源域和目标域的条件概率分布相同。
TrAdaBoost 方法是此方面的经典研究之一,将AdaBoost 的思想应用于迁移学习中,提高有利于目标分类任务的实例权重、降低不利于目标分类任务的实例权重,并基于 PAC 理论推导了模型的泛化误差上界
核均值匹配方法对于概率分布进行估计,目标是使得加权后的源域和目标域的该路分布尽可能的相近

2、基于特征迁移

通过特征变换的方式互相迁移,来减少源域和目标域之间的差距,或者说是把源域和目标域的数据特征变换到统一的特征空间,然后利用传统的机器学习方法进行分类识别。
这类方法通常假设源域和目标域有一些交叉的特征。

  • **迁移成分分析方法(TCA)**是较为典型的一个方法,该方法内容是以最大均值差异(MMD)作为度量准则,将不同数据领域中的分布差异最小化。
  • **一种基于结构对应的学习方法(SCL)**通过映射将一个空间中独有的一些特征变换到其他所有空间中的轴特征上,然后再该特征上使用机器学习的算法进行分类预测。
  • TCM再最小化分布距离的同时,加入实例选择的迁移联合匹配,将实例和特征迁移学习方法进行了有机的结合。
  • 近年来,基于特征的迁移学习方法大多与神经网络进行结合,再神经网络的训练中进行学习特征和模型的迁移。

3、基于模型的迁移

基于模型的迁移方法 (Parameter/Model based Transfer Learning) 是指从源域和目标域中找到他们之间共享的参数信息,以实现迁移的方法。这种迁移方式要求的假设条件是:源域中的数据与目标域中的数据可以共享一些模型的参数。

  • **TransEMDT方法:**该方法首先针对已有标记的数据,利用决策树构建鲁棒性的行为识别模型,然后针对无标定数据,利用K-Means聚类方法寻找最优化的标定参数。
  • 利用超限学习机
  • 利用HMM针对Wifi室内定位在不同设备、不同时间和不同空间下动态变化的特点,进行不同分布下的室内定位研究。
  • 对SWM进行了改进研究,假定SVM中的权重向量可以分成两个部分。
  • 将社交信息加入迁移学习方法的正则项中
  • 改进深度网络结构,通过在网络中加入分布适配层,进一步提高深度迁移学习网络对于大数据的泛化能力。
    通过对现有工作的调研可以发现,目前绝大多数基于模型的迁移学习方法都与深度神经网络进行结合。这些方法对现有的一些神经网络结构进行修改,在网络中加入领域适配层,然后联合进行训练。因此,这些方法也可以看作是基于模型、特征的方法的结合。

4、基于关系迁移

这种方法比较关注源域与目标域的样本之间的关系。
就目前而言、基于关系的迁移学习方法的相关研究工作比较少,仅有几篇连贯的文章,这些文章都借助于马尔科夫逻辑网络来挖掘不同领域之间的关系。

二、第一类方法:数据分布自适应

数据分布自适应是一类最常用的迁移学习方法,这种方法的基本思想是,由于源域和目标域的数据概率分布不同,那么最直接的方式就是通过一些变换,将不同的数据分布的距离拉近。
简单来说,数据的边缘分布不同,就是数据整体不相似。数据的条件分布不同,就是数据整体相似,但是具体到每个类里,都不太相似。
根据数据分布的性质,这类方法又可以分为边缘分布自适应、条件分布自适应、以及联合分布自适应。

1、边缘分布自适应

1.1基本思路

1.2、核心方法

(1)迁移成分分析(TCA):TCA 假设存在一个特征映射 ϕ,使得映射后数据的分布P(ϕ(xs)) ≈ P(ϕ(xt))。TCA 假设如果边缘分布接近,那么两个领域的条件分布也会接近,即条件分布 P(ys|ϕ(xs))) ≈ P(yt|ϕ(xt)))。这就是 TCA 的全部思想。在找映射 ϕ的方法是,假设 ϕ是已知的,然后去求距离。在求距离时TCA使用了最大均值差异(MMD)来衡量距离。 TCA引入一个核矩阵K:

这是数学中一个**半定规划(SDP)**的问题解决起来非常耗时,解决方法是用降维的方法取构造结果,用一个维度更的矩阵W。
在最小化源域核目标域的距离时还要维持各自的数据特征,就是数据的散度

2、条件分布自适应


**类内迁移(STL):**指出现有的绝大多数方法都只是学习一个全局的特征变换,而忽略了类内的相似性。类内迁移可以利用类内的特征,实现更好的迁移效果。STL 方法在大量行为识别数据中进行了跨位置行为识别的实验。实验结果表明,该方法可以很好地实现跨领域的行为识别任务,取得了当前最好的效果。

3、联合分布自适应(JDA)

3.1基本思路

3.2 核心方法

假设是最基本的出发点,假设两点:

  • 源域和目标域的边缘分布不同
  • 源域和目标域条件分布不同
    适配联合概率。
  • 边缘分布适配:仍然使用MMD距离来最小化源域和目标域的最大均值差异
  • 条件分布适配:由于目标域里没有标签,不能求目标域的条件分布,利用类条件概率根据贝叶斯公式
    来近似表示 。理论依据充分统计量。没有目标域的标签,用源域训练一个简单的分类器,到目标域上直接进行预测,得到一些伪标签。
    同样也要添加一个限制条件,使得变换前后数据的方差要维持不变。在求解方差过程中也可以使用”Rayleih quotient“。一开始使用的是伪标签,精度不高,我们可以多次迭代,用上一轮得到的标签来做伪标签。

4、动态分布自适应

4.1 平衡分布自适应BDA

JDA的不足:边缘分布自适应和条件分布自适应并不是同等重要的。BAD通过采用一种平衡因子来动态的调整两个分布之间的距离。

4.2 动态分布自适应

(1)BDA方法只是首次给出边缘分布和条件分布的定量估计。然而,其并未解决平衡因子的精确计算问题。拓展BDA方法,提出一个更具普适性的动态迁移框架DDA来解决平衡因子的精确估计问题。
(2)因为在无监督迁移学习问题定义中,目标域没有标记,不能将平衡因子视为迁移学习中的参数,通过交叉验证确定最优取值,有两种非直接方法对平衡因子的值进行估计:

  • 随机猜测
  • 最大最小平均法
    然而,尽管上述两种估计方案有一定的可行性,它们均需要大量的重复计算,给普适计算设备带来了严峻的挑战。另外,上述结果并不具有可解释性,其正确性也无法得到保证。
    (3)动态迁移方法是首次对 µ 值进行精确的定量估计方法。该方法利用领域的整体和局部性质来定量计算 µ(计算出的值用 µˆ 来表示)。采用 A−distance作为基本的度量方式。这是首次给出边缘分布和条件分布的定量估计,对于迁移学习研究具有很大的意义。作者将机器学习问题规约成一个统计机器学习问题,可以用统计机器学习中的结构风险最小化的原则进行表示学习。
    上式则为通用的一迁移学习架,可以适用于何问题。为了对此架进行学习,作者分别提出了基于流形学习的动态迁移方法 MEDA , 2018b 和基于深学习的动态迁移方 DDAN来进行学习。

5、小结

  • 精度比较: DDA > JDA > TCA >条件分布自适应
  • . 将不同的概率分布自适应方法用于神经网络,是一个发展趋势。将概率分布适配加入深度网络中,往往会取得比非深度方法更好的结果。

三、第二类方法:特征选择

特征选择法的基本假设是:源域和目标域中均含有一部分公共的特征,在这部分公共的特征上,源领域和目标领域的数据分布是一致的。因此,此类方法的目标就是,通过机器学习方法,选择出这部分共享的特征,即可依据这些特征构建模型。

1、核心方法

一个比较经典的方法是:SCL

四、第三类方法:子空间学习

子空间学习法通常假设源域和目标域数据在变换后的子空间中会有着相似的分布。我们按照特征变换的形式,将子空间学习法分为两种:基于统计特征变换的统计特征对齐方法,以及基于流形变换的流形学习方法。

1、统计特征对齐

统计特征对齐方法主要将数据的统计特征进行变换对齐。对齐后的数据,可以利用传统机器学习方法构建分类器进行学习。
**SA(子空间对齐)方法:**是代表性成果,SA方法直接寻求一个线性变换M,将不同的数据实现变换对齐。
**SDA:**该方法在 SA 的基础上,加入了概率分布自适应。SDA方法提出,除了子空间变换矩阵之外,再增加一个概率分布自适应变换。SDA对源域和目标域进行二阶特征变换,SA对源域和目标域只进行一阶特征变换
CORAL损失被定义为源域和目标域的二阶统计特征距离

2、流形学习

**基本假设:**现在的数据是从一个高维空间中采样出来的,所以,它具有高维空间中的低维流形结构。流形就是一种几何对象。
流形学习的经典方法有 Isomap、locally linear embedding、laplacian eigenmap 等。
由于在流形空间中的特征通常都有着很好的几何性质,可以避免特征扭曲,因此我们首先将原始空间下的特征变换到流形空间中。在 Grassmann 流形中,特征变换和分布适配通常都有着有效的数值形式,因此在迁移
学习问题中可以被很高效地表示和求解。
**2.1 SGF方法:**把源域和目标域分别看成高维空间 (即Grassmann 流形) 中的两个点,在这两个点的测地线距离上取 d 个中间点,然后依次连接起来。这样,源域和目标域就构成了一条测地线的路径。我们只需要找到合适的每一步的变换,就能从源域变换到目标域了。
**2.2GFK方法:**首先解决SGF的问题,确定中间点的个数d。它通过提出一种核学习的方法,利用路径上的无穷个点的积分,把这个问题解决了。它又解决了第二个问题:当有多个源域的时候,我们如何决定使用哪个源域跟目标域进行迁移?GFK 通过提出 Rank of Domain 度量,度量出跟目标域最近的源域,来解决这个问题。
子空间学习方法和概率分布自适应方法可以有机的进行组合,克服各自的缺点。

五、深度迁移学习

深度学习对比非深度学习的优势:自动化地提取更具表现力的特征,以及满足了实际应用中的端到端 (End-to-End) 需求。
基于对抗网络的迁移学习,也是一个热门的研究点。

1、深度网络的可迁移性

网络的前面几层都学习到的是通用的特征(generalfeature);随着网络层次的加深,后面的网络更偏重于学习任务特定的特征(specific feature)
如果应用于迁移学习,如何决定该迁移哪些层、固定哪些层?,这些对理解神经网络以及深度迁移学习都有非常重要的意义。
1.1康奈尔大学的Jason Yosinski进行深度神经网络可迁移性的研究结论:

  • 神经网络的前 3 层基本都是 general feature,进行迁移的效果会比较好;
  • 深度迁移网络中加入 fine-tune,效果会提升比较大,可能会比原网络效果还好;
  • Fine-tune 可以比较好地克服数据之间的差异性;
  • 深度迁移网络要比随机初始化权重效果好;
  • 网络层数的迁移可以加速网络的学习和优化;

2、最简单的深度迁移:finetune

finetune 就是利用别人已经训练好的网络,针对自己的任务再进行调整。
2.1 Finetune的优势

  • 不需要针对新任务从头开始训练网络,节省了时间成本;
  • 预训练好的模型通常都是在大数据集上进行的,无形中扩充了我们的训练数据,使得模型更鲁棒、泛化能力更好;
  • Finetune 实现简单,使得我们只关注自己的任务即可。
    Finetune 并不只是针对深度神经网络有促进作用,对传统的非深度学习也有很好的效果。例如,finetune 对传统的人工提取特征方法就进行了很好的替代。我们可以使用深度网络对原始数据进行训练,依赖网络提取出更丰富更有表现力的特征。然后,将这些特征作为传统机器学习方法的输入。这样的好处是显然的:既避免了繁复的手工特征提取,又能自动地提取出更有表现力的特征。

3、深度网络自适应

3.1 基本思路
Finetune的缺点:无法处理训练数据和测试数据分布不同的情况,因为 finetune 的基本假设也是训练数据和测试数据服从相同的数据分布
许多深度学习方法都开发出了==自适应层 (Adaptation Layer) ==来完成源域和目标域数据的自适应。自适应能够使得源域和目标域的数据分布更加接近,从而使得网络的效果更好。
从上述的分析我们可以得出,深度网络的自适应主要完成两部分的工作:
一是哪些层可以自适应,这决定了网络的学习程度;
二是采用什么样的自适应方法 (度量准则),这决定了网络的泛化能力。
深度网络中最重要的是网络损失的定义。绝大多数深度迁移学习方法都采用了以下的损失定义方式:


上述的分析指导我们设计深度迁移网络的基本准则:决定自适应层,然后在这些层加入自适应度量,最后对网络进行 finetune。
3.2核心方法
DaNN神经网络:DaNN 的结构异常简单,它仅由两层神经元组成:特征层和分类器层。作者的创新工作在于,==在特征层后加入了一项MMD 适配层,==用来计算源域和目标域的距离,并将其加入网络的损失中进行训练。
但是,由于网络太浅,表征能力有限,故无法很有效地解决 domain adaptation 问题。因此,后续的研究者大多数都基于其思想进行扩充,如将浅层网络改为更深层的 AlexNet、ResNet、VGG 等;如将 MMD 换为多核的 MMD 等。
(1)第一个方法:DDC(Deep Domain Confusion)
DDC 遵循了我们上述讨论过的基本思路,采用了在 ImageNet 数据集上训练好的 AlexNet 网络进行自适应学习。DDC固定了AlexNet的前7层,再第八层(分类器前一层)上加入了自适应的度量。自适应度量方法采用了被广泛使用的MMD准则。
(2)DAN(Deep Adaptation Networks)
DAN对 DDC 方法进行了几个方面的扩展。首先,有别于 DDC 方法只加入一个自适应层,DAN 方法同时加入了三个自适应层 (分类器前三层)。其次,DAN 方法采用了表征能力更好的多核 MMD 度量 (MK-MMD)代替了 DDC 方法中的单一核 MMD。然后,DAN 方法将多核 MMD 的参数学习融入到深度网络的训练中,不增加网络的额外训练时间。DAN 方法在多个任务上都取得了比 DDC更好的分类效果。
==为什么适配后三层:==网络的迁移能力在这三层开始就会特别地 task-specific,所以要着重适配这三层。其他网络是不是这三层就要通过自己的实验来推测。DAN 只关注使用 AlexNet。
DAN 的优化目标也由两部分组成:损失函数和自适应损失。
求解过程

  • 通过 kernel trick(类比以前的 MMD 变 换) 我们总是可以把 MK-MMD 展开成一堆内积的形式。然而,数据之间两两计算内积是非常复杂的,时间复杂度为 O(n2),这个在深度学习中的开销非常之大。作者在这里采用了 Gretton 在文章提出的对 MK-MMD 的无偏估计。
  • 在具体进行 SGD 的时候,我们需要对所有的参数求导:对 Θ 求导。在实际用 multiplekernel 的时候,作者用的是多个高斯核。
  • 学习 β 主要是为了确定多个 kernel 的权重。学习的时候,目标是:确保每个 kernel 生成的 MMD 距离的方差最小。
    (3)同时迁移领域和任务
    领域和任务同时迁移的方法,作者提出网络要进行两部分的迁移:
  • 一是domain transfer,就是适配分布,特别地是指适配marginal distribution,但是没有考虑类别信息。
    如何做 domain transfer:在传统深度网路的 loss 上,再加另一个 confusion loss,作为 classifier 能否将两个 domain 进行分开的 loss。两个 loss 一起计算,就是 domain transfer。
  • 是 task transfer,就是利用 class 之间的相似度,其实特指的是 conditional distribution。类别之间有相似度,要利用上。
    现有的深度迁移学习方法通常都只是考虑 domain transfer,而没有考虑到类别之间的信息。如何把 domain 和 task transfer 结合起来,是一个问题。
    文章针对的情况是:target 的部分 class 有少量 label,剩下的 class 无 label。
    作者提出的方法名字叫做 ==joint CNN architecture for domain and task transfer。==最大的创新点是:现有的方法都是 domain classifier 加上一个 domain confusion,就是适配。作者提出这些是不够的,因为忽略了类别之间的联系,所以提出了还要再加一个 soft label loss。意思就是在 source 和 target 进行适配的时候,也要根据 source 的类别分布情况来进行调整 target 的。其实本意和 JDA 差不多。
    Loss由三部分组成
    ==什么是 soft label loss?==这和作者的 motivation 有关。不仅仅要适配两个 domain 的marginal distribution,也要把类别信息考虑进去。而 target 中有大量数据没有 label,怎么办呢?可以利用 source 中的 label 信息。具体做法是:在网络对 source 进行训练的时候,把source 的每一个样本处于每一个类的概率都记下来,然后,对于所有样本,属于每一个类的概率就可以通过求和再平均得到。如下图所示。这样的目的是:根据 source 中的类别分布关系,来对 target 做相应的约束。比如,source 中和 bike 最相似的 class,肯定是 motorbike,而不是 truck。这样有一定的道理。
    (4)深度联合分布自适应
    JAN(Joint Adaptation Network)方法
    在深度网络中同时进行联合分布的自适应和对抗学习。JAN 方法将只对数据进行自适应的方式推广到了对类别的自适应,提了 JMMD 度量 (Joint MMD)。
    (5)AdaBN
    通过在归一化层加入统计特征的适配,从而完成迁移。
    AdaBN 对比其他方法,实现相当简单。并且,方法本身不带有任何额外的参数。在许多公开数据集上都取得了很好的效果。

小结

基于深度网络进行迁移学习,其核心在于,找到网络需要进行自适应的层,并且对这些层加上自适应的损失度量。
特别地,最近意大利的学者 Carlucci 等人在 2017 年计算机视觉领域顶级会议 ICCV 上提出了自动深度网络自适应层 (AutoDIAL, Automatic DomaIn Alignment Layers)。该方法可以很简单地被加入现有的深度网络中,实现自动的自适应学习,使得深度网络的迁移更便捷。

4、深度对抗网络迁移

1、基本思路

GAN 受到自博弈论中的二人零和博弈 (two-player game) 思想的启发而提出。它一共包括两个部分:一部分为生成网络 (Generative Network),此部分负责生成尽可能地以假乱真的样本,这部分被成为生成器 (Generator);另一部分为判别网络 (Discriminative Network),此部分负责判断样本是真实的,还是由生成器生成的,这部分被成为判别器 (Discriminator)。生成器和判别器的互相博弈,就完成了对抗训练。
在迁移学习中,存在源域和目标域,直接将一个领域的数据(通常是目标域)当作是生成的样本。此时,生成器的职能发生变化,不再生成新样本,而是扮演了特征提取的功能:不断学习领域数据的特征,使得判别器无法对两个领域进行分辨,这样原来的生成器也可以成为特征提取器。

2、核心方法

(1)DANN
在神经网络的训练中加入了对抗机制,网络称之为:DANN
学习目标是:生成的特征尽可能帮助区分两个领域的特征,同时使得判别器无法对两个领域的差异进行判别。
(2)DSN
DSA网络对DANN进行了拓展,DSN 认为,源域和目标域都由两部分构成:公共部分和私有部分。公共部分可以学习公共的特征,私有部分用来保持各个领域独立的特性。
重新定义了损失函数
ADDA ADDA 是一个通用的框架,现有的很多方法都可被看作是 ADDA的特例。
(3)SAN
选择性迁移网络。那些只存于源域中 类别在迁移时,会对迁移结果产生负迁移影响。
因此,就要求相应的迁移学习方法能够对目标域,选择相似的源域样本 (类别),同时也要避免负迁移。但是目标域通常是没有标签的,不知道和源域中哪个类别更相似。作者指出这个问题叫做 partial transfer learning。
提出SAN的方法来处理partial transfer问题。
因为不知道目标域的标签,也就没办法知道到底是源域中哪些类是目标域的。提出概率权重的判别器
有样本级别的约束,还有类别级别的约束。
在使用类别级别的约束时,由于比较依赖于之前的每个样本的预测概率,为了消除影响,作者又在目标域上加了一项熵最小化。
(4)DAAN
将动态分布适配的概念进一步扩展到了对抗网络中,证明了对抗网络中同样存在边缘分布和条件分布不匹配的问题。作者提出一个动态对抗适配网络 DAAN (Dynamic Adversarial Adaptation Networks) 来解决对抗网络中的动态分布适配问题,取得了当前的最好效果。

阅读《迁移学习简明手册》总结(二)相关推荐

  1. 火爆全网的迁移学习简明手册全面更新,重磅出版上市!(送书!)

    学习迁移学习的小伙伴大都应该读过知乎上的<小王爱迁移>系列文章或在GitHub上开源发布的迁移学习简明手册: https://zhuanlan.zhihu.com/p/35352154 & ...

  2. 火爆全网的迁移学习简明手册全面更新,重磅出版上市!

    学习迁移学习的小伙伴大都应该读过知乎上的<小王爱迁移>系列文章或在GitHub上开源发布的迁移学习简明手册: https://zhuanlan.zhihu.com/p/35352154 & ...

  3. 迁移学习_迁移学习简明手册(王晋东)_阅读笔记5-6

    5.迁移学习的基本方法 基于样本迁移: 根据一定的权重生成规则,增加源域中跟目标域样本相似度高的样本的权重. 增加狗类别样本的权重 基于特征迁移: 通常假设源域和目标域间有一些交叉的特征,通过特征变换 ...

  4. 迁移学习_迁移学习简明手册(王晋东)_阅读笔记7-8

    7.第二类方法:特征选择 特征选择法的基本假设是: 源域和目标域中均含有一部分公共的特征,在这部分公共的特征上,源领域和目标领域的数据分布是一致的.因此,此类方法的目标就是,通过机器学习方法,选择出这 ...

  5. 迁移分支_资料 | 迁移学习简明手册

    下载地址: 内容简介 迁移学习作为机器学习的一大分支,已经取得了长足的进步.本手册简明地介绍迁移学习的概念与基本方法,并对其中的领域自适应问题中的若干代表性方法进行讲述.最后简要探讨迁移学习未来可能的 ...

  6. 【赠书】迁移学习如何入门,看看这本简明手册即可

    ‍‍ 相信很多学迁移学习的同学都阅读过知乎上的<小王爱迁移>系列文章或在GitHub上开源发布的迁移学习简明手册,手册上线已逾3年,帮助了众多读者快速入门迁移学习,现在这本手册已全面更新, ...

  7. 留言赠书|GitHub收获1W星标《迁移学习导论》重新整理升级

    迁移学习怎么学? 相信不少小伙伴最初都是通过王晋东老师知乎上的<小王爱迁移>系列文章或在GitHub上开源发布的<迁移学习简明手册>来学习的! 这一系列的材料帮助了很多读者可以 ...

  8. 迁移学习---迁移学习领域各位大佬的ppt,视频下载(百度云链接)

    先附一张和迁移学习领域权威杨强教授的合影 1.王晋东---迁移学习简明手册 链接:https://pan.baidu.com/s/1mkTtxLRZA4hlxZiKchuOjg  提取码:9bj0 2 ...

  9. 专访杨强:从 0 到 1,迁移学习如何登上今日高峰?

    2020-07-22 20:20:39 作者 | 丛 末 编辑 | 蒋宝尚 人工智能研究到最后,都会面临一个问题,那就是模型是否能扩展到其此前从未见过的领域,即像人一样拥有"举一反三&quo ...

最新文章

  1. 开发者和矿工合二为一将是比特币世界的灾难
  2. html5和前端精要(1)-架构与基础(1)
  3. eclipse调出server_eclipse在server中tomcat server找不到的问题
  4. [周译见] C# 7 中的模范和实践
  5. 实战:如何对磁盘和网络IO进行评估、监控、定位和优化?
  6. [Java基础]final和static修饰符
  7. HTTPHandler有什么作用
  8. Unity Asssetbundle问题记录
  9. 云服务器部署论坛系统discuz,腾讯云服务器利用镜像搭建Discuz!论坛完整教程
  10. 解决VMware中的Windows Server 2012 R2无法成功安装Hyper-V的问题
  11. LSD算法调节参数GUI
  12. 【web前端基础 | H5】HTML简介
  13. 中国流行歌手普遍缺乏科学的高音。
  14. IDEA 程序包不存在,找不到符号但是明明存在对应的jar包 的解决方案
  15. 练习命令的使用,具体命令如下: set getrange strlen append setbit bitcount decr decrby incr incrby incr
  16. 6.openCV调整图像大小新思路(cv2.resize和imutils.resize)
  17. 如何快速修复谷歌浏览器扩展插件频繁损坏问题
  18. 软件设计模式——用Java代码实现物种特征
  19. DAY 7 | 自学前端第七天
  20. ANSYS16.0结构断裂力学 裂纹扩展视频教程

热门文章

  1. 招聘人员最喜欢问的问题有哪些
  2. ROS学习第二讲(1)
  3. JDBC Mybatis 调用 ORACLE 存储过程 函数 返回 varray 类型 function return varray out varray
  4. 菲尔兹奖得主陶哲轩:解题的策略
  5. 深蓝色固体Cyanine5-Azide,Cy5-N3,Cy5 Azide,菁染料CY5叠氮
  6. 你不可不知的《哈利波特》秘密之卑鄙的海尔波
  7. 一级网站域名与二级域名的区别,如何注册网站一级域名
  8. Parallels Desktop v17.1.1 网络初始化失败
  9. PyTorch - GAN与WGAN及其实战
  10. 影视网站导航PHP源码