凸优化研究在凸集上最小化凸函数的问题。凸性,连同它的许多含义,已经被用来为许多类凸程序提出有效的算法。因此,凸优化已经广泛地影响了科学和工程的几个学科。

过去几年,凸优化算法彻底改变了离散和连续优化问题的算法设计。对于图的最大流、二部图的最大匹配和子模函数最小化等问题,已知的最快算法涉及到对凸优化算法的基本和重要使用,如梯度下降、镜像下降、内点方法和切割平面方法。令人惊讶的是,凸优化算法也被用于设计离散对象(如拟阵)的计数问题。同时,凸优化算法已经成为许多现代机器学习应用的中心。由于输入实例越来越大、越来越复杂,对凸优化算法的需求也极大地推动了凸优化技术本身的发展。

这本书的目的是使读者能够获得对凸优化算法的深入理解。重点是从第一性原理推导出凸优化的关键算法,并根据输入长度建立精确的运行时间界限。由于这些方法的广泛适用性,一本书不可能向所有人展示这些方法的应用。这本书展示了各种离散优化和计数问题的快速算法的应用。本书中所选的应用程序的目的是为了说明连续优化和离散优化之间的一个相当令人惊讶的桥梁。

目标受众包括高级本科生、研究生和理论计算机科学、离散优化和机器学习方面的研究人员。

https://convex-optimization.github.io/

第一章-连续优化和离散优化的衔接

我们提出了连续优化和离散优化之间的相互作用。最大流问题是一个激励人心的例子。我们也追溯了线性规划的历史——从椭球法到现代内点法。最后介绍了椭球法在求解最大熵问题等一般凸规划问题上的一些最新成果。

第二章 预备知识

我们复习这本书所需的数学基础知识。这些内容包括多元微积分、线性代数、几何、拓扑、动力系统和图论中的一些标准概念和事实。

第三章-凸性

我们引入凸集,凸性的概念,并展示了伴随凸性而来的能力:凸集具有分离超平面,子梯度存在,凸函数的局部最优解是全局最优解。

第四章-凸优化与效率

我们提出了凸优化的概念,并正式讨论了它意味着什么,有效地解决一个凸程序作为一个函数的表示长度的输入和期望的精度。

第五章-对偶性与最优性

我们引入拉格朗日对偶性的概念,并证明在一个称为Slater条件的温和条件下,强拉格朗日对偶性是成立的。随后,我们介绍了拉格朗日对偶和优化方法中经常出现的Legendre-Fenchel对偶。最后,给出了Kahn-Karush-Tucker(KKT)最优性条件及其与强对偶性的关系。

第六章-梯度下降

我们首先介绍梯度下降法,并说明如何将其视为最陡下降。然后,我们证明了梯度下降法在函数的梯度是连续的情况下具有收敛时间界。最后,我们使用梯度下降法提出了一个快速算法的离散优化问题:计算最大流量无向图。

第七章-镜像下降和乘法权值更新

我们推出我们的凸优化的第二个算法-称为镜面下降法-通过正则化观点。首先,提出了基于概率单纯形的凸函数优化算法。随后,我们展示了如何推广它,重要的是,从它推导出乘法权值更新(MWU)方法。然后利用后一种算法开发了一个快速的近似算法来解决图上的二部图匹配问题。

第八章-加速梯度下降

提出了Nesterov的加速梯度下降算法。该算法可以看作是前面介绍的梯度下降法和镜像下降法的混合。我们还提出了一个应用加速梯度法求解线性方程组。

第九章-牛顿法

IWe开始了设计凸优化算法的旅程,其迭代次数与误差成对数关系。作为第一步,我们推导并分析了经典的牛顿方法,这是一个二阶方法的例子。我们认为牛顿方法可以被看作是黎曼流形上的最速下降,然后对其收敛性进行仿射不变分析。

第十章 线性规划的内点法

利用牛顿法及其收敛性,推导出一个线性规划的多项式时间算法。该算法的关键是利用障碍函数的概念和相应的中心路径,将有约束优化问题简化为无约束优化问题。

第十一章-内点法的变种与自洽

给出了线性规划中路径遵循IPM的各种推广。作为应用,我们推导了求解s-t最小代价流问题的快速算法。随后,我们引入了自一致性的概念,并给出了多边形和更一般凸集的障碍函数的概述。

