python畫(huà)損失函數(shù)圖的簡(jiǎn)單介紹

使用Python畫(huà)出一個(gè)三維的函數(shù)圖像,數(shù)據(jù)來(lái)自于一個(gè)Excel表格?

可以的。 python利用matplotlib這個(gè)庫(kù),先定義一個(gè)空?qǐng)D層,然后聲明x,y,z的值,x,y,z賦相應(yīng)的列的值,最后建立標(biāo)簽,標(biāo)題即可。最后,excel安裝運(yùn)行python的插件,運(yùn)行python。

為稱多等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及稱多網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、稱多網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

交叉熵?fù)p失函數(shù)是什么?

平滑函數(shù)。

交叉熵?fù)p失函數(shù),也稱為對(duì)數(shù)損失或者logistic損失。當(dāng)模型產(chǎn)生了預(yù)測(cè)值之后,將對(duì)類別的預(yù)測(cè)概率與真實(shí)值(由0或1組成)進(jìn)行不比較,計(jì)算所產(chǎn)生的損失,然后基于此損失設(shè)置對(duì)數(shù)形式的懲罰項(xiàng)。

在神經(jīng)網(wǎng)絡(luò)中,所使用的Softmax函數(shù)是連續(xù)可導(dǎo)函數(shù),這使得可以計(jì)算出損失函數(shù)相對(duì)于神經(jīng)網(wǎng)絡(luò)中每個(gè)權(quán)重的導(dǎo)數(shù)(在《機(jī)器學(xué)習(xí)數(shù)學(xué)基礎(chǔ)》中有對(duì)此的完整推導(dǎo)過(guò)程和案例,這樣就可以相應(yīng)地調(diào)整模型的權(quán)重以最小化損失函數(shù)。

擴(kuò)展資料:

注意事項(xiàng):

當(dāng)預(yù)測(cè)類別為二分類時(shí),交叉熵?fù)p失函數(shù)的計(jì)算公式如下圖,其中y是真實(shí)類別(值為0或1),p是預(yù)測(cè)類別的概率(值為0~1之間的小數(shù))。

計(jì)算二分類的交叉熵?fù)p失函數(shù)的python代碼如下圖,其中esp是一個(gè)極小值,第五行代碼clip的目的是保證預(yù)測(cè)概率的值在0~1之間,輸出的損失值數(shù)組求和后,就是損失函數(shù)最后的返回值。

參考資料來(lái)源:百度百科-交叉熵

參考資料來(lái)源:百度百科-損失函數(shù)

正則化項(xiàng)L1和L2的直觀理解及L1不可導(dǎo)處理

正則化(Regularization)

機(jī)器學(xué)習(xí)中幾乎都可以看到損失函數(shù)后面會(huì)添加一個(gè)額外項(xiàng),常用的額外項(xiàng)一般有兩種,一般英文稱作 ?1-norm 和 ?2-norm ,中文稱作 L1正則化 和 L2正則化 ,或者 L1范數(shù) 和 L2范數(shù) 。

L1正則化和L2正則化可以看做是損失函數(shù)的懲罰項(xiàng)。所謂『懲罰』是指對(duì)損失函數(shù)中的某些參數(shù)做一些限制。對(duì)于線性回歸模型,使用L1正則化的模型建叫做Lasso回歸,使用L2正則化的模型叫做Ridge回歸(嶺回歸)。下圖是Python中Lasso回歸的損失函數(shù),式中加號(hào)后面一項(xiàng)α||w||1即為L(zhǎng)1正則化項(xiàng)。

下圖是Python中Ridge回歸的損失函數(shù),式中加號(hào)后面一項(xiàng)α||w||22即為L(zhǎng)2正則化項(xiàng)。

一般回歸分析中回歸w表示特征的系數(shù),從上式可以看到正則化項(xiàng)是對(duì)系數(shù)做了處理(限制)。 L1正則化和L2正則化的說(shuō)明如下:

L1正則化是指權(quán)值向量w中各個(gè)元素的 絕對(duì)值之和 ,通常表示為||w||1

L2正則化是指權(quán)值向量w中各個(gè)元素的 平方和然后再求平方根 (可以看到Ridge回歸的L2正則化項(xiàng)有平方符號(hào)),通常表示為||w||2

一般都會(huì)在正則化項(xiàng)之前添加一個(gè)系數(shù),Python中用α表示,一些文章也用λ表示。這個(gè)系數(shù)需要用戶指定。

那添加L1和L2正則化有什么用? 下面是L1正則化和L2正則化的作用 ,這些表述可以在很多文章中找到。

L1正則化可以產(chǎn)生稀疏權(quán)值矩陣,即產(chǎn)生一個(gè)稀疏模型,可以用于特征選擇

L2正則化可以防止模型過(guò)擬合(overfitting);一定程度上,L1也可以防止過(guò)擬合

