分类目录归档:大数据

反向传播算法—从四个基本公式说起

enter image description here
enter image description here

反向传播四公式:

enter image description here
enter image description here

  反向传播的最终目的是求得使代价C最小时w、b的最佳值,为了方便计算引入了神经单元误差δ_j^l,其定义为误差C关于某个神经单元z的关系;
enter image description here
  其定义如上所示,某神经元误差为代价C(总误差)关于z的偏导数,其中l为神经网络的层数,j为第几个神经元;
  这里的代价函数(损失函数)使用的是平方误差,因此C等于:
enter image description here

BP1

  此公式用于求神经网络最后一层神经元的误差,下面通过BP1公式用于求最后一层神经元(输出层)中第一个神经元的误差;
enter image description here

根据链式法则由此可得到上诉四个公式中得前面BP1

enter image description here
BP1中得L为神经网络得最后一层,而在我们此网络中最后一层为3,所以此处L=3;

BP2

  BP2与BP1类似,不同得是BP1用于求最后一层神经元误差,而BP2则是用于求L层前面某一层得神经元误差,下面通过BP2公式用于求第二层神经元中的第一个神经元的误差;
同样我们也可通过链式法则得出:
enter image description here
有:
enter image description here
因此可以得:
enter image description here
将公式转换为矩阵模式,第2层神经元得误差为:
enter image description here
我们将BP1与BP2带入即可得到BP3与BP4;
通过BP1与BP2公式即可通过BP3、BP4轻松得到w与B;

BP3

此公式用于求误差C关于某个权重的偏导数,在求得BP2后此处只需吧BP2带入到公式即可求得BP3;
enter image description here

BP4

  求误差C关于偏置b的偏导数,BP4与BP3一样得到BP2即可带入得出BP4;
enter image description here
  反向传播算法给出了一种用于计算代价函数(损失函数)梯度得方法,具体步骤如下:
enter image description here

数据计算

enter image description here

一、前向传播

1、计算第二层
  矩阵形式:
enter image description here
enter image description here
2、计算第三层
  矩阵形式:
enter image description here

二、计算误差

当前使用的为平方损失函数(代价函数);
enter image description here

三、计算输出层神经元误差

矩阵形式:
enter image description here
  输出层第一个神经元误差δ_1^3:
enter image description here
  输出层第一个神经元误差δ_2^3:
enter image description here

四、计算其余层神经元误差

矩阵形式:
enter image description here

五、计算误差C关于w、b的梯度

  此处用的是BP3与BP4公式,在计算出BP1与BP2后将其带入到公式中即可计算出C关于w、b的梯度;
矩阵形式:
enter image description here
矩阵形式:
enter image description here
更新w、b公式:
enter image description here
  在计算出误差C关于每个权重每个偏置的偏导数后再使用得到的值带入上述公式更新每一个w、b即可,在更新完成w、b后如误差达到指定精度或epochs则继续执行上述的2-5步骤直到误差满意或指定epochs为止;

线性代数回头看——线性方程组

1、线性方程组概述

线性方程组:包含未知数x1,x2,x3….xn的线性方程

enter image description here

  其中b与系数a1,a2,a3…an是实数或复数,通常是已知的;下标n可以为任意数;线程方程组为由一个或几个包含相同变量x1,x2,x3….xn的线性方程组组成;
线性方程组的解分为相容、与不相容两种情况;
  相容: 1、唯一解;2、无穷解
  不相容: 无解

线性方程组矩阵表示
  可以使用矩阵来表示线性方程组:
  系数矩阵:只包含方程组系数的矩阵
  增广矩阵:在系数矩阵的基础上加上线性方程组右边的常数组成的矩阵

2、解线性方程组

  通过使用矩阵表示线性方程组,对矩阵使用行初等变换,把矩阵行化简为:行阶梯形矩阵或简化行阶梯形矩阵;

初等行变换:
  1、倍加变换——把某行换成它本身与另一行的倍数和
  2、对换变换——两行对换
  3、倍乘变换——某一行的所有元素乘以同一个非零数
行阶梯形矩阵:
  1、每一非零行在每一零行之上
  2、某一行的最左边非零元素所在列在上面一行非零元素的右边
  3、某一最左边非零元素所在列下方都是零
  简化阶梯形为在行阶梯形矩阵的基础上进一步简化:
  1、每一非零行最左边非零元素为1
  2、每一最左边非零元素1是该元素所在列的唯一非零元素
同一个矩阵使用不同的方法化简,存在不同的行阶梯形,但简化阶梯形只存在一个;

行阶梯形相关概念:

  主元位置:最左边非零元素位置
  主元列:主元所在列
  主元:主元位置的非零元素

  线性方程组行简化后不一定每个方程组都存在解,若存在解则称该线性方程组相容,线性方程组相容,当且仅当:化简后的增广矩阵最右列不是主元列;
  根据行简化得到行阶梯形矩阵或简化行阶梯形矩阵,我们可以把线性方程组中的变量称为:基本变量、自由变量;

  基本变量:主元列所在的变量
  自由变量:非主元列的变量

3、线性组合

  A为m*n矩阵,矩阵各列为:a1、a2、a3…、an,x为Rn中的向量,则A与x的乘积为Ax,为A的各列以x对应元素为权的线性组合;

enter image description here

线性方程Ax=b,有解当且仅当b为矩阵A各列的线性组合;

齐次线性方程组:

若线性方程组可以写成Ax=0的形式,则该线性方程组为齐次的;

  平凡解:若Ax=0仅有x=0一个解,也称为平凡解
  非平凡解:若Ax=0存在一个非x=0的解,即x为非零向量

Ax=0有非平凡解,当且仅当线性方程至少存在一个自由变量

4、线性无关

线性无关:矩阵的各列线性无关,仅当Ax=0仅存在平凡解时成立
线性相关: Ax=0存在非平凡解

一个或两个向量集合:
  存在其中一个向量是另一个向量的倍数时线性相关,否则线性无关;
两个或更多向量集合:
  1、向量集合中至少有一个向量是其他的线性组合
  2、向量组的个数超过每个向量元素的个数
  A为n*p矩阵,Ax=0方程有p个未知量,n个方程,若p>n,必定存在自由变量,Ax=0必存在非平凡解,所以A的各列线性相关;
  3、向量组包含零向量
满足这三个条件则线性相关;

参考资料:
线性代数及应用