老梁:这有一份入门资料,萌新:我看了,但还是迷茫……

2022-08-26 16:15:21 浏览数 (1)

作者 | 梁唐

大家好,我是梁唐。

前几天有一个同学私信找到老梁,问我想要做一个算法工程师应该怎么学?老梁正准备侃侃而谈的时候,他给我甩过来一张图,问:我在网上找到一张思维导图,照着这张图学行么?就是下面这张:

老梁一看就无语了,不是这张图有问题,而是这张图就是老梁画了放在B站里的。

讲道理,老梁自我感觉这张图画得还是不错的,因为在老梁见过的新人里面,能把这些知识都吃透没有短板的,真的不多。即使很多名校背景,发了好几篇论文的,这些基本功也未必都扎实。

老梁当初画这张图的目的很简单,就是为了给各位初学者指个路,什么该学,什么不该学, 什么是重点,什么不是,帮助大家节省点摸索的时间,也不那么迷茫。但从结果来看,这个目的并没有实现。一开始老梁还有些沮丧,后来仔细琢磨了一下,也理解了,其实迷茫不迷茫和这些都没关系。

因为当初老梁自学入门的时候,根本没有这些,老梁问了身边几个朋友,他们也是一样,早几年的算法工程师大多是自己摸索自学成才。有个朋友告诉我他读研的时候,整个实验室里就没有人知道机器学习是什么,只能自己找论文、资料来看,然后自己在机器上做实验。因为不懂,他一开始直接把数据下载到本地跑,结果数据量太大,把实验室的主板烧了。

虽然把主板烧了,但他也没放弃,就这么一点点开始摸索。从连一些基本常识都不知道的程度开始,最后一口气发表了好几篇SCI,成了实验室里的大师哥。毕业的时候导师苦苦挽留,最终还是没留住,拿了SSP入职了某互联网大厂。

他毕业的时候,后面来的学弟学妹就好多了,因为他摸索出来了心得教给了学弟学妹,学弟学妹又继续往下传。就这样薪火相传,后面的人也不用自己摸索了,照着前人的路走就行。你会发现老梁全程没有提到导师,因为他的导师完全不懂,之前根本不是做大数据的,这几年看到大数据火热,论文好发才转方向。

何况就光是拉项目、申请经费、讲课、评职称就够导师们忙的了,还能做研究的,屈指可数。大部分实验室里真正做研究,学术能力超强的一般都是导师的博士生。很多实验室里项(分)目(钱)上导师说了算,但是具体实验怎么做论文怎么写,还是得听博士生大师兄的。

扯远了,回到正题。几年前的时候国内对于算法工程师的定位都还不是很清晰,hr也经常把它和数据挖掘工程师搞混,你看就连大厂的hr都不是非常清楚这个岗位是干嘛的,就更没有大牛给你总结入门资料了。

你说那个时候我们怎么就不迷茫?

因为那时候的想法很简单,就是有啥学啥,管它有用没用,先学了再说。老梁就学了一堆NLP、CV的模型,也做过许多相关的实验。后来上班了才知道,这些东西都有特定的领域,你不做这个领域,完全没有必要学。

但是多学点总不是坏事,就算学了过了几年忘得精光,但再怎么忘了还是能留下印象,后面再捡起来要容易得多。老梁当年大三就从acm校队退役了,现在又毕业了这么多年,当初学的那些算法也早就忘了。但每次刷题的时候,仔细想想仍然能回忆上来不少碎片,仔细拼凑拼凑就又想起来了,之前写替罪羊树、SBT各种树的时候,才发现功底还在,居然还能写,莫名有一种宝刀未老的感觉。

所以说付出的努力不会骗你,学的东西忘了,底子还在,对于思维的锻炼以及理解能力的提升也都还在。千万不要觉得学了没用上就是亏了,这里面逻辑就不对,你只有先学才能有用,等你知道能用上再去学就晚了,毕竟机会不等人。

这年头大家的生活节奏都很快,时间宝贵,功利心也会强一些,想要在学习这个方面有更高的投入产出比,这完全能理解。但这里面还有一个隐藏的逻辑,可能大家没有发现,就是判别能力。

对于新手来说,他的判别能力是很低的,别人告诉他应该学什么,应该怎么做,他其实是没有能力做一个很好的评估和判断的。

A说要学数据结构要刷题,B说先学机器学习再做实验,C说我给你列个书单,你关注我公众号领取一下pdf……

请问他们三个谁对谁错?

答案是都对,也都错,因为本身该学什么这个问题就没有标准答案,或者说每个人的标准答案都不相同。过来人也只能结合自己的经历和经验给出建议,他也不知道这个建议适不适合你,当然你自己也不知道,因为你对这些都不了解,就更没有能力判断了。

