<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          可視化理解二值交叉熵/對(duì)數(shù)損失

          共 4540字,需瀏覽 10分鐘

           ·

          2020-10-29 02:40

          ↑ 點(diǎn)擊藍(lán)字?關(guān)注極市平臺(tái)

          作者丨Daniel Godoy
          來源丨PyVision
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

          ?

          損失函數(shù)通常用來評(píng)價(jià)模型的預(yù)測(cè)值和真實(shí)值不一樣的程度,損失函數(shù)越好,通常模型的性能越好。本文主要以清晰簡(jiǎn)潔的方式解釋了二值交叉熵/對(duì)數(shù)損失背后的概念。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

          介紹

          如果你正在訓(xùn)練一個(gè)二分類器,很有可能你正在使用的損失函數(shù)是二值交叉熵/對(duì)數(shù)(binary cross-entropy / log)。

          你是否想過使用此損失函數(shù)到底意味著什么?問題是,鑒于如今庫和框架的易用性,很容易讓人忽略所使用損失函數(shù)的真正含義。

          動(dòng)機(jī)

          我一直在尋找一個(gè)可以向?qū)W生展示的以清晰簡(jiǎn)潔可視化的方式解釋二值交叉熵/對(duì)數(shù)損失背后概念的博客文章。但由于我實(shí)在找不到,只好自己承擔(dān)了編寫的任務(wù):-)

          一個(gè)簡(jiǎn)單的分類問題

          讓我們從10個(gè)隨機(jī)點(diǎn)開始:

          x = [-2.2, -1.4, -0.8, 0.2, 0.4, 0.8, 1.2, 2.2, 2.9, 4.6]

          這是唯一的特征:x▲?圖0:特征

          現(xiàn)在,讓我們?yōu)辄c(diǎn)分配一些顏色紅色綠色。這些是我們的標(biāo)簽。▲?圖1:數(shù)據(jù)

          因此,我們的分類問題非常簡(jiǎn)單:給定特征x,我們需要預(yù)測(cè)其標(biāo)簽:紅或綠。

          由于這是二分類,我們還可以提出以下問題:“該點(diǎn)是綠色嗎??”,或者更好的問法,“?該點(diǎn)是綠色的概率是多少?” 理想情況下,綠點(diǎn)的概率為1.0(為綠色),而紅點(diǎn)的概率為0.0(為綠色)。

          在此設(shè)置中,綠點(diǎn)屬于正類,它們是綠色),而紅點(diǎn)屬于負(fù)類,它們不是綠色)。

          如果我們擬合模型來執(zhí)行此分類,它將預(yù)測(cè)每個(gè)點(diǎn)是綠色的概率。假定我們了解點(diǎn)的顏色,我們?nèi)绾?strong>評(píng)估預(yù)測(cè)概率的好壞?這就是損失函數(shù)的全部目的!對(duì)于錯(cuò)誤的預(yù)測(cè),它應(yīng)該返回高值,對(duì)于良好的預(yù)測(cè),它應(yīng)該返回低值。

          對(duì)于像我們的示例這樣的二分類,典型的損失函數(shù)binary cross-entropy / log。

          損失函數(shù):二值交叉熵/對(duì)數(shù)(Binary Cross-Entropy / Log )損失

          如果您查看此損失函數(shù),就會(huì)發(fā)現(xiàn):

          ▲?二值交叉熵/對(duì)數(shù)

          其中y標(biāo)簽綠色點(diǎn)為1 ,?紅色點(diǎn)為0),p(y)N個(gè)點(diǎn)為綠色的預(yù)測(cè)概率。

          這個(gè)公式告訴你,對(duì)于每個(gè)點(diǎn)(y = 1),它都會(huì)將_log(p(y))添加_到損失中,即,它為綠色的對(duì)數(shù)概率。相反,它為每個(gè)點(diǎn)(y = 0)添加_log(1-p(y))_,即它為紅色對(duì)數(shù)概率??雌饋聿浑y,但好像不大直觀……

          此外,與這一切有什么關(guān)系?我們?yōu)槭裁词紫纫?strong>對(duì)數(shù)概率?這些是有意義的問題,我希望在下面的“?向我展示數(shù)學(xué)?”部分中回答。

          但是,在介紹更多公式之前,讓我向你展示上述公式的直觀表示?...

          計(jì)算損失-可視化方式

          首先,讓我們根據(jù)它們的類(負(fù))分開所有點(diǎn),如下圖所示:▲?圖2:拆分?jǐn)?shù)據(jù)!

          現(xiàn)在,讓我們訓(xùn)練一個(gè)Logistic回歸來對(duì)我們的點(diǎn)進(jìn)行分類。擬合回歸是一個(gè)sigmoid曲線,代表對(duì)于任何給定的x,一個(gè)點(diǎn)是綠色的概率。看起來像這樣:▲?圖3:擬合Logistic回歸

          那么,對(duì)于屬于正類(綠色)的所有點(diǎn),我們的分類器給出的預(yù)測(cè)概率是多少?看sigmoid曲線下對(duì)應(yīng)點(diǎn)x坐標(biāo)上的綠色條。

          ▲?圖4:正確分類正類中的點(diǎn)的概率

          OK,到目前為止還不錯(cuò)!那負(fù)類的點(diǎn)又如何呢?請(qǐng)記住,sigmoid曲線下方綠色條表示給定點(diǎn)為綠色的概率。那么,給定點(diǎn)為紅色的概率是多少呢?當(dāng)然是sigmoid曲線以上的紅色條啦 :-)
          ▲?圖5:正確分類負(fù)類中的點(diǎn)的概率

          放在一起,我們最終得到這樣的結(jié)果:▲?圖6:所有概率加在一起!

          條形圖表示與每個(gè)點(diǎn)的對(duì)應(yīng)真實(shí)類別相關(guān)的預(yù)測(cè)概率!

          好的,我們有了預(yù)測(cè)的概率…是時(shí)候通過計(jì)算二值交叉熵/對(duì)數(shù)損失評(píng)估它們了!

          這些概率就是我們要的,因此,讓我們去掉x,將各個(gè)方條彼此相鄰:

          ▲?圖7:所有點(diǎn)的概率

          這樣,吊起來的方條不再有意義,所以讓我們重新定位一下:▲?圖8:所有點(diǎn)的概率—看起來好多了 :-)

          由于我們正在嘗試計(jì)算損失,因此我們需要對(duì)錯(cuò)誤的預(yù)測(cè)進(jìn)行懲罰,對(duì)吧?如果實(shí)際的類的概率1.0,我們需要它的損失。相反,如果概率低,比如0.01,我們需要它的損失是巨大的!

          事實(shí)證明,對(duì)于這個(gè)目的,采用概率(負(fù))對(duì)數(shù)非常適合(由于0.0和1.0之間的值的對(duì)數(shù)為負(fù),因此我們采用負(fù)對(duì)數(shù)以獲得損失的正值)。

          實(shí)際上,我們?yōu)榇耸褂脤?duì)數(shù)的原因是由于交叉熵的定義,請(qǐng)查看下面的“?告訴我數(shù)學(xué)?”部分,以獲取更多詳細(xì)信息。

          下面的圖給了我們一個(gè)清晰的展示 - 實(shí)際的類的預(yù)測(cè)概率越來越接近于零,則損失指數(shù)增長▲?圖9:不同概率的對(duì)數(shù)丟失

          很公平!讓我們?nèi)?/span>概率的(負(fù))log?-這些是每個(gè)點(diǎn)相應(yīng)的損失。

          最后,我們計(jì)算所有這些損失平均值。▲?圖10:最后,損失!

          瞧!我們已經(jīng)成功地計(jì)算了這個(gè)玩具示例的二值交叉熵/對(duì)數(shù)損失。是0.3329!

          給我看代碼

          如果你想仔細(xì)檢查我們得到的,只需運(yùn)行下面的代碼?:-)

          from?sklearn.linear_model?import?LogisticRegression
          from?sklearn.metrics?import?log_loss
          import?numpy?as?np

          x?=?np.array([-2.2,?-1.4,?-.8,?.2,?.4,?.8,?1.2,?2.2,?2.9,?4.6])
          y?=?np.array([0.0,?0.0,?1.0,?0.0,?1.0,?1.0,?1.0,?1.0,?1.0,?1.0])

          logr?=?LogisticRegression(solver='lbfgs')
          logr.fit(x.reshape(-1,?1),?y)

          y_pred?=?logr.predict_proba(x.reshape(-1,?1))[:,?1].ravel()
          loss?=?log_loss(y,?y_pred)

          print('x?=?{}'.format(x))
          print('y?=?{}'.format(y))
          print('p(y)?=?{}'.format(np.round(y_pred,?2)))
          print('Log?Loss?/?Cross?Entropy?=?{:.4f}'.format(loss))

          告訴我數(shù)學(xué)(真的嗎?!)

          這篇文章并不傾向于從數(shù)學(xué)上解釋……但是對(duì)于一些的讀者,希望了解,對(duì)數(shù)在所有方面的作用,好, 我們開始吧:-)

          分布

          讓我們從點(diǎn)的分布開始。y代表我們點(diǎn)的類別(我們有3個(gè)紅點(diǎn)7個(gè)綠點(diǎn)),這是它的分布,我們稱其為q(y),如下所示:▲?圖11:q(y),我們的點(diǎn)的分布

          熵(Entropy)

          熵是一個(gè)與給定的分布q(y)相關(guān)的不確定性的量度。

          如果我們所有的點(diǎn)都是綠色的,這種分布的不確定性是什么?,對(duì)嗎?畢竟,毫無疑問,點(diǎn)的顏色:它總是綠色!因此,熵為零

          另一方面,如果我們確切知道該點(diǎn)的一半綠色另一半是紅色?那是最壞的情況,對(duì)吧?我們絕對(duì)不可能猜到一個(gè)點(diǎn)的顏色:它是完全隨機(jī)的!在這種情況下,熵由下面的公式給出(我們有兩個(gè)類(顏色)–紅色或綠色-因此為2):

          ▲?一半一半分布的熵

          對(duì)于介于兩者之間的所有其它情況,我們可以用以下公式計(jì)算分布,例如q(y),其中_C_是類的數(shù)量:

          ▲?熵

          因此,如果我們知道隨機(jī)變量的真實(shí)分布,則可以計(jì)算其。但是,如果是這樣的話,為什么要訓(xùn)練分類器呢?畢竟,我們知道真正的分布…

          但是,如果我們不知道真實(shí)分布呢?我們可以嘗試用其他一些分布(例如p(y))來近似真實(shí)分布嗎?我們當(dāng)然可以!:-)

          交叉熵(Cross-Entropy)

          假設(shè)我們的點(diǎn)遵循這個(gè)其它分布p(y)?。但是,我們知道它們實(shí)際上來自真未知)分布q(y) ,對(duì)吧?

          如果我們這樣計(jì)算,我們實(shí)際上是在計(jì)算兩個(gè)分布之間的交叉熵

          ▲?交叉熵

          如果我們奇跡般地p(y)q(y)完美匹配,則交叉熵的計(jì)算值也將匹配

          由于這可能永遠(yuǎn)不會(huì)發(fā)生,因此交叉熵將比在真實(shí)分布上計(jì)算出的熵具有更大的值。▲?交叉熵減去熵

          事實(shí)上,交叉熵之間的差還有個(gè)名字……

          KL散度(Kullback-Leibler Divergence)

          Kullback-Leibler Divergence,簡(jiǎn)稱“?KL散度?”,是兩個(gè)分布之間差異的一種度量:

          ▲?KL散度

          這意味著,p(y)越接近q(y)?,差異越少,因此交叉熵也越小。

          因此,我們需要找到一個(gè)合適的p(y)……但是,這不就是我們的分類器應(yīng)該做的嗎?確實(shí)如此!它尋找可能最佳p(y),以最小化交叉熵的值。

          損失函數(shù)

          在訓(xùn)練過程中,分類器使用其訓(xùn)練集中的N個(gè)點(diǎn)中的每一個(gè)來計(jì)算交叉熵損失,從而有效地擬合分布p(y)!由于每個(gè)點(diǎn)的概率為1 / N,因此交叉熵的計(jì)算公式為:

          ▲?交叉熵 —— 點(diǎn)對(duì)點(diǎn)

          還記得上面的圖6至圖10嗎?我們需要在每個(gè)點(diǎn)的實(shí)際類相關(guān)概率上計(jì)算交叉熵。這意味著對(duì)正類(y = 1)中的點(diǎn)使用綠色條,對(duì)負(fù)類y = 0)中的點(diǎn)使用紅色的懸掛,或者從數(shù)學(xué)角度看:

          ▲?對(duì)應(yīng)于圖10的數(shù)學(xué)表達(dá)式 :-)

          最后一步是計(jì)算兩個(gè)正負(fù)類所有點(diǎn)的平均

          ▲?二進(jìn)制交叉熵 —— 在正負(fù)類上計(jì)算

          最后,我們通過一點(diǎn)小處理,正類或負(fù)類中任何一點(diǎn)都可以用相同的公式:

          ▲?二進(jìn)制交叉熵 —— 通用公式

          瞧!我們回到了二進(jìn)制交叉熵/對(duì)數(shù)損失原始公式?:-)

          最后

          我真的希望這篇文章能夠?yàn)橐粋€(gè)常被認(rèn)為是理所當(dāng)然的概念-?二值交叉熵作為損失函數(shù)的概念-提供的思路。此外,我也希望它能向您展示一些機(jī)器學(xué)習(xí)信息論如何聯(lián)系在一起的。

          來源:https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-explanation-a3ac6025181a


          推薦閱讀



          【極市1024開發(fā)者節(jié)】
          京東卡、算力棒、雙肩包、20本CV電子書籍(人人有份),掃碼查看

          添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳),即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群:月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~

          △長按添加極市小助手

          △長按關(guān)注極市平臺(tái),獲取最新CV干貨

          覺得有用麻煩給個(gè)在看啦~??
          瀏覽 180
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  蜜桃人妻系列 | 亚洲一片 | 色婷婷视频网站 | 中文无码影院 | 日韩性爱视频在线观看 |