直播实录&QA | 王赟Maigo分享“知识连成一片”是怎样一种体验

Posted turingbooks

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直播实录&QA | 王赟Maigo分享“知识连成一片”是怎样一种体验相关的知识,希望对你有一定的参考价值。

本文整理自王赟Maigo老师新书《你没想到的数学》新书发布直播视频

完整视频可前往图灵社区B站或视频号观看👀

- 本篇内容从27:38开始 -

“知识连成一片”的意思,就是我会去主动思考知识之间衔接的关系。

知识的链状结构

我先举例子说下知识的链状结构。初中物理课,我们学过简单的电子、电路,高中时我们又学学到电子在电场中是怎么运动的,以及欧姆定律等等;同时,中学期间我就接触过一些简单的编程语言,比如BASIC、Pascal,本科的时候接触了C语言;高中时期我还参加过信息学竞赛,接触过数据结构与算法。

这时候,物理与编程两块知识看起来是毫无关系的。我本科时学的是电子系,这个专业让我看到了这两部分知识也是可以联系起来的,整个完整的链条如下图:

在电子系,我们还是先学习物理学的电路原理,但这里除了欧姆定律还有电容、电感这些复杂的器件,有基尔霍夫定律、交流电分析、暂态分析等等,这些都是电路原理的内容;根据电路原理的特点,我们可以设计出三极管,这就是模拟电路这门课的主角,包括学习三极管的放大作用,如何设计滤波器等等;有了模拟电路之后,如何通过三极管搭建出数字电路里面的逻辑门,这就是数字电路的课程;从数字电路继续发展,就可以设计出CPU来,CPU里的运算器和控制器都是0和1的运算,它的基础都是数字电路,这就是计算机原理;有了计算机之后,我们就可以用机器语言来编写程序,但是机器语言比较麻烦,于是就有了高级语言(当然这个中间还有一个过渡层就是汇编语言)。这样,物理知识终于和我中学学的编程内容联系起来了。

在有了数据结构与算法之后,我们把它运用到实际工程之中,就有了软件工程。软件工程关注的就不是代码怎么写了,而且代码怎么组织,软件怎么模块化,怎么把每一个模块独立开发,减少模块之间的耦合而 更好对接。

我讲知识的链状结构是想说明,当你开始学的知识看起来是一个知识的孤岛,但学习多了以后,你会发现学科之间都是有联系的,如果你能把这个联系找到,会发现知识之间是可以互为印证的。

知乎上有一个有意思的问题,是关于游戏的:为什么我们点一下鼠标,游戏人物就可以跨越地图障碍从屏幕一头走到另一头?这个问题我们可以追溯一下,当我们点击鼠标之后,电脑的软件层面和硬件层面,分别都发生了什么?要解释这个问题就可以把上面链状结构的学科知识都串联起来。

知识的网状结构

除了知识的链状结构,还有网状结构。这里我给大家介绍一下平时我涉猎比较多的领域之间的联系:

我们前面提到过数学和物理,它们之间是通过微积分相连的。物理中的运动都有数学的原理,比如牛顿第二定律讲的是力与加速度的关系,而加速度是速度的导数,速度又是位移的导数,那加速度就是位移的二阶导数。

同样,数学与编程是通过算法相连的。编程中的算法可以用数学的方法证明,并推导其复杂度。我现在做的研究领域是机器学习,它是数学与编程重叠的部分,运用到了数学中的概率论部分,因为机器学习主要研究的是预测的问题,给定一个输入去预测输出,这个过程当中要用概率论的方式去计算怎么输出概率是最大的。

那么我们再看看其他领域,我讲一讲语言方面。我学习了很多种外语,在学习过程中我也在思考他们之间的联系是什么,比如我们学一门语言就要学语法,而语法本身就是在编程。比如英文当中,复数有+s和+es的情况,这就像编程中的if-else。除了语法外,语言是要说出来的,要让人能听懂才行,那怎么让机器听懂语言呢?这就是我现在从事的工作语音识别。声音作为一种信号,又具备一些物理上的特性。如何滤波、除噪这些信号处理都是物理上的知识。

人在学习语言的不同阶段会有不同的表现,初期我们认识的生词很少,听写的时候可能会比较乱,学多了之后,我们即便没有听清楚的内容,根据上下文依然可以完整写出来。在语音识别当中也有类似的表现,有了语言模型之后,知道了句子的组织结构,并不需要听清楚每一个音。这就是利用机器学习的过程思考人类语言学习的过程。

再比如音乐领域,跟这些知识也有千丝万缕的联系。首先音乐也是声音,它可以跟语音一样通过信号处理的方式去研究,我们可以知道声音的频率、音色在物理学上的表现;那在数学方面,音阶上每个音的频率之间是等比数列的关系,大三和弦、小三和弦等乐理都是可以用数学知识解释的;同样,唱歌的时候有歌词,这又把音乐和语言建立了联系。

这时候你会发现,我学到的所有知识都是可以连成一片的。在学习的时候,我就会主动把知识归类到体系里的某一个位置里,通过一点去联系其他地方,互相印证,加深对每个领域的理解。

