07月 30

2016暑期总结

Published at Jul 30, 2016 • Life

7月

工作

  • 7月看了10 ~ 11篇论文(Face Alignment),这占据了工作的大部分时间。目前从宏观上了解了相关算法的研究“轨迹”及分类。但对于某些论文,顺着作者的文字无法理解相关算法的细节,大概是自己基础知识太薄弱了,扣出细节的部分就会云里雾里。并没有本质性突破,离自己提出某个idea并作出实验还很远很远,也为自己比较担心
  • 组会,7月开了两次的组会。第一次师兄教了MatConvNet的使用,这是师兄们去年参加CVPR Face Age Estimation比赛的代码,听说当时拿了不错的名次,还因此出国参加了CVPR16(👍)。不过惭愧,本人由于没有实践反馈,半个多月下来基本忘了是个怎么回事儿了=..=
  • 第二次,师兄介绍了比赛中Face Image的预处理过程,使用的是CUHK的Five Facial Point Detection。这和我的关系非常大,因为不出意外我研一进入实验室后会研究Face Alignment
  • 几天之后的某次实验,我采用该方法对实验数据进行预处理,当初觉得手上有了一些源代码,应该没啥难度,但由于开源代码软件的一些坑,还有对Matlab的不熟悉,需要用Matlab写一个脚本,然后吭哧吭哧跑了20h实验,花了三天才完全做完预处理实验。实验过程中觉得Matlab这门编程语言太重了,太依赖ide,不过之后肯定需要学习并熟悉下Matlab了。还有一个非常不错的远程控制软件TeamViewr,提高了我的工作效率

读书

  • 《算法 4Th》的1 ~ 4章,全书就要看完了,还剩两章。书虽然厚,但除去算法的数学证明外至少都不难啃,读起来还算轻松
  • 《自控力》

这个月的时间可能被工作划去了大部分,读书时间投入不多,其实说到底还是自己不重视阅读这个环节,加上自己的懒癌

学习

  • 阅读些Deep Learning和Convolutional Nerual Networks相关的Paper和Tutorial
  • 在Lintcode、hihocoder上撸了一些题
  • 为了比较Cpython和PyPy,寻找答案的过程中,发现最省事最靠谱的方式就是Wikipedia和Stackoverflow

生活

基本白天都是一个人在家,也试着给生活找了点乐趣:

  • 掌握了几道家常菜:番茄蛋汤、红烧肉、蚝油生菜、可乐鸡翅等,厨艺只是停留在靠油盐酱醋等佐料辅助的水平上
  • 7月下半旬,又开始玩起三国杀
  • 每周两次,每次30-60分钟的运动

8月

工作

  • Google Face Image爬虫。没有写这个爬虫前算是小看这个Project的难度了,这个Project最大的难点是GFW。Google被墙,要想让JVM强制走sock5,我采用的方案是Proxifier和Shadowsocks的结合,当然事情还没那么简单,GFW将Google.com的DNS污染了,所以使用Proxifier时候要选择让Proxy Server自主DNS解析,这边也不得不佩服GFW。还有一个小难点是Https,我使用Java的Httpclient,默认模拟Https(Http)请求时,Httpclient默认自动加上SSL层,节省了我的编程的时间。至于寻找图片下拉刷新的Ajax Url,通过Chrome调试窗口的Network(本来还想用WireShark,无奈不会用,也没那个必要)就可以找到了,这点不难。最终代码托管在Github上:googleFaceImageSpider。当然啦,我的爬虫是通用的,只要指定搜索Image的关键词就可以了,还可以指定爬多少张,也可以指定线程池大小和线程数量,以提高速度
  • 回顾了上个月阅读的11篇论文
  • 阅读3 ~ 4篇新论文(Face Alignment)
  • 写了一篇Face Alignment综述,竟然出现在了爱可可老师的微博

学习

  • 发现了一篇讲述生动的“ 傅里叶变换 ”文章
  • 读了Alexnet的论文,其中的trick有:Training on multiple GPUs, Local Response Normalization, Overlapping Pooling, Dropout
  • 读了有关CNN的文章,都收藏在了我Blog的Deep Learning Wikis中
  • L0、L1与L2范数规则化机器学习中的各种距离
  • 算法Trick:位操作很强大,可以用作枚举排列组合;Python中的itertools.combinations也可以快速生成排列
  • 虽然很久之前就开始了解C10k Problem,当时使用过Java的NIO、Netty。最近看了Node.js相关的文章,对于C10k Problem又有了些研究兴趣。宏观上的理解还是当初的那个印象:传统的解决方案是多进程多线程模型,即One Connection,One Thread,大量(10k)条进程(或线程)的创建和调度会造成OS很大的资源消耗。后来有了IO多路复用模型,select到poll再到epoll,孕育出很多杰作(Tornado、Node.js)等等。另一种解决方案则是协程,将内核从繁重的调度任务中解放出来,典型的代表是Go语言。暂时了解的还不够透彻,之后有空再进一步研究

