詳解並行邏輯回歸

2020-12-14 CSDN技術社區

編者按:回歸其實就是對已知公式的未知參數進行估計,Logistic regression是線性回歸的一種,是機器學習中十分常用的一種分類算法,在網際網路領域得到了廣泛的應用。本文來自騰訊馮揚的博客:並行邏輯回歸 ,主要從並行化的角度討論LR的實現。


CSDN推薦:歡迎免費訂閱《Hadoop與大數據周刊》獲取更多Hadoop技術文獻、大數據技術分析、企業實戰經驗,生態圈發展趨勢。


以下為原文:

邏輯回歸(Logistic Regression,簡稱LR)是機器學習中十分常用的一種分類算法,在網際網路領域得到了廣泛的應用,無論是在廣告系統中進行CTR預估,推薦系統中的預估轉換率,反垃圾系統中的識別垃圾內容……都可以看到它的身影。LR以其簡單的原理和應用的普適性受到了廣大應用者的青睞。實際情況中,由於受到單機處理能力和效率的限制,在利用大規模樣本數據進行訓練的時候往往需要將求解LR問題的過程進行並行化,本文從並行化的角度討論LR的實現。

1. LR的基本原理和求解方法

LR模型中,通過特徵權重向量對特徵向量的不同維度上的取值進行加權,並用邏輯函數將其壓縮到0~1的範圍,作為該樣本為正樣本的概率。邏輯函數為,曲線如圖1。


圖1 邏輯函數曲線

給定M個訓練樣本,其中Xj={xji|i=1,2,…N} 為N維的實數向量(特徵向量,本文中所有向量不作說明都為列向量);yj取值為+1或-1,為分類標籤,+1表示樣本為正樣本,-1表示樣本為負樣本。在LR模型中,第j個樣本為正樣本的概率是:

其中W是N維的特徵權重向量,也就是LR問題中要求解的模型參數。

求解LR問題,就是尋找一個合適的特徵權重向量W,使得對於訓練集裡面的正樣本,值儘量大;對於訓練集裡面的負樣本,這個值儘量小(或

儘量大)。用聯合概率來表示:

對上式求log並取負號,則等價於:

                                                公式(1)

公式(1)就是LR求解的目標函數。

尋找合適的W令目標函數f(W)最小,是一個無約束最優化問題,解決這個問題的通用做法是隨機給定一個初始的W0,通過迭代,在每次迭代中計算目標函數的下降方向並更新W,直到目標函數穩定在最小的點。如圖2所示。


圖2 求解最優化目標函數的基本步驟

不同的優化算法的區別就在於目標函數下降方向Dt的計算。下降方向是通過對目標函數在當前的W下求一階倒數(梯度,Gradient)和求二階導數(海森矩陣,Hessian Matrix)得到。常見的算法有梯度下降法、牛頓法、擬牛頓法。

(1) 梯度下降法(Gradient Descent)

梯度下降法直接採用目標函數在當前W的梯度的反方向作為下降方向:

其中為目標函數的梯度,計算方法為:

公式(2)

(2) 牛頓法(Newton Methods)

牛頓法是在當前W下,利用二次泰勒展開近似目標函數,然後利用該近似函數來求解目標函數的下降方向:。其中Bt為目標函數f(W)在Wt處的海森矩陣。這個搜索方向也稱作牛頓方向。

(3) 擬牛頓法(Quasi-Newton Methods):

擬牛頓法只要求每一步迭代中計算目標函數的梯度,通過擬合的方式找到一個近似的海森矩陣用於計算牛頓方向。最早的擬牛頓法是DFP(1959年由W. C. Davidon提出,並由R. Fletcher和M. J. D. Powell進行完善)。DFP繼承了牛頓法收斂速度快的優點,並且避免了牛頓法中每次迭代都需要重新計算海森矩陣的問題,只需要利用梯度更新上一次迭代得到的海森矩陣,但缺點是每次迭代中都需要計算海森矩陣的逆,才能得到牛頓方向。

BFGS是由C. G. Broyden, R. Fletcher, D. Goldfarb和D. F. Shanno各自獨立發明的一種方法,只需要增量計算海森矩陣的逆Ht=Bt-1,避免了每次迭代中的矩陣求逆運算。BFGS中牛頓方向表示為:

L-BFGS(Limited-memory BFGS)則是解決了BFGS中每次迭代後都需要保存N*N階海森逆矩陣的問題,只需要保存每次迭代的兩組向量和一組標量即可:

在L-BFGS的第t次迭代中,只需要兩步循環既可以增量計算牛頓方向:

2. 並行LR的實現