稀疏模型與特征選擇

上面提到L1正則化有助于生成一個(gè)稀疏權(quán)值矩陣,進(jìn)而可以用于特征選擇。為什么要生成一個(gè)稀疏矩陣?

稀疏矩陣指的是很多元素為0,只有少數(shù)元素是非零值的矩陣,即得到的線性回歸模型的大部分系數(shù)都是0.

通常機(jī)器學(xué)習(xí)中特征數(shù)量很多,例如文本處理時(shí),如果將一個(gè)詞組(term)作為一個(gè)特征,那么特征數(shù)量會(huì)達(dá)到上萬(wàn)個(gè)(bigram)。在預(yù)測(cè)或分類時(shí),那么多特征顯然難以選擇,但是如果代入這些特征得到的模型是一個(gè)稀疏模型,表示只有少數(shù)特征對(duì)這個(gè)模型有貢獻(xiàn),絕大部分特征是沒(méi)有貢獻(xiàn)的,或者貢獻(xiàn)微小(因?yàn)樗鼈兦懊娴南禂?shù)是0或者是很小的值,即使去掉對(duì)模型也沒(méi)有什么影響),此時(shí)我們就可以只關(guān)注系數(shù)是非零值的特征。這就是稀疏模型與特征選擇的關(guān)系。

L1和L2正則化的直觀理解

這部分內(nèi)容將解釋 為什么L1正則化可以產(chǎn)生稀疏模型(L1是怎么讓系數(shù)等于零的) ,以及 為什么L2正則化可以防止過(guò)擬合 。

L1正則化和特征選擇

假設(shè)有如下帶L1正則化的損失函數(shù):

J=J0+α∑w|w|(1)

其中J0是原始的損失函數(shù),加號(hào)后面的一項(xiàng)是L1正則化項(xiàng),α是正則化系數(shù)。注意到L1正則化是權(quán)值的 絕對(duì)值之和 ,J是帶有絕對(duì)值符號(hào)的函數(shù),因此J是不完全可微的。機(jī)器學(xué)習(xí)的任務(wù)就是要通過(guò)一些方法(比如梯度下降)求出損失函數(shù)的最小值。當(dāng)我們?cè)谠紦p失函數(shù)J0后添加L1正則化項(xiàng)時(shí),相當(dāng)于對(duì)J0做了一個(gè)約束。令L=α∑w|w|,則J=J0+L,此時(shí)我們的任務(wù)變成 在L約束下求出J0取最小值的解 ??紤]二維的情況,即只有兩個(gè)權(quán)值w1和w2,此時(shí)L=|w1|+|w2|對(duì)于梯度下降法,求解J0的過(guò)程可以畫(huà)出等值線,同時(shí)L1正則化的函數(shù)L也可以在w1w2的二維平面上畫(huà)出來(lái)。如下圖:

圖1? L1正則化

圖中等值線是J0的等值線,黑色方形是L函數(shù)的圖形。在圖中,當(dāng)J0等值線與L圖形首次相交的地方就是最優(yōu)解。上圖中J0與L在L的一個(gè)頂點(diǎn)處相交,這個(gè)頂點(diǎn)就是最優(yōu)解。注意到這個(gè)頂點(diǎn)的值是(w1,w2)=(0,w)??梢灾庇^想象,因?yàn)長(zhǎng)函數(shù)有很多『突出的角』(二維情況下四個(gè),多維情況下更多),J0與這些角接觸的機(jī)率會(huì)遠(yuǎn)大于與L其它部位接觸的機(jī)率,而在這些角上,會(huì)有很多權(quán)值等于0,這就是為什么L1正則化可以產(chǎn)生稀疏模型,進(jìn)而可以用于特征選擇。

而正則化前面的系數(shù)α,可以控制L圖形的大小。α越小,L的圖形越大(上圖中的黑色方框);α越大,L的圖形就越小,可以小到黑色方框只超出原點(diǎn)范圍一點(diǎn)點(diǎn),這是最優(yōu)點(diǎn)的值(w1,w2)=(0,w)中的w可以取到很小的值。

類似,假設(shè)有如下帶L2正則化的損失函數(shù):

J=J0+α∑ww2(2)

同樣可以畫(huà)出他們?cè)诙S平面上的圖形,如下:

圖2? L2正則化

二維平面下L2正則化的函數(shù)圖形是個(gè)圓,與方形相比,被磨去了棱角。因此J0與L相交時(shí)使得w1或w2等于零的機(jī)率小了許多,這就是為什么L2正則化不具有稀疏性的原因。

L2正則化和過(guò)擬合

