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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

流式机器学习算法的入门和认知

發(fā)布時(shí)間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 流式机器学习算法的入门和认知 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.流式計(jì)算背景

1.概述

其實(shí)技術(shù)總在更新,做這個(gè)行業(yè)也是一直要走在學(xué)習(xí)并適應(yīng)的路上,這也是人工智能領(lǐng)域最吸引我的地方,其實(shí)基礎(chǔ)的理論是不變的,但是隨著業(yè)務(wù)的發(fā)展,計(jì)算能力的發(fā)展,上層的實(shí)現(xiàn)總是在迭代,今天講下我對(duì)于流計(jì)算的一些認(rèn)知。

先聊下計(jì)算引擎的進(jìn)化,隨手畫了上面的圖。其實(shí)第一代分布式計(jì)算引擎是Hadoop,這是一個(gè)跨時(shí)代的創(chuàng)造,人們使用Hadoop的MapReduce框架實(shí)現(xiàn)了許多的算法,這些算法也發(fā)揮了很大的作用。Hadoop最大的特點(diǎn)是,數(shù)據(jù)計(jì)算依賴于硬盤存儲(chǔ),也就是說很多的計(jì)算過程中的結(jié)果都需要存在硬盤中,然后再從硬盤拉起,造成性能較低的問題。

Spark好在一點(diǎn),把數(shù)據(jù)全部放到內(nèi)存中進(jìn)行計(jì)算,大大提高效率。但是無論是Spark或是Hadoop解決的都是批計(jì)算的問題,也稱batch計(jì)算。離線計(jì)算需要把數(shù)據(jù)收集起來統(tǒng)一的去算,對(duì)于算法來講,可能收斂會(huì)更快,因?yàn)閰⑴c計(jì)算的數(shù)據(jù)比較多。但是也有暴露一個(gè)問題,實(shí)時(shí)性很差。這個(gè)問題就引出了下一代計(jì)算引擎-流計(jì)算這樣一個(gè)話題。

2. 流計(jì)算

弄明白流計(jì)算,首先要搞清楚概念。先來看下流計(jì)算(stream compute)以及批計(jì)算(batch compute)的計(jì)算模型:

  • 流計(jì)算:當(dāng)一條數(shù)據(jù)被處理完成后,序列化到緩存中,然后立刻通過網(wǎng)絡(luò)傳輸?shù)较乱粋€(gè)節(jié)點(diǎn),由下一個(gè)節(jié)點(diǎn)繼續(xù)處理。

  • 批處理系統(tǒng):當(dāng)一條數(shù)據(jù)被處理完成后,序列化到緩存中,并不會(huì)立刻通過網(wǎng)絡(luò)傳輸?shù)较乱粋€(gè)節(jié)點(diǎn),當(dāng)緩存寫滿,就持久化到本地硬盤上,當(dāng)所有數(shù)據(jù)都被處理完成后,才開始將處理后的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)较乱粋€(gè)節(jié)點(diǎn)。

對(duì)于流計(jì)算,是不是有一點(diǎn)感覺了。相較于batch compute,stream compute對(duì)于業(yè)務(wù)上一定是更靈活,因?yàn)榭梢愿鷶?shù)據(jù)更實(shí)時(shí)性的相關(guān)聯(lián)(數(shù)據(jù)的時(shí)間周期其實(shí)很重要,有機(jī)會(huì)我也會(huì)給大家分享我的看法)。

stream對(duì)于業(yè)務(wù)的優(yōu)勢(shì)我舉一個(gè)例子,比如一個(gè)電商平臺(tái),有一個(gè)推薦系統(tǒng),推薦模型都是每周根據(jù)離線數(shù)據(jù)做批訓(xùn)練生成的。但是突然有一天,這個(gè)電商搞了一個(gè)針對(duì)特殊人群的定向營(yíng)銷活動(dòng),有大量的特殊用戶涌入,那針對(duì)這部分人群以前的老模型可能就不會(huì)起作用,這時(shí)候如果有一個(gè)實(shí)時(shí)訓(xùn)練模型的能力就會(huì)對(duì)這種場(chǎng)景有更快速地響應(yīng),這個(gè)就有是online learning的概念,那底層依賴的是流計(jì)算引擎。

