过春节前一周,不知从哪里看到优达学城(Udacity)的深度学习(Deep learning)课程在搞优惠活动,抱着不出点血就学不下去的想法愉快的报了名,开始为期四个月的在线学习。这周终于完成了全部课程和五个项目作业,获到纳米学位证书,写一下学习体会和心路历程。
自己上研究生的专业就是模式识别与智能系统,无奈那时候这个领域还是偏理论研究,工程应用虽然也有,但是总给人感觉不是Artificial Intelligence (AI) 而是 Artificial Stupid。尤其气人的是堂堂智能感知重点实验室,装的指纹锁各种无法识别总是进不去门,心灰意冷投身软件行业成了前端开发。弹指一挥间,没想到短短几年属于人工智能的时代这么快就来了(昨天阿尔法狗又赢了柯洁)。
幸运的是,写了几年的代码,倒是对重拾人工智能(主要是深度学习)挺有帮助,毕竟算法应用还要靠软件程序来实现的。另外以Tensorflow为代表的深度学习框架让模型训练的过程变的更加工程化,不到五十行代码就能实现一个文字翻译或者图片识别模型的训练全过程,所以编程技能对学这门课可以起到很大帮助。
但就像这个课一开始所介绍的,初学者不用担心自己理论知识和编程水平的不足,迈出第一步并一直保持学习热情才是最关键的。刚开始在线学习,就想对优达学城的课程设计点个赞。最大的优点就是学着不累!毕竟长达四个月的学习时间,好的体验非常重要。
(他们家还有不少免费课程,若有兴趣可以去体验一下)
这个课的主讲是左边的一位Google工程师Siraj(很逗比,经常会在视频里说rap),后面还请了不少牛人(记得还包括GAN的发明者)在视频里言传身教。虽然中文网站里的主要内容都是已经翻译的,但基本所有资料和论文还是英文的,不禁回忆起当初啃论文的日子。相关的训练数据和论文都有免费的网上资源,对于不在学校还想从事研究的人绝对是福利。
差不多每个月,在每一个阶段学习的最后都要完成一个有意思的实际项目,而且必须在规定日期前完成,否则就得不到学位了!提交的代码会有专人review并提出有针对的修改意见和反馈,直到完全达到要求才算通过。审阅的人给出的意见都很具体,态度也非常nice。嗯,毕竟花了钱呀。
刚开始的项目相对容易,后面随着模型的复杂训练起来就很耗计算机资源。我的所有项目都是用的Mac Air跑完的,不支持GPU加速。后几个项目的训练时间都以半天记。其实课程里专门有讲如何申请和搭建AWS的实例做GPU加速,就是懒得去装 ╰( ̄▽ ̄)╭
下面大概说说所学到的知识点吧。
第一阶段,新手入门。Python的简单语法、numpy进行多维向量操作、conda管理包依赖和环境、梯度下降的优化原理、多层神经网络模型的构建。
项目:用多层神经网络预测共享单车数量。
这个项目就是用历史数据(日期、天气等,当日租车数量)训练模型,然后用另一部分数据验证模型的准确性。
蓝色是训练后模型(就是多层神经网络)的预测,红色是实际数据。前面吻合的很好,后面就不准了。reviewer还问我:你知道为什么后面误差很大么?废话,圣诞节大家都放假了嘛 (o゚v゚)ノ
第二阶段,使用Tensorflow构建模型、用于处理图像的卷积神经网络(CNN)
还介绍了Prisma实现图像内容和样式的合成原理。
项目:用Tensorflow实现卷积网络(CNN)对图片数据集进行分类识别
这个就是用CNN(多层卷积神经网络)识别图像,结果是得到的每张图片可能的类别概率。最后训练的结果可以达到56%准确率,就是说一大半图片都能识别出来里面是喵星人还是汪星人了。然后非常高兴的另外去网上找了些图片来试试,结果一个都没认对。
(╯‵□′)╯︵┴─┴
第三阶段,专门处理时序数据(比如语言)的循环神经网络(RNN)、LSTM--一种改进的RNN结构、文字建模方法Word2Vec、同时用两个RNN实现序列到序列转化Seq2Seq。
项目1:用RNN生成辛普森一家台词
这阶段的第一个项目是用LSTM(一种循环神经网络)通过学习已有的《辛普森一家》台词,去生成新的台词。这个还是很有趣的,在训练的过程中,可以观察到模型慢慢学会句子的组成方式,单词的相互关系。
项目2:用两个LSTM做英语-法语翻译
第二个项目是用两个LSTM分别作encoder和decoder来实现语言翻译,结果真的不忍直视
(翻译出来的法语好像是:I think it is easy to translate English and California)
╮(╯_╰)╭
毕竟可以用的翻译模型需要大量数据长时间训练以及调优。
第四阶段,GAN模型(两个神经网络相互对抗找到均衡解)对没有标记的数据进行半监督学习
项目:用GAN学习已有图片生成新图片
用GAN通过随机信号生成的手写数字图片。嗯,这个效果不错。
用同样的模型来生成人脸图片,可以看到模型的优化过程。这个训练起来超费电脑,边跑边心疼我的Air。如果用好电脑可以把模型做得更复杂效果会更好。
最后一个项目截止日期是这个月25号,提交了结果隔了一天看到标语:您已毕业。开心!
然后就可以提交个人信息并填写调查表,获得毕业证书,撒花ヽ(✿゚▽゚)ノ
所以,一切结束了么?没有,甚至在标题上用“入门”两个字都感到挺心虚的。通过这次学习,自己也仅仅是看到了深度学习这个领域的广阔,更觉得自己掌握的东西少得可怜。这种感觉和刚接触前端开发时候非常像,就是知道了哪些自己不知道的阶段。
嗯,接下来的路还有很长。
最后想说的就是,人工智能的时代真的到来了。放心,在可以预见的未来电脑还不会统治人类的。但是用人工智能的方法加上代码实现,每个人都可以做出很多很酷的东西。比如我就想试着做一个去处图片里玻璃反光的滤镜,有了结果再分享了。
写完了。