当前位置: 首页 > 编程日记 > 正文

图灵奖得主Judea Pearl:从“大数据革命”到“因果革命”

整理 | 智源社区,龚鹤扬&高亦斌

2020年6月21日,在第二届北京智源大会开幕式及全体会议上,图灵奖得主、贝叶斯网络奠基人Judea Pearl 做了名为《The New Science of Cause and Effect with reflections on data science and artificial intelligence》的主题演讲。

在演讲中,Judea Pearl 站在整个数据科学的视角,简单回顾了过去的“大数据革命”,指出数据科学正在从当前以数据为中心的范式向以科学为中心的范式偏移,现在正在发生一场席卷各个研究领域的“因果革命”。Pearl 解释了什么是因果科学以及相关新逻辑和推理引擎的思想脉络,包括介绍了被称之为“Double-Helix”的两个因果推理的基本定理,并以其作为出发点推演出因果图模型框架,最后概述了该框架下因果推理的七大工具。

另外,为了帮助读者们更加透彻地理解Pearl 的因果推理思想,我们结合 Judea Pearl 近年来的论文、访谈和报告,以及其学生 Elias Bareinbion、马普智能所 Bernhard Scholkopf 团队等的相关研究工作,对本报告进行了一定的补充说明。


Judea Pearl 个人简介

朱迪亚·珀尔(Judea Pearl)是加州大学洛杉矶分校(UCLA)教授,图灵奖(Turing Award)得主。他在 20 世纪 80 年代开发并倡导了AI 的概率方法,被称为贝叶斯网络之父。然而为了强人工智能的愿景,Pearl 脱离主流 AI 研究社区,提出了一套因果的数学语言和理论,引领了正在席卷各个学科的”因果革命“。他自己最引以为傲的工作是 “The fundamental law of counterfactuals。”[4]

To Build Truly Intelligent Machines, Teach Them Cause and Effect。

——Judea Pearl

因果革命:改变数据科学的新革命

在报告中 ,Pearl 首先介绍了一场正在改变数据科学的新革命 --- ”因果革命“。因果革命和以数据为中心的第一次数据科学革命,也就是大数据革命(涉及机器学习,深度学习机器应用,例如Alpha-Go、语音识别、机器翻译、自动驾驶等等 )的不同之处在于,它以科学为中心,涉及从数据到政策、可解释性、机制的泛化,再到一些社会科学中的基础概念信用、责备和公平性, 甚至哲学中的创造性和自由意志 。可以说, 因果革命彻底改变了科学家处理因果问题的方式。

图1:Pearl 关于数据科学本质的洞见,见文献[3]

因果革命中,数据科学的任务被重新分成了三类:预测, 描述和反事实预测[6]。关于它具体如何席卷各个学科,详情可参见:

  • Bernhard Scholkopf 最引以为傲的论文之一《Causality for Machine Learning》,它概述了信息革命时代下因果和机器学习的融合的基本原理和深刻思考[5];

  • 《Causal Inference and Data-Fusion in Econometrics》是 Elias Eareinboim(Pearl 学生) 关于因果结合经济学领域的最新综述[7];

  • 因果也影响了社会科学, 医疗健康科学, 计算机和统计学等,见资料[1, 8]。

哈佛大学教授 Gary King(2014) 盛赞了这场因果革命,它指出“过去三十年关于因果理论的进展超过了人类前面积累的总和。” Pearl 继续解释说,成百上千过去认为不可能解决的问题,现在可以通过简单的数学和可计算的算法解决。在介绍完“因果革命”之后,Pearl接着介绍了本次报告的大纲:

  • 什么是因果科学,为什么它需要新的逻辑和推断引擎

  • 如何让机器获得因果推理的能力(因果推理引擎的结构)

  • 因果推理的两个基本定律

  • 因果智慧的七个工具

什么是因果科学?

当前曲线拟合的机器学习和深度学习取得了巨大的成功,为什么需要研究因果[8]?Pearl 在去年接受 Lex Fridman 访谈[4]时提到 “Everything starts with the question: What is the research question? ”。

