今天先讲Google的一道面试题,它其实是考察候选人的工程思维,题目是这么说的:
给你两个一模同样的玻璃球。这两个球倘若从必定高度掉到地上就会摔碎,当然,倘若在这个高度以下往下扔,怎么都不会碎,超过这个高度肯定就一次摔碎了。
此刻已知这个恰巧摔碎的高度范围在1层楼到100层楼之间。怎样用最少的实验次数,用这两个玻璃球测试出玻璃球恰好摔碎的楼高。
为了便于你理解这道题,我不妨讲两个详细的策略。
第1个策略是从第1层楼起始,一层一层往上实验。 你拿着球跑到第1层,一摔,无碎,接下来你又跑到第二层去试,亦无摔碎。你一层层试下去,例如说到了第59层摔碎了,那样你就晓得它摔碎的高度是59层。这个策略能保准你得到成功,但显然不是特别有效。
第二个策略是预测一下,试一试, 你跑到30层楼一试,无碎,再跑到80层楼一试,碎了。虽然你把摔碎高度的范围从1-100减小到30-80,但接下来你就犯难了,由于你就剩一个球了,再这般凭感觉做实验,可能两个球都摔碎了,亦测不出想晓得的高度。
这道题好的办法是什么呢?两个球,一个用来做粗调,一个用来做精调,详细做法是以下这般的。
首要拿第1个球到10层楼去试,倘若无摔碎,就去20层楼,每次增多10层楼。倘若在某个十层摔碎了,例如60层,就晓得摔碎的高度在51-60层之间,接下来从51层起始一层层地实验,这般能够保准不出二十次,必定能试出恰巧摔碎玻璃球的高度。
数学好的读者伴侣能够去证明一下这是从统计的方向讲最优的策略,为了照顾所有的读者,我就不占用时间证明了。
这道题和计算机技术完全无关,和制品设计或市场推广似乎亦无关,那样为何Google要考这道题?其实有两个目的, 一是为了找到聪明人,二是为了判断这个候选人的工程素养。
世界上顶级的机构在招人时都要强调一个人将来的可塑性,其中的一条便是要足够聪明便于培养,因此呢都会考有些看似智力题的问题。这个传统在IT行业,尤其是在硅谷,源于诺贝尔奖得到者夏克利挑选人的思维方式。
为何可塑性比过去的经历重要呢?由于大部分机构招人是做将来的事情,而不是重复过去的事情,尤其是针对大学刚毕业的青年人,过去在大学几年学的东西,和后来一生要持续学习的东西相比,实在少得可怜。
因此呢, 倘若一个资质平庸、学习能力不强的学生在大学时多学了一点专业知识,比哪些聪明好学,少学一两门专业课的人相比,后劲是不足的。
不外,倘若你今天再应聘这些顶级跨境机构,倒不必太担心被考这般的智力题,这要感谢美国的政治正确。有些左派人士讲,哪些智力题有卑视倾向,由于它们让有些族裔的人显出不聪明,而政治正确要强调的是必须承认所有的族裔同等聪明。当然这是题外话。
那样这道题考的是什么样的工程素养呢?便是今天标题所说的粗调和精调。倘若我要问,有一个数字是40.365,例如说天文望远镜的焦距,你怎么样达到它?
通常人根据生活直觉,直奔这个数字去就能够了。然则在工程上,这般简单的一个数字并非抽象的,而是非常详细的。
倘若是天文望远镜的焦距,你是不是会用手把握着望远镜的那个圆筒,前后移动,估摸着镜片之间的距离来调节呢?倘若这是导弹发射的方向,你自己是不是会用个量角器估算导弹和水平线的方向呢?
显然咱们不可这么做,咱们必须有一个能够准确达到这个数字的办法,这便是工程的思维—— 不仅要晓得目的在哪里,还必须设计一个能够达到目的的道路。
针对天文望远镜,设计它们的工程师必须设计一个能够转动的旋钮,让它的长度接近40.365这个数字。
精确的天文望远镜
然则接下来的问题来了,倘若这个旋钮每转动一圈,调节的幅度太大,要调到小数点后面三位几乎不可能。倘若每转动一圈调节的幅度太小,例如每次调节0.001,那样可能要花很长期才可调到40.365这个数。类似地,调节导弹的方向亦是如此。
那样工程师们是怎么做的呢?便是要 设计各样粗调和精调的办法。
在中国学习生物时用过光学显微镜的伴侣,可能还会记得在显微镜上有两个旋钮, 第1个是粗调,让你大致看到图像,第二个是精调,能让你看清楚图像。
如果不消粗调,只用精调,不仅办事的效率会很低,况且可能会由于一起始的范围找得不对,在花了半天时间后无找到后,最后干脆放弃了尝试。
今天最先进的手术设备人的精度能够做到0.001毫米,这般精细的仪器里面的电机一起始速度相对比较快,否则一个手术做的时间会长得不得了。
然则手术刀接近目的距离时,会变得非常慢,但精度会非常高。这般,手术设备人才可同期保准效率和准确性。
类似地,任何一个设备学习的过程,其实都是持续地调节数学模型参数的过程,直到参数收敛到最佳点。
每一次调节被叫作为是一次迭代,调节的幅度被叫作为迭代的步长。一起始的时候,迭代的步长要比很强,这般能够火速地确定大致范围,效率比较高。
这就如同测试玻璃球的那个问题中,一起始一次测试10层是同样。然则,倘若总是把步长设计得很大,那样最后可能会找不到最佳的参数,由于要么走过头了,要么无步行到。因此呢,设备学习到最后需要缩小步长,进行精调,以保准最后收敛到最佳点。
世界上每年有非常多设备学习方面的论文,都是围绕加强学习效率展开的,而其中的核心其实便是怎么样用最少次迭代,完成模型的训练。当然,任何好的设备学习算法都不是事先人为设定步长,而是在学习的过程中,自动找到合适的步长。
这种粗调和精调结合的工程设计方式,并不限于“调节”这个范围,况且用于了非常多工程制品的设计。
例如本田最新的超级跑车NSX有四个发动机。一个传统的汽油发动机供给重点动力,这相当于是粗调。一个电动发动机供给在起跑一瞬间快速的加速,这相当于精调。
一辆汽车倘若发动机功率太小,加速会比较慢,倘若功率太大,在平时巡航的时候会太费油。因此呢混合动力的汽车就经过粗调和精调处理了这个矛盾,这亦是为何它比较省油的原由。
至于NSX为何还有第3、第四个发动机,那是分别安装在两个前轮上的,重点是给它转向时供给动力,这两个很小的发动机乃至能够让轮子一个加速,一个减速,以减小拐弯半径,做大众在电影里看到的特技转弯的动作。当然这个功能用得更少了,属于进一步的精调。
能否经过一个发动机达到一样的目的呢?不是不能够,有有些极致的超级跑车便是这么做的,例如后轮能够拐弯,然则这般的工程极为繁杂,成本比四个发动机要高得多。
粗调和精调的思维方式其实在生活中亦有应用。非常多时候咱们先用低成本处理重点问题,而后再想办法把最后5%、10%做好。