清华青年AI自强作业hw3_2:前向传播和反向传播实战
- 实现过程
- 各层参数维度分析
- 拟合结果
- 相关链接
一起学AI系列博客:目录索引
前向传播和反向传播的公式理解化用于作业hw3_2中::用NN网络拟合小姐姐喜好分类
- 完成前向传播、反向传播算法的Python实现
- 完成课堂的网络模型搭建,并实现喜好分类训练集精度100%
实现过程
FP前向传播计算公式与例图:
BP反向传播误差计算参考公式和例图:
计算Dij/Wij的公式:
如想对反向传播计算过程有深入理解,可以参考:“反向传播算法”过程及公式推导(超直观好懂的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
拟合结果
显然成功过拟合了,说明用这个模型来拟合这点数据规模,有点杀鸡用牛刀了。
遗留问题:
- 为啥predict函数和precision函数输入的维度不同?
相关链接
- 文科生都能零基础学AI?清华这门免费课程让我信了,link
- 清华青年AI自强作业2:线性回归预测,link