这篇文章本来是写在上一篇的结尾的,因为实在是太长了,单独拆分了出来。

 

我们再讨论一下transformer模型的能力极限吧,chatGPT刚出来的时候,很多人都感觉到非常的惊艳,似乎聊天机器人很可能实现类似人类水平的智能,整个世界都似乎被震撼到了,引起了AI行业的狂热

然而这只是表象,我们这里仔细的观察讨论一下transformer最核心的原理技术然后再对他能力极限的做出一个判断和预测。

依照技术的进化路径我们先从词向量和RNN来说起。

什么是词向量或者说词嵌入呢?它的英文word embedding原理就是用若干个数字来表示一个字或者词。比如这个字我们用256个数字来表示比如(0.2,0.6,0.8,…..,0.7)为什么要这样干呢?因为用一串数字来表示它的话,就可以表达很多细微的概念和意思而且这些数字可以进行一些运算操作比如king在英语里表示国王women表示女人man表示男人那么我们进行一些数学运算比如king减去man再加上women会得到什么结果呢?没错跟我们的直觉是一样的得到的结果就是queen,也就是女王。这nlp领域里边非常著名的一个例子一般讲词向量都会用这个来举例。

实际上向量的核心思想就在于每一个词都用若干个更基础的原始概念来表示我们看到前面表示256个数字其实就是底层的256个概念每一个的权重

词向量是lstm还有transformer的基础他们的输入都是先把每个字或者单词映射成向量的数字序列。也就是模型里面的word embedding

最早nlp领域出现的是grulstm这些循环神经网络模型它们是为了解决机器翻译问题而提出的。

lstm最大的问题在于每次输入都是单独的虽然记忆单元能够捕获一定前面输入过字的语义很难完全理解获取整个上下文关系

举个例子,比如‘道’这个字,如果只是简单的进行词嵌入,比如用256个数字来表示它的意义,那么它的意义到底是什么呢?他有道路的意思,也有说话的意思,还有方法的意思。我们用一个简单的词嵌入向量是无法表达它的看下面几句话

大道至简

前面有一条小道

他说道:“我们应该回去。”

在这几句话里,每一个道字都有不同的含义,如果还想再复杂一点儿,我们可以看下这句话:

道可道,非常道。

对于我们正常的人来说,给一个词或者字问是什么意思,我们怎么回答呢?很可能我们会说它有好几个意思,我无法确定他到底是哪一个,但是如果你告诉我一个句子,包含了上下文,那我就能跟你说出来他确切的含义。

这就是lstm这种模型最大的问题,他的词嵌入是固定的,每次独立的输出很难获得完整的上下文,实际上也有方式来补救。ELMo模型,就是使用两个双向lstm获取动态的上下文信息,对不同语句中出现的相同词语会输出不同的embedding。

而且在lstm的翻译模型中,只有把编码器最终的输出跟解码器连接起来这样就失去了很多上下文关系attention机制就是在这种情况下提出来可以通过在前面的那篇文章里的例子对比就能发现加入Attention机制之后的效果改进实在是太大了

attention机制是如此的重要以至于一些人专门儿设计了一种架构并发表了一篇叫做attention is all you need的论文,提出的模型就是Transformer他们当初主要是为了解决机器翻译问题恐怕也没有想到这个模型会对整个nlp领域造成如此巨大的影响。前段时间的GTC大会老黄还专门邀请了这篇论文的几个作者一起进行对话讨论,并表示:“整个行业都对你们的这一成就心怀感激。”

我相信老黄这句话是发自肺腑本来一家卖游戏显卡的公司靠这个模型摇身一变成为一家人工智能公司过去一块儿显卡能卖1万块已经是顶天了现在一块儿同样架构核心加速卡直接就能卖到一二十万简直是赚翻天,感觉现在老黄都不怎么关注游戏玩家了很多人打游戏还在用好几年前1650

我们下边就研究一下Transformerattention机制仔细的看一下,对于输入的词向量序列,它是如何变换的。

假设输入的维度是n*d,首先把输入经过不同的线性层变换成三个不同的序列,分别是query,key和value,也就是qkv,然后对q乘以k的反置,得到一个nn的矩阵,然后用这个矩阵来乘以v得到输出,我们要注意一下这时候输出维度刚好又变成了n*d,折腾了一圈,输入的形状结构没有任何变化,但是每一个词向量的值却发生了变化,实际上就是这个过程,根据上下文相关性把每一个词变换成它应有的意思了,所以这个模型叫做transformer,还是非常形象的

事实上transformer是把词向量拆成几个小块单独计算attention最后综合一起最终的矩阵形状是一样的,叫做MultiHead Attention这么做主要是为了更好地把握每一个词下面单独的若干概念之间的联系,可以更精准地把控语义

事实上这个nn的矩阵,就是代表了句子里的每一个词和词之间相关性的联系,我们看一下下面这张图。(我懒得自己画图了,这张图片是直接网上找的,要是有侵权请联系我删掉。)

上面最后那个矩阵显示了the cat is on a chair这句话每个单词之间的对应联系权重。经过这个权重变换后的句子序列的每一个词向量,都是变换后根据上下文相关性生成,包含了具体确定的意义的概念组合。

所以说,Transformerattention机制真的非常重要,那篇论文的题目叫attention is all you need是非常贴切的

Transformer模型解决了这些上下文相关的语义,而且不基于时序,相比比lstm更易于训练和规模化扩展,直接风靡了整个业界。当初bert一经推出就在各大榜单上显示出非常优越的效果,更不用说后面大家都知道的chatGPT了现在nlp领域已经基本没什么人去关心lstm

从论文发表至今,六七年已经过去了,transformer仍然还是当之无愧的业界的统治者,我们看到的进步只不过是不停的搞更大的参数,更多的训练数据而已。当然也有架构上的一些优化改进,但这些都是边边角角了,并没有本质上整个结构性的改变。

实际上gpt并没有使用整个Transformer,而只是用了它的decoder解码器部分,为什么这样就工作的很好呢?很简单,这再一次说明了attention机制的重要性,解码器也不过是一些这样attention变换的堆叠,之所以有编码器,因为tranfromer最初提出的动机是想解决机器翻译的问题。实际上只是单独的简单的堆叠解码器就足够了,每一次变化都能获得上下文相关的语义的理解。只要训练数据足够大我们仅仅依赖于解码器就能实现翻译程序,比如把现代文放在前面,中间加一个特殊的标记来表示翻译符号,后边跟着文言文的输出,用大量这样的数据来训练就可以了。

对于大模型来说,当他训练的数据足够的多,翻译文言文甚至都可以直接当做聊天机器人的提问,比如在提示窗口里输入,把xxxxx这句话翻译成文言文,它就会给出相应的翻译输出。

所以我们为什么要花力气训练单独的翻译程序呢?直接训练一个特别优秀的大模型就能解决所有这些问题,根本不需要再单独的折腾了。

然而对于只是简单的推理过程,现在大模型都需要大量的算力,而且他还没并没有对这些翻译数据进行优化训练,所以训练专门特殊应用模型还是有一定价值和意义的。但是随着时间的推移,未来谁说的了呢?可能一二十年后算力这些都不是太大问题的话,我们的翻译程序可能也有很大的改进和不同。

我们再展望一下未来。Transformer统治了这么多年,是终极的模型吗?在很多表现上它都能给出足够好的结果,以至于让很多人觉得它似乎可能有一些智能的感觉。

然而直觉是并不可靠的,我们看看这个模型本身,有很多问题它都解决不了。

第一个是没有动态的存储。对于我们每一个思考的人类来说,如果我们告诉听到一件事,就会把这件事情给记在大脑里显然transformer模型并不拥有这些记忆。聊天机器人之所以能感觉到上下文,那是因为在回答下一次输入前,他把之前聊天框里之前所有的输入再重新跟新输入加在一起当做新一次的输入,这就给了我们以好像有上下文的假象,然而这都是trick。

而且整个attention机制加上一些其他的线性变换还有残值连接激活函数,所有这一切如果从数学角度来看,都只是一个个简单函数方程进行不停的嵌套,最终得到一个足够复杂的方程或者函数,这个函数可能有几亿几百亿个参数,然而它的本质只是一个函数映射或者方程,训练的过程就是拟合这些参数的过程。这个方程本身我们说它就有智能吗?

显然不是。

不过我们下结论也不要过于笃定,很多东西都不好说。我们可以对这个方程加一些简单的其他操作,从我的直觉上来看,似乎是有可能实现一定的类似人类的认知智能的。

首先是词向量,说实话,当我第一次接触词向量的时候,确实有眼前一亮的感觉。他解决了很多之前nlp领域头疼的问题。但是向量本身是固定的,只是用一组数字来描述一个概念。这些基础的每一个数字是什么呢?也许是这些概念里边更基础的概念,但向量的长度决定了这些基本概念就是这么多,而且是固定的。

