mlchap07.docx

上传人:b****5 文档编号:11671624 上传时间:2023-03-30 格式:DOCX 页数:21 大小:129KB
下载 相关 举报
mlchap07.docx_第1页
第1页 / 共21页
mlchap07.docx_第2页
第2页 / 共21页
mlchap07.docx_第3页
第3页 / 共21页
mlchap07.docx_第4页
第4页 / 共21页
mlchap07.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

mlchap07.docx

《mlchap07.docx》由会员分享,可在线阅读,更多相关《mlchap07.docx(21页珍藏版)》请在冰豆网上搜索。

mlchap07.docx

mlchap07

第7章 计算学习理论

本章理论地刻画了若干类型的机器学习问题中的困难,和若干类型的机器学习算法的能力。

该理论致力于回答如下的问题:

“在什么样的条件下成功的学习是可能的?

”以及“在什么条件下一特定的学习算法可保证成功运行?

”为了分析学习算法,这里考虑了两种框架。

在可能近似正确(PAC)框架下,我们确定了若干假设类别,判断它们能否从多项式数量的训练样例中学习得到;我们还定义了一个对假设空间的自然度量,由它可以界定归纳学习所需的训练样例数目。

在出错界限(Mistakebound)框架下,我们考查了一个学习器在确定正确假设前可能产生的训练错误数量。

7.1介绍

在研究机器学习过程中,很自然地想知道学习器(机器的或非机器的)应遵循什么样的规则。

是否可能独立于学习算法确定学习问题中固有的难度?

能否知道为保证成功的学习有多少训练是必要的或充足的?

如果学习器被允许向施教者提出查询,而不是观察训练集的随机样本,会对所需样例数目有怎样的影响?

能否刻画出学习器在学到目标函数前会有多少次出错?

能否刻画出一类学习问题中固有的计算复杂度?

虽然对所有这些问题的一般回答还未知,但是不完整的学习计算理论已经开始出现。

本章阐述了该理论中的一些关键结论,并提供了在特定问题下一些问题的答案。

这里我们着重讨论只给定目标函数的训练样例和候选假设空间的条件下,对该未知的目标函数的归纳学习问题。

在这样的框架下,主要要解决的问题如:

需要多少训练样例才足以成功地学习到目标函数,以及学习器在达到目标前会有多少次出错。

如后面将看到,有可能对这些问题提出定量的上下界,这基于学习问题的如下属性。

∙学习器所考虑的假设空间的大小和复杂度

∙目标概念须近似到怎样的精度

∙学习器输出成功的假设的可能性

∙训练样例提供给学习器的方式

本章的大部分将不会着重于单独的学习算法,而是在较宽广的学习算法类别中刻画所考虑的假设空间,以及训练样例的提供方式等。

我们的目标是为了回答以下的问题:

∙样本复杂度(Samplecomplexity)。

学习器要收敛到成功假设(以较高的概率),需要多少训练样例?

∙计算复杂度(Computationalcomplexity)。

学习器要收敛到成功假设(以较高的概率)需要多大的计算量?

∙出错界限(Mistakebound)。

在成功收敛到一个假设前,学习器对训练样例的误分类有多少次?

注意为了解决这些问题需要许多特殊的条件设定。

例如,有许多方法来指定对于学习器什么是“成功的”。

一种可能的判断方法是:

学习器是否输出等于目标概念的假设。

另一种方法是只要求输出的假设与目标概念在多数时间内意见一致,或是学习器通常会输出这样的假设。

相似地,还必须指定学习器是如何获得训练样例的。

可以指定训练样例由一个施教者给出,或由学习器自己实验来获得,或按照某过程随机地生成而不受学习器的控制。

可以预料,对上述问题的回答依赖于我们所考虑的特定框架或学习模型。

本章的后续如下安排。

7.2节介绍可能近似正确(PAC)学习框架。

7.3节在此PAC框架下分析了几种学习算法的样本复杂度和计算复杂度。

7.4节介绍了假设空间复杂度的一个重要度量标准,称为VC-维,并且将PAC分析扩展到假设空间无限的情况。

7.5节介绍了出错界限模型,并提供了前面章节中几个学习算法出错数量的界限。

最后,介绍了加权多数算法,它是一个结合多个学习算法来产生合并的预测的实用算法,还介绍了该算法的理论出错界限。

