【问题标题】:Different values of Initial weight of linear regression is converging to different minimized cost value线性回归初始权重的不同值收敛到不同的最小成本值
【发布时间】:2021-01-19 00:13:21
【问题描述】:

我在 python 中实现了单变量线性回归。代码如下:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,4,3,5,7,9,11])
y = np.array([3,5,9,7,11,15,19,23])

def hypothesis(w0,w1,x):
  return w0 + w1*x

def cost_cal(y,w0,w1,x,m):
  diff = hypothesis(w0,w1,x)-y
  diff_sqr = np.square(diff)
  total_cost = np.sum(diff)
  total_cost_sqr = (1/(2*m)) * np.sum(diff_sqr)
  return total_cost, total_cost_sqr

def gradient_descent(w0,w1,alpha,x,m,y):
  cost, cost_sqr = cost_cal(y,w0,w1,x,m)
  temp0 = (alpha/m) * cost
  temp1 = (alpha/m) * np.sum(cost*x)
  w0 = w0 - temp0
  w1 = w1 - temp1
  return w0,w1

这些是我在 python 中实现的假设、成本和梯度下降函数。当我使用初始权重w0 = 0w1 = 0 时,我的最小成本是0.12589726000013188。但是,如果我初始化w0 = -1w1 = -2,最小的成本是0.5035890400005265。使用不同初始权重值的不同最低成本背后的原因是什么?作为误差函数MSE,是一个凸函数,不应该达到全局最小值吗?我做错了吗?

w0=0
w1=0
alpha =0.0001
m = 8
z = 5000
c = np.zeros(z)
cs = np.zeros(z)
w0_arr=np.zeros(z)
w1_arr=np.zeros(z)
index = np.zeros(z)
i = 0

while (i<z):
  index[i] = i
  c[i],cs[i] = cost_cal(y,w0,w1,x,m)
  #print(i, c[i], cs[i])
  w0, w1 = gradient_descent(w0,w1,alpha,x,m,y)
  w0_arr[i],w1_arr[i] = w0,w1
  i=i+1

inc = np.argmin(cs)
print(inc)
print(cs[inc])

【问题讨论】:

    标签: python numpy machine-learning linear-regression gradient-descent


    【解决方案1】:

    答案可能会根据您在权重空间中选择的初始向量而有所不同。除了成本函数是凸的之外,曲线还有许多临界点,因此它完全取决于初始点或权重,我们最终处于局部最小值还是全局最小值。

    图片链接 https://1.bp.blogspot.com/-ltxplazySpc/XQG4aprY2iI/AAAAAAAABVo/xAqLIln9OWkig5rq4AU2sBFuPBuxW5CFQCLcBGAs/w1200-h630-p-k-no-nu/local_vs_global_minima.PNG

    根据给定链接中的图像,如果您从左角的初始点开始,我们最终会降落在全局最小值如果我们从右端开始,我们最终会降落在局部最小值。成本可能会有很大差异,但在大多数情况下,在局部或全局最小值的情况下差异不是很大,因此如果成本差异很大,您需要交叉检查一次。随机选择初始权重是一种很好的做法,不应手动设置它们。

    在 gradient_descent 函数中,temp0 被分配一个数组而不是值,该数组的总和必须在相加之前完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 2017-08-09
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多