由邏輯回歸問題的求解方法中可以看出,無論是梯度下降法、牛頓法、擬牛頓法,計算梯度都是其最基本的步驟,並且L-BFGS通過兩步循環計算牛頓方向的方法,避免了計算海森矩陣。因此邏輯回歸的並行化最主要的就是對目標函數梯度計算的並行化。從公式(2)中可以看出,目標函數的梯度向量計算中只需要進行向量間的點乘和相加,可以很容易將每個迭代過程拆分成相互獨立的計算步驟,由不同的節點進行獨立計算,然後歸併計算結果。

將M個樣本的標籤構成一個M維的標籤向量,M個N維特徵向量構成一個M*N的樣本矩陣,如圖3所示。其中特徵矩陣每一行為一個特徵向量(M行),列為特徵維度(N列)。


圖3 樣本標籤向量 & 特徵向量

如果將樣本矩陣按行劃分,將樣本特徵向量分布到不同的計算節點,由各計算節點完成自己所負責樣本的點乘與求和計算,然後將計算結果進行歸併,則實現了「按行並行的LR」。按行並行的LR解決了樣本數量的問題,但是實際情況中會存在針對高維特徵向量進行邏輯回歸的場景(如廣告系統中的特徵維度高達上億),僅僅按行進行並行處理,無法滿足這類場景的需求,因此還需要按列將高維的特徵向量拆分成若干小的向量進行求解。

 (1) 數據分割

假設所有計算節點排列成m行n列(m*n個計算節點),按行將樣本進行劃分,每個計算節點分配M/m個樣本特徵向量和分類標籤;按列對特徵向量進行切分,每個節點上的特徵向量分配N/n維特徵。如圖4所示,同一樣本的特徵對應節點的行號相同,不同樣本相同維度的特徵對應節點的列號相同。


圖4 並行LR中的數據分割

一個樣本的特徵向量被拆分到同一行不同列的節點中,即:

其中Xr,k表示第r行的第k個向量,X(r,c),k表示Xr,k在第c列節點上的分量。同樣的,用Wc表示特徵向量W在第c列節點上的分量,即:


(2) 並行計算

觀察目標函數的梯度計算公式(公式(2)),其依賴於兩個計算結果:特徵權重向量Wt和特徵向量Xj的點乘,標量和特徵向量Xj的相乘。可以將目標函數的梯度計算分成兩個並行化計算步驟和兩個結果歸併步驟:

① 各節點並行計算點乘,計算,其中k=1,2,…,M/m表示第t次迭代中節點(r,c)上的第k個特徵向量與特徵權重分量的點乘,Wc,t為第t次迭代中特徵權重向量在第c列節點上的分量。

②對行號相同的節點歸併點乘結果:


計算得到的點乘結果需要返回到該行所有計算節點中,如圖5所示。
             
                                                           圖5 點乘結果歸併


③ 各節點獨立算標量與特徵向量相乘:

G(r,c),t可以理解為由第r行節點上部分樣本計算出的目標函數梯度向量在第c列節點上的分量。

④ 對列號相同的節點進行歸併:

Gc,t就是目標函數的梯度向量Gt在第c列節點上的分量,對其進行歸併得到目標函數的梯度向量:

這個過程如圖6所示。


圖6 梯度計算結果歸併

綜合上述步驟,並行LR的計算流程如圖7所示。比較圖1和圖7,並行LR實際上就是在求解損失函數最優解的過程中,針對尋找損失函數下降方向中的梯度方向計算作了並行化處理,而在利用梯度確定下降方向的過程中也可以採用並行化(如L-BFGS中的兩步循環法求牛頓方向)。


圖7 並行LR計算流程

3. 實驗及結果

利用MPI,分別基於梯度下降法(MPI_GD)和L-BFGS(MPI_L-BFGS)實現並行LR,以Liblinear為基準,比較三種方法的訓練效率。Liblinear是一個開源庫,其中包括了基於TRON的LR(Liblinear的開發者Chih-Jen Lin於1999年創建了TRON方法,並且在論文中展示單機情況下TRON比L-BFGS效率更高)。由於Liblinear並沒有實現並行化(事實上是可以加以改造的),實驗在單機上進行,MPI_GD和MPI_L-BFGS均採用10個進程。

實驗數據是200萬條訓練樣本,特徵向量的維度為2000,正負樣本的比例為3:7。採用十折交叉法比較MPI_GD、MPI_L-BFGS以及Liblinear的分類效果。結果如圖8所示,三者幾乎沒有區別。


圖8 分類效果對比

