丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給叢末
發(fā)送

0

在 Quora 做機(jī)器學(xué)習(xí)「煉丹」是種怎樣的體驗(yàn)?

本文作者: 叢末 2019-02-27 16:56
導(dǎo)語:這是「機(jī)器學(xué)習(xí)煉丹之旅」的第一篇~

雷鋒網(wǎng) AI 科技評論按:實(shí)際上,號稱「美版知乎」的 Quora 也已經(jīng)大量引入了機(jī)器學(xué)習(xí)技術(shù),而 Quora 的工程師們則喜歡把自己研究機(jī)器學(xué)習(xí)、產(chǎn)出技術(shù)方案的過程戲稱為「煉丹」,如今他們也想對外分享他們的經(jīng)驗(yàn)和成果,開始做一系列「機(jī)器學(xué)習(xí)煉丹之旅」的技術(shù)博客。日前,他們發(fā)出了該系列博客的第一篇——《使用 Alchemy 做特征工程》(「Feature Engineering at Quora with Alchemy」),作者為 Quora 的兩位工程師 Kornél Csernai 和 Naran Bayanbat。雷鋒網(wǎng) AI 科技評論編譯如下。

概述

一直以來,Quora 都致力于拉近人們和有益知識的距離。這意味著,我們需要不斷增加知識的采集,并對知識進(jìn)行評估,還要知道怎樣高效地對它們進(jìn)行排序和分類?,F(xiàn)在,Quora 的重點(diǎn)便是通過問答來實(shí)現(xiàn)這些目標(biāo):讀者在網(wǎng)站上尋找相關(guān)的內(nèi)容,提問者尋找有用的答案,而我們就是從他們的提問中提取出正確問題的答復(fù)者。其次,我們也需要考慮檢測并刪掉違規(guī)的內(nèi)容,以及識別出重復(fù)的問題。而為了實(shí)現(xiàn)這些目標(biāo),我們重點(diǎn)倚靠機(jī)器學(xué)習(xí)技術(shù)。

首先讓我們來看一個典型的案例:Quora 的 Home Feed 功能。在這個最簡單的功能中,系統(tǒng)會根據(jù)我們認(rèn)為特定用戶可能重視的上下文中的一系列特征,對候選 post 進(jìn)行排序。之后,這些計算了得分的輸入就會形成一個基本的漏斗(funnel)。

在 Quora 做機(jī)器學(xué)習(xí)「煉丹」是種怎樣的體驗(yàn)?

一個強(qiáng)大的特征能夠明顯提升產(chǎn)品的質(zhì)量,因此快速迭代模型特征非常重要。隨著 Quora 網(wǎng)站上機(jī)器學(xué)習(xí)工程師數(shù)量日益增多,用來支持產(chǎn)品中各類應(yīng)用程序的獨(dú)一無二的特征工程框架的數(shù)量也在增多。這種增長自然也帶來了一些挑戰(zhàn):

  • 一如既往地,更多的框架意味著更多碎片(fragmentation)、更多冗余(redundancy),以及給我們的工程團(tuán)隊(duì)帶來更重的維護(hù)負(fù)擔(dān)。各個團(tuán)隊(duì)的開發(fā)人員正在創(chuàng)建不同的系統(tǒng)來應(yīng)對同一個技術(shù)挑戰(zhàn),并且無法跨多個應(yīng)用程序重復(fù)利用特征。

  • 對于一個典型的機(jī)器學(xué)習(xí)應(yīng)用程序來說,針對每個問題都有成百上千篇候選 post,而每篇候選 post 中又可以提取出數(shù)百個特征。同一時間,多個產(chǎn)品服務(wù)又必須要實(shí)時響應(yīng),且響應(yīng)的時間不能超過幾百毫秒。這就意味著,特征提取受限于時間很緊的速度、計算以及記憶局限。我們其中的一些框架難以應(yīng)對這些局限,也無法成功從日復(fù)一日的特征開發(fā)中將系統(tǒng)所面臨的挑戰(zhàn)抽象化。

高水平的設(shè)計

為了應(yīng)對上述所有的挑戰(zhàn),我們?yōu)樘卣魈崛¢_發(fā)了一個高性能、規(guī)?;o國界的服務(wù)——Alchemy,它可以泛化到 Quora 上所有的機(jī)器學(xué)習(xí)相關(guān)應(yīng)用程序。

在這 Feed 功能的案例以及相似的應(yīng)用程序中,這就意味著將特征提取這一步驟單獨(dú)分離出來作為該網(wǎng)站的一項(xiàng)服務(wù)。

之前:

在 Quora 做機(jī)器學(xué)習(xí)「煉丹」是種怎樣的體驗(yàn)?

之后:

在 Quora 做機(jī)器學(xué)習(xí)「煉丹」是種怎樣的體驗(yàn)?

Alchemy 使用應(yīng)用程序類型(如 Feed 功能)和目標(biāo)列表(如候選 post),就能為它們各自返回一個數(shù)值化的、經(jīng)過分類的特征向量。假設(shè)將特征組織成邏輯組(每個邏輯組表示為一個類別)的形式,這種形式具有數(shù)據(jù)依賴關(guān)系(data dependencies),例如一個問題所對應(yīng)的答案數(shù)量。之后,應(yīng)用程序就會確定應(yīng)該提取哪個特征組、

來自應(yīng)用程序的請求會實(shí)時排列,并且在某些情況下,源于不同期工作的請求也會進(jìn)行排隊(duì)。每個請求包含了需要評估特征的請求類型以及候選列表(同時,相應(yīng)的應(yīng)用程序會定義每個特征列表)。之后,Alchemy 檢索并組織任一必要的數(shù)據(jù),并最終平行計算出每個目標(biāo)的特征。

