前辈之路(8) phunter_lau专访

受访者:@phunter_lau ,开源项目DMLC首席市场官。

(1)按照惯例,你先简单介绍下自己的经历吧。

我从小时候参加算法编程比赛,但觉得物理才是世界的本源,就在大学学了物理;学物理的同时觉得计算机是个探究本源不能少的工具,就锻炼自己成了物理里面计算机用的比较溜的;和一群牛人一起搞机器人足球,顺便接触了一些基本的人工智能研究,混成了计算机专业里面物理比较溜的。研究生的时候专心实验高能物理想发现个新粒子搞个大新闻,但实际工作里发现我们的实验的数据量很大,问题也很复杂,就和一群搞物理的一起把机器学习用到了高能物理数据里做了一些微小的工作。艰难毕业之后学术界不太留我,我就含泪走向硅谷加入了一个新兴行业,数据科学家。受了签证上的各种折磨之后,跑到了现在的公司,用机器学习和数据分析的方法在网络安全领域发挥一些能量,顺便每天给媳妇当专车司机。

(2)请谈谈机器学习技术对你所从事的信息安全工作的影响有哪些?

借用@宫一鸣cn 老师的一个词,跨界,用现有成熟的机器学习技术应用到信息安全方向可以帮安全研究员快速完成一些需要一点智能的重复工作,比如给一个异常检测列表,快速筛选哪些是需要认真研究的异常;也可以完成一些人类精力完成不了的事,比如对1000亿条DNS查询数据建立统计模型,用强大算力辅助脑力分析。这些辅助工作可以迅速扩充脑里影响,可能对现有的人肉分析产生质的影响。信息安全领域现在使用数据分析的地方不多,是一个典型的富数据穷分析的领域,在这个领域里用成熟的数据和机器学习技术随便搞搞都能很快搞出来有意思的结果,所谓“low hanging fruit”很多,速来。

(3)你自称DMLC开源项目的首席代言官,那么你都会做些什么工作?

准确来说应该是“首席市场官”,这是@李沐M 钦点的,我同时也是MXNet客服部的首席客服小刘,员工编号8001。我在DMLC的主要做做宣传,比如MXNet推出什么厉害的新功能我就来给顶个贴,顺便做做一些维护工作,比如XGBoost的pip安装,在github上回答一些安装相关的issue,写写教学blog等等。开源项目里核心代码是重要工作,帮助群众快速用起来这些厉害工具也是很重要也很需要人手,这其中包括安装包的维护啊,文档的编辑啊,交流心得、教学等等,欢迎大家多来我们DMLC的社区贡献添砖加瓦共建开源大厦,传送门 http://dmlc.ml/ 。

(4)大部分人有个思维定式:后台比前端更有技术含量,挣的也更多,你怎么看?

这个问题由两个部分,后台和前端哪个更有技术含量,后台和前端哪个更挣钱。挣多少和影响了多少人无关,和该工作在老板心中对产品和公司的贡献有关。年轻人的naivety就是觉得后台影响的人多挣的比前端多,其实都不多,当PM挣的才多还不需要知识呢。至于技术含量,前后端技能树发展的方向不同,苹果和橘子都好吃,既然都不挣钱就不要争谁更厉害了。

(5)算法工程师日常的工作大多是抽特征,而算法/工具等封装的越来也好,甚至有专门的工程团队支持。这样一来,似乎算法工程师的技术含量越来越低,你怎么看?

要是记得小学时候写作文的一个例子,划一条线值1美元,知道划在哪里值9999美元,这是一万美元账单请收好。在数据科学里,数据和特征决定了模型预测能力的上限。而在数据已知,模型和工具成熟的条件下,抽取特征几乎决定整个模型的预测能力,它需要算法工程师对目标问题有深入的理解才能取得竞争对手想不到的特征。

有模型工具以及专门的工程团队支持是好事,算法工程师能更加专注于提升模型本身。特征工作很繁复,是“数据-特征-建模-评估-再来一圈”这个流程的开头部分,有时候有的特征在模型A上跑起来很好,加了别的特征在模型B上就更好一些,若干好特征组合起来但是模型评价结果掉成狗,有团队支持可以使这些调试流程加快。这也符合现代科学的研究方法,提升预测效果那些坑都是肯定要踩的,比的就是谁踩坑速度更快。

其实你这个问题并不稀奇,它常见于知乎,上面很多没有接触过实际数据工作的外行都觉得这个工作很trivial那个工作很trivial我简单学习一下随便刷个题就可以上手毫无困难分分钟轰杀你们。我初中一个同学也是这么想的,后来他因为被挑战门口混混被打住院休学了一年,从同学变师弟。

