聊聊最近

离上次更新有三个多月了吧,这期间乱七八糟的事很多,最近放了个长假,也该静下来了。今天先在这里记录点杂事,接下来尽量多写些有价值的东西。

10号域名到期,提前先续费了,懒得折腾域名的转入转出,继续用的namecheap,也就19刀。顺便看了下网站的统计信息,me域名的访问量只占了1/5,远不及ml域名,汗。。。

学习

先说点学习上的。编程语言方面,最近在学Clojure,感觉这门语言学起来蛮好玩的。说起来也有点意思,其实一开始我是准备学习下scala的,跟风嘛,Spark这么火,怎么说也得了解了解。然后翻了几本scala方面的书,没太有感觉。主要是因为这货跟java太像了!然后还夹杂了一大堆语法。虽说写出来的代码相比java已经简洁了许多,但是出于对java的厌恶我学习的动力大大降低。在有java基础之后学习scala的迁移成本其实是很低的,但是我希望在学习一门新的编程语言的时候,这门语言不应该是我所熟悉的范畴(比如学完python后学ruby),否则很容易陷入到语言本身的语法设定中去了。我希望这门语言与我熟悉的语言之间有比较大的gap,能学到更多编程思想方面的东西。然后那段时间慢慢地就把scala放下了,偶然一次看到了关于jvm平台上的scala还有groovy和clojure的讨论,发现clojure似乎跟自己之前学过的语言有很大不同,主要是因为它是Lisp的一个分支,另外函数式编程的思想也贯穿其中,于是一头扎进去学到现在。

读的相关书主要有4本,《clojure编程》、《clojure编程乐趣》(这本书英文版的有第二版了,我对比了下,大部分是一样的,就是最后多了几个章节)、《clojure经典实例》、《七周七并发模型》(当然,这本书不只是介绍了clojure的并发模型,我对并发的内容缺少实践,这部分学得不是特别深)。目前还处于打基础的过程中,缺少一些实际项目来练手,了解storm似乎是个不错的开始。学习clojure带来的最大收获是思考问题上的改变。我发现函数式编程思想在数据处理问题上有很大优势,理解其中的精髓后发现现在写的python代码也越来越简洁了......以后总结下自己的学习心得后再专门讨论下这块。

nlp这块最近在做的就是把autoencoder和lstm融一下试试效果,感觉最近做科研的这块很无力。真的是很没有方向感,不知道该怎么深入下去,也就靠读读论文打发时间了......有时候看着那些水文啊,真是无力吐槽了,然后就会安慰安慰自己,唉,不读博也罢。说个上周的一件小事,为了做融合,先要把autoencoder那边的matlab代码改成python的,方便共享cost信息。其实我也没怎么看matlab代码,很久没用过了,听师弟讲了讲代码流程后大致明白了其结构和实现方式,于是花了一天时间草草写了个测试用例。同一个batch的数据反复迭代后,cost是呈现收敛趋势的,然后感觉应该没问题了。给大家讲了讲实现细节后修改了几处错误。

本以为这样就可以了,不过徐老师强调让我验证下matlab和python两边的输出结果是否一致。其实一开始我的内心是拒绝的。。。(其实是不屑的...)哥写的怎么会有问题呢???无奈,写样例,测试......打脸了......第一轮前向结果就不一致,甚至最后收敛的结果也总是相差了一点点。看了半天愣是没找出问题所在,更要命的是matlab的代码简直就是个blackbox。实在找不出问题了,我只能把问题归为matlab里神奇的边界条件所导致的结果差异......然而,老师并不信我这套,一定要两边输出结果一致才对!

“老师,这个,matlab的代码我不会debug...”

“那我们一起来看”

“。。。”

然后,一整个下午坐在老师旁边一行行读代码,测试,验证。最后的最后,坑在了一个实在是微不足道的地方。计算cost的时候通常为了避免对0求log会加上一个很小的实数\(1.0e^{-10}\),然而,我的样本有一个mask操作,mask以外的cost都为0,本应该对mask部分的cost加上\(1.0e^{-10}\)后求-log,再求mean,结果我代码里为了图方便,先整体加上\(1.0e^{-10}\)后求-log再求mean。但是,\(-log^{(0 + 1.0e^{-10})}\) 并不是趋于0的呀!!!因为自己的失误,还让别人跟着一起填坑......实在是惭愧。

总结下来,一是永远不要对自己过度自信,我不知道多少次因为这个毛病坑人坑己了......被女朋友说,被同学说,被老师说,以后还是要更务实一些;二是“凡是有可能出bug的代码一定有问题”,“墨菲定律”?,这个也不是第一次了,好几次隐约觉得可能代码写得有点问题,结果最后都被坑的不轻......

找工作

再聊聊找工作的事。算了算,自己总共就投了5份简历,(BAT+美团+京东),其它的也就没投了,要么是显然去不了,要么是实在不感兴趣。剩下的时间,可能更有针对地去投几家外企,发现了两家还不错的公司,试试看~

百度那边走的就是正常的流程,宣讲会,投简历,面试。面试百度应该是自己的第一次正式面试,有点紧张......现在印象最深的就是二面问了个智力题,想了半天答错了@_@。三面的话,针对自己做的事情,聊的level稍高点。总的来说面试的人都还不错。阿里的话,我就不吐槽了。腾讯是唯一参加笔试的,本来就对腾讯不太感兴趣,好奇跟着参加了个笔试,出的都是什么题啊,简直了!美团那边面试的感觉页很不错,师兄推荐过去的,中午在那吃饭的时候听他们聊了些工作上的事,觉得和自己做的事情挺对胃口的。只是,有时候真的觉得对自己的职业生涯缺少很明确的规划。以至于真要做出选择的时候,很是迷茫......蛮感激曾师兄跟自己聊了许多,不管最后去不去美团,那次谈话都是很大的收获。京东的面试,就一个感觉,我是不是来错了地......面试的人一点都不鸟我......

其实从内心来讲,自己倾向于往计算广告方向发展,商业价值更大一些,但这块需要一个好的成长环境。不过呢,觉得做nlp这块好像也还不错,把功底打扎实了以后做周边的东西都能跟得上,不过总觉得有那么一丝丝想法,是不是有必要读个博把这块的工作做得更深入呢?唉,现实的情况是,先得找到个工作,然后再谈实现个人价值。理想和现实的纠缠......

最后

这个网站的代码好久没更新了,积累了不少问题一直没改,近期打算做一些改进,当时图简便直接用的django框架,接下来如果有时间的化,可能会换个框架,说不定会拿clojure试水~