用numpy
实现最简单的前馈神经网络——神经网络架构篇
-
基础知识
梯度(高等数学)、矩阵运算(线性代数)、
numpy(ndarray)
、python基础语法 -
目录
-
神经网络架构
-
神经网络建立
先用比较简单的正向传播建立好框架,再用反向传播改变算法
-
实例:学习
mnist
手写数字数据集
-
神经网络架构
- 矩阵
- 拟合
- 梯度
矩阵运算
我们可以把矩阵看作一个特殊的函数,它的作用是将长度为n
的向量(如下图 A \bold{A} A)转化为长度为m
的向量(如下图 Z \bold{Z} Z)。
将输入看作一个包含n
个元素的向量,就可以通过多次矩阵运算转化为长度为m
的输出了。
虽然此时输入矩阵( A \bold{A} A)在变换矩阵( W \bold{W} W)的右侧,但是这是可以改变的,在mnist学习实例中我就会将 A \bold{A} A放在 W \bold{W} W左侧(当然此时m
和n
会发生一些变化)。
( w 11 w 12 ⋯ w 1 n w 21 w 22 ⋯ w 2 n ⋮ ⋮ ⋱ ⋮ w m 1 w m 2 ⋯ w m n ) ⋅ [ a 1 a 2 ⋮ a n ] + ( b 1 b 2 ⋮ b m ) = [ z 1 z 2 ⋮ z m ] \begin{pmatrix} w_{11} & w_{12} & \cdots & w_{1n} \\ w_{21} & w_{22} & \cdots & w_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ w_{m1} & w_{m2} & \cdots & w_{mn} \\ \end{pmatrix} \cdot \begin{bmatrix} a_{1} \\ a_{2} \\ \vdots \\ a_{n} \\ \end{bmatrix} + \begin{pmatrix} b_{1} \\ b_{2} \\ \vdots \\ b_{m} \\ \end{pmatrix} = \begin{bmatrix} z_{1} \\ z_{2} \\ \vdots \\ z_{m} \\ \end{bmatrix} ⎝⎜⎜⎜⎛w11w21⋮wm1w12w22⋮wm2⋯⋯⋱⋯w1nw2n⋮wmn⎠⎟⎟⎟⎞⋅⎣⎢⎢⎢⎡a1a2⋮an