前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >资源 | 有没有必要把机器学习算法自己实现一遍?

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

作者头像
zenRRan
发布2018-12-12 15:34:36
5140
发布2018-12-12 15:34:36
举报

导读

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

导读

知乎 陈默:

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

zenRRan:

这个链接我也给大家找到啦 嘿嘿

https://github.com/PRML/PRMLT

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档