清华青年AI自强作业hw3_2:前向传播和反向传播实战

清华青年AI自强作业hw3_2:前向传播和反向传播实战

    • 实现过程
    • 各层参数维度分析
    • 拟合结果
    • 相关链接

清华青年AI自强作业hw3_2:前向传播和反向传播实战_第1张图片

一起学AI系列博客:目录索引

前向传播和反向传播的公式理解化用于作业hw3_2中::用NN网络拟合小姐姐喜好分类

  • 完成前向传播、反向传播算法的Python实现
  • 完成课堂的网络模型搭建,并实现喜好分类训练集精度100%

实现过程


FP前向传播计算公式与例图:
清华青年AI自强作业hw3_2:前向传播和反向传播实战_第2张图片

BP反向传播误差计算参考公式和例图:
清华青年AI自强作业hw3_2:前向传播和反向传播实战_第3张图片

计算Dij/Wij的公式:
清华青年AI自强作业hw3_2:前向传播和反向传播实战_第4张图片

如想对反向传播计算过程有深入理解,可以参考:“反向传播算法”过程及公式推导(超直观好懂的Backpropagation)

各层参数维度分析


已知信息:

  • 输入层不需要扩展列,中间隐藏层需要扩展列表征偏置
  • 样本数50个

前向传播过程

每层神经元经过激活函数后输出:

  • a1: (3, 50),3表示该层有3个神经元,每列表示对应第i个样本的输出结果
  • a2: (6, 50),6表示6个神经元,含偏置神经元,默认输出无权重对应连接
  • a3: (4, 50)
  • a4: (1, 50)

经过权重调节后的输出:

  • z1=a1
  • z2: (5, 50),6-1减去偏置神经元
  • z3: (3, 50),4-1减去偏置神经元
  • z4: (1, 50),无神经元

同一层z的维度与a一致,运算经过点乘实现非线性变换。偏置神经元无z->a非线性变换,公式举例:z2 = w1 * a1

每层神经元相应连接权重:主要跟前后神经元个数有关系

  • W1: (5, 3),5表示权重连接下一层共有5个神经元(下层含偏置神经元1个,则下层共有5+1个神经元),3表示当前层神经元个数
  • W2: (3, 5)
  • W3: (1, 3)

反向传播过程:

每层神经元的误差

  • delta4: (1, 50),1为最后一层神经元个数,50为样本数
  • delta3: (3, 50),去掉了偏置神经元
  • delta2: (5, 50),去掉了偏置神经元

各层神经元所有样本的累积误差

  • bigDelta1: (5, 3),5表示权重连接下一层共有5个神经元(下层含偏置神经元1个,则下层共有5+1个神经元),3表示当前层神经元个数
  • bigDelta2: (3, 6)
  • bigDelta3: (1, 4),含偏置神经元

各层神经元所有样本的均值误差

  • D3与W3维度一致
  • D2与W2
  • D1与W1

拟合结果


显然成功过拟合了,说明用这个模型来拟合这点数据规模,有点杀鸡用牛刀了。

清华青年AI自强作业hw3_2:前向传播和反向传播实战_第5张图片

遗留问题:

  1. 为啥predict函数和precision函数输入的维度不同?

相关链接


  1. 文科生都能零基础学AI?清华这门免费课程让我信了,link
  2. 清华青年AI自强作业2:线性回归预测,link

你可能感兴趣的:(人工智能,机器学习,深度学习)