所以很多新人就因此陷入了迷茫,他不知道该听谁的,谁的听着都有道理。然后就纠结啊、纠结,不知不觉回过神一看,好几个月过去了,想想懊恼不已,想要赶紧抓紧时间学点东西,但又陷入了不知道该学什么,继续纠结的循环。

还有些人这个时候就花钱去找培训班了,为什么?不是因为培训班的导师有多牛,真的不是,要是真的这么牛早就在互联网企业财富自由了,鬼会去培训班当导师。老梁当初也写文章揭露过,很多培训班的教学大纲真的是一坨X,只能糊弄啥都不懂的学生。

也不是这些培训班多能忽悠,当然这个也是一方面,更主要是很多人就是想要通过报班、买课来逃避该学什么的纠结。我花钱了,肯定花钱买来的最大,他怎么说就怎么做,我照着做就行,不用纠结了。另外一方面也是给自己找个权威,网上看到的那些kol看起来似乎不如实打实的一个机构靠谱。

结果呢,就是培训机构赚得盆满钵满,很多穷学生借钱来学,最终啥也没学到打了水漂。有些人被逼的搞出虚构简历、找朋友背调这种歪门邪道,扰乱了市场环境,搞得大公司招聘标准越来越高……

说来说去,那应该怎么做呢?

很简单,埋头学呗,跟着老梁学也行,跟着其他人学也行,或者是自己摸索也行,不管怎么样先学起来。学习除了学到东西本身之外,还有一个巨大的功能就是帮助你提高认知,你学了之后就知道靠不靠谱了。你刷了LeetCode就知道,这玩意肯定只能应付面试,真正上班不可能给你一道题目做。你学了机器学习又能发现,这玩意十有八九早就淘汰了,花架子太多,很多算法根本找不到应用场景……

有同学又会说你说的这些我也学了,我怎么没觉得?那可能是你思考的深度不够,只是学了,没有思考也是不够的。一个知识如果有10分的话,那么书本上写出来的最多只有3分,有些垃圾书可能就只有1分,另外七八九分需要你自己去思考和探索。

举个例子,比如你学了kmeans算法,书上告诉你这是一个聚类算法,然后代码怎么怎么写。这就结束了吗?完全没有。书上没写的内容太多了,好的书好一点,讲清楚原理的同时还会启发你的思考,垃圾书就把代码和公式摆上,你自己领悟去吧。

比如说最重要的,kmeans算法能用来干什么?尤其是在当今互联网公司里能干什么?互联网公司什么地方能够用得上聚类?

可能你对互联网公司也不了解,不知道他们都干些什么,其实也没关系,完全可以不着边际地瞎想,有些瞎想想着想着多少能琢磨点出来。比如商品数据是不是能够聚类,用户数据能不能聚类?能够把相似的商品聚在一起吗?如果可以这个类簇怎么设置呢?

一旦你这么想了,很快就能发现一个问题,就是kmeans算法的复杂度非常大,在大数据场景当中根本跑不动。像是互联网公司动辄上亿的数据,根本不可能抗住。既然如此,那怎么办?能优化吗?

于是你就有了一个新的研究方向,怎么优化kmeans,研究了一堆kmeans的优化方法之后,可能发现还是不行扛不住。那么还有其他效率更高的算法吗?或者说如果kmeans本身就不行,当今互联网行业中对于商品、用户的聚类他们都是怎么做的?

你看,顺着这个思路深挖下去,不仅把kmeans算法本身吃透了,连带着对于其他的聚类算法,乃至于互联网公司当中的聚类场景以及解决方案都有了深入的了解,这样这个知识点才算是真正吃透了。

同样是面试,一个人只能照本宣科地讲出书本上的原理,另外一个能竹筒倒豆子把这个算法的原理结合前因后果以及它的应用场景和优化方案,甚至还能将它和其他同类算法做对比……你说如果你是面试官,你会想要录取哪个?一个人能把kmeans吃透,那同样他也能把其他问题和技术吃透,技术虽然大相径庭,但是背后的思考逻辑都是相通的。

杨绛先生有一句名言:你的问题在于读书太少,想的太多……可以说是一语道破真谛,某种程度上来说迷茫是正常现象,其实也是一个信号。因为很忙的人,真的在读书、学习、做事的人往往是不会迷茫的。当你感觉到迷茫的时候,其实也是反向说明你现在比较闲,没有真的在学习。

理解了这点,想摆脱其实就很明显了,切实行动找点东西学,让自己忙起来,也就不会迷茫了。你会发现你的问题书上都有,要么是你没看到,要么是你看到了撇过去了,没能领悟。

世上的道理也就是这样,总是知道容易,笃行很难。

0 人点赞