數(shù)據(jù)存儲

Alchemy 使用 HBase 作為它的存儲層,不過它也可以輕易地進(jìn)行擴(kuò)展來支持其他的存儲庫。為了讓查詢更加高效,我們采用了多個緩沖層(HBase 頂部的 Memcache 以及 Memcache 頂部的一個內(nèi)存 LRU cache)。我們的數(shù)據(jù)由 Thrift 目標(biāo)組成,它們可以直接存儲于內(nèi)存 cache,以及以二進(jìn)制形式(binary serialized format)存儲于 HBase 和 Memcache。

由于高速緩沖器存儲的值會變得陳舊,我們就需要讓 Alchemy 知道何時需要從 ground truth 中舍棄掉一些值。這項(xiàng)操作可以通過這種方式實(shí)現(xiàn):從應(yīng)用程序端寫入 Kafka 隊(duì)列并從 Alchemy 端上的這一隊(duì)列中讀取值。該隊(duì)列包含 table、 key 以及值信息,因此 Alchem 可以在內(nèi)存緩沖器中用新的值來取代舊的值。

在 Quora 做機(jī)器學(xué)習(xí)「煉丹」是種怎樣的體驗(yàn)?

性能

實(shí)現(xiàn) Alchemy 的第一個版本后,我們投入了大量精力來提高該服務(wù)的性能。為了讓 Alchemy 變得更加快速,我們采用 C++語言將其寫成了一個單獨(dú)的服務(wù),這與將特征提取器嵌入 web 應(yīng)用程序的代碼中的做法相反。這樣做的原因在于:

  • C++ 是一個低水平的編程語言,它通??梢员扔?Python 寫的應(yīng)用程序運(yùn)行得更快。

  • 針對每個問題,我們都會發(fā)送成百上千篇候選 post 進(jìn)行評估,代碼在候選級別上就能輕松實(shí)現(xiàn)并行。而在 Python 中,代碼很難在一個過程內(nèi)實(shí)現(xiàn)并行。

  • 將 Alchemy 寫成一個單獨(dú)的服務(wù),我們就能夠在存儲器中存儲大量反序列化的目標(biāo),從而巨大地減少數(shù)據(jù)檢索的延遲(latency),然而這些在 web 應(yīng)用程序代碼中通常是無法實(shí)現(xiàn)的。

除了決定采用這些設(shè)計,我們還 profile 了代碼以找到并消除熱點(diǎn)。此外,我們還不斷審查了大量的度量標(biāo)準(zhǔn),以了解當(dāng)這些熱點(diǎn)出現(xiàn)時的速度回歸(speed regression)源。

(是的,當(dāng)為單個特征提取編寫代碼時,選擇采用 C++ 可能會降低開發(fā)速度。然而,我們認(rèn)為 C++ 所帶來的優(yōu)勢要遠(yuǎn)大于這一損失,因?yàn)闄C(jī)器學(xué)習(xí)工程師在使用 Alchemy 時不再需要擔(dān)心性能優(yōu)化問題。)

遷移和未來工作規(guī)劃

到目前為止,我們對 Alchemy 所做的所有遷移( migration)都帶來了積極的結(jié)果。對于我們的在線預(yù)測系統(tǒng),請求延遲得到改善之后,我們就有了更多的空間去嘗試那些比較花時間、計算成本比較高的特征。此外,我們可以對更多候選 post 進(jìn)行排序,從而提供更好的用戶體驗(yàn)。使用 Alchemy 還讓我們能夠繼續(xù)維護(hù)以前耗費(fèi)過多時間去維護(hù)的離線系統(tǒng)(其中的一些離線系統(tǒng)已經(jīng)被我們在線遷移了)??偟膩碚f,我們已經(jīng)能夠看到,工程師可以更頻繁地啟動特征并迭代他們的模型。

這些遷移還帶來了許多觀點(diǎn)、反饋和特征請求,它們都將以實(shí)質(zhì)性的方式積極為我們的路線圖提供信息。舉一個小例子,我們開始對目標(biāo) ID 的請求進(jìn)行分區(qū)以實(shí)現(xiàn)更好的緩存利用率。

至于未來的工作規(guī)劃,我們可能會增加 Python 的綁定,以便工程師和數(shù)據(jù)科學(xué)家可以更廣泛地使用該系統(tǒng)。我們還會識別特征之間的依賴關(guān)系,構(gòu)建特征圖并異步計算出特征和數(shù)據(jù)的依賴關(guān)系。一個靈活的異步數(shù)據(jù)檢索抽象,會讓訪問多個數(shù)據(jù)的存儲變得更加容易。所有這些改進(jìn)都可以將機(jī)器學(xué)習(xí)工程師的負(fù)擔(dān)轉(zhuǎn)移出去,從而使他們可以更專注于開發(fā)出色的機(jī)器學(xué)習(xí)模型。

結(jié)論

一旦 Alchemy 能夠結(jié)合大量的應(yīng)用程序,它的投資回報率是非常高的。系統(tǒng)特征提取做得更好,也意味著它的排序也做得更好。

所有人都說,增長是一個伴隨著挑戰(zhàn)的好事。弄清楚如何明智地控制這種增長以減少低效率和冗余,是值得從多個維度深入思考的事情,并且這種增長可能會帶來很大的收益。

via:https://engineering.quora.com/Feature-Engineering-at-Quora-with-Alchemy 雷鋒網(wǎng) AI 科技評論編譯

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

在 Quora 做機(jī)器學(xué)習(xí)「煉丹」是種怎樣的體驗(yàn)?

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說