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