如何寻找人生最优解?

2024-12-16 09:45:00

如何寻找人生最优解?

看一类经典的人生场景,也是跟数学问题交集很大的一类场景,就是寻求最优解。可以是项目管理、产品研发中的最优解,也可以是人生规划中的最优解。我们借用一个数学里面求最优解的典型场景,就是求一个函数的最大值。比如,这是一个二次函数,它的形状是一个像小山一样的抛物线。那么,怎么求它的最大值?


 

最直接的显然是求导法。我们知道,它总共就是三步:(1)求导数,(2)让导数为零,(3)找到方程的解。

虽然步骤简单,但是要得到正确的结果,你每一步都不能出错。这种模式对应一个成语,就是:“步步为营”。它要求每一步都要完美,把整个流程走完,才能得到想要的结果。这就是一种我们上学的时候最常用的方法,也可能是当时我们最坚信的理念——每一步都要力求完美。但是,在步入社会之后,我们很可能会发现,这种思路没有那么好用了。因为很多时候,你做不到每一步都是最优的。

这个时候我们其实可以参考另外一种解法,叫数值解法。还是假设我们面对的是一个形状像小山的二次函数图像。那么,要找到这个函数最大值的位置,我们可以先随便猜一个x的值,代入进函数,得出一个函数值。然后,我们在x的附近试数,如果试了下一个比x更大一点的数,代进函数计算,函数值上升了,那我们就可以再试一个更大一点的数,以此类推;如果得出的函数值比之前的要小,那我们就再后退一点儿,找一个小一点的数,继续试。不断重复这些步骤,就可能得出最大值所在的位置。

这就是数值解法。从数学上看,跟求导法相比,数值解法不需要知道函数的具体表达式,也不要求函数处处可导。所以,在科学工程当中如果需要找函数极值,绝大部分时候会采用这种方法。现在在深度神经网络领域,都是采用这种思路来训练神经网络的参数。


 

那么,从更广泛的意义上,数值解法能给我们什么启发呢?你肯定已经感受到,数值解法的思路并不是试图一次就找到函数最大值的位置,不像求导法一样要求在每一步都做到精确,而是通过逐步的迭代不断地逼近那个最大值。

如果迁移到产品开发上,求导法跟数值解法其实对应的是两种思路。一个产品的开发流程当中有多种不同的模型,其中的一种常见的模型是瀑布模型。它把一个产品的开发分为需求分析、设计、实现、发布等多个阶段。各个阶段按照固定的次序衔接,就像形成瀑布的流水一样,逐级下落。所以叫“瀑布模型”。

瀑布模型的思想,就很像求导法的“步步为营”。你看,产品开发被明确地分为几个阶段,要在完美地完成前一个阶段后才能进入下一个阶段。最后一个阶段的任务完成后,就可以得到最后的理想结果。

但是,用瀑布模型来开发产品,有两个重要的缺点。第一,这样的开发流程不适应用户需求的变化。因为用户需求在最前端,一旦用户需求发生变化,整个开发流程全部需要从头再来。第二,只有在项目生命周期到了后期,你才能看到结果。


 

一个真实的例子。老王是一个公司高管,也是一个足球爱好者。他经常苦于踢足球时临时组不成队,所以他就有了一个做个足球社交平台的想法。在这个平台上,人们可以组队订场去踢球。他越想越觉得这个想法很有前景,所以他就辞了工作,投入多年的积蓄,组建开发团队,全情地投入研发这个应用。

他们在研发过程中为了尽善尽美、优化用户体验,开发了很多的功能,开发进度比预期慢了很多,但老王认为这是必需的。因为他认为只有推出一个“完美”的产品到市场,用户才会买单。在整整开发了一年之后,让老王比较满意的“完美”应用终于完成了。

但是,等到他们把这个应用投放市场后发现,虽然这个应用是免费的,但是几个月过去,下载的人非常少。可能是市场并没有这个需求?或者是产品还有很多可以优化的地方?没有人说得清楚为什么。总之这个项目最后不了了之了。老王的这种产品开发模式就是使用了典型的“瀑布模型”。就像我们前面说的,这个模型最大的问题就是,他们在把自己觉得完美的产品推向市场之前,没法知道用户反馈。那么很可能出现的情况就是,投入了大量的资源、金钱、时间,开发出来了,结果没人买单。

而跟这个瀑布模型相对的是敏捷模型(Agile Model)。在用敏捷模型开发产品的时候,整个开发工作被组织为一系列短周期的快速迭代。每一次迭代都包含了需求分析、设计、实现与测试工作这些所有的流程,并且通过客户的反馈不断地进行改进,直至达到最后的要求。这就很像是数值解法的思路,就是不试图在每一步都做到完美,而是迅速走完一轮,然后在这一轮结果的基础上迭代,反复好多轮,不断地提高,最后也可以得到一个好结果。


 

很显然,和瀑布模型相比,用敏捷模型做产品开发,有这么两个突出的优势:第一,敏捷模型的短周期迭代思想,可以很好地适应用户需求的变化。第二,能够快速得到早期用户的反馈,然后对产品进行改良。

这也类似很多公司经常说的“要先有‘最小可行产品’”或者“小步快跑,快速迭代”。

