查看原文
其他

有没有必要把机器学习算法自己实现一遍?

极市平台 2019-03-28

极市平台(ExtremeMart)是深圳极视角旗下的专业视觉算法开发与分发平台,为开发者提供行业场景集,每月上百真实项目需求,算法分发,技术共享等,旨在联合开发者建立起良好的计算机视觉生态。已与上百名开发者建立了合作并转化了上百种视觉算法。

PS.本周四(11月15日)晚,TEE首席架构师、TEE AI Lab资深研究员邓文彬将为我们讲解如何在GPU/CPU/移动端高效训练CNN网络,公众号回复“35”即可获取直播详情。


导读:有很多小伙伴问过我这样的问题,有没有必要把机器学习算法自己实现一遍。那么今天的答案来了。往下看,自己领会,还有2个资源。

知乎 陈默:

读书时候曾经把PRML所有算法实现过一遍。最后发布了一个库,现在是Github上星星最多的Matlab库之一。读PRML的同学可以参考一下,代码注释给出了重要部分对应的公式在PRML的出处。变量命名也尽量与书做了统一。希望对学习PRML的同学有所帮助。

https://github.com/PRML/PRMLT



zenRRan:

PRML,就是模式识别机器学习,一本外国的机器学习经典著作,本书很厚内容也很详细,笔者曾经入手一本,书封面是下面这个样子。



如果你想要在机器学习(当然包括深度学习)这个方向走很远的话,还是推荐买个纸质版的这个,x宝上二手的好像几十元就能买,我就是这里买的。

继续话题


知乎 陈默:

这个经历对我的帮助大概有以下几个方面:


1) 对算法细节的理解更加深刻了。
书中毕竟不会给出所有细节,而且书本身可能就是错的。为了写出代码,我几乎是把所有公式重新推了一遍,自己存下的note里面公式数量绝对远远多于书本身,期间也发现了书中无数的错误,这些错误在初读的时候根本意识不到。这样一遍下来,让我对推公式的信心大增,看论文不会怕看不懂公式了。遇到看不懂的就推一遍,推不出的就抄一遍,之后总会懂的。一个side effect就是让我变得愤青了,看什么paper都觉得烂。因为读paper的时候,你会发现,很多paper违背基本常识,即使影响力非常大的一些paper里也有这样那样的错误。

2) 可以了解很多看书学不到的各种trick。
所有算法几乎都有坑。比如hyper-parameter什么意义怎么设,怎么初始化,numerical stability的怎么保证,如何保证矩阵正定,计算机rounding error的影响,numerical underflow和overflow问题等等。


3) 对整个领域各个算法的关联有更深刻的了解,思维形成一个关系网。
看到一个算法就会自然的去想跟其他算法的联系,怎么去扩展。如果一篇paper我不能把它纳入到这个关系网里,我就觉得自己没懂。要么推出联系,要么推出矛盾证明这篇paper垃圾。另一个side effect就是我看paper从来不根据实验好坏判断优劣。

虽然自己动手实现算法有好处,但是性价比几何还是个见仁见智的问题,毕竟这是一个很费时的过程。我并不认为一定有必要自己实现书上所有算法,毕竟每个人所能关注的领域还是有限的,懂得算法大致原理,具体用的时候在细研究就可以。很多算法我也是写完了从来没用过。几年过去后,我在回头看自己的代码也很难看的懂,细节还得看公式。

但是对于自己的研究领域我建议还是有必要把经典算法动手实现一遍加深理解。


zenRRan:

综上所说,我还是推荐把机器学习算法都过一遍了。以上matlab版本或许有同学看不懂,我也为大家在github上找到一个python版本的库:

https://github.com/ctgk/PRML


我看上他的主要目的是因为用了jupyter notebook!非常清晰明了,同时有代码还有及时输出展示。


希望本文对你有帮助。

主题来源知乎问答:有没有必要把机器学习算法自己实现一遍?

(https://www.zhihu.com/question/36768514/answer/83577695)

答主:陈默


本文来源:
深度学习自然语言处理
作者:zenRRan


你对这个问题有什么看法呢,欢迎大家留言讨论~





*推荐阅读*

双十一免费送|魏秀参新书《解析深度学习:卷积神经网络原理与视觉实践》

DeepMind&VGG提出基于集合的人脸识别算法GhostVLAD,精度远超IJB-B 数据集state-of-the-art

极市干货|袁源-机器学习及深度学习在自动驾驶中的应用


PS.本周四(11月15日)晚,TEE首席架构师、TEE AI Lab资深研究员邓文彬将为我们讲解如何在GPU/CPU/移动端高效训练CNN网络,公众号回复“35”即可获取直播详情。左下角阅读原文查看更多本文相关信息。


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存