我们人类大脑认知的情况并不是这样的,对于一个概念来说,他可能包含若干个子概念,而这些子概念可能每一个又包含另外的一些子概念。最重要的机制是,这些子概念是相互连接可能包含有各种各样的联系,概念与概念之间是一个树状或者是网状的结构,向量只是一个固定的若干个概念的组合,这跟我们人脑的认知结构差别还是非常大的。

而transformer无论怎样变换上层的上下文语义结构,它的认知的基础概念就是向量的维度这么多,而且这些基础概念都是独立的互不干涉的所以他不太可能达到人类的认知水平。

除此之外还有一个就是,我们除了本身包含的这些概念之外,还能对这些概念进行思考总结,生成新的概念,产生概念概念之间的联系。而transformer训练完了就是训练完了,他并没有新概念产生的机制,也就是说没有人类思考的过程。

况且对他来说一个概念是什么呢?对他来说只有词向量每一个基础的元概念,以及上层的这些概念组合形成的新的概念,当足够多的大量的数据来对应的时候,他似乎让我们觉得能理解很多我们人类所谓的一些概念,也许吧,如果他的参数足够多,那么可能能覆盖我们已知的一些概念和这些概念之间的联系,当参数越大,我们给他的数据也就是说这些概念之间的结构联系越多,他表现出来的效果看起来就会越好。

但是真正的人类智力的核心呢?显然他并不具备。人类真正的智力的核心是对这些已知的概念进行总结推理归纳,进而生成新的概念,或者把若干这些概念整理成几个精简的概念,这就是我们人类思考学习的过程。

所以说我们想要实现真正类人的智能的话,Transformer模型是不够的。我们一定要提出一个新的模型,这个模型能以我们思考的概念为基本元素,然后能动态的对概念进行归纳总结更新,而且还能生成新的概念结构。

整个训练的过程也要改,对于我们现有的大模型来说,训练好了参数就是固定下来了不会再改变了,但真的人类的认知过程并不是这样的,它是一个动态的过程,平时每天的对话,每天的看到听到的事物本身就是一个学习的过程,大脑也无时无刻也不停地对这些概念进行总结归纳。所以我们不能简单的直接给数据训练一种方式,它的使用过程中的输入都是一次新的认知或者训练过程,甚至每次推理的过程也要对已有概念进行总结提炼归纳,也就是说我们要引入一个思考的过程。

这样我们就把训练数据当成外部输入,输入之后这些数据在模型内部先存起来。包括其他后续的每次输入都是一样。另外我们在内部单独拆分出来一个过程,姑且把它称之为思考的过程吧,这个思考的过程就是对这些数据进行审视,建立内部概念连接的过程。

所以假设需要建立一个新的类人智能模型的话,并不是仅仅使用简单的训练来概括所有的学习过程。而是把整个训练过程拆分为输入,认知思考,和输出几个部分。每次输入都能引发内部的认知思考。没有输入的时候,模型本身也可以进行认知思考。

这个所谓的认知思考其实就是内部进行一个训练学习的过程,也就是前面说的对这些概念进行总结归纳或这生成新概念的一个过程。

我们再看一下transformer,如果从本身结构来看的话,他缺的另外一个东西就是动态的存储。就像我们前面说的,它并没有聊天的上下文,需要把所有历史的输入跟新的输入连在一起当成新的输入,才能产生上下文的相关性

但是我们刚才讨论的改进的新模型就不存在这个问题,对于已有概念进行总结归纳产生新概念的过程,其实就是生成新的存储。

所以说这个新的存储在我们的类人智能模型中怎么来表示呢?

一种方式是我们想办法怎么动态的扩展这个词向量,另一种办法是直接用一种新的架构或者模块。

这个具体怎么实现我还没有想清楚,当然如果真的想清楚了,那就是革命性的一种改进变革了。它肯定没有那么简单,或者说它很简单,只是我们还没有想到。不过毕竟现在这个行业全世界的聪明人都在一起想方设法改进,或者说尝试解决方案。未来谁又说的了呢,说不定有很大几率被我们找出来这种东西。

如果真的能找到这样一种架构的话,那我们确实才需要开始真的去担心,人类的高阶思维是否会被机器取代。然后这里边还有一些更复杂的哲学问题等着我们,它能产生出来自我意识吗?

至少目前看来我们需要走的路还有很远很远,这些都是杞人忧天了。

好了,讨论完这些技术性概念性的东西,我们再看一下应用方面。

说实话,现在大模型确实存在一定的泡沫。很多公司的估值都高的不太正常。至少在我看来他们实在是很难盈利。聊天机器人实际应用价值并不是太广泛,也许客服之类的它能解放一些人工,一些公司也愿意为他进行付费,但这个市场并不是特别大,要是想撑起来类似于openai这些公司千亿美元的市值,还是远远不够。

但另一方面,深度学习相关的技术是一个巨大的市场,我们不能简单的局限于大模型聊天机器人。比如现在另一个火热的扩散模型生成图片的,在各种艺术创作以及游戏当中其实是可以真的产生一些生产价值的,虽然目前还早吧,但随着不停的迭代改进,未来应用场景还是很广泛的。

另外就是在各行各业当中的应用了,特别是模式识别或者图像识别。比超市里对水果蔬菜进行打秤,对于人来说这其实是一个很累的过程,要仔细的去看是什么水果,然后选择相应的品类打出来价格贴上去。我前段时间就见过一种能动态识别水果的秤,当时我把水果放上去,它自动显示出来砂糖橘和蜜橘两种选项,这样打秤的员工只要简单的在里边选出来确定具体哪一种就可以了,可以大大减轻他们的工作量。这种东西虽然看起来不是很起眼,但却是一种实实在在的应用场景,产生了一个实实在在的商品。而且全世界那么多超市,需要的这种秤的数量其实也不算少,未必就比那些火热的聊天机器人的利润水平低。

类似的应用场景其实多了去了,这就是我们为什么提出来要进行人工智能+类似的概念,各行各业都有很多可以相结合的,特别是模式识别和图形图像相关的应用,可以解决或者减轻很多工作量,这是实打实的技术进步和改善。

再比如说yolo算法,它的作者后来宣布退出了开发,他自己说是因为这项技术被大量的使用在军事和隐私窥探等相关的领域,他不想做恶。先不讨论具体的价值观念吧,其实yolo算法本身是很实用的,技术无所谓好坏,只是看人们怎么使用它了。这算是另外一个话题了吧,我们先不在这里讨论了。

所以说深入学习相关的这些技术,即便是现在投资界存在一定的泡沫,技术本身也是实实在在的进步,不然美国也不会闲着没事儿来限制我们了。这些技术跟那些所谓的区块链元宇宙纯粹炒概念不一样,即便是泡沫也是投资于人类的技术研发,推动科技进步。更何况这些钱大部分都是市场上的自由资本,大家愿意搞泡沫,烧钱推动本来可能是科研相关领域的东西,来共同实现人类的技术进步,也不是什么坏事。

另外一个就是美国对我们的限制了,说实话算力上的限制确实挺让人烦的,但长远来看,十年二十年的维度上来讲的话,顶多也就是一时的阻挡,改变不了大势。况且对大部分真正有价值实用的那些模式识别和图形图像相关领域来说,对算力的要求并不是特别的强烈,这反而是一件好事。追求大模型,把大量的算力花在这上面,引领技术的进步,也许能得到一些很激动人心的结果,但实用价值并不高。

况且现在技术架构上大家都没有什么新的突破,算力不足如果能迫使我们想方设法去研究新的模型或者架构,也未必是件坏事。另外要是促使国内厂商硬件芯片方面进步那就更好

最后讨论一下国内的现状,很多人应该都能感觉的到,我们并不能算是技术的引领者,仔细观察一下可以发现,很多创新的思想和技术还是都发生在国外。我们刚刚开始发展起来,目前还是追随者的位置。但我们也可以发现其实很多人工智能领域重要的研究者都是华人,为什么他们在国内就没有能做出很好的成绩到了国外表现这么好呢?

这个问题很复杂了,我们应该看到欧美在引领人类技术进步方面已经积攒了好几百年了,吸引了全世界大量的优秀人才他们的大学相对的更有底蕴一些而且他们一直传承下来的科研以及交流合作沟通的整个理念体系都是需要大量的积累的。另外一个就是文化层面的或者说思想层面的,对于创新的一些无形中的整个氛围环境,这些都是他们几百年积累下来,在文化当中无意识的传承的,可能我们的汉语文化圈很难觉察得到对于受过大量教育和良好训练的华人来说,到了这个环境会不由自主的被他的文化给带进去形成正向的激励

对此我们并没有必要去妄自菲薄,也没有必要操之过急,随着时间的发展都会慢慢地改善。其实我们现在最需要适应的是要逐渐的从追随者的心态,变为技术引领者的心态只有心态上转变过去了,才能真正的引领技术的发展

然而引领者是很难的,因为毕竟我们已经吃过了很多追随者的红利。比如说GPS美国人搞出来就是从无到有,但我们再跟着做,其实已经知道这东西是可以实现的了,大部分核心技术也都透明了,它就是一个工程实现的问题,难度跟从头研发出来完全不是一个数量级的