而Pearl 在这次报告中,则用了几个统计学中的经典例子。第一个问题是:“锻炼身体是否能够有利于健康?”见下图,x轴表示运动时间,y轴表示胆固醇水平。

图2:锻炼是否有利于健康?

一方面,在图2(左)中,可以看大每个年龄组中都出现了向下的趋势,表明运动可能的确有降低人体胆固醇水平的效果;另一方面,在图2(右)中,同样的散点图并不依据年龄对数据进行分层,那么我们就会看到一个明显向上的趋势,这表明运动得越多,人体胆固醇水平就越高,这种矛盾在统计学中被成为辛普森悖论。Pearl 介绍的另外两个例子,一个是关于“药物”、“性别”、“死亡率”的研究问题:“药物有效果吗?” 另外一个是关于“疫苗”、“天花”、“死亡率”的研究问题:“疫苗有效果吗?”

这几个例子共同说明了数据可能对你讲出两个不同的故事。如果信息发生了一些变化,得到的结论就可能是不一样的。更加准确地来说,这几个例子本质上是要回答因果问题,仅有数据信息而没有先验因果关系信息的时候,就可能得出与关注研究的问题相互矛盾的答案。回答因果问题需要因果信息。

Pearl 在这次报告中指出,因果科学始于因果问题,因果科学研究如何回答因果问题。

什么是因果问题呢?他举了几个简单的例子:

1. 给定的治疗方法在预防疾病方面效果如何?

2. 是新的减税政策导致销售额上升吗?还是我们的营销活动?

3. 肥胖引起的年度医疗保健费用是多少?

4. 雇佣记录可以证明雇主犯了性别歧视吗?

5. 我即将辞职,我会后悔吗?

他解释到,上面这五个因果问题,因为这些问题都包含着不对称信息,所以无法用现在标准的科学语言,也就是具备对称性的数学公式来描述。相对于“=”表示对称信息,他用箭头 → 表示非对称信息,见下图:

图3:对称 VS 非对称

在过去的30年中,Pearl 和他的同事找到了非对称性的表达工具。他认为因果科学是回答因果问题的逻辑和工具,也就是推理引擎。通俗来说它有三个输入,包括我们想知道什么、我们已经知道什么和可用数据,以及作为输出的两类关注问题的答案:a) 现在某个行动会有什么结果?b) 过去换个选择会有什么不同的结果?

因果推理是人类思想中不可或缺的组成部分,应该对其进行形式化和算法化处理,以实现人类水平的机器智能[3]。Pearl 描述了一个因果推理的三级结构,把因果信息按其能够回答的类型进行分类。该分类形成了一个三层的层级结构,某层的问题,只有在获取不低于该层信息时,才能够被回答。

a) 三个因果层级  

       图4:三个因果层级,参见书籍[2]

第一层是关联(Association),它涉及由数据定义的统计相关性。大多数机器学习系统围绕这一层运行。

第二层是干预(Intervention),不仅涉及到能看到什么,还涉及一个干预或行动将会导致什么结果。作为例子,Pearl 提了一个问题:“如果我们把价格翻倍,将会发生什么?”

第三层是反事实(Counterfactual),是对以前发生的事情的反思和溯因,解决的是“如果过去作出不一样的行为,现在的结果会有何不同?”的问题。

顶层也就是反事实层是功能最强大的层次,如果我们有一个可以回答反事实问题的模型,那么我们也可以回答有关干预和观察的问题。例如,干预问题:What will happen if we double the price? 可以通过反事实问题来回答:What would happen had the price been twice its current value? 同样,一旦我们回答了干预问题,就可以回答关联问题。我们只是忽略了干预动作部分,而是让观测取代了。但是在相反的方向上,干预问题不能仅凭观测信息(也就是统计相关性)回答,涉及反思和溯因的反事实问题也不能仅用从随机对照实验中获得的干预信息来回答。

