前言
深度学习如日中天,热帖天天有,眼花缭乱,应接不暇。各种线上线下课程也顺风而来、层出不穷,有从入门到进阶、到精通、到放弃的版本,有从小学到中学、到大学、到跳槽的版本。特别是一些收费课程,大都借鉴国外开放课程的资料,但经常断章取义、含糊其词,东拼乱凑,违背开放共享、尊重原创的开源精神。事实上,这些课程更像是国外优秀课程的低配版、甚至山寨版。结合自身的学习历程,我们以为,童鞋们当直接学习第一手的原版课程,同时我们极度推崇“费曼学习技巧”,即按照“明确目标->以教促学->化整为零->总结提炼”四个步骤不断地迭代学习。
学界不乏优秀的深度学习课程,比如广受赞誉的斯坦福双星课程:
吴恩达的 CS230(http://cs230.stanford.edu/)
李飞飞的 CS231(http://cs231n.stanford.edu/)
这些教程大都是按照学术课程的方式展开,从最基本的概念开始,结合大量的数学推导,逐步开展课堂教学,最后才落实到具体的编程任务和大作业上。这种典型的、Bottom-up的教学方式无可厚非,对相关学科、基础较好的学生来说非常受益。另一方面,对于广大AI应用方向的学生、工程师来说,往往需要的是“先见森林,再见树木”的学习方式,先撸一遍代码,有个基本认识,然后再选择性集中学习。面对一些急迫性的实际问题时,乱拳打死老师傅也不无道理。
基于上述考虑,结合我们自身学习的历程,上海交通大学媒体技术实验室选择fastai开设的慕课课程为学习对象(注:fastai的大名大家应该有所耳闻吧?对,就是那个18分钟训练ImageNet的团队),在学习的过程中,童鞋们同步形成较为系统的课程补充资料(包括PPT、遇到的坑、验证过的代码等),通过分享与反馈,为MOOC和开源社区尽绵薄之力。
课程介绍
相比于典型Bottom-up的方法,fastai课程强调Top-down的学习理念,我们直接从实际任务入手,通过编程快速实现世界领先的结果,可以先对深度学习有一个非常具象的认识,接着我们再逐渐深入这些结构,探寻它们背后的概念和方法。
在这门课程中,深度学习不再神秘,只需要你有一定的编程经验和一些基本的数学概念,本课程可以帮助你快速入门深度学习。
fastai库是基于Pytorch实现的,同时做了很多优化,是一个非常强大同时速度极快的深度学习框架。通过上面几行简单的代码,我们便可以对一个分类网络ResNet34进行训练。
fastai库的GitHub链接如下:
https://github.com/fastai/fastai
本课程主要分为两大部分,第一部分包含7个课时,介绍了如何利用深度学习去解决计算机视觉和自然语言处理领域的一些经典任务,同时对深度学习的一些重要概念和模型进行了详细阐述。第二部分同样包含7个课时,讲授了深度学习领域的一些前沿热点工作,介绍如何阅读这些论文并使用最新的技巧实现世界领先的结果。下面我们便简要介绍一下这14个课时的主要内容。
这一课时主要介绍了环境配置、猫狗分类任务以及深度学习简介,我们将学到如何用短短几行代码实现领先的分类效果。
这一课时详细介绍了在使用卷积神经网络(CNN)时常用的训练和测试流程,以及相应的技巧,并将此应用于几个实际的分类任务当中。
这一课时主要介绍了Keras与fastai库的对比,通过一个实际的比赛讲授如何向Kaggle提交结果,最后对卷积神经网络进行了详细的阐述。
这一课时主要介绍了过拟合以及解决过拟合的有效方法—Dropout,同时以rossmann销量预测为例介绍了结构化时间序列模型,最后以IMDB影评情感判断为例对自然语言处理进行了初步地讲解。
这一课时通过解决影评预测的任务介绍了协同过滤,特别是embedding的方法,并详细分析了随机梯度下降等在深度学习中经常使用的几种优化方法。
这一课时主要对随机梯度下降法进行了代码实现,初步介绍了循环神经网络(RNN)的基本结构。
这一课时通过建立语言模型,详细介绍了在自然语言处理任务中常用的几种RNN结构,同时在CIFAR-10数据集上逐步优化我们的CNN结构,并详细分析了BatchNrom和ResNet。
这一课时详细介绍了目标检测任务,并通过代码实现了对图片中最大的目标进行检测。
这一课时首先通过代码实现了SSD,取得了不错的目标检测效果,并详细分析了该领域最新的几篇论文,并通过实现它们提升了模型的效果。
这一课时通过之前完成过的影评情感判断任务,几乎是开创性地将迁移学习的方法引入这个自然语言处理任务当中,通过代码实现了世界领先的结果。
这一课时主要介绍了机器翻译模型,利用很多最新的技巧如注意力模型等实现了很好的效果,最后对视觉语义嵌入模型进行了简要的阐述和实现。
这一课时主要分析了DarkNet的网络结构,接着对生成对抗网络(GAN)进行了介绍,并通过代码实现了WGAN模型和Cycle-GAN模型。
这一课时主要介绍了fastai库的一些改进以及Inception Network,接着对图片风格迁移进行了详细介绍,并通过代码实现了初步的风格迁移。
这一课时详细介绍并实现了图像超分辨率的模型,并将其思想应用于风格迁移,从而优化了上一节课使用的方法,最后通过详细分析并实现Unet模型解决了Carvana这个图像分割任务。
看完这些课程介绍,大家是不是已经迫不及待想上手实现了呢?不要着急,这里有一份详细的课程资料等着你们去学习~通过费曼学习技巧,我们针对每一个课时都输出了相应的教学文档,相信大家通过观看fastai课程视频并结合这些文档,一定能快速入门深度学习!
资料包含了所有14个课时的课件和实现代码以及原版视频课程网站,感兴趣的同学赶紧去下载吧~
GitHub链接
https://github.com/sjtu-medialab/DeepLearning-IntroductionCourse
fastai课程网站
http://course.fast.ai/