關毅鉻
(華南師范大學物理與電信工程學院 廣東 廣州 510006)
回歸分析中,只包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析.梯度下降法是一種最優化算法,常用于機器學習和人工智能中用來遞歸性地逼近最小偏差模型,對數據量大,關系復雜,很難得到解析解的函數關系來說十分有效[1].它是迭代法的一種,可以用于求解最小二乘法問題.所以我們也可以用梯度下降法來處理呈線性關系的實驗數據.
一元線性回歸其實就是去找到一條直線,這條直線能以最小的誤差來擬合數據.
如圖1所示,橫坐標表示x,縱坐標表示y.一元線性回歸要找的就是圖中的這條直線,用y=b+mx表示.但是,所有的點都在這條擬合直線上肯定不現實,所以這些點要盡量靠近這條直線.即去找每個點和直線的距離|yie=b+mxi|最小的那條線.為了簡單起見,將絕對值轉化為平方,那么誤差可以表示為
這里i表示第i個數據,N表示總的樣本個數.把這個損失方程看作是m和b的方程.作為一個m和b的二次方程,那么求損失函數最小值的問題就轉變成了求極值問題.我們可以用梯度下降法求解m和b的值以確定擬合直線.

圖1 一元線性回歸擬合原理
為了更好地理解梯度下降法,這里把損失函數想象成一個碗,而函數的最小值就是碗底,如圖2(a)所示.不管位于這個碗的什么位置,只要往下走,也就是往梯度方向走,沿著梯度一點一點滑下去,就能達到這個最低點.梯度就是下面兩個式子.
接下來就要定義步長,用來表示每次滑多長,再定義一個迭代值用來表示滑多少次,這樣就能一點一點地靠近最小值.定義好這兩個值,計算機就可以一邊求梯度,一邊向下滑,去更新m和b,最后得到損失函數最小時對應的m和b的值.
也可以這樣理解梯度下降法.如圖2(b)所示,每一個圈代表一個函數梯度,最中心表示函數極值點,每次迭代根據當前位置求得的梯度(用于確定搜索方向以及與步長共同決定前進速度)和步長找到一個新的位置,這樣不斷迭代最終到達目標函數局部最優點(如果目標函數是凸函數,則到達全局最優點).
實現梯度下降法的主要Python代碼如下所示.
def optimizer(starting_b,starting_m,learning_rate,num_iter):
b = starting_b
m = starting_m
for i in range(num_iter):
b,m =compute_gradient(b,m,learning_rate)
return [b,m]
def compute_gradient(b_current,m_current,learning_rate):
b_gradient = 0
m_gradient = 0
N = float(len(data))
b_gradient = -(2/N)*(y-
m_current*x-b_current)
b_gradient = np.sum(b_gradient,axis=0)
m_gradient = -(2/N)*x*(y-
m_current*x-b_current)
m_gradient = np.sum(m_gradient,axis=0)
new_b = b_current - (learning_rate * b_gradient)
new_m = m_current - (learning_rate * m_gradient)
return [new_b,new_m]
求出m和b的具體數值,即找到了擬合的直線.一般數據處理中會用相關系數r檢驗兩變量的相關性,用擬合優度R2檢驗回歸直線的擬合程度.
相關關系是一種非確定性的關系,相關系數是研究變量之間線性相關程度的量.相關系數又叫線性相關系數,一般用字母r表示,用來度量兩個變量間的線性關系.當r接近于±1時,可以說兩個變量相關性比較好.
相關系數公式為[2]
擬合優度是指回歸直線對觀測值的擬合程度.度量擬合優度的統計量是可決系數R2.R2最大值為1.R2的值越接近1,說明回歸直線對觀測值的擬合程度越好;反之,R2的值越接近零,說明回歸直線對觀測值的擬合程度越差.
擬合優度公式為[3]:
根據愛因斯坦的光電效應方程
可以推導出普朗克常量
根據實驗數據擬合出遏止電壓和頻率的二元一次方程,求出斜率k,便可求得普朗克常量h=ek.
實驗數據和運用Python實現梯度下降法的結果,如表1和圖3所示.

圖3 Python實現遏止電壓和頻率一元線性擬合
光泵磁共振實驗中,共振條件為
hν=ΔE=gFμBB0
此式可改寫為

顯然,ν和B之間為線性關系.即使考慮地磁場水平分量和掃場直流分量的影響,擬合直線的斜率也不會改變.設擬合的直線方程為
ν=a0+a1B
則斜率
從而
可見只要求出直線斜率a1,代入上式便可求得gF的值.
實驗數據和運用Python實現梯度下降法的結果,如表2和圖4所示.

表2 光泵磁共振測85Rb朗德因子實驗數據

圖4 Python實現頻率和水平磁場一元線性擬合
馬呂斯定律為Iθ=I0cos2θ.顯然,Iθ和cos2θ為線性關系.大學物理實驗中一般用偏振光實驗驗證馬呂斯定律.
實驗數據和運用Python實現梯度下降法的結果,如表3和圖5所示.

表3 偏振光實驗驗證馬呂斯定律實驗數據

圖5 Python實現Iθ和cos2θ一元線性擬合
本研究在實現梯度下降法時,設置步長為0.001,迭代值為75 000.我們可以根據實際情況,調大步長或調小迭代值,從而提高計算速度.
光電效應求普朗克常量中,Excel得出的擬合優度R2=0.9899,梯度下降法得到的擬合優度R2=0.989 8;光泵磁共振測朗德因子中,Excel得出的擬合優度R2=0.999 7,梯度下降法的擬合優度R2=0.999 6;驗證馬呂斯定律中,Excel得出的擬合優度R2=0.9991,梯度下降法得到的擬合優度R2=0.999 0.可見,Excel的R2和梯度下降法的R2結果基本一致.相關系數r和擬合優度R2在保留有效數字時,通常保留4位,而且只舍不入[7].而Excel的結果默認四舍五入,所以兩者結果其實是一樣的.
梯度下降法與Excel的最小二乘法相比,梯度下降法需要選擇步長,而最小二乘法不需要.梯度下降法是迭代求解,最小二乘法是計算解析解.物理實驗數據處理中,樣本量不算很大,梯度下降法與最小二乘法的計算速度大致相同,結果也相同.采用Python和梯度下降算法對我們了解深度學習和人工智能研究及處理相關數據有啟發意義.