机器学习 - 符号化求导
type
status
date
slug
summary
tags
category
icon
password
所谓符号化求导其实就是对数学表达式“建模”,然后利用导数的“链式法则”实现求导。我19年的时候就自己实现过一套符号化求导的js库。
举个简单例子对于 这个表达式可以表达如下
一个函数对一个表达式求导:
求导的结果则是另一个表达式树。
符号化求导其实就是把已知的原子的数学函数和他的导数都枚举出来
⇒
⇒
⇒
我们知道所有“原子函数”的导数后,就可以利用链式求导法则来计算由一堆原子函数组合出来的复杂的表达式的导数。
符号化求导尽管很直接,很好理解,但是也有一些缺陷,最明显的就是“表达式爆炸”。用他求出来的导数往往是一棵极其复杂的表达式树,这是由于链式求导法则的特性导致的。人力求导时得到的表达式往往很简洁,那是因为人往往会对表达式做化简,所以符号化求导往往也需要应用各种优化算法来简化表达式,比如当一个很复杂的表达式乘以0之后,其实可以化简为0(这种场景在符号化求导中很多)。而且还需要避免对同样的表达式生成多个表达式节点。比如表达式中有一个 节点,同时另一个节点 对 求导并化简后也得到 ,但是这两个 实际上并不是同一个节点,所以会计算两次导致非必要的重复计算。
因此符号化求导一般并不在机器学习中直接使用(还是有些场景会用的,比如生成自动求导的辅助公式)
