第一章 聊天程序

上一章 目录 下一章
王石,一个三流大学计算机专业的毕业生,毕业二年,一直在家待业,也不能算是待业,因为他还不时通过网络接一些编程的零活干干,并且专门做了一些网游的外挂,给自己的网游帐号和代练的帐号挂机。总的说来,日子还过的去,所以王石倒也不怎么想找工作。
今天起来已经是十点多了,洗漱一番后,王石巡查了一圈机房。机房在王石卧室的隔壁,总共有二十台新旧不一的电脑,有王石在学校里用过的P43.2的,以及在这两年里陆续买回来的双核、四核的机器,还有NVIDIA的Tesla这样的服务器。这些机器都是王石在这两年里通过接零活以及网游代练赚来的钱陆续买回来的。今天还有两台服务器要到。所以下午王石还得到物流中心去提货。
这些机器大部分都没有显示器,只有四台机器有,其中三只为17寸,一只为24寸。而所有机器都用千兆网联结成一个局域网。为了所有机器的挂机的需要,王石还特意申请两条四兆的宽带,所以能勉强应付挂机的需要。特别是那两台Tesla服务器,为了防止断电,更是配置了UPS。
为了弄这个机房,王石没少受家里人的埋厌。必竟要组成这么个机房,不仅要大笔的钱,而且需要花费大量的精力去维护。每个月的电费也是一笔不小的费用。不过,由于这些钱都是王石自己出的,虽然家里不高兴王石的不务正业,但是也不来管他。
无缘无故弄这么个机房干嘛?原来,王石在这个机房里运行着一个电脑AI,要说起这个人工智能程序,就得从王石还在学校的时候开始说起。
王石在大学里学的是计算机,大家都知道,大学里面学东西,一个靠自觉,一个靠学习的气氛。一个三流大学里面,学习的气氛肯定不会好的,幸好王石还是比较自觉的,再加上一点天赋,学得还算不错,特别是人工智能这一块下过苦功,对于这一块,基础是相当扎实。在大三时候开始,就开始偿试这方面的应用。
在经过长时间的实践中,王石不仅基础理论知识越来越扎实,而且也取得了不少成果。现在这些机器上运行的所有外挂都统一由那个智能核心控制。并且,王石还在不断地给它增加新的功能。
这个智能核心一开始是由一小的聊天程序发展起来的。
一开始呢,由于学校里开了人工智能的课程,当然啦,由于是三流学校嘛,老师水平肯定是不怎么行的,不过,不管怎么样,王石对这门课程是相当的有兴趣,虽然老师水平不行,但挡不住王石的热情呀!不仅把业余时间搭进去了不算,还牺牲了不少的休息时间,终算力气没白费,由于相当的投入,到课程结束的时候,王石不仅对这一块有了相当的了解,还决定用这其中的神经元原理编写一个带智能的聊天程序,一来能自娱自乐一下,二来也好能够实践操作,把这块吃透。
大家可能知道,也可能不知道,根据一个简化的统计,人脑中的神经元细胞大约在一百亿个上下,而每个神经元细胞又与几千个同样的细胞连接在一起,从而组成了一个庞大的神经元网络。这个庞大的网络通过神经脉冲的驱动,不停的运作着,从而产生了人的思维活动。从理论上讲,只要计算机能个模拟这个过程,那么计算机也就会产生和人一样的思维能力。当然实际上这是不可能的,由于这个网络实在是太庞大了,按照现在的情况来看,基本上是没有可能的。那单单需要的硬件就是一个天文数字般的存在。当然,王石不可能也不需要这么做,必竟只不过做个聊天程序自娱一下。
王石对手上收集的包括自己以前编写的关于神经元的源代码都不太满意,一个嘛,不太适用,二则,觉得这些代码都不够精简,修改来修改去,思路都受影响,所以,决定重起炉灶,自己编一个,也好方便以后自己改进。
既然重起炉灶了,王石又重新研究了一下资料,在翻资料的时候,王石在想,书上都例子大多都是神经元的个数一定的,要是神经元的个数能够按照需要进行增减,那么会不会好一点呢!还有这个连接也是要能增加或减少,那可能会更加符合实际情况。这个情况也要考虑进去。

