1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 4540字,需瀏覽 10分鐘

         ·

        2020-10-29 02:40

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

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

        極市導(dǎo)讀

        ?

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

        介紹

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

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

        動(dòng)機(jī)

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

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

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

        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ù)

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

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

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

        如果我們擬合模型來(lái)執(zhí)行此分類(lèi),它將預(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ì)于像我們的示例這樣的二分類(lèi)典型的損失函數(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ù)概率。看起來(lái)不難,但好像不大直觀……

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        由于我們正在嘗試計(jì)算損失,因此我們需要對(duì)錯(cuò)誤的預(yù)測(cè)進(jìn)行懲罰,對(duì)吧?如果實(shí)際的類(lèi)的概率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í)際的類(lèi)的預(yù)測(cè)概率越來(lái)越接近于零,則損失指數(shù)增長(zhǎng)▲?圖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ù)在所有方面的作用,好, 我們開(kāi)始吧:-)

        分布

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

        熵(Entropy)

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

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

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

        ▲?一半一半分布的熵

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

        ▲?熵

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

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

        交叉熵(Cross-Entropy)

        假設(shè)我們的點(diǎn)遵循這個(gè)其它分布p(y)?。但是,我們知道它們實(shí)際上來(lái)自真未知)分布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)……但是,這不就是我們的分類(lèi)器應(yīng)該做的嗎?確實(shí)如此!它尋找可能最佳p(y),以最小化交叉熵的值。

        損失函數(shù)

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

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

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

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

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

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

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

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

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

        最后

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

        來(lái)源:https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-explanation-a3ac6025181a


        推薦閱讀



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

        添加極市小助手微信(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+來(lái)自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺(jué)開(kāi)發(fā)者互動(dòng)交流~

        △長(zhǎng)按添加極市小助手

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

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            青青成人网 | 色人人 | 色精品视频 | 我与喂奶少妇啪啪全过程 | 操逼在线免费观看 | 国产淫乱Av片 | 黄色裸体录像 | 精品久久久久久久 | 日韩视频久久 | 9超碰 |