深度学习随笔

由于笔者,还是称作“键人”吧,因为现在基本上不怎么用笔写字了,所以称作笔者有些臭不要脸了,而称作“键人”则是一种与时俱进的表现。

鉴于这是一篇随笔,不是严谨的技术性文章,自己就写的有些随意,说实话就是扯吧,扯到哪算哪。

忆往昔,形单影只苦学习;奈何老夫年岁已高,且生性不才;从去年开始学习DeepLearning到现在,已近半载;然反观吾身,多有些自惭形秽;以一俗语概之:这进度也忒你妈慢了吧。

要说deeplearning的学习,就要从斯坦福andrew ng的系列入门文章开始;这个andrew ng的入门课程这么好,其中的一个原因就是andrew是coursea公司(一个公开课公司)的创始人,同时也是在机器学习领域研究多年,并且是google某个牛X项目的负责人,可谓是学术水平,工业实践水平,教育水平都是一流的牛人,然而最近关于他最amazing的就是,他加入了百度在硅谷的实验室,百度居然从google挖人,这个多少让我有些自豪,虽然和我半毛钱关系都没有,但是感觉中国公司终于走出去,而且达到了一个世界顶尖的水平,多少有些小自豪啊。额,有些跑偏了…………

andrew ng 的一系列课程,非常适合入门,首先内容上面,由浅入深,从最简单的线性回归开始,到最后的卷积神经网络;“端到端”一体化服务,一步一步的把你领上道,带你走入DL的深渊(为啥是深渊,后面在解释)。其次,在斯坦福官方网站上面提供了英文的教程,国内的一些机器学习大牛把他们翻译成中文,而且中文的教程中有加入了一些更详细的公式推导,原理讲解,而且在每一个章节的最后还有术语对应的单词列表,对于我这种幼儿园水平的初学者来说,是很好的智力开发教材,为以后阅读英文的paper,提供了很大的帮助,英文paper so easy ;嘛嘛,再也不用担心我的英文了。最后,就是这个教材的每个章节都提供了配套的实践课程,有数据,有代码框架;你需要做的就是在代码的中写着“you code here”的地方,敲上自己的代码;对于一个连汉语拼音还没学好的小学生来说,你让他写《月子2》,多少有些逼良为娼的感觉;在这里就要感谢那些无私奉献的大牛了,他们大无畏的无产阶级革命精神,分享了所有的完整版代码,而且还有相关的注释和讲解。

就这样,以andrew ng的英文教程为正餐,辅以中文翻译和大牛博客,还有网上的一些零零散散的文章;半年之后,就到了这个水平,算是小学毕业了,初中在读的水平吧!先说说这个小学毕业为啥这么慢,很简单,6年制的义务教育么?呵呵。

原因一:自己笨的原因就暂时除外,首先就是自己基础不是很好,虽然是数学专业,有限编程经验,但是以前都是如有其表而已,学习这个DL系列,完全是推到了重来,首先要学习模型的框架理解,然后是数学推导,最后是编程实践;这三座大山最难的就是编程实践了,因为把那些数学公式转换机器代码,做个比喻就是,你对牛弹琴,你还得让牛听懂了;你就知道这个过程有多畜生了。没有办法的办法就是,一点一点的磨吧,不是有句屁话叫做只要功夫深,铁杵磨成针么。把代码输出,对着公式,一行一行的看,先写大的代码构架,然后针对模块仔细研究,在查询一些matlab函数使用方法,最后设断点调试,了解哪些insane matrix 是怎么计算的,数据流失怎么流的;代码的部分自己看的比较详细,以至于给大牛的代码挑出几个小错误,这个让我多少有些自信心爆棚啊(在这个阶段,也就这点奢望了)。所以这个部分无论是模型,还是数学公式,还是代码都是基础学习,属于积累阶段。哎,出来混迟早是要还的,有些知识以前不学现在都找了回来。

原因二:就是自己的工匠情节,可以说是一种完美主义倾向吧。有时候比较扭,例如遇到了一个知识点自己不明白,自己就非要把他整明白,于是就开始一顿google,百度;查询了一顿资料,最后越看越糊涂;若是最后整明白还好,很多时候都是半知半解。但是回过头来在看,其实自己有些贪心了,有些问题在我这个水平注定是很难理解的,如果霸王硬上弓的话,不仅伤了元气,最后很有可能就跑偏了。这样不是没有用,而是会严重影响进度,而且有时随着学习的深入,接触的东西的增多,有些问题自然就解决了。这里用我导师的话来说,就是我现在还处于一个堆沙子的阶段,有问题是正常的。所以现在的学习有些不求甚解,暂时把问题记下来,以后在挨个收拾。

原因三:就是可能前一阶段课程比较多,考试啥的一个小杂事。经常带来一些随机的扰动,现在随着学期的结束,课程也在一点一点的减少,还有几门考试和一些论文作业,扰动提出后,数据就变得pure,之后么,呵呵,你懂的。

原因四:就是调试代码,之前为啥说DL是深渊呢,就是在这里,运行一个代码太墨迹了;本来电脑就不行,而且代码的数据量还很大,内存,计算量要求都很高;对我这个09年的2G内存的双核笔记本,简直就是用杀鸡的刀kill牛。还好这个导师最给力了,立马提供了一台高大上的服务器工作站,这回在运行代码,就像吃了盖中盖高钙片,上五楼,一口气不费劲。但是有的程序也需要2个小时左右。

CNN学习完成后,RBM的学习,感觉节奏明显快了很多,从模型到代码,一共用了十天左右,虽然还是有些慢,但是和以前比要快很多了,毕竟基础学习还没有完成,虽然小学已近毕业,但是九年义务教育还没有完成。不过现在的节凑有些快了,后面的就继续努力吧。争取早日完成义务教育。

你可能感兴趣的:(深度学习随笔)