前言:本文同步发布于公众号:Charlotte数据挖掘,欢迎关注,得到最新干货~ 算法
昨天看到几篇不一样的文章写关于机器学习的to do & not to do,有些观点赞同,有些不赞同,是如今算法岗位这么热门,已经不像几年前同样,可能跑过一些项目、懂点原理就能够了,如今对你们的要求更高,尤为工程能力更不可缺乏,只跑过一些iris鸢尾花分类、啤酒与尿布、猫狗分类等的同窗须要再提升提升,由于竞争太激烈了,我在这里结合我本身的经验总结一下吧~数组
作项目时,边搜集数据能够边用已经搜集好的少部分数据跑模型。不用等到全部数据都搜集好了再跑。框架
不知道什么算法合适,能够直接把全部的算法都跑一遍,看效果再选择,多跑几个应用场景你就知道什么算法适合什么场景,什么数据对不一样的算法会有什么影响了。dom
不知道什么参数是最佳参数,能够用random search或者grid search自动搜索最佳参数组合,有经验之后对于每一个参数的大概范围内心会有个数。机器学习
必定要练习工程能力,只会调参的demo侠如今很难找到工做啦。函数
模型复现和刷题是很好的锻炼工程能力的一种方式。学习
刷题不要追求数量,要总结不一样类型的题目的经验,并结合以前的业务中,看能不能优化以前的业务逻辑。优化
模型复现能够给本身规定一个任务,譬如在一个月内,把某篇论文的Tensorflow实现的代码,复现成Pytorch或者PaddlePaddle等其余框架的代码,不是闲着没事作,而是模型复现能够迅速提升你对框架的熟悉度和代码能力。spa
模型复现的过程当中,最难的是写新的op和模型效果(精度和速度)的对齐。这可能很折磨人,可是收获也很大。code
若是要作新项目,能够先看看有没有预训练模型,能够快速作迁移学习的,若是有,那么总体的模型周期会快不少。
若是跑完算法,必定要有一个成品的形态,最好不要只作算法这一块,譬如跑完模型将其打包封装成服务接口(服务端和移动端等),达到让人可用的状态最好。
领导不想知道过程,只想知道结果。没有可用的东西和可视化的结果,他会以为你啥也没作。
上条只针对部分领导。
没有人会比你更关心模型的参数调整致使模型的效果提高了0.1%仍是1%,大多数人,尤为是leader、或者leader的leader,只关心它有什么用,真实场景的效果好很差。
能够多和同事、同行等互相交流,参加线下的学习会、交流会等,可能会有意想不到的收获。
学习新的算法,先把代码跑起来再说,再来看理论、数学推导、本身手写实现等。
除了调参之外,还须要关注关注部署上线、模型压缩等方面的内容。
训练数据不要太干净了,由于真实场景的数据每每和实验数据差不少,尝试加点噪音吧,作些数据加强和mixup等。
论文里的效果不必定能复现。能够尝试论文的思路,可是不要太过相信论文里的效果数据。
作一个项目就好好深挖,不只仅要作出来,还要不断的优化,否则每一个项目都只是跑通了,效果还行,不必写到简历里,不如写一个作的很深刻,尝试了各类优化方法并有效果提高的项目。
不要由于以为本身数学很差就先去恶补数学,买一堆高等代数、数学分析、实变函数、复变函数等纯数学书,若是必定要看,推荐《线性代数》《信息论》《凸优化》《数值分析》。
上条推荐的四本数学书也不用全看,凸优化太厚了,其余三本能够在本身有大块时间能够刷书的时候,规定本身在一个月或者几个月的时间迅速刷完。线性代数是基础,数值分析是优化方法(也不用全看),凸优化与信息论与目标函数相关,涉及机器学习的不少理论知识。
不要以为你训练的模型效果多好就多么厉害,除非是作科研、打比赛、工业界更关注能不能落地,能不能应用产生价值,不要自high = =
若是把你的算法封装成服务了,也要作作压测,学习下工程方面的内容。
最好的状态是,工程能力强,又懂算法,二者结合,效果更佳。不要只注重某一方面的提高,多关注下本身的代码风格,不要让你的同事code review的时候犯难 - -
暂时想到这些,每条都是试错后的血泪教训的总结T_T,有补充的欢迎你们在下面留言~