反事实是科学思维以及法律和道德推理的基础。举个例子,在法庭判定被告是否应该负法律责任的时候,判定有罪的一个依据是 ——“若非”被告的行为,损失就很可能不会发生(For example, in civil court, a defendant is considered responsible for an injury if, but for the defendant's action, it is more likely than not the injury would not have occurred)。"若非" 的计算含义要求将现实世界与被告未发生某行为反事实世界进行比较。用个更通俗的例子来讲,已知的事实是"一个人吃了药死了",对应的一个反事实问题是“如果此人没有吃药,不死的概率是多少?”

Pearl 在报告中指出,理解因果推理需要抓住一个窍门,那就是区分 seeing 和 doing 的不同,一个简单例子就是某个便利店中”观测到某商品的价格翻倍“和“店主强制让某商品价格翻倍”存在区别。Pearl 发明了 do 算子来数学化表示干预或行为,有了它我们能用数学公式区分 seeing 和 doing:

????(????|????)≠????(????|????????(????))

这里我们借用文献[5]中一个表格补充说明,表格的行是不同类型的问题,而列是不同类型模型:

表1:从统计模型到因果模型,再到物理模型[5]

可以看到统计模型只有关联层的信息,所以只能回答相关性问题,而不能回答干预问题和反事实问题。基于图的因果贝叶斯网络因果只有干预层的信息,所以只能回答干预和关联层的问题,而不能回答反事实问题。最后基于结构的因果模型,它的能力最接近物理模型,三个层级的问题都能够回答。事实上,朱松纯教授[10]在报告的最后向 Pearl 提出了因果建模的定位问题, 他说他喜欢因果建模的思想 “From data to science”,从上面的表格中可以看到因果模型是从统计模型走向物理模型的过渡。

b) 因果推理引擎

Pearl 提出了一套基于结构的关于因果的数学语言和理论,作为因果科学是回答因果问题的推理引擎,该引擎的特点是 “Knowledge in, Knowledge out, Data in between”, 而基本出点是因果推理的两大基本定律:

图5:因果推理的两大基本定律

他指出第一个定律是关于反事实的信息,可以推演出需要使用函数来刻画变量之间的因果关系,而第二个定律刻画了因果图结构,因果图上每个每条缺失的边都意味着在给定某些变量下的条件独立性,可用它做模型检验,结构学习和因果问题的符号演算。他以这两大基本定律为出发点,发展出了被称为结构因果模型(SCM)的数学框架,该框架能够回答三个层级的因果问题。在如下的例子中,模型用函数关系表示,而因果图上的缺失的边 CW 和 SR 都意味着给定某些变量之下的条件独立性。

 图6:一个简单结构因果模型

现代因果建模工具的发展已对所有数据密集型科学(尤其是社会科学和流行病学)产生了变革性的影响,其中因果图已成为它们的第二语言。在这些学科中,因果图模型帮助科学家从观测数据中提取因果关系,并解构了困扰研究人员数十年的悖论。

我们根据 Pearl 的论文[3]补充说明因果科学的推理引擎,它由三个部分组成:图模型,结构方程以及反事实和干预逻辑。图模型是一种语言,用于表示 Agent 对世界的了解。反事实帮助他们阐明他们想知道的事情。结构方程将两者以扎实的语义联系在一起。该推理引擎将假设(以图模型的形式)、数据和 Query 作为输入。

图7:SCM推理引擎如何结合数据和因果模型回答因果问题,见文献[3]

SCM推理引擎存在三个输出:

  • 估计式(Estimand) 是关注的查询(Query)的某个概率表达式,表示在已有模型假定下计算 Query 的一种方法;

  • Estimate 是用某种统计方法和已有数据对 Estimand 概率表达式的估计;

  • 一组拟合指标(Fit Indices)用于衡量数据与假设的兼容程度。

第一个输出是较难理解的,如果已有模型假定下某 Query 无法回答,也就是没有对应的 Estimand,则称该 Query 为“不可识别”,Pearl 的 do-calculus 就是判断 Query 是否可识别的一个完备的演算工具。Pearl 仅用抽象的方式描述了这个推理引擎,关于该引擎如何回答因果问题,如何解决数据科学中的混杂偏差,选择偏差和迁移学习问题的细节可以参考 Elia Bareinboim 的论文[7]。

因果推理的七个工具

接着 Pearl 概述了通过因果科学的推理引擎完成七个任务以及每个任务中使用的工具,并讨论了每个工具对自动推理技术的独特贡献。下面是因果智慧的七大工具:

Tool 1. Encoding causal assumptions in transparent and testable way.

Tool 2. Predicting the effects of actions and policies.

Tool 3. Computing counterfactuals and finding causes of effects (attribution, explanation, susceptibility).

Tool 4. Computing direct and indirect effects (Mediation) (discrimination, inequities, fairness)

Tool 5. Integrating data from diverse sources (external validity and selection bias).

Tool 6. Recovering from missing data.

Tool 7. Discovering causal relations from data

第一个工具就是使用因果图透明的编码了因果知识,使用 d-分离图准则下的条件独立性来检验因果结构先验假设。Pearl 给出了 Shrier 和 Platt 于 2008 年提出的运动医学领域的简单例子(热身对于运动损伤的影响),在这个例子中变量之间相互如何相互影响被透明的表示了出来,变量之间因果关系的确定可以基于合理的事实,它能用 d-分离图准则下的条件独立性来检验。

图8:一个因果图模型实例

第二个工具就是使用 Do-Calculus 定义和回答干预层的因果问题,这些问题包括计算某个行为,干预或策略产生的因果效应。继续看热身对于运动损伤的因果效应例子,我们需要选择哪些变量作为控制变量呢?是不是控制变量越多越好呢?Pearl的回答是,一定不要控制变量 Z3(也就是Previous Injury), 否则下图的因果路径(加粗)会被联通,造成混杂偏差,不能正确估计回答该因果效应的问题,正确的做法是控制变量 Z1, Z2 。具体 Do-Calculus 解决混杂偏差建议参考文献[7]。

       图9:Do-Calculus 确定控制变量

第三个工具是计算反事实,找出某个结果的原因。我们要去找到事件结果的原因,我们要进行归因,进行解释。反事实是科学思维以及法律和道德推理的基础,例如,反事实问题 “一个人吃了药死了,如果此人没有吃药,不死的概率是多少?”的答案是法律责任判定中的重要依据。

图10:反事实概率回答归因问题

第四个工具是中介分析。直接(间接)因果效应是指一个变量对另一变量的既定影响在多大程度上是直接的(间接的),这是许多不同学科都关注的一类重要因果问题,它们可用 Pearl 的推理引擎解决。这一工具现在也被用于判断「歧视」、「不公正的做法」、「不公平现象」,我们要讨论人工智能和机器学习领域中的公平性问题时,我们必须考虑中介效应,Pearl 给出了一个雇主是否有性别歧视的例子,也就是回答如何用数据判断雇主是否用性别决定录用员工与否的问题。

图11:中介分析回答性别歧视与否问题

第五个工具是泛化和数据融合。它的基本问题关于如何融合分布不同的实验性研究或观测性研究,Pearl 及其学生 Elias Bareinboim 提出一个解决此任务的框架,这是 Pearl 在文献[1]中称因果建模工具能够帮助解决 AI 应用中鲁棒性或适应性的原因。Pearl 在报告中用一个例子简单的讲解了一下基本思路,首先把数据源的数据类型(观测/RCT)和其他特点用图表(上)列出来,然后转化称对应的因果图(下),其中图中 S 节点标记了数据源的 S 指向变量有差异。这样就可以用因果建模工具综合不同数据源,回答关注总体的感兴趣因果问题,其详情见文献[7]

图12:因果推理解决多源数据集融合问题实例

第六个工具是从缺失数据恢复。由于缺少数据而导致的问题困扰着实验科学的每个分支,所有的数据都会有一个缺失值的问题,它本质是一个因果问题。实际上建立一个缺失数据因果模型之后,可以用因果推理引擎判断和实现从缺失数据下的所关注问题的推断。

图13:缺失数据问题本质是因果问题

第七个工具是因果发现。因果发现就是要去寻找一系列的模式或者图结构,能够与数据相兼容的,同时能够进行简洁的表示。当前从数据中得到因果结构的因果结构学习,不仅要学习因果结构,还要学习从数据中直接得出哪些变量是因果变量的因果表示学习,这已经成为了当前一个热点研究课题,Pearl 在文献[2]中提出了为 AI 提出小图灵测试作:

How can machines represent causal knowledge in a way that would enable them to access the necessary information swiftly, answer questions correctly, and do it with ease, as a human can?

结论

最后,Pearl 指出,因果革命不仅仅席卷了各个研究领域,也开始影响教育和实际应用,将数据科学从当前以数据为中心的范式往科学为中心的范式偏移。这个革命的高潮还没有到来,但我们将会看到一个非常声势浩大的革命,尤其是从社会智能的角度来观察。我们将能够与机器智能进行紧密的交流和互动,无论用户是谁,其可能是另外一个机器或者电力服务系统,这在社会智能领域未来的十年中就会发生。另外一个,是与伦理学相关的,即同理心,最终机器甚至会有意识和自由意志、同情心以及伦理道德。所以,我们每一个人都应更多地关注因果科学。

For me, consciousness is having a blueprint of your software.

---Pearl, 2019 Dec[4]

特别注意,我们在文章中引用论文的方式并不严格,应该把当成一个参考资料来理解。事实上,这一部分给出了笔者认为对参与这场“因果革命”至关重要,精心挑选之后的资料。希望在教会读者机器因果思维,构建能够通过小图灵测试的 Causal AI 之路上,这些资料可以帮助读者快速理解和把握因果科学全局。

下面是这些资料及其简介:

[1] “Foundations and new horizons for causal inference”  研讨会, 2019,https://opc.mfo.de/show_workshop?id=3271

因果推断始于经济和生物统计等学科,它刚刚才开始成为人工智能的一个重要工具,数学基础依旧很零碎,该研讨会聚集了来自人工智能,生物统计学,计算机科学,经济学,流行病学,机器学习,数学和统计学的顶尖研究人员,研讨会上的报告和讨论将有助于在未来几年内塑造和改变这一领域的发展。

[2] "The Book of Why: the new science of cause and effect," Judea Pearl and Dana MacKenzie, (Basic Books, 2018). http://bayes.cs.ucla.edu/WHY/

[3] J. Pearl, “The Seven Tools of Causal Inference with Reflections on Machine Learning,”  Communications of ACM, 62(3): 54-60, March 2019

[4] Judea Pearl: Causal Reasoning, Counterfactuals, Bayesian Networks, and the Path to AGI | AI Podcast https://youtu.be/pEBI0vF45ic

这三个材料是 Pearl 的因果理论的最新综述,较为通俗易懂介绍了因果关系的新科学,描绘了一条教会机器因果思维的强人工智能之路。

[5] Causality for Machine Learning, Bernhard Schölkopf, 2019

这是一篇刚刚挂 arxiv 就被 Pearl  亲自 twitter 点赞的论文,是马普智能所所长 Bernhard Scholkopf 最引以为傲的论文之一,他将被 Pearl 点赞这事情写在其个人主页自我介绍的第一段中。Scholkopf 及其团队在因果结合机器学习方面做了最多的工作,此文总结和升华了提出了信息革命时代下因果结合机器学习的一般理论和深刻思考。

[6] A Second Chance to Get Causal Inference Right: A Classification of Data Science Tasks, Miguel A. Hernán, John Hsu &Brian Healy, 2019

来自哈佛教授 Migual A. Hernan 对当前数据科学的深刻反思,澄清了数据科学任务如何分类的基本问题:prediction, description and counterfactual prediction.

[7] Causal Inference and Data-Fusion in Econometrics, P. Hünermund, E. Bareinboim.Dec, 2019.

该论文是因果革命,Pearl 的因果图模型框架如何影响某一个特定领域--计量经济学的范例。

[8] Beyond Curve Fitting: Causation, Counterfactuals, and Imagination-based AI, AAAI Spring Symposium, March 25-27, 2019 https://why19.causalai.net/

这是 Judea Pearl 和其学生 Elias Eareinboim 组织的一次研讨会,探索了 Causality + X: X 代表了某个学科。

[9]  NeurIPS’2019, From System 1 Deep Learning to System 2 Deep Learning, Yoshua Bengio. Video with synchoronized slides https://slideslive.com/38921750/from-system-1-deep-learning-to-system-2-deep-learning.