7.2可能学习近似正确假设

本节我们考虑学习问题的一种特殊框架,称为可能近似正确(probablyapproximatelycorrect,PAC)学习模型。

首先我们指定PAC学习模型适用的问题,然后分析在此PAC模型下学习不同类别的目标函数需要多少训练样例和多大的计算量。

为简明起见,这里的讨论将限制在学习布尔值概念,且训练数据是无噪声的。

然而,许多结论可扩展到更一般的情形,如学习实值目标函数(比如Natarajan1991),或从某种类型的有噪声数据中进行学习(例如,见Laird1988;Kearns&Vazirani1994)。

7.2.1问题框架

如前面的章节,令X代表所有实例的集合,目标函数在其上定义。

例如,X可表示所有人的集合,每个人描述为属性age(young或old)和height(short或long)。

令C代表学习器要学习的目标概念集合。

C中每个目标概念c对应于X的某个子集,或一个等效的布尔函数c:

X→{0,1}。

例如,C中一个目标函数c为概念:

“是滑雪者的人”。

若x是c的正例,则c(x)=1;若x为反例,则c(x)=0。

假定实例按照某概率分布D从X中随机产生。

例如D可为从某体育用品商店走出来的人这样一个实例分布。

一般地,D可为任何分布,而且它对学习器是未知的。

对于D所要求的是它的稳定性,即该分布不会随时间变化。

训练样例的生成按照D分布随机抽取实例x,然后x及其目标值c(x)被提供给学习器。

学习器L在学习目标概念时考虑可能假设的集合H。

例如,H可为所有能由属性age和height的合取表示的假设集合。

在观察到了一系列关于目标概念c的的训练样例后,L必须从H中输出某假设h,它是对c的估计。

为公平起见,我们通过h在从X中抽取的新实例上的性能来评估L是否成功。

抽取过程按照分布D,即与产生训练数据相同的概率分布。

在此框架下,我们感兴趣的是刻画不同学习器L的性能,这些学习器使用不同假设空间H,并学习不同类别的C中的目标概念。

由于我们要求L足够一般,以从C中学到任何目标概念,所以不论训练样例的分布如何,我们经常会对C中所有可能的目标概念和所有可能的实例分布D进行最差情况的分析。

7.2.2假设的错误率

为了描述学习器输出的假设h对真实目标概念的逼近程度,首先要定义假设h对应于目标概念c和实例分布D的真实错误率(trueerror)。

非形式的描述是:

h的真实错误率为应用h到将来按分布D抽取的实例时的期望的错误率。

实际上第5章已经定义了h的真实错误率。

为方便起见,这里重述一下该定义,使用c表示布尔目标函数。

定义:

假设h关于目标概念c和分布D的真实错误率(trueerror)为h误分类按照D随机抽取的实例的概率。

这里符号

代表在实例分布D上计算概率。

图7-1图示了该错误率的定义。

概念c和h被表示为X中标为正例的实例集合。

h对应于c的错误率为,随机选取的实例落入h和c不一致区间(即它们的集合差)的概率。

注意,错误率定义在整个实例分布之上,而不只是训练样例之上,因为它是在实际应用此假设h到后续实例上时会遇到的真实错误率。

插图——原书页码:

205

Instancespace:

实例空间

Wherecandhdisagree:

c和h不一致的区间

图7-1关于目标概念c假设h的错误率

关于c的h的错误率为一个随机抽取的实例落入h和c对它的分类不一致的区间的概率。

+和-点表示正反训练例。

注意h关于c有一个非零的错误率,尽管迄今为止h和c在所有5个训练样例上都一致。

注意,此错误率强烈地依赖于未知的概率分布D。

例如,如果D是一个均匀的概率分布,它对X中每个实例都赋予相同的概率,那么图7-1中假设的错误率将为h和c不一致的空间在全部实例空间中的比例。

然而,如果D恰好把h和c不一致区间中的实例赋予了很高的概率,相同的h和c将造成更高的错误率。

极端情况下若D对满足h(x)=c(x)的所有实例赋予零概率,图7-1中h的错误率将为1,而不论h和c在多少实例上分类一致。

最后,注意h对应于c的错误率不能直接由学习器观察到。

L只能观察到在训练样例上h的性能,它也只能在此基础上选择其假设输出。

