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

          從零實現(xiàn)深度學習框架(十二)邏輯回歸簡介

          共 2665字,需瀏覽 6分鐘

           ·

          2022-01-21 00:06

          引言

          本著“凡我不能創(chuàng)造的,我就不能理解”的思想,本系列文章會基于純Python以及NumPy從零創(chuàng)建自己的深度學習框架,該框架類似PyTorch能實現(xiàn)自動求導。

          要深入理解深度學習,從零開始創(chuàng)建的經(jīng)驗非常重要,從自己可以理解的角度出發(fā),盡量不適用外部完備的框架前提下,實現(xiàn)我們想要的模型。本系列文章的宗旨就是通過這樣的過程,讓大家切實掌握深度學習底層實現(xiàn),而不是僅做一個調包俠。

          本文對邏輯回歸的原理進行簡單的介紹,包含公式推導。邏輯回歸是可以作為分類任務的基準,也是神經(jīng)網(wǎng)絡的基石。一個神經(jīng)網(wǎng)絡可以看成是一系列的邏輯回歸組成。所以掌握邏輯回歸就相當重要。

          回歸與分類

          我們前面學習的線性回歸屬于回歸問題,今天介紹的邏輯回歸屬于分類問題。

          回歸:預測一個連續(xù)值;

          分類:預測一個離散值;

          邏輯回歸雖然名字中包含回歸,實際上處理的是分類問題,為啥名字這么奇怪呢,有歷史原因,這里就不深究了。

          邏輯回歸用于處理二分類問題,所謂二分類問題,就是分類的類別只有兩個的問題。比如判斷郵件是否為垃圾、情緒分析中的情緒是正向的還是負向的等。

          那么邏輯回歸是如何處理二分類問題的呢?答案就是通過Sigmoid函數(shù)。

          機器學習分類器的核心組件

          邏輯回歸是一種基于監(jiān)督學習的分類器。機器學習分類器需要一個訓練集,包含個輸入/輸出對。一個分類機器學習系統(tǒng)有四個組件:

          1. 輸入的特征表示 對于每個輸入樣本,可以表示為特征向量,表示輸入的第個特征,有時簡記為
          2. 計算估計類別的分類函數(shù),通過
          3. 一個學習的目標函數(shù),通過計算訓練樣本上的最小化誤差
          4. 一個優(yōu)化目標函數(shù)的算法,常用的是隨機梯度下降法

          Sigmoid函數(shù)

          我們先來看下輸入的表示,通常我們有很多個輸入樣本。對于第個樣本,可以表示為特征向量,這里假設有個特征。

          考慮一個輸入樣本,表示為特征向量,輸出可能是,其中表示屬于某個類別的話,那么就表示不屬于那個類別。

          邏輯回歸從一個訓練集中學習權重向量和一個偏置。每個權重與輸入樣本中的一個特征綁定,最后加上偏置項。權重和偏置項都是實數(shù)。

          為了判斷類別,首先讓每個特征乘上對應的權重,然后加上,得到一個實數(shù),表示屬于該類別的依據(jù)。

          實數(shù)越大,表示該特征對屬于該類別的貢獻度越大。我們也可以通過線性代數(shù)中的點乘的方式來簡化這個公式:

          但是,這樣得到的顯然不是一個概率值,如果細心的童鞋可能回發(fā)現(xiàn),這不就是線性回歸的公式嗎。沒錯,但是邏輯回歸需要利用一個函數(shù)來把一個屬于的實數(shù)值轉換為之間的概率值。

          這個函數(shù)就是Sigmoid函數(shù),記為,也稱為邏輯函數(shù)。

          它的公式如下:

          它的函數(shù)圖像如下:

          img

          Sigmoid函數(shù)的優(yōu)點是:它可以將任意實數(shù)壓縮到之間,這剛好符合概率的定義。同時它是可導的。

          為了讓Sigmoid函數(shù)的輸出剛好是一個概率,我們要確保。我們來看是否具有這種性質:

          也就是說,Sigmoid函數(shù)還有以下性質:

          所以有

          決策邊界

          給定輸入,我們已經(jīng)知道了如何取計算屬于類別的概率

          但我們如何判斷是否屬于類別呢?直觀地,如果概率,我們就說它屬于該類別,否則不屬于該類別。那么就是決策邊界。

          邏輯回歸中的損失函數(shù)

          我們知道每個樣本對應的正確標簽。根據(jù)公式(4)算的是對真實的估計,我們想讓估計和真實越接近越好。這里的“接近”衡量的是距離,我們稱這種距離為損失(loss)或者代價(cost)。計算損失或代價的函數(shù)為損失函數(shù)或代價函數(shù)。

          給定樣本,我們需要一個損失函數(shù)來衡量類器的輸出()與真實輸出有多近??梢杂洖椋?/p>

          該函數(shù)傾向于模型更可能將訓練樣本分類成正確的類別。這稱為條件最大似然估計:我們選擇參數(shù)來最大化訓練數(shù)據(jù)中給定樣本屬于真實標簽的對數(shù)概率。此時對應的損失函數(shù)為負對數(shù)似然損失,通常稱為交叉熵損失。

          對于單個樣本,我們希望學到權重能最大化正確類別概率。由于只有兩個離散的輸出(0或1),這是一個伯努利分布,我們可以將分類器為一個樣本產(chǎn)生的概率表示為如下:

          如果正確類別,那么上式右邊簡化為;如果,那么簡化為

          我們把等式兩端取對數(shù),取對數(shù)并不會改變單調性:

          上式描述了一個應該最大化的對數(shù)似然。為了讓它變成損失函數(shù),我們增加一個負號,變成了交叉熵損失(loss of cross entropy):

          最終,我們代入:

          為什么最小化這個負對數(shù)似然就能實現(xiàn)我們想要的結果?一個完美的分類器會將正確的輸出標記為1,錯誤的輸出標記為0。意味著,如果,輸出越高,分類器越好,輸出的越低,分類器越差;如果,越大,分類器越好。

          的負對數(shù)(真實)或的負對數(shù)(真實)是一個方便的損失指標,因為它可以是從0(,代表沒有損失)到無窮大()。該損失函數(shù)也確保正確答案的概率最大化,錯誤答案的概率最小化;由于它們之和等于1,正確答案概率的任何增加都是以減少錯誤答案為代價的。

          梯度下降

          使用梯度下降的目的是找到最優(yōu)的權重:最小化損失函數(shù)。在下面的公式中,我們看到損失函數(shù)由權重參數(shù)化的,我們將在機器學習中將其稱為(在邏輯回歸中)。所以目標是找到權重集能最小化損失函數(shù),平均所有的樣本就是:

          我們如何找到這個損失函數(shù)的最小值呢?梯度下降是一種方法,通過計算函數(shù)的斜率向哪個方向(在參數(shù)θ的空間)上升得最陡峭,并朝著相反的方向移動來找到函數(shù)的最小值。

          對于邏輯回歸,損失函數(shù)是一個凸函數(shù),即只有一個最小值,所以梯度下降能保證從任意點都能達到最小值。而多層神經(jīng)網(wǎng)絡的損失函數(shù)時非凸的,可能受困于局部極小值。

          在一個真實的邏輯回歸中,參數(shù)向量的元素個數(shù)可能很多,即每個特征都有對應的權重。對于中的每個維度/變量(加上偏置),梯度將告訴我們該變量的斜率的部分。在每個維度,我們描述斜率為損失函數(shù)的偏導。本質上我們想知道:在變量上的一個小改變會影響總損失函數(shù)多少?

          因此,在形式上,多變量函數(shù)的梯度是一個向量,其中每個元素都表示相對于對應變量的偏導。我們將使用來指梯度,并將表示為:

          基于梯度更新參數(shù) 的式子為:

          邏輯回歸的梯度

          為了更新參數(shù),我們需要梯度的定義,我們知道邏輯回歸的交叉熵損失函數(shù)為:

          要求上式對某個參數(shù)的導數(shù),我們回顧一下:

          我們知道,。我們先計算,令:

          我們計算損失函數(shù)對某個權重的梯度:

          最后得到的結果很簡單,描述的就是預測值減去真實值乘上對應的輸出。

          總結

          本文我們了解了邏輯回歸的原理,下篇文章就來實現(xiàn)它。


          瀏覽 116
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  夜夜操天天 | 日韩精品免费在线观看 | 国产探花视频网站 | 91丨色丨国产熟女蘑菇 | 欧美一级片在线电影 |