Python神经网络编程学习笔记(二)

神经网络的核心思想:

简单的线性分类器的主要限制:如果不能用一条直线把根本性问题划分开来,分类器是无用的。在一些任务中,根本性问题不是线性可分的。   

神经网络的核心思想是使用多个线性分类器一起工作,来划分由单一直线无法分离的数据。

一、神经网络追踪信号

1.利用S函数进行计算

 S函数:y = 1/(1 + e^ −x )  ,先根据节点输出值及权重计算出x值,再利用S函数计算y值。

Python神经网络编程学习笔记(二)

2.矩阵乘法

不管神经网络的规模如何,将输入输出表达为矩阵乘法,使得我们可以更简洁地进行书写。

Python神经网络编程学习笔记(二)

X = W •I    W 是权重矩阵,I 是输入矩阵,X 是组合调节后的信号,即输 入到第二层的结果矩阵。

第二层的最终输出是: O = sigmoid ( X )   斜体的O代表矩阵,这个矩阵包含了来自神经网络的最后一层中的所有输出。

3.矩阵乘法三层网络示例

Python神经网络编程学习笔记(二)

计算过程如下:

输入矩阵I:Python神经网络编程学习笔记(二)  隐藏层权重矩阵: Python神经网络编程学习笔记(二)

 

输出层权重矩阵:Python神经网络编程学习笔记(二)

(1)Python神经网络编程学习笔记(二)

(2)Python神经网络编程学习笔记(二)

(3)Python神经网络编程学习笔记(二)

(4)Python神经网络编程学习笔记(二)

输出过程:

Python神经网络编程学习笔记(二)

二、节点的反向传播误差问题(使用权重比例分析)

省略了具体的计算过程

1.两个输入、一个输出节点

Python神经网络编程学习笔记(二)

误差的分配方法:(1)在所有造成误差的节点中平分误差;(2)不等分误差,按照权重比例计算。

2.两个输入、输出节点

Python神经网络编程学习笔记(二)

w1,1:Python神经网络编程学习笔记(二)    w2,1 的e1 部分为:Python神经网络编程学习笔记(二)

3.多个节点

Python神经网络编程学习笔记(二)

Python神经网络编程学习笔记(二)

Python神经网络编程学习笔记(二)

Python神经网络编程学习笔记(二)

总结:

神经网络通过调整链接权重进行学习,按照链路权重的比例来分割输出层的误差,然后在每个内部节点处重组这些误差。

三、使用矩阵乘法进行反向传播误差

误差矩阵:Python神经网络编程学习笔记(二)

由上述3中的图,可得出隐藏层中两个节点的误差。

隐藏层两个节点的误差矩阵:Python神经网络编程学习笔记(二)

这些分数的分母是一种归一化因子,如果我们忽略了这个因子,那么我们仅仅失去后馈误差的大小。

对上述矩阵进行化简:Python神经网络编程学习笔记(二)

Python神经网络编程学习笔记(二)

这个权重矩阵与我们先前构建的矩阵很像,但是这个矩阵沿对角线进 行了翻转,因此现在右上方的元素变成了左下方的元素,左下方的元素变 成了左上方的元素。我们称此为转置矩阵,记为wT 。

可得Python神经网络编程学习笔记(二)

总结:

反向传播误差可以表示为矩阵乘法。 无论网络规模大小,这使我们能够简洁地表达反向传播误差,同时也允许理解矩阵计算的 计算机语言更高效、更快速地完成工作。