最后,王石决定把程序分为两个部分,首先是核心部分,王石把神经元的工作模式编制了C语言代码,作为核心使用,把神经元包括其连接结点和各种参数以数据库的形式集成起来。这样的话,不仅核心和数据分开,可以方便各自备份升级,也比较容易扩展。
在王石初始设置了二十多条符合神经元格式的,能被核心模块识别执行的数据以后,再加了一个简漏的外壳程序,就算是一个聊天程序了。
看看这个简陋的程序,上面除了两个文本框以外,还有两个按钮。一个按钮上的字迹是表扬,另一个按钮上的字迹是批评。这两个按钮是用来给神经元程序作训练用的。
通过一定组数的训练,程序会自动慢慢调整各个神经元的参数和连结节点。当然啦,由于王石的设计,程序还会慢慢增减神经元的个数,因为刚开始,神经元的数量比较少,所以基本上只会增加,增加到一定程度的时候,经常使用的神经元的权值会越来越大,可连结的节点会越来越多,不常用的或不用的神经元由于权值越来越小而被淘汰。这与人脑子中的脑细胞实际情况是一个模式,比如经常运动的肢体运动神经就发达,不活动的话,运动神经就会逐渐萎缩是一个道理。
王石在上面的文字框中输入一个字或者词,程序首先会查找数据库中是否有这一词条,程序经过神经网络选择后,在下面的那个文本框中输出一字,然后,王石觉得回答还可以的话,就在表扬的按钮上按一下,答案不合适的话,就在批评按钮上按一下,这样的话,程序就会根据反馈回来的信息调整每个神经元的参数。
只要经过一定数量的训练,程序的回答会越来越接近王石想要的答案。当然啦,由于一开始王石设定的节点也比较少,这样也导致了一开始程序显得有点呆板,但是,也确实向着王石想象的那样开始表现得越来越聪明。
由于王石在神经元里面设置了一些相对基础的概念,比如冷热,长短,大小,快慢,亮暗,轻重等等一系列的概念,通过训练,不断增加丰富其他概念,比如面积体积,温度,加减乘除等。大部分基础概念都是王石输进去的,而大部分的扩展概念是在训练过程中,把各个概念关联起来所得到的。并以神经元的模式储存起来。
比如,训练的时候,王石在输入框中在输入框中输入“石头”两个字,程序首先会在王石设置的外挂语言库中查找“石头”这个词条,当然,这个词条有可能找到,也有可能找不到。找到的话,就把这个词条的内容输出,并把词条解释中的一些概念,与神经元里面定义的概念相关联起来。并在词条使用程度这个数值上加上1,没有的话,则程序会自动增加一条“石头”这个词条,然后由王石给它补充相关内容。
外挂语言库很小,是王石从网上下载的一个免费词典软件里面导出来的。所以,大多数词条解释都很简单的。这也方便了王石补充。
为了保证这个程序更好的运作,王石给它添加了语句断词和语法分析的功能。为了保证这些功能的更好运行,特地为增加了主谓宾的概念和定状补的概念。这些概念以神经元的形式定义在数据库中。
在经过较长一的一段时间训练后,王石觉得这个程序的表现相当有水平了后。就把它挂到了聊天程序上,有时候代替自己与人聊天。这可是王石相当得意的事情,因为在好长一段时间对,聊天对象都没有发觉自己在跟一个程序在聊天。本来,王石也就是抱着试试看的心情,因为觉得这个程序AI若是只有自己给它训练的话,不仅累的慌,而且成长速度也快不起来。只有让它在网络上学习,才能更快的成长。没想到这个程序在除了一开始还需要自己给它控制外(表扬或批评),渐渐得变得更加聪明起来,到后来,基本上的回答都是合适合理的。王石到后来都看得目瞪口呆。虽然这个程序是自己编写的,知道它的可成长性,但是也没有料到会有这么好的表现。本来王石打算把这个程序公开共享出来。现在王石已经改变主意,要把它给保护收藏起来。
书书网手机版 m.1pwx.com