Bengio 描绘了一个具备因果推理能力和 AI 系统

[10] 加州大学洛杉矶分校UCLA朱松纯教授,浅谈人工智能:现状、任务、构架与统一 | 正本清源

推荐阅读
  • MATLAB 被禁点燃导火索,国产软件路在何方?

  • Python 玩出花儿了!一文教你用 Python 制作吃豆人游戏 | 附代码

  • 陆奇:疫情下的创业者,最不能缺两大能力

  • 使用虚幻引擎4年,我想再谈谈它的网络架构

  • 真惨!连各大编程语言都摆起地摊了

  • 为何 DeFi 将带来一场巨大的范式转变?

你点的每个“在看”,我都认真当成了AI

相关文章:

美国两政府网站被挂马 以性丑闻女星为诱饵

据安全厂商趋势科技称,美国两个政府网站近日发现被挂木马,这两家被挂马的网站都是以性丑闻女性为诱饵欺骗用户访问其它恶意网页。  圣伯纳迪诺县的宣传页面被发现感染了恶意木马,用户访问该网站时被重定向到域名Videosdivx.net下的一个网站…

除非有特殊的原因要关闭缓冲,否则使其保持打开

禁用 Web 窗体页的缓冲会导致大量的性能开销。

[React Native Android安利系列]搭建React Native Android环境

欢迎大家收看react-native-android系列教程,跟着本系列教程学习,可以熟练掌握react-native-android的开发,你值得拥有https://segmentfault.com/blog... (PS,和聊一聊系列写在一起也实在是没辙, 谁知道如何新建专栏&am…

继承QTreeWidgetItem发生error: 'staticMetaObject' is not a member of 'QTreeWidgetItem' 错误

点击打开链接 #ifndef QQUSERITEM_H就发生下列错误 #define QQUSERITEM_H #include <QTreeWidgetItem> class QQUserItem :public QTreeWidgetItem { Q_OBJECT public: explicit QQUserItem(QQUserItem *parent 0); signals: public slots: }; #endif // QQUSERITEM_H d…

使用 HttpResponse.Write 方法进行字符串串联

该方法提供非常有效的缓冲和连接服务。但是&#xff0c;如果您正在执行广泛的连接&#xff0c;请使用多个 Response.Write 调用。下面示例中显示的技术比用对 Response.Write 方法的单个调用连接字符串更快。 [C#] Response.Write("a"); Response.Write(myString); …

倒计时 8 天 | 完整议程大揭秘!来 20 个 AI 论坛,与百名大咖携手玩转人工智能...

2020年7月3—4日&#xff0c;由 CSDN 主办的第三届 AI 开发者大会&#xff08;AI ProCon 2020&#xff09;&#xff08;大会官网&#xff1a;https://aiprocon.csdn.net/&#xff09;将以线上直播的形式与大家相见。本次大会历时2天&#xff0c;一次性设立6大主题、20大精彩分论…

关于分页的解决方案收集

分页的html样式&#xff0c;可分为两种&#xff0c;pc和移动端 pc端的解决方案&#xff08;既有json版本又有get参数版本&#xff09;&#xff1a; http://laypage.layui.com/ 移动端的上拉刷新&#xff0c;下拉加载解决方案&#xff1a;(个人建议还是老实用会iscroll.js吧) ht…

MVC3+EF4.1学习系列(一)-------创建EF4.1 code first的第一个实例(强转)

文章索引和简介 基于EF4.1 code first 简单的CRUD 园子中已经有很多了 ~~ 真不想再写这个了 可是为了做一个完整的小demo 从开始 到后面的一些简单重构 还是决定认真把这个写出来 争取写些别人没写到的东西~~ 好了 开始~~ 这次要做的是个学校管理的demo&#xff08;通俗些&…

超越英伟达的,不会是另一款GPU?这家深圳公司发布全球首款数据流AI芯片

2020年6月23日&#xff0c;鲲云科技在深圳举行产品发布会&#xff0c;发布全球首款数据流AI芯片CAISA&#xff0c;定位于高性能AI推理&#xff0c;已完成量产。鲲云通过自主研发的数据流技术在芯片实测算力上实现了技术突破&#xff0c;较同类产品在芯片利用率上提升了最高11.6…

