服务热线
0530-5837666
重磅干货,第一时间送达
作者:微调@zhihu
图片:pexels
深度学习的课程和传统计算机课程有很大的不同,也可以说独树一帜,其独特性主要来自于:1. 前置课程多 2. 缺乏完整的理论体系 3. 繁多的调参技巧 4. 知识迭代速度快 5. 交叉领域应用能力强。
以几门传统的计算机课程(数据结构和算法、数据库、操作系统)为参照对象,我觉得深度学习课程设置有以下不同:
1. 前置课程要求较多,需要较广的基础知识
一般我们把深度学习/机器学习的课程安排在大三以后,而研讨课(seminar)一般安排在研究生博士阶段,这与大部分传统计算机课程不同。这是因为深度学习涉及了很多数学、统计概率、以及优化方向的知识,对刚入学的学生不大友好,具体包括:
线性代数:矩阵/张量乘法、求逆,奇异值分解/特征值分解,行列式,范数等
统计与概率:概率分布,独立性与贝叶斯,最大似然(MLE)和最大后验估计(MAP)等
信息论:基尼系数,熵(Entropy)等
优化:线性优化,非线性优化(凸优化/非凸优化)以及其衍生的求解方法如梯度下降、牛顿法、基因算法和模拟退火等
数值计算:上溢与下溢,平滑处理,计算稳定性(如矩阵求逆过程)
微积分:偏微分,链式法则,矩阵求导等
举个例子,我曾短暂带过多伦多大学神经网络的课程(就是Hinton原来教的那门csc321)的助教,当时给我们助教的资格测试是对矩阵进行奇异值分解和其他线性代数的知识,而不是推导BP算法。这也是为什么大部分深度学习课程的前几节助教课都是讲这些基础知识,正所谓不积跬步无以至千里。
而大部分的传统计算机课程不需要这么多的前置知识,入门门槛相对低一些。即使以可计算理论(Computability Theory)这种理论性比较强的课来说,其要求的知识广度也不及深度学习。但此处也想给大家提个醒,深度学习没有必要等到掌握所有领域知识再开始,应该一边学习一边补充所需知识。
2. 知识更新速度快,时效性强
虽然深度学习的前身,也就是感知机(perceptron)已经有超过50年的历史,但深度学习还属于一个飞速发展的新兴领域,因此很多经典的理论/技巧很快就被推翻。举两个例子:
激活函数的选择:在很多深度学习的教科书中,尤其是10年以前的教科书中都还依然把Sigmoid当作默认的激活函数。但事实上,整流函数(ReLu)以及其拓展变形函数,如Leaky ReLu早就成为了主流的深度学习激活函数。但因为知识的滞后性,很多课程/书籍甚至都没有介绍ReLu的章节。
鞍点和全局最小:长年以来学术界把深度学习使用BP算法难以得到全局最优解的原因归结于存在大量的局部最小(local minimum)导致梯度下降失败,直到最近几年大家才比较一致的认同可能问题出在了大量鞍点(saddle points)导致了梯度下降法在Hessian矩阵的条件数很差时在高维空间失效。
大部分计算机科学课程有可以自洽的经典体系,短时间内理论上不会发生很大的变化。你看几年前的操作系统书籍或者课程,和现在的主流知识变化不是很大。而深度学习领域基本上每过一阵子都会出个大新闻,然后大家才发现一直都做错了。所以深度学习课程很讲究时效性,超过3年以上的书籍和课程或多或少都有错误或者不准确的地方,切记切记!
但换个角度思考,这也说明了深度学习还有很大的潜力,可以研究的方向很多。这两年很火的多任务学习(multi-task learning), 迁移学习(transfer learning), 对抗生成网络(GAN)都给了研究者更多的挖坑方向。
3. 理论证明比较薄弱,高度依赖黑科技(调参技巧)
承接第二点,深度学习缺乏从数学角度的自洽解释,而且好用有效的深度学习模型其实还是大量依靠人为进行构建和参数调整。换句话说,深度学习还没有一套完整的,自上而下的操作流程,现阶段还大量依靠人为的选择、调整、优化。这也是为什么深度学习被叫做炼丹,而从业人员被叫做炼丹师。
深度学习的调参技巧早就被外界所诟病,除了选择良好的激活函数,小心的设计网络结构,还要给隐藏单元加入噪音(如Dropout),使用合适的正则化方法等。其中每一项展开都可以算作一个领域,更别提把这些步骤整合时可能造成指数级的选择困难。高度的不确定性使得课程设置变得很难。
Goodfellow在《深度学习》一书中就指出深度学习中使用的优化算法几乎都没有理论保证,我们只有不断进行强假设限制得到一些理论保证。不仅仅是优化,深度学习作为一种表示学习(representation learning),对于特征的提取和解释也只有非常有限的解释性。同理,刚刚提到的dropout操作,其使用的权重缩放推断(weight scaling inference)也是一种经验科学没有理论的背书,但因为效果真的很好所以在该领域得到了广泛应用。
深度学习现阶段作为一门经验科学,从课程设置角度来说面临一个尴尬的局面。如果只讲理论,那么实用性很低。而如果只讲实际技巧,这又太不像一门专业科学无法自洽。这也是深度学习和其他计算机领域的一个显著不同,某种意义上说深度学习的实用性走在了理论性前面。这使得深度学习从授课角度来说很难,举两个典型的例子:
Neural Networks for Machine Learning | Coursera: Geof Hinton的课偏理论,轻实践
Deep Learning | Coursera: Andrew Ng的课程偏实践,轻理论
可以看出,深度学习对授课教师也提出了很高的要求。如果工程性太强那么理论很薄弱像空中楼阁,而太理论缺乏实践技巧又比较像屠龙之技。而其他计算机课程基本都已经有了一个比较好的自洽体系,能在理论和实践中达到一个不错的平衡。
作为经验科学,那实验必不可少。但这对于学校/教育机构来说也面临一个成本问题,是否有能力提供足够的软硬件支持,即学生是否可以在注册期间使用服务器/GPU。大部分深度学习的项目都无法在个人电脑上完成,尤其个人笔记本的主流操作系统还是Windows。这一点对于本科学生来说更不友好,因为从成本角度学校很难提供硬件支持,也没有导师愿意购买设备供大家使用。我个人比较看好的方法还是学校和云服务厂商合作,保证注册课程的学生在上课期间可以有一定时长的GPU使用机会。
4. 高学科交叉度,导致领域课程设置细分
深度学习的广泛使用使得其课程设置更加细分化。其他计算机课程一般都叫做XX入门,中级XX,和高级XX。深度学习不同,作为一门工具学科既可以用来做视觉(Computer Vision),也可以做自然语言处理(NLP),还可以做很多其他的领域,导致了其课程设置非常细。以多伦多大学2017年的研究生博士课程为例,和深度学习相关的课程就超过了7门:
Topics in Machine Learning: Scalable & Flexible Models of Uncertainty
Topics in Machine Learning: Learning Discrete Latent Structure
Machine Learning and Data Mining
Machine Learning in Computer Vision
Natural Language Computing
Topics in Computational Molecular Biology: Computational Methods in Medicine
Advanced Machine Learning
这些课程中1,2,3,7是比较传统的机器学习课程,4, 5, 6分别是机器学习/深度学习在机器视觉,自然语言处理,和计算生物方向的应用。以前系里面的课还有 用深度学习+机器视觉做无人车等。而且统计系或者运筹学系又都有机器学习/深度学习的课程,这再一次证明了深度学习高交叉性、高迁移性的特点。
换个角度思考,深度学习的课程往往只有在入门阶段才是纯深度学习,进阶学习往往都会将其应用于某个特定领域解决实际问题。这个和其他领域的计算机课程不同,你很少见到把操作系统或者数据库领域的知识大规模的迁移到其他学科上的案例。
5. 总结
从以上分析不难看出,深度学习作为一个年轻的学科,和其他成熟的计算机课程还是有很大不同。比较明显的就是因为其较高的前置背景,导致其入门要求高,一般是高年级课程。其次就是因为其并未形成完整自洽的理论体系,导致系统的课程设置很难,而且有很多人为的黑科技。但即使如此,深度学习的有效性已经在多个交叉领域被证明,这也导致了其课程设置非常细而且可覆盖的话题比较灵活。深度学习的特别之处告诉我们:
掌握好基础知识,但不要矫枉过正,买椟还珠
不断更新知识,追踪主流热点,不要抱着固有的观念
上手调参,有时候实践比理论更重要,至少在现阶段的深度学习领域
专注特定领域,不要试图短时间内能成为横跨多个领域的专家
而从讲课的角度来说,深度学习的课程很难掌握好理论与实践的平衡,而且必须时时刻刻跟踪前沿热点进展,这样才能防止被听众打脸。
Copyright © 2020-2023 山东行知科教仪器设备有限公司 版权所有 备案号:鲁ICP备16020776号-2
地址:高新区万福办事处吴拐行政村 电话:0530-5837666 邮箱:2586826320@qq.com
关注我们