AI數學基礎37-從程式碼角度深入理解梯度下降法2
在《AI數學基礎36-從程式碼角度深入理解梯度下降法1》我們得到了訓練資料,即101個(x,y)。回顧一下監督式機器學習基本思路:有一組樣本x,並有對應的標籤y,通過最小化代價函式(cost function),訓練出引數w和b(針對本文簡化的情況)。
第一步,為引數賦一個初始值init_w, init_b;
init_w = 0
init_b = 0
第二步,計算當前引數(w,b)代價函式(cost function)。代價函式是每個樣本(sample)的誤差(error)的平均值
順便說一下,在機器學習中,代價函式習慣上用字母J,而不是C來表示,原因是,J代表Jacobian matrix,隱含後面要對該函式做一階偏導的意思。
代價函式Python程式碼實現如下圖所示:
第三步,計算代價函式對(w,b)的一階偏導數,即梯度,並根據梯度更新w,b的值,公式推導如下:
對於新的w,b值,由下面的公式算出:
其中α是學習率(learning rate)
程式碼實現如下圖所示:
第四步,不斷重複第三步,直到找到代價函式值最小,或者達到指定的訓練步數
實現程式碼,如下圖所示:
以上四步,就是梯度下降法典型的實現。
我們寫一個函式,來測試一下:
到此,使用梯度下降法,訓練(w,b)引數,成功。
梯度下降法 vs 反向傳輸法
梯度下降法是應用非常廣的數學優化方法(mathematical optimization method), 當它應用於神經網路(Neural Network)時,又被稱為反向傳輸法(Back Propagation) ,是神經網路演算法中應用的最廣的優化策略(the most popular optimization strategy)
相關文章
- 隨機梯度下降法的數學基礎隨機梯度
- 從原始碼角度深入理解Glide4(下)原始碼IDE
- 深入淺出--梯度下降法及其實現梯度
- 從Java角度深入理解KotlinJavaKotlin
- 梯度下降法中導數的求解梯度
- 從原始碼角度深入理解Glide4(上)原始碼IDE
- 從程式設計師的角度深入理解MySQL程式設計師MySql
- 機器學習之梯度下降法機器學習梯度
- 1. 梯度下降法梯度
- 機器學習方法(一)——梯度下降法機器學習梯度
- 從教育者角度來理解AIAI
- 機器學習之隨機梯度下降法機器學習隨機梯度
- 什麼是梯度下降法?梯度
- 從大神的角度深入理解MySQL,值得收藏~MySql
- 梯度下降法原理及小結梯度
- 【機器學習之數學】02 梯度下降法、最速下降法、牛頓法、共軛方向法、擬牛頓法機器學習梯度
- 深入理解Python多程序:從基礎到實戰Python
- 深入理解Python協程:從基礎到實戰Python
- 【機器學習基礎】——梯度下降機器學習梯度
- Java基礎——深入理解反射Java反射
- 人工智慧必備數學基礎:高等數學基礎(2)人工智慧
- 一些AI數學基礎AI
- Diffusion|DDIM 理解、數學、程式碼
- 機器學習梯度下降法,最通俗易懂的解釋機器學習梯度
- Java基礎——深入理解泛型Java泛型
- 深入理解defer(上)defer基礎
- 《神經網路的梯度推導與程式碼驗證》之數學基礎篇:矩陣微分與求導神經網路梯度矩陣求導
- 梯度下降法原理與模擬分析||系列(1)梯度
- 在導數為0時極值點仍然難求的情況下用梯度下降法逼近梯度
- 從前端角度理解快取前端快取
- [譯] 理解編譯器 —— 從人類的角度(版本 2)編譯
- 從原始碼的角度再學「Thread」原始碼thread
- 從程式碼生成說起,帶你深入理解 mybatis generator 原始碼MyBatis原始碼
- 人工智慧必備數學基礎:線性代數基礎(2)人工智慧
- xss-程式碼角度理解與繞過filterFilter
- 使用梯度下降法實現多項式迴歸梯度
- 從XML配置角度理解Spring AOPXMLSpring
- 工程數學上機實驗四:共軛梯度法程式設計程式碼梯度程式設計