下面是我总结的知识连成一片的好处与秘诀,供大家参考:

《你没想到的数学》新书发布答疑选摘

 新手入门概率论应该如何学习?

我学习概率论的秘诀就是“数形结合”,始终运用形象的方式去思考、想象随机变量的分布。比如我们把离散分布想象成一个柱形图,把连续分布想象成一个函数图像,这样可以更形象地理解随机变量在哪些地方出现的概率比较大。

 证明不等式有什么好方法吗?

不等式在高中用到得比较多,证明方法主要是两种:一种是往已知的、有名的不等式上去“凑”(比如:a²+b²≥(a+b)²,(a+b)²≥4ab);

另一种方式就是放缩。但这两种方法都具有一定局限性或者说运气成分,比如放缩过了依然无法证明,这就需要不断尝试。另外有一些不等式也可以采取形象理解,比如Jensen不等式,它讲得是对数函数的凸性,如果你在凹函数上任意取两个点连起来,其割线一定是在对数函数的下方。类似的问题我们都可以看是否能往这种形象理解上去“凑”。

除数不能为0应该如何理解?

这个有很多种解释:有一种解释是,除法是乘法的逆运算,假设2/0=3,那3*0=2吗?显然等于多少都是不对的;也有人说是等于无穷,这个是有一定道理的(前提是把0看做从大到小趋近变化的),但如果说无穷*0等于2,显然也是不太对的。所以因为无法定义,我们就不定义它了,这就是为什么不能除以零。

 数学和编程的关系是怎样的?

数学与编程之间的主要联系是算法,编程中的很多算法是可以用数学去证明的,以及根据推导的复杂度来判断算法的优劣;反过来编程也可以辅助数学,例如矩阵计算、解微分方程会用到数值算法等,我们可以在学习数学的过程中学习如何用编程去计算。

 对您来说,那种编程语言比较好用?

综合考虑,对我来说Python是最好用的。因为我的使用场景是科学计算、深度学习、文本格式数据处理等,这些都比较适合Python,甚至包括画图。所以如果只能选用一种语言的话,我会选择用Python,当然根据不同情况也会选择不同语言,如果我希望程序运行较快的话,也会使用C语言,跑起来的速度大约能比Python快10倍。

王老师学了这么多种外语,认为语言的意义是什么?

语言就是人类之间沟通信息的一种手段,但我们看到的语言五花八门,语音语法千差万别。不同地区、民族的人类在交流中产生出了不同的音系、语法,但最终的目的也是交流信息。部分语言可能会有自己的专长,比如汉语的押韵在诗歌上的特色。但对于传递信息这一功能来说,相当于不同的语言利用不同的方式去编码,最后传递效率也是差不多的。像汉语的编码可能比较密,说起来就会比较慢;而日语的编码比较稀疏,说起来就会快一些。所以说不同语言最终的目的都是传递信息,这就是我认为的语言的意义。

 语音识别在生活中有哪些应用?

语音识别是我的研究方向之一,狭义上理解它就是把语音转变成文字。在不同场景中,语音识别的难度也是差别很大的。最简单的场景就类似微信中的语音识别功能,如果你的普通话比较标准,说话的空间比较安静,识别的正确率可以达到97~98%。但有一些场景会有一定挑战,比如我说话有口音、说专业术语、中英文夹杂等,或者环境噪音大、麦克收音比较远等,识别的正确率可能只有30~40%。以上语音识别本身的问题,此外还有一些有与语音识别密切相关的周边任务。比如根据说话人身份识别(区分成人与儿童)、情感识别(喜怒哀乐)、语种识别,语音助手提供不同的交互方式。

 为什么日常生活中智能音箱经常识别错误?

如果你觉得智能音箱识别不准确,可以考虑针对上面几种情况调整说话方式。需要注意的是,我们对人类有效地能提升清晰度的说话方式对计算机不一定有效果。比如一字一顿的说话,反而让计算机更难理解说话者的语言。这个是从用户角度的分析。相反从研究领域讲,我们也通过不同算法来解决问题。比如我们做到了“说话人适应”,针对一名新用户,我们通过听他几分钟的持续说话,收集口音、语速等信息来调整内置模型去适用新用户。再有就是针对噪音环境,我们也会有除噪和增强语音的手段,以及通过麦克风阵列来定位远处的语音等等,这些都可以降低识别的错误率。

留言

关于本书你还有哪些疑问?

在学习数学、编程、语言文化方面遇到过哪些困境?

欢迎在下方评论区留言分享,说不定下次与作者连线就cue到你哦~

点个“在看”不失联

以上是关于直播实录&QA | 王赟Maigo分享“知识连成一片”是怎样一种体验的主要内容,如果未能解决你的问题,请参考以下文章

宜信智能监控平台建设实践|分享实录

TOP100summit:分享实录-QQ空间10亿级直播背后的技术优化

基于深度学习的中文分词 | 实录·PhD Talk #5

宜信微服务任务调度平台建设实践|分享实录

宜信微服务任务调度平台建设实践|分享实录

TOP100summit:分享实录爆炸式增长的斗鱼架构平台的演进