专栏名称: 混沌巡洋舰
混沌巡洋舰, 给您洞穿未来的视力。我们以跨界为特色, 用理工科大牛的科学思维帮你梳理世界的脉络。
目录
51好读  ›  专栏  ›  混沌巡洋舰

高手在民间—用RNN做的诗词生成器

混沌巡洋舰  · 公众号  · 科学  · 2017-01-18 07:05

正文

新年快到了,给大家送上一首藏头诗


这个写的挺有古韵的吧,不过这不是人写的,而是用深度学习算法写成的。不止会写绝句,还会填词了。



不止会填词,还会做命题作文。给定一个题目,他每次会给出不同是古诗。


更神奇的是,还可以根据图画来作诗。


最难得的是,这个是作者在业余时间做成的,感兴趣的朋友可以去搜索“诗词生成器” 微信公众号,就可以去调戏这个神奇的AI 了,想了解更多,可以来看一下的文章循环神经网络RNN打开手册 神经网络的跨学科盛宴 基于遗传算法和神经网络的虚拟生物 用深度学习进行人脸识别 如何用深度学习进行【语音识别】 使用深度学习来做机器翻译等文章,了解更多相关的知识。


上面的这些只是一个引子,下面进入本文的重头戏,看科普文章怎么能过瘾,学学相关的MOOC,才算深度学习啊。自从 大咖征集令,不限学科,用你的Coursera证书实现知识变现 后,已经收到了两位投稿,其中一个是个00后的初中生,他在初三毕业之后,完成了 Coursera 上吴恩达教授的 Machine Learning 公开课。他自己觉得“说来惭愧,仅仅只上了一门再基础不过的通识课程,不过也成功拿到了证书(成绩约95%)”不过这样的故事,简直不能再励志了。


以下是他的学习笔记


Andrew Ng Machine Learning 学习笔记


Andrew Ng(吴恩达)教授的机器学习慕课几乎可以算是Coursera上最出名的课程之一了。在这门课程里,教授主要讲解了一些机器学习领域的基础知识,以及在专业领域的一些实例。也许对于一些机器学习领域内的专家来说,该课程可能太过简单,但是对于像我这样的机器学习初学者而言,这门课程正好能满足我的需求,带我了解机器学习这个领域的大致内容。


对这门课程比较有印象的一个部分,就是其对数学知识的大量运用。虽然教授已经有意减少使用的数学知识,但在整个课程中仍然处处需要用到多元微积分、线性代数等高数内容。个人认为,机器学习领域大部分都是构建在高等数学框架上的,因此对数学知识的要求相对较高。


然而,部分学生可能不需要高等数学的知识也能高质量地完成作业,这可能意味着并不是所有的机器学习从业者都需要深厚的数学功底。或许这一现象也能反映未来机器学习领域的一个发展趋势:部分从业者主要以应用开源的软件包为主实现机器学习算法,而另一部分真正以研究为目的的从业者才会去使用数学知识来改进、创造算法。


这门课程的主要内容十分广泛,可以说几乎涵盖了机器学习领域的大部分知识点。从有监督学习之中的回归分析(线性回归、逻辑回归;递推算法、解析算法)、分类算法(多分类算法)、神经网络(算法、应用等),到无监督学习之中的聚类(Clustering),再到具体的除错误方法(防止过拟合——正则化,数据的偏向性选择,判断算法的效率)以及一些工业上的应用(大规模ML、随机下降算法、在线学习以及一个实例——OCR),该课程都有涉及。


总而言之,这门课程对于初学者来说是一个很好的了解机器学习领域的机会。


而另一位分享者,则给出了近十张相关的证书及对他修过的机器学习相关的MOOC的点评,可以给有志者参考。


MIT 6.001X是我上的第一门计算机相关的MOOC , 内容是关于python的基础,以及一些算法和面向对象的知识。这门课的作业非常巧妙,都是把一个大问题给分解成一个一个小问题来解决,全部解决掉的时候比较爽。