第十二章 线性规划的椭球法

介绍了凸优化的一类切割平面方法,并分析了一种特殊情况,即椭球体法。然后,我们展示了如何使用这个椭球方法来解决线性程序超过0-1多边形时,我们只能访问一个分离oracle的多边形。

第十三章-凸优化的椭球法

我们展示了如何适应椭球法求解一般凸程序。作为应用,我们提出了子模函数最小化的多项式时间算法和计算组合多边形上的最大熵分布的多项式时间算法。

成为VIP会员查看完整内容
0
46

相关内容

凸优化,是数学最优化的一个子领域,研究定义于凸集中的凸函数最小化的问题。

凸优化应用于很多学科领域,诸如自动控制系统,信号处理,通讯和网络,电子电路设计,数据分析和建模,统计学(最优化设计),以及金融。在近来运算能力提高和最优化理论发展的背景下,一般的凸优化已经接近简单的线性规划一样直捷易行。许多最优化问题都可以转化成凸优化。

我们提出了求解双线性鞍点问题的原对偶坐标方法,其中包含线性规划、分类和回归等特殊情况。

https://arxiv.org/abs/2009.08447

成为VIP会员查看完整内容
0
15

神经网络在诸多应用领域展现了巨大的潜力,成为当前最热门的研究方向之一。神经网络的训练主要通过求解一个优化问题来完成,但这是一个困难的非线性优化问题,传统的优化理论难以直接应用。在神经网络和优化的交叉领域,长期以来研究人员积累了大量的理论研究知识,不过这些研究或过于理论而不被大部分实践者所了解,或过于偏工程而不被理论学者所理解和欣赏。本文的目的是总结目前对于神经网络优化基本理论和算法的现状,架起理论和实践、优化和机器学习界之间的桥梁。

对苦于调参常感到困惑的工程师而言,本文可以提供一些已有的理论理解以供参考,并提供一些思考的方式。对理论学者而言,本文力图解释其作为数学问题的困难之所在以及目前的理论进展,以期吸引更多研究者投身神经网络优化理论和算法研究。

本文概述了神经网络的算法和优化理论。首先,我们讨论梯度爆炸/消失问题和更一般的谱控制问题,然后讨论实际中常用的解决方案,包括初始化方法和归一化方法。其次,我们回顾用于训练神经网络的一般优化方法,如SGD、自适应梯度方法和大规模分布式训练方法,以及这些算法的现有理论结果。第三,我们回顾了最近关于神经网络训练的全局问题的研究,包括局部极值、模式连接、彩票假设和无限宽度分析等方面的结果。

成为VIP会员查看完整内容
0
16

当前的深度学习研究以基准评价为主。如果一种方法在专门的测试集上有良好的经验表现,那么它就被认为是有利的。这种心态无缝地反映在持续学习的重现领域,在这里研究的是持续到达的基准数据集。核心挑战是如何保护之前获得的表示,以免由于迭代参数更新而出现灾难性地遗忘的情况。然而,各个方法的比较是与现实应用程序隔离的,通常通过监视累积的测试集性能来判断。封闭世界的假设仍然占主导地位。假设在部署过程中,一个模型保证会遇到来自与用于训练的相同分布的数据。这带来了一个巨大的挑战,因为众所周知,神经网络会对未知的实例提供过于自信的错误预测,并在数据损坏的情况下崩溃。在这个工作我们认为值得注意的教训来自开放数据集识别,识别的统计偏差以外的数据观测数据集,和相邻的主动学习领域,数据增量查询等预期的性能收益最大化,这些常常在深度学习的时代被忽略。基于这些遗忘的教训,我们提出了一个统一的观点,以搭建持续学习,主动学习和开放集识别在深度神经网络的桥梁。我们的结果表明,这不仅有利于每个个体范式,而且突出了在一个共同框架中的自然协同作用。我们从经验上证明了在减轻灾难性遗忘、主动学习中查询数据、选择任务顺序等方面的改进,同时在以前提出的方法失败的地方展示了强大的开放世界应用。

https://www.zhuanzhi.ai/paper/e5bee7a1e93a93ef9139966643317e1c

概述:

