7.3 前向传播算法实现及其和TensorFlow的算法对比
接下来总结一下盘古人工智能框架前向传播算法的实现:
盘古人工智能框架使用前向传播算法实现前向传播的预测效果,这和TensorFlow可视化图的运行效果是一样的:在TensorFlow中输入数据,然后提取特征,经过隐藏层计算,到达输出层。Neuron_Network_Entry.py的输入数据是实例集,该实例集是二维数组,当然也可以使用外部文件,用一个函数读取文件里面的数据;也可以将二维数组的状态变成矩阵的状态,因为盘古人工智能框架开始时没有使用矩阵。输入数据以后提取特征,这里的特征是将第一列和第二列进行异或操作,只有第一列元素和第二列元素不一样的时候,第三列才是1。盘古人工智能框架强大之处在于预先并不知道第三列的值,是根据第一列、第二列的关系进行计算,将预测结果和实际结果进行对照,然后调整第一列、第二列,逐渐凸显第一列和第二列的关系,最后得出一个预测结果。预测结果趋近于实际值,如图7-7所示。
图7-7 前向传播的运行效果
TensorFlow的可视化图中,从左到右,先在输入层提取特征(CNN框架能自动提取图像的特征,这是深度学习带来最大的便利之一,传统的机器学习很多时候无法自动提取特征,而提取特征是过去机器学习工程最消耗时间的地方,性能调优等只是业界固定的最佳实践);然后进入隐藏层,可以使用3个隐藏层,也可以使用2个隐藏层(前面我们分别演示了有3个隐藏层、2个隐藏层、1个隐藏层的情况,有3个隐藏层时神经元的个数是[8,4,2],有2个隐藏层时神经元的个数是[4,2],有1个隐藏层时神经元的个数是[3]);最后到达右侧的输出层,得到一个结果。
不同隐藏层的计算速度和精确度是不一样的。深度学习另一个几乎完胜其他机器学习算法的地方在于隐藏层,由于隐藏层的存在,深度学习的算法远远超越了机器学习的算法。深度学习的两个巨大优势:一是特征的自动提取,因为特征提取对人而言是最繁重的体力劳动;二是隐藏层带来的训练效果远远比机器学习的效果好。基于这两点,读者就不应以普通的机器学习算法作为目标,而要以深度学习作为目标。