MIT 6.002X是上一门课的继续,讲了一些和统计相关的(蒙特卡洛等等)和一些和图论有关的算法。上面两门课不仅仅涉及了编程,最重要的是传达了很多计算机科学的idea 。


MIT 6.041X是一门关于概率论和随机过程的课程,和MIT其他的数学课程相似,这门课也是从偏向工程的角度来讲授数学,具体来说就是通过嵌入很多直观例子和几何图像来降低抽象性。完成这门课程应该在“应用数学”方面会更加得心应手。


Analytic edge是MIT商学院开设的一门课程,讲了如何用R做线性回归,逻辑回归,决策树,文本分析,优化等等。这个课程几乎完全省略了理论推导,但是例子非常丰富,每一节都有4-5个例子,对于理解如何从商业到模型很有帮助。

CMU的统计热力学是一门从化学角度开的课程,课程不是很带劲,但是讲义写得挺好。coursera上还有一门 巴黎高师的统计力学:算法与计算,这一门课的视频和作业都很有意思,可以学到如何用编程语言来做有趣的物理模拟。然后是斯坦福大名鼎鼎的机器学习课程,这个课的理论层面的确比较简单,不过通过完成MATLAB的作业可以理解到如何把数学模型转化为算法,其中一些trick例如通过矩阵来进行向量化也非常有意思。


EPFL的scala课程是语言的发明者上的课程,大多内容和SICP相关。函数式语言非常有趣,经常能够通过高阶抽象用一行代码完成普通语言数十行的内容。

然后是斯坦福的算法1和2,这门课侧重于算法的设计和分析方面,淋漓尽致地展现出很多算法的美感。作业基本上是实现一个相关算法,如果使用的是python这类慢吞吞的动态语言可能需要做一些优化。


下面是斯坦福的社交和经济网络,这门课基于jackson的书讲了网络的测度,随机图,无标度网,以及一些与经济相关的网络上的学习,扩散,博弈论,信息量还是比较足的。另外一门类似的课程是edx上cornell基于“人群与网络“的课程。


统计学习是一门斯坦福统计学院开的课程,所使用的教材是ESL的简化版。与计算机的机器学习相比,统计学习的理论更偏向统计和数学。课程给的R的notebook非常有价值,由于老师就是glmnet包的作者,一些细节对于开发R的算法包很有帮助。


加州理工的learning from data则是一门偏向于理论的机器学习课程,涉及到了学习的理论基础以及很多具体的技术。这门课的讲解比较深入,如果理解到位很快就可以组合不同的想法做出算法上的创新。


斯坦福的大规模数据挖掘则是一门比较新的课程,讲述了一些Mapreduce,data streaming , lsh等等“大数据”相关的技术,不过我比较感兴趣的部分是jure关于社交网络的那部分,有一些非常漂亮的社团检测算法。


最后是圣菲研究所的复杂性的mooc,这门课程的内容基本与梅拉尼那本书一致。非常有价值的是在每节以后对相关领域领军人物的采访,例如做网络的mark newman , chris moore , 做复杂经济学的 farmer , 10几分钟的访谈就给出了很多insight。


总体来说MOOC提供了一个入门的途径,可以通过它来获取一些新鲜的想法与知识,一些课程还能提供有价值的实践机会。但是从获取信息的角度来看,论文和书籍可能是更难却更有效的途径。从另一方面来看,想象力比知识更重要,制造一些新的想法并加以应用比单纯地学习有更高的价值。


就说这么多,新年假期,想成为精英的小伙伴动起手来,我们来一起学习,不管是MOOC还是技术博客,巡洋舰陪你一起死磕,欢迎加入我们的社群。 今年,我们一起来做一边做慈善一边做一个知识社群


扩展阅读

混迹“高端”微信群就真的接近精英了吗?

打算成为精英的伙伴准备的“精英日课”打开方式