随着实用机器学习系统的不断成熟,社区发现了对持续学习[1]、[2]的兴趣。与广泛练习的孤立学习不同,在孤立学习中,系统的算法训练阶段被限制在一个基于先前收集的i.i.d数据集的单一阶段,持续学习需要利用随着时间的推移而到来的数据的学习过程。尽管这种范式已经在许多机器学习系统中找到了各种应用,回顾一下最近关于终身机器学习[3]的书,深度学习的出现似乎已经将当前研究的焦点转向了一种称为“灾难性推理”或“灾难性遗忘”的现象[4],[5],正如最近的评论[6],[7],[8],[9]和对深度持续学习[8],[10],[11]的实证调查所表明的那样。后者是机器学习模型的一个特殊效应,机器学习模型贪婪地根据给定的数据群更新参数,比如神经网络迭代地更新其权值,使用随机梯度估计。当包括导致数据分布发生任何变化的不断到达的数据时,学习到的表示集被单向引导,以接近系统当前公开的数据实例上的任何任务的解决方案。自然的结果是取代以前学到的表征,导致突然忘记以前获得的信息。

尽管目前的研究主要集中在通过专门机制的设计来缓解持续深度学习中的这种遗忘,但我们认为,一种非常不同形式的灾难性遗忘的风险正在增长,即忘记从过去的文献中吸取教训的危险。尽管在连续的训练中保留神经网络表示的努力值得称赞,但除了只捕获灾难性遗忘[12]的度量之外,我们还高度关注了实际的需求和权衡,例如包括内存占用、计算成本、数据存储成本、任务序列长度和训练迭代次数等。如果在部署[14]、[15]、[16]期间遇到看不见的未知数据或小故障,那么大多数当前系统会立即崩溃,这几乎可以被视为误导。封闭世界的假设似乎无所不在,即认为模型始终只会遇到与训练过程中遇到的数据分布相同的数据,这在真实的开放世界中是非常不现实的,因为在开放世界中,数据可以根据不同的程度变化,而这些变化是不现实的,无法捕获到训练集中,或者用户能够几乎任意地向系统输入预测信息。尽管当神经网络遇到不可见的、未知的数据实例时,不可避免地会产生完全没有意义的预测,这是众所周知的事实,已经被暴露了几十年了,但是当前的努力是为了通过不断学习来规避这一挑战。选择例外尝试解决识别不可见的和未知的示例、拒绝荒谬的预测或将它们放在一边供以后使用的任务,通常总结在开放集识别的伞下。然而,大多数现有的深度连续学习系统仍然是黑盒,不幸的是,对于未知数据的错误预测、数据集的异常值或常见的图像损坏[16],这些系统并没有表现出理想的鲁棒性。

除了目前的基准测试实践仍然局限于封闭的世界之外,另一个不幸的趋势是对创建的持续学习数据集的本质缺乏理解。持续生成模型(如[17]的作者的工作,[18],[19],[20],[21],[22]),以及类增量持续学习的大部分工作(如[12]中给出的工作,[23],[24],[25],[26],[27],[28])一般调查sequentialized版本的经过时间考验的视觉分类基准如MNIST [29], CIFAR[30]或ImageNet[31],单独的类只是分成分离集和序列所示。为了在基准中保持可比性,关于任务排序的影响或任务之间重叠的影响的问题通常会被忽略。值得注意的是,从邻近领域的主动机器学习(半监督学习的一种特殊形式)中吸取的经验教训,似乎并没有整合到现代的连续学习实践中。在主动学习中,目标是学会在让系统自己查询接下来要包含哪些数据的挑战下,逐步地找到与任务解决方案最接近的方法。因此,它可以被视为缓解灾难性遗忘的对抗剂。当前的持续学习忙于维护在每个步骤中获得的信息,而不是无休止地积累所有的数据,而主动学习则关注于识别合适的数据以纳入增量训练系统的补充问题。尽管在主动学习方面的早期开创性工作已经迅速识别出了通过使用启发式[32]、[33]、[34]所面临的强大应用的挑战和陷阱,但后者在深度学习[35]、[36]、[37]、[38]的时代再次占据主导地位,这些挑战将再次面临。