我们的举国体制其实很适合作为追随者毕竟解决工程问题,只要投入人力物力这是我们的优势所以我们不用担心美国人抢先研发出来一种技术只要他们研究出来了,我们知道是可行的,慢慢捣鼓出来的。

从无到有的研发会花费大量的时间精力,经历各种各样的失败,而且还需要各种的机遇和灵感,不是简单地堆人力就可以出效果的。况且它还需要人敢于去想,敢于去尝试,敢于去干这并不是太符合我们整个民族的性格

但历史已经发展到今天这一地步,从人才储备以及整个历史趋势来看,我们的崛起和美国的衰落都是已经在不断地发生当中了也许有一天美利坚不再引领人类技术进步这个担子就不可避免的落到我们身上,我们要为此做好准备

实际上我们需要更主动的去尝试作为引领者首先的转变要在心态上当我们决定做引领者的时候,就会从技术引领者的角度来看各种问题,去做各种尝试。我们站立的角度和心态,就决定了我们做事的想法和方式。先从心态上进行转变,剩下的文化和积淀,随着时间慢慢地积累,一步一步都会得到改善

这些改善和进步又从另一方面能够更好地去影响我们的心态和自信这就是一个正向的循环我们现在正在外围不断地向这个圈子的内部靠近,现在可能觉得有点困难和不知所措,但我们走的越近就会觉得越舒服越来越能找到感觉

最近因为产品上的一个想法,决定尝试下能否用transformer来实现。 于是专门抽出了块时间仔细的写写代码玩了一下。其实产品上想法的验证是一方面,最主要还是GPT之类的火了这么久,之前虽然简单地了解过背后的原理技术,心里总是想找个时间写代码跑跑训练小模型试试,几个原因叠加在一起吧,最近也是难得抽出来一大块时间,仔细地跑了一下。

俗话说得好,纸上得来终觉浅,绝知此事要躬行。只有自己真的尝试去实现了,才能更深刻的把握其中的原理细节,搞清楚为什么要这样设计,发现当中的细微精妙之处,才能更好的去扩展应用和改进。 我这段时间不停的写代码调试训练的过程中,大脑中不断地不自主的索引到这句话,感触颇深。

另一个方面,自从毕业以后,游戏和图形图像相关的技术搞得比较多一点,NLP之类的就基本没怎么搞过了,很多新技术都没有具体的去了解过,也是趁着这次机会详细的又深入学习研究了一遍。

整个过程差不多花了半个多月的时间,超出了我当初打算投入的时间不少,大部分都花在了研究一些技术的细节上面,需要阅读很多资料文章甚至论文才能彻底搞明白。不过回头评估一下,我其实是很开心的,并没有觉得时间被浪费掉,而是很强的获得感。

好了,下面进入正题。

既然是测试评估,那就要写一个程序来玩玩,什么样的程序呢? 因为transformer最早是被用来解决机器翻译问题的,所以我用来试水的代码也是一个翻译的程序,比如把汉语翻译成英语,这是很正常的想法,我也确实这么干了,使用大量的英语汉语对照翻译的句子来对这个模型进行训练,翻译的效果看起来还不错,可以看后面的几个测试输出。

然后,很自然的,我顺着就想,能否直接把汉语现在的白话文翻译成古代的文言文呢?这个也挺有趣的。

于是说干就干, 直接找了一堆古文和现代文对照翻译的语料库。 主要是一堆《史记》《汉书》之类的史书。都是类似下面这样的句子,有古文和现代的对照翻译。

古文

现代文

子能以燕伐齐,则寡人举国委子。

假如您能以燕国现有的力量讨伐齐国,那么,我愿把整个国家托付给您。

祸与福同,刑与德双。

灾祸和幸福同在,刑罚和赏赐相成。

其后诸侯共击楚,大破之,杀其将唐眛

在此之后,各诸侯国联合攻打楚国,大败楚军,杀死了楚国大将唐眛。

秦将章邯破杀项梁也,沛公与项羽引而东。

这时秦将章邯打败项梁的军队,杀死项梁,沛公与项羽率军东归。

禹曰: 予娶涂山,癸甲,生启予不子,以故能成水土功。

对这种人我决不听之任之。 禹说: 我娶涂山氏的女儿时,只经四天婚期就又去治水了,我的孩子启从生下来我未曾抚育过,所以才能使平治水土的工作取得成功。

 

整本史记,古文和现代文的对照大致有三万行左右,我用的数据并不是很精准,比如上面的对照翻译中,最后一个现代文,第一句对这种人我决不听之任之。”显然是错误的,应该删除掉,但是整个训练的语料是在是太大,全部去手动改不现实,毕竟是玩玩,凑合着用也不太影响。

不过既然都写代码训练了,处理加载语料的时候顺手统计打印了一下史记里面每个字出现的次数,下面这个表是前一百个频率最的字,按降序排列,每个字后面跟的数字是总共出现的次数。

1

55459

29482

13308

11163

8118

7612

7443

7338

9

6561

6411

6005

5470

5309

5083

4705

4670

17

4505

4191

3778

3335

3202

3149

3136

3062

25

2813

2788

2642

2453

使

2426

2397

2376

2324

33

2323

2284

2255

2214

2203

2189

2132

2106

41

2057

2052

2026

2025

2010

1985

1979

1908

49

1897

1888

1880

1879

1792

1744

1685

1632

57

1589

1578

1576

1574

1521

1514

1440

1423

65

1421

1406

1403

1399

1382

1335

1324

1313

73

1309

1281

1279

1273

1268

1268

1258

1256

81

1229

1213

1205

1191

1190

1181

1177

1176

89

1161

1144

1126

1120

1112

1100

1091

1078

 

之字出现的频率高是很正常的,但我没有想到王字出现的频率居然这么高。 整体来看,王侯将相出现的频率跟之乎者也差不多了。也难怪一代目会感叹说,二十四史写的都是帝王将相。 

至于代码实现上面,我写了好几个不同的翻译模型实现,一个是用lstm,另一个是lstm加attention机制,还有一个是gru+attention,最后一个是transformer的实现。 

使用transformer模型的代码总共有五六百行,我就不贴出来了,毕竟没几个人愿意看。就是一个经典的seq2seq模型,或者说encoder decoder程序,搞过机器翻译的应该很容易理解,自己动手写也不难。

先看看单纯lstm的输出,我只使用了一层并没有堆叠,训练数据量很少只有一万多行,而且很快就训练完了

下面是它的一些测试输出,,最后数字前面整个句子字数

这句话如果用古文来说,应该是什么意思呢? 20

侯如君,是言也?

——————————-

我要骑着马去外边。 9

行无欲辱。

——————————-

这个东西其实一点意思都没有。 14

若兵皆也,无后。

——————————-

你不要说话。 6

比听。

实际上单纯的lstm效果很差,它似乎简单的理解了一些语义,翻译有一点沾边的信息,但是还差的很远,不算像样的句子

然而lstm加上attention之后效果有一个非常明显提升,下面的例子可以看到句子明显靠谱可用

这句话如果用古文来说,应该是什么意思呢?20

即诚用古文法,何也乎?

——————————-

我要骑着马去外边。 9

引兵车党。

——————————-

这个东西其实一点意思都没有。 14

者诚相恐都不听。

——————————-

你不要说话。 6

论默 

所以说attention机制非常重要统一关联整个上下文

根据测试lstm感觉gru废话多一些可能是因为多了一个存储单元缘故理论上效果应该gru要好但是测试结果发现其实差不了多少可能是训练的数据量不够多到足以拉开差距吧

我只用了史记里面一部分的数据来训练,主要是因为lstm很难训练,它的时间复杂度会随着序列长度增加而线性的增加,所以我把token序列的长度限制在24,这样就裁剪掉了一半多的数据,另一个原因是我发现用CPU训练的速度比GPU还快,应该是因为他的序列是有线性的依赖关系,无法并行加速如果使用大量的数据的话,效果可能会好不少

关于lstm就说这么多吧,下面该我们讨论的主角transformer登场了 

transformer模型我的embedding大小是256,token序列长度36堆了两层encoder decoder总共参数9128201差不多一千万左右样子输入数据使用[史记,汉书,后汉书,三国志,魏书,晋书,北史,南史,周书,北齐书,宋书,南齐书,梁书,陈书,隋书,旧唐书,新唐书,宋史,元史,明史]等史书里面序列长度大于36的对照组剔除一共有360671对句子,古文加现代文的token数量加起来大致也在一千万左右对于模型来说数据量还是有点偏小不过大致差不多凑合了

在我的mac m2的mps设备上跑了几个晚上,几个测试的大致输出如下

这句话如果用古文来说,应该是什么意思呢? 20

greedy  若以古文意,何宜言?

beam  [‘‘, ‘‘, ‘‘, ‘‘, ‘‘]

苟用古文言,何宜意?

苟用古文意,何宜言?

苟用古文言,何宜言?

——————————-

我要骑着马去外边。 9

greedy  我骑出边外边外,我骑诮马乘边外,吾往往外。

beam  [‘‘, ‘‘, ‘‘, ‘‘, ‘‘]

