梯度下降演算法及Python實現

2021-08-03 10:14:16 字數 1334 閱讀 5185

梯度下降是乙個用來求函式最小值的演算法,其背後的思想是:開始時我們隨機選擇乙個引數的組合,計算代價函式,然後我們尋找下乙個能讓代價函式值下降最多的引數組合。我們持續這麼做直到到達乙個區域性最小值,因為我們並沒有嘗試完所有的引數組合,所以不能確定我們得到的區域性最小值是否便是全域性最小值,選擇不同的初始引數組合可能會得到不同的區域性最小值。

定義代價函式(cost function):

梯度下降演算法如下:

對代價函式求偏導:

帶入梯度演算法後為:

其中α是學習率(learning rate),它決定了我們沿著能讓代價函式下降程度最大的方

向向下邁出的步子有多大。

(以上內容取自史丹福大學機器學習)

簡單**實現如下:

x = [1,2,3,4,5,6]

y = [13,14,20,21,25,30]

alpha = 0.01

#學習率

k0 = 0

k1 = 0

epsilon = 0.001

#誤差count = 0

m = len(x)

while

true:

temp0 = 0

temp1 = 0

for i in range(m):

temp0 += (k0 + k1*x[i] - y[i]) / m

temp1 += (k0 + k1*x[i] - y[i]) * x[i] / m

temp0 = k0 - alpha * temp0

temp1 = k1 - alpha * temp1

k0 = temp0

k1 = temp1

loss =0

for j in range(m):

loss += 0.5/m * (k0 + k1*x[i] - y[i])**2

print('k0: %f,k1: %f,loss: %f'%(k0,k1,loss))

if(loss < epsilon):

break

梯度下降原理及Python實現

梯度下降演算法是乙個很基本的演算法,在機器學習和優化中有著非常重要的作用,本文首先介紹了梯度下降的基本概念,然後使用python實現了乙個基本的梯度下降演算法。梯度下降有很多的變種,本文只介紹最基礎的梯度下降,也就是批梯度下降。實際應用例子就不詳細說了,網上關於梯度下降的應用例子很多,最多的就是ng...

梯度下降演算法的python實現

import sys training data set each element in x represents x0,x1,x2 x 1,0.3 1,1.3 1,2.3 1,3.2 1,4.4 y i is the output of y theta0 x 0 theta1 x 1 theta2...

用Python實現梯度下降演算法

梯度下降實際就是導數值下降 梯度下降演算法是乙個方法,是幫助我們找極值點的方法cost 接下來用python實現最土的梯度下降演算法,首先引入numpy模組和圖形介面模組 import matplotlib.pyplot as plt import numpy as np 定義三個函式 乙個數目標函...