天天看点

【睡前碎语】什么是好的技术

头条写的是安全,写完有点意犹未尽。想就着话题聊,不过这里又写明了叫机器学习,一咬牙一跺脚,聊一个大一点的话题。

什么是好的技术。

这是个没有标准答案的话题,甚至可能不是一个技术的话题。

一般来说,我们说一项技术“好”,意思通常是这么技术比较“先进”。但是,先进的技术一定是好的技术吗?

这里不给答案,只聊两个事情。

头条聊到网络安全,那就先说说网络协议。都知道现在最常用的网络协议叫TCP/IP协议,这是个四层(也有分法说是五层)模型。不过,了解网络的同学应该都知道,还有一个叫OSI的七层模型,从纯学术的角度说,OSI的七层模型要远比TCP/IP的四层模型先进。

然而,现在我们最常使用的,不是OSI,而是TCP/IP。

有人说因为TCP/IP出在前面,有“在位优势”。这种解释是有一定说服力的,环顾技术发展史,我们确实看到许多开始不尽人意的技术因为抢先出闸形成了生态,最终成为了业界霸主的案例。譬如说Android。

最近Win11很火,很多人都在说,说的最多的是Win11开始原生支持Android。不知道大家的感受,我是很感慨的。操作系统安全也是我的研究内容之一,单从软件工程的角度看,早期的Android有很多一言难尽的地方,而Windows是远要成熟得多。

那为什么现在是Win11原生支持Android,而不是反过来呢?

有人说是因为Android开源,Windows不开源。这当然也不能说错,毕竟现在微软一个大的战略方向就是拥抱开源,不过再之前Windows在桌面端有着吊打Linux的漫长历史,而且一直把闭源保证质量作为成功的钥匙,很难说这是最后决定性的因素。

所以有人又说,这是因为Android出在前面,微软一步慢步步慢,虽然后面也做了很多努力,但终究是无力改变历史。

谷歌抢先发力,先是Chrome后是Android,一下从新秀跻身巨头。而微软则一错再错,错过了网络时代,又错过了移动网络时代,现在还得原生支持Android,令人感慨。在很多人眼里,在位优势这种解释框架是很有说服力的。

不过,如果我们的视野再广阔一点,就看到更多先驱变成先烈的例子。远的不说,还记得我们的共享单车吗,黄的那辆现在在哪里呢?

这个话题展开就会很开放了,我们收回来,说说机器学习。

机器学习有个重要的理论,叫NFL理论,中译“没有免费午餐”理论。名字听着很复杂,而且这是一套经过数学证明的严谨理论,证明过程看着更复杂,不过意思却很简单。

我一直在说,机器学习不是一套算法,而且一筐算法。而开始学机器学习,我们都爱问一个问题:哪套算法最厉害呢?

NFL理论就是回答这个问题:模型最终表现出来的性能,只和数据的特征分布有关。简单来说,算法不存在绝对的厉不厉害的问题,只能说适不适合当前给定的数据集。

这就是NFL理论,用我们的话说,就是尺有所短寸有所长。

这个NFL听着像是和稀泥,好像什么也没说,但其实已经说了很多。所以在做机器学习之前,都需要有个EDA的过程,目的就是要清楚了解数据分布。

NFL理论看着简单,不过发现容易让人误会,多说一点:NFL理论说的是没有绝对最佳的算法,而不是不存在“最佳算法”。

听着拗口,举个例子吧。在机器学习工程中,是有个“模型选择”的阶段的,根据需要选择效果最佳的模型。

是不是和NFL理论矛盾了呢?不是的。虽然我们不能笼统地说哪套算法最佳,但是在给定了数据集的前提下,还是存在最佳算法的。

而且,很多人容易忽略的是:不同的分布情况,分布也是不同的。也就是说,某些数据分布出现的概率要远比其它大的多。

这就是我对什么是好的技术的回答。

最后,说一点安全方面的东西。

安全技术已经经历过几波发展,以后想必还有继续发展,技术是真的得用到老学到老,不学就真的淘汰了。不过,在后面一直追也真的很累,我以前有过一个想法:

能不能提前预测安全技术的未来发展呢?

如果能,那“什么是好的技术”就很好回答了:符合未来发展方向的技术当然就是好的技术。不过,需要首先回答另一个问题:

业界下一个“爆点”在哪里?

这是个技术问题,又不是个技术问题。