我骑出边外边外,我骑诮马乘边外。

我骑出边外边外,我骑诮马乘边外,吾往外。

我骑出边外边外,我骑诮马乘边外,吾往去。

——————————-

你说,这个东西难不难呢? 12

greedy  汝不难,难乎?

beam  [‘‘, ‘‘, ‘‘, ‘‘, ‘‘]

汝不言难,难难乎?

汝不言难,难难乎? 

汝不言难,难遽言是,难难乎?

——————————-

这个东西其实一点意思都没有。 14

greedy  其无他意实者,皆东西无他意。

beam  [‘‘, ‘‘, ‘‘, ‘‘, ‘‘]

东西皆无他意实意者。

东西皆无他意实,不果。

东西皆无他意实,不果也。

——————————-

你不要说话。 6

greedy  汝勿言,毋言。毋言。

beam  [‘汝’, ‘毋’, ‘卿’, ‘尔’, ‘勿’]

汝勿言,勿言。

汝勿言,毋言。

汝勿言,毋言。毋言。

——————————-

我要睡觉了。 6

greedy  吾觉寐,我欲寐寐矣。

beam  [‘‘, ‘‘, ‘‘, ‘‘, ‘‘]

吾觉寐,我欲寐矣。

吾觉寐,我欲寐寐。

吾觉寐,我欲寐寐矣。

——————————-

时间过的很快。 7

greedy  寻过之日久,甚。

beam  [‘‘, ‘‘, ‘‘, ‘‘, ‘‘]

寻过之。

寻过期之。

寻过之日久。

——————————-

我昨天经过一个村庄,那里的人都很友善热情,我在那里吃了一顿饭。 31

greedy  昨日分顿庐,昨有所饮食,昨有所具十囚。

beam  [‘昨’, ‘臣’, ‘其’, ‘我’, ‘今’]

昨一饭之在藩庄昨,有善者,有所具。

昨一饭之在藩庄昨,有善具者,有所具。

昨一饭之在藩庄昨,有善具者,有所具者。

第一句话是输入,最后的数字是整个输入的字数,下边是输出的翻译。

实际上Transformer的解码器是一个字一个字输出的,一开始给一个开始的标记,他输出第一个字,然后再把这个开始标记加上输出的第一个字当成输入,继续迭代,它再输出第二个字,再把这三个当成输入,然后它会输出第三个字。如此往复循环,直到输出整个句子或者达到最大长度限制。

实际上输出的也并不是一个单独的字,而是所有字的每一个可能性概率,这就牵扯到一个选择的算法。通常有两种策略,一个是greedy贪心算法,也就是说每次都选择输出概率最大的那个字,最终组成一个句子。上面的输出前面写着greedy的就是这个算法。

另一种策略叫做beam search。他大致原理是选择若干个比如说前五个概率最大的字,然后每一个作为输入再生成下一个输出。如果直接展开搜索不加限制的话很容易形成指数爆炸,因为第一次是五个,第二次就是25,然后第三次就是125了。句子很长的话很容易就形成一个天文数字,所以需要进行一定的剪枝操作,在前五个的输出生成两个字的25个输出中选择连续概率最高的前五个,作为下一次输入,然后对于三个字再选择连续概率最高的前五个,这样不断的迭代下去,最终会得到概率最高的前五个句子的输出,这个算法对于树枝每次都进行裁剪,形成一个五个的束,所以叫Beam search。因为他的概率选择是基于整个句子的,一般来说效果要比单纯的greedy策略好一些

输出里边前面写着beam的就是这个算法实现。对于第一个字,我把前五个最大概率的字都打印出来了,就是后面中括号里面的。为了便于阅读最终的句子只打印出了前三个。

可以看到,已经大致能翻译出来不错的结果,比如对于第一句,“这句话如果用古文来说,应该是什么意思呢?”他的翻译效果看起来还不错。而且对于beam给出的几个最大概率的字,用每一个看起来都是一个可行的选择。‘若用古文言’, ‘苟用古文言’, ‘如用古文言’, ‘夫用古文言’, ‘诚用古文言’都是毫无违和感的。

但对于其他的一些句子,效果并不是特别好。特别是最后那句很长的句子他并没有真的完全get到整体的语义。

其实稍微思考一下就能发现改进空间还是非常大的。比如进行中文分词。因为我是直接把单独的汉字嵌入做词向量的,这样就会把很多词语给硬生生的拆分开。比如“东西”这个词,翻译成古文可能用“物”字来对应。但是如果是字符级别的直接训练,Transformer模型是难很建立一对应关系的,当然足够大的数据,有东西和物两个对照翻译的话是可以输出相应的效果。但是我的训练数据集显然偏小,而且这样大量的词语一一对应的情况非常少,因为东和西两个字作为指代方向在古文中大量的出现,所以训练的结果输出中很难把这两个字作为一个词当成整体来看待。

于是我尝试简单的进行一下分词试试,很快就发现这并不可行。汉字大致有几千个,但要是词的话至少也有好几万。,这样会直接导致embedding层扩大一二十倍。本来参数都有几百万了,训练数据输入都偏小,无法使得模型很好的拟合。做了分词之后一下子就飙到了好几千万,这在我本地电脑上训练成本实在是太高了,内存消耗和时间消耗都增大了一个量级。我甚至都产生了要买一块儿4090显卡的冲动,24g的显存加上70tflops左右的算力应该玩儿的比较舒服一点。

还有一个优化方式是对大量的词语古今对照做成一张表,对模型进行预训练,这样他就能更清楚的理解和翻译了,这张表很可能包含几万甚至十几万的对照翻译。我搜了下,好像有标注好的语料库,但并不是特别好找简单一下后就放弃了毕竟我只是玩玩。

另一个优化方式是,对encoder部分进行单独的训练,因为我们有大量的汉语现代文的语料,通过mask之类的模型就可以把编码器部分训练的足够的好,然后再用古文和现代文的对照训练最终的翻译模型,这样的效果应该会好很多。

正当我准备单独训练encoder的时候,突然意识到一件事情,那就是BERT。这不正是我准备要训练的东西吗

BERT是Google几年前发布的一个训练好的大模型,他并不是使用完整的transformer,而是仅仅使用了encoder的部分,这可是一个使用大量的数据和机器训练出来的一个经历过实践验证的大模型,我直接在他上面加个decoder就好了,这简直就是站在巨人的肩膀上,实在是太爽了!

实际上利用训练好的大模型对特殊的使用场景进行二次训练是非常正常的一个行为,甚至有个专门的术语叫做fine tuning,我们一般翻译成微调。

事实证明我过于乐观了,bert跟今天这些动辄几百亿参数的大模型比起来虽然相形见绌,但他好歹也是个大模型,在我本地机器上跑实在是太力不从心了。

bert训练好的汉语模型的并不是太多,我找到了一个最小的模型,堆了12层编码器,词向量的维度是768,输入序列有128token。我按照这个数据实现的decoder一下子就有了一两千万的参数量,这还是把层数砍到只有两层的情况下。

我一开始直接把bert的输出连接到decoder上,输入了一本史记进行训练,结果直接导致内存飙满,操作系统不停的进行内存和盘的swap,不到一个小时就写了一两个tb的数据量,我只能停止训练下去了,这么搞下去直接就把ssd写废了。

于是我想到了一个简单的优化策略,既然训练数据是固定的,那么bert的编码输出也是固定的,我直接预先把这些现代文的句子用bert输出后写到文件里,然后用这些输出单独的训练解码器,这样训练过程中就不用bert参与了,可以节省不少内存。

事实上这些数据量特别大,我只把史记,汉书和后汉书转换了一下,整个过程花了几个小时,pickle之后在磁盘上占了134g的大小

加载训练过程同样发现实在是太耗内存,经过尝试,我只使用了汉书的数据,裁剪过长的句子后只剩下3句子左右,才能全部加载到内存而且不进行大量swap

下边是bert+decoder训练后的输出beam search懒得单独实现一次了所以下面看到有一个None

这句话如果用古文来说,应该是什么意思呢?20

greedy何以古文?

None

——————————-

我要骑着马去外边。 9

greedy我当乘马。

None

——————————-

你说,这个东西难不难呢? 12

greedy君何用? 

None

——————————-

这个东西其实一点意思都没有。 14

greedy其来无意。

None

——————————-

你不要说话。 6

greedy君无言。

None

——————————-

我要睡觉了。 6

greedy臣敞寐矣。

None

——————————-

时间过的很快。 7

greedy日月骛速。

None

——————————-

今天和明天的区别。 9

greedy今、明之异也。 

None

——————————-

写一段话记录一下整个事情的经过。 16

greedy令言举事。 

None

——————————-

我昨天经过一个村庄,那里的人都很友善热情,我在那里吃了一顿饭。 31

greedy臣今日过邑,皆有友善。

None

bert的效果看起来更有潜力一些毕竟我只用了很少的数据,要是把大量的史书加载进来效果应该会更好,可惜我本地的电脑也只能到这个程度了,不过要是花费大量的时间慢慢优化应该也可以,我毕竟只是玩玩儿,实在是不愿意投入更多的时间精力了。

