姓名:陳彥宏? 學(xué)號(hào):19011210579
|·?本文為博主原創(chuàng)”·|
【嵌牛導(dǎo)讀】:TensorFlow是一個(gè)基于數(shù)據(jù)流編程(dataflow programming)的符號(hào)數(shù)學(xué)系統(tǒng),被廣泛應(yīng)用于各類(lèi)機(jī)器學(xué)習(xí)(machine learning)算法的編程實(shí)現(xiàn),其前身是谷歌的神經(jīng)網(wǎng)絡(luò)算法庫(kù)DistBelief ,TensorFlow2.0目前已正式發(fā)布,博主在這里分享下一些基礎(chǔ)知識(shí)。
【嵌牛鼻子】:深度學(xué)習(xí)、TensorFlow、基礎(chǔ)
【嵌牛提問(wèn)】:什么是線性回歸和梯度下降?
【嵌牛正文】:
方向:深度學(xué)習(xí)基礎(chǔ)知識(shí)
基礎(chǔ):斯坦福CS231n
主題:線性回歸-1+代碼實(shí)現(xiàn)
1、線性回歸?
???????個(gè)人理解的線性回歸就是利用一條線性的函數(shù)去擬合得到一個(gè)預(yù)測(cè)的結(jié)果,例如預(yù)測(cè)股市的走勢(shì),預(yù)測(cè)房?jī)r(jià)的走勢(shì)等等,局限性就在于線性回歸只能通過(guò)線性函數(shù)擬合結(jié)果,靈活性與應(yīng)用性較差。
線性回歸
2、梯度下降?
這里我們定義了一個(gè)函數(shù),叫做loss函數(shù),loss函數(shù)用來(lái)衡量我們使用線性函數(shù)對(duì)結(jié)果擬合的“壞”的程度,簡(jiǎn)單的來(lái)說(shuō)就是預(yù)測(cè)值和結(jié)果的差距,我們的loss值也就越大,而這個(gè)相對(duì)的大小則取決于我們使用的是什么樣的loss函數(shù)。
而一旦我們得到了這個(gè)loss函數(shù),我們就希望他能夠越小越好,我們知道,在數(shù)學(xué)中,一個(gè)函數(shù)下降最快的方向也就是他的梯度方向(在簡(jiǎn)單的二元函數(shù)中我們也可以理解為偏導(dǎo)數(shù)方向),所以這里我們對(duì)“參數(shù)”w和“參數(shù)”x進(jìn)行求導(dǎo),并讓他減去自己所求得得導(dǎo)數(shù)(這里我們對(duì)導(dǎo)數(shù)乘上了一個(gè)較小的“數(shù)”,這是因?yàn)槿绻麑?dǎo)數(shù)正向過(guò)大或者負(fù)向過(guò)大都有可能導(dǎo)致參數(shù)變化過(guò)于劇烈不便于我們尋找最佳的“解”)。
梯度下降
3、代碼實(shí)現(xiàn)
這里我們使用的loss函數(shù)為:
Loss = \Sigma_i(w*x+b-y_i)^2Loss=Σi?(w?x+b?yi?)2?
代碼實(shí)現(xiàn)如下:
1
2
3
4
5
6
7
8
def compute_error_for_line_given_points(b, w, points): #points為2×100的數(shù)組
????totalError =?0#初始化loss值為0
????fori in range(0,len(points)): #從0到points長(zhǎng)度(100)迭代累加loss
????????x = points[i,?0] #使用numpy工具,等同于points[i][0]
????????y = points[i,?1] #這里我們是有100組輸入與輸出,將其構(gòu)成了2×100的矩陣輸入
????????totalError += (y - (w * x + b)) **?2#使用loss函數(shù)計(jì)算loss值
????returntotalError /?float(len(points))
到這里我們的loss值就計(jì)算完畢了。