我们将使用术语训练错误率(trainingerror)来指代训练样例中被h误分类的样例所占比例,以区分上面定义的真实错误率。

这里关于学习复杂度的分析多数围绕着这样的问题:

“h的观察到的训练错误率对真实错误率errorD(h)产生不正确估计的可能性有多大?

注意此问题与第5章考虑的问题之间的密切联系。

回忆在第5章中定义了h关于样例集合S的样本错误率(sampleerror),为样例集合S中被h误分类的样例所占比例。

上面定义的训练错误率就是当S为训练样例集合时的样本错误率。

在第5章中,我们在数据样本S独立于h抽取的前提下,确定样本错误率对估计真实错误率产生误导的概率。

然而当S是训练数据集合时,学到的假设非常依赖于S。

因此,本章将给出这一重要的特殊情形下的分析。

7.2.3PAC可学习性

我们的目标是刻画出这样的目标概念,它们能够从合理数量的随机抽取训练样例中通过合理的计算量可靠地学习到。

对于可学习性怎样进行表述?

一种可能的选择是描述为了学习到一个使errorD(h)=0的假设h,所需的训练样例数。

不幸的是,这样的选择是不可行的,原因有两个:

首先,除非对X中每个可能的实例都提供训练样例(一个不实际的假定),否则会有多个假设与训练样例一致,而且学习器无法保证选择到目标概念。

其次,由于训练样例是随机抽取的,总有一个非0的概率使得学习器面临的训练样例有误导性。

