日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】LR的分布式(并行化)实现

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】LR的分布式(并行化)实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

LR的基本原理及其推導可以參見邏輯斯蒂回歸(Logistic Regression)詳解

這里只略作回顧:

算法流程

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

LR方法通常采用的是梯度下降法,梯度下降法又有相當多的種類,在這里不做具體的介紹。

回歸梯度下降法的梯度更新公式(一般會取平均值):

并行LR的實現

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

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

圖1 樣本標簽向量?& 樣本矩陣標題

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

????(1) 數據分割

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

圖2 并行LR中的數據分割

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

其中表示第?行的第?個向量,表示在第?列節點上的分量。同樣的,用?表示特征向量?在第?列節點上的分量,即:

????(2) 并行計算

觀察目標函數的梯度計算公式,其依賴于兩個計算結果:特征權重向量和特征向量的點乘,標量和特征向量的相乘。其中可以將目標函數的梯度計算分成兩個并行化計算步驟和兩個結果歸并步驟:

?各節點并行計算點乘,計算,其中表示第?次迭代中節點上的第?個特征向量與特征權重分量的點乘,?為第?次迭代中特征權重向量在第?列節點上的分量。

?對行號相同的節點歸并點乘結果:

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

圖3 點乘結果歸并

?各節點獨立算標量與特征向量相乘:

可以理解為由第?行節點上部分樣本計算出的目標函數梯度向量在第?列節點上的分量。

?對列號相同的節點進行歸并:

?就是目標函數的梯度向量?在第?列節點上的分量,對其進行歸并得到目標函數的梯度向量:

這個過程如圖4所示。

圖4 梯度計算結果歸并

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

圖5 并行LR計算流程

小結

看上面的公式什么的可能很復雜,符號標記既模糊又復雜。概括一下,其實很簡單。

1、按行并行。即將樣本拆分到不同的機器上去。其實很簡單,重新看梯度計算的公式:

其中。比如我們按行將其均分到兩臺機器上去,則分布式的計算梯度,只不過是每臺機器都計算出各自的梯度,然后歸并求和再求其平均。為什么可以這么做呢?因為公式只與上一個時刻的以及當前樣本有關。所以就可以并行計算了。

2、按列并行。按列并行的意思就是將同一樣本的特征也分布到不同的機器中去。上面的公式為針對整個,如果我們只是針對某個分量,可得到對應的梯度計算公式即不再是乘以整個,而是乘以對應的分量,此時可以發現,梯度計算公式僅與中的特征有關系,我們就可以將特征分布到不同的計算上,分別計算對應的梯度,最后歸并為整體的,再按行歸并到整體的梯度更新。

這樣來理解其實就避免了繁雜的公式。其實,對于LR的分布式訓練,還是要自己親身體會過那種具有分布式需求的項目。我如是認為。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【机器学习】LR的分布式(并行化)实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。