9.3 人工智能框架的改进优化
ANN_V4.py进行了系数alpha的优化,ANN_V5.py和ANN_V4.py的代码没有太大的区别,它们alpha系数更新权重的核心算法是一样的。ANN_V5.py提供了synapse_0、synapse_1权重变化率方向的次数统计,将这一次权重的变化率与上一次的权重变化率进行比较,如果两者的变化率方向一致,则计数为0;如果两者的变化率方向相反,则计数为1。然后将统计的计数进行累加。
ANN_V5.py的源代码如下:
在Spyder中运行ANN_V5.py,运行结果如下:
从ANN_V5.py的运行结果看,隐藏层神经元节点数为4,alpha等于10的时候,效果最好,误差值达到0.001 312 740 628 335 676 4。
如图9-16所示,在TensorFlow的可视化图中,可以通过单击“+”“–”按钮随意增减隐藏层及神经元节点。
我们在代码中也可以增加神经网络的隐藏层及神经元节点数,ANN_V6.py在ANN_V4.py的基础上对隐藏层神经元节点数进行了优化。
ANN_V6.py的源代码如下:
图9-16 在TensorFlow可视化图中增加神经元节点
在ANN_V6.py的源代码中:
第5行代码设置隐藏层的神经元节点数为32。
第31、32行代码将设置的神经元节点数传入权重synapse_0、synapse_1,进行权重矩阵的初始化赋值。
ANN_V6.py实现的神经网络结构如图9-17所示。
图9-17 增加到32个神经元
在Spyder中运行ANN_V6.py代码,运行结果如下:
从ANN_V6.py运行结果看,当隐藏层神经元节点数增至32,alpha为10的时候,得到的误差值是0.000 939 536 491 871 338 3,这是目前获得的最好的效果。ANN_V6.py中增加的只是隐藏层的节点,就提高了神经元网络的精确度。
神经网络优化还有一些其他方式,例如,调整内存结构对神经网络的使用、调整偏爱因子、正则化处理(regularization)、随机丢弃一部分神经元及连接(Dropout)、GPU加速等。