1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象 以及它们之间的 关系和运算等的学科。2. 数据结构被形式地定义为(D, R),其中D是数据元素 的有限集合,R是D上的 关系 有限集合。3. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构 和非线性结构 。5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。6. 在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。7. 在树形结构中,树根结点没有前驱 结点,其余每个结点有且只有1个前驱结点;叶子结点没有后续 结点,其余每个结点的后续结点数可以任意多个 。8. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个 。9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序 、 链式 、 索引 和 散列 。10. 数据的运算最常用的有5种,它们分别是插入 、 删除、修改、 查找 、排序。11. 一个算法的效率可分为时间效率和空间效率。12. 在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。13. 线性表中结点的集合是有限的,结点间的关系是一对一的。14. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1 个元素。15. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。16. 在顺序表中访问任意一结点的时间复杂度均为O(1),因此,顺序表也称为随机存取的数据结构。17. 顺序表中逻辑上相邻的元素的物理位置必定相邻。单链表中逻辑上相邻的元素的物理位置不一定 相邻。18.在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。19. 在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。20.栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。21. 栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。不允许插入和删除运算的一端称为栈底。22. 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。23. 由3个结点所构成的二叉树有5种形态。24. 一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31个分支结点和26-1=32个叶子。注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。25. 一棵具有257个结点的完全二叉树,它的深度为9。26.设一棵完全二叉树有700个结点,则共有350个叶子结点。答:最快方法:用叶子数=[n/2]=35027. 设一棵完全二叉树具有1000个结点,则此完全二叉树有500个叶子结点,有499个度为2的结点,有1个结点只有非空左子树,有0个结点只有非空右子树。答:最快方法:用叶子数=[n/2]=500,n2=n0-1=499。 另外,最后一结点为2i属于左叶子,右叶子是空的,所以有1个非空左子树。完全二叉树的特点决定不可能有左空右不空的情况,所以非空右子树数=0.28.在数据的存放无规律而言的线性表中进行检索的最佳方法是顺序查找(线性查找)。29. 线性有序表(a1,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索8 次。设有100个结点,用二分法查找时,最大比较次数是7。30. 假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为2;比较四次查找成功的结点数为 8;平均查找长度为3.7。31.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素28,6,12,20比较大小。32.在各种查找方法中,平均查找长度与结点个数n无关的查找方法是散列查找 。33. 散列法存储的基本思想是由关键字的值决定数据的存储地址。
广义估计方程是一种研究纵向数据(比如重复测量数据,面板数据)的方法。同一测量对象的多次测量数据结果之间很可能有着相关关系,如果不考虑数据之间的相关性会造成信息损失。常见的研究模型(比如线性回归)都要求数据之间独立,此时可使用广义估计方程进行研究。重复测量方差要求数据完整不能有缺失,但在实际研究中,有缺失数据较为普遍,此时也可以使用广义估计方程进行研究。不同的是,重复测量方差是从差异关系角度分析,但广义估计方程是从影响关系角度分析。除此之外,重复测量方差要求因变量Y为定量连续数据,自变量X是定类数据;但是广义估计方程时,因变量Y为定量数据或者二分类数据,也或者泊松分布,负二项分布数据均可,对自变量的数据类型也无特别要求,如果是定类数据直接做虚拟变量设置即可。一、案例背景为研究青少年牙齿发育情况与年龄,性别的关系,现收集27名儿童,他们分别在8,10,12,14岁共4个年龄时的牙齿长度指标(distance,垂体至翼上颌裂长度)。现在想研究不同性别儿童牙齿长度指标是否有着明显的差异性。明显的,本研究数据为纵向数据即重复测量,同一对象测量了4个年龄段(还有一种纵向数据是比如同一对象测量不同的几个部位),本份数据由于没有缺失数据,因变量为定量数据,因而也可使用重复测量方差进行研究(年龄为组内项)。本案例使用GEE进行研究分析。研究数据结构如下图:subjectID:标识具体是哪个研究对象,本次共有27名儿童,编号分别从1~27;性别:标识研究对象的性别,“1”表示男性,“0”表示女性;年龄:标识研究对象的测量时间点,分别为8,10,12和14岁这4个时间点进行测量,该项为组内项;distance:牙齿长度指标“垂体至翼上颌裂长度”,该数据为定量连续数据,因此需要使用回归模型。二、理论说明广义估计方程涉及两部分内容,一是模型的选择,二是矩阵结构。(1)模型的选择使用广义估计方程首先要根据因变量Y的数据分布特征,选择适合的模型。如果因变量是定量连续数据,通常使用线性回归模型;如果因变量的二分类数据,只有数字0或1,那么可使用二元Logit或二元Probit回归;如果因变量服从泊松分布,可使用泊松回归。如果因变量Y的数据特征有点类似泊松分布,但是均值与方差差异较大,则使选择负二项回归模型。(2)矩阵结构广义估计方程GEE用于解决数据独立性问题,矩阵结构正是解决此问题的具体方式。等相关exchangeable:数据之间有着相关性,而且相关性相等,此种情况使用较多。自相关autoregressive:数据之间有着相关性,而且相邻时间点相关性越大,时间间隔越大相关性越小。独立independence:数据之间完全独立,同一对象的不同测量数据之间没有关系,此种情况相关于数据完全独立,即数据确实是重复测量,但并没有违反独立性原则。使用较少,但可作为一种探索对比进行分析。那么上述三种矩阵结构如何选择呢?通常的选择办法是分别进行此三种结构时的模型,并且记录下QIC值,QIC值越小,此时就使用对应的矩阵结构模型。 在广义估计方程中,事实上还有其它的矩阵结构,比如M-dependent,Unstructured等,使用相对较少。三、操作登录SPSSAU,选择【实验/医学研究】--【广义估计方程】。本例子使用广义估计矩阵模型,由于因变量Y为定量连续数据,因此选择回归模型 ,并且暂使用默认的等相关exchangeable矩阵结构,操作如下图:由于性别使用数字1表示男性,数字0表示女性,已经是哑变量数据,并不需要进行处理;年龄作为组内项可放入对应框中。四、SPSSAU输出结果SPSSAU共输出三个表格,分别是模型基本信息,模型回归系数汇总和边际效应分析结果。(1)模型基本信息上表格展示模型基本信息,包括每个研究对象subject的测量数量,本案例全部都是4,即都测量了4次;比如本次研究对象为27个,每个对象都有完整的4次重复测量数据,因此测量最小,最大或平均个数均为4。同时展示链接函数(模型结构)为Linear即线性回归模型,作业相关矩阵(矩阵结构)为等相关。QIC值为113.8。(2)模型回归系数模型回归系数:展示模型的回归值等,结果中的OR值及OR 95%CI值,仅在二元logit,二元probit,泊松回归或负二项回归模型时才有意义;从上表可知:性别的回归系数值为2.321(z=3.096, p=0.002 <0.01),呈现出0.01水平的显著性,意味着性别会对distance产生正向影响,即相对于女性而言,男性群体的distance牙齿长度明显发育更长。(3)边际效应分析结果边际效应分析结果:此表格在计量研究中使用较多,通常可忽略。边际效应指X变化一单位时,Y带来的幅度变化,该指标通常在计量经济研究中使用较多;边际效应结果在计量研究时,而且是使用线性回归时会有一些用处。比如上表格中边际效应dy/dx值为2.321,其代表性别增加一个单位(即从女性变化到男性时),因变量distance牙齿长度增加幅度为2.321。
对于一个程序来说,数据结构和算法有多重要呢?1、它是必备技能,不懂数据结构与算法的人不可能写得好代码。2、它是面试的敲门砖、职场晋升的加速器。3、日常开发中的性能问题需要通过优化算法和数据结构来解决。4、底层开发中需要使用非常多的数据结构和算法知识,以保证底层系统的稳定性和高效性,例如,华为EMUI系统通过优化算法和数据结构来保障系统使用2年不卡顿。5、计算机科学的很多新行业都离不开数据结构和算法作为基石,如大数据、人工智能等等。牛皮了!终于有阿里架构师把困扰我多年的数据结构与算法讲明白了目录展示需要完整版笔记的朋友请转发+关注,然后私信【资料】即可获得免费领取方式!Java与面向对象程序设计在这一章中向读者简要介绍有关Java的基本知识。Java 语言是一种广泛使用并且具有许多良好的如面向对象、可移植性、健壮性等特性的计算机高级程序设计语言,在这里对Java的介绍不可能面面俱到,因此在第一章中只对理解书中Java代码的相关知识进行介绍。对于熟悉Java的读者可以不阅读本章。数据结构与算法基础这一章主要由两部分内容组成:即数据结构和算法的基础知识。在这一章中我们主要介绍数据结构与算法的一些基本概念。使读者了解什么是数据结构,数据结构研究的主要内容是什么;同时使读者了解什么是算法,以及如何评价一个算法的性能。线性表线性结构是最简单的,也是最常用的数据结构之一 。线性结构的特点是:在数据元素的有限集中,除第一个元素无直接前驱,最后一个元素无直接后续以外,每个数据元素有且仅有一个直接前驱元素和一个直接后续元素。在这一章中主要介绍线性表的基本概念、定义线性表的抽象数据类型;在给出线性表的顺序存储结构和链式存储结构的基础上,分别给出线性表抽象数据类型的实现。栈与队列栈和队列是两种重要的数据结构。从栈与队列的逻辑结构上来说,它们也是线性结构,与线性表不同的是它们所支持的基本操作是受到限制的,它们是操作受限的线性表,是一种限定性的数据结构。递归递归是在计算机科学、数学等领域运用非常广泛的一种方法。使用递归的方法解决问题,一般具有这样的特征:我们在寻求一个复杂问题的解时,不能立即给出答案,然而从一个规模较小的相同问题的答案开始,却可以较为容易地求解复杂的问题。本章介绍两种基本的基于递归的算法设计技术,即基于归纳的递归和分治法。树前面我们介绍了线性表、栈和队列,这些数据结构都是线性结构,在本章中我们介绍一种重要的非线性结构一树。在第二章曾经介绍,在树结构中数据元素之间的逻辑关系是前驱唯一而后续不唯一,即数据元素之间是一对多的关系。 如果直观地观察,树结构是具有分支的层次结构。树结构在客观世界中广泛存在,如行政区划、社会组织机构、家族世系等都可以抽象为树结构。树结构在计算机科学领域也有非常广泛的应用,例如文件系统、编译系统、数据库系统、域名系统等领域。本章重点讨论二叉树的存储表示及其各种运算,并研究一般树和森林与二叉树的转换关系,最后介绍树的应用实例。从本章开始逐渐将注意力转向算法,对于抽象数据类型的完整封装实现可以通过本书提供的源代码获得。图图是一种较线性结构和树结构更为复杂的数据结构,在图结构中数据元素之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。由此,图的应用也极为广泛,在诸如系统工程、控制论、人工智能、计算机网络等许多领域中,都将图作为解决问题的数学手段之一。在离散数学中主要侧重于图的理论研究,在本章中主要是讨论图在计算机中的表示,以及使用图解决一些实际问题的算法实现。查找在非数值运算问题中,数据存储量一般很大,为了在大量信息中找到某些值,需要用到查找技术,为了提高查找效率,需要对一些数据进行排序。查找和排序的数据处理量占有非常大的比重,故查找和排序的有效性直接影响到算法的性能,因而查找和排序是重要的处理技术。从本章开始,我们将介绍查找和排序。排序从第9章的内容容易看出,为了查找方便,通常希望计算机中的查找表是按关键字有序的,因为此时可以使用查找效率较高的折半查找。并且在实际的工程应用中经常会碰到排序的问题,因此学习和研究各种排序方法非常重要。本章介绍了排序的基本概念和几类重要的排序方法,从算法设计的角度看,这些算法体现了重要的程序设计思想和高超的程序设计技巧,为创造新方法提供了基础。算法视频分享“左神”左程云算法精品视频,一并整理给大家。数据结构与算法视频及文档资料需要的朋友转发关注我,私信【资料】即可。学习算法的目的在于应用,需要在实际开发中灵活使用。祝大家都能在算法的道路上越走越顺。
目前计算机专业的研究方向主要分为四个大方向:分别是:AI(人工智能)、Systems(计算机系统)、Theory(计算机理论)、Interdisciplinary Areas(交叉领域),各个大方向又会有很多具体的研究方向。一、AI(人工智能)方向专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。自然语言处理主要应用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、文本语义对比、语音识别、中文OCR等方面。信息检索有广义和狭义的之分。广义的信息检索全称为“信息存储与检索”,是指将信息按一定的方式组织和存储起来,并根据用户的需要找出有关信息的过程。狭义的信息检索为“信息存储与检索”的后半部分,通常称为“信息查找”或“信息搜索”,是指从信息集合中找出用户所需要的有关信息的过程。狭义的信息检索包括3个方面的含义:了解用户的信息需求、信息检索的技术或方法、满足信息用户的需求。二、计算机系统(System)方向指根据属性和功能不同而划分的计算机理论组成部分及计算机基本工作原理、理论的总称。其中计算机理论组成部分并不单与某一个实际硬件相挂钩,如存储部分就包括寄存器、内存、硬盘等。指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。指的是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。指通常使用很多处理器或者某一集群中组织的几台计算机的计算系统和环境。三、计算机理论(Theory)方向指的是理论计算机科学的分支学科,使用数学方法对计算中所需的各种资源的耗费作定量的分析,并研究各类问题之间在计算复杂程度上的相互关系和基本性质,是算法分析的理论基础。指的是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。四、交叉领域(Interdisciplinary Areas)方向这是生物学的一个分支,是指开发和应用数据分析及理论的方法、数学建模和计算机仿真技术等,用于生物学、行为学和社会群体系统的研究的一门学科。是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。是一门研究系统与用户之间的交互关系的学问。好了,本文到此结束。如果对编程、计算机、程序员方面感兴趣的话,欢迎私信联系我,随时交流!点个关注,是对我莫大的鼓励!
科技巨头对AI顶尖人才的争夺正在继续,已经凝聚大量尖端AI人才的百度,从未放缓招揽全球顶尖AI科学家的步伐。“不是新闻”的新闻9月24日,百度研究院宣布再迎一位世界级科学家——著名的计算机和大数据理论领域专家、前密西西比大学校长、计算机教育界知名人士Jeffrey Vitter。Jeffrey Vitter将加入百度研究院顾问委员会,推动大数据与人工智能技术的结合,助力百度研究院的前瞻性研究。Jeffrey Vitter何人?百度了一下,发现这位科学家曾到访过中国。2012年时任美国堪萨斯大学教务长、常务副校长的他率团访问西安电子科技大学,做了题为“Compressed Data Structures(压缩数据结构)”的学术报告。西电新闻稿介绍称,他是数据压缩领域的国际领军人物及创建者,他的报告内容是其在数据压缩领域的突破,他自行发明的小波树数据结构和压缩后缀数组已成为现代文本索引和压缩的一个重要组成部分,且在搜索引擎中的广泛应用。Jeffrey Vitter 1980年毕业于美国斯坦福大学计算机系,获得博士学位,师从于算法和程序设计技术的先驱者、图灵奖获得者唐纳德克努特博士(Donald E. Knuth)——计算机相关专业人士对这一名字都耳熟能详,他是计算机排版系统TEX和METAFONT的发明者,帮助其拿到图灵奖的“程序设计圣经”《计算机程序设计的艺术》被视作是计算机科学理论与技术的经典巨著,被《美国科学家》杂志列为20世纪最重要的12本物理科学类专著之一,与爱因斯坦《相对论》、狄拉克《量子力学》、理查·费曼《量子电动力学》等并肩。名师出高徒,Jeffrey Vitter大数据领域的研究使得其Google学术h-指数高达60,他开创了海量数据处理的四个子领域,是外存算法领域的创始人,是第一个在数据库领域应用小波和压缩技术的学者,相关论文获得ACM SIGMOD最具影响力奖。他是ACM算法和计算理论特别兴趣组主席以及多个学术研究组织和协会的主席/会员。在科研外,Jeffrey Vitter是一位出色的教学管理者,拥有39年的教学和研究经验,曾在2016年1月至2019年1月期间担任美国密西西比大学第17任校长,并先后在包括布朗大学、杜克大学、普渡大学、堪萨斯大学在内的美国著名高校担任教学和领导职务。总之,是一个计算机领域特别是数据领域的超级大牛就是了,数据是AI的基石,Jeffrey Vitter加入百度研究院,对百度AI前沿基础理论技术的研究显然是重要加持。在Jeffrey Vitter加入百度研究院的同时,美国俄勒冈大学教授窦德景也加盟百度研究院,担任大数据实验室主任。窦德景在人工智能、数据挖掘、数据集成、信息提取等领域有着很深的造诣,曾先后任职清华大学研究助理、耶鲁大学研究助理、斯坦福大学客座副教授、俄勒冈大学教授,2018年起兼任俄勒冈大学美国国家科学基金会大学习中心主任,其在诸多顶级会议和期刊上发表过有影响力的优秀学术论文,每年都担任国际主要会议的程序委员会成员,曾任五个国际会议的程序委员会共同主席,并多次担任美国自然科学基金会和国立卫生院的专家评审,目前是三个国际著名期刊的编委会成员。窦德景于1996年在清华大学获得电子工程专业学士学位,2000年在耶鲁大学获得电气工程专业硕士学位,2004年在耶鲁大学获得人工智能专业博士学位。从取得AI博士学位时间点来看,德景算是人工智能专业领域的先行者。百度AI技术人才济济,对于很多科技巨头来说,能从百度研究院下属实验室挖到大牛做AI技术负责人是新闻。不过百度研究院同时将两位世界级大牛收入囊中,对百度而言,却不算“大”新闻。百度研究院不断扩张上百度研究院官网http://research..com/People看了一下,赫然在列的顶级科学家已多达数十位。兼任百度研究院院长的百度CTO王海峰,本身就是自然语言处理领域的世界级大牛,是自然语言处理领域世界上最具影响力的国际学术组织ACL 50多年历史上首位出任过主席的华人,同时也是唯一来自中国大陆的ACL会士。除王海峰外,百度研究院有段润尧、郭国栋、黄亮、李平、熊辉、杨睿刚等知名AI领域科学家,还有由多位世界级大师组成的“智囊团”——百度研究院顾问委员会,成员包括AT&T和贝尔实验室前副总裁及首席科学家David Belanger,伊利诺伊大学厄巴纳-香槟分校终身教授、计算机视觉领域顶级科学家David Forsyth,著名的计算语言学专家Mark Liberman,明尼苏达大学终身教授、知识发现与数据挖掘(KDD)领域的最高技术荣誉ACM SIGKDD 创新奖得主Vipin Kumar,量子密码学的共同发明者之一、牛津大学终身教授、新加坡国立大学量子技术中心主任Artur Konrad Ekert等国际知名科学家。早在2013年初,百度就组建了深度学习研究院,这是中国企业第一个AI研究机构,是百度AI研究体系化的起点。百度深度学习研究院(IDL)由现在担任百度CTO、兼任百度研究院院长的王海峰作为执行负责人协助创建,是百度研究院的前身。2017年3月,百度明确把人工智能作为战略,整合AI核心技术,成立AI技术平台体系(AIG),任命王海峰为总负责人,百度研究院聚焦基础前沿技术研究的定位更加清晰。2018年11月,百度研究院在硅谷宣布正式成立顾问委员会,顾问成员全是顶尖AI科学家,王海峰当时发表了对AI研究的看法:“学术研究一直是产业间AI 核心竞争力的重要组成部分。此次新成立的顾问委员会将为百度研究院的AI 研究注入学术端的血液,让百度研究院在前瞻性的研究方向上,更具深远布局。”2019年6月底,百度研究院完整公布了新的架构,七大实验室——包括大数据实验室(BDL)、商业智能实验室 (BIL)、认知计算实验室(CCL)、深度学习实验室(IDL)、量子计算研究所(IQC)、 机器人与自动驾驶实验室(RAL)和硅谷人工智能实验室(SVAIL),覆盖不止于AI的前沿技术领域,研究方向包括机器学习、数据挖掘、计算机视觉、语音、自然语言处理、商业智能、量子计算等等。可以看到,对于百度研究院来说,它早已不再满足于招揽一两位顶尖科学家,而是“一打一打地”汇聚顶尖科学家,形成立足于AI、扩展到更多前沿技术领域的高端技术研究体系。王海峰曾阐述百度研究院的使命和愿景:“以引领前沿科技发展、推动AI顶尖技术突破为使命,致力于成为世界级的研究机构。”百度研究院正在将其变为现实,从2013年的前身IDL到2019年的世界级研究机构,百度研究院一直在不断扩张和进化,成为世界级科学家的AI等前沿技术的研究殿堂。基于高端人才战略,百度研究院在前沿技术的积累上成效显著,进一步巩固百度AI技术优势,让百度的AI技术长板变得更长。比如在自然语言处理(NLP)领域,结合知识和语义理解,百度的可持续学习的知识增强语义理解框架ERNIE,在各类自然语言处理(NLP)中文任务上全面超越了谷歌的BERT;在深度学习领域,百度拥有具有自主知识产权、功能完备的开源深度学习平台飞桨,已形成跟谷歌 TensorFlow抗衡的开发者生态……在我看来,押注AI是百度最正确的一次战略选择,而成立研究院布局前沿高端AI技术,则是百度AI战略的一次重要的战术抉择。百度如何吸引科学家?不得不说百度有先发优势,百度是最先向世界级AI科学家抛出橄榄枝的中国科技巨头。百度最早意识到人工智能战略“人才先行”,人工智能技术是智力密集型产业,人才稀缺,门槛极高,得人才者得天下。不过,百度挖人不是大海捞针或者说盲人骑瞎马,其采取“领头羊”战略,十分重视对技术带头人的挖掘,因为有“领头羊”就可以形成头羊效应,一边吸引更多优秀人才加盟,一边在内部形成良好的人才成长体系,最终形成了今天良将如潮的局面。业内人士都知道,对技术人才百度是最“大方”的,在技术研发持续大量投入。仅仅是2015到2016年百度研发投入就高达两百亿,绝大部分投入到了人工智能,在中国五百强企业当中百度研发占收入的比例位居第一。对科学研究来说,物质基础不可或缺,如果科学家做不到衣食无忧就很难潜心研究;如果科学家是一个贫瘠的群体,年轻人就不想从事科学研究,这一点,社会和企业已经有了充分认识。不过,科技巨头都不缺钱,真正顶尖的AI人才也不只是看中钱,百度研究院招揽顶尖AI人才的杀手锏不只是大手笔的投入。顶级人才大都已财务自由、衣食无忧,或者说,钱不是他们衡量事业的首要标准,能否实现自己的梦想,公司的资源能否帮助自己的研究至关重要,百度为了给优秀AI人才提供好的研发环境,专注各领域的七大实验室可以满足不同研究方向的大牛,还有好的研究氛围,以及在硅谷建立办公室,这有利于百度招揽世界级大牛。从百度研究院的扩张战略可以看到,百度研究院实验室的布局跟百度的AI整体战略节奏是一致的,先是强调基础AI技术研发,占据先机后再强调AI产业化,推动AI在自动驾驶、机器人、商业智能等领域的落地应用。如今百度全量业务都由AI驱动,成为名副其实的AI公司:内部业务如搜索、信息流、知识产品、自动驾驶、智能语音助理、智能音箱全部都是AI强相关业务;对外百度则在积极将AI技术通过百度大脑、百度智能云等进行开放,构建繁荣的AI应用生态,百度拥有丰富的AI应用场景。而且百度的前沿技术有更多的机会在场景中落地,9月初,百度宣布百度智能云与CTO体系融合,百度副总裁、百度智能云总经理尹世明携团队向集团首席技术官王海峰汇报,继续推进AI等前沿技术通过智能云向各行各业落地。AI技术研究的独特性在于需要真实数据、计算集群和锤炼场景。百度坚持AI战略拥有了大量的AI技术落地的场景,这些对科学家们有很强的吸引力,此前媒体曾报道,百度在招揽硅谷高端AI人才时,比想象的容易许多,号召力超出其预期,因为很多人才毕生都奋斗在人工智能,如果能提供一个好平台让他们研究人工智能就非常有吸引力。与此同时,百度是中国最具工程师文化和技术特质的科技巨头,百度掌门人李彦宏出身于工程师,同时百度鼓励工程师文化,不论是外部引入的还是内部成长的,大量的顶尖AI人才形成了越来越好的研究氛围、文化和环境,对科学家这样的学术大牛同样有很强的吸引力。此外,科学家们的研究很难立竿见影,往往需要“坐得了冷板凳”日积月累、滴水穿石,然而大多数企业没有足够的耐心,很难给科学家真正提供足够的空间,百度却可以做到,我想这才是百度研究院真正可以“良将如潮”的系统性原因。
机器之心原创作者:邱陆陆今年 1 月,谷歌人工智能负责人 Jeff Dean(当时还是谷歌大脑负责人)与 2017 年图灵奖得主、体系结构巨擘 David Patterson(当时获奖结果尚未公布)联合发表了题为《计算机体系结构黄金时代:赋能机器学习革命》的文章。文章指出,机器学习算法正在革命性地着手解决人类社会最为巨大的一些挑战,因此,不难想象,在不远的将来,无论是数据中心还是终端设备,都将会出现专用于机器学习计算的硬件。这样的硬件会具有什么特性?在文章中,作者列出了一系列硬件设计者需要考虑到的关键问题,这些问题对深度学习研究者也十分具有启发性。另一方面,在摩尔定律逐渐失效和深度学习的算力需求如无底洞般膨胀的今天,深度学习研究者们也在思考:能否改进算法以使其更适应计算硬件?能否帮助优化系统配置?在近日举行的首届「清华-谷歌 AI 学术研讨会」上,Jeff Dean 谈了谈「接下来我们希望设计什么样的模型」,来自谷歌大脑的研究员 Azalia Mirhoseini 则给出了主题演讲「如何用强化学习方法进行系统优化」。谷歌人工智能负责人 Jeff Dean如果将这几份工作联系起来,我们似乎就能看出,在深度学习这个 Arxiv 论文增速超越摩尔定律的领域里,谷歌大脑的研究者们如何同时思考软硬件问题以实现系统最佳性能与最佳效率。「超越摩尔定律」的机器学习在《黄金时代》论文里,Jeff 和 David 以谷歌开发的两代机器学习 ASIC(用于加速推理的 TPUv1 和用于加速训练的 TPUv2)为例,介绍了很多设计专用硬件的思路。进行硬件设计要着眼于至少 5 年后的模型:现在开始一款 ASIC 的设计,它大约可以在 2 年后投入使用,而一款专用硬件至少需要能够保持 3 年的竞争力才有价值。那么在这样的前提下,设计深度学习专用硬件要考虑哪些问题?在文章中,作者列出了六个这样的关键点,按照从「纯架构相关」到「纯机器学习算法相关」的顺序,分别是:训练、批规模、稀疏性与嵌入、参数量化与提炼、带有软记忆机制的神经网络以及元学习。训练谷歌从 2013 年开始设计的第一代 TPU 是针对推理而非训练工作设计的,一定程度上是为训练设计硬件架构要更加困难:第一,训练的运算量是推理的 3 倍以上。第二,因为要将全部激活值存储以进行反向传播,训练过程所需的存储也远比推理高。最后,训练的可扩展性远不如推理,因为需要进行大量昂贵的序列计算。但是,为训练设计 ASIC 是有价值的,因为研究者的时间是宝贵的而耐心是有限的,如果一次实验需要跑 30 天甚至更长,大概大多数人会选择放弃探索这个方向。第二代 TPU 就面向训练开发。Jeff 在多次演讲中提到了一些 TPU v2 的成功应用案例,包括用四分之一个 pod 把谷歌的搜索排序模型的训练提速到 14.2 倍,把处理图片的模型训练提速到 9.8 倍等。TPUv2 在谷歌内部的应用案例而且,TPUv2 具有几乎是线性的扩展性,64 块 TPU 可以组成一个 TPU pod,提供最高 11.5 PFLOPS 的算力。用一块 TPUv2 把 ResNet-50 训练到 76% 准确度需要 1402 分钟,用二分之一个 pod(32 块 TPUv2)只需要 45 分钟(31.2 倍速)。TPUv2 近乎线性可扩展虽然 TPU 云价格不菲,但时间就是生命,生命就是金钱。另外,如果你是一位有志于机器学习研究并致力于开源自己的工作,谷歌正以 TensorFlow 研究云的形式向研究者免费提供一千块 TPU。批规模(batch size)批量是越大越好还是越小越好?这是一个在研究上仍然有争议的问题。直觉上,理想选择是带有动量的批规模为 1 的随机梯度下降(SGD with momentum at a minibatch size of 1),这时单位计算量带来的准确率提升最大。另外选择一个大于 1 的批规模相当于把输入维度直接提升了一维(Jeff 原话:一想到这儿我就头痛。)然而在当前用于训练的硬件中,以 GPU 为例,它执行程序时的基本单元,即每个 warp 包含 32 个线程(threads),因此如果你的批规模不是 32 的整数倍,将会导致效率降低,所以现行的模型通常都采用 32 或者 64 作为批规模。批规模与计算效率但是,从 2017 年开始,有一些看起来前景明朗的研究显示,我们可以用 8192 甚至 32768 作为批规模来高效训练用于图像的卷积神经网络。直到批规模上升到 8k 左右,验证集的错误率仍然能保持相对低的水平source:Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour (1706.02677)值得一提的是,Yann LeCun 对于增加批量持有强烈反对态度,他曾经在今年 4 月份转发一篇支持小批量的论文称,「用巨型批量做训练有害健康……选择 32 而不是 1 做批量只能说明我们的硬件很差劲。」哦,8192 那篇论文是 Facebook 的工作,作者列表里包括 Ross Girshick,贾扬清,还有何恺明……稀疏性与嵌入(Sparsity and Embeddings)「我们想要更大的模型,但希望每一个样本只激活它的一小部分。」又是一个 Jeff 反复提到的趋势。「我们想要什么样的模型?」大模型是好的,因为巨大的参数量意味着我们可以记住数据集方方面面的特性。但是如果我们在处理每一个数据的时候都需要激活整个模型,这意味着巨大的计算成本。因此,最理想的状态是拥有一个可以分割成众多独立的小部分的庞大模型,每一部分都承担不同分工,当数据进入模型时,模型按任务需求激活少数几个部,让大部分保持闲置状态。这样的特性又可以称作「粗粒度稀疏性」。粗粒度稀疏性Source: Exploring the Regularity of Sparse Structure in Convolutional Neural Networks (1705.08922)谷歌在 ICLR2017 的一篇论文上就提出了一个叫做混合专家层(MoE)的概念。每一个「专家」相当于神经网络中的一小撮参数,只不过比普通神经网络里的参数更容易训练,而一层由超过 2000 个专家组成。MoE 层的结构Source: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (1701.06538)训练过程中,除了学习模型参数,还要学习如何做路由选择(routing),即如何根据一个样本选择激活的「专家」。在语言任务里,模型学会了如何根据语境选择「专家」:专家 381 擅长谈论科学研究,专家 752 擅长「领导力」,如果涉及速度,那就交给专家 2004 吧。路由选择学到了什么Source: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (1701.06538)在英-法翻译任务里,相比于之前的 STOA 模型 GNMT,模型的规模上升了 35 倍,却可以用更少的 GPU 在六分之一的训练时间内完成。相比于 MoE,应用更为广泛的动态路由的案例是嵌入机制。无论是将单词从数万维的独热向量映射到几百维的词嵌入,还是给每一个 YouTube 视频赋予一个数千维的、能够捕捉它与其他视频间关系的表征,都是一个需要为了一个样本,从庞大的数据结构(可能高达数百 G)中随机地读取非常少的数据(数十或数百字节,不到 1KB)。现有硬件结构里还鲜有专门处理动态路由选择的高效读取的解决方案。参数量化与提炼(Quantization and Distillation)稀疏性和嵌入的共同点是保留「大模型」,而关注如何能精确定位到其中的「小部分」。参数量化与提炼则直接追求「小模型」。参数量化的是低精度运算的另一种说法。现在常见的做法是,在训练阶段采用浮点数,而在推理中采用定点数。例如在 TPU 的例子中,所有的推理只采用 8 比特定点数表达。其实现原理是在完成训练后,根据各层的参数和激活部分的最大值和最小值,找到表达其整数部分所需的最小比特数,用此表示,然后用 8 比特中剩下的部分表示其小数点后部分。实证研究显示,将精度从 32 比特降低到 8 比特,只会少量影响 GoogLeNet 和 VGG-16 的表现,但是如果继续下降到 6 比特,模型效果就会受到显著影响。推理参数量化对精度的影响Source: Going Deeper with Embedded FPGA Platform for Convolutional Neural Networkcadlab.cs.ucla.e/~jaywang/papers/fpga16-cnn.pdf文中提到,只有很少的研究关注了如何在训练阶段采用低精度运算,大多数结果都仍然集中在 MNIST,CIFAR-10 等小数据集上。不过低精度训练也在逐渐获得更多关注,ICLR2018 上,百度和英伟达提出了「混合精度训练法」,在前向、后向计算中使用 FP16 运算,在权重更新时使用 FP32 计算,在 ImageNet 上的分类任务、Pascal VOC 2007 上的检测任务、WMT15 上的翻译任务等多个大型数据集的任务中,达到了使用 FP32 所获得的准确率,同时节省了算力需求和近半的存储需求。如今,英伟达已经给出了用混合精度进行训练的 SDK 范例。提炼方法是 Hinton 在 NIPS2014 上提出的,试图以先让复杂模型进行学习分类问题,然后将最后一层 softmax 学到的软分类视为知识,训练简单模型以预测软分类。这样的方法得到的简单模型(层数更少、每层神经元更少)也能达到复杂模型同样的准确度。提炼方法让人们思考,是否能够直接训练小模型。小模型和大模型需要的专用硬件特性会截然不同,因此模型的发展方向也是硬件发展方向的重要影像因素。带有软记忆机制的神经网络(Networks with Soft Memory)这一部分强调的是一些对存储和存储访问有特殊需求的深度学习技巧,例如注意力机制。传统的记忆机制每次只要访问存储数据的表中的一个值,但是以注意力机制为代表的软记忆机制则需要对表内的所有值进行加权平均。相比于特定运算的加速,当前问世的或已经进入开发周期后段的深度学习 ASIC 更强调数据流与存储的优化。原 Movidius CEO Remi El-Ouazzane 在谈论其视觉处理单元 VPU 的设计理念时提到,VPU 中的几乎所有架构设计都是为了同一个目标:优化数据流。在当前的终端深度学习计算中,用于数据传输的能量消耗是用于计算的 10 倍乃至更多,因此要使性能最大化并将功耗降至最低,唯一的方法就是增加数据的本地性,减少外部内存访问次数。致力于加速训练的 Intel Nervana NNP 的逻辑也是这样。FPGA 的逻辑也是如此。大量的引脚和可以根据算法定制数据通路(datapath)的逻辑单元,让它不需要像 GPU 一样需要反复调取片外存储中的数据,理想状态时,只要数据一次性流进去再流出来,算法就完成了。元学习(Learning to Learn, L2L)深度学习相比于机器学习的「进步」,就是将人工选择的固定特征提取过程变成了机器选择的可训练特征提取过程。研究者只需要选择一系列基本模型结构和超参数,就可以由机器接手,进行特征提取和分布拟合。在上述的五个部分里,无论模型采用什么结构、技巧,作出这些决策都仍然是人类的工作。而在元学习的设想里,人类的决策工作进一步被大量的计算和机器自动完成的实验所替代。在自动机器学习技术的种种方法中,谷歌选择了强化学习的方法。模型的准确度被视为「奖励信号」。在获得了 ICLR2017 最佳论文的《用强化学习进行神经网络结构搜索》中,谷歌的研究员分别为 CIFAR-10 和 PTB 数据集搜索到了最佳的 CNN 和 LSTM RNN 结构。普通 LSTM 结构和结构搜索出的结构Source: Neural Architecture Search with Reinforcement Learning (1611.01578)而事实上不只是模型结构,「用强化学习进行元学习」的思路适用于深度学习的方方面面:选择输入数据预处理路径,选择激活函数、选择优化与更新策略,以及,选择硬件配置。本次谷歌大脑研究员 Azalia 的演讲就是以优化硬件配置为主题。传统的硬件配置多数以贪婪启发式方法为基础,需要工程师对硬件的方方面面,从算力到带宽,都有深刻的理解。而即便如此,随着模型越来越大,使用的设备越来越多,得到的配置方案也越来越难具有可泛化性。谷歌大脑研究员 Azalia Mirhoseini因此,将一种特定配置的收敛时间的期望作为奖励信号来将各运算分配到不同设备上,就变成了一个有吸引力的解决方案。算法学到了并不符合人类直觉的配置,但比专家设计出来的方案快 27.8%,节约近 65 个小时。元学习得到的运算硬件配置以及效果Source: Device Placement Optimization with Reinforcement Learning (1706.04972)元学习指向的道路是让我们更高效地利用大规模的计算资源,同时「节省」机器学习专家的劳动力。除此之外,在这个深度学习算法和计算设备都在快速更新迭代的时期,元学习也奠定了快速进行软硬件结合的系统设计的基础。将所有这些愿景综合起来,深度学习下一个阶段会以何种形式出现?Jeff 在演讲中概括为:只是稀疏地激活的更为庞大的模型。能够解决多个任务的单一模型。在庞大的模型中动态地学习新路径,并不断增加新路径。专用于进行机器学习超算的硬件高效地配置在硬件上的机器学习模型。紫色模块为新任务和为此而增加的新节点,加粗的红线表示用于解决新任务的新路径你的研究思路是否有助于其中一个目标的实现?又是否将从这样的模型中获益?无论答案是什么,确定的一件事情是:研究者、工程师、体系结构设计者,在当下,想要朝通用人工智能进攻的道路上前行,这些身份,一个都不能少。
作为谷歌 AI 帝国的重要部分,谷歌大脑团队一直致力于通过研究和系统工程来推动人工智能领域的发展。去年他们分享了 2016 年的工作总结。在接下来的一年中,他们在制造智能机器的长期研究中不断取得进步,并与来自 Google 和 Alphabet 的其他团队合作,利用研究成果来为人类造福。近日,该团队按照惯例,发表了 2017 年的年度总结。这份总结由谷歌高级研究员 Jeff Dean 代表整个团队执笔。总结分为上下两篇。在上篇中主要介绍了 2017 年团队的基础研究工作,开源一些软件和数据集以及用于机器学习的硬件更新。下篇将介绍团队在特定领域的研究,比如医疗,机器人,和一些基础科学。以及更多的关于团队富有的创造力,公平和包容性的工作,和跟多关于团队自身的内容。核心研究谷歌大脑团队的关注的重点是那些可以在机器学习领域提高理解力和解决新问题的能力的研究。以下是一些研究主题。1. 自动化机器学习如我们所知,机器学习的算法是由机器学习专家精细设计的,但是需要解决的新问题层出不穷。自动化机器学习的目标就是让计算机自动去解决新的机器学习问题,而不需要人类机器学习专家在每个新问题上进行干预。如果我们希望得到真正的智能系统,这就是必须的基本能力。谷歌大脑团队设计出使用强化学习和演化算法的新的神经网络设计方法。这项工作已经被扩展到最新的 ImageNet 分类和检测,并展示了如何自动学习新的优化算法和有效的激活函数。团队积极与谷歌的 Cloud AI 团队合作,让谷歌用户可以享受这项成果,同时将这项研究在多个方向上推进。图丨神经结构搜索发现的卷积结构图丨自动机器学习的网络进行物体探测2. 语音理解与生成团队发展新的技术来改善计算机理解和生成人类语音的能力,并与谷歌的语音团队合作为一个多端到端的语音识别系统研究出多种优化方法。这使得 Google 的产品——语音识别系统的相对单词错误率降低了 16%。这项工作将许多独立的研究线索汇集到一起。 图丨Listen-Attend-Spell 端对端语音识别系统的组成团队还与 Google 的 Machine Perception 团队合作开发了一种新的文本到语音生成方法,Tacotron 2。它极大地提高了生成的语音的质量。这个模型达到了 4.53 的平均意见得分(MOS),相比之下,有声读物中的专业记录语音的 MOS 为 4.58,之前的计算机语音生成系统最好成绩也仅仅为 4.34。图丨Tacotron 2 结构图3. 新的机器学习算法和途径团队一直致力于开发新奇的机器学习算法和方法,包括在 capsules 上的研究(明确地寻找激活特征协议,作为在执行视觉任务时评估多种不同噪音假设的方式),sparsely-gated mixtures of experts(使非常大的模型仍能有很高的计算效率),超网络(使用一个模型的权重为另一个模型生成权重),新型多模式模型(在同一模型中跨音频,视觉和文本输入执行多任务学习),基于注意的机制(替代卷积和循环模型),符号和非符号化的学习优化方法,一种通过离散变量的反向传播技术,以及一些对强化学习算法改进。4. 计算机系统领域的机器学习谷歌大脑团队对于用机器学习的方法在计算机系统中取代传统的启发式应用非常感兴趣。他们已经展示了如何使用强化学习来进行放置决策,将计算图映射到一组计算设备上,而且比人类专家做的更好。团队还与 Google Research 合作,展示了神经网络建立的索引比传统数据结构(如 B 树,散列表和布隆过滤器)更快,更小。如 NIPS 关于机器学习系统和系统的机器学习讨论会上所说的,谷歌大脑团队相信,他们正在触及在核心计算机系统中使用机器学习这一领域。图丨用习得的模型作为索引结构5. 隐私与安全机器学习及其与安全和隐私的交互一直是团队关注的焦点。在一篇获得 ICLR 2017“最佳论文奖”的的论文中,团队展示了机器学习技术可以提供不同方式的隐私保证。团队还继续调查了抗性样例的性质,包括在现实世界中展现的对抗性样例,以及在训练过程中如何充分利用他们来使模型更适应这些对抗性样例。6. 理解机器学习系统虽然人们已经见识到了深度学习的强大能力,但更重要的是理解它为什么起作用,什么时候不起作用。在另一篇获得 ICLR 2017“最佳论文奖”的论文中,团队向大家阐明,目前的机器学习理论框架无法解释深度学习方法的一些杰出的结果。团队展示了,通过最优化方法找到的最小值的“平坦度”,并不像最初想象的那样与良好的泛化紧密相关。为了更好地理解深层架构下的训练过程是如何进行的,谷歌大脑团队发表了一系列分析随机矩阵的论文,因为它们是大多数训练方法的出发点。了解深度学习的另一个重要途径就是更好地衡量他们的效果。在最近的一项对众多生成对抗网络的比较的研究中,团队展示了良好的实验设计和统计严谨性的重要性,他们发现许多流行的对生成模型的增强方法实际上并没有提高它的性能。我们希望这项研究能够为其他研究人员提供一个可靠的实验研究的范例。团队正在开发能够更好地解释机器学习系统的方法。在三月份,团队与 OpenAI,DeepMind,YC Research 等合作,宣布推出 Distill,这是一本致力于支持人类对机器学习的进行理解的在线开放式科学杂志。它因对机器学习概念的清晰阐释和在出色的交互式可视化工具而广受赞誉。在第一年,Distill 上就发表了许多启发性的文章,旨在了解各种机器学习技术的内部工作机理,我们期待 2018 年迎来更多可能。图丨特征可视化7. 机器学习研究的开源数据集数据集对于机器学习研究的重要性不言而喻。像 MNIST, CIFAR-10, ImageNet, SVHN, and WMT 这样的开源数据集一直推动着机器学习飞速发展。谷歌大脑团队和 Google Research 在过去一年一直积极地为开放式机器学习研究公开有趣的新数据集,提供更多的大型标记数据集,包括:YouTube-8M: >用 4716 个不同类别标注的 7 百万 YouTube 视频YouTube-Bounding Boxes: 来自 21 万 Youtube 视频的五百万个边际框标注Speech Commands Dataset: 成千上万人所说的简短的命令字AudioSet: 用 527 个声音事件标注的 2 百万个 10 秒的 YouTube 剪辑Atomic Visual Actions (AVA): 57000 个视频剪辑片段中 21 万个动作标注Open Images: 9M 的通过 6000 个类别对创意共享许可图像进行标注Open Images with Bounding Boxes: 1.2M 的共计 600 个分类的边界框标注图丨YouTube-Bounding Boxes dataset 的例子:边界框标注的物体8.TensorFlow 和开源软件纵观团队的历史,许多构建的工具已经在 Google 的许多产品应用,进行机器学习研究并部署机器学习系统。2015 年 11 月,第二代机器学习框架 TensorFlow 开源,团队希望整个机器学习社区能够从中受益。在 2017 年 2 月,TensorFlow 1.0 发布。在 11 月,1.4 版本发布,这其中包括重要的添加内容:用于交互式命令式编程的 Eager execution,TensorFlow 程序的优化编译器 XLA,以及适用于移动设备和嵌入式设备的轻量级解决方案 TensorFlow Lite。现在,预编译的 TensorFlow 二进制文件现在已经在 180 多个国家被下载了超过一千万次,GitHub 上的源代码现在已经有超过 1200 个贡献者。图丨TensorFlow 用户分布图今年 2 月,首届 TensorFlow 开发者峰会成功举办,吸引了 450 多人亲临现场参加活动,6500 人观看直播,在全球 35 多个国家和地区举办了超过 85 场的本地观看活动。所有会谈都被记录下来,主题包括新特性,使用 TensorFlow 的技巧,或者对低层次 TensorFlow 抽象的探讨。团队预计于 2018 年 3 月 30 日在湾区举办另一个 TensorFlow 开发者峰会。在十一月,TensorFlow 庆祝其开放源代码项目两周年。TensorFlow 是 GitHub 上排名第一的机器学习平台,也是 GitHub 上的五大软件库之一,已经被许多大大小小的公司和机构所使用,包括 GitHub 上超过 24,500 个与 TensorFlow 相关的仓库。现在,许多研究论文都与开放源码的 TensorFlow 实现和研究结果一起出版,使社区能够更容易地理解所使用的确切方法,并重现或扩展工作。除了 TensorFlow 之外,团队还在浏览器中发布了 deeplearn.js,一个开源的硬件加速深度学习的 API 实现(无需下载或安装任何东西)。deeplearn.js 主页有许多很好的例子,其中包括 Teachable Machine, 可以使用网络摄像头训练的计算机视觉模型,以及 Performance RNN,一个基于实时神经网络的钢琴作曲和演奏效果的演示。团队将在 2018 年继续开展工作,以便将 TensorFlow 模型直接部署到 deeplearn.js 环境中。
数据结构是一门很晦涩,且学起来极其无聊的课程,但却又是及其重要的一门课程,几乎所有人都在说,只有数据结构和算法"玩明白"的人,才有望成为大佬,才不会在竞争日益激烈的社会中不被淘汰。我希望我可以用稍微轻松点的形式,分享下我对数据结构和算法理解。本文的代码主要基于python实现。For Better You01什么是数据结构生活中的数据结构比如你去电影院买票看电影,那么肯定要排队,一般来讲,比你先来的人排在你的前面,比你后来的人则会排到你的后面,那么这个队伍的变化(后来的人只能从队尾入队,先来的人买完票则退出队伍)就是数据结构的一种(队列)再比如,想象一下,我们平时在电脑上打字(用拼音的方式),如果我们输错了,肯定要按删除键,而删除的字母永远是从最后一个输入的字母开始,而不会从第一个拼音字母开始删除(比如你要输入nihao,结果打成了nihau,那么删除肯定是要先删除字母u,而不是n),这也是一个生活中常见的数据结构(栈)其实生活中的很多场景和行为都可以当作一种数据流来看,而这些数据流中的数据呈现出来的关系(比如根据某个数据定位其他数据,根据某个数据推算未来的某个数据……)和特点,抽象来看,就是具有某种特定规律的数据的结构体,这个结构体称之为数据结构。编程中的数据结构数据结构就是相互之间存在一种或多种特定关系的数据元素的集合举例来说:python自带的基本数据类型list()(本质是个类),由于底层结构是数组,所以不同数据项之间可以互相定位。如果你基于现有列表的接口(比如append,pop等操作),构建了一个新的数据结构(类),此类构建了几个接口(方法),其中一个可以让每个添加的数据项都能有序插入到你的结构体中……抽象起来看,就是一个适合做排序相关功能的数据结构。02两种视角,两种结构其实按照视角(使用者和实现者)不同,分为逻辑结构(抽象)和物理结构(实现)逻辑结构可以理解为:为了更方便解决问题,将数据项之间赋予一定逻辑关系。逻辑结构一般可以可以分为以下4种:集合,线性表,树形,图形物理结构则是数据的逻辑结构在内存中的存储方式,一般有两种,链式存储和顺序存储生活中的逻辑接口和物理接口(加深理解)汽车有新能源和汽油两种,两种车的设计理念并不相同,比如一种有油箱,一种不需要油箱,一种用电瓶,一种用油箱,虽然物理上的实现不同(比如说油箱和电瓶构造不同,可以说是物理结构不同),但是汽车所有对外提供的接口基本相同,比如说方向盘,都有挡位(可以理解为逻辑接口),都可以通过操作逻辑接口(方向盘,油门等)正常开车,而不需要更改任何驾驶习惯03抽象的理解要想谈数据结构,必然要说说抽象的概念。其实像上面提到的排队,或是删除字符串的操作,如果想要在编程中实现,则必须要进行抽象化,将生活中呈现的的数据特点抽象成计算机所能理解的方式。ADT的概念ADT = Abstract Data Type(抽象数据类型),是指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。说白了一个抽象数据类型定义了:一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作。至于,一个抽象数据类型到底需要哪些操作,这就只能由设计者根据实际需要来定总的来说,一般是采用编程语言控制结构和提供的基本数据类型来实现ADT所需要的逻辑接口,数据结构是对ADT的具体实现,同一ADT可以采用不同的数据结构实现各种电子设备都拥有“字符串”类型,也需要字符串间的各种操作,那么字符串其实就是一个抽象数据类型,因为在不同的机器上,可能构建原理不同,接口方法不同,但由于其定义的数学特征相同,在计算机编程者看来,它们都是相同的。因此,“抽象”的意义在于数据类型的数学抽象特性。04算法数据结构的概念简单来说,到这就差不多结束了。但是数据结构设计的再好,没有与之相匹配的算法,一切也都是白扯,所以这里还要分享下算法和数据结构的关系,以及一些基于python的基础算法。概念算法是逻辑层面上的对于问题的解决,而程序则是物理层面上的对于算法的实现算法是解决特定问题求解步骤的描述,在计算机指令出表现为指令的有限序列算法的意义举个例子,可能会很快的让你明白算法的意义:从1到100累加求和,比较来看,方法一就是累加求和,随着数量规模变大,运算时间呈线性增长,而方法二则是高斯前辈提出的累加求和方法,不论数量规模如何变大,运算时间都只是常数级,代码如下算法特征输入和输出:数据从哪里来,数据往哪里去有穷性 :可以在预期的时间内正确的结束程序确定性:每一条指令都有唯一的执行逻辑可行性:每一步都可以通过执行有限的次数完成好算法的基本要求算法没有逻辑错误,没有语法错误,没有不可预期的错误更少的计算机资源,主要包含两点,更少的存储空间,更快的执行时间对特殊情况以及错误情况有适当的处理程序算法效率的考量我们说衡量一个算法的好坏,最主要的方面取决于所用空间大小和所用时间长短。因为每个程序员对于同一个问题会提出不同的算法解答,所以时间复杂度的算法必然不能独立于某个程序或是某个算法而言,必须是通用的一般来讲,赋值语句(包含计算或存储的语句)的执行次数应该作为时间复杂度的主要考量因素,而控制流语句仅仅是组织语言的作用大O表示法此方法是为了计算算法的时间复杂度,用来度量算法的运行时间,记作: T(n) = O(f(n))。它表示随着 输入大小n 的增大,算法执行需要的时间的增长速度可以用 f(n) 来描述,f(n)就是问题规模n的某个函数简单来说,大O表示法就是将程序的所有执行步骤相加,转换为代数项,然后只保留随着(问题规模)n的增加而加速度最快的主导部分大O表示法就是当前最主流的用来衡量算法优差的方法之一大O表示法的一般计算方法常数1取代运行时间中所有的加法常数找到随着n变大,增速最快的步骤,计算复杂度,只保留最高阶项最高阶项存在且不是1,去除与这个项相乘的常数05常见的几个时间复杂度(基于python实现)1.常数级:O(1)2.对数级:O(log(n))3.线性级:O(n)4.线性对数级:O(n*log(n))5.平方级:O(n)6.立方级:O(n)7.指数级:O(2^n)时间复杂度排序O(1)<O(log(n)<O(n)<O(n*log(n))<O(n)<O(n) < O(2^n)
这是一门叫作《测绘学概论》的课程,由6位院士、4位教授共同讲授,有人称它为“最奢侈的基础课”。课上不点名、不签到,阶梯教室后排却挤挤挨挨站着人。课后,找院士签名的学生排成长队。坚持给本科新生上课的传统,始于这些“老师的老师”。在动荡不安的时代里,他们甚至用生命守护一方神圣的讲台。这一代院士,从老师手中接过了接力棒。一门课,六个院士,二十年每年秋天,当武汉大学校园里的梧桐叶开始飘落,6位院士会从天南地北的会议中抽离,陆续回到一方不大的讲台上。台下是一张张稚气未脱的脸,这些大一新生刚从应试教育中浮上来,他们邂逅的第一位老师,就是院士。这是一门叫作《测绘学概论》的课程,由6位院士、4位教授共同讲授,有人称它为“最奢侈的基础课”。课上不点名、不签到,阶梯教室后排却挤挤挨挨站着人。课后,找院士签名的学生排成长队。▎2017年10月12日,讲课完毕后,宁津生给同学们签名20年间,这门课走进了武大的通识课堂,走进了千里外的同济大学,听过课的学生上万人次。最初,院士们仍需亲自拿着笔尺,将课件画在薄薄的透明胶片上。如今,带有动图的多媒体课件取代了胶片。时间也改变了几位科学家,他们变成平均年龄77岁的老人,师生年龄相隔半个多世纪。不变的是,站在讲台上,几位院士仍会常常提起自己的“老师”——武汉测量制图学院(下文简称“武测”,2000年与武汉大学合校)的创始人、新中国测绘界的大师们。坚持给本科新生上课的传统,始于这些“老师的老师”。在动荡不安的时代里,他们甚至用生命守护一方神圣的讲台。这一代院士,从老师手中接过了接力棒。只不过,他们需要对抗的东西,早已不同了。理想的大学是一班不凡人格的“吃饭所”开始讲课前,李德仁院士习惯走向讲台中央。年近80岁的他缓缓弯下腰,鞠上一躬,仿佛音乐会开场了。200多人的大教室里格外安静。有人托着腮,用好奇的目光打量眼前的老人。站在台上的老师,正是他们桌上课本的编者之一。宁津生、陈俊勇、张祖勋、刘经南、李德仁及龚健雅,这6位院士被认为是测绘学领域内的“传奇”“一代奠基人”。但在这门课上,他们是最普通的授课老师。“理想的大学应是一班不凡人格的‘吃饭所’,这里碰见一位牛顿,那里碰见一位佛罗特,东屋住了一位罗素,西屋住了一位拉斯基……”有人用林语堂的名言形容这门课。▎2017年10月12日,宁津生给大一新生讲授《测绘学概论》第一讲武大学生则霸气地称这些院士为“测概天团”。“集齐签名,召唤神龙”。这个“偶像天团”,看上去和时髦毫不搭边。他们是一群“爷爷级”的老头,年纪最大的85岁,最年轻的一位60岁。在难得的合影中,6位老人有些拘谨地站成一排,双手大多叠在身前。镜头清晰暴露出他们额前稀疏的头发、岁月在脸上留下的一道道褶子。宁津生院士是这门课的发起者。今年85岁的他,对流行文化的印象,还停留在10多年前。这位平时不苟言笑的大地测量学家,笑呵呵地说,学生找他要签名时,他有种成了“超女”的恍惚感。这门课讲授的内容,没有那么“高深莫测”。从课程设计之初,院士们就统一意见,要尽可能地贴近年轻人,“不能吓跑他们”。讲义中拗口的概念删了又删,教材特意制作成彩色,插画、图示几乎占了一小半。整整20个课时,6个院士,4个教授,只为回答一个问题:“什么是测绘?”上大学前,叶晓彤对这个专业几乎一无所知。和很多人一样,她以为测绘就是“拿个黄色的三脚架在马路上量量”,很艰苦而且没啥技术含量。听完院士们的讲课,她对测绘的认识完全颠覆了。从宁津生不紧不慢的讲述中,她第一次知道,原来“GPS导航卫星”“可量测的全景影像”,这些高大上的先进科技,和测绘这个古老的学科密切相关。测绘早已进入“大测绘”时代。“测绘的本质就是研究时空问题。你从哪里来?你要干什么?要到哪里去?这既是哲学家问的问题,也是保安问的问题。同时,它还是导航研究的问题。”卫星导航专家刘经南常笑着给新生讲这个段子。在他的课堂上,测绘这个看似枯燥的学科,不仅与哲学相关,与历史、生物甚至天文都有千丝万缕的联系。他信手拈来各种小故事:黄帝战蚩尤时三天三夜困在大雾中,多亏发明了指南车才打赢这一仗;因为有定位基因,人类才有方向感和距离感;用射电望远镜可以测量星系之间移动的距离,让我们知道宇宙是否在加速膨胀……叶晓彤听得一愣一愣的,“很多完全没想到的地方,突然被启发到了”。这些院士仿佛是站在山顶上的一小撮人,他们的视线穿透远古和星空,顺着他们的目光,叶晓彤窥见了一个极开阔的地带。这正是开这门课的目的。在宁津生看来,这些刚从高中毕业的孩子,不一定能完全听懂课,但他们会对测绘有一个“感性认识”,知道这个学科不再是传统的野外作业,它有很多高科技、很前沿的东西。干过10年武汉测绘科技大学校长的他记得,开这门课前,很多学生不愿学测绘。虽然这所学校的测绘专业在全国排名第一,但每年录取的新生里,十个就有七八个第一志愿不是测绘,两三个强烈要求转专业。卸任校长后,宁津生听说,同济大学土木工程专业也是这个情况。他们尝试开了一门“院士课”,效果很好,转专业的学生少了很多。他很兴奋,和几位院士一商量,大家一拍即合。“与其靠辅导员去劝,去做思想工作,不如靠院士去讲。”一晃,20年过去了。同济那门“院士课”早没了,武测合并到武汉大学,校名都没了,几位院士从中年迈入了暮年。唯一不变的是,他们依然坚守在这门课的讲台上。最好的教师要到一线搞教学工作协调这门课并不容易。几位院士和教授,分属不同学院,且常有外单位院士加入,实际授课院士往往不止6位。听课学生多达上千名,需要分成好几拨儿。龚健雅院士记得,武测与武大合校后,这门课受到很大冲击。武大有些领导不理解,“为什么要花这么大力气做这个事?”但宁津生很坚持,他一定要把这门课继续开下去。“我们这6个院士,之所以对教学这么热爱,都是受到自己的老师的影响。”宁津生告诉中国青年报·中青在线记者。给新生上课,他有时会特意留出一页PPT,放上夏坚白、王之卓、叶雪安等老先生的黑白照片。很多新生对这些名字并不熟悉。尽管他们创立了武测,后辈的研究成果飞上了太空,登上了珠峰到达了南极,但与他们的故事,却逐渐湮没在历史的尘埃中。▎王之卓(中)、李德仁(左)、龚健雅师生三代院士合影1955年年初,身为同济大学副校长的夏坚白,呼吁创建中国第一所民用测绘高等学校。一年多后,武汉测量制图学院成立,同济大学等5所高校测绘师生随迁至武昌。刚从同济大学测量系本科毕业的宁津生,被分配至这所学校担任助教。24岁的他跨入校门时“有些失落”,他原本憧憬着去生产一线,“做一些实际的工作”。这座新成立的大学,位于珞珈山南麓。原先是一片荒凉的坟茔,经过400多天的昼夜奋战,低低矮矮的山丘上终于冒出了几栋红砖小楼。在这片简陋的校园里,宁津生彻底改变了人生志向。那些因测绘教育集聚于此的教授们,在他身上留下了深深的烙印。半个多世纪后,回忆起那些教授,老人眼中放出亮光。这所新学校拥有5位一级教授,数量在整个湖北省首屈一指。其中多位曾任著名大学校长:夏坚白曾在解放前出任同济大学校长,王之卓曾任上海交通大学校长,金通尹曾任北洋大学代理校长,陈永龄曾任华南工学院副院长。另一位一级教授叶雪安,曾是中国第一个测量系的系主任,抗日战争爆发之际,他带着同济测量系师生,拖着笨重的仪器,一路逃难一路讲课。在此起彼伏的政治运动中,教授们努力保住一块教学的讲台。首任院长夏坚白极力主张“最好的教师要到一线搞教学工作”,在他的倡导下,所有一级教授都亲自给新生上课,包括他自己。教授之间相互听课评价,这是建校时便创立的制度。夏坚白常穿着胶底鞋,悄悄出现在教室中。教师上台讲课,被视为一件颇为神圣的事。在开学前,王之卓总会将一学期的课程全部备完,写好讲课笔记。讲课前一周,再修改补充,考虑教学方法。到了课前的那天晚上,再把第二天所讲内容全部仔细备一遍。他的讲课笔记由于多次补充,写得很乱,别人看不懂。作为刚毕业的年轻教师,宁津生必须先从助教干起,除了为讲课教授画挂图、批作业、给学生答疑外,他还得像学生一样老老实实坐在教室里,听教授们上课,学习怎么教书。3年后,他才有资格登上讲台。宁津生记得,那时老师和学生的关系很近。每个星期,老师会到学生宿舍答疑,因为学生多,“往往一两个小时的课程,答疑时间就有六七个小时”。野外实习时,师生更是形影不离,吃住都在一起。如今“院士课”上的多位院士,都在这个时期考入这所大学。和现在的大多学生一样,测绘并非他们的第一志愿。测绘界唯一一位两院院士李德仁回忆,他当时也有很大的专业情绪。这位尖子生原本报考的是北大数学物理系,“想搞火箭”。没想到,教育部为了照顾这所新大学,将他录取至武测航空摄影测量系。听了夏坚白院长的新生训话,以及系主任王之卓的讲课,他才逐渐喜欢上这个专业,“发现也需要学好数学和物理”。他喜欢琢磨问题。对一位苏联专家撰写的教材产生质疑后,他写成论文递到已是中科院学部委员的王之卓手中。没过几天,王先生将李德仁约至家中,两人坐在书房里,久久地讨论,直至天色已晚。之后,李德仁成了王先生家的常客。正值困难时期,老先生家每每分到东湖鱼、梁子湖螃蟹之类的好东西,总会叫上学生一起享用。原本想学生物、打算回去复读的刘经南,在入校后也慢慢对专业来了兴趣。上叶雪安讲授的大地测量学时,他发现课本中一个定理的推导过程“不严谨”,它借助了图形思维,而不是“完美纯粹的数学思维”。刘经南一头扎进德文版和俄文版的资料中,自学了理科的微分几何、复变函数和矢量代数,他下定决心,“一定要用纯理性、抽象的思维推出来”。过了一个学期,在宿舍楼的答疑室里,刘经南将好几页的推导纸递给叶雪安。这位60多岁的老先生,叼着烟,仔细看了刘经南的推导,高兴地说:“你这倒是个严谨的方法,我们都要借助于所谓的微分线段,你这个完全不借助图形,从理论到理论。你这个小子不错。”刘经南很受鼓舞。他问:“这个可以发表吗?”叶雪安悠悠地点了点头。没想到,文章没能发表。“文革”很快袭来。被抄家后,叶雪安因不堪凌辱,在浴室中服毒自杀。武大图书馆中几本发黄的教材,是他留下的不多的痕迹。夹着烟纸的碎纸片,变成了60万字的教材1968年冬天,包括刘经南在内的高年级学生已全被分配或遣散。很多人流着泪烧掉专业书,王之卓却给大家打气:“哪怕将来我们去卖冰棍,冰棍箱子里也要带上书。”学生走远了,他和夏坚白仍在挥手:“不要丢了专业,不要丢了外语!” 不出两年,武测被撤销,军队接管了校园。1972年春,政治环境略有改善,夏坚白找来武测一位前同事,共同拟就一份近5千字的建议书,恳请“恢复武汉测绘学院、测绘科学研究所、国家测绘总局”。听说一位前同事打算调去地震队,夏坚白拉着他的手说,“叶先生(指叶雪安——记者注)死了,搞大地测量的人不多啊!你不要走,武测会恢复的,是需要你们的。”1973年3月,周总理终于作出批示恢复这所学校,夏坚白闻讯后热泪盈眶。但他再也没能踏上讲台。在师生流散的岁月里,他曾将几位原武测教师组织起来,成立了“业余测绘科学研究小组”,匿名翻译了两本外国学术著作。宁津生冒险加入了小组。王之卓也在偷偷地编写教材。文革结束后,他掏出一个旧报纸裹着的小包,里面是一叠各种颜色的纸张,夹着游泳牌和飞马牌香烟的烟纸。这些写满公式和符号的碎纸片,变成了60万字的《摄影测量原理》。早在留学德国时,夏坚白、王之卓及陈永龄就约定:回国后要合力编写教材,“一同做一番事业”。他们是中国最早的测绘学博士,曾靠“中英庚款”一同辗转英德留学。学成回国后,被称“测绘三杰”的他们,在战火纷飞中靠着书信,合作编出了中国第一套大学测绘教材。宁津生和几位院士接过了老师的事业。每隔一段时间,他们便聚在一起,商讨教材的修订。20年间,《测绘学概论》再版了3次,变成了150多所高校的专业基础课本。这样下去,大学里就出不了大师了在给新生的课堂上,李德仁常提起导师王之卓。这位学部委员曾亲自为李德仁改论文、排章节,将他的论文推荐发表,而且从不署自己的名。出于政治原因,研究生入学考了第一的李德仁,未被录取。文革结束后,王之卓立即将这位学生召唤回校,为他举行专门考试。干过建筑工,种过水稻,扎过钢筋的李德仁,终于在39岁回到书堆中。靠着老师坐公交去邮局寄出的一封封推荐信,李德仁飞向了更远的学术世界。在德国斯图加特大学,他不到一年半就取得了博士学位。324页的博士论文,取得该校历史最高成绩,评委评价“它解决了一个百年难题”。有不少外国研究机构挽留他。妻子给“老大不小”的他寄来书信:几十年来你一直在学习,一直在花国家的钱,你还不如一头牛呢,到现在都没挤出一点奶来,现在到了该回国“挤奶”的时候了。几乎没有任何犹豫,李德仁回到了老师曾站过的讲台上。▎5年前,宁津生80岁寿辰时,6位院士合影,左起张祖勋、刘经南、宁津生、李德仁、陈俊勇、龚健雅和导师一样,李德仁一心扑在教学上。他一口气给本科生开了3门课,给研究生开了一门课,还编出3本教材。但变化也在一点点发生。评上院士后,李德仁眼瞅着研究经费翻了又翻,原来是几万元,后来小数点往后挪了几位,涨到几千万元。他越来越忙,各种会议、出差,将他的日程表排得密不透风。当了武测校长后,他离讲台更远了。一位本科生毕业后去了酒泉卫星发射中心,写信给李德仁的夫人说,从没听过李院士的课,深感遗憾。李德仁对中国青年报·中青在线记者回忆,接过信后,他心里“很不好受”。他亲自去了趟酒泉,跑到学生所在单位,给所有员工讲了一堂课。刘经南担任武汉大学校长时,每晚仍坚持去实验室。很多人摸清这个规律后,在门口排着长队等他。能留给学生的时间少之又少。宁津生认为,校长没空上课可以理解,他们的主要任务不是教学,而是“把握方向、服务教师”,归根结底是提高教学质量。令他失落的是,不只院士、校长,现在甚至连很多最普通的教师,都很难把教学放在首位。决定他们晋升前途的,不再是一堂堂课,而是一堆堆的论文、表格和项目。“这个评价体系很糟糕,会把高校的教学拖垮。这样下去,大学里就出不了大师了。”这位老校长提高音量说。他怀念起刚进大学的日子,那时所有新教师从助教起步。而如今,在许多大学,博士后进大学直接就是副教授。师生之间的交往,似乎也淡了。去很多新建的大学城参观时,刘经南感触很深。那些大学都在郊区,修得很漂亮,教室很大气,但一到晚上,就变成了死城,“看不见一个人”。老师都回到城内,学生窝在宿舍里玩游戏。“感觉老师和学生脱节了,学生变得很孤独、很内向。”刘经南对中国青年报·中青在线记者感慨。这些变化,也在很大程度上促成了“院士课”的诞生。几位院士一拍即合,再次登上了本科生的讲台。向科学进军喊口号是无济于事的20年来,这门课更新的速度很快。讲地理信息系统时,龚健雅以前常讲“单机的、局域网的系统”。而现在,课件上的内容早变成了“广域网的、手机的系统”。与课程的发展同步,中国科技界也在大跨步向前。李德仁记得,刚回国时,45岁的他脑子里只有一件事,“怎么把文革丢掉的时间补回来?”当时在武测,除了上课,每个学者都在“玩儿了命地做科研”,半夜翻墙上机是常事。如今,科学界早已翻过新篇,到处都在谈论“创新”,谈论“国际一流”。但到了新时代,宁津生却不鼓励学生“动辄提创新”。“搞两三年就让你们创新,创国际一流,不现实。还是要踏实一点。”他常对学生说,“从0到1的创新很难,你们作为学生,可以多尝试从1到1.5的创新。”刘经南的教学风格不同。这位“喜欢挑战”的科学家,思维发散开阔,他常在课上坦言自己的“诺奖情结”。第一次见面,一位博士生就被他的气势震住了。导师坐在桌子对面,语气很平常,但决心毋庸置疑:“你们要做,就做到国内第一、世界第一。”▎ 在武汉测量制图学院,“测绘三杰”与夫人合影,后排左起王之卓、夏坚白、陈永龄李德仁则认为,创新源自学科交叉。这一看法,与他的导师一脉相承。王之卓曾打趣地提出“科技边际效应观点”:“不同学科交叉所产生的效应,正如大陆与海洋的交接边缘,一定是生产力最为活跃的地区一样。”不过,不管如何创新,几位院士都认为,做科研必须坐得住“冷板凳”。早在武测院刊创刊号上,王之卓就直言:“向科学进军喊口号是无济于事的,这是一个较长期而艰苦的工作。”宁津生一辈子专注于研究地球重力场。为了做一个课题,他和合作者一道一道解开了130321个公式。学生李建成花了26多年时间,将大地水准面的精度提高到厘米级。46岁时,他当选为中国工程院最年轻的院士。从中学时代起,刘经南就在琢磨一个问题,“怎样才能得诺贝尔奖?”大学时他想到,如果能计算出宇宙膨胀的加速度,离那块金灿灿的奖牌肯定不远了。当了博导后,一个“性格有些坚毅”、来自农村的陕西男生接受了这个挑战。刘经南激励他,“得诺贝尔奖不是这么容易的,你可能搞不出来,但你可以让你的学生继续搞,徒子徒孙都可以做下去!”好几年时间里,这个学生一直在埋头编软件,一页一页地啃英语论文。交流科研进展时,刘经南发现,他抱着一个小本子,上面是一句句的汉语翻译。没过几年,3位美国教授宣布,测出宇宙以正加速度膨胀,这个力来自暗能量。2011年,这一发现获了诺奖。在给新生的课堂上,刘经南讲到了这个故事,多位学生对此印象深刻。虽然与诺奖无缘,但这个“傻得可爱”的陕西男生,后来将同样的理论方法,用到了嫦娥号的数据处理上。在这门课上,刘经南好几次预测与测绘相关的诺奖。3年前,他正在坐在汽车里,一个学生兴奋地打来电话,“你讲的生物导航系统真的得奖了!”20年来,几位院士努力在学生心中撒下一种渴望,那就是对科学高峰的向往。但另一方面,他们又不断提醒着,这种渴望不能被扭曲、被异化。这一教诲同样来自老前辈们。王之卓极力反对过分溢美之词。但凡有人在文章中提到“王之卓公式”,他阅稿时总要划去,附上纸条,“请再不要提王之卓公式”。龚健雅曾将自己的一个数据结构命名为“perfect data structure(完美数据结构)”。王之卓看过论文后严肃批评道,“你不能自封为‘完美的’。”龚健雅解释,他想表达的意思是“完整的”。老先生皱了皱眉说,还是不行。指导博士生李彬时,宁津生也有着相同的态度。一次,这位学生打算用“前沿、首次”几个词介绍自己的最新算法,宁津生果断否定。他送了一幅毛笔字给李彬,上面写着四个遒劲有力的大字:严谨求实。要是因为退休,断了这门课很可惜没成为宁津生的学生之前,李彬觉得宁津生就像“遥远的一颗星”。在一个高端学术交流会上,李彬远远望见这位院士、前校长坐在主席台的正中央。成了他的博士生后,两人经常隔着一张小桌子,从科研聊到细碎的日常生活。每次离开老师家的小客厅,李彬包里总会被师母塞得满满当当,里面有豇豆、花生米、辣椒酱等各色“宝贝”。这位博士结婚时,宁津生穿着衬衫西裤出现了,做了他的主婚人。还没等他毕业,老师突然“老了”。他的腰折了下去,走路久了便心慌腿软。来参加李彬的论文答辩时,老人在秘书的搀扶下走来。在场的评委都劝宁津生回去等消息,但他坚持听完3个多小时的答辩。给本科生讲课时,宁津生也很难再站着上课。近两年来,越来越多的院士不得不“服老”,上课时坐在一把灰黄的旧椅子上。▎在德国留学时,陈永龄、夏坚白、王之卓与友人合影但他们仍在为这门课忙碌着。教材的第4版正在修订之中;同样的概论课移植到了同济大学;最近,给研究生开一门类似的概论课,又被列入计划之中。不久前,中国工程院领导来到武汉大学,征求院士们对70岁退休制度的意见。宁津生在会上平静地说,他对退休没有意见,只有一件事,还望商榷。这位老科学家顿了顿说,他想继续给大学新生上课。“我们6个院士有5个过了70岁,要是因为退休,断了这门课很可惜。”正如当年老教授用精彩的讲课留住了他们,这几位院士也留住了许多年轻的学生。宁津生记得,开了这门课后,转专业的学生少了很多。到了第三年,头一遭有外专业的转进来。在和时间的角力中,几位院士最关心的是人才的接力。在李德仁眼中,导师王之卓是个真正的“教育家”。这位院士培养出了3位院士,除了讲授《测绘学概论》的李德仁和张祖勋,还有被媒体称为“高铁院士”的刘先林。刘先林是李德仁的同班同学。最近他突然在网上“火了”,一张照片广为流传:一个光脚穿着旧皮鞋的干瘦老头,埋头在高铁二等座上修改演讲稿。在测绘界同仁眼中,刘先林“不修边幅、不善言辞”,但他是个“奇才”,一个人鼓捣出了5种航测仪器,两次获得国家科技进步一等奖。李德仁很钦佩这位同门兄弟,但他还是向刘先林提议,要培养年轻人。“老刘,你这个老牛能活多少年?你刘先林死了以后,刘先林的东西没有了,你不是成功的。”刘先林有些触动,点了点头。同几位老先生一样,6位院士都将学生视为自己的最大成就。宁津生和李德仁门下,各出了一位院士。如今,他们也踏上了接力之路,踏上了这门课的讲台。
全文共3009字,预计学习时长9分钟你知道吗?微软、谷歌、Facebook、亚马逊、Uber等科技巨头的研究部门已经成为人工智能(AI)领域开源框架最活跃的贡献者之一。他们的贡献结合了已在内部解决方案中进行了大规模测试的堆栈,以及来自他们的研究实验室的一些非常先进的思想。虽然世界上最大的技术公司能积极为开源深度学习做出贡献是令人兴奋的,但这让数据科学家很难跟上该领域的新发展。今天,本文要讲一讲上个月Facebook人工智能研究(FAIR)开源的三个新版本。快速增长的趋势下,这会产生什么影响?FAIR一直是深度学习领域研究和开源框架的定期贡献者。从PyTorch到ONNX, FAIR团队为实现深度学习应用程序的简化做出了不可思议的贡献。在过去几周里,FAIR增加了三个新的系列开源框架。PolygamesPolygames是一个开源的研究框架,通过自我游戏的方式来训练深度学习网络。Polygames基于著名的“零学习”概念,即允许代理无需进行任何预先设定的训练,而是通过与环境交互来掌握环境。乍看之下,Polygames似乎与Alpha Zero或ELF OpenGo等其他游戏学习框架类似,但FAIR堆栈也有自己的贡献。对于初学者来说,Polygames支持更广泛的战略游戏列表,如Hex、Havannah、Minishogi、Connect6、Minesweeper、Mastermind、EinStein wurfelt nicht!、Nogo和Othello。他们为研究人员提供了更广泛的环境来测试深度学习网络。此外,Polygames还以一个巧妙的架构扩展了传统的零学习概念,该架构结合了深度神经网络和蒙特卡罗树搜索方法。这种架构允许网络泛化到更多的任务和环境。Polygames框架的一个意想不到的好处是代理中神经可塑性的创建。Polygames的模型是渐进式的——框架带有一个用于添加新层和通道或增加内核宽度的脚本——它们能够进行热启动训练,允许神经网络随训练成长。从编程模型的角度来看,Polygames提供了一个包含游戏的库,以及一个实现游戏的单文件API。开发人员的经验是基于PyTorch的,因此易于上手。FAIR团队在Polygames上取得了一些里程碑式的成绩,包括在Hex19游戏中击败人类顶级玩家。该游戏由诗人、数学家皮特·海因(Piet Hein)、 约翰·纳什(John Nash)和经济学家于20世纪40年代开发,它挑战了一些传统的人类游戏思维过程。规则很简单。黑色和白色依次填充一个空单元格。如果把北方和南方连接起来,黑人就赢了;如果把西方和东方连接起来,白人就赢了。馅饼规则使游戏更加公平:在第二次移动时,第二个玩家可以决定交换颜色。这款游戏之所以困难,是因为作为一款连接游戏,它的奖励是基于全局而非局部的标准。在一系列的实验中,Polygames在Hex游戏中击败了人类中的顶尖玩家。结果如下图所示,在图中,人类玩家操纵白色棋子。第一个图像表示Hex的开局。在游戏的第二阶段,人类(白色)似乎赢了——两个坚实的组分别连接到东和西,并互相互靠近连接。然而,Polygames能够扭转这种局面,创造了一个相当复杂的中心位置。随着Polygames使用两个可能的路径之一,它找到了一个成功的组合并展开了这个位置。PyTorch3DPyTorch3D是一个用于在3D环境中训练深度学习网络的框架。尽管有大量的视觉智能系统需要在现实环境中运行,但在3D环境中训练这类智能体的工具和框架仍然受到高度限制。PyTorch3D是一个高度模块化和优化的库,具有独特的功能,旨在让使用PyTorch的3D深度学习更容易。PyTorch3D为快速可微的3D数据提供了一组常用的3D操作符和损失函数,以及一个模块化可微绘制API,使研究人员能够立即将这些函数导入当前最先进的深度学习系统。PyTorch3D利用了最近在3D深度学习方面的几个最新里程碑,如FAIR的MeshR-CNN,它实现了复杂室内空间图像的完整3D对象重建。该框架还使用Detectron2,这是一个高度优化的2D识别库,可以成功将对象理解推向第三维。PyTorch3D处理旋转和3D转换的功能也是创建C3DPO的核心,C3DPO是一种使用较少注释的训练数据学习图像和3D形状之间关联的新方法。PyTorch3D的一些关键贡献包括:· 用于存储和操作三角形网格的数据结构:PyTorch3D将3D表示存储在称为网格 (Meshes) 的数据结构中。这种数据结构使得研究人员很容易快速地将底层的网格数据转换成不同的视图,以匹配最有效表示数据的操作符。· 三角网格上的高效操作:PyTorch3D包含一系列操作,用于优化几个常用操作符和3D数据的损失函数,支持异构批量输入。这意味着研究人员和工程师可以在PyTorch3D中导入操作符,以便更快地进行实验,而不必在每个新项目开始时重新创建或使用操作符。· 可微分网格渲染器:PyTorch3D包括一个模块化的可微分渲染器。渲染器由可组合的单元组成,使得用户能轻松扩展渲染器来支持自定义照明或阴影效果。HiPlot探索高维数据是深度学习应用的挑战之一。HiPlot是一个交互式可视化工具,它帮助人工智能研究人员发现高维数据中的相关性和模式,并使用平行图和其他图形方式来表示信息。HiPlot使用一种称为平行图的技术,这是一种可视化和过滤高维数据的方便做法。从功能的角度来看,HiPlot与其他可视化工具相比有以下几个优势:· 交互性:在HiPlot中,平行图是交互式的,这使得在不同的场景中可视化很容易。例如,你可以专注于沿着一个或多个轴获取范围或值,根据另一个轴设置配色方案,重新排序或删除轴,或提取特定的数据选择。· 简洁性:使用Hiplot只需要几行代码。通过带有“Hiplot”命令的服务器,就可以通过一个给定的URL访问它,并使用它来可视化、管理和共享实验。· 基于种群的训练可视化:HiPlot提供了一种简单的方法来可视化XY图中基于种群的训练实验,该图中,不同数据点之间是有边缘的。这种可视化在深度学习实验中非常普遍。在深度学习的几个领域,Facebook的FAIR团队还在继续创新,并积极为开源社区做出贡献。PyTorch3D、Polygames和HiPlot是FAIR的最新贡献,旨在实现深度学习应用程序的简化。期待未来会有更多的进展!留言点赞关注我们一起分享AI学习与发展的干货如转载,请后台留言,遵守转载规范