老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

python常用損失函數的簡單介紹

交叉熵損失函數是什么?

平滑函數。

托克遜網站建設公司成都創新互聯,托克遜網站設計制作,有大型網站制作公司豐富經驗。已為托克遜上1000家提供企業網站建設服務。企業網站搭建\外貿網站建設要多少錢,請找那個售后服務好的托克遜做網站的公司定做!

交叉熵損失函數,也稱為對數損失或者logistic損失。當模型產生了預測值之后,將對類別的預測概率與真實值(由0或1組成)進行不比較,計算所產生的損失,然后基于此損失設置對數形式的懲罰項。

在神經網絡中,所使用的Softmax函數是連續可導函數,這使得可以計算出損失函數相對于神經網絡中每個權重的導數(在《機器學習數學基礎》中有對此的完整推導過程和案例,這樣就可以相應地調整模型的權重以最小化損失函數。

擴展資料:

注意事項:

當預測類別為二分類時,交叉熵損失函數的計算公式如下圖,其中y是真實類別(值為0或1),p是預測類別的概率(值為0~1之間的小數)。

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

參考資料來源:百度百科-交叉熵

參考資料來源:百度百科-損失函數

Pytorch常用的交叉熵損失函數CrossEntropyLoss()詳解

????在使用pytorch深度學習框架,計算損失函數的時候經常回到這么一個個函數:

????該損失函數結合了 和 兩個函數。它在做分類(具體幾類)訓練的時候是非常有用的。在訓練過程中,對于每個類分配權值,可選的參數權值應該是一個1D張量。當你有一個不平衡的訓練集時,這是是非常有用的。那么針對這個函數,下面將做詳細的介紹。

???? 交叉熵主要是用來判定實際的輸出與期望的輸出的接近程度 ,為什么這么說呢,舉個例子:在做分類的訓練的時候,如果一個樣本屬于第K類,那么這個類別所對應的的輸出節點的輸出值應該為1,而其他節點的輸出都為0,即[0,0,1,0,….0,0],這個數組也就是樣本的Label,是神經網絡最期望的輸出結果。也就是說用它來衡量網絡的輸出與標簽的差異,利用這種差異經過反向傳播去更新網絡參數。

在說交叉熵之前,先說一下 信息量 與 熵 。

???? 信息量: 它是用來衡量一個事件的不確定性的;一個事件發生的概率越大,不確定性越小,則它所攜帶的信息量就越小。假設X是一個離散型隨機變量,其取值集合為X,概率分布函數為 ,我們定義事件 的信息量為:

當 時,熵將等于0,也就是說該事件的發生不會導致任何信息量的增加。

???? 熵: 它是用來衡量一個系統的混亂程度的,代表一個系統中信息量的總和;信息量總和越大,表明這個系統不確定性就越大。

????舉個例子:假如小明和小王去打靶,那么打靶結果其實是一個0-1分布,X的取值有{0:打中,1:打不中}。在打靶之前我們知道小明和小王打中的先驗概率為10%,99.9%。根據上面的信息量的介紹,我們可以分別得到小明和小王打靶打中的信息量。但是如果我們想進一步度量小明打靶結果的不確定度,這就需要用到熵的概念了。那么如何度量呢,那就要采用 期望 了。我們對所有可能事件所帶來的信息量求期望,其結果就能衡量小明打靶的不確定度:

與之對應的,小王的熵(打靶的不確定度)為: ????雖然小明打靶結果的不確定度較低,畢竟十次有9次都脫靶;但是小王打靶結果的不確定度更低,1000次射擊只有1次脫靶,結果相當的確定。

???? 交叉熵: 它主要刻畫的是實際輸出(概率)與期望輸出(概率)的距離,也就是交叉熵的值越小,兩個概率分布就越接近。假設概率分布p為期望輸出,概率分布q為實際輸出, 為交叉熵,則 ????那么該公式如何表示,舉個例子,假設N=3,期望輸出為 ,實際輸出 , ,那么: 通過上面可以看出,q2與p更為接近,它的交叉熵也更小。

????Pytorch中計算的交叉熵并不是采用 這種方式計算得到的,而是交叉熵的另外一種方式計算得到的: 它是交叉熵的另外一種方式。

????Pytorch中CrossEntropyLoss()函數的主要是將softmax-log-NLLLoss合并到一塊得到的結果。

????1、Softmax后的數值都在0~1之間,所以ln之后值域是負無窮到0。

????2、然后將Softmax之后的結果取log,將乘法改成加法減少計算量,同時保障函數的單調性

????3、NLLLoss的結果就是把上面的輸出與Label對應的那個值拿出來(下面例子中就是:將log_output\logsoftmax_output中與y_target對應的值拿出來),去掉負號,再求均值。

下面是我仿真寫的一個例子:

最計算得到的結果為:

????通過上面的結果可以看出,直接使用pytorch中的loss_func=nn.CrossEntropyLoss()計算得到的結果與softmax-log-NLLLoss計算得到的結果是一致的。

[1]

[2]

[3]

更多自然語言處理、pytorch相關知識,還請關注 AINLPer 公眾號,極品干貨即刻送達。

tf.keras之損失函數

tf.keras里面有許多內置的損失函數可以使用,由于種類眾多,以幾個常用的為例:

BinaryCrossentropy是用來進行二元分類交叉熵損失函數的,共有如下幾個參數

如果輸入的from_logits是true,那么首先就要經過激活函數的處理。那對于一個[batch_size,num_class]的logits,進行sigmoid激活就是對將tensor中的每個元素x轉為sigmoid(x).構成矩陣P, 代表的就是樣本i屬于標簽j概率,即:

然后在這個基礎上計算二分類的交叉熵,這里的二分類交叉熵是tensor中的每個元素都獨立的,所以會有[batch_size,num_class]個loss,以下 表示真實的標簽

然后在axis=-1維度做了reduce_mean操作,變成了[batch_size]維度的loss,最后再經過reduction里面指定的處理方法,再對batch求一次平均值。另外,這個方法如果在from_logits=True的情況下,可以用tf.nn.sigmoid_cross_entropy_with_logits來代替,閱讀源碼,在tf.keras里面就是調的這個函數,sigmoid_cross_entropy_with_logits返回的是[batch_size]個loss,最后我們再接一個reduce_mean就可以變成標量了。

CategoricalCrossentropy是用來處理多分類的,同樣有以上這幾個參數。但是激活函數不一樣,使用的是softmax激活函數,softmax的過程如下

經過激活函數之后,每一行的元素代表了這個樣本屬于各類別的概率,并且概率和為1,即[batch_size,num_class]里面的每一行的和為1,然后進行交叉熵計算,這里和binary_cross_entropy不同,這里中間計算出來的loss的shape只有[batch_size]了。多分類是二分類的擴展,二分類可以看成兩個互斥的標簽,而多分類則是多個互斥的標簽

SparseCategoricalCrossentropy損失函數同CategoricalCrossentropy類似,只是輸入不一樣,該損失函數的輸入的y_true是[batch_size]個標簽,每個元素是label對應的index,沒有經過one-hot編碼,這個方法如果在from_logits=True的情況下,和tf.nn.sparse_sigmoid_cross_entropy_with_logits再接一個reduce_mean是類似的效果。

MeanSquaredError損失函數(均方差)一般用來解決回歸問題,參數只有兩個,默認即可。

均方差就是y_pred語y_true對應元素的差的平方,然后求和在求平均

(4)損失函數

損失函數用來表示輸出與實際值的差距。常用的損失函數為0-1損失函數、平方損失函數、絕對損失函數、對數損失函數、交叉熵損失函數。

損失函數計算得到的損失又叫期望損失。學習的目標就是選擇期望風險最小的模型。

期望風險 = 經驗風險+結構風險

期望風險是模型關于聯合概率分布的期望損失;經驗風險是模型關于訓練樣本集的損失,結構風險時在經驗風險的基礎上加上正則化。

根據大數定理,當N趨近于無窮時,經驗風險時趨近于期望風險的。

當樣本數量足夠大時,經驗風險最小化能保證很好的學習效果。極大似然估計就是經驗風險最小化的例子。

ANN的設計目的之一是為了使機器可以像人一樣學習知識。人在學習分析新事物時,當發現自己犯的錯誤越大時,改正的力度就越大。比如投籃:當運動員發現自己的投籃方向離正確方向越遠,那么他調整的投籃角度就應該越大,籃球就更容易投進籃筐。同理, 我們希望:ANN在訓練時,如果預測值與實際值的誤差越大,那么在 反向傳播訓練 的過程中,各種參數調整的幅度就要更大,從而使訓練更快收斂。

(1)均方差損失函數

???然而,如果使用二次代價函數訓練ANN,看到的實際效果是,如果誤差越大,參數調整的幅度可能更小,訓練更緩慢。

? ??以一個神經元的二類分類訓練為例,進行兩次實驗(ANN常用的激活函數為sigmoid函數,該實驗也采用該函數):輸入一個相同的樣本數據x=1.0(該樣本對應的實際分類y=0);兩次實驗各自隨機初始化參數,從而在各自的第一次前向傳播后得到不同的輸出值,形成不同的代價(誤差):

在實驗1中,隨機初始化參數,使得第一次輸出值為0.82(該樣本對應的實際值為0);經過300次迭代訓練后,輸出值由0.82降到0.09,逼近實際值。而在實驗2中,第一次輸出值為0.98,同樣經過300迭代訓練,輸出值只降到了0.20。

? ??從兩次實驗的代價曲線中可以看出: 實驗1的代價隨著訓練次數增加而快速降低,但實驗2的代價在一開始下降得非常緩慢;直觀上看,初始的誤差越大,收斂得越緩慢 。、

? ? ?其實,誤差大導致訓練緩慢的原因在于使用了二次代價函數。二次代價函數的公式如下: 其中,C表示代價,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數。為簡單起見,同樣一個樣本為例進行說明,此時二次代價函數為: ,a為神經元的實際輸出【 a=σ(z), where z=wx+b 】。

? ??目前訓練ANN最有效的算法是 反向傳播算法 。簡而言之,訓練ANN就是通過反向傳播代價,以減少代價為導向,調整參數。參數主要有:神經元之間的連接權重w,以及每個神經元本身的偏置b。調參的方式是采用梯度下降算法(Gradient descent),沿著梯度方向調整參數大小。w和b的梯度推導w為

其中,z表示神經元的輸入, 表示激活函數。從以上公式可以看出,w和b的梯度跟激活函數的梯度成正比,激活函數的梯度越大,w和b的大小調整得越快,訓練收斂得就越快。而神經網絡常用的激活函數為sigmoid函數,該函數的曲線如下所示:

因為sigmoid函數的性質,導致σ′(z)在z取大部分值時會很小(如下圖標出來的兩端,幾近于平坦),這樣會使得w和b更新非常慢(因為η * a * σ′(z)這一項接近于0)。

? ??如圖所示, 實驗2的初始輸出值(0.98)對應的梯度明顯小于實驗1的輸出值(0.82),因此實驗2的參數梯度下降得比實驗1慢。這就是初始的代價(誤差)越大,導致訓練越慢的原因。 與我們的期望不符,即:不能像人一樣,錯誤越大,改正的幅度越大,從而學習得越快。

? ??可能有人會說,那就選擇一個梯度不變化或變化不明顯的激活函數不就解決問題了嗎?那樣雖然簡單粗暴地解決了這個問題,但可能會引起其他更多更麻煩的問題。而且,類似sigmoid這樣的函數(比如tanh函數)有很多優點,非常適合用來做激活函數。

(2)交叉熵損失函數

? ? 交叉熵損失函數可以認為是真實輸出與預測輸出等結果分布等距離。其損失函數與softmax損失函數的區別在于一個標簽是否是one-hot。與二次代價函數相比,它能更有效地促進ANN的訓練。

? ? 其公式為

其中,x表示樣本,n表示樣本的總數。那么,重新計算參數w的梯度:

? 這里

? ? 由于 。可證

w的梯度公式中原來的 被消掉了, 表示輸出值與實際值之間的誤差。所以,當誤差越大,梯度就越大,參數w調整得越快,訓練速度也就越快。

???同理可得,b的梯度表示 。實際情況證明,交叉熵代價函數帶來的訓練效果往往比二次代價函數要好。

那么交叉熵損失函數是如何提出的呢?

? ??????以偏置b的梯度計算為例,推導出交叉熵代價函數:

在均方誤差計算中

? ? ? 可以得到 ;想要消除 ,即得到 ;等式兩邊求積分得到

二、損失函數的分類

(1)分類問題

? ? 1、0-1損失函數

? ? ? ? ? ? 0-1損失函數表示當預測不正確的時候取值為1,否則取值為0。該損失函數能夠直觀的刻畫分類的錯誤率,但是由于其非凸、非光滑的特點,使得算法很難直接對該函數進行優化。

? ? 2、Hinge損失

???Hinge損失函數是0-1損失函數相對緊的凸上界,且當預測小于1的時候,該函數不對其做任何處罰。由于Hinge損失在f.y=1處不可導,因此不能使用梯度下降算法優化,而是使用次梯度下降法。

? ? 3、Logistic損失函數

???Logistic損失函數也是0-1損失函數的凸上界,且該函數處處光滑,因此可以使用梯度下降法進行優化。但是,該函數對所有樣本點都做懲罰,因此 對異常點更為敏感 。

? ? ?4、Cross Entropy

(2)回歸問題

? ? ? 1、均方差損失函數

???當預測值距離真實值越遠時,平方損失函數的懲罰力度越大,因此對異常點比較敏感。

? ? ? 2、絕對值損失函數

???絕對損失函數對異常點更魯棒。但是,絕對損失函數在f=y處無法求導。

? ? ? 3、Huber損失

???Huber損失函數在|f-y|較小時為平方損失,在|f-y|較大的時采用線性損失,處處可導,且對異常點魯棒。

從零開始用Python構建神經網絡

從零開始用Python構建神經網絡

動機:為了更加深入的理解深度學習,我們將使用 python 語言從頭搭建一個神經網絡,而不是使用像 Tensorflow 那樣的封裝好的框架。我認為理解神經網絡的內部工作原理,對數據科學家來說至關重要。

這篇文章的內容是我的所學,希望也能對你有所幫助。

神經網絡是什么?

介紹神經網絡的文章大多數都會將它和大腦進行類比。如果你沒有深入研究過大腦與神經網絡的類比,那么將神經網絡解釋為一種將給定輸入映射為期望輸出的數學關系會更容易理解。

神經網絡包括以下組成部分

? 一個輸入層,x

? 任意數量的隱藏層

? 一個輸出層,?

? 每層之間有一組權值和偏置,W and b

? 為隱藏層選擇一種激活函數,σ。在教程中我們使用 Sigmoid 激活函數

下圖展示了 2 層神經網絡的結構(注意:我們在計算網絡層數時通常排除輸入層)

2 層神經網絡的結構

用 Python 可以很容易的構建神經網絡類

訓練神經網絡

這個網絡的輸出 ? 為:

你可能會注意到,在上面的等式中,輸出 ? 是 W 和 b 函數。

因此 W 和 b 的值影響預測的準確率. 所以根據輸入數據對 W 和 b 調優的過程就被成為訓練神經網絡。

每步訓練迭代包含以下兩個部分:

? 計算預測結果 ?,這一步稱為前向傳播

? 更新 W 和 b,,這一步成為反向傳播

下面的順序圖展示了這個過程:

前向傳播

正如我們在上圖中看到的,前向傳播只是簡單的計算。對于一個基本的 2 層網絡來說,它的輸出是這樣的:

我們在 NeuralNetwork 類中增加一個計算前向傳播的函數。為了簡單起見我們假設偏置 b 為0:

但是我們還需要一個方法來評估預測結果的好壞(即預測值和真實值的誤差)。這就要用到損失函數。

損失函數

常用的損失函數有很多種,根據模型的需求來選擇。在本教程中,我們使用誤差平方和作為損失函數。

誤差平方和是求每個預測值和真實值之間的誤差再求和,這個誤差是他們的差值求平方以便我們觀察誤差的絕對值。

訓練的目標是找到一組 W 和 b,使得損失函數最好小,也即預測值和真實值之間的距離最小。

反向傳播

我們已經度量出了預測的誤差(損失),現在需要找到一種方法來傳播誤差,并以此更新權值和偏置。

為了知道如何適當的調整權值和偏置,我們需要知道損失函數對權值 W 和偏置 b 的導數。

回想微積分中的概念,函數的導數就是函數的斜率。

梯度下降法

如果我們已經求出了導數,我們就可以通過增加或減少導數值來更新權值 W 和偏置 b(參考上圖)。這種方式被稱為梯度下降法。

但是我們不能直接計算損失函數對權值和偏置的導數,因為在損失函數的等式中并沒有顯式的包含他們。因此,我們需要運用鏈式求導發在來幫助計算導數。

鏈式法則用于計算損失函數對 W 和 b 的導數。注意,為了簡單起見。我們只展示了假設網絡只有 1 層的偏導數。

這雖然很簡陋,但是我們依然能得到想要的結果—損失函數對權值 W 的導數(斜率),因此我們可以相應的調整權值。

現在我們將反向傳播算法的函數添加到 Python 代碼中

為了更深入的理解微積分原理和反向傳播中的鏈式求導法則,我強烈推薦 3Blue1Brown 的如下教程:

Youtube:

整合并完成一個實例

既然我們已經有了包括前向傳播和反向傳播的完整 Python 代碼,那么就將其應用到一個例子上看看它是如何工作的吧。

神經網絡可以通過學習得到函數的權重。而我們僅靠觀察是不太可能得到函數的權重的。

讓我們訓練神經網絡進行 1500 次迭代,看看會發生什么。 注意觀察下面每次迭代的損失函數,我們可以清楚地看到損失函數單調遞減到最小值。這與我們之前介紹的梯度下降法一致。

讓我們看看經過 1500 次迭代后的神經網絡的最終預測結果:

經過 1500 次迭代訓練后的預測結果

我們成功了!我們應用前向和方向傳播算法成功的訓練了神經網絡并且預測結果收斂于真實值。

注意預測值和真實值之間存在細微的誤差是允許的。這樣可以防止模型過擬合并且使得神經網絡對于未知數據有著更強的泛化能力。

下一步是什么?

幸運的是我們的學習之旅還沒有結束,仍然有很多關于神經網絡和深度學習的內容需要學習。例如:

? 除了 Sigmoid 以外,還可以用哪些激活函數

? 在訓練網絡的時候應用學習率

? 在面對圖像分類任務的時候使用卷積神經網絡

我很快會寫更多關于這個主題的內容,敬請期待!

最后的想法

我自己也從零開始寫了很多神經網絡的代碼

雖然可以使用諸如 Tensorflow 和 Keras 這樣的深度學習框架方便的搭建深層網絡而不需要完全理解其內部工作原理。但是我覺得對于有追求的數據科學家來說,理解內部原理是非常有益的。

這種練習對我自己來說已成成為重要的時間投入,希望也能對你有所幫助

機器學習中的損失函數

機器學習中的損失函數

損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。模型的結構風險函數包括了經驗風險項和正則項,通常可以表示成如下式子:

其中,前面的均值函數表示的是經驗風險函數,L代表的是損失函數,后面的是正則化項(regularizer)或者叫懲罰項(penalty term),它可以是L1,也可以是L2,或者其他的正則函數。整個式子表示的意思是找到使目標函數最小時的值。下面主要列出幾種常見的損失函數。

一、log對數損失函數(邏輯回歸)

有些人可能覺得邏輯回歸的損失函數就是平方損失,其實并不是。平方損失函數可以通過線性回歸在假設樣本是高斯分布的條件下推導得到,而邏輯回歸得到的并不是平方損失。在邏輯回歸的推導中,它假設樣本服從伯努利分布(0-1分布),然后求得滿足該分布的似然函數,接著取對數求極值等等。而邏輯回歸并沒有求似然函數的極值,而是把極大化當做是一種思想,進而推導出它的經驗風險函數為:最小化負的似然函數(即max F(y, f(x)) —- min -F(y, f(x)))。從損失函數的視角來看,它就成了log損失函數了。

log損失函數的標準形式:

L(Y,P(Y|X))=?logP(Y|X)L(Y,P(Y|X))=?log?P(Y|X)剛剛說到,取對數是為了方便計算極大似然估計,因為在MLE中,直接求導比較困難,所以通常都是先取對數再求導找極值點。損失函數L(Y, P(Y|X))表達的是樣本X在分類Y的情況下,使概率P(Y|X)達到最大值(換言之,就是利用已知的樣本分布,找到最有可能(即最大概率)導致這種分布的參數值;或者說什么樣的參數才能使我們觀測到目前這組數據的概率最大)。因為log函數是單調遞增的,所以logP(Y|X)也會達到最大值,因此在前面加上負號之后,最大化P(Y|X)就等價于最小化L了。

邏輯回歸的P(Y=y|x)表達式如下:P(Y=y|x)=11+exp(?yf(x))P(Y=y|x)=11+exp(?yf(x))

將它帶入到上式,通過推導可以得到logistic的損失函數表達式,如下:

L(y,P(Y=y|x))=log(1+exp(?yf(x)))L(y,P(Y=y|x))=log?(1+exp(?yf(x)))

邏輯回歸最后得到的目標式子如下:

如果是二分類的話,則m值等于2,如果是多分類,m就是相應的類別總個數。這里需要解釋一下:之所以有人認為邏輯回歸是平方損失,是因為在使用梯度下降來求最優解的時候,它的迭代式子與平方損失求導后的式子非常相似,從而給人一種直觀上的錯覺。

這里有個PDF可以參考一下:Lecture 6: logistic regression.pdf.

二、平方損失函數(最小二乘法, Ordinary Least Squares )

最小二乘法是線性回歸的一種,OLS將問題轉化成了一個凸優化問題。在線性回歸中,它假設樣本和噪聲都服從高斯分布(為什么假設成高斯分布呢?其實這里隱藏了一個小知識點,就是中心極限定理,可以參考【central limit theorem】),最后通過極大似然估計(MLE)可以推導出最小二乘式子。最小二乘的基本原則是:最優擬合直線應該是使各點到回歸直線的距離和最小的直線,即平方和最小。換言之,OLS是基于距離的,而這個距離就是我們用的最多的歐幾里得距離。為什么它會選擇使用歐式距離作為誤差度量呢(即Mean squared error, MSE),主要有以下幾個原因:

簡單,計算方便;

歐氏距離是一種很好的相似性度量標準;

在不同的表示域變換后特征性質不變。

平方損失(Square loss)的標準形式如下:

(Y,f(X))=(Y?f(X))2L(Y,f(X))=(Y?f(X))2

當樣本個數為n時,此時的損失函數變為:

Y-f(X)表示的是殘差,整個式子表示的是殘差的平方和,而我們的目的就是最小化這個目標函數值(注:該式子未加入正則項),也就是最小化殘差的平方和(residual sum of squares,RSS)。

而在實際應用中,通常會使用均方差(MSE)作為一項衡量指標,公式如下:

MSE=1n∑i=1n(Yi~?Yi)2MSE=1n∑i=1n(Yi~?Yi)2

上面提到了線性回歸,這里額外補充一句,我們通常說的線性有兩種情況,一種是因變量y是自變量x的線性函數,一種是因變量y是參數的線性函數。在機器學習中,通常指的都是后一種情況。

三、指數損失函數(Adaboost)

學過Adaboost算法的人都知道,它是前向分步加法算法的特例,是一個加和模型,損失函數就是指數函數。在Adaboost中,經過m此迭代之后,可以得到:

Adaboost每次迭代時的目的是為了找到最小化下列式子時的參數 和G:

而指數損失函數(exp-loss)的標準形式如下

可以看出,Adaboost的目標式子就是指數損失,在給定n個樣本的情況下,Adaboost的損失函數為:

關于Adaboost的推導,可以參考Wikipedia:AdaBoost或者《統計學習方法》P145.

四、Hinge損失函數(SVM)

在機器學習算法中,hinge損失函數和SVM是息息相關的。在線性支持向量機中,最優化問題可以等價于下列式子:

下面來對式子做個變形,令:

于是,原式就變成了:

如若取,式子就可以表示成:

可以看出,該式子與下式非常相似:

前半部分中的就是hinge損失函數,而后面相當于L2正則項。

Hinge 損失函數的標準形式

可以看出,當|y|=1時,L(y)=0。

更多內容,參考Hinge-loss。

補充一下:在libsvm中一共有4中核函數可以選擇,對應的是-t參數分別是:

0-線性核;

1-多項式核;

2-RBF核;

3-sigmoid核。

五、其它損失函數

除了以上這幾種損失函數,常用的還有:

0-1損失函數

絕對值損失函數

下面來看看幾種損失函數的可視化圖像,對著圖看看橫坐標,看看縱坐標,再看看每條線都表示什么損失函數,多看幾次好好消化消化。

OK,暫時先寫到這里,休息下。最后,需要記住的是:參數越多,模型越復雜,而越復雜的模型越容易過擬合。過擬合就是說模型在訓練數據上的效果遠遠好于在測試集上的性能。此時可以考慮正則化,通過設置正則項前面的hyper parameter,來權衡損失函數和正則項,減小參數規模,達到模型簡化的目的,從而使模型具有更好的泛化能力。


名稱欄目:python常用損失函數的簡單介紹
轉載注明:http://www.xueling.net.cn/article/phpidi.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲色图清纯制服 | 深夜福利小视频在线观看 | 久久久久亚洲av成人片仓井空 | av不卡免费在线 | 黄频视频大全免费的国产 | 欧美大片首页欧美大片首页 | 白娘子传奇50集免费观看 | 日韩毛片国产精品一区二区 | 免费av福利在线观看 | 精品在免费线 | 日本精品久久久 | 9色av | 欧美精品久久99人妻无码 | 性成熟黑人双插美国1819 | 91在线视频福利 | 视频免费网站入口 | 午夜免费看视频 | 亚洲网站在线免费观看 | 综合久久精品 | 久久久九九九热 | 内射囯产旡码丰满少妇 | 国产精品久久久久久久久久久久人四虎 | 精品一区二区三区免费看 | 超碰人人人人 | 久久国产亚洲婷婷六月丁香 | 国产成人精品123区免费视频 | 亚洲成人av片 | 成人av在线影院 | 国产精品成人片在线观看 | 国产精品手机视频一区二区 | 91传媒在线?看 | 草逼欧美 | 国产精品嫩草33av在线 | jlzzjlzz国产精品久久 | 在线观看亚洲免费 | 每日更新av在线播放 | 九一在线看 | 999亚洲精品无码久久久久 | 国产精品二区在线观看 | 日韩综合AV一区二区三区在线 | 91久久香蕉国产熟女线看 |