本文转载自:如何才能达到苏剑林老师的数学水平,对于深度学习和机器学习中的数学部分信手拈来? - 知乎
苏剑林:
感谢题主的认可,也感谢邀请我的朋友,我简单写几句经验或者建议。
首先,问题的提法其实是不成立的,我远远做不到“信手拈来”。就拿这最新的博客 生成扩散模型漫谈(十四):ODE扩散的统一框架 - 科学空间|Scientific Spaces 为例,这篇博客从我有想法开始,到发表之日,差不多有两个月的持续思考时间。期间我也有诸多无法理清的问题,推翻了几次原有的思路,并且也发邮件向别人请教,最终勉强成文。成文之后其实还有一些疑问没解决,评论区gaohuazuo的留言也提出了更加有意思的想法,令我自愧不如,所以就这,远远谈不上“信手拈来”。
再比如,博客 基于Amos优化器思想推导出来的一些“炼丹策略” - 科学空间|Scientific Spaces ,看标题大家可能都觉得有点奇怪,为什么不直接介绍Amos优化器呢?很简单,因为Amos的推导我根本没完全看懂,所以没法写Amos,但是大概的思想又懂了点,所以拿来写了一篇半成品,凑合着用。所以,我不仅无法“信手拈来“,而且很多时候读懂别人的结果都不容易。
数学是一个持续的积累过程,可能我比很多读者幸运的地方,是我打小就对数学比较兴趣,读书也一直走数学专业,所以积累得相对多一些。但我相信没有一个人敢说自己的数学是“够用”的,所以真实的状态都是“边读边学”,我在读论文、写博客的时候也是如此。有一些读者让我推荐一些数学教材,说是想提高一些数学基础(再去读论文/博客)。这种想法其实不大科学的,没有什么教材能包揽你的所有数学难点,都是遇到不懂的概念/知识点,然后才去搜索学习的,善用Google,通常能解决95%的疑惑了。打个通俗的比方,我们都是在读书时遇到不懂的字才去查字典的,而不是把字典背熟了再去读书。
在这个过程中,尽量不要“自欺”。有些读者在读到新概念的时候,确实也会去搜索学习,但是了解到一个模糊的轮廓后,就“大概是那样子”,然后就囫囵地让它过去了,这是典型的“自欺”行为,自己骗自己弄懂了,自己让自己觉得自己已经读了不少论文,实际上到处都模模糊糊的,这应该是积累技术的最大障碍吧。那么,什么才是弄懂了呢?费曼说的那句话很正确——“能创造才代表了理解”,最基本的要求你能脱稿把知识点跟别人讲清楚,才代表能理解了,记住是脱稿。我对自己要求多一些,比如模型类的工作,我多数都要求自己验证过有效后才分享,验证的时候是根据自己的理解,不看任何参考实现,用自己熟悉的框架去写代码,直到出了什么异常,才去对照一下参考实现(参考代码是用来参考的,不是用来copy的),这是我对自己的脱稿要求之一。
对了,说到这,顺便建议一句,写代码也少用代码补全。
最后,建议大家在学习的时候也不要太“狭隘”,除了“深度”也要关注“广度”。老读者知道我有一个“科学空间交流群”,机器学习相关甚至科学相关的都可以讨论。但总有一部分读者想开“子群“、”专群“,做CV想加CV专群,做NLP想加NLP专群,似乎多看点其他领域的内容都是浪费时间。对于这种需求,我都是很反对的。知识没有专属哪个领域的说法,你永远不知道明天会不会出什么交叉领域的新SOTA。要知道“他山之石,可以攻玉”,从各个方面开拓思路,才能有更多可做的idea,也才能使你在阅读路上障碍更少。
评论:
子不说:我很认可苏老师的想法,学习不应该等着“万事俱备”才去学,正如不可能背完字典再去读书一样。可是我想补充一点,不知道苏老师是否认可。我觉得初步的教程还是需要的。比如我是计算机小白,现在想入深度学习的坑,我还是得去了解一下一些基本的知识。至少会一点Python,知道常用算法的数学原理,调试一些demo。现在的知识虽然获取很容易但是学会并不容易。上来就直接看最前沿的东西,如同把一棵树拦腰切断,将来必定是举步维艰。我明白苏老师的意思,也很赞同您的观点,一些读者可能只是希望苏老师推荐一些入门的书,便于自己后续继续学习!
苏剑林:假如真是“计算机小白“想入坑“深度学习”,这种我更加是无法推荐了,这中间跨度太大,以至于我无从下手。就好比一个小学水平的对大学数学感兴趣,想让大学老师推荐一下书籍,我不是说这是不可能的任务(一切皆有可能),只是对于这种需求,我理解这不是“推荐”,而是“定制”学习路线了。再比如说我以前学的线性代数比较粗糙,现在想深入一下,有什么好点的教材,这才能“推荐“啊...
江水连萍:但是你对一些数学问题的求解,比如说高维空间的向量几乎正交,这类问题上,做得就非常漂亮。是需要大家学习的。
苏剑林:这类问题,本来就已经有了解答,我只是读懂了,然后以尽可能简单的语言转述出来。要达到这个效果,就需要正文说的“不自欺”和“脱稿”了。初步读懂,可能花不了多少时间,如果就此停止,那就有点“自欺”了,只有再花(可能很长)时间弄明白每一步why,才算是真的融会贯通了,最后把它写出来(或者其他方式讲出来),既加深理解,又算是备忘。我也有很多次经历,想的时候感觉都想通了,但是写博客的时候发现写着写着故事就讲不通了,又要花两三天把它继续搞懂。
夜林:写代码不用补全多少有点古董
苏剑林:
1、我指的是有不用补全的能力时才去用补全,而不是永远不用补全;
2、补全主要影响的是写代码的速度,对于工作量就是代码量的读者来说,自然不用看这个评论了,不过我这个回复,主要针对不单纯以代码量来计算工作量的读者。举尤派斯人:有时感觉当时弄懂了,后面又忘了,然后又重复去看,怎么办
苏剑林:“感觉“不可靠,“脱稿”是标准。当然,重复去看细节没问题,但是主要概念、思路和结论应该是要时常熟悉的。
maple:请教下大佬如何挤出来的这么多时间?
苏剑林:这个一来感谢追一比较宽松和宽容的工作氛围,二来就是提高时间利用效率了
强大大:求问大佬ml dl 数学知识有什么比较友好的资料吗
苏剑林:跟回答内容一样,就是你想要学什么,遇到什么不懂的再去学,我没有从哪本教程系统地学到了ML、DL大部分数学知识的经历~
张旭东:老师您好~想问下平常有哪些放松方式推荐呢,一直看论文感觉很头晕!
苏剑林:有时间看论文就是一种放松了!
改啥改:大佬,请教一下,脱稿写出来了blog,对于你来说 这个知识点是不是就不怎么会忘了?
苏剑林:嗯嗯。不过完全脱稿有点难了,博客本身也是一个让自己回忆的途径
wzw:每次遇到问题去学习,但是各个方面的知识最后如何形成一个知识体系?期待大佬回答
苏剑林:积累多了,就会以你个人的爱好为中心形成一个知识体系。(你总不能每个方面都有浓厚的兴趣吧?如果是,那么这个过程将会帮你筛选出真正的兴趣。)
公子世无双:苏老师接受付费咨询么
苏剑林:不付费也能咨询,付费反而有个心理障碍,怕回答得不够好误导了大家。