3. 真正的下一代流計(jì)算引擎

流計(jì)算引擎會(huì)是下一代的計(jì)算引擎,這里指的不是流計(jì)算替代批計(jì)算,而是下一代流計(jì)算引擎會(huì)兼容batch compute和stream compute,做到流批一體,Flink或許是一個(gè)答案。

當(dāng)然流計(jì)算的挑戰(zhàn)會(huì)比做批計(jì)算大很多,比如failover機(jī)制,批計(jì)算所有計(jì)算結(jié)果都是有存儲(chǔ)的,可以回溯,流計(jì)算怎么解決宕機(jī)問題。比如exactly once機(jī)制,如何保證分布式流計(jì)算中的數(shù)據(jù)只被處理一次,而不是被多臺(tái)機(jī)器多次處理。

不過還是相信這些問題會(huì)被完美解決,未來的算法也一定是會(huì)向流式方向遷移。

二.淺談FTRL算法(流式邏輯回歸算法)

1.流失算法概覽

先聊下對(duì)于流式算法的一些看法,流式算法就是要實(shí)時(shí)的去更新模型,所以從易實(shí)現(xiàn)的角度分析,不是所有的批計(jì)算算法都適合做流式算法,只有那些損失函數(shù)易于計(jì)算的算法才比較適合做成流式。

常見的兩種損失函數(shù)的計(jì)算方法如下:

(注:這里每個(gè)變量的具體含義我就不解釋了,如果看不懂的同學(xué),真應(yīng)該買本書好好補(bǔ)補(bǔ)基礎(chǔ)知識(shí)了)

流式算法跟批算法最大的不同就在于數(shù)據(jù)的計(jì)算量,批算法和流算法的計(jì)算模型如下:

  • 批算法:每次使用全量數(shù)據(jù)計(jì)算損失函數(shù)和梯度,然后更新模型

  • 流算法:每次使用1條數(shù)據(jù)計(jì)算損失函數(shù)和梯度,然后更新模型

從這個(gè)角度來看,因?yàn)槊看螀⑴c訓(xùn)練的數(shù)據(jù)量變小了,所以對(duì)于算法從訓(xùn)練數(shù)據(jù)稀疏度和數(shù)據(jù)維度這兩給角度來看,有更多的約束和挑戰(zhàn)。FTRL算法是由Google提出,目前在online learning這個(gè)層面有非常好表現(xiàn)的算法,可以理解為是流計(jì)算中的邏輯回歸算法,目前FTRL在廣告投放、商品推薦等實(shí)時(shí)計(jì)算場(chǎng)景被廣泛應(yīng)用。下面就介紹下FTRL的具體計(jì)算流程。

2.FTRL具體推導(dǎo)

首先看下FTRL的迭代公式(可能需要有一些算法背景,大家可以先了解下邏輯回歸的迭代方法),邏輯回歸的推導(dǎo)在我的書里講過了,這里就不多說:

針對(duì)這個(gè)公式做一個(gè)具體的解釋,

  • 首先w表示的是模型的權(quán)重,t表示迭代輪次

  • arg min(f(x))這個(gè)函數(shù)表示的是使得f(x)取得最小值的,x的集合。在這個(gè)公式中表示的是使得每一輪迭代的損失函數(shù)最小的w組合,也就是等到收斂,w參數(shù)會(huì)是一個(gè)恒值

  • 表示的是第t輪的原始模型參數(shù)

  • 表示的是損失函數(shù)

  • 是正則項(xiàng),防止過擬合

總結(jié)一下,FTRL從算法邏輯上來講跟批算法沒有太大改變,只不過經(jīng)過大量的測(cè)試表名FTRL算法在流式的模型訓(xùn)練過程中對(duì)于稀疏數(shù)據(jù)以及大維度模型訓(xùn)練方面有比較好的效果。

有幾篇不錯(cuò)的文章介紹FTRL,也推薦給大家。

參考文獻(xiàn):

【1】https://zhuanlan.zhihu.com/p/32903540

【2】http://vividfree.github.io/機(jī)器學(xué)習(xí)/2015/12/05/understanding-FTRL-algorithm

總結(jié)

以上是生活随笔為你收集整理的流式机器学习算法的入门和认知的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。