我能参加科研吗?
每个孩子都有好奇心,从内心发出的兴趣与想法实现起来是最有效的。那么“科研”会适合你,只要你勇于开始,只要你兴趣,你就会投入精力,去探索就能有发现。
了解真正的科研是什么,才能找到最适合自己的,了解究竟哪些能力能获得提升,了解自己真正想要的。
那么什么是真正的科研? 你理解的“科研”是真的吗?
第三讲【研究中的通用“方法”】
【教师简介】
尤洋:加州大学伯克利分校计算机博士候选人
尤洋博士是一位西贝尔学者,目前在加州大学伯克利分校计算机系读博士学位。研究兴趣包括高性能计算,并行算法以及机器学习。他当前的研究重点是大规模深度学习训练算法的分布式优化。
尤博士曾创造ImageNet训练速度的世界记录,并被ScienceDaily等几十家媒体广泛报道。尤博士近三年来以第一作者的身份,在NIPS、Supercomputing、IPDPS、ICS等国际重要会议或期刊上发表论文近十余篇。
他曾以第一作者的身份获得国际并行与分布式处理大会(IPDPS)的最佳论文(0.8%获奖率),和国际并行处理大会(ICPP)的最佳论文(0.3%获奖率)。尤博士曾获得清华大学优秀毕业生、北京市优秀毕业生、国家奖学金,以及清华大学计算机系数额最高的西贝尔奖学金。
他还在2017年获得美国计算机协会(ACM)唯一颁给在读博士生的乔治·迈克尔高性能计算奖学金。他也获得了颁给伯克利优秀毕业生的Lotfi A. Zadeh Prize。尤博士曾经在IBM沃森研究中心、英伟达总部、微软总部以及谷歌总部实习。
【分享正文】
以计算机研究分析基础,介绍研究中的通用“方法”
计算机现在已然成为各个科学研究的一部分。此前进行传统科学研究需要具备三要素:
第一是理论,做任何事情之前我们都需要学习东西,要先有理论。
比如牛顿第一定律、牛顿第二定律。比如牛顿某一天发现苹果砸到他头上了,然后他要先提出一套理论,再试图去解释这个事情。
第二是实验,有了理论后,我们要验证提出的理论是否正确,就需要做实验。
比如我们要制造一辆汽车,会先做一辆样品车去撞一下,看这汽车在事故中表现如何;或制造iphone手机也要做无数次的测试,而这些测试都是实验。
第三是模拟,人们使用计算机可以采用数值模拟做很多实验,去完成那些不好直接作的实验,或代价太高的实验。
而我认为大约从2000年以后,科学研究又有了些微小变化。跟传统科学研究一样,现在依然需要理论、实验和模拟。但现在更重要的是有数据分析。
我认为,特别最近十年左右,人们制造了无穷无尽的数据。
比如随着智能手机即移动端的普及,每天每个人都会制造很多数据;同样,各工业各领域的无人机、传感器,如麦田里的传感器,高山里的传感器,一直在不断地采集数据;美国视频网站YouTube也曾经发布过一项数据统计,从2015年开始他们的视频数量呈指数级增长。这些数据增长的速度是非常可怕的,可能在未来的某一天,我们不知道是否有足够的容量去储存。
所以数据分析非常非常重要。只有在这些海量数据中找出有效信息,才对我们的经济、生活、科研有更好的帮助。
下面我就简单地介绍一下,计算机科学研究的一些常用方法。
可以把计算机科学中所有的问题分为三类:
第一种是提出问题型研究。
第二种是解决问题型研究。
第三种是解释原因型研究。
提出问题型研究就是从现实中找出问题,面对问题提出研究方向。
假设针对现有系统,如微软操作系统或苹果手机的IOS系统;或针对现有一些理论,如现在计算机科学的核心基础——计算复杂度理论;或者针对各种软件,如微信、淘宝等。我们去分析他们有什么缺陷,讨论现有解决方案的利弊端,做出权衡。
不管解决方案再好,也都需要有一定取舍。而其中所谓利弊,也会随着科学技术的发展产生变化。之前可能是利大于弊的事情,随着新技术更新,可能就变成弊大于利了。当然也可能反之。
简单举例解释一下。
给大家介绍一个摩尔定律,即芯片单位体积的晶体管数量每18个月翻一倍。
用更好懂的语言解释就是,计算机处理器CPU的速度每18个月提高一倍,计算机或手机速度每18个月会快一倍。
摩尔定律非常重要,可以说它是整个计算机产业发展的基础,指导并支撑了计算机产业在过去几十年的发展。
各大计算机巨头,如微软、谷歌、英特尔等会根据摩尔定律去投资,去扩张。由此,提出一些问题,为什么晶体管每18个月会翻一倍呢?是什么保证了这一结果?这样的代价是什么?又会导致什么问题?会不会哪一天这个定律就不行了?我们该如何拯救这个摩尔定律,继续支持计算机产业的高速发展呢?
还有一个定理叫安迪-比尔定理:“Andy gives, Bill takes away”。
安迪指英特尔前CEO安迪·格鲁夫,比尔指微软前任CEO比尔·盖茨,这句话的意思是,硬件提高的性能很快被软件消耗掉了,这是对IT产业中软件和硬件升级换代关系的一个概括。
当CPU速度每18个月提高一倍,软件通过不断升级更新就会很快把这些提升消耗掉。软硬件都在不断快速提升,呈现良好互动。
现在的很多应用如抖音、阿里巴巴,在二十多年前根本无法想象,因为硬件无法支撑。
曾经比尔·盖茨开玩笑说,如果汽车行业能像计算机产业一样发展,那我们应该用25美元就能买一辆车,加一箱油能够跑1000英里。
回到原来的问题,为什么计算机行业可以持续做到单位体积内晶体管的数量每18个月翻一倍呢?
就是要不断把晶体管做小,芯片就会变得越来越密。这会导致什么问题呢?
在2000年左右,就有一些计算机科学家做了研究,他们发现如果按照这种趋势发展,不进行人为管控,大概到202X年计算机芯片就可以用来做烧烤了,再过几年可能计算机芯片的温度就要跟太阳温度一样高了。
正是这群科学家,用正确的数学模型去估计摩尔定律持续发展会导致什么样的问题,从而变相拯救了计算机行业。后面我会再介绍如何解决这个问题。
所以我想用以上例子,解释什么是“提出问题型研究”。计算机科学发展飞快,过程中会遇到很多问题,提出问题很重要的。如果能提出一些关键性问题,能够避免你走入一些错误的方向,甚至有可能拯救整个产业。
就是当我们已经知道了一些问题,从而想提出一些解决方案。
比如如何使我们的程序运行速度更快?如何设计出一个围棋程序战胜人类?
2016年就谷歌开发出了一个软件,能够击败人类最好的围棋运动员。
如何比人类更快更好的识别和分类图片?
现在这种技术已经很普及了,包括很多摄像头有人脸识别技术,在十多年前都是很不成熟的。
如何实现网页排序算法?
今天在谷歌或百度搜索一下,它就总能把最相关的页面呈现在最前面。这背后是一个Page Rank算法。
以上几个例子,都属于“解决问题型研究”。
刚才,我还向大家提出一个很重要的问题——如果按摩尔定律不断发展,最后会导致计算机芯片温度可能比太阳还高。那计算机行业是怎么解决这个问题的呢?
通过不断研究,我们提出的方法就是多处理器。
以前,计算机芯片只有一个处理器——中央处理器,行业术语也称之为“核”。
而现在我们尽量采用多核处理器,比如我们现在的手机都有四核或八核。这一解决方案成功应用后,至少到目前为止,摩尔定律还能很好的得到保证。
这些都属于“解决问题型研究”。
即指我们已经有了一个解决方案,但人们想弄清楚这种方案为什么是可行的。
比如一个人尝试了无穷种方案,其中有一次可行了,但他却不明白为什么这个方案是可行的,所以人们就想试图做出解释。
包括现在最热门的人工智能,其实是没有理论依据的。现在,我们实现人工智能的方法还是通过给机器一堆数据,然后进行刚才提到的监督学习和非监督学习,但其实我们并不理解机器深度学习模式究竟是如何实现的,实际现在的人工智能系统是不可靠的,人类还并不太理解它是怎么回事儿。
所以现在很多人在研究,试图解释清楚,只有当我们真正理解它为什么工作之后,才能更好地控制它们。否则有一天,科技发展到一定水平我们无法控制人工智能了,那是一件非常危险的事情。
想做这种类型的研究,一般需要有很强的数学和理论背景,如微积分、线性代数、数值优化、概率论等。
往往我们需要对问题做出合理的假设,使得问题尽量符合真实的应用场景。我们通常也会指出人们之前的认知误区。所以这一类型研究对理论和数学要求非常高。
当然这种理论研究也是非常重要的,比如计算机领域的最高科学奖一般都会颁给在计算机理论上做出很大贡献的科学家。
举个“解释原因型研究”的案例。
人们当前使用批量随机梯度下降法去求解人工智能优化问题。人们观察到当我们把批量数增大时,系统的精度会提升。但是,当把批量增加到特别大时,系统的精度会下降。为什么?能否从优化和泛化角度做出合理的解释?比如,我们给机器一万张图片学习人脸识别,不能一次性把一万张图片给它,而要分批给它,如每批给100张去学,或每批给1000张去学。
你会发现一个很有意思的事情,就是每次给它1000张和给它100张的学习效果是不一样的。而这又是为什么?这现在是计算机科学研究的一个热点。
在利用计算机解决问题时,算法的使用和选择非常重要。
那么就要关注算法复杂度。什么是算法复杂度?指算法在编写成可执行程序后,运行时所需要的资源(时间资源、内存资源)。同一问题用不同算法解决,而算法的质量优劣将影响到算法乃至程序的效率。
举一个简单示例:对N个数排序。当n=10时,对9、2、7、5、1、0、6、3、4、8排序,排序完是0、1、2、3、4、5、6、7、8、9。排序是很简单的计算机科学问题,你有什么好的算法呢?而当N的规模不同时,我们要采取的方法也会不一样。当N=1000?N=100万?N=10亿?我们要对1000个数、100万个数、10亿个数进行排序,要用什么方法呢?当N规模越大,比较复杂的算法消耗资源也越多。在计算机科学研究中,我们往往不知道N是多少,或者今天写一套软件程序,可能十年甚至二十年后我们还希望能使用它,今天N只是1000,10年后也许就变成了10亿。所以我们在设计软件时,必须要考虑算法复杂度,考虑算法的可持续发展性。
其次,各个学科都在使用计算机以及超级计算机进行模式实验。
随着计算机普及,现在各个学科包括物理、化学、生物、地理、天文、工程等都会在研究中使用计算机进行模拟实验。
而使用超级计算机进行模拟实验的情况也越来越多,当具体实验问题太大、太小、太快、太慢、太贵或太危险时,都可以采用模拟实验。
比如研究宇宙天文,天文数字非常庞大,又很难用人类肉眼去做实验,如捕捉小行星等,就可以用计算机模拟。
比如分子层面的蛋白质折叠等,牵扯状态太多,做实验也很困难,也可以用计算机去模拟。
比如设计高效能飞机引擎,速度太快,实验数据很难捕捉,就可以先用计算机模拟引擎在各种环境下的性能如何。
比如全球气候变化,人类要观测几百年甚至上千年才会一些气候变化特征,单靠实测性研究几乎不可能。现在普遍是科学家采集一些数据,然后运用计算机模拟。
比如核爆模拟实验,虽然各国达成协定后,都不再做真实的核爆实验,但是使用超级计算机仍可以进行核爆模拟实验。
关于科研中计算机、超级计算机的算法及其使用的知识,稍后再有单独文章进行介绍。有兴趣的读者欢迎持续关注。
现在最热门的编程模型就是python,它是一种很好的免费数据分析工具。
如果需要编程框架,可以使用谷歌的tensorflow或facebook的pytorch,也是免费工具。
书籍方面的话,姚期智可能会在9月份出一本书叫《人工智能(高中版)》,他是我国目前最好的计算机科学家,最权威的人工智能专家。
Q1:中学生对科学研究有兴趣的话,在实验设计数据收集和分析等方面您有什么好的建议吗?
尤博士:我认为中学生最好先找一个老师去指导你,比如去大学实验室,教授可能会安排他的博士生去一步步对你进行指导。
加州伯克利分校每年会招一些高中生甚至初中生到实验室参与研究,由于我们知道他们没有经验,首先会一步一步教他们怎么做,如第一周会告诉他们怎么样采集数据?采集哪些数据?怎么使用软件?对中学生,我们的态度就是手把手教。
Q2:从您的专业角度来看,对于中学教师,如何帮助学生进行科学研究?
尤博士:教师引导高中生、初中生参与科学研究,首先必须充分沟通,了解学生究竟有什么疑惑,具体问题是什么,可能对教师来讲很简单的问题,学生没有相关专业背景,可能就会觉得是很难的问题。如果教师不理解学生的内心想法和困难,就很容易造成误解。不了解学生,给他安排了非常艰难的任务,很容易给学生挫败感,就会让他逐渐对科研失去感兴趣。
另外,教师可以为学生搭建适合的科研平台,比如与大学实验室或课题组建立联系。
Q3:您对跨专业读博士有什么好的建议吗?
尤博士:我认为跨专业读博士很常见,以人工智能为例,它需要很多数学基础,如果本科学数学,研究生学人工智能,可能比本科就读计算机的同学还会更有优势。
很多计算机专业的学生,数学理论功底没有数学专业强。本科学数学不管转到哪个科学都是蛮有需要的。如果本科是物理专业的话,也很容易转到计算机或者其他学科。
若有检测需求可拨打咨询热线或点击在线咨询,将会有工程师为您详细解答,欢迎您的来电!