周六玩跳一跳小游戏,人工模式下只能到三十来分,玩了一会儿颇感气馁,决定挑战一下自我,写了一个人工智能程序来玩跳一跳。
一、人工智能-人工神经网络
人工神经网络目前是AI的主流发展方向之一,是模拟生物神经网络的突触联接的结构进行信息处理的数学模型。
生物科学家认为:神经元的基本功能是通过接受、整合、传导和输出信息实现信息交换。通过树突与其他神经元连接,通过突触来传递数据。
以下是人工神经网络的历史
1943年,基于生物神经网络莫克罗-彼特氏神经模型(McCulloch-Pitts′neuronmodel)诞生。
McCulloch-Pitts模型的基本思想是抽象和简化生物神经元的特征性成分。这个模型不需要捕捉神经元的所有属性和行为,但要足以捕获它执行计算的方式。McCulloch-Pitts模型的6个特点中前面4点和之前总结的生物神经元一致,具体对应请见下图:
1.每个神经元都是一个多输入单输出的信息处理单元;2.神经元输入分兴奋性输入和抑制性输入两种类型;3.神经元具有空间整合特性和阈值特性;4.神经元输入与输出间有固定的时滞,主要取决于突触延搁;5.忽略时间整合作用和不应期;6.神经元本身是非时变的,即其突触时延和突触强度均为常数。
似乎上图就是人工神经网络的鼻祖了,是的,它比计算机行业还要古老。
从上述模型中可以依稀看到生物神经网络的原理:某个神经元,接收到不同突触传来的信号,将信号进行加工,最终转换为输出。
80年代,各方研究室都在研究如何制造人工神经网络,1986年出版了《Learning representations by back-propagating errors》,将BP算法运用在神经网络上,自此之后BP神经网络开始大行其道,直至今日,采用了BP算法的前馈式神经网络成为了运用最广泛的人工神经网络。
人工神经网络
人工神经网络是模拟生物神经网络的数学模型,最早的时候只有一些数学家在模拟,近来由于学术界与工业界的互相渗透,人工神经网络的使用场景也越来越丰富,现在已有遍地皆是之感。
以上就是人工神经网络的核心部分:一个输入层,一到多个隐含层,一个输出层,输入层与隐含层的连接有各自的权重,隐含层的每一个节点都有其激活函数,隐含层与输出层之间也有其连接权重。
常见的情况是:
1、初始化一批训练数据,包含【输入值,期望输出】
2、将输入值输入“输入层”
3、输入层根据连接权重将输入值分解到各“隐含层”节点
4、隐含层节点接受到各个输入层传递来的数据,通过激活函数,计算输出
5、将输出根据权重输出到“输出层”
6、输出层汇总输出
其中关键的地方在于“激活函数”+“连接权重”。
激活函数是一种特殊的函数,具有如下的性质:y越接近0.5,其导数越大,y越接近0或者1,其导数越小。图形如下:
左侧的即为:Sigmoid激活函数,算法是:σ(x)