擬合過(guò)程中通常都傾向于讓權(quán)值盡可能小,最后構(gòu)造一個(gè)所有參數(shù)都比較小的模型。因?yàn)橐话阏J(rèn)為參數(shù)值小的模型比較簡(jiǎn)單,能適應(yīng)不同的數(shù)據(jù)集,也在一定程度上避免了過(guò)擬合現(xiàn)象。可以設(shè)想一下對(duì)于一個(gè)線性回歸方程,若參數(shù)很大,那么只要數(shù)據(jù)偏移一點(diǎn)點(diǎn),就會(huì)對(duì)結(jié)果造成很大的影響;但如果參數(shù)足夠小,數(shù)據(jù)偏移得多一點(diǎn)也不會(huì)對(duì)結(jié)果造成什么影響,專業(yè)一點(diǎn)的說(shuō)法是『抗擾動(dòng)能力強(qiáng)』。

那為什么L2正則化可以獲得值很小的參數(shù)?

以線性回歸中的梯度下降法為例。假設(shè)要求的參數(shù)為θ,hθ(x)是我們的假設(shè)函數(shù),那么線性回歸的代價(jià)函數(shù)如下:

J(θ)=12m∑i=1m(hθ(x(i))?y(i))(3)

那么在梯度下降法中,最終用于迭代計(jì)算參數(shù)θ的迭代式為:

θj:=θj?α1m∑i=1m(hθ(x(i))?y(i))x(i)j(4)

其中α是learning rate. 上式是沒(méi)有添加L2正則化項(xiàng)的迭代公式,如果在原始代價(jià)函數(shù)之后添加L2正則化,則迭代公式會(huì)變成下面的樣子:

θj:=θj(1?αλm)?α1m∑i=1m(hθ(x(i))?y(i))x(i)j(5)

其中 λ就是正則化參數(shù) 。從上式可以看到,與未添加L2正則化的迭代公式相比,每一次迭代,θj都要先乘以一個(gè)小于1的因子,從而使得θj不斷減小,因此總得來(lái)看,θ是不斷減小的。

最開(kāi)始也提到L1正則化一定程度上也可以防止過(guò)擬合。之前做了解釋,當(dāng)L1的正則化系數(shù)很小時(shí),得到的最優(yōu)解會(huì)很小,可以達(dá)到和L2正則化類似的效果。

正則化參數(shù)的選擇

L1正則化參數(shù)

通常越大的λ可以讓代價(jià)函數(shù)在參數(shù)為0時(shí)取到最小值。下面是一個(gè)簡(jiǎn)單的例子,這個(gè)例子來(lái)自 Quora上的問(wèn)答 。為了方便敘述,一些符號(hào)跟這篇帖子的符號(hào)保持一致。

假設(shè)有如下帶L1正則化項(xiàng)的代價(jià)函數(shù):

F(x)=f(x)+λ||x||1

其中x是要估計(jì)的參數(shù),相當(dāng)于上文中提到的w以及θ. 注意到L1正則化在某些位置是不可導(dǎo)的,當(dāng)λ足夠大時(shí)可以使得F(x)在x=0時(shí)取到最小值。如下圖:

圖3 L1正則化參數(shù)的選擇

分別取λ=0.5和λ=2,可以看到越大的λ越容易使F(x)在x=0時(shí)取到最小值。

L2正則化參數(shù)

從公式5可以看到,λ越大,θj衰減得越快。另一個(gè)理解可以參考圖2,λ越大,L2圓的半徑越小,最后求得代價(jià)函數(shù)最值時(shí)各參數(shù)也會(huì)變得很小。

Reference

過(guò)擬合的解釋:

正則化的解釋:

正則化的解釋:

正則化的數(shù)學(xué)解釋(一些圖來(lái)源于這里):

原文參考:blog.csdn.net/jinping_shi/article/details/52433975

請(qǐng)問(wèn)卷積神經(jīng)網(wǎng)絡(luò)中這種loss圖是用什么畫(huà)的?

你可以使用Matlab,或者M(jìn)atplotlib(一個(gè)著名的python繪圖包,強(qiáng)烈建議)。

Matplotlib: Python可視化

Matplotlib是一個(gè)用Python創(chuàng)建靜態(tài)、動(dòng)畫(huà)和交互式可視化的綜合性庫(kù)。Matplotlib讓簡(jiǎn)單的事情變得簡(jiǎn)單,讓困難的事情成為可能。

1. 創(chuàng)建出版質(zhì)量圖。

2. 制作可以縮放、平移、更新的交互式圖形。

3. 自定義視覺(jué)樣式和布局。

4. 導(dǎo)出到許多文件格式。

5. 嵌入JupyterLab和圖形用戶界面。

6. 使用構(gòu)建在Matplotlib上的第三方包的豐富數(shù)組。

matplotlib參考官網(wǎng),以及用法

有任何疑問(wèn)歡迎回復(fù)??!

分享題目:python畫(huà)損失函數(shù)圖的簡(jiǎn)單介紹
標(biāo)題路徑:http://muchs.cn/article8/doodhip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站排名定制開(kāi)發(fā)、電子商務(wù)、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化