zl程序教程

您现在的位置是:首页 >  其他

当前栏目

大师,我悟了!模型没训练几个,思考了半天人生

训练 模型 几个 思考 大师 人生 半天
2023-06-13 09:11:30 时间

作者 | 梁唐

大家好,我是梁唐。

上周写的模型出了点问题,周末在家加了会班,魔改了几个版本,重新训练拿结果。

就在训练模型进行实验的过程当中,发现了几个有趣的现象,并因此联想到了一些奇怪的感悟。所以写了这篇文章,虽然说起来是训练模型得到的,但实际上本文和机器学习本身关系并不是很大,算是一些意识流的整理吧。

小时了了大未必佳

这句话的意思是说,小时候看起来很了不起,长大了却未必很厉害。

我特地去查了原文,原句出自《世说新语》,背后有一个非常有意思的小故事。

故事的主人公大家应该都很熟悉,叫做孔融。他曾经在很小的时候去拜访一位名叫李元礼的高官,这个李元礼当时担任司隶校尉。司隶校尉有监督京师以及纠正地方百官之权,可能相当于现在的最高人民检察院长,后来曹操、诸葛亮都担任过这个官职。

李元礼位高权重,来拜访的自然都不是凡人,很多没名气的门客总要想方设法沾亲带故才能进门。孔融也说自己和李府有亲,才能进门。所以进门之后,李元礼就很傲慢地问他,你和我有什么亲戚?

当时孔融才十岁,李元礼就想十岁小孩少不更事,这么一吓估计得够呛。没想到孔融不卑不亢地回答说:我的祖上孔子曾经拜您的祖上老子为师,因此我们世代交好。成熟的话语和年幼的外表构成了巨大反差,举座皆惊。

当时在场的有一个高官叫陈韪,他听了之后很不服气,暗戳戳地说了一句:小时了了,大未必佳。也就是暗指孔融你现在神气,长大了不一定行,有点像那个时候的键盘侠。孔融一点也不生气,直接用他的原话怼了回去,说想必您小时候也一定很了不起吧!(想公小时必当了了),直接怼得陈韪说不出话来,当场社死。

这个故事我还是当年上学的时候做文言文练习的时候读到的,后来长大了才发现原来它还有后续。

但是这个后续却有些凄惨,后来孔融长大之后果然才学非凡,举世闻名。但当时已经是东汉末年,乱世当头。孔融忠于汉室,在汉献帝迁都许昌,曹操挟天子以令诸侯之后,孔融多次顶撞曹操,并公开和曹操唱反调。最终在建安十三年被曹操所杀,并株连了全家。

孔融自己也许算不上大未必佳,但后世这样的案例其实不少。比如大家所熟知的方仲永,七岁能诗,但最后依然泯然众人。其实想想并不意外,古往今来几千年的历史,早慧的孩子肯定不在少数,但最终建功立业,青史留名的毕竟还是少数。

这样的规律在模型里也一样存在,周末的时候新做了几版模型,尝试了一些个人新的想法。这些模型都很争气一开始的时候收敛得贼快,指标蹭蹭地涨。但好景不长,还没涨多久就开始陷入了瓶颈,很久才动弹一下。最终非但没能超越历史,反而还差了一大截。

由于神经网络的模型参数当中有大量随机的部分,所以从数学上来讲,模型最终的收敛结果和收敛的速度之间是没有必然联系的。

但我们还是会本能地觉得,前期收敛更快的模型最终的效果应该更好,但这样的期许往往事与愿违。也许是很快陷入了局部最优解,也许是没有足够的拟合能力向更好的效果进发。不过这些也都是事后的找补,事前在它迅猛收敛的时候,我们是不会知道它将来会止步在一个很一般的层次的。

其实人生也是一样,也许我们都为了前20年没有太多的亮点而惆怅,但是谁也不知道将来会不会做出一些不一样的事情。那些前期履历亮眼的同侪,我们也不知道他们将来会不会在某个时刻就像是这些模型一样停下脚步。

一招鲜吃遍天