將訓練數據由10萬逐漸增加到200萬,比較三種方法的訓練耗時,結果如圖9,MPI_GD由於收斂速度慢,儘管採用10個進程,單機上的表現依舊弱於Liblinear,基本上都需要30輪左右的迭代才能達到收斂;MPI_L-BFGS則只需要3~5輪迭代即可收斂(與Liblinear接近),雖然每輪迭代需要額外的開銷計算牛頓方向,其收斂速度也要遠遠快於MPI_GD,另外由於採用多進程並行處理,耗時也遠低於Liblinear。


圖9 訓練耗時對比

相關焦點

  • 線性回歸分析詳解10(完結篇):線性回歸分析預測的十大步驟
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第10章,這是本專欄的最後一章,是專欄的完結篇:用線性回歸分析做預測,多元線性回歸分析預測的十大步驟。線性回歸分析專格欄總目錄請見上圖,前9章,我分別講述了回歸分析及與回分析相關的概念,一元、多元線性回歸分析的公式與計算方法,以及多重共線性、回歸方程的精度、顯著性驗證和置信區間等進行回歸分析的重要步驟及其計算方法。至此,以回歸分析進行需求預測的各項知識點及各項準備工作全部完成,我們可以正式的以回歸分析進行需求預測。
  • 線性回歸分析詳解7:多元回歸方程的精度,R平方與調整後的R平方
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第七章,回歸方程的精度,R平方與調整後的R平方。多元線性回歸分析,我們在求出多元線性回歸方程後,這個方程到底怎麼樣,能不能起到效果,需要對求出的回歸方程進行一系列評價和評估。這些評價和評估,首先要做的,是確認回歸方程的精度。本章,我將分如下三個小節講述回歸方程的精度,歡迎閱讀與探討。我的《線性回歸分析》專欄總目錄見下圖。
  • 《dnf》回歸活動熱心硬幣攻略 回歸活動熱心硬幣獲取途徑介紹
    導 讀 dnf回歸活動熱心硬幣如何得?
  • 線性回歸分析詳解9:顯著性水平、置信度、置信區間及其計算方法
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第9章,總體回歸、置信度、置信區間及其計算方法。多元回歸方程求解後,我們分別確認了回歸方程的精度和進行了回歸方程的顯著性驗證,接下來,需要計算置信區間。置信區間是回歸分析的一個重要概念,但是,將回歸分析應用到需求預測時,並不強求引入置信區間,也就是說,用回歸分析做需求預測時,可以不進行置信區間的計算,而直接進行後續的預測步驟。所以,從這一點來說,大家可以跳過本章,直接進入專欄的第10章,用線性回歸分析進行預測。
  • 線性回歸:簡單線性回歸詳解
    【導讀】本文是一篇專門介紹線性回歸的技術文章,討論了機器學習中線性回歸的技術細節。線性回歸核心思想是獲得最能夠擬合數據的直線。
  • 什麼是回歸?什麼是回歸分析?回歸分析預測的分類方法有哪些?
    大家好,歡迎來到許栩原創專欄《從入門到高手:線性回歸分析詳解》,本篇是專欄的第三篇文章,回歸分析的歷史、概念和分類。本專欄第一章和第二章,我分別講解了學習回歸分析之前必須了解的兩個基礎概念:變量和相關性。
  • 歷史回歸中考,最該歡呼的是誰?
    2、歷史的回歸帶給語文教學極大的裨益語文老師很多時候不得不為歷史學科的缺位埋單。無論是因為學生歷史常識的匱乏而不得不勻出語文教學的時間來為之解釋一些本不必解釋的歷史背景,還是為了學生作文無話可寫而操心無奈不得不親身上陣為其翻檢歷史寶藏尋求合適的素材,抑或是其他類似的場景,語文老師往往兼任了歷史老師的角色,這就不可避免給語文老師的教學增添了負擔,而歷史的回歸無疑帶給了語文教學極大的裨益。
  • 「DNF」大富翁活動回歸,快速通關技巧及小遊戲玩法詳解
    【DNF】大富翁活動回歸,快速通關技巧及小遊戲玩法詳解在12.10的版本中,DNF經典的小遊戲大富翁活動也是再度回歸,通過玩小遊戲勇士們還可以獲得畢業附魔寶珠等一系列超值獎勵,實在是讓人香個不停。
  • 多元線性回歸分析:納入多元回歸自變量的確定及求解多元回歸方程
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第五章,多元線性回歸分析:如何求解多元線性回歸方程。在前面的章節中我講到,實際需求預測場景中,通常,影響需求的因素不止一個,對需求影響的因素可能多種多樣,也就是說自變量多種多樣,很少能用單一的變量(也即一元線性回歸分析)來做好需求預測。這時,我們需要用到多元線性回歸分析。回歸分析在需求預測的應用,也主要是多元線性回歸分析。
  • 機器學習之詳解Logistic回歸
    )以及在Python中利用Scikit-Learn提供的函數進行基於Logistic回歸的數據挖掘的一般方法。而本文旨在從源頭上解釋一下Logistic回歸的原理到底是什麼。 英文單詞Regression翻譯成中文「回歸」,那什麼是回歸呢?事實上,在Logistic回歸出現以前,人們最先引入的是線性回歸。了解二者之間的來龍去脈將幫助你更深刻地認識Logistic回歸。
  • 2021年統計學考研真題(含複試)與典型題詳解目錄—學盛通
    第3章 數據的圖表展示3.1 知識要點總結3.2 考研真題與典型題詳解第4章 數據的概括性度量4.1 知識要點總結4.2 考研真題與典型題詳解>第5章 概率基礎5.1 知識要點總結5.2 考研真題與典型題詳解第6章 統計量及其抽樣分布6.1 知識要點總結6.2 考研真題與典型題詳解第7
  • DNF:詳解DNF傷害來源,一步步做到回歸也能成大佬
    作者:千秋 很多回歸的小夥伴都會發出這樣的疑問:我的裝備水平可以去打哪裡?我可以怎麼提升自己的傷害水平?但是,鑑於各位回歸小夥伴的裝備水平均有不同,筆者將會詳細為大家詳解DNF傷害來源,幫助各位回歸小夥伴查漏補缺。
  • 【SPSS數據分析】最小二乘回歸模型在生物醫藥統計分析中的應用詳解(2)——【杏花開生物醫藥統計】
    上期,我們詳細講解了兩階段最小二乘回歸模型的操作與結果分析(引入第三類變量),具體請看:最小二乘回歸模型在生物醫藥統計分析中的應用詳解(1)    本期我們來詳細講解兩階段最小二乘回歸在SPSS中一次性的操作方法(無需引入第三類變量)。
  • 用Excel求解回歸方程的3種方法:LINEST、散點圖和數據分析工具
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第四章,一元線性回歸分析。實際場景中,對需求影響的因素很多,也就是說自變量很多,很少能用單一的變量,也即一元回歸分析來做好預測。回歸分析在預測裡的應用,主要是多元回歸。
  • 詳解VLOOKUP函數多條件查找,原理+實操,一次性講清楚
    思考:針對此種問題,無論查找日期還是姓名,都是存在多個的情況,碰到這種情況,我們需要形成唯一值,然後「回歸」到VLOOKUP函數的基礎用法。本例中,要形成唯一值,日期和姓名兩者結合會形成唯一值,所以我們可以用文本連接符「&」把日期和姓名連接起來。
  • 【強基固本】邊框回歸(Bounding Box Regression)詳解
    這些paper中損失函數都包含了邊框回歸,除了rcnn詳細介紹了,其他的paper都是一筆帶過,或者直接引用rcnn就把損失函數寫出來了。前三條網上解釋比較多,後面的兩條我看了很多paper,才得出這些結論。
  • 小白學PyTorch | 12 SENet詳解及PyTorch實現
    > 小白學PyTorch | 11 MobileNet詳解及
  • 線性回歸方程的顯著性驗證,總體驗證的F檢驗與個體驗證的t檢驗
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第8章,顯著性驗證,總體驗證的F檢驗與個體驗證的t檢驗。上一章,我講述了回歸方程的精度,在回歸分析中,我們求出回歸方程後,除了確認回歸方程的精度外,我們要需要對回歸方程進行顯著性驗證,以確認回歸方程的有效性。本章,我同樣分如下三個小節對顯著性驗證進行講解,歡迎閱讀與探討。我的《線性回歸分析》專欄總目錄見下圖。1、什麼是顯著性驗證?
  • 乾貨 | MTCNN實時人臉檢測網絡詳解與代碼演示
    階段方法詳解第一階段網絡是全卷積神經網絡是一個推薦網絡簡稱 P-Net, 主要功能是獲得臉部區域的窗口與邊界Box回歸,獲得的臉部區域窗口會通過BB回歸的結果進行校正,然後使用非最大壓制(NMS)合併重疊窗口。
  • DNF體驗服:回歸硬幣實測,最簡單玩法推薦,每天只需消耗80點PL
    #百度APP遊戲年度票選活動#「地下城與勇士之小狐狸君愛談遊戲電競」第八百三十二期《DNF體驗服:回歸硬幣實測方便玩家刷夠回歸硬幣和熱心硬幣,拿到所有的獎勵!其中的紅字書、白金徽章……都是非常強勢的獎勵!