不少自学的朋友很容易陷入到焦虑当中,尤其是在学习理论受挫之后。 再加上不少人是码农出身,实现算法是就成了最容易缓解焦虑的途径。
然而要警惕掉到「用忙碌而逃避困难「的陷阱当中去,更好的缓解焦虑的方法是应用算法,去解决具体问题。 众所周知,机器学习最不友好的部分不是编程,而是背后的数学原理,以及如何使用它来解决问题。照我来看,只有两种情况值得动手造轮子:
除此之外,对于研究者来说,复现前沿研究也有一定的价值,因为可能:
对于大部分人而言,想要了解怎么调参、每个参数的含义,都不必重新实现算法。可以直接阅读文档,也可以在在各种场景中慢慢摸索。比如参加比赛的过程中,或者实际工作里,甚至看看博客、读读知乎都可以有些收获。 同时,如果能够通过解决实际问题来加深对模型的理解,还可以增强自己的信心,比实现算法可能要更为划算且有效。
在不少公司,机器学习研究员和工程师是两个岗位,前者提出思路和理论,后者去高效的实现。从这点上也不难看出一个实践者不一定需要具备两方面技能,毕竟时间有限。 如果你对自己的定位是使用者(更接近工程师的话),多补补理论是当务之急。如果你想成为一个研究者,必要的编程能力要有,但不要花过多的时间在提高码力上,能做好理论已经很难,可以交给工程师实现、优化你的理论。
所以,没什么特殊情况,实现算法可以当做玩票,多看看模型、了解一些理论、应用到具体案例上去才是正事。
对于自学的朋友,也可以参考一下我的文章:如何用3个月零基础入门机器学习?