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

  数学 数值计算    浏览次数:1441        分享
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



  相关主题

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

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

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

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

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

部分主元   1回答

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

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

nesterov’s momentum和momentum的区别?   1回答

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

随机梯度下降(sgd)的收敛问题   4回答

RMSProp的直白解释   1回答



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

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

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

我们谢绝答非所问。

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

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