我有一个很好的、认识大致有六七年的朋友。前两天打电话,他提到他的性格,说了(大致)是这样的一番话:

我其实已经算是挺浑的了,就是和你呆在一起的时候,我才(显得)不那么浑一点儿。我这么说你是不是也不知道这个「浑」是什么意思?那就对了。对于我呢,我是有意识的知道我什么时候要浑一点儿,我的正常状态还是挺和大家融得进去的。你呢,你是有意识的知道什么时候要表现出的「正常」是什么样子,正常状态还是挺浑的。

某种意义上来说,我觉得这个描述很贴切。我想从这里引申出几点,算是提供一些信息和我个人的思考给大家。

接下来的很多话在很多地方都能看到,简直被说烂了 —— 但我想提供一个不太一样的,讲这些东西的方式,这样也许能够帮助到和我比较像的人。补充一点背景:我所从事的工作领域中有一部分和所谓的「人工智能」这个大领域相关;这部分比喻所涉及到的专业知识,我会尽量确保精确程度,但是如果希望从事该领域的工作,希望你可以重新检查所有概念的定义。

首先,(我觉得大家应该已经明白这件事,)绝大多数人在使用不太一样的思维模式。

「绝大多数人」这个词多少有一点容易让人虚构出一个庞大的群体,所以我们不要说「绝大多数人」。

我们说各种各样的人,我们说身边的每一个人。

观察身边的人。当他们面对某种(生活中的)情境的刺激时,他们会如何反应?他们为什么会这样反应?

接下来,把他们放到群体中。当你已经对个体有一定程度的预估后,观察显性和隐性的群体内部的互动模式。当一个人产生反应了之后,其他人会如何对这个人的反应产生反应?

人们对于事物的态度是如何互相影响的?

但是,我们明明 “知道“ 我们的某种方式是更「对」的,为什么我们要去探究这种思维模式上的不同呢?

  1. 这种「更对」的后面其实缺少支撑,因为对错在我们这个世界上没有不可动摇的意义 —— 这就意味着这个「更对」其实只是你的个人观点而已。当然,这同时意味着,别人认为你「错了」,其实也只是他们的个人观点而已。这些对待事物的对错标准,在这个意义上同等正确,也同等错误。当然,我的这些观点也同等正确/错误 —— 来,抬头看一眼这个博客的标题!
  2. 我们暂且不要把对方看作人,把对方看作是一个黑盒系统 —— 我们不知道这个系统里有什么,但我们知道某种输入(信息输入、外部刺激之类的其他东西)一定对应某种输出(信息输出,行为,态度,想法,情感)。更加了解这个系统(包括了解这个系统是如何与其他系统互相作用的)可以进一步帮助你对现实进行建模来预测「当我进行 x 举动时,接下来最有可能会发生什么」这件事。
  3. 我们把对方看作人,站在人对人的角度上,更好的理解对方 —— 我们的同类,但是又是和我们不同的特定个体 —— 有助于我们更好的理解我们自己。 GPT-3 (ChatGPT) 是通过海量的数据(在这里,海量的人类个体)加上海量的用户反馈(在这里,海量的你与其他人的交流的反馈)来达到一个「通用的文字模型」这样的效果的;人类的学习能力,尤其是举一反三的能力要强得多,所以你甚至不需要那么多的数据,就能达到远超过 GPT-3 的效果。那为什么不试试呢?

当然,我也可以轻易的随便说出一些反对我自己的论点。比如:

  1. 我们身边的大多数人已经是经过我们选择的。
  2. 而且很难与我们有足够有意义的交流。
  3. 同时这个行为会耗费大量的时间,潜在来看成本实在是太高。

这些当然都是有意义的论点!但,论点不搭配上一个效用函数毫无意义。

