机器学习训练算法一(计算机求任意连续函数的导数计算方法)

13 篇文章 0 订阅
11 篇文章 2 订阅


最近几年人工智能正在如火如荼的飞速发展,用计算机完成机器学习变成了很多朋友的一种强烈需求;同时,在机器学习的训练方法中会用到很多的导数和偏导数,本人推荐一种用计算机CPU和GPU的强大的计算能力来求导数和偏导数的的近似的方法,同时使用Matlab/Python程序做实验来验证导数的近似结果的准确性。

1、简单函数

1.1、案例

若函数 f ( x ) = 2 x 2 + 3 f(x)=2x^2+3 f(x)=2x2+3,求 f ′ ( 3 ) f'(3) f(3)的值。

1.2、定义法(数值法求导)

由定义可知 f ′ ( x ) = lim ⁡ Δ x → 0 f ( x + Δ x ) − f ( x ) Δ x f'(x)=\displaystyle \lim_{\Delta x \to 0}{\frac{f(x+\Delta x)-f(x)}{\Delta x}} f(x)=Δx0limΔxf(x+Δx)f(x),若 Δ x = 0.0001 \Delta x=0.0001 Δx=0.0001,那么 f ′ ( 3 ) = f ( 3 + 0.0001 ) − f ( 3 ) 0.0001 = 12.0002 f'(3)={\frac{f(3+0.0001)-f(3)}{0.0001}}=12.0002 f(3)=0.0001f(3+0.0001)f(3)=12.0002。该方法适用于所有场景下的连续的复杂函数,且可以通过调整 Δ x \Delta x Δx的值大小来获取到指定精度下的导数值(由于计算机的强大的计算能力,可以使用该方法计算任意函数的导数);

1.3、公式法(符号法求导)

由公式可知 f ′ ( x ) = 4 × x f'(x)=4 \times x f(x)=4×x,那么 f ′ ( 3 ) = 4 × 3 = 12 f'(3)=4 \times 3=12 f(3)=4×3=12。该方法只适用于具有固定的数学表达形式的函数;

1.4、实验

1.4.1、定义法(数值法求导)

matlab程序

>> syms x delta;
>> f(x)=2*x*x+3;
>> j(x,delta)=(f(x+delta)-f(x))/delta;
>> double(j(3,0.0001))

python程序

def f(x):
    return 2*x*x + 3

def j(x, delta):
    return (f(x + delta) - f(x)) / delta

result = j(3, 0.0001)
print(float(result))

1.4.2、公式法(符号法求导)

matlab程序

>> syms x
>> j(x)=diff(2*x*x+3,x);
>> j(3)

python程序

from sympy import symbols, diff

x = symbols('x')
j = diff(2*x*x + 3, x)
result = j.subs(x, 3)
print(result)

2、复合函数

2.1、案例

若复合函数如下,求导数 d a d g \frac{da}{dg} dgda的值,以及当 g = 2 g=2 g=2的时候的导数的值。
在这里插入图片描述

2.2、链式法求导

在这里插入图片描述
通过上图可知,以 a a a g g g 的链路存在如下 4 条:
在这里插入图片描述
由上表可推得:
在这里插入图片描述
g = 2 g=2 g=2,那么:
在这里插入图片描述

2.3、实验验证

matlab程序

>> syms a b c d e f g
>> f=g*g*g;
>> e=2*g;
>> c=2+f;
>> d=c*c;
>> b=e*f;
>> a=2*b+3*c+4*d;
>> k(g)=diff(a,g);
>> k(2)

python程序

from sympy import symbols, diff
# 定义变量
a, b, c, d, e, f, g = symbols('a b c d e f g')
# 定义函数
f = g*g*g
e = 2*g
c = 2 + f
d = c*c
b = e*f
a = 2*b + 3*c + 4*d
# 求导
k = diff(a, g)
result = k.subs(g, 2)
print(result)

3、求导思路(自动求导)

如果某个函数是“黑盒函数”,那么建议使用“定义法求导”;如果某个函数是“白盒函数”,那么建议使用“公式法求导”;如果“复合函数”中包含“黑盒函数”与“白盒函数”,那么要“定义法求导”+“公式法求导”+“链式法求导”相结合的方式求导。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值