毕竟没有对这种情况特别做过统计,所以也无法确定,究竟前期收敛很快的这些模型普遍表现更差,还是只是我的特别关注带来了误差,或者只是单纯我主观感受到的偏差。

所以我做了一件事情,我特别去观察了一下那些最终结果比较好的模型它们都有什么共性。

然后我就发现,表现得好的模型往往都有一技之长,其实模型的设计原理也是如此,当我阅读了大量的论文之后,我发现几乎每一篇论文的内容都只是围绕一个点的创新,所谓一招鲜吃遍天。

现在虽然说是各种人工智能,但实际上都还是围绕着深度学习的框架打转,大家最后拼的还是某一个方向的一点点创新,就靠着这一点创新领先时代。今天想到了bias网络,明天想到了attention,后天来了transformer……

我后来想想这样的道理套在人身上其实也一样说得通,大家都是普普通通的打工人,拼什么你升职加薪走上人生巅峰?另外一个只能默默无闻当个老白兔?背后肯定有一些潜在的道理,成功的那一个一定是做到了什么其他人做不到的事,同一个team里的人技术上往往大同小异,真正甩同组人一截的大牛还是少数,所以最后拼的可能还就是一技之长。

比如有的人特别小心,bug非常少,做事谨慎,有的认真负责,凡是到手的事情无不落实到位,有的想法灵活,总能想到新的点子钻研做出成果……

单个来看这些技能好像都没什么,甚至很多同学嗤之以鼻,这有什么,我要是想做我也可以。或者是觉得自己也同样有很多优点,但遗憾的是,生活往往比想象中艰难,一天、两天做到小心谨慎,或者是特别认真当然没有问题,但难的是持之以恒。也许认真不了几天就会觉得,我这么认真也没啥好处,还拼个啥,趁早躺平算了。

问题是你躺平了,别人没有躺平,于是你就被甩在后面了。另外,光有特长也需要展现的机会,有的机会需要争取,有的机会则干脆需要等,从概率上来说,程序员这一行当变动频繁,真有能力总是有机会展现的。只不过许多人可能还没等到展现的机会就跳槽了……

有长性,不惧大器晚成

好的模型分为两种,一种是惊才艳艳,先发优势,收敛非常迅速,很早就取得了非常不错的成绩。还有一种是大器晚成,收敛比较慢,但稳健,如果多个版本同时训练的话,明显可以看得出来,其他模型收敛的时候,它也收敛,其他模型停滞了,它还收敛。

你会发现同样的道理映衬在人身上也是一样的,有的人少年聪慧,年纪轻轻就有大将之风。仿佛天生开挂,许多问题好像天生就知道答案,从不迷茫,一路发展非常顺利。还有的人大器晚成,一开始其貌不扬,名声不显,突然有一刻开始崭露头角,发现原来在某一个领域造诣颇深。

可惜的是早慧的天才少年少,勤恳踏实的大器晚成来得多。但大家向往的往往都是前者,而不愿意默默耕耘成为后者。

我之前也这么觉得,但后来我看到了一个大佬的自述,他用三年的时间钻研数据库,从此成了团队里的数据库大佬,接着靠着这一套杀手锏开始横空出世,迅速往上走。有一句话非常动人,在互联网行业领域中,用三年时间就可以成为某一个领域内的专家,三年之后也还年轻,为什么不去做呢?

几年的时间换来职业生涯的飞跃,怎么看都是一件非常划算的事。其实我自己转来做推荐也才一年多时间,我用了半年就差不多看完了大半推荐领域内的顶尖论文,又用了半年通过各种实验以及工作内容摸清了大半底层原理建立了思维模型。现在虽然不敢自称是专家,但出去面试唬人问题倒也不大了。

我在17岁的时候就看过这个道理,人生需要一点长性,有些路慢慢走反而比较快。道理虽然早就知道了,但真正能够摸到一点笃行的皮毛,足足用了十年。

这不是一件容易的事,但值得我们为之努力和尝试。古人说十年磨一剑,十年之后利刃出鞘,还愁没有机会吗?