不要依赖代码中的异常

因为异常大大地降低性能&#xff0c;所以您不应该将它们用作控制正常程序流程的方式。如果有可能检测到代码中可能导致异常的状态&#xff0c;请执行这种操作。不要在处理该状态之前捕获异常本身。常见的方案包括&#xff1a;检查 null&#xff0c;分配给将分析为数字值的 Stri…

MySQL5.7配置日志

之前使用MySQL 5.1版本的时候&#xff0c;修改my.cnf&#xff0c;在[mysqld]下添加"log/data/mysql/query.log"&#xff0c;重启服务就ok了 但是在5.7会出现 Starting MySQL... ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).原因是5.7…

Linux下新增硬盘处理过程

1、Linux的硬盘识别  在/dev/下建立相应的设备文件。如  sda 表示第一块SCSI硬盘  hda 表示第一块IDE硬盘&#xff08;即连接在第一个IDE接口的Master口上&#xff09;  scd0 表示第一个USB光驱  通过fdisk -l 查看当前的设备和分区信息。注意&#xff0c;新硬盘没有…

FastSpeech语音合成系统技术升级,微软联合浙大提出FastSpeech2

来源 | 微软研究院AI头条&#xff08;ID: MSRAsia&#xff09;编者按&#xff1a;基于深度学习的端到端语音合成技术进展显著&#xff0c;但经典自回归模型存在生成速度慢、稳定性和可控性差的问题。去年&#xff0c;微软亚洲研究院和微软 Azure 语音团队联合浙江大学提出了快速…

如果有大型 Web 应用程序,可考虑执行预批编译

每当发生对目录的第一次请求时都会执行批编译。如果目录中的页面没有被分析并编译&#xff0c;此功能会成批分析并编译目录中的所有页面&#xff0c;以便更好地利用磁盘和内存。如果这需要很长时间&#xff0c;则将快速分析并编译单个页面&#xff0c;以便请求能被处理。此功能…

深入理解javascript函数系列第二篇——函数参数

前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同。函数不介意传递进来多少个参数&#xff0c;也不在乎传进来的参数是什么数据类型&#xff0c;甚至可以不传参数。本文是深入理解javascript函数系列第二篇——函数参数 arguments javascript中的函数定义并…

linux下如何查看某个软件 是否安装??? 安装路径在哪???

<1>.在linux下如何判断是否已经安装某个软件&#xff1f; 我的系统是red hat我用命令rpm查是否安装了某个软件&#xff08;例如&#xff1a; matlab 与 fluent &#xff09;&#xff0c;得到了如下的结果&#xff1a;我用rpm -qa &#xff08;| grep&#xff09; matlab …

适当地使用公共语言运行库的垃圾回收器和自动内存管理

小心不要给每个请求分配过多内存&#xff0c;因为这样垃圾回收器将必须更频繁地进行更多的工作。另外&#xff0c;不要让不必要的指针指向对象&#xff0c;因为它们将使对象保持活动状态&#xff0c;并且应尽量避免含 Finalize 方法的对象&#xff0c;因为它们在后面会导致更多…

AI又进阶!除了鉴别PS图片,还能一键卸妆

作者 | 马超编辑 | 伍杏玲封图 | 视觉中国出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;最近CVPR2020的论文集合在GitHub火了&#xff0c;CVPR2020-Paper- Code 的项目&#xff08;https://github.com/extreme-assistant/CVPR2020-Paper-Code-Interpretation&#…

[转]Git忽略规则及.gitignore规则不生效的解决办法

在git中如果想忽略掉某个文件&#xff0c;不让这个文件提交到版本库中&#xff0c;可以使用修改根目录中 .gitignore 文件的方法&#xff08;如无&#xff0c;则需自己手工建立此文件&#xff09;。这个文件每一行保存了一个匹配的规则例如&#xff1a; # 此为注释 – 将被 Git…

改善代码设计 —— 简化条件表达式(Simplifying Conditional Expressions)