读书

  • 《算法4th》读完了。后面两章比前面四章难啃,尤其是字符串这章,内容对我来说都很新
  • 《写作这回事:创作生涯回忆录》
  • 《时间管理:如何充分利用你的24小时》
  • 《娱乐至死》
  • 《乖,摸摸头》
  • 《沥川往事》

这个月读的另外三本书都不胃口,记住的句子和观点也很少,有的并不值得读

生活

这个月总得来说,过得很松

  • 将Blog的Analysis切换到了Google Analysis
  • 重新装上LOL,玩了3 ~ 4天又将其卸载
  • 这个月看了不少电影😜:《驯龙高手Ⅰ&Ⅱ》、《夏洛特烦恼》、《火影:博人转》、《我是传奇》、《使徒行者》、《寒战Ⅱ》、《他是龙》、《X战警:天启》。最喜欢的是《驯龙高手Ⅰ&Ⅱ》,在豆瓣里是Top 250的影片
  • 一首“歌”真的能激活头脑中的回忆神经,夜晚在工作台放着大四在宿舍经常放的歌曲,能回忆很多大四宿舍的生活场景,能闻到宿舍熟悉的味道

反馈

信噪比


信噪比,用于比较所需信号的程度与背景噪声的程度. —— 信噪比

在这我所说的并不是信号,而是信息或知识。如果说你在网络(知乎、果壳、微博)上看完某篇(技术)文章,或者你读完某种书,留在你脑子里,你自己能信息再组织陈述出来的信息量占眼睛浏览信息量的多少呢?比例很低的原因很多很多:

  • 信息爆炸的时代,网络上的文章大多是观点的重复累述或再陈述甚至是改变语句的抄袭,不小心选择了不正确的文章阅读自然而然没有多大益处。包括读书,现在多看书单,豆瓣书单畅销书就占据半壁江山,其实畅销书和经典书相比含金量还是大打折扣。如何选择一本“好书”,也绝非易事。如果机缘巧合,碰上了和自己相投的好书,则能影响你很长一段人生
  • 不懂得思考,不懂得过滤信息并再组织。成为一个有“观点”的人,需要经过很长的流程:信息获取,观察,吸收,构建自己的知识体系和世界观,最后还有一步非常非常重要却容易忽视的实践与反馈。观点需要论据支撑,最强有力的证据肯定就是实践了,在实践中思考,发现问题,才能获得最合适自己的信息
  • 碎片化阅读中的危害。微博上关注几个技术大V,微信上关注几个公众号,就认为自己在学习,其实自己明明是“被”学习。收藏越来越多,关注越来越多,消化越来越少。和阅读书本相比,碎片化的阅读的优势在于它的便捷,它的时间成本低,而且内容都与时俱进,但是它的劣势也相当明显,信息转化率低,很长一段时间不去组织回顾再吸收,将遗忘地很快,最终转变为信息噪音
  • 瞎收藏,乱收藏,信息整理不合理。碎片化的文章整理起来实属不易,比如你浏览器的Bookmarks,你微博的收藏列表,知乎的收藏,有多少你会回头去再吸收的?一个很重要的原因在于所有文章整理一锅端,仿佛一个大池子,里面很乱,自然就不愿意主动去接触了。在整理收藏文章时有时需要刻意将它们联系成一块,一个整体,让它们变得不再碎片化,仿佛一组组链表(或者说是哈希表),因为学习最怕的就是缺乏整体意识,这样不仅方便下次回归,还对自己知识图谱的构建也有很大帮助

其实上面分析的都是我平时不正确的行为操作,这也是我近几个月来的体会,我也深感惭愧和不安

现实和理想到底有多远?

之前自己虽一直对生活和学习保持着“热度”与“激情”,其实不过是在未看清现实和看轻现实情况下的三分钟热度或五分钟热度。为何这么说?因为还是缺少实践和反馈

“纸上得来终觉浅,绝知此事要躬行”。对着书本,对着Tutorial看,永远只敲一些Demo程序,就敢宣称自己懂了,已经知晓了这门技术和语言,仿佛走路都轻快了许多。现在觉得这种想法令人咋舌。一项工程的代码由40%的正常逻辑程序,还要外加60%的异常处理呢!往往这些异常处理才是最膈应你的地方,也是最能令你思维活跃,得到锻炼的下酒菜

所以,学会放低姿态,安安心心做一名合格的程序狗,过五关斩六将,刻意并努力着充实自己的生活,哪怕酸甜苦辣,也绝非易事