在这项工作中,我们第一次努力建立一个原则性和巩固的深度持续学习、主动学习和在开放的世界中学习的观点。我们首先单独回顾每一个主题,然后继续找出在现代深度学习中似乎较少受到关注的以前学到的教训。我们将继续争论,这些看似独立的主题不仅从另一个角度受益,而且应该结合起来看待。在这个意义上,我们建议将当前的持续学习实践扩展到一个更广泛的视角,将持续学习作为一个总括性术语,自然地包含并建立在先前的主动学习和开放集识别工作之上。本文的主要目的并不是引入新的技术或提倡一种特定的方法作为通用的解决方案,而是对最近提出的神经网络[39]和[40]中基于变分贝叶斯推理的方法进行了改进和扩展,以说明一种走向全面框架的可能选择。重要的是,它作为论证的基础,努力阐明生成建模作为深度学习系统关键组成部分的必要性。我们强调了在这篇论文中发展的观点的重要性,通过实证证明,概述了未来研究的含义和有前景的方向。

成为VIP会员查看完整内容
0
28

前言

遗传算法是机器学习的一个子集。在实践中,遗传算法通常不是唯一的最佳算法,你可以用来解决一个单一的,特定的问题。对于任何单独的问题,几乎总有更好、更有针对性的解决方案!所以,为什么要找麻烦呢?遗传算法是一个优秀的多工具,可以应用于许多不同类型的问题。这是瑞士军刀和正规的棘轮螺丝刀之间的区别。如果你的工作是加强300螺丝,你会想春天的螺丝刀,但如果你的工作是拧紧几个螺丝,削减一些布,一个洞在一块皮,然后打开一个冷瓶汽水奖励自己努力工作,瑞士军刀是更好的选择。另外,我认为遗传算法是机器学习的最佳入门。如果说机器学习是一座冰山,那么遗传算法就是冰山的一部分。遗传算法是有趣的,令人兴奋的,新颖的。以自然生物过程为模型的遗传算法,在计算世界和自然世界之间建立了联系。写你的第一个遗传算法,看着惊人的结果出现在混乱和随机的许多学生是令人惊叹的。处于机器学习冰山一角的其他研究领域也同样令人兴奋,但它们往往更狭隘,更难以理解。另一方面,遗传算法很容易理解,实现起来也很有趣,而且它们引入了许多被所有机器学习技术所使用的概念。如果你对机器学习感兴趣,但不知道从哪里开始,那就从遗传算法开始吧。您将学习重要的概念,您将继续到其他领域,您将构建不,您将获得一个伟大的多工具,您可以使用它来解决许多类型的问题,而且您不需要学习高等数学来理解它。 关于本书这本书给你一个简单,直接介绍遗传算法。本书没有数学、数据结构或算法方面的先决条件,但我们希望您熟悉计算机编程的水平在中级以上。虽然这里使用的编程语言是Java,但我们不使用任何特定于Java的高级语言构造或第三方库。只要您熟悉面向对象编程,遵循这里的示例就没有问题。在本书结束时,您将能够轻松地用您所选择的语言实现遗传算法,无论是面向对象语言、函数语言还是过程语言。这本书将带你通过使用遗传算法解决四个不同的问题。在此过程中,您将获得许多技术,在未来构建遗传算法时可以混合和匹配。当然,遗传算法是一个庞大而成熟的领域,它也有一个潜在的数学形式,它不可能在一本书中涵盖该领域的所有内容。所以我们划清界限:我们不讨论迂腐,我们避免数学形式,我们不进入高级遗传算法的领域。这本书是关于让你快速运行实际例子,并给你足够的基础继续学习高级主题。

关于源码本书中介绍的代码是全面的;使示例运行所需的所有内容都打印在这些页面中。然而,为了节省空间和纸张,我们经常在显示示例时省略代码注释和Java docblock。请访问http://www.apress.com/9781484203293 并打开SourceCode/Downloads tab来下载附带的Eclipse项目,其中包含本书中的所有示例代码。您将发现许多有用的注释和docblock,这些注释和docblock是您在这些页面中找不到的。通过阅读这本书和它的例子,你向最终成为机器学习专家迈出了第一步。它可能会改变你的职业生涯,但这取决于你。我们只能尽我们最大的努力来教育你们,给你们创造你们自己未来所需要的工具。祝你好运!

目录

第一章:Introduction(介绍)

第二章:Implementation of a Basic Genetic Algorithm(基本遗传算法实现)

第三章:Robotic Controllers(机器人控制)

第四章:Traveling Salesman(旅行推销商)

第五章:Class Scheduling (类调度)

第六章:Optimization(优化)

关于作者

