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

  数学 数值计算    浏览次数:4250        分享
0

能不能用梯度下降法求平方根或者立方根?面试题卷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



  相关主题

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

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

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

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

SGD with clipping是什么意思?   2回答

部分主元   1回答

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

python里怎么求矩阵的条件数?   1回答

牛顿法到底是一阶优化算法还是二阶优化算法?   3回答

随机平均梯度法(Stochasitc Average Gradient)和随机梯度下降(SGD)有什么区别   3回答

最速下降法与梯度下降法   1回答

为什么梯度的反方向是函数下降最快的方向?   4回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!