Deep Learning - Simple Stochastic Gradient Descent Implementation
Simple Stochastic Gradient Descent Implementation
深度學習基礎實作
自行撰寫隨機梯度下降的線性回歸程式
先備知識
- 權重
(或 )、偏差值 ,稱為參數(Parameters) - 演算法目的為找出適合訓練資料的模型參數,一般初始值應隨機給定較小值,不宜直接給定。
- 學習率
,稱為超參數(Hyperparameters),其目的為協助演算法找到適合模型的参數(即權重與偏差值)。 - 學習率影響参數調整更新幅度的大小,其值一般為:
,可直接給定,實驗中可嘗試不同值,體驗演算法收斂的速度。
- 學習率影響参數調整更新幅度的大小,其值一般為:
- 停止條件:
- 給定最大世代(Epoch)數強迫停止,以免演算法不收斂時,造成無窮迴圈,無法停止。
- 在多次世代(Epoch)迭代中,訓練沒有任何改進時終止,例如誤差度量在連續若干世代,停滯不再下降時。
- 當觀察到過度擬合(Overfitting時),則停止訓練。
- 當訓練資料集的某一誤差度量足夠小時停止,比如設定容忍誤差(Tolerance Error),
,若因此條件而停止,可視為找到適合的模型。其他條件停止時,需要重新執行程式,取得新的權重與偏差值初始值,或調整學習率η,或給定較大世代數。 - 常見誤差度量如下:
- Mean Squared Error (MSE)
- Root Mean Squared Error (RMSE)
- Mean Absolute Error (MAE)
實驗一
- 給定
Lab 1_train data1.txt
為訓練資料:- 共含
100
筆 - 第一個欄位為
,為自變數(Independent Variable) - 第二個欄位為
,為應變數 (Dependent Variable)
- 共含
- 作業要求:
- 使用讀檔方式讀取訓練資料 (
Lab 1_traindata1.txt
) - 利用隨機梯度下降法,找回歸線
,即找權重 和偏差值 - 一旦找到回歸線,就可以使用模型進行預測:
- 當
時, 的預測值是多少? - 當
時, 的預測值是多少?
- 當
- 使用讀檔方式讀取訓練資料 (
- 輸出要求:
- 輸出線性方程式
之 與 的參數值 - 令
,預測其對應估計值 - 畫圖(畫出直線
,及 2
筆測試資料點
- 輸出線性方程式
Solution Code
1 | import numpy as np |
實驗二
- 給定
Lab 1_traindata2.csv
為籃球員訓練資料:- 共含
52
筆 - 第
1 - 4
欄位是,第 5
欄位是 - 以下描述各欄位:
高度(英尺) 重量(磅) 成功射籃的百分比(嘗試 100
次)成功罰球的百分比(嘗試 100
次)每場比賽的平均得分
- 共含
- 作業要求:
- 使用讀檔方式讀取訓練資料 (
Lab 1_traindata2.csv
) - 利用梯度下降法,找到回歸超平面(Hyperplane)
,即找權重 和偏差值 - 一旦找到回歸超平面,就可以使用模型進行預測:
- 當
時,預測值 - 當
時,預測值
- 當
- 使用讀檔方式讀取訓練資料 (
- 輸出要求:
- 輸出線性方程式
之 與 的參數值 - 令
,預測其對應估計值
- 輸出線性方程式
Solution Code
1 | import numpy as np |
Reference
- 黃貞瑛老師的深度學習課程
- 吳建中同學的共同討論