换句话来说,你得先决定你在乎什么,这些论点才有用。在这个例子里,如果「去和别人交流来理解他人」这个行为对你的消耗就是很大,你觉得它的回报并不够多,你觉得你并不很在乎理解他人和外界的行为逻辑,那你自然会选择不去做。这些是你觉得的。

再换句话来说,压根就不存在「仅仅通过事实做出判断」这件事情,事实本身并不能导向判断,判断一定来自于某种偏好。这种偏好常常是「个人」的。

更极端一点的情况,就算是计算机来做决定,这种偏好也需要人为引入:

  1. 在深度学习之前的人工智能系统中,存在所谓的「启发式搜索」(Heuristic Search)。搜索,可以被简单的理解为计算机试图穷尽所有可能性来找到最优解的过程。就算不计入「启发式」这个部分,计算机需要靠某种效用函数 (Utility function) 来决定两个解哪一个解最优;引入所谓的「启发式」之后,计算机就有了「不需要运算到解的最后一步」的能力,可以在解中途的某一步,根据这个人定义的偏好函数,来计算出当前的这一个步骤所属的状态是否是比较好的状态(以及具体有多好)。
  2. 到今天,深度学习模型都需要定义一个损失函数 (Loss Function)。这个损失函数的设计,一般来源于人对于现实世界的理解(典型案例:Cross Entropy Loss),人对于目标优化过程的理解(典型案例:Contrastive Loss),或者是人对于最后希望目标的预估(典型案例:Reconstruction Loss)。定义损失函数常常能决定一个模型结构的表现;但有些损失函数可以被用在多个任务上,有些损失函数只能用在某个特定任务上才有好的表现,且大多数情况下损失函数定义是多种损失函数的结合。

所以,请不要认为自己身上主观的那部分是不好的。 我们最好保有客观分析事物的能力 —— 这可以帮助我们更好的获取客观的信息;但如果没有一组主观的偏好(可以是观念、道德准则、情感等),我们会失去做决策的能力

同时,正如同你有「你自己的部分」,他人也有「他们自己的部分」。这种个体性,这种人与人的不同,一定会导致存在一些不可预见的冲突。

所以,为了避免这些冲突,我们需要掌握一种双方都在的当前社交情境下鼓励的,而且既不容易让我们的效用函数产生很低的值(既不让我们自己太难受),也不容易让一个未知的对方的效用体系产生很低的值(也不容易让对方太难受)的与他人交流的方式。

这个问题里面有两部分:我们自己的效用函数(算是比较简单的部分)和未知的、对方的效用体系(算是比较难的部分)。

我们自己的效用函数很简单,因为我们和自己相处的时间更长;但你要确保这段时间确实导致了你比较了解自己的效用函数

通过把你自己放进更多的情境里,你可以更容易的获取「自己与自己相处」这个过程的训练样本,从而更加了解你自己,从而获取相对更精确的你自己的效用函数 —— 也就是所谓的:

认识你自己!

哈哈哈哈哈哈不是… 当然这句话也可以这么理解。扯远了,赶快来说比较难的部分 —— 你压根就不够了解对方,怎么才能知道对方的效用体系是什么样子呢?

来看一下 Few-Shot Learning(抱歉,这个词没有好的中文翻译 —— 直译过来是“几个样本的学习“?有人会翻译成「小样本学习」、「少样本学习」)这个概念了。Few-Shot 的意思是,一个模型训练好之后,只需要给它几个某种新问题的样本,它就可以比较好的完成这个新问题。这是怎么做到的呢?

答案是,这个模型学到了「各种问题的共性」,以及该从新的问题里「抽取什么来把共性的解决方案迁移过来」。我们也可以采用类似的解决方案。

首先,通过对大量社交行为和情境的学习,你可以开始尝试对于「人的共性」进行建模。早期,你的数据量不够大的时候,你也许只能对某一部分人进行建模(比如,住在某市的+年龄在 xx 岁上下的+在 xx 学校的+成绩在 xx 范围内的人 的 某一种行为的 一般模型)。