Lee Jacobson是一名来自英国布里斯托尔的职业自由软件开发者,他在15岁时开始编写代码,并尝试编写自己的游戏。他的兴趣很快转向了软件开发和计算机科学,这使他进入了人工智能领域。在大学学习了遗传算法和其他优化技术后,他对这门学科产生了热情。他经常喜欢利用晚上的时间学习优化算法,比如遗传算法,以及如何利用这些算法解决各种问题。

Burak Kanber是土生土长的纽约人,曾参加库珀联盟(Cooper Union)促进科学与艺术的发展。他拥有机械工程学士和硕士学位,主要研究控制系统、机器人、汽车工程和混合动力汽车系统工程。然而,软件却是他毕生的热情,并且贯穿了他的一生。布拉克在参加库珀联盟(Cooper Union)时开始为纽约的初创企业提供咨询,帮助企业在各种平台和不同行业开发核心技术。在库珀联盟的艺术和设计经历也帮助布拉克培养了对产品设计的眼光和品味。自2009年创办Tidal Labs以来,Burak一直在DevOps、产品开发和机器学习方面磨砺着自己的技能。Tidal Labs是一家为企业影响力管理和内容营销提供获奖软件的科技公司。

部分截图

成为VIP会员查看完整内容
0
17

这本书来自统计学习课程,这是一门统计机器学习的入门课程,面向具有一些微积分、线性代数和统计学背景的学生。这门课程的重点是监督学习:分类和回归。本课程将涵盖机器学习和数据科学中使用的一系列方法,包括:

  • 线性回归(包括岭回归和Lasso)
  • 通过logistic回归和k近邻进行分类
  • 线性和二次判别分析
  • 回归和分类树(包括套袋林和随机林)
  • Boosting
  • 神经网络和深度学习

这些方法将在整个课程中被研究并应用于来自各种应用的真实数据。课程还涵盖了一些重要的实际问题,如交叉验证、模型选择和偏方差权衡。课程包括理论(例如,推导和证明)以及实践(特别是实验室和小型项目)。实际部分将使用Python实现。

成为VIP会员查看完整内容
0
51

这本书的目标是介绍自动微分的基本算法,以及流行的数学和统计函数的自动微分规则的百科全书式的集合。

自动微分是一种通用的技术,用于将函数的计算值转换为可计算导数的值。导数计算只给用于计算函数值的每个操作增加一个常数的开销,因此可微函数与原始函数具有相同的复杂度阶数。在描述了自动微分的标准形式之后,这本书提供了一个百科全书收集的正切和伴随规则的前向模式和后向模式自动微分,涵盖了最广泛使用的标量,向量,矩阵和概率函数。附录包含正向模式、反向模式和混合模式自动区分的工作示例代码。

成为VIP会员查看完整内容
0
39

本书概述了现代数据科学重要的数学和数值基础。特别是,它涵盖了信号和图像处理(傅立叶、小波及其在去噪和压缩方面的应用)、成像科学(反问题、稀疏性、压缩感知)和机器学习(线性回归、逻辑分类、深度学习)的基础知识。重点是对方法学工具(特别是线性算子、非线性逼近、凸优化、最优传输)的数学上合理的阐述,以及如何将它们映射到高效的计算算法。

https://mathematical-tours.github.io/book/

它应该作为数据科学的数字导览的数学伴侣,它展示了Matlab/Python/Julia/R对这里所涵盖的所有概念的详细实现。

成为VIP会员查看完整内容
0
156

本备忘单是机器学习手册的浓缩版,包含了许多关于机器学习的经典方程和图表,旨在帮助您快速回忆起机器学习中的知识和思想。

这个备忘单有两个显著的优点:

  1. 清晰的符号。数学公式使用了许多令人困惑的符号。例如,X可以是一个集合,一个随机变量,或者一个矩阵。这是非常混乱的,使读者很难理解数学公式的意义。本备忘单试图规范符号的使用,所有符号都有明确的预先定义,请参见小节。

  2. 更少的思维跳跃。在许多机器学习的书籍中,作者省略了数学证明过程中的一些中间步骤,这可能会节省一些空间,但是会给读者理解这个公式带来困难,读者会在中间迷失。

成为VIP会员查看完整内容
0
91

对因果推理的简明和自成体系的介绍,在数据科学和机器学习中越来越重要。