(例如,虽然我们经常可见到不同身高的滑雪者,但在某一天中总存在这样的机会,所有训练样例都刚好是2米高。

为解决这两个困难,我们用两种方法弱化了对学习器的要求。

首先,我们不要求学习器输出零错误率假设,而只要求其错误率被限定在某常数ε的范围内,ε可为任意小。

第二,不再要求学习器对所有的随机抽取样例序列都能成功,只要求其失败的概率被限定在某个常数δ的范围内,δ也可取任意小。

简而言之,我们只要求学习器可能学习到一个近似正确的假设,因此得到了该术语“可能近似正确学习”,或PAC学习。

考虑某一目标概念类别C和使用假设空间H的学习器L。

非形式地,对C中任意目标概念c,若在观察到合理数目的训练样例并执行了合理的计算量后,L以概率(1-δ)输出一个errorD(h)<ε的假设h,则我们称概念类别C是使用H的L可PAC学习的。

更精确的定义如下:

定义:

考虑一概念类别C定义在长度为n的实例集合X上,学习器L使用假设空间H。

当对所有c∈C,X上的分布D,ε满足0<ε<1/2,以及δ满足0<δ<1/2,学习器L将以至少1-δ的概率输出一假设h∈H,使errorD(h)≤ε,这时称C是使用H的L可PAC学习的。

所使用的时间为1/ε,1/δ,n以及size(c)的多项式函数。

这里的定义要求L满足两个条件。

首先,L必须以任意高概率(1-δ)输出一个错误率任意低(ε)的假设。

第二,学习过程必须是高效的,其时间最多以多项式方式增长,多项式中1/ε和1/δ定义了对输出假设要求的强度,n和size(c)则定义了实例空间X和概念类C中固有的复杂度。

这里,n为X中实例的长度。

例如,如果实例为k个布尔值的合取,那么n=k。

size(c)为假定对C采用某种表示方法时,其中的概念c的编码长度。

例如,若C中的概念为至多k个布尔特征的合取,每个概念通过列出合取式中的特征的索引来描述,那么size(c)为实际用来描述c的布尔特征数量。

这里对PAC学习的定义开始看来只关心学习所需的计算资源,而在实践中,通常更关心所需的训练样例数。

然而这两者是紧密相关的:

如果L对每个训练样例需要某最小处理时间,那么为了使c是L可PAC学习的,L必须从多项式数量的训练样例中进行学习。

实际上,为显示某目标概念类别C是可PAC学习的,一个典型的途径是证明C中每个目标概念可以从多项式数量的训练样例中学习到,而后证明每样例处理时间也限于多项式级。

在继续讨论以前,必须指出隐含在PAC可学习性定义中的一个严格的限制。

该定义隐含假定了学习器的假设空间H包含一个假设,它与C中每个目标概念可有任意小的误差。

这一点来源于上面定义中要求学习器误差界限ε任意接近于0时也能成功运行。

当然,如果预先不知道C将很难保证这一点(对于一个从图像中识别出人脸的程序来说,C是什么?

),除非H取为X的幂集。

如第2章指出的,这样一个无偏的H将不会从合理数量的训练样例中泛化。

不过,基于PAC学习模型的结论,对于领会不同学习问题的相对复杂度以及泛化精度随着训练样例而提高的比率十分有益。

更进一步,7.3.1节中将解除这一严格假定,以考虑学习器不预先假定目标概念形式的情况。

7.3有限假设空间的样本复杂度

如上所述,PAC可学习性很大程度上由所需的训练样例数确定。

随着问题规模的增长所带来的所需训练样例的增长称为该学习问题的样本复杂度(samplecomplexity),它是通常最感兴趣的特性。

原因在于,在多数实际问题中,最限制学习器成功的因素是有限的可用训练数据。

这里将样本复杂度的讨论限定于一类非常广泛的学习器,称为一致学习器(consistentlearner)。

一个学习器是一致的(consistent),当它只要在可能时都输出能完美拟合训练数据的假设。

由于我们通常都更喜欢能与训练数据拟合程度更高的假设,因此要求学习算法的一致性是合理的。

注意前在章节讨论的很多学习器,包括第2章中的所有学习算法,都是一致学习器。

是否能独立于一特定的算法,推导出任意一致学习器所需训练样例数的界限?

回答是肯定的。

为进行该推导,需要回顾一下第2章定义的变型空间。

在那里变型空间VSH,D被定义为能正确分类训练样例D的所有假设h∈H的集合:

变型空间的重要意义在于,每个一致学习器都输出一属于变型空间的假设,而不论有怎样的实例空间X、假设空间H或训练数据D。

原因很简单,由变型空间的定义,VSH,D包含H中所有的一致假设。

因此,为界定任意一致学习器所需的样例数量,只需要界定为保证变型空间中没有不可接受假设所需的样例数量。

下面的定义精确地描述了这一条件(见Haussler1988):

定义:

考虑一假设空间H,目标概念c,实例分布D以及c的一组训练样例D。

当VSH,D中每个假设h关于c和D错误率小于ε时,变型空间被称为关于c和D是ε-详尽的(ε-exhausted)。

该定义在图7-2中示出。

ε-详尽的变型空间表示与训练样例一致的所有假设(即那些有0训练错误率的假设)的真实错误率恰好都小于ε。

当然,从学习器的角度看,所能知道的只是这些假设能同等地拟合训练数据,它们都有零训练错误率。

只有知道确切的目标概念的观察者才能确定变型空间是否为ε-详尽的。

令人惊讶的是,即使不知道确切的目标概念或训练样例抽取的分布,一种概率方法可在给定数目的训练样例之后界定变型空间为ε详尽的概率。

Haussler(1988)以下面的定理形式提供了这样的界定方法。

插图——原书页码:

208

Hypothesisspace:

假设空间

图7-2使变型空间详尽化

变型空间VSH,D为假设h∈H的子集,其中的假设都有零训练错误率(在图中表示为r=0)。

当然真实错误率errorD(h)(图中表示为error)可能非0,即使该假设在所有训练数据中错误为0。

当变型空间中所有假设h都满足errorD(h)<ε时,变型空间才是ε-详尽的。

定理7.1变型空间的ε-详尽化(ε-exhaustingtheversionspace)。

若假设空间H有限,且D为目标概念c的一系列m≥1个独立随机抽取的样例,那么对于任意0≤ε≤1,变型空间VSH,D不是ε-详尽(关于c)的概率小于或等于:

证明:

令h1,h2……hk为H中关于c的真实错误率大于ε的所有假设。

当且仅当k个假设中至少有一个恰好与所有m个独立随机抽取样例一致时,不能使变型空间ε-详尽化。

任一假设真实错误率大于ε,且与一个随机抽取样例一致的可能性最多为(1-ε)。

因此,该假设与m个独立抽取样例一致的概率最多为(1-ε)m。

由于已知有k个假设错误率大于ε,那么至少有一个与所有m个训练样例都不一致的概率最多为

并且因为k≤|H|,上式最多为|H|(1-ε)m。

最后,使用一通用不等式,当0≤ε≤1则(1-ε)≤e-ε。

因此:

定理得证。

刚才基于训练样例的数目m、允许的错误率ε和H的大小,得到了变型空间不是ε-详尽的概率的上界。

换言之,它对于任意使用假设空间H的学习器界定了m个训练样例未能将所有“坏”的假设(即错误率大于ε的假设)剔除出去的概率。

可以用这一结论来确定为了减少此“未剔除”概率到一希望的程度δ所需的训练样例数。

由:

(7.1)

从中解出m可得:

(7.2)

概括地说,式7.2中的不等式提供了训练样例数目的一般边界,该数目的样例足以在所期望的值δ和ε程度下,使任何一致学习器成功地学习到H中的任意目标概念。

训练样例的数目m足以保证任意一致假设是可能(可能性为1-δ)近似(错误率为ε)正确的。

注意m随着1/ε线性增长,并随1/δ对数增长。

它还随着假设空间H的规模对数增长。

注意上面的界限有可能是过高的估计。

例如,虽然未能详尽化变型空间的概率必须在区间[0,1]内,然而此定理给出的边界随着|H|对数增长。

对于足够大的假设空间,该边界很容易超过1。

因此,式7.2中的不等式给出的边界可能过高估计了所需训练样例的数量。

此边界的脆弱性主要来源于|H|项,它产生于证明过程中在所有可能假设上计算那些不可接受的假设的概率和。

实际上,在许多情况下可以有一更紧凑的边界,以及能够覆盖大的假设空间的边界。

这是第7.4节的主题。

7.3.1不可知学习和不一致假设

式7.2的重要性在于,它告诉我们有多少训练样例才足以保证(以概率1-δ)H中每个有零训练错误率的假设,其真实错误率最多为ε。

不幸的是,如果H不包含目标概念c,那么并不总能找到一个零错误率假设。

这时,最多能要求学习器输出的假设在训练样例上有最小的错误率。

如果学习器不假定目标概念可在H中表示,而只简单地寻找具有最小训错误率的假设,这样的学习器称为不可知学习器,因为它不预先认定CH。

虽然式7.2基于的假定是学习器输出一零错误率假设,对于更一段的情形下学习器考虑到了有非零训练错误率的假设时,仍能找到一个简单的边界。

精确地表述如下。

令D代表学习器可观察到的特定训练样例集合,而与此不同的D代表在整个实例集合上的概率分布。

令errorD(h)代表假设h的训练错误率。

确切地说,errorD(h)定义为D中被h误分类的训练样例所占比例,注意errorD(h)是在特定训练数据样本D上的,它与真实错误率errorD(h)不同,后者是定义在整个概率分布D上的。

现在令hbest代表H中有最小训练错误率的假设。

多少训练样例才足以(以较高的概率)保证其真实错误率errorD(hbest)不会多于ε+errorD(hbest)?

注意前一节讨论的问题只是现在这种情况的特例,其中errorD(hbest)恰好为0。

该问题的回答(见练习7.3)使用类似于定理7.1的证明方法。

这里有必要引入一般的Hoeffding边界(有时又称为附加Chernoff边界)。

Hoeffding边界刻画的是某事件的真实概率及其m个独立试验中观察到的频率之间的差异。

更精确地讲,这些边界应用于m个不同的Bernoulli试验(例如,m次抛掷一硬币,该硬币以某概率显示为正面)。

这种情况非常类似于第5章考虑的假设错误率估计问题:

即硬币显示为正面的概率对应到一随机抽取实例被假设误分类的概率。

m次独立的硬币抛掷对应m个独立抽取的实例。

m次实验出现正面的频率对应于m个实例中误分类的频率。

Hoeffding边界表明,当训练错误率errorD(H)在包含m个随机抽取样例的集合D上测量时,那么:

它给出了一个概率边界,说明任意选择的假设训练错误率不能代表真实情况。

为保证L寻找到的最佳的假设的错误率有以上的边界,我们必须考虑这|H|个假设中任一个有较大错误率的概率:

如果将此概率称为δ,并且问:

多少个训练样例m才足以使δ维持在一指定的值内?

可得下式:

(7.3)

这是式7.2的一般化情形,适用于当最佳假设可能有非零训练错误率时,学习器仍能选择到最佳假设h∈H的情形。

注意m依赖于H和1/δ的对数,如在式7.2中一样。

然而在这个受限较少的情形下,m随1/ε的平方增长,而不是1/ε的线性增长。

7.3.2布尔文字的合取是PAC可学习的

现在我们有了一个训练样例数目的边界,以表示该数目为多少时才足以可能近似学习到目标概念。

然后就可用它来确定某些特定概念类的样本复杂度和PAC可学习性。

考虑目标概念类C,它由布尔文字的合取表示。

布尔文字(literal)是任意的布尔变量(如Old),或它的否定(如Old)。

因此,布尔文字的合取形式可能为“Old∧Tall”。

C是否为可PAC学习的?

可以证明,回答是肯定的。

证明过程首先显示任意一致学习器只需要多项式数目的训练样例以学习到C中任意c,然后得到一特定算法能对每训练样例使用多项式时间。

考虑任意学习器L,它使用的假设空间H等于C。

我们可以用式7.2计算出足以保证(以概率1-δ)输出一最大错误率为ε的假设,所需的随机训练样例数目是m。

为达到此目标,只需要确定假设空间的规模|H|。

若假设空间H定义为n个布尔文字的合取,则假设空间|H|的大小为3n。

原因在于,任一给定的假设中每个变量可有三种可能:

包含该变量作为文字;包含该变量的否定作为文字;或不包含该变量。

由于有n个这样的变量,所以共有3n个不同的假设。

将|H|=3n代入到式7.2中,得到以下关于n布尔文字合取学习问题的样本复杂度:

(7.4)

若一个一致学习器要学习的目标概念可由至多10个布尔文字来描述,那么可有95%的概率它将学习到一个错误率小于0.1的假设,而且所需的训练样例数量m=

(10ln3+ln(1/0.05))=140。

注意m按文字数量n和1/ε线性增长,并按1/δ对数增长。

总的运算量是多少?

这当然依赖于特定的学习算法。

然而,只要学习算法的每训练样例计算量不超过多项式级,并且不超过训练样例数目的多项式级,那么整体的运算也为多项式级。

在布尔文字的学习中,一个能够符合该要求的算法已经在第2章介绍了。

这就是Find-S算法,它增量地计算与训练样例一致的最特殊假设。

对每个新的正例,该算法计算了当前假设和新样例间共享的文字的交集,使用的时间也按n线性增长。

因此,Find-S算法可能近似正确(PAC)学习一类带否定的n个布尔文字合取的概念。

定理7.2:

布尔合取式的PAC可学习性。

布尔文字合取的类C是用Find-S算法(使用H=C)PAC-可学习的。

证明:

式7.4显示了该概念类的样本复杂度是n、1/δ和1/ε的多项式级,而且独立于size(c)。

为增量式地处理每个训练样例,Find-S算法要求的运算量根据n线性增长,并独立于1/δ,1/ε和size(c)。

因此,这一概念类是Find-S算法PAC可学习的。

7.3.3其他概念类的PAC-可学习性

如前所示,在学习给定类C中的目标概念时,式7.2为界定其样本复杂度提供了一般的基础。

上例将其应用到布尔文字的合取这样的类别中。

它还可用于证明许多其他概念共有多项式级的样本复杂度(例如,见习题7.2)。

7.3.3.1无偏学习器

并非所有概念类都有如式7.2那样的多项式级样本复杂度边界。

例如,考虑一无偏(unbiased)概念类C,它包含与X相关的所有可教授概念。

该集合C对应于X的幂集,即X的有子集的集合,共包含|C|=2|X|个概念。

若X中的实例定义为n个布尔值特征,将有|X|=2n个不同概念。

当然为学习这样的无偏概念类,学习器本身也必须使用一无偏的假设空间H=C。

将|H|=22n代入到式7.2中,得到为学习对应于X的无偏概念类的样本复杂度。

(7.5)

这样,该无偏的目标概念类在PAC模型下有指数级的样本复杂度。

虽然式7.2和7.5中并非紧凑的上界,实际上可证明该无偏概念类的样本复杂度确为n的指数级。

7.3.3.2K项DNF和K-CNF概念

存在这种可能,即某概念类有多项式级的样本复杂度,但不能够在多项式时间内被学习到。

一个有趣的例子是概念

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1