真的要想玩儿的非常开心,感觉至少要专业的a100或者h100了,然而这些卡买一块儿都至少要一二十万,更不要说英伟达对我们禁售了。 

整个过程大致就是这样吧,我花了大量的时间精力进去,整个过程当然玩儿的还是很开心的。虽然最后对于计算力的限制有点儿郁闷,但我觉得应该不仅仅是我自己遇到的问题即便国外那些大厂像openai或者facebook之类的同样有算力的焦虑他们的模型更大对算力的需求也更大,毕竟参数越多效果越好,facebook最近发布的llama3700亿个参数,在将近5万块儿h100上面进行训练,花了640万gpu小时,这些算力看起来是非常恐怖的,而且这远不是结束,整个业界还在谋划着更大的模型,更强的算力。

最后讨论一下transformer模型的达到效果极限。本来是放在这篇文章里一起写的后来发现太长,于是拆分了出去,成为了另外一篇单独发布了。

 

PS:另外附上transformer训练英文翻译成中文程序输出,我堆了两层,序列长度是16,一共有八百多万个参数,我使用了五万多行中英文对照翻译语料进行训练相对于参数来说训练数据实在是太少,并不能充分拟合

英文直接空格分词也没有stemming操作,因为最后一个标点跟挨着的词组合在一起导致词汇表大量增加,我直接把结尾的标点给删掉了,这可能导致比如之类疑问句不太识别。毕竟是玩玩,我太懒不想优化太细致

然而翻译的效果看起来文言文翻译好不少,我猜应该是因为测试数据都很短且中英文的语法对应比较简单。另外汉语本身有大量的一字多义造成的映射困难,每个字和词拆分的可能性太多 下面一些测试输出

i love sleeping 15

我爱睡觉。

——————————-

i love sleep 12

我爱睡觉。

——————————-

who are you 11

你是谁。

——————————-

you are stupid 14

你很笨蛋。

——————————-

it seems bad 12

看起来很糟糕。

——————————-

it seems not bad 16

看起来不错。

——————————-

what is the difference between seem and seems 45

“看来说,哪多点是点。”

——————————-

he goes to school 17

他上学。

——————————-

are you serious 15

你是认真的。

——————————-

are you hungry 14

你饿了。

——————————-

i am feeling good 17

我觉得好看。

——————————-

i am fine 9

我很好.

——————————-

call me when you get home 25

你什么时候给我回家。

——————————-

please let me know if you need my help 38

怎么办想都亲就了。

——————————-

what is your name 17

你叫什么名字。

——————————-

i want go back 14

我想回去。

——————————-

time to go 10

时间到了。

——————————-

这两天有点感冒跟去年疫情放开后新冠感染很类似应该是流感或者再次感染吧。

从昨天开始喉咙就一直很痛晚上开始流鼻涕睡觉的时候发烧头疼晚上来回醒了好几次浑身都是汗第一次醒来做了个噩梦。

今天来头疼浑身酸痛无力什么都干不进去,于是我就在床上躺了一天一直在思考睡眠和做梦的一些问题这篇文章就是这些思考的一个简单记录。

先看看睡眠生物界的大部分动物都进化出来了这种机制。他的根本原因应该起源于我们的眼睛感光机制和地球形成的白天和黑夜等晚上看不见东西的时候,整个生物世界几乎都平静了下来这时候机体就可以进入某种修复状态如果把我们的身体看成一个精巧的机器人的话,那么晚上的时段就是在维修保养。

简单的维修保养只要躺在地上静坐不动就可以了我们为什么要失去自我意识,进入所谓的睡眠这种状态呢?实际上失去意识对很多动物来说是很危险的因为在这个过程中他们很可能遭到其他捕食性动物的攻击。

这很可能是我们大脑的运行机制导致的。假设我们大脑的神经元之间的突触间的递质不停的进行传递以及神经元上电位的流动变化一个复杂网络形成了某种电和化学反应的一个复杂的过程我们把这个过程产生的不停的思考的自我认为是意识的起源的话那么这个复杂的电和生物化学反应过程很有可能产生某种杂质或者说反应输出的垃圾副产物。

这些副产物很有可能无法在这个过程进行的当中清除掉必须关掉整个反应过程才能执行一些清理修复工作。这也许就是我们必须睡眠的原因我们看一些场景比如说在中午很累的情况下稍微打个盹儿就能恢复精神状态。这极有可能就是在自我意识关闭的那个短暂间隙,大脑执行了一些垃圾清理工作。

如果我们仔细的研究这些垃圾物质的产生机制以及大脑的代谢过程,很有可能发现一些大脑运行机制的起源以及对自我意识如何产生这个深刻的哲学问题提供更多的科学论证这需要医学和生物科学界更多的努力和投入我们现在的技术手段毕竟还有限。

我们再研究一下大脑的结构很多东西是特别复杂的我们举个例子来类比一下比如我们有一个简单的下棋程序,他可以下过人类的大部分选手我们做一个简单的机器人把这个程序放在他所谓的头部的大脑位置当然这个程序是在一块儿具有存储和执行单元的芯片上运行的我们模拟出来几个简单的机械的手可以在棋盘上进行操作,看起来是一个有点儿简单智能的机器人的样子。

如果这个机器人被某种外星人发现了,他们拆开这个机器人尝试研究这个机器人具有的一些简单的智能的来源于是就把他的大脑也就是所谓的芯片给拆解开研究里边的构造细节那么他们能够发现什么呢?

他们无非是看到一些各种各样的沟槽和掺杂构成的pn结形成那个所谓的晶体管和门电路罢了这些门电路构成了我们所谓的控制和存储单元通过精确的电流和时序来形成某种程序过程

但是对于不懂我们计算机基本原理的外星人来看,他们只看到电流在这些所谓的复杂的电路结构中流过就产生了看到的所谓的简单智能很难从电流本身去拆解还原出来我们整个程序和复杂系统的构造。

引用莱布尼茨的一段话很早以前看到的,我忘记原文出自哪里了大致意思是如果我们可以把人类的大脑放大,比如说就像一个磨坊的大小我们可以清楚的看到里边每一个细胞和神经元之间的连接构造这样我们可以从中看出来我们大脑思维的过程是如何产生的吗?或者说我们可以从中找到那个所谓自我意识或者心灵的那个东西吗?不是的,我们什么也看不出来。

也许我们可以尝试从另一个角度,也就是说从顶往下的角度来研究大脑的结构,也就是从我们自己的思维本身里的一些概念原理推理的过程进而尝试去研究我们大脑产生智慧的本质。同样是莱布尼茨他曾提出过构造一种通用的人类的语言不同于我们的汉语英语这种语言是非常精确的,每一个都对应我们大脑里的相应的概念。我们可以用这种语言进行精确的逻辑推演一些概念会被更基础的概念组成或者推理出来这就形成了我们整个人类的智慧体系甚至可以进行思考推理未来更复杂的东西。

然而我们多年的尝试表明这个语言是很难被创造出来的在某种程度上,它类似于我们现在所谓的形式逻辑的哲学分支或者更具体一点,它形成了我们现在所谓的谓词演算和数理逻辑的概念和学科,也算是现在人工智能的一个分支吧有兴趣可以研究一下。

讨论的有点儿发散了,我们再回到一开始的话题讨论一下做梦相关的东西吧。

我们为什么要做梦呢?以及大脑是如何产生梦境的各种机制呢?

也许做梦有一定的生理上的意义比如巩固大脑的某些功能或者强化记忆之类的又或者也许他就是生物进化过程中为了等待天亮而形成的一种避免过度无聊的机制。

有一种说法是做梦其实是早期生物在尝试对各种危险环境的复盘比如在梦境中尝试对其他生物的攻击进行有效的反抗或者逃跑类似一个虚拟的训练过程环境,不过这个说法可能还有待更多的科学验证

也可能梦境本身没有任何意义只是是生物进化过程中的一个副产物而已

我们再讨论一下梦境产生的机制。

实际上做梦的过程中,我们的自我意识已经是被运行起来的了跟深度睡眠不同这时候身体处于一种警戒状态很容易被周边环境的声音和震动惊醒。

做梦的过程跟现实过程的差别其实并不大我们可以很清晰的感受到自我的存在,并进行各种判断选择跟现实不同的只是梦里边输入输出是大脑模拟出来的比如我们的眼睛看到和耳朵听到这些所谓的输入这时候是被屏蔽掉的。我们在梦境里看到和听到的都是大脑模拟生成的假信号,同样我们的手和脚这些运动器官的输出也被屏蔽掉了,我们在梦里会生成一些身体的假象尝试运动的时候会看到这些运动输出被执行。

也许大脑里有某个功能单元我们姑且把它称作梦境生成器吧在做梦的时候他会接管我们身体的输入和输出随机的产生各种各样的梦境。

