Python神经网络编程学习笔记(二)
神经网络的核心思想:
简单的线性分类器的主要限制:如果不能用一条直线把根本性问题划分开来,分类器是无用的。在一些任务中,根本性问题不是线性可分的。
神经网络的核心思想是使用多个线性分类器一起工作,来划分由单一直线无法分离的数据。
一、神经网络追踪信号
1.利用S函数进行计算
S函数:y = 1/(1 + e^ −x ) ,先根据节点输出值及权重计算出x值,再利用S函数计算y值。
2.矩阵乘法
不管神经网络的规模如何,将输入输出表达为矩阵乘法,使得我们可以更简洁地进行书写。
X = W •I W 是权重矩阵,I 是输入矩阵,X 是组合调节后的信号,即输 入到第二层的结果矩阵。
第二层的最终输出是: O = sigmoid ( X ) 斜体的O代表矩阵,这个矩阵包含了来自神经网络的最后一层中的所有输出。
3.矩阵乘法三层网络示例
计算过程如下:
输入矩阵I: 隐藏层权重矩阵:
输出层权重矩阵:
(1)
(2)
(3)
(4)
输出过程:
二、节点的反向传播误差问题(使用权重比例分析)
省略了具体的计算过程
1.两个输入、一个输出节点
误差的分配方法:(1)在所有造成误差的节点中平分误差;(2)不等分误差,按照权重比例计算。
2.两个输入、输出节点
w1,1: w2,1 的e1 部分为:
3.多个节点
总结:
神经网络通过调整链接权重进行学习,按照链路权重的比例来分割输出层的误差,然后在每个内部节点处重组这些误差。
三、使用矩阵乘法进行反向传播误差
误差矩阵:
由上述3中的图,可得出隐藏层中两个节点的误差。
隐藏层两个节点的误差矩阵:
这些分数的分母是一种归一化因子,如果我们忽略了这个因子,那么我们仅仅失去后馈误差的大小。
对上述矩阵进行化简:
这个权重矩阵与我们先前构建的矩阵很像,但是这个矩阵沿对角线进 行了翻转,因此现在右上方的元素变成了左下方的元素,左下方的元素变 成了左上方的元素。我们称此为转置矩阵,记为wT 。
可得
总结:
反向传播误差可以表示为矩阵乘法。 无论网络规模大小,这使我们能够简洁地表达反向传播误差,同时也允许理解矩阵计算的 计算机语言更高效、更快速地完成工作。