当你实现梯度逆传播时 你会发现一个测试 名叫梯度检验 可以帮助你确保 你的梯度逆传播的实现是正确的 因为有时写下这些方程后 你无法百分百确定 你的所有细节都做对了 实现了正确的逆传播 所以 为了之后能介绍梯度检验 我们先谈谈如何在数值上近似计算梯度 在下一个视频中 我们再讨论如何实现 梯度检验 从而确保逆传播的实现是正确的 我们来看一下函数f 我把它画在了这里 这个f(𝜃)等于𝜃立方 我们从某些𝜃取值出发 比如𝜃=1 这次我们不再将𝜃向右扰动到𝜃+𝜀 我们将同时向左右扰动 得到𝜃-𝜀和𝜃+𝜀 所以这里是1 这里是1.01 这里是0.99 𝜀与之前一样是0.01 事实上 相比于取这个小三角形 并计算高和宽 你还能得到更好的估计值 如果你选取这个点f(𝜃-𝜀)和这个点 然后计算这个大三角形的高和宽 由于一些技术原因 我在此不作解释 这个大三角形的 高和宽会给你一个𝜃点处梯度更好的近似值 很容易发现 如果不取右上的这个小三角形 你可以认为你有两个小三角形 右上的这个和左下的这个 你相当于同时考虑这两个三角形 通过使用这个大的绿三角形 所以你这次取了双侧的差值而不是单侧的差值 我们来写成数学形式 这个点是f(𝜃+𝜀) 而这个点是f(𝜃-𝜀) 所以这个大的绿三角形的高是f(𝜃+𝜀)-f(𝜃-𝜀) 所以这个大的绿三角形的高是f(𝜃+𝜀)-f(𝜃-𝜀) 至于宽度 这里是1个𝜀 这里是第2个𝜀 所以这个绿色三角形的宽就是2𝜀 所以这里的高度就是 首先是高度 也就是f(𝜃+𝜀)-f(𝜃-𝜀)除以宽度 也就是2𝜀 我写在这里了 这个很可能与g(𝜃)很接近 代入这些值 记住f(𝜃)是𝜃立方 这里𝜃+𝜀也就是1.01 我取它的立方 然后减去0.99的立方 再除以2*0.01 你可以暂停视频并在计算器上算一下 你会得到结果是3.0001 前一个幻灯片中 我们知道g(𝜃) 也就是3𝜃^2 而𝜃是1 所以这两个值十分接近 近似误差是0.0001 在上一个幻灯片中 我们取过单侧的差值 𝜃和𝜃+𝜀之间的结果是3.0301 所以近似误差就是0.03而不是0.0001 所以用这个取双侧差值的方法 来近似导数 你会发现结果非常接近3 所以这将让你更加自信 g(𝜃)很可能就是求f导数的正确实现 当你把这个方法用于梯度检验和逆传播时 它运行起来很可能比用单侧差值要慢两倍 但从实践的角度 我认为这个方法值得一用 因为它精确很多 我再说一些选修的理论知识 给你们之中比较熟悉微积分的人 如果你听不懂我即将说到的内容也没有关系 事实上 导数的正式定义 就是对于很小的𝜀 计算[f(𝜃+𝜀)-f(𝜃-𝜀)]/(2𝜃) 就是对于很小的𝜀 计算[f(𝜃+𝜀)-f(𝜃-𝜀)]/(2𝜃) 而导数的正式定义就是右边这个公式 当𝜀趋近于0时的极限 极限的定义就是微积分课上学的那样 但我这里不再详述 对于一个非零的𝜀值 你可以证明这个近似的误差 在𝜀平方这个阶上 𝜀是个很小的数 如果𝜀是0.01 就像这里 那么𝜀平方就是0.0001 这个大O记号就表示误差就是某个常数乘以这个 这就是我们的近似误差 这个例子中的大O的常数恰好就是1 相比而言 如果我们用这边的另一个公式 误差就在𝜀这个阶上 当𝜀是一个小于1的数时 𝜀就比𝜀平方大很多 这也就是为什么 这个公式不如左边这个公式精确 这也就是为什么我们做梯度检验时采用双侧差值 你计算f(𝜃+𝜀)-f(𝜃-𝜀)再除以2𝜀 而不使用这个不够精确的单侧差值 如果你不理解我最后说的两点 所有东西都写在这儿了 Don't worry about it.Don't worry about it. 对微积分和数值近似比较熟悉的人 可以多学一些 简单来说就是双侧差值的公式更加精确 我们在下一个梯度检验视频中就会用到这个 所以你们学习了如何取双侧差值 来在数值上验证是否给定的函数g(𝜃) 是函数f的导数的正确实现 我们来看看如何使用这个来验证是否 你的逆传播的实现是正确的 还是说里面有错误要剔除掉