实际上这个功能单元可能并不复杂他生成梦境也不是通过自己本身产生的而是在梦境中我们的自我意识想到的一些东西或者念头这个梦境生成器这些念头里边随机的挑选一些概念想法然后从大脑里检索各种各样曾经有过的场景拼凑出来的一个梦境场景然后我们的意识思维根据这个梦境不停的去思考想象一些可能的新的想法念头这个生成器觉到这些想法念头进而拼凑生成新的一些梦境于是这个循环过程就不断的生成了连续的梦境。

因为这个生成器是根据我们在梦里大脑的想法随机拼凑合成的一个连续过程所以我们的梦有很多是非常不符合逻辑的但是他的场景都是很真实的从我们现实生活中选择拼凑生成的,当然有一些各种各样拼凑出来的奇怪的东西。

所谓“日有所思,夜有所梦”这个生成器就是根据我们的念头,从我们曾经见到过的各种场景中收集拼凑所以我们在梦里看到的大部分都是现实场景中曾经发生过的或者很久以前发生过的或者看到的自己没有意识到以及这个生成器通过各种拼凑组合形成的各种各样奇怪的生物和事物。

其实我们可以通过仔细的观察我们的梦境,然后去研究这个梦境生成器的原理机制的。这可以作为我们的医学或者心理学的一个课题有些人可能会不以为然,不认为这是什么值得研究的东西。然而所谓真正的科学就是凡事都去较真。真的去较真了,仔细的去推理研究发现很多东西的运行理论和机制可能都是很简单的。

好了基本上就这些了这篇文章就是简单的记录一下几个琐碎的想法可能看起来没那么连贯

又到过年了,今年是农历龙年。龙这种传说中的生物,如今已经成为了我们中华民族的符号象征,今天我们来认真讨论一下的真正起源。

任何传说都基于一定的事实基础,我们的先人不太可能凭空创造一种神秘的生物,即便是神话,那也要有最初的事实基础内核原型,然后才能在上面进行各种演绎想象

一种说法是龙起源于蛇,它的形象是很像的。在我看来这种说法的可信度并不高。蛇是一种很普遍的生物,而且很招人讨厌,人类本能上厌恶这种生物,很难想象我们的祖先会敬畏崇拜它。

而且我们的祖先是见过蛇的,并给他取了一个叫做蛇的名字,那就说明它跟龙没有任何关系, 龙这个字的出现即便不比蛇早也不会比他晚, 这件事上是没有任何含混可言的, 即便是巨大的蛇,比如说蟒蛇我们的祖先也不认为他是龙并专门给他取了蟒这个名字。

而且无论怎么含糊,龙有爪子,这一点是确凿无疑的,这跟有本质的区别

还有另一种说法,就是龙起源于鳄鱼,后来华北平原的鳄鱼灭绝了就成为逐渐演化成后来的龙的形象了。这个说法看起来似乎有点道理,而且鳄鱼是是水生动物,比较契合。然而,古代鳄鱼是有明确记载的,它的名字叫鼍,鳄鱼皮被用来做鼓,诗经里有“鼍鼓逢逢”的记录。

我们的汉字是一种象形文字,透过几千年的历史,即便很多东西没有文字记录下来,我们单纯分析文字符号本身就可以找到一些蛛丝马迹。

比如刚才说到的鼍,这个字的字形本身就很像一只鳄鱼。我们再举一些其他例子看看。

当年在商周旁边的一些少数民族部落,每个部落都有一个符号文字来对他们,分别是东夷,西戎,南蛮,北狄。演化到了今天这些词已经被用来称作那些落后文明部落了,甚至用来贬义指代外部的敌人,比如蛮夷。晚清刚接触西方先进技术的时候就说,师夷长技以制夷,包含了一定程度的自大,又觉得对方好像更厉害一点,但嘴上却又不愿示弱。

夷这个字,甲骨文可以明显地看出是一个绑着绳子的箭矢,即便是现在的字的形态,也可以拆分为一个拿着弓的人,这个字很明显说明了东边的部落喜欢拿弓射箭。他们的战斗力并不是特别弱,比如当年商就是因为征东夷人而国力大损,西周崛起并取代了它,这就是我们都知道的武王伐纣的故事了。

狄这个字就更形象了,甲骨文是一个人一只狗,金文则是一堆火旁边一只狗,今天这个字也是火的旁边有一只狗,非常形象生动的描述了北方少数民族的特征。

蛮字是上面两边挂着丝,下边有一条蛇,这表明了南方少数民族的特点。

戎这个字是戈和十构成,代表了矛戈和盾牌,很有可能是说西北少数民族的战斗特点。不过这个字后边演化的意义比较多,指代战争征伐,还有戎车之说,这里我们先不讨论更多的细节了吧

这些字都很形象的表明了周边少数民族部落的特点。虽然今天有一些贬义吧,但周边这些少数民族在历史上多年的融合征战中,都已经成为了中华民族的一分子,我们今天大部人的基因里边很有可能都包含来自他们的一部分。

说这么多,只是为了表明汉字本身就包含了很多信息。另外还有一个就是每一个部落都会有一个他们自己的符号或者图腾,这在古代是为了互相之间的区分,甚至很有可能在没有文字的时候,他们就把这些符号画在自己部落的旗帜衣服甚至额头上都是有可能的,以便跟其他部落进行区分。

那么龙是不是也是这样一个被一支部落用来当作自己符号的一个标记呢?我们历史上的传说是当年黄帝统一各部落,然后合符釜山,从各部落的符号当中取出一部分放在一起构成了龙这个统一的符号。不过这毕竟只是传说,根据现在出土的各种各样的龙的形象,甚至6000多年7000多年前的都有,这很可能早于黄帝的时间。釜山合符的说法似乎还需要更多的考证,或许将来考古可能会有更多的发现吧。

,铺垫了这么多,该说一下我的猜测了。我认为龙很可能是起源于我们早期的部落对恐龙的崇拜。

今天恐龙在全世界到处都能发掘出来在早期的华夏大地上,恐龙骨架几乎可以肯定曾被我们的先民们发现他们一定会猜测这到底是什么动物,因为他们从来没有在狩猎当中见过这样的事物。这种巨大而又神秘的东西一定是很符合早期那些祭祀崇拜的,甚至发现这些恐龙骨架的那个部落把这个骨架当做他们的神明和图腾。

我们看一下甲骨文和金文的龙字,它上面那个王冠是人为后来加上去的应该是为了彰显这种生物无的地位。这个字的形象本身可以看到一个巨大的张着大嘴的头颅还有一个很长的脊椎骨这跟我们今天挖掘出来的恐龙化石是非常相似的特别是头部

再看一下考古的发现比如河南濮阳出土蚌壳龙,从照片上看简直跟恐龙就没有什么两样只是身子略微细长跟今天的龙的形象更像这很可能是古代人对恐龙的脊椎还原不够导致的或者说恐龙的肋骨化石没有那么明显,从而显得躯体略显瘦了一些。

甲骨文和金文里边存在龙这个字而且他的形象非常具体这说明这种生物不是凭空想象出来的。而是从现实当中取材先民们是见过某种东西而创造出来的龙这种形象而且这种生物在自然界并不存在。恐龙是很好的符合所有这些特点。

恐龙有爪子有巨大的头颅,而且巨大神秘很容易让我们祖先崇拜蛇是永远不具备这些特点的

我们前面说过了,我们的汉字是象形文字,每一个符号都有对应的图形和意义,很难想象我们的先民们会无中生有创造出来龙这样一个符号。

而且按照我们的文献记载传说中的龙还有各种不同的类型比如应龙就可以飞刚好对应恐龙之中的翼龙。古代人可能也发掘出来出过各种各样的不同类型的恐龙骨架才给出了不同类型的龙的传说。

另一个线索是龙和水的关联传说中龙是水神。这很可能源于古代洪水过后把巨大的恐龙骨架化石冲刷出来了或者人们从干枯的河道底部发现的恐龙骨架进而把这种神秘生物跟水联系在了一起。

比如,“伏羲王天下,龙马出河,遂则以画八卦”。这个所谓的龙马,很有可能就是在河里边的恐龙化石骨架,这样看来河图洛书的故事也不是完全没有事实根据的。

再看左传里的记载:

秋,龙见于绛郊。魏献子问于蔡墨曰:吾闻之,虫莫知于龙,以其不生得也。谓之知,信乎?。

这个记载的事实据很高子说龙从来没有被人活着到过这里可以推断出所谓的龙见于绛郊就是恐龙化石骨架可能性可信度几乎都有百分之八九十。这个记载可能是最靠谱的说法了,而且春秋时代很早,他们更接近龙的真相。 “虫莫知于龙,以其不生得也”,这句话应该也是口口相传很久了,人们只挖出来过骨架,却从来没有捉到过活着的龙,但可以确定这种生物的存在。就像他们后面对话里说的,周易里记录了大量的“飞龙在天”,“见龙在田”,“群龙无首”等说法。“若不朝夕见,谁能物之?”

所谓“文王拘而演周易”,周文王的时代比他们还要早五六百年,当时恐龙化石可能更为常见,才有了周易里的大量记载。不过也有说法是周易里的龙指的是星象,这个还需要更多专业的研究考证吧,我没有足够的时间深究下去了。

