过去的五年,人工智能已经是最热门的话题,从理论的完善到实践工具的丰富。慢慢发现,AI已不再是专属于实验室的一种研究,每一个对此有兴趣的人都能自己动手在自己的电脑上完成属于自己的研究。本系列文章希望从零起步,帮助建立从理论到实践的深度学习知识,而读者不必担心自己的知识储备,只要你会打开电脑从头开始看就足以完成学习。
万事开头难,实现人工智能的第一步,我准备先谈谈感知机(Perceptron)的实现。而为了在接下来的文章中使用感知机实现与或非门,在第一讲中我们先普及下二进制和与或非门。
真实世界的数字一般为十进制,简单说就是逢十进位,九块钱的东西进位就是两位数十块钱。而二进制进位规则是“逢二进一”,借位规则是“借一当二” 。题外话说一句,实际上效率最高的进位方式应该是以e进制进位,e是什么呢?他是纳皮尔常数,也会叫他欧拉数,约等于 2.71828,不用着急在我们后续的文章中会有关于e常数丰富的话题,你会发现大自然真的很神奇。接回二进制,有了这个规则,也就构建了大家都熟悉的计算机世界,只有0和1,用一个8位(bit)标示数字,十进制的1就是0000 0001,十进制的2就是0000 0010,十进制的3就是0000 0011。附送一个十进制转二进制的公式(来自百度):“除以2取余,逆序排列”(除二取余法) 。
那么与或非门(NOR gate)是什么呢?他是一种最最基本的数字逻辑电路,来实现与或非三种逻辑关系。我们直接用上面的二进制来做例子,假设有两个输入经过门之后有一个输出,门中的计算是依次对比两个输入每一位上的具体数字。首先是与门(&),我们输入二进制的1(0000 0001)和二进制的3(0000 0011)那么在门中的计算是依次对比,若是两者均为1则输出在该位上为1,1和3这两个数的二进制只有最右侧数为1,则最后结果是0000 0001,转成十进制是1,我们记做1&3=1。或门(|),指的是只要在对比的时候位置上有1则输出1,那么1和3在或运算之后就成了0000 0011(十进制3),记做1|3=3。最后是非门(^),如果两者数字不同则输出1,1和3的计算之后得到0000 0010(十进制2),记做1^3=2。
与或非在一般的业务代码中进程会用来做权限的掩码的计算,因为是最基础的运算,所以速度非常快。如果能明白二进制和与或非门,那么恭喜你,我们进入下一阶段了,用感知机来实现这种逻辑电路。