因果关系的数学化是一个相对较新的发展,在数据科学和机器学习中变得越来越重要。这本书提供了一个独立的和简明的介绍因果模型和如何学习他们的数据。在解释因果模型的必要性,讨论潜在的因果推论的一些原则,这本书教读者如何使用因果模型:如何计算干预分布,如何从观测推断因果模型和介入的数据,和如何利用因果思想经典的机器学习问题。所有这些主题都将首先以两个变量的形式进行讨论,然后在更一般的多元情况下进行讨论。对于因果学习来说,二元情况是一个特别困难的问题,因为经典方法中用于解决多元情况的条件独立不存在。作者认为分析因果之间的统计不对称是非常有意义的,他们报告了他们对这个问题十年来的深入研究。

本书对具有机器学习或统计学背景的读者开放,可用于研究生课程或作为研究人员的参考。文本包括可以复制和粘贴的代码片段、练习和附录,其中包括最重要的技术概念摘要。

首先,本书主要研究因果关系推理子问题,这可能被认为是最基本和最不现实的。这是一个因果问题,需要分析的系统只包含两个可观测值。在过去十年中,作者对这个问题进行了较为详细的研究。本书整理这方面的大部分工作,并试图将其嵌入到作者认为对研究因果关系推理问题的选择性至关重要的更大背景中。尽管先研究二元(bivariate)案例可能有指导意义,但按照章节顺序,也可以直接开始阅读多元(multivariate)章节;见图一。

第二,本书提出的解决方法来源于机器学习和计算统计领域的技术。作者对其中的方法如何有助于因果结构的推断更感兴趣,以及因果推理是否能告诉我们应该如何进行机器学习。事实上,如果我们不把概率分布描述的随机实验作为出发点,而是考虑分布背后的因果结构,机器学习的一些最深刻的开放性问题就能得到最好的理解。
成为VIP会员查看完整内容
0
186

机器学习是计算机科学发展最快的领域之一,有着广泛的应用。这本教科书的目的是以一种有原则的方式介绍机器学习和它提供的算法范例。这本书提供了一个基本的理论基础的机器学习和数学推导,将这些原则转化为实际的算法。在介绍了基础知识之后,这本书涵盖了以前教科书没有涉及到的一系列广泛的中心主题。这些包括讨论学习的计算复杂性和凸性和稳定性的概念;重要的算法范例包括随机梯度下降、神经网络和结构化输出学习;以及新兴的理论概念,如PAC-Bayes方法和基于压缩的边界。为高级本科生或刚开始的研究生设计,文本使学生和非专业读者在统计,计算机科学,数学和工程的机器学习的基础和算法。

成为VIP会员查看完整内容
understanding-machine-learning-theory-algorithms.pdf
0
84
小贴士
相关论文
The birth of Romanian BERT
Stefan Daniel Dumitrescu,Andrei-Marius Avram,Sampo Pyysalo
0+阅读 · 9月18日
Estimating the treatment effect of the juvenile stay-at-home order on SARS-CoV-2 infection spread in Saline County, Arkansas
Neil Hwang,Shirshendu Chatterjee,Yanming Di,Sharmodeep Bhattacharyya
0+阅读 · 9月18日
Nastaran Abadi Khooshemehr,Mohammad Ali Maddah-Ali
0+阅读 · 9月18日
Maryam K. Garba,Tom M. W. Nye,Jonas Lueg,Stephan F. Huckemann
0+阅读 · 9月17日
How Useful is Self-Supervised Pretraining for Visual Tasks?
Alejandro Newell,Jia Deng
6+阅读 · 3月31日
Optimization for deep learning: theory and algorithms
Ruoyu Sun
61+阅读 · 2019年12月19日
Bryan Wilder,Eric Ewing,Bistra Dilkina,Milind Tambe
3+阅读 · 2019年5月31日
The Evolved Transformer
David R. So,Chen Liang,Quoc V. Le
4+阅读 · 2019年1月30日
Large-Scale Study of Curiosity-Driven Learning
Yuri Burda,Harri Edwards,Deepak Pathak,Amos Storkey,Trevor Darrell,Alexei A. Efros
6+阅读 · 2018年8月13日
Georgios Damaskinos,El Mahdi El Mhamdi,Rachid Guerraoui,Rhicheek Patra,Mahsa Taziki
3+阅读 · 2018年7月9日
Top