能不能用梯度下降法求平方根或者立方根?

  数学 数值计算    浏览次数:5586        分享
1

能不能用梯度下降法求平方根或者立方根?面试题卷56里提到了一下,但是没有具体解答。

向各位请教,谢谢!

 

myodd   2019-03-25 14:12



   2个回答 
3

求立方根就是等价于求$f(x)=x^3-a$的根,也就等价于求$g(x)=f^2(x)=(x^3-a)^2$的最小值。梯度下降法要求$g(x)$是凸函数,但是显然它并不是凸函数。

上面是$g(x)=(x^3-1)^2$的图像,也有可能会收敛到0点。一般不用梯度下降,如果用的话要多试几个初始点,并且最后结果要代回原式子验算一遍。

SofaSofa数据科学社区DS面试题库 DS面经

xiaosu   2019-03-27 10:58

2

先建立等式,再建立convex函数,最后用梯度下降解。

$$x^2=y$$

$$L=(x^2-y)^2$$

$$g(x)=dL/dx=4x^3-4xy=4x(x^2-y)$$

$$x_{n+1}=x_n-ag(x_n)$$

------------------------------------------------

根据xiaosu的回答,$(x^2-y)^2$只在局部是convex函数。$d^2L/dx^2=4(3x^2-y)>0=>|x|>\sqrt{y/3}$。所以x的初始值范围是$y$的函数。


import numpy as np
import matplotlib.pyplot as plt
y=10.
n=200
xn=np.zeros(n)
def grad(x,y):
  return 4.*np.power(x,3)-4.*x*y
xn[0]=y
a=0.001 # step size
for i in range(1,n):
  xn[i]=xn[i-1]-a*grad(xn[i-1],y)
plt.figure()
plt.plot(xn)
plt.plot([0,n],np.ones(2)*np.sqrt(y),'--')
plt.show()


SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2019-03-26 02:11



  相关讨论

关于随机梯度下降法(SGD)的问题

计算中的截断误差是什么意思?

随机梯度下降(SGD)可以被并行计算吗?

怎么用牛顿法近似求解根号2?

SGD with clipping是什么意思?

高斯消元选部分主元为什么要选最大的?

常说的低秩分解或者低秩逼近是什么意思?

用SGD时陷入局部最优解的解决方法

Newton–Raphson和牛顿法区别?

Adam优化算法

  随便看看

概率论中的鞅是什么?

numpy里的无穷大np.inf到底是多大呢?

kappa statistic怎么理解?有什么意义?

tsne被忽视?tsne有什么缺点?

【站务】我们回来了