系列博客 1. 改善代码设计 —— 优化函数的构成(Composing Methods) 2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects) 3. 改善代码设计 —— 组织好你的数据(Composing Data) 4. 改善代码设计 —— 简化条件表达式(Simplifying Conditional Express…

必要时调整应用程序每个辅助进程的线程数

ASP.NET 的请求结构试图在执行请求的线程数和可用资源之间达到一种平衡。已知一个使用足够 CPU 功率的应用程序&#xff0c;该结构将根据可用于请求的 CPU 功率&#xff0c;来决定允许同时执行的请求数。这项技术称作线程门控。但是在某些条件下&#xff0c;线程门控算法不是很…

嵌入式开发「坑」太多?MathWorks 高级工程师教你 debug

文/ 朱雪妍据博思数据发布的《2018-2023年中国嵌入式软件行业市场发展现状调研与投资趋势前景分析报告》表明&#xff1a;2018年上半年我国嵌入式系统软件收入达4240.2亿元&#xff0c;累计增长6.6%&#xff0c;并将持续保持高速增长。嵌入式系统是当前最热门、最具发展前途的I…

[转]cocos2d-js 3.0 屏幕适配方案 分辨率适应

首先介绍一个api和相应的参数&#xff1a; cc.view.setDesignResolutionSize(1024, 768, cc.ResolutionPolicy.FIXED_WIDTH); 这里设置游戏制作的目标尺寸和显示的模式。 模式包括&#xff1a; cc.ResolutionPolicy {// The entire application is visible in the specified a…

两个程序员的泰国普吉岛之行

十一长假后&#xff0c;我和女朋友一起去了普吉岛游玩&#xff08;作为两个程序员&#xff0c;不能每天敲代码&#xff0c;也应该放松下自己&#xff09;&#xff0c;玩的很Happy&#xff0c;也是我们第一次出国&#xff0c;所以更带有许多兴奋。也许是由于玩的太High&#xff…

使用 HttpServerUtility.Transfer 方法在同一应用程序的页面间重定向

采用 Server.Transfer 语法&#xff0c;在页面中使用该方法可避免不必要的客户端重定向。

90行Python代码,让张小龙的微信地球转起来

作者 | xiaorang来源 | 数据分析与统计学之美1.微信地球手机重启后打开微信的一瞬间&#xff0c;会看到一幅有名的图片&#xff0c;上面站着一个张小龙。你可曾想过这样一个问题&#xff0c;如果上面那个地球转起来会是怎样&#xff1f;2.效果图效果简直不要太酷炫&#xff0c;…

70.打印所有Spring boot载入的bean【从零开始学Spring Boot】

【从零开始学习Spirng Boot—常见异常汇总】 问题的提出&#xff1a; 我们在开发过程当中&#xff0c;我们可能会碰到这样的问题&#xff1a;No qualifying bean 就是我们定义的bean无法进行注入&#xff0c;那到底是什么原因呢&#xff0c;有时候挺难定位的&#xff0c;当然这…

了解 C# “.NET研究”4 中的 Dynamic 关键字

dynamic 关键字和动态语言运行时 (DLR) 是 C# 4 和 Microsoft .NET Framework 4 中的重大新增功能。 这些功能在宣布时就引起了人们的极大兴趣&#xff0c;并伴随着许多疑问。 同时人们也给出了很多答案&#xff0c;但这些答案现在已散布于各种文档以及各种技术博客和文章之中。…

“我,懂数据,不怕被裁”:这项核心能力到底有多香?

我见过市面上很多的 Python 讲解教程和书籍&#xff0c;他们大都这样讲 Python 的&#xff1a;先从 Python 的发展历史开始&#xff0c;介绍 Python 的基本语法规则&#xff0c;Python 的 list, dict, tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0…

使请求管线内的所有模块尽可能高效

请求管线内的所有模块在每次请求中都有机会被运行。因此&#xff0c;当请求进入和离开模块时快速地触发代码至关重要&#xff0c;特别是在不使用模块功能的代码路径里。分别在使用及不使用模块和配置文件时执行吞吐量测试&#xff0c;对确定这些方法的执行速度非常有用。