这里顺便再给出我的另一个更有趣的猜测。早期的龙和祭祀有关,周易是关于八卦之类的占卜书,龙马出河也跟八卦有关,很可能八卦就起源于用恐龙化石的肋骨方位来预测占卜,跟烧龟壳牛肩胛骨类似。八卦里那些长短横杠跟肋骨非常相似,而且恐龙骨架这种神秘的事物,被早期祭司们拿去占卜非常合理。倘若果真如此,那么所有的传说就能放到一起系统的来解释了。再看伏羲王天下,龙马出河,遂则以画八卦”,就是一句非常客观合理的记录了,不禁让人感叹,古之人不余欺也。

随着时间的流逝,华夏大地上的人类活动越来越多恐龙化石的出土越来越少,越来越多的人们都从来没有见过这种化石,龙这个字的形象也越来越抽象,越来越接近神话传说。现在的龙其实更多是后人把自己的想象意向把加进去创造出来的一种幻想传说的生物了。

今天我们所说的龙即便是起源于对恐龙化石骨架的崇拜他的形象意义也早已不是当初的了,他是被我们无数代的华夏人民们不停的塑造重构形成了今天的意义和内涵以及他的神话和背后的故事成为了我们整个民族和文化的一部分。

至于未来它甚至还可能进一步的演化发展可能500年后,我们的后代画出来的龙跟今天的有很大差别这都取决于我们的文化发展以及创造出来新的各种故事和传说。

过年闲暇,研究下这么无聊的事情。其实这个话题是值得我们的考古和历史界仔细去研究考察的一个民族不要向前看走向哪里去,还要向后去研究从自己哪里来希望在不久的将来,我们的考古发现能给出更多的解释吧。不管怎么说过年讲的是开心快乐讨论一下这么应景的话题也是很有趣的。

这篇文章的想法源于前段时间教九岁的小侄女打游戏时的一些观察很喜欢玩宝可梦,可能是游戏简单节奏轻松吧,最重要的是里边的小动物,看到可爱的就舍不得一定非要抓到。

看着打游戏的时候我就在思考,有没有可能在现实之中创造出来一种皮卡丘这样的生物呢?当然不是说拥有像游戏中那样的电系技能,而是我们构造出一种外观上长得跟皮卡丘几乎一模一样的可爱的小动物,如果能搞出来的话,当宠物卖一定是非常有市场的,小孩子几乎没有抵抗力。

现在宠物店一只狗大致能卖几千块,按这个价格,皮卡丘估计全球至少可以卖出上亿只,想象一下,这是一个多么巨大的市场。更何况前期要是出货少,价钱甚至都可以做到几十万

我们现在讨论一下,是否真的能人工创造出来这样一种生物呢?

先说答案,很有可能,而且可行性可操作性极高。

在遥远的过去,人类就已经开始通过杂交来产生一些优良物种比如通过马和驴来杂交生成骡子这充分说明了人类尝试改造我们这个世界上现有物种的强大意愿通过新的物种来使生活更便利美好

植物上,我们做的尝试就更多了比如说我们最早的赖以生存的谷物都是对自然环境不停的选择优化培育出来的

比如说小米吧,他最初就是由自然界中的狗尾巴草被我们华夏大地的先民们不停的优化选择培养出来的水稻也是我们一代代的不停的尝试和杂交改良的基因来提高产量

另外一个我们经常使嫁接技术,甚至可以在一棵树上结出好几种不同的水果

以上这些例子都说明了人类自身尝试对上帝创造的这个世界进行一些破解改良绕开生物本身的进化进程培育改进符合我们自身利益的物种实际上,这个过程本来就已经发生了成千上万年甚至十几万年

今天我们有了新的技术和手段甚至可以绕开生物本身的生殖系统,通过对某些基因片段的编辑删除增加来为现有生物添加或减少一些生理特征和功能这个技术源自于对一些细菌内部遗传物质上的一些叫做CRISPER的回文重复序列的研究发现了原核生物系统的一些免疫机制这个机制通过识别入侵物种的一些特殊的基因编码片段记录在这些回文序列里,进而合成一些切割蛋白,把侵入的病毒基因给切碎进而保护自身

在切碎这些入侵序列的一系列蛋白质当中一个叫Cas9的蛋白非常有利用价值CRISPER结合起来我们可以实现对任意匹配序列点位进行精准的DNA切割而且如果提供一段基因的话细胞自身的修复机制会自动把这些基因插入到切口上这样我们就可以实现对遗传物质的任意增删了

通过巧妙的构造我们实现了一套被称为Crisper-Cas9的基因编辑工具,它非常的简单好用而且便宜这个剪切编辑工具对人类的影响是如此的重要以至于2020年的诺贝尔化学奖就颁发给了他

在中国也许你不太了解这个技术的细节但是应该会对和它相关的两个影响很大的事件有所耳闻一个是2016年河北某大学学术造假事件另一个是2018年深圳的基因编辑婴儿事件

好了没必要讨论Crisper-Cas9过多的细节了重要的是有了这个工具,我们就可以任意的突破生物杂交的限制,对某段基因实现精准的剪切拼接

尽管这个技术放到人身上有违伦理道德但是我们是不在意把它用在狗兔子身上的。

我们看一下皮卡丘我们在生物界里找几种具有它的特征的动物游戏里说它是一种鼠类毛皮又是黄色的,所以黄鼠狼最接近它的描述

但是他的体型又比黄鼠狼大且肥胖很多,跟猫差不多两只耳朵很长,有点像兔子行为风格则更像一只狗

如果有可能的话,我们把这些特征综合起来比如黄色的毛皮,长耳朵偏圆的体型以及边的标志性的两个点从自然界的生物里提取这些相关的基因把它综合到一只狗的胚胎上进而构造产生出一种长相类似于皮卡丘的生物

然而,直接构造远没有那么简单我们现在只是把一些特殊的特定的基因可以进行编辑插入要是构造一个复杂的协调的整个生物个体系统的话,绝不是简单的基因拼凑那么简单在生物生长发育的过程中,它有很多基因表达的一些特殊的精妙的细节,我们甚至有的都还没有能够仔细的去理解

然而,我们可以一步一步来就像我们驯化宠物一样,也不是一步到位的,它需要若干年若干代的不停的繁殖培育比如先把黄鼠狼的皮毛渐渐的转移到一只狗上面然后在这些狗的后代上面添加,比如说像兔子那样的耳朵然后调整它的四肢结构

Crisper-Cas9一经推出以后,就立刻得到了投资界的追捧几名创始人都拿到了风投并建立了自己的公司,然而若干年过去了,在资本潮水逐渐退去之后他们却很难盈利最近开始裁员并且砍掉了许多研发线

实际上,我觉得他们一开始就走歪了当然,医疗和制药领域是一个巨大的机会但是,基因编辑技术虽然可以解决这些问题,可是他对每一个人拥有不同的基因都要特殊的定制化,构造一个不同的编辑剪切方案才能去治疗而不像传统的制药公司,在工厂里可以大量的生产一个药品卖给所有人

解决这个问题的方式是换一个新的领域比如育种再比如我们今天讨论的这个构造的宠物市场

实际上,如果觉得构造出来一个皮卡丘实在是太复杂,需要好多年不停的研究积累才能生成这样完美的生物那么就可以选择从简单的方向起步

比如说我简单的搜索了一下发现好多人居然养黄鼠狼当宠物然而,黄鼠狼最让人忍受不了的是它的臭腺,很多人花大价钱去做手术把它摘除这就是一个很好的切入点直接用基因编辑的技术把黄鼠狼的臭腺给切除掉,甚至他们的后代当中都不会再产生这些东西这个品种的黄鼠狼放到宠物市场上一定很畅销至少能给一家初创公司带来可观的现金流,维持整个公司后续的研发运转

如果稍微用心一下,就会发现宠物市场上类似的机会要多得多我就一直奇怪,他们甚至愿意冒着巨大的舆论风险去编辑人类的胚胎婴儿却从来没有看到这个巨大充满利润的市场

当然,制药和解决人类自身疾病也是一个很大的市场做的好的话,不只是带来利益上的回报像什么糖尿病白血病之类的,随便解决一个都有可能获得诺贝尔奖得到巨大的荣誉但是从做一家企业的角度来看路要一步一步走先从简单而且风险低利润大的宠物市场下手公司维持足够的现金流,再去考虑那些困难的方向实际上,在改造宠物这个过程中,是会不停的带来大量的技术积累的说不定我们一不小心就能发现另外一个比Crisper-Cas9更令人激动的技术

既然我们能够造出来皮卡丘了,那么为什么这些类似的技术不能用来改周其他生物呢?比如说马吧,可以让他综合部分牛的基因对饲料不怎么挑剔,然后再加上驴的一些特性温顺和吃苦耐劳,这就产生了实际上更大的生产价值了。其他的类似生物像牛羊驴猪都可以进行符合我们自身利益的改造,进而产生更多的经济价值,以提升我们生活的便利性。

毕竟我不是专业的从业人员这些想法都是一时之间冒出来的,很多细节都没有仔细的思考这个领域也许有其他没有考虑到的困难吧但感觉大体方向是可行的

