日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

梯度下降 最小二乘法 matlab,最小二乘法和梯度下降法的理解

發(fā)布時間:2025/3/19 循环神经网络 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 梯度下降 最小二乘法 matlab,最小二乘法和梯度下降法的理解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最小二乘法

在線性回歸中,聽的最多的應(yīng)該算是最小二乘法了。最小二乘法在具體實現(xiàn)過程中保留核心思想的同時,會在算法上進(jìn)行不同程度的改進(jìn),因此,最小二乘法有很多演變體,例如:遞推最小二乘法,加權(quán)最小二乘法。這些都會根據(jù)實際情況而變化。本文,主要講一下我對最小二乘法的理解。

所謂“最小二乘法”,least squares method,從字面上看,least就是一個最優(yōu)化問題的體現(xiàn),因此,最小二乘法是一個最優(yōu)化問題(optimization problem)。

概念

什么是回歸

我的理解:當(dāng)自變量和因變量存在某種函數(shù)關(guān)系可以用來近似描述時,我們把這種行為叫做回歸。而這個函數(shù)叫做回歸函數(shù)。

回歸的意義

回歸可以幫助我們對因變量進(jìn)行預(yù)測,根據(jù)以往的數(shù)據(jù)和回歸函數(shù),我們能大致預(yù)測接下來的因變量的走勢。這個在股市上用的很多,在一些時間序列問題上也應(yīng)用廣泛。

我們假設(shè)我們有一組數(shù),

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import random

x=np.linspace(0,10,10)

random.seed()

y=np.linspace(5,15,10)+[random.uniform(-5,5) for _ in range(10)]

print(y)

plt.scatter(x,y)

plt.show()

生成了一組隨機數(shù),然后我們想用一種函數(shù)來描述橫軸x和縱軸y的關(guān)系,我們先假設(shè)是線性關(guān)系,hypothesis function就為H(x)=\theta_0+\theta_1*x

如果我們得到了\theta_0, \theta_1,那么我們的回歸函數(shù)就得以確定。通過x就可以計算出對應(yīng)的y。

如何得到H(x)

要讓我們的假設(shè)函數(shù)對真實數(shù)據(jù)描述性更強,也就是假設(shè)函數(shù)更接近真實數(shù)據(jù)的分布。那么他們兩者之間的誤差就應(yīng)該達(dá)到最小。

于是,我們得到cost function,

J(\theta_0, \theta_1)=\frac{1}{2m}\sum_{i=1}^m(H(x^{(i)})-y^{(i)})^2

對每個離散值和計算值進(jìn)行誤差平方再求和計算總誤差。

這時候,我們目標(biāo)就是計算:

minimize J(\theta_0, \theta_1)

以上就是最小二乘法的概念。

梯度下降法

最小二乘法是一種優(yōu)化問題的想法,梯度下降法是實現(xiàn)這種優(yōu)化想法具體的一種求解方法。

在最小二乘法問題中求解minimize J(\theta_0, \theta_1)過程中,如果是線性問題,我們可以嘗試用矩陣也就是normal equation。這里只需要確保(x^Tx)^{-1}是存在的。當(dāng)然這也是矩陣計算的一個局限性。

正常比較萬能的方法,就是梯度下降法(不要說他慢)。

梯度下降法的本質(zhì)就是迭代。通過迭代更新\theta值,逐漸找到J(\theta_0,\theta_1)的最小值。

從上圖可以發(fā)現(xiàn),縱軸的J值隨著橫軸迭代次數(shù)的增加,逐漸變小。

算法思路

我們已知cost function J(\theta_0, \theta_1)=\frac{1}{2m}\sum_{i=1}^m(H(x^{(i)})-y^{(i)})^2

我們的目標(biāo)函數(shù)是minimize J(\theta_0, \theta_1)

因此,讓J(\theta_0, \theta_1)分別對 \theta_0, \theta_1求偏導(dǎo)。

得到,

\frac{\partial J(\theta_0, \theta_1)}{\partial \theta_0} = \frac{1}{m}\sum_{i=1}^m(x^{(i)})-y^{(i)})

\frac{\partial J(\theta_0, \theta_1)}{\partial \theta_1} = \frac{1}{m}\sum_{i=1}^m(x^{(i)})-y^{(i)})x_i

對\theta進(jìn)行更新:

\theta_0: \theta_0-\alpha \frac{\partial J(\theta_0)}{\partial \theta_0}

\theta_1: \theta_1-\alpha \frac{\partial J(\theta_1)}{\partial \theta_1}

thetaSet=np.array(thetaSet)

J=np.zeros((50,50))

theta0Max,theta0Min=max(thetaSet[:,0]),min(thetaSet[:,0])

theta1Max,theta1Min=max(thetaSet[:,1]),min(thetaSet[:,1])

theta0=np.linspace(0,1.8,50)

theta1=np.linspace(0,1.8,50)

T0,T1=np.meshgrid(theta0,theta1)

for i in range(50):

for j in range(50):

J[i,j]=sum((theta0[i]+theta1[j]*x-y)**2)/len(x)

plt.contour(T0,T1,J)

plt.scatter(thetaSet[:,0],thetaSet[:,1])

plt.ylabel('theta 1')

plt.xlabel('theta 0')

plt.scatter(thetaSet[-1,0],thetaSet[-1,1],c="r",s=300,alpha=0.5)

plt.show()

在這里五彩線是梯度線,我們可以看出,我們初始\theta為[0,0],然后\theta逐漸向最小cost逼近,最后到達(dá)[1.6,1.6]的位置。

最終線性擬合

在梯度下降法里,我們還會有增量梯度下降法等等,但都是為了更快實現(xiàn)逼近而設(shè)計的,這個根據(jù)具體需求具體分析。

總結(jié)

以上是生活随笔為你收集整理的梯度下降 最小二乘法 matlab,最小二乘法和梯度下降法的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。