这种思路还可以用在写文章或者写论文上。写一篇论文有两种模式。

第一种模式是“求导法”的思路,步步为营。先琢磨一个完美的想法,然后做实验验证,等实验做完,拿到了所有数据再开始写。

第二种模式是“数值解法”思路,快速迭代。稍微有了一个初步可行的想法就开始写,写的时候不太打磨语言细节,用最快的时间写出一个初稿。写完给周围人看,让他们提意见,然后针对这些意见改进想法、用实验验证想法,修改文章。甚至可以在刚有提纲的时候就开始请周围人提建议。这样,经过多轮迭代,完成对文章的打磨。

很多资深的研究工作者,都会建议年轻学者采用第二种思路,也就是“数值解法”思路。先尽可能地写出一个“可行但不完美的论文”,然后不断地迭代来改进。

对比了求导法和数值解法。求导法,我们上学的时候最常用;面对简单规整的函数,它也最好用。而走上社会,面对更加复杂的项目,面对不断变化的需求或形式,数值解法就变得比导数法更实用了。

但是,如果迁移到整个人生呢?你看,我们刚才设想的都是有一道小山丘一样的函数形状,去求最优解。但是,我们真实的人生总是起起伏伏的,它不是一座山丘,而是重峦叠嶂。从图像上看,像一条接连不断,高高低低的波浪线。它有多少个波峰,多少个波谷?波峰有多高,波谷有多低?我们提前并不能知道。这种情况,怎么寻找最优解呢?


 

还用数值解法,可行吗?就不太可行了。为什么呢?因为,站在数学的角度来说,当函数形式比较复杂的时候,用数值解法可能会陷入局部的最高点。比如,我们设想一下,眼前这条波浪线的形状像两个山丘,它有两个高点,第二个点更高。那么,如果我们以第一个高点的山脚位置为起点来试数,经过多次迭代之后,一定会收敛到第一个较矮的高点处,也就是局部最高点,而不是全局最高点。

那么,怎么解决呢?我们琢磨一下,数值解法之所以会让我们困在局部最高点里,跳不出来,是因为它的想法是:你只有每一步都比上一步更高,才觉得我们是在朝着一个好的方向走;只要这一步比上一步低了,就不接受,就要掉头离开。

所以要跳出困局,关键就在于,如果处在局部最高点的时候,我们可以接受它右侧位置更低的点,那么从这个点开始迭代,就可以跳出局部最高点,到达全局最高点。如果切换到人生场景,数值解法之所以会让我们困入局部最高点,是因为它不能接受短期的挫折,每一步都要追求眼前有利可得。而想要跳出来,关键就在于,能接受暂时的不太完美,用暂时的不完美来换取一个更好的未来。

这就好比,很多人在换工作时,都要求下一份工作的工资比当前更高,感觉这样才是往上跳。但是,如果新公司的行业前景更好,那么暂时的薪资退步也不应该是完全不能接受,因为这是为了以后能达到更高的高度。


 

那么,我们还可以继续追问,我们该以什么样的方式接受不完美?

介绍一种模拟退火算法。先说说这个奇怪的名字是怎么来的。你可能在影视作品里看见过这样的场景:一个铁匠正在反复敲打一个烧的很红的兵器,然后从炉火里把它拿出来,放进水里,只听见“呲”的一声,升起一阵白雾。这叫“淬火”,是快速让金属冷却。

但是退火跟淬火不一样,退火的冷却速度比淬火要慢得多。退火是通过缓慢地降低金属的温度,来增加材料的延展性和韧性。

所以,退火的核心就是三个字:慢慢来。这也是模拟退火算法的核心思想。只不过它慢慢降低的不是金属的温度,而是对于不完美的概率的接受程度。

具体来讲,在刚开始的时候,我们要接受这一次试的数得出的结果有比较大的概率不如上一次。而越往后,我们通过算法设计,逐步降低对于这个不完美的概率的接受程度。

这就是模拟退火算法。它告诉我们,在开始的时候,我们要接受结果有较大的概率并不完美,而这个概率,会随着时间的推移慢慢降低。


 

那么,迁移到人生场景呢?它能给我们什么启发呢?越是年轻的时候,越应该接受更大的随机性,更大的不完美概率。这对应着,年轻的时候要多去闯一闯,多尝试不同的机会,进而找到自己的兴趣、发现自己的潜力。

而模拟退火算法进一步告诉我们,这个随机性应该随着你的年龄慢慢降低。当你年轻的时候,你可以让这个随机性较大,充分探索外界,让自己接受暂时的不完美,好在将来跃上一个更高峰。而在年龄渐长、知道自己最适合什么之后,就要控制随机性,在自己最适合的地方深耕,不轻易切换赛道。

本文标题:如何寻找人生最优解?

  • 相关推荐

【如何寻找人生最优解?】相关文章:

爱情心理测试 | 爱情有六大类型,你属于哪一类? | 爱情色轮测试2024-12-16 09:45:00

Copyright©2006-2023 短文学 www.cdrckt.cn 版权所有 手机版 渝ICP备2022004680号-2 渝公网安备 50022602000672号