接下来,为了用到新的样本上,你可以:

  1. 强行互动一波,拿到一些样本,根据新的样本进一步拓展模型;
  2. 在获取新样本前,先观察新环境内是否存在可以拿来做示例样本的资料来学习。如果存在,先学过来,再获取新的样本来检验/调整你的模型。

你模型训练中见过的样本越多、越多样,你对新样本的兼容能力就越强,你对于新情况的学习速度就越快。

最后,你会更容易建立「问题的共性」的模型,同时也知道该怎么从几个示例样本中「尝试抽取」一个情境的新信息。

最开始,「绝大多数人」会是一个模糊的,不精确的影子;随着我们训练样本的增多,我们会对于「绝大多数人」有更明确的建模。我们能看到某种特定类型的人,更容易因为某些特定因素的影响,产生某种特定的思维、情绪或行为模式;同时,对于新类型的人,我们可以先靠短时间内的观察顶上去,之后再通过新产生的训练样本,把这些新类型的人纳入我们对「绝大多数人」的模型中。最后,我们就从身边的每一个人,归纳出了「绝大多数人」。

说到这里,你可能已经发现了:「绝大多数人」就是除我以外的世界。这个建模过程,其实你已经在生活中不自觉的使用了(要不然你肯定活不到这么大)。现在,当我把它显式的提出并扔到你面前时,你会意识到一个还挺有意思的事情:

你已经熟练掌握了我刚刚说的这个过程;

而且,你可以把它用到任何你希望你的能力提高的领域。

为什么绝大多数人不这么做呢?因为这个过程对于「建模」能力要求是非常高的。它假设了「模型」是你思考所必经之路,但对于很多人来说,这样的建模过程非常耗费额外的精力。大多数人会采用一种基于样本点或标签的算法,根据过往经验和当前情境的相似度来复制(或基于某些简单的方式修改)当时的举措。

你也许也有过这样的体验。

同时,(你应该也发现了,)这个迭代的前几步还是挺难的。要求一个明知道自己其实几乎啥也不懂的人,去鼓起勇气在知道自己大概率会失败的情况下愿意去承担情感、现实等一系列后果,来不停的获取现实世界中的经验,这件事情本身非常需要勇气,需要一个坚强、勇敢、自信的人才能完成。我相信正在阅读这篇文章的你是这样的人。

所以,请你盲目的相信你可以。请相信我:不论是什么样的结果,都是同等重要(而且同等好的)训练样本。 做事情就会有结果,只要做了,就会有。这个过程的妙处就在于,你每一次重复这个循环,你的模型都会变得更准确。

我还有很多想说的,但以上内容是我觉得最重要的事情 —— 如果你再也不打开这个博客,我希望你至少明白了这个学习过程的运转原理。

题外话们

我想了很久,第一篇博文到底应该写什么?我想写一些解决问题的方法,我想写该怎么查找资料,我想写该怎么获取钱、知识、人脉等各种各样的资源 —— 想来想去,还是觉得,这一切归根结底都是两个问题:如何获取更好的模型,以及如何处理在获取这个模型中出现的各种问题。现在,你已经(大致)(原理上)明白了如何获取更好的模型。

接下来,我会写一些获取模型中出现的各种各样的问题,希望这些问题的信息也能对你有帮助。

在我的人生中,有无数次其他人告诉我某件事不行,我总是将信将疑。很多时候,我听他们的意见,之后很后悔。我建议你先评估这件事情有多大程度是你的责任(指:如果这件事情出现很严重的问题,你会受到多大的影响?如果它最后结果出人意料的好,你会获得多少回报?)。如果你的责任挺大的,你应该相信自己对于事物的理解,并自己做决定。当然,可以拖到最后一刻做决定,在那之前,尽可能的收集信息并更新模型。你应该对于自己的模型有多值得相信有直觉,也请你相信这个直觉。