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

本文主要是介绍直播实录QA | 王赟Maigo分享“知识连成一片”是怎样一种体验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

知识的链状结构

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

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

eb308e97ccc81d7934a627229a1379a7.png

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

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

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

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

知识的网状结构

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

8f03f7faf21e0b7b0b0500cf35a2f1d9.png

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

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

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

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

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

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

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

ace211d69a997902793ef546909649fe.png

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

d713e648519f196fe3f6dfd47aebe99d.png

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

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

d10f0fb4cfeb24d3105ba5f088a17fb5.png

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

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

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

8b8d0e82f86ddfa359ca9aa3050532ab.png

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

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

b315e0ed92efdcac6b332343f593e455.png

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

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

e51c2231e9cdfe54161909081e722fd2.png

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

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

50096a1d329485d26ca83457b5b2c8b2.png

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

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

dbdfbc1ee12359d368ecd6eca04488be.png

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

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

667372987f77cdafb79a0f5aac5a8d76.png

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

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

9cc6290deff530780d1f7af180628eef.png

552ec8956c74a32f2c6853789a391309.png

留言

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

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

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

21cedb0bbdf1f845dab8c0417ada98ff.gif

点个“在看”不失联

这篇关于直播实录QA | 王赟Maigo分享“知识连成一片”是怎样一种体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939694

相关文章

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

什么是 Linux Mint? 适合初学者体验的桌面操作系统

《什么是LinuxMint?适合初学者体验的桌面操作系统》今天带你全面了解LinuxMint,包括它的历史、功能、版本以及独特亮点,话不多说,马上开始吧... linux Mint 是一款基于 Ubuntu 和 Debian 的知名发行版,它的用户体验非常友好,深受广大 Linux 爱好者和日常用户的青睐,