(6)如果国内有合适的工作机会,你会考虑回归吗?国外有什么地方吸引你?

对我来说,合适的工作机会一般都是和自己了解的靠谱团队合作,而靠谱的定义是团队和公司知道自己要做什么。现在我的团队还都是靠谱的队友,如果以后在国内靠谱团队可以考虑回来。国外吸引我的地方除了能随意上谷歌,吃的也比较便宜,也就是碰到靠谱团队几率稍大一些了。

(7)你自己会怎么面试一个算法工程师,怎么算合格?

符合我要求的数据科学家或者数据方向的算法工程师一般要求三点,数学/统计,编码能力和机器学习知识。我一般按照简历上列出的技能结合当前业务需要问一些相关问题,比如我们搞网络安全,我就会问一些字符串处理的问题,一些基本的数据统计,这些问题都答上来了就说明能干活。我面试的时候允许使用谷歌,相当于开卷面试,实际工作上遇到的坑多数情况都是别人踩过的,会迅速谷歌查到需要的解答也是工作能力的一种。同时我的问题都很实际,一般不会背诵概念,因为我们物理出身的都注重理解而不是背公式。具体面试实践上,我也会根据现在市场上由某国应聘者带来的简历不太靠谱的风气,随机抽查简历一两点技能,稍微深入细节问问看看应聘人是不是真的理解了简历上列出来的技能还是乱捅词,比如简历上写熟练XGBoost的我都会问问为什么XGBoost比GBM快,写熟练Python的会问问List里某些操作的代价,写熟练深度学习的给个问题问是max pooling好还是avg pooling好等等,能简单说出来为什么和怎么理解的就可以。

(8)从业以来,有没对自己影响很大的人,能否谈谈为什么是这个人?

在从业之后这个时间段上对我影响很大的多位专家里,西瓜老师 @西瓜大丸子汤 大家比较熟悉。我人生的前二十多年时间多半在学术界,或者说是书读的太多了,有一些把世界对学术过拟合,思考的模型不够泛化。在和西瓜老师在微博上饭馆里的多次交流,让我学习到了不少东西,我也快速拓展了对工业界情况的认识。比如学术界里面谁能想到新的点子新的方法找到新的发现就是先人一步,所以很多人着重于发现和证明新的idea,而西瓜老师提醒了我们,idea是最便宜的,干好了才是好,事实上后来看到的很多事例都证明了西瓜老师的看法是对的。

(9)对在校生有什么学习上的建议。

我转述一下Peter Stone教授(http://www.cs.utexas.edu/~pstone/)在我年轻时候对我的建议。他说,在本科的时候尽可能学习任何自己有兴趣的知识,它之后都会成为你科研和业界的财富,而研究生的时候要认真钻研自己的研究方向,让自己成这个领域的世界顶级专家并为人类的知识作出贡献。

我自己个人摸索出来的一点建议就是,学习知识要有系统性,学会在自己的知识系统上展开新的方向,这样才能有足够的基础应变于现在快速更新迭代的新科技。学会在快速更新迭代的新知识里学习符合自己知识体系的知识是学习能力之一,贪多求全的毛病应该在大一大二就必须改掉,要不然只能跟着新技术屁股后面走失去了自己的想法。

(10)请你自己谈点想说的话题吧。

上次有个年轻的朋友问我,他知道工作后还要继续学习保持竞争力,但是自己996的工作回家之后只想睡觉,更别说动不动就来一波封闭开发,根本没有精力继续学习。我和他的一些交流总结一下。在信息产业里新技术就是竞争力,年轻人还是需要保持继续学习新知识。现在国内的工作环境对年轻人很不友好,脑子不清楚的领队为了完成业绩,以抽干年轻人精力的方式加班,而年轻人为了保住自己的工作,不得不每天奉献出来自己有限的精力,导致业余时间只够勉强休息。我想给年轻人的建议是,继续保持学习的热情,这是为了你未来能继续在这个技术路线向上攀升的基础,公司在榨干你之后抛弃了你,还可以再找出一波刚毕业的小鲜肉把他们压成肉渣;具体操作上,可以找一些技术导向的组加入,在工作中从组员身上学习和工作有关的新技术,也可以带领组员一起研究符合组里课题的新技术。顺便,领队逼你996给你画大饼,其实都是给老板干活,不用那么努力砸很多时间上去,保证自己身体才是根本,人生之重要经验。

转载请注明:《 前辈之路(8) phunter_lau专访 | 我爱计算机

Leave a Reply

Your email address will not be published. Required fields are marked *

4 + = 5