隨機梯度下降 梯度下降法有什麼用?

2021-10-12 09:43:24 字數 2983 閱讀 7380

機器學習系列文章

1、如何用人工智慧算出美不美?

2、如何用人工智慧**雙 11 的交易額?

3、如何評價演算法的好壞?

4、模型越複雜越好嗎?

引言

(1)說明演算法的適用範圍,介紹在什麼情況下,可以使用什麼演算法,解決什麼問題;

(2)多用資料案例進行演示,與日常工作和生活相關聯,以便提高學習的興趣,加深對演算法的理解;

(3)包含演算法的實現過程,也就是有即拿即用的**,並且用比較詳細的注釋,讓任何人都可以拿來進行實踐練習。

為了讓文章內容更加通俗易懂,我盡量避免使用那些枯燥乏味的數學公式推導。

我最近在學習「梯度下降法」的時候,腦海中浮現出乙個問題:在人工智慧領域,梯度下降法有什麼用?

1. 梯度下降法簡介

梯度下降法,是一種基於搜尋的最優化方法,它其實不是乙個機器學習演算法,但是在機器學習領域,許多演算法都是以梯度下降法為基礎的,它的主要作用是尋找目標函式的最優解。

常用的梯度下降法有 3 種不同的形式:

(1)批量梯度下降法,簡稱 bgd,使用所有樣本,比較耗時;

(2)隨機梯度下降法,簡稱 sgd,隨機選擇乙個樣本,簡單高效;

(3)小批量梯度下降法,簡稱 mbgd,使用少量的樣本,這是乙個折中的辦法。

下面用乙個例項資料,演示其中「隨機梯度下降法」的應用過程。

2. 資料預處理

首先,我們載入波斯頓房價資料集,排除其中的異常資料,並拆分為訓練資料集和測試資料集:

from sklearn import datasets

from sklearn.model_selection import train_test_split

# 載入波斯頓房價資料集

boston = datasets.load_boston()

x = boston.data

y= boston.target

# 排除異常資料

x = x[y < 50.0]

y = y[y < 50.0]

# 拆分訓練資料集和測試資料集

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)

3. 資料歸一化其次,用對資料進行歸一化,注意是統一使用訓練資料集進行擬合,然後分別在訓練資料集和測試資料集上面進行轉換:

from sklearn.preprocessing import standardscaler

# 資料歸一化

standardscaler = standardscaler()

standardscaler.fit(x_train)

x_train_standard = standardscaler.transform(x_train)

x_test_standard = standardscaler.transform(x_test)

4. 隨機梯度下降法接下來,我們開始呼叫 sklearn 中的隨機梯度下降法,

# 呼叫 sklearn 中的隨機梯度下降法

from sklearn.linear_model import sgdregressor

# 例項化 sgdregressor

sgd_reg = sgdregressor(max_iter=1000, tol=1e-5)

# 對訓練資料集進行擬合

sgd_reg.fit(x_train_standard, y_train)

# 對測試資料集進行評分

print('模型評分:', sgd_reg.score(x_test_standard, y_test))

返回結果:

模型評分:0.761538531249327
5. 結果解讀因為隨機梯度下降法是乙個隨機的演算法,所以返回的模型評分結果也是乙個隨機數,每次執行的結果可能都會不一樣。但是,實踐經驗告訴我們,通過隨機梯度下降法,不僅求解速度得到提公升,而且依然能夠接近最優解。

隨機梯度下降法有兩個優點,乙個優點是更容易跳出區域性最優解,另乙個優點是具有更快的執行速度。這也提醒我們,做事的時候,不要鑽進死胡同,不要一條道走到黑,有時候跳出來看一看,外面可能還有更廣闊的世界。

在機器學習領域,有些演算法本身就具有隨機的特點,比如隨機森林演算法等。而在現實世界中,很多問題本身也是隨機的,有可能根本就不存在乙個固定的最優解。所以,「隨機」是存在現實意義的。

小結

本文使用波斯頓房價資料集,演示了隨機梯度下降法的應用過程。

根據隨機梯度下降法的思維,當你很難找到最優的方向,不妨隨機選擇乙個方向,先行動起來,勇於試錯,總比陷入焦慮情緒中要強,而且還有機會實現自己的目標,甚至可以得到更好的結果。

我想起乙個熱點問題:很想拼命努力一把,但是努力不起來怎麼辦?

我覺得當你感到迷茫的時候,不妨試著跳出「舒適區」,這好像與「隨機梯度下降法」的思維有那麼一點相似。

以上,希望能夠對你有所啟發。

近期推薦閱讀:

梯度下降法和隨機梯度下降法

批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...

隨機梯度下降法

剛剛看完史丹福大學機器學習第四講 牛頓法 也對學習過程做一次總結吧。一 誤差準則函式與隨機梯度下降 數學一點將就是,對於給定的乙個點集 x,y 找到一條曲線或者曲面,對其進行擬合之。同時稱x中的變數為特徵 feature y值為 值。如圖 乙個典型的機器學習的過程,首先給出一組輸入資料x,我們的演算...

隨機梯度下降法

自定義虛擬資料集 import numpy as np import matplotlib.pyplot as plt m 100000 m個樣本 x np.random.normal size m x x.reshape 1 1 y 4.x 3 np.random.normal 0,3,size ...