Pytorch 筆記 – 2 線性迴歸

Source: Deep Learning on Medium


Go to the profile of chin su

本次筆記內容為利用Pytorch建立線性迴歸

📓首先介紹簡單的線性迴歸

線性迴歸是統計分析方法,利用數理統計方式確定兩種或兩種以上變數間相互依賴關係,線性迴歸之目標為找到一個與這些資料最符合的線性函數,可將其用於預測(Forecasting)或是分類(Classification),例如在分類上,就是找出一條線可以準確將其類別資料劃分開來。

其中線性迴歸會透過特徵(feature)組合來預測函數:

f(x) = w1x1 +w2x2 … wnxn + b

一般向量形式: f(x) = wTx + b

w = (w1, w2, w3… wn) 表示為該模型從資料學習到的參數,又稱為『權重』

x = (x1, x2, x3… xn) 表示為一組預測變數(特徵)

b 為 bias

簡單介紹線性迴歸後,接下來將使用pytorch建立簡單的線性迴歸模型,範例程式會放在Github上

📓Pytorch 線性迴歸

  • 首先我們要先利用Torch建立簡單的矩陣資料,並將其資料利用matplotlib進行繪製
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
from torch.autograd import Variable
x = np.array([[2.3], [4.4], [3.7], [6.1], [7.53], [4.168],
[5.6], [6.7], [7.32], [2.3], [7.042],
[10.791], [5.313], [7.997], [3.1]], dtype=np.float32)

y = np.array([[2.72], [3.2], [4.2], [4.1], [1.694], [1.573],
[3.3], [2.32], [2.13], [1.31], [2.312],
[3.5], [1.31], [2.53], [1.12]], dtype=np.float32)
plt.plot(x, y, 'b.', label = 'data points')
plt.legend(loc = 2)
plt.show()

接著將numpy資料轉成torch格式

X = torch.from_numpy(x)
Y = torch.from_numpy(y)

接下來使用pytorch nn建立線性模型,該class繼承pytorch nn.Modules,為建構 neural network 本身有關的 module

forward:

定義該Module進行forward時的運算,該範例為簡單接一個linear的方式進行預測。

接下來是設定模型的誤差函數及最佳化參數,在這邊使用的是MSELoss,最佳化參數則是使用SGD(隨機梯度下降)

pytorch 官方MSELoss 介紹,主要是希望透過loss function讓input資料能夠靠近target資料

公式如下:

跑5000次,記得每次在backpropagation(反向傳播)時必須將參數的梯度歸零, 也就是optimizer.zero_grad()

最後將其結果繪製出來,完工。

下次筆記將紀錄使用前饋神經網路(Feedforward Neural Network)