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

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

0

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

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

雷鋒網(wǎng) AI 科技評(píng)論按:實(shí)際上,號(hào)稱「美版知乎」的 Quora 也已經(jīng)大量引入了機(jī)器學(xué)習(xí)技術(shù),而 Quora 的工程師們則喜歡把自己研究機(jī)器學(xué)習(xí)、產(chǎn)出技術(shù)方案的過程戲稱為「煉丹」,如今他們也想對(duì)外分享他們的經(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 科技評(píng)論編譯如下。

概述

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

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

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

一個(gè)強(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)。各個(gè)團(tuán)隊(duì)的開發(fā)人員正在創(chuàng)建不同的系統(tǒng)來應(yīng)對(duì)同一個(gè)技術(shù)挑戰(zhàn),并且無法跨多個(gè)應(yīng)用程序重復(fù)利用特征。

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

高水平的設(shè)計(jì)

為了應(yīng)對(duì)上述所有的挑戰(zhàn),我們?yōu)樘卣魈崛¢_發(fā)了一個(gè)高性能、規(guī)?;?、無國界的服務(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),就能為它們各自返回一個(gè)數(shù)值化的、經(jīng)過分類的特征向量。假設(shè)將特征組織成邏輯組(每個(gè)邏輯組表示為一個(gè)類別)的形式,這種形式具有數(shù)據(jù)依賴關(guān)系(data dependencies),例如一個(gè)問題所對(duì)應(yīng)的答案數(shù)量。之后,應(yīng)用程序就會(huì)確定應(yīng)該提取哪個(gè)特征組、

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

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

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

由于高速緩沖器存儲(chǔ)的值會(huì)變得陳舊,我們就需要讓 Alchemy 知道何時(shí)需要從 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 的第一個(gè)版本后,我們投入了大量精力來提高該服務(wù)的性能。為了讓 Alchemy 變得更加快速,我們采用 C++語言將其寫成了一個(gè)單獨(dú)的服務(wù),這與將特征提取器嵌入 web 應(yīng)用程序的代碼中的做法相反。這樣做的原因在于:

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

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

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

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

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

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

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

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

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

結(jié)論

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

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

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

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

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

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