消费不只是简单的衣食住行人类每年花在宠物身上的钱是非常可观的这是一个至少万亿的市场未来没必要天天非要卷着计算机互联网从目前的趋势来看,在不远的将来生物技术很有可能集中爆发需要的只是几个简单的市场契机作为导火索市场上赚到的真金白银是激励研发的最大动力要是能够形成一个回馈的正循环就会不断激励在医疗,制药以及生物育种的各方面的突飞猛进那就是一个国家的新的支柱产业甚至引发整个人类文明的一场新的革命

好了随便写写记录一下都这么一大堆了,后边有空再讨论其他一些相关领域的想法希望在未来的一二十年之内构造宠物的这些想法能够实现吧到时候比如说逢年过节回趟老家给小朋友带一只活生生的皮卡丘过去想想都很有趣

最近韩国人的lk-99引起了整个世界的风暴,才过去了几天,目前从各方面渠道来看,很有可能是真的实现了室温超导。

很多我一直都在念叨着室温超导,翻下以前的博客估计应该还能找到记录,没想到这么短的时间居然很有可能真的看到它成为了现实。

lk99材料成本和制备都很简单,如果真的能大规模实现,绝对是人类历史上的关键转折点,即便后边无法实际应用,至少也能在理论上告诉人们这是可行的,进而促使人们寻找更多的新材料。

想象一下真实的超导材料能带来的未来吧,真的是非常令人激动,甚至让人兴奋的晚上很久都睡不着觉翻来覆去的想。

首先我们看看在机械方面的应用,有了超导体意味着我们可以电能几乎零损耗的获得超强磁场,电动机可以有极大的改善,不再有线圈结构非常简单,输出扭矩超强。

既然我们可以任意的把电流转换成磁场输出扭矩,为什么还要电动机呢?比如汽车吧,我们可以直接在轮毂上放几个超导体,然后在车身内部跟轮毂连接的部位交替的产生变化的磁场,直接驱动轮子转动,通过精密的时序控制来调整轮子的速度。有点像轮毂电机,但是他是无接触式的。可以直接输出超强扭矩,甚至可以通过反向输出来进行刹车,汽车的结构会变得非常简单然而却拥有巨大的动力输出。

甚至车身跟轮毂之间根本不需要接触,类似于悬浮挂在上面,这样可以无视地面凸凹不平带来的任何颠簸震动,比现在最好的空气悬挂还要优秀的多。

实际上磁悬浮列车一样可以非常简单的实现,但是汽车也可以方便的悬浮实现动力输出的话,未来很可能火车会变得越来越小众。

既然我们可以非常方便的把电流变成动力,以前不可能的东西都可以实现,比如类似于人类关节肌肉的动力装置,我们可以制造出来四足的机器人,我们现在各种挖掘机之类的动力装置上上常见的液压泵也都可以换成超导电磁来实现,力量输出和控制精度都能得到质的提升。

我们再看看在医疗方面的实现吧,现在的mri也就是核磁共振设备,需要一个巨大的机器放在房间里,每次运行都需要消耗大量的电力。其实它消耗的能量大部分都用在维持超强磁场上面了。如果我们有室温的超导体,低功耗的手持式的核磁共振设备是完全现实的。

比如我们在科幻电影里经常看到的,像star trek里那样,我们拿个类似于手机的设备放在在胳膊上扫一下,屏幕上就能实时的看到胳膊的内部构造,骨头,肌肉,和血管之间的层次,这对医疗行业来说是天翻地覆的变化。每个家庭和诊所都有这样的设备,任何疾病都可能在很早阶段就直接轻轻扫一下就发现了,极大的改善人类的生活健康水平,并延长人的预期寿命。

甚至说有了这样的设备,我们可以非常方便的来观察人体的血管组织构造,以及甚至动态的内部活动变化,这将带来医学科研方面上的巨大的进步,很多疾病和各种机体运行的原理都可以实时的观察发现,每个人每一个医学专业的学生都可以方便的去进行观察研究,这对生物科学发展带来的改变是天翻地覆的。

我们为什么只是简单的用这些设备来观察人体呢?同样可以检查各种各样材料的内部构造,无接触式的观察。比如说检查建筑的内部是否变形或者断裂,高铁钢轨是否内部产生了形变?汽车发动机坏了不用拆开直接扫一下就能找到出问题的地方,水果内部是否腐烂坏了?等等等等,可以尽情的去想象,这对各行各业来说都是革命式的进步,谁都说不了说不定哪个没注意的行业就因此产生了质的飞跃带来了二次的技术革命。

有了常温超导体,我们在核磁共振成像方面肯定会有日新月异的进步,绝不会停留在现在这种程度的影像精度。

我们再看看在能源方面的,超导体很有可能导致人类实现可控的核聚变。因为核聚变需要至少一两亿度的高温,只有加速到很高能量的粒子才能现实,这样发生反应的材料都变成了等离子态。我们需要构造一个超强的磁场来约束他们,这就是我们现在所谓的托卡马克。现在很大的能量都被浪费在维持低温超导磁场上面了,有了室温超导体,很可能导致我们实现可控制长时间点火的托卡马克反应堆,输出能量大于输入能量,进而实现可控的核聚变引擎。

跟裂变反应堆不一样的是,聚变引擎如果失控并不会导致爆炸或者泄露,如果他把周围的磁场约束给烧坏了,那么等离子体没办法被约束,很快就撞到周围的物质上,只要把引擎单独隔离开来,发生事故只是融坏周围的约束隔离装置,并不会产生任何其他事故。

实现了聚变引擎带来的革命性进展根本不用多说,人类从此将拥有用之不尽的能量之源,征服太阳系甚至迈向星辰大海都是有可能的。

很多人说超导体意味着零电阻的导线可以实现长距离传输电能,当然这是很合理的想象,不过要是仅仅把输电导线换成超导的那就太浪费了。有这种想法的人跟之前那个段子,乞丐问:“皇帝要饭用的碗是金子做的吗?”一样,是很类似的心理。

实际上有了超导体,我们很可能发明出来新的储存能量的装置,是我们现在锂电池的很多倍。磁场可以约束电子的行为,我们只要合理的设计或者甚至只是简单的在一些材料里掺杂,极有可能构造出储存能量巨大的电池。我们为什么还要用现在的发电站通过导线输入到家的方式呢?每户家庭都有一个能存几百度的电池,至少够一个正常家庭一个月使用的。不管是通过太阳能板,还是通过近距离的电网,可以实时的在电价能源便宜的时候动态买入充电到电池里,实际上根本不需要远距离输电,不开空调,用电不多的情况下甚至屋顶的太阳能板都够满足普通家庭的能量需求。

甚至有了这样的电池,我们为什么只是简单的固定的装在家里呢?直接把它装在汽车上,开到哪里都是一个移动的能量引擎,在野外随时随地都不会断电,家庭都没必要接入电网,把车开回家就够了,然后集体公共场所有一个给车充电的地方,甚至家里本身就是屋顶的太阳能板小型电站。

太阳每天照射地球,不是我们不想把这些能量变成电量储存起来,而是我们现在没有很好的装置设备来储存它们,实际上,我们的水电风电也很多都是浪费掉的,有了好的储能装置,可以极大的改善我们的能源使用率。

我们再看看在电子设备上的应用吧,新的材料不知道能否很容易的集成到我们现在的半导体制备工艺上去,如果可以,那就会带来芯片和集成电路的又一次飞跃式的发展,想象一下你的显卡或者手机CPU耗电只有原来的1/10甚至百分之一会是什么样的情况?

如果我们能使用这种材料构造出来新的门电路,那就等于是半导体行业的一个革命了。即便不是这样,我们也可以通过改善芯片上的导线互联或者衬底以及栅级等结构上的优化来降低整个芯片的功耗。

同样一些微型的电子器件或者传感器也会得到长足的进步,记住,我们手机是通过电磁波进行通信的,如果我们能够检测到,比如说现在电流的强度的1/10的电磁波,也就是说我们的手机的信号可以灵敏度增强了十倍,这意味着通信行业巨大的进步。手机基站可以极低的密度,然后又提供极远距离的通信。带来手机能耗的进一步下降,传输速度也能成倍的提升。

比如我们的无人机,现在只能飞几千米到十几千米远,如果传感器的灵敏度上来的话,可以进行几十甚至几百公里远还能保持高清图传,这是多么巨大的进步。当然也有不好的一面,很可能这让人类用来实现武器上,无人操控的远程飞机和坦克机器人等都得以实现,未来战争的形式很可能是类似于打游戏的机器人战争,这有利有弊吧,关键是看人类选择怎么来使用它。

我们有各种各样的传感器,这只是随便想到的有了超导体的加入之前很多想不到的领域很可能都能带来新的突破,特别是微型化,小型化的设备集成上面,很多感觉在科幻电影里看到的场景,很可能将来都成为现实。

好吧,想到的还有很多,已经快11点了,今天就写到这里吧,要赶紧睡觉了,后边有闲时间了再写下来补上。