機器學習 梯度下降

2021-09-19 05:32:52 字數 2003 閱讀 6693

1.引數要同時更新

2.初始化不同,獲得的最小值也不同,即得到的引數也不同,演算法收斂到不同的區域性最優解。凸函式只有全域性最優解,無論如何初始化,不必擔心陷入區域性最優解

3.越接近最小值時,收斂的速度最逐漸減慢,在學習率不變的情況下,越接近最小值(最優解),偏導數的絕對值會越來越小,所以演算法收斂的速度會逐漸的減慢

4.梯度下降求解引數時,如果特徵處在相近的範圍時(量綱相近)時,演算法收斂得更快

5.學習率較小時,演算法每一次迭代,損失函式都是在不斷減小的,但是如果學習率取值過小就會導致演算法收斂需要的迭代次數更多,需要消耗更多的時間;如果發現演算法不收斂(損失函式隨著迭代次數不斷增加或者振盪)(畫圖),很有可能就是學習率取值偏大所導致的

如何選擇合適的學習率:可以繪製損失函式和迭代次數的影象來判斷學習率的取之是偏大還是偏小,學習率取一系列值(0.001,0.003,0.01,0.03,0.1,0.3,1.....),不同的學習率對於梯度下降法的影響非常大,選擇合適的學習率至關重要

import numpy as np

import random

import matplotlib.pyplot as plt

np.random.seed(10) #設定隨機數種子

x=np.random.randint(1,10,100).reshape(100,1)

# x1=(x-x.min())/(x.max()-x.min()) #特徵縮放

y=x*5+1

alpha=0.01 #學習率

#一元回歸梯度下降

def gd(x,y,alpha):

cost = #損失函式的取值

count = #迭代次數

random.seed(10) #設定隨機數種子

theta_0=random.randint(0,10)

theta_1 = random.randint(0, 10)

m=len(x)

count=0

while true:

cost=(2/m)*np.sum((theta_1*x+theta_0-y)**2) #損失函式的取值

tmp_1=theta_1-alpha*(1/m)*np.sum((theta_1*x+theta_0-y)*x)

tmp_0=theta_0-alpha*(1/m)*np.sum(theta_1*x+theta_0-y)

count += 1 # 迭代次數

if abs(tmp_1-theta_1)<=0.0001 and abs(tmp_0-theta_0)<=0.0001:#梯度下降演算法結束的條件

break

if count>=100: #為了獲取前100次迭代的次數和損失函式變化的資料

break

#為了保證引數同時更新

theta_0=tmp_0

theta_1=tmp_1

return theta_0,theta_1,count,count,cost

# theta_0,theta_1,count,count,cost=gd(x,y,alpha)

# print('theta_0=%s,theta_1=%s,count=%s'%(theta_0,theta_1,count)) #輸出所求引數和迭代次數

#繪製不同的學習率下,損失函式隨著迭代次數變化的影象 進而來選擇合適的學習率

for alpha in [0.001,0.01,0.1]:

theta_0, theta_1, count, count, cost = gd(x, y, alpha)

plt.plot(count, cost,label="%s"%str(alpha)) # 繪製損失函式隨著迭代次數變化的影象

# plt.plot(x,s)

plt.show()

6.對於多元回歸問題,正規的最小二乘法也可求解引數,與梯度下降法相比,在特徵數較少時(n<10000),最小二乘法的速度比梯度下降法更快,隨著特徵數量的增加,最小二乘法消耗的時間會增加,因為求解矩陣的逆會消耗大量的時間o(n**3)

機器學習 梯度下降

參照 機器學習 這本書的第4.4.3節。一.解決目標及情景假設 當給定一些資料,輸入x向量已知,輸出y也已知,設計乙個線性函式y h x 去擬合這些資料。既然是線性函式,在此不妨設為h x w0 x0 w1 x1。此時我們遇到的問題就是如何確定w0和w1這兩個引數,即w w0,w1 這個向量。既然是...

機器學習 梯度下降

梯度下降法 如果讀者對方向導數和梯度的定義不太了解,請先閱讀上篇文章 方向導數與梯度 前些時間接觸了機器學習,發現梯度下降法是機器學習裡比較基礎又比較重要的乙個求最小值的演算法。梯度下降演算法過程如下 1 隨機初始值 2 迭代 在這裡,簡單談一下自己對梯度下降法的理解。首先,要明確梯度是乙個向量,是...

機器學習 梯度下降

作者 renu khandelwal 編譯 vk medium 什麼是梯度下降?梯度下降法是一種減少成本函式的迭代機器學習優化演算法,使我們的模型能夠做出準確的 成本函式 c 或損失函式度量模型的實際輸出和 輸出之間的差異。成本函式是乙個凸函式。為什麼我們需要梯度下降?在神經網路中,我們的目標是訓練...