关于习题集1的提示:理解数学和高维向量 设置断点并输入各种参数
反向传播的第一种解释:
在上节课中,我们定义了这个目标函数 最终把它写成导数的形式 倒数写了两遍是为了说明不一定非要计算函数值 只要在前向传播中记录它的激活值 就可以了 所以把f(Wx+b)定义为隐含激活值然后就可以再次使用它来计算导数
再增加一层hidden 层 f()这里使用sigmoid函数 最大化s这个分数 通过这个内积来计算最终分数 这里的向量均为列向量
有关导数的计算 hadamard计算 就是对应的项相乘即可 最底层的δ^(3)
底层δ^(2)传递的错误是什么? 从下而上的更新 基本上可以把它陈为局部梯度 当你乘上顶层传过来的任意误差信号 把它乘上局部误差信号 这里就是f prime然后你就会得到这一层的权重更新 或者更低一层的梯度的中间项
最后的更新梯度为: 同时高层和底部的δ是很简单的
反向传播的第二种解释:circuits
先看一个简单的loss函数 f=(x+y)z 就像面对复杂的神经网络一样 我们可以定义一些中间项 q=x+y f =qz 从最高层开始 df/df=1 df/dz=q q=x+y x=-2 y= 5 所以 df/dz=3 df/dq =z 假设z=-4 df/dq=-4 df/dy = df/dq*dq/dy=-4
另一个复杂的例子:先前向传播计算最终结果,之后在从后向传播计算各自的局部梯度 例如 f(x)=1/x df/dx=-1/x^2 所以 -1/1.37^2 *1.00=-0.53
也可以进行合并 可以将线路定义为其他形式 前向传播是计算你在测试时需要的结果 计算你的函数最终输出反向传播 就是用数据集训练模型要更新模型的时候计算所需要的梯度
反向传播的第三种解释:the high-level flow graph 流动图
多条路径的链式法则
具体的应用例子 不过现在都是可以自动的计算
反向传播的第四种解释:the delta error signals in real nets
将流动图和神经网络图结合在一起
Class Project
先确定任务 再定义你的数据集 定义自己的评价指标 分割训练集 交叉试验集 测试集 最好这些集合 不重合
先实现一个最简单的模型 可以是最简单的一元或者二元逻辑回归然后在你训练数据和开发数据上计算你的评价指标帮助你知道你是过拟合还是欠拟合