编辑:昕朋 好困
导读
最近,LSTM之父Jürgen Schmidhuber梳理了17世纪以来人工智能的历史。在这篇万字长文中,Schmidhuber为读者提供了一个大事年表,其中包括神经网络、深度学习、人工智能等领域的重要事件,以及那些为AI奠定基础的科学家们。「人工智能」一词,首次在1956年达特茅斯会议上,由约翰麦卡锡等人正式提出。
实用AI的提出,最早可以追溯到1914年。当时Leonardo Torres y Quevedo构建了第一个工作的国际象棋机器终端游戏玩家。当时,国际象棋被认为是一种仅限于智能生物领域的活动。至于人工智能理论,则可以追溯到1931-34年。当时库尔特·哥德尔(Kurt Gödel )确定了任何类型的基于计算的人工智能的基本限制。时间来到1980年代,此时的AI历史会强调定理证明、逻辑编程、专家系统和启发式搜索等主题。
2000年代初期的AI历史会更加强调支持向量机和内核方法等主题。贝叶斯推理(Bayesian reasoning)和其他概率论和统计概念、决策树、 集成方法、群体智能和进化计算,此类技术推动了许多成功的AI应用。
2020年代的AI研究反而更加「复古」,比如强调诸如链式法则和通过梯度下降(gradient descent)训练的深度非线性人工神经网络,特别是基于反馈的循环网络等概念。
Schmidhuber表示,这篇文章对之前具有误导性的「深度学习历史」进行纠正。在他看来,之前的深度学习史忽略了文章中提到的大部分开创性工作。
一、1676年:反向信用分配的链式法则
1676年,戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz)在回忆录中发表了微积分的链式法则。如今,这条规则成为了深度神经网络中信用分配的核心,是现代深度学习的基础。
神经网络具有计算来自其他神经元的输入的可微函数的节点或神经元,这些节点或神经元又计算来自其他神经元的输入的可微函数。如果想要知道修改早期函数的参数或权值后,最终函数输出的变化,就需要用到链式法则。
二、19世纪初:神经网络、线性回归与浅层学习
1805 年,阿德利昂·玛利·埃·勒让德(Adrien-Marie Legendre)发表了现在通常称为线性神经网络的内容。
后来,约翰·卡尔·弗里德里希·高斯(Johann Carl Friedrich Gauss)也因类似的研究而受到赞誉。这个来自2个多世纪前的神经网络有两层:一个具有多个输入单元的输入层和一个输出层。每个输入单元都可以保存一个实数值,并通过具有实数值权值的连接连接到输出。神经网络的输出是输入与其权值的乘积之和。给定输入向量的训练集和每个向量的期望目标值,调整 权值,使神经网络输出与相应目标之间的平方误差之和最小化。当然,那时候这还不叫神经网络。它被称为最小二乘法(least squares),也被广泛称为线性回归。但它在数学上与今天的线性神经网络相同:相同的基本算法、相同的误差函数、相同的自适应参数/权值。这种简单的神经网络执行「浅层学习」,与具有许多非线性层的「深度学习」相反。事实上,许多神经网络课程都是从介绍这种方法开始的,然后转向更复杂、更深入的神经网络。当今,所有技术学科的学生都必须上数学课,尤其是分析、线性代数和统计学。在所有这些领域中,许多重要的结果和方法都要归功于高斯:代数基本定理、高斯消元法、统计的高斯分布等。这位号称「自古以来最伟大的数学家」的人也开创了微分几何、数论(他最喜欢的科目)和非欧几何。如果没有他的成果,包括AI在内的现代工程将不可想象。三、1920-1925年:第一个循环神经网络
与人脑相似,循环神经网络(RNN)具有反馈连接,因此可以遵循从某些内部节点到其他节点的定向连接,并最终在起点处结束。这对于在序列处理期间实现对过去事件的记忆至关重要。
物理学家恩斯特·伊辛(Ernst Ising)和威廉·楞次(Wilhelm Lenz)在 1920 年代引入并分析了第一个非学习RNN架构:伊辛模型(Ising model)。它根据输入条件进入平衡状态,是第一个RNN学习模型的基础。1972 年,甘利俊一(Shun-Ichi Amari)使伊辛模型循环架构具有自适应性,可以通过改变其连接权值来学习将输入模式与输出模式相关联。这是世界上第一个学习型RNN。目前,最流行的RNN就是Schmidhuber提出的长短期记忆网络LSTM。它已经成为20世纪被引用最多的神经网络。四、1958年:多层前馈神经网络
1958年,弗兰克·罗森布拉特(Frank Rosenblatt)结合了线性神经网络和阈值函数,设计出了更深层次的多层感知器 (MLP)。
多层感知器遵循人类神经系统原理,学习并进行数据预测。它首先学习,然后使用权值存储数据,并使用算法来调整权值并减少训练过程中的偏差,即实际值和预测值之间的误差。由于多层前馈网络的训练经常采用误差反向传播算法,在模式识别的领域中算是标准监督学习算法,并在计算神经学及并行分布式处理领域中,持续成为被研究的课题。五、1965年:第一个深度学习
深度前馈网络架构的成功学习始于1965年的乌克兰,当时Alexey Ivakhnenko和Valentin Lapa为具有任意多个隐藏层的深度MLP引入了第一个通用的工作学习算法。
给定一组具有相应目标输出向量的输入向量训练集,层逐渐增长并通过回归分析进行训练,然后借助单独的验证集进行修剪,其中正则化用于清除多余的单元。层数和每层单元以问题相关的方式学习。与后来的深度神经网络一样,Ivakhnenko的网络学会了为传入数据创建分层的、分布式的、内部表示。他没有称它们为深度学习神经网络,但它们就是这样。事实上,「深度学习」这个术语最早是由Dechter于1986年引入机器学习的,而Aizenberg等人在2000则引入了「神经网络」的概念。六、1967-68年:随机梯度下降
1967年,甘利俊一首次提出通过随机梯度下降 (SGD)训练神经网络。甘利俊一与他的学生Saito在具有两个可修改层的五层MLP中学习了内部表示,该层被训练用于对非线性可分离模式类进行分类。Rumelhart和Hinton等人在1986年做出了类似的工作,并将其命名为反向传播算法。
七、1970年:反向传播算法
1970 年,Seppo Linnainmaa率先发表了反向传播的算法,这是一种著名的可微节点网络信用分配算法,也称为「自动微分的反向模式」。
Linnainmaa首次描述了在任意、离散的稀疏连接情况下的类神经网络的高效误差反向传播方式。它现在是广泛使用的神经网络软件包的基础,例如PyTorch和谷歌的Tensorflow。反向传播本质上是为深度网络实施莱布尼茨链式法则的有效方式。柯西(Cauchy)提出的梯度下降在许多试验过程中使用它逐渐削弱某些神经网络连接并加强其他连接。1985年,计算成本已比1970年减少约1,000倍,当台式计算机刚刚在富裕的学术实验室中普及时,David Rumelhart等人对已知方法进行实验分析。通过实验,鲁姆哈特等人证明反向传播可以在神经网络的隐藏层中产生有用的内部表示。至少对于监督学习,反向传播通常比甘利俊一通过SGD方法进行的上述深度学习更有效。2010年之前,许多人认为训练多层神经网络需要无监督预训练。2010年,Schmidhuber的团队与Dan Ciresan表明深度FNN可以通过简单的反向传播进行训练,并且根本不需要对重要应用进行无监督预训练。八、1979年:首个卷积神经网络
1979年,福岛邦彦(Kunihiko Fukushima)在STRL开发了一种用于模式识别的神经网络模型:Neocognitron。
但这个Neocognitron用今天的话来说,叫卷积神经网络(CNN),是深度神经网络基本结构的最伟大发明之一,也是当前人工智能的核心技术。福岛博士引入的Neocognitron,是第一个使用卷积和下采样的神经网络,也是卷积神经网络的雏形。福岛邦彦设计的具有学习能力的人工多层神经网络,可以模仿大脑的视觉网络,这种「洞察力」成为现代人工智能技术的基础。福岛博士的工作带来了一系列实际应用,从自动驾驶汽车到面部识别,从癌症检测到洪水预测,还会有越来越多的应用。1987年,Alex Waibel将具有卷积的神经网络与权值共享和反向传播相结合,提出了延时神经网络(TDNN)的概念。1989年以来,Yann LeCun的团队为CNN的改进做出了贡献,尤其是在图像方面。2011年末,Schmidhuber的团队大大加快了深度CNN的训练速度,使其在机器学习社区中变得更加流行。团队推出基于GPU的CNN:DanNet,比早期的CNN更深入、运算更快。同年,DanNet成为第一个赢得计算机视觉竞赛的纯深度CNN。由Microsoft Research的4位学者提出的残差神经网络(ResNet),在2015年的ImageNet大规模视觉识别竞赛拔得头筹。Schmidhuber 表示,ResNet是其团队研发的高速神经网络(Highway Net)的一个早期版本。相较于以前的神经网络最多只有几十层,这是第一个真正有效的、具有数百层的深度前馈神经网络。九、1987-1990年代:图神经网络与随机Delta法则
可以操纵结构化数据(例如图形)的深度学习架构于1987年由Pollack提出,并在20世纪90年代初由 Sperduti、Goller和Küchler进行扩展和改进。如今,图神经网络被用于许多应用程序中。
Paul Werbos和R. J. Williams等人分析了在RNN中实现梯度下降的方法。Teuvo Kohonen的自组织映射(Self-Organizing Map)也流行起来。1990年,Stephen Hanson引入了随机Delta法则,这是一种通过反向传播训练神经网络的随机方法。几十年后,这个方法在「dropout」的绰号下流行起来。十、1990年2月:生成式对抗网络/好奇心
生成对抗网络(GAN)最早于1990年在以「人工智能好奇心」为名发表。
两个对抗的NN(一个概率生成器和一个预测器)试图在一个最小极限游戏中使对方的损失最大化。其中:-
生成器(称为控制器)生成概率输出(使用随机单元,如后来的StyleGAN)。
-
预测器(称为世界模型)看到控制器的输出并预测环境对它们的反应。使用梯度下降法,预测器NN将其误差最小化,而生成器NN试图这个误差最大化——一个网的损失就是另一个网络的收益。
1990年的原理被广泛用于强化学习的探索和现实图像的合成,尽管后者的领域最近被Rombach等人的Latent Diffusion接替。1991年,Schmidhuber发表了另一个基于两个对抗性NN的ML方法,称为可预测性最小化,用于创建部分冗余数据的分离表征,1996年应用于图像。
十一、1990年4月:生成子目标/按指令工作
近几个世纪以来,大多数NN都致力于简单的模式识别,而不是高级推理。
然而,在20世纪90年代初,首次出现了例外。这项工作将传统的「符号」层次式人工智能的概念注入到端到端的可区分的「次符号」(sub-symbolic)NN中。1990年,Schmidhuber团队的NN学会了用端到端可微分NN的子目标生成器来生成层次化的行动计划,用于层次化强化学习(HRL)。一个RL机器得到额外的命令输入,其形式为(开始,目标)。一个评估器NN学习预测从开始到目标的当前奖励/成本。一个基于(R)NN的子目标生成器也看到了(开始,目标),并使用评估器NN的(副本)通过梯度下降学习一连串成本最低的中间子目标。RL机器试图使用这种子目标序列来实现最终目标。该系统在多个抽象层次和多个时间尺度上学习行动计划,并在原则上解决了最近被称为「开放性问题」的问题。
十二、1991年3月:具有线性自注意力的Transformer
具有「线性自注意力」的Transformer首次发表于1991年3月。
这些所谓的「快速权重程序员」(Fast Weight Programmers)或「快速权重控制器」(Fast Weight Controllers)就像传统计算机一样分离了存储和控制,但以一种端到端差异化、自适应,以及神经网络的方式。
此外,今天的Transformer大量使用无监督预训练,这是Schmidhuber在1990-1991年首次发表的一种深度学习方法。十三、1991年4月:通过自监督的预训练进行深度学习
今天最强大的NN往往是非常深的,也就是说,它们有很多层的神经元或很多后续的计算阶段。
然而,在20世纪90年代之前,基于梯度的训练对深度NN并不奏效(只对浅层NN有效)。与前馈NN(FNN)不同的是,RNN有反馈连接。这使得RNN成为强大的、通用的、平行序列的计算机,可以处理任意长度的输入序列(比如语音或者视频)。然而,在20世纪90年代之前,RNN在实践中未能学习深层次的问题。为此,Schmidhuber建立了一个自监督的RNN层次结构,来尝试实现「通用深度学习」。
1991年4月:将一个NN蒸馏成另一个NN
通过使用Schmidhuber在1991年提出的NN蒸馏程序,上述神经历史压缩机的分层内部表征可以被压缩成一个单一的递归NN(RNN)。在这里,教师NN的知识被「蒸馏」到学生NN中,方法是训练学生NN模仿教师NN的行为(同时也重新训练学生NN,从而保证之前学到的技能不会被忘记)。NN蒸馏法也在许多年后被重新发表,并在今天被广泛使用。十四、1991年6月:基本问题——梯度消失
Schmidhuber的第一个学生Sepp Hochreiter在1991年的毕业论文中发现并分析了基本的深度学习问题。
深度NN受到现在著名的梯度消失问题的困扰:在典型的深度或递归网络中,反向传播的错误信号要么迅速缩小,要么超出界限增长。在这两种情况下,学习都会失败。十五、1991年6月:LSTM/Highway Net/ResNet的基础
长短期记忆(LSTM)递归神经网络克服了Sepp Hochreiter在上述1991年的毕业论文中指出的基本深度学习问题。
在1997年发表了经同行评审的论文之后(现在是20世纪被引用最多的NN文章),Schmidhuber的学生Felix Gers和Alex Graves等人,进一步改进了LSTM及其训练程序。1999-2000年发表的LSTM变体——带有遗忘门的「vanilla LSTM架构」,在如今谷歌的Tensorflow中依然还在应用。2005年,Schmidhuber首次发表了LSTM在时间上完全反向传播和双向传播的文章(同样也被广泛使用)。 2006年一个里程碑式的训练方法是「联结主义时间分类」(CTC),用于同时对齐和识别序列。Schmidhuber的团队在2007年成功地将CTC训练的LSTM应用于语音(也有分层的LSTM堆栈),第一次实现了卓越的端到端神经语音识别效果。2009年,通过Alex的努力,由CTC训练的LSTM成为第一个赢得国际比赛的RNN,即三个ICDAR 2009手写比赛(法语、波斯语、阿拉伯语)。这引起了业界的极大兴趣。LSTM很快被用于所有涉及序列数据的场合,比如语音和视频。2015年,CTC-LSTM的组合极大地改善了谷歌在安卓智能手机上的语音识别性能。直到2019年,谷歌在移动端搭载的语音识别仍然是基于LSTM。1995年:神经概率语言模型
1995年,Schmidhuber提出了一个优秀的神经概率文本模型,其基本概念在2003年被重新使用。2001年,Schmidhuber表明LSTM可以学习HMM等传统模型无法学习的语言。2016年的谷歌翻译,则是基于两个连接的LSTM(白皮书提到LSTM超过50次),一个用于传入文本,一个用于传出翻译。同年,谷歌数据中心用于推理的超强计算能力中,有超过四分之一用于LSTM(还有5%用于另一种流行的深度学习技术,即CNN)。到了2017年,LSTM还为Facebook的机器翻译(每周超过300亿次翻译)、苹果在大约10亿部iPhone上的Quicktype、亚马逊的Alexa的语音、谷歌的图像标题生成和自动电子邮件回答等提供支持。当然,Schmidhuber的LSTM也被大量用于医疗保健和医疗诊断——简单的谷歌学术搜索就能找到无数标题中带有「LSTM」的医学文章。 2015年5月,Schmidhuber团队基于LSTM原理提出了Highway Network,第一个具有数百层的非常深的FNN(以前的NN最多只有几十层)。微软的ResNet(赢得了ImageNet 2015比赛)便是它的一个版本。早期Highway Net在ImageNet上的表现与ResNet大致相同。Highway Net的变体也被用于某些算法任务,在这些任务中,纯残差层的效果并不理想 。LSTM/Highway Net原理是现代深度学习的核心
深度学习的核心是NN深度。在20世纪90年代,LSTM为有监督的递归NN带来了基本无限的深度;在2000年,受LSTM启发的Highway Net为前馈NN带来了深度。现在,LSTM已经成为20世纪被引用最多的NN,而Highway Net的其中一个版本ResNet,则是21世纪被引用最多的NN。
十六、1980至今:在没有老师的情况下学习行动的NNN
此外,NN也与强化学习(RL)有关。
虽然部分问题可以通过早在20世纪80年代之前发明的非神经技术来解决。比如,蒙特卡洛树搜索(MC)、动态规划(DP)、人工进化、α-β-剪枝、控制理论和系统识别、随机梯度下降,以及通用搜索技术。但深度FNN和RNN可以为某些类型的RL任务带来更好的效果。一般来说,强化学习智能体必须学会如何在没有老师的帮助下,与一个动态的、最初未知的、部分可观察的环境互动,从而使预期的累积奖励信号最大化。在行动和可感知的结果之间可能存在任意的、先验的未知延迟。当环境有一个马尔可夫接口,使RL智能体的输入可以传达确定下一个最佳行动所需的所有信息时,基于动态规划(DP)/时序差分(TD)/蒙特卡洛树搜索(MC)的RL会非常成功。对于没有马尔可夫接口的更复杂的情况,智能体不仅要考虑现在的输入,还要考虑以前输入的历史。对此,由RL算法和LSTM形成的组合已经成为了一种标准方案,特别是通过策略梯度训练的LSTM。例如,在2018年,一个经过PG训练的LSTM是OpenAI著名的Dactyl的核心,它在没有老师的情况下学会了控制一只灵巧的机器人手。视频游戏也是如此。2019年,DeepMind(由Schmidhuber实验室的一名学生共同创立)在《星际争霸》游戏中击败了职业选手,其中用到的Alphastar,就是有一个由PG训练的深度LSTM核心。
与此同时,RL LSTM(占模型总参数数的84%)也是著名的OpenAI Five的核心,它在Dota 2中击败了专业的人类玩家。RL的未来将是用复杂输入流的紧凑时空抽象来学习/组合/规划,也就是关于常识推理和学习思考。Schmidhuber在1990-91年发表的论文中提出,自监督的神经历史压缩器,可以学习多层次的抽象和多时间尺度上的表征概念;而基于端到端的可区分NN的子目标生成器,则可以通过梯度下降学习分层的行动计划。在随后的1997年和2015-18年,更复杂的学习抽象思维的方法被发表。
十七、是硬件问题,呆子!
在过去的一千年里,如果没有不断改进和加速升级的计算机硬件,深度学习算法不可能迎来重大突破。
我们第一个已知的齿轮计算设备是2000多年前古希腊的安提基特拉机械(Antikythera mechanism)。这是现今所知的最古老的复杂科学计算机,同时也是世界上第一台模拟计算机。而世界上第一台实用的可编程机器,是古希腊机械学家海伦于公元1世纪发明的。17世纪的机器变得更为灵活,可以根据输入数据计算答案。第一台用于简单算术的机械计算器由威廉·契克卡德(Wilhelm Schickard)于1623年发明制造。1673年,莱布尼茨设计了第一台可以执行所有四种算术运算,并带有内存的机器。他还描述了由穿孔卡控制的二进制计算机的原理并提出链式法则,构成了深度学习和现代人工智能的重要组成部分。1800年左右,约瑟夫·玛丽·雅卡尔 (Joseph Marie Jacquard) 等人在法国制造了第一台首台可设计织布机——雅卡尔织布机(Jacquard machine)。该发明对将来发展出其他可编程机器(例如计算机)起了重要作用。他们启发了阿达·洛芙莱斯(Ada Lovelace)和她的导师查尔斯·巴贝奇(Charles Babbage)发明了一台现代电子计算机的前身:巴贝奇差分机。在随后的1843年,洛芙莱斯公布了世界上第一套计算机算法。1914年,西班牙人Leonardo Torres y Quevedo成为20世纪第一位人工智能先驱,他创造了第一个国际象棋终端机器玩家。1935年至1941年间,康拉德·楚泽(Konrad Zuse)发明了世界上第一台可运行的可编程通用计算机:Z3。
与巴贝奇分析机不同,楚泽使用莱布尼茨的二进制计算原理,而不是传统的十进制计算。这大大简化了硬件的负荷。1944年,霍华德·艾肯(Howard Aiken)带领团队,发明世界上第一台大型自动数字计算机Mark Ⅰ(马克一号)。1948年,弗雷德里克·威廉姆斯(Frederic Williams)、汤姆·基尔伯恩(Tom Kilburn)和杰夫·托蒂(Geoff Tootill)发明了世界第一台电子存储程序计算机:小型实验机 (SSEM),又被称为「曼彻斯特宝贝」(Manchester Baby)。从那时起,计算机的运算在集成电路(IC)的帮助下变得更快。1949年,西门子的维尔纳·雅各比(Werner Jacobi)申请了一项集成电路半导体专利,使一个公共基板可以有多个晶体管。1958年,Jack Kilby展示了带有外部导线的集成电路。1959年,罗伯特·诺伊斯 (Robert Noyce) 提出了单片集成电路。自上世纪70年代以来,图形处理单元 (GPU) 已被用于通过并行处理来加速计算。现在,计算机的GPU包含数十亿个晶体管。物理极限在哪里?根据汉斯·约阿希姆·布雷默曼(Hans Joachim Bremermann)提出的布雷默曼极限,一台质量为1千克、体积为1升的计算机最多可以在最多10的32次方位上每秒执行最多10的51次方操作。然而,太阳系的质量只有2x10^30千克,这一趋势势必会在几个世纪内打破,因为光速会严重限制以其他太阳系的形式获取额外质量。因此,物理学的限制要求未来高效的计算硬件必须像大脑一样,在三维空间中有许多紧凑放置的处理器以最小化总连接成本,其基本架构本质上是一种深度的、稀疏连接的三维RNN。Schmidhuber推测,此类RNN的深度学习方法将变得更加重要。十八、1931年以来的人工智能理论
现代人工智能和深度学习的核心主要是基于近几个世纪的数学:微积分、线性代数和统计学。
20世纪30年代初,哥德尔创立了现代理论计算机科学。他引入了一种以整数为基础的通用编码语言,允许以公理形式将任何数字计算机的操作正规化。同时,哥德尔还构建了著名的形式化语句,通过给定一个计算性的定理检验器,从可列举的公理集合中系统地列举所有可能的定理。因此,他确定了算法定理证明、计算以及任何类型的基于计算的人工智能的基本限制。此外,哥德尔在写给约翰·冯·诺伊曼的著名信件中,确定了计算机科学中最著名的开放问题「P=NP?」。1935年,Alonzo Church通过证明Hilbert和Ackermann的决策问题没有一般的解决方案,得出了哥德尔结果的一个推论。为了做到这一点,他使用了他的另一种通用编码语言,称为Untyped Lambda Calculus,它构成了极具影响力的编程语言LISP的基础。1936年,阿兰·图灵引入了另一个通用模型:图灵机,重新得出了上述结果。同年,Emil Post发表了另一个独立的计算通用模型。康拉德·楚泽不仅创造了世界上第一台可用的可编程通用计算机,并且还设计了第一种高级编程语言——Plankalkül。他在1945年将其应用于国际象棋,在1948年应用于定理证明。
Plankalkül20世纪40-70年代的大部分早期人工智能实际上是关于定理证明和通过专家系统和逻辑编程进行哥德尔式的推导。1964年,Ray Solomonoff将贝叶斯(实际上是拉普拉斯)概率推理和理论计算机科学结合起来,得出一种数学上最优(但计算上不可行)的学习方式,从过去的观察中预测未来数据。他与Andrej Kolmogorov一起创立了柯氏复杂性或算法信息论(AIT)的理论,通过计算数据的最短程序的概念,将奥卡姆剃刀的概念正式化,从而超越了传统的信息论。
柯氏复杂性自指哥德尔机更通用的最优性并不局限于渐进式最优。尽管如此,由于各种原因,这种数学上的最优人工智能在实践上还不可行。相反,实用的现代人工智能是基于次优的、有限的、但并不被极度理解的技术,如NN和深度学习则是重点。但谁知道20年后的人工智能历史会是什么样的呢?
参考资料:
https://people.idsia.ch/~juergen/deep-learning-history.html
END
原文标题:人工智能300年!LSTM之父万字长文:详解现代AI和深度学习发展史
文章出处:【微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。
-
imagination
+关注
关注
1文章
564浏览量
61161
原文标题:人工智能300年!LSTM之父万字长文:详解现代AI和深度学习发展史
文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论