一份職位信息的精準推薦之旅,從AI底層架構說起

一份職位信息的精準推薦之旅,從AI底層架構說起

整理 | 夕顏

出品 | AI科技大本營(ID:rgznai100)

【導讀】也許,每天早上你的郵箱中又多了一封職位推薦信息,點開一看,你可能發現這些推薦正合你意,於是按照這些信息,你順利找到一份符合自己期待的新工作。當然,也有可能推薦的信息根本無法讓你滿意,於是你手一滑,這份郵件的命運就是在你點下清空鍵之前,永遠躺在郵箱底部,第二天被新的郵件淹沒。

職場社交 App 的規則就是這麼簡單粗暴,在信息日益爆炸,各大職場社交平臺競爭日益激烈的時代,只有對用戶有價值的信息,才會留住他們流轉的目光。

那麼,怎樣才能留住用戶的目光?領英決定用當下最熱、最有前景的 AI 技術和大數據處理來實現本地化的創新,以期為用戶打造更好的產品體驗。

自 2014 年進入中國以來,領英在中國北京和美國硅谷從無到有,構建了一支超過 100人的本土研發團隊,兩地團隊以“One Team”的形式協作,利用總部的技術資源優勢,希望推動中國市場完成本地化產品與技術創新。

本文采訪了領英人工智能研發總監張梁,將從領英的AI系統底層架構與應用、流數據處理、開源三個角度,從技術層面對其進行全方位剖析,希望領英的 AI 技術與實踐對讀者有所啟發和幫助。

AI系統底層架構與應用

一份职位信息的精准推荐之旅,从AI底层架构说起

領英產品設計、人工智能系統和AB測試之間的關係

推薦系統+知識圖譜

據領英人工智能研發總監張梁介紹,領英希望通過人機結合的方式,將數據標準化成人工智能系統可以理解的形式。

在領英應用的眾多 AI 技術中,用戶最熟悉的可能就是以站內信或消息推送等形式到達客戶端的內容。用戶收到的內容不盡相同,這背後涉及領英個性化推薦系統進行的一系列複雜的計算和推斷。

領英個性化推薦系統的基礎架構是怎樣的?模型構建和基礎架構的過程中採用了哪些技術使得其可以實時推送精準的個性化內容呢?

對此,張梁介紹道,領英的職位推薦系統的基礎是通過大量用戶數據建立的知識圖譜和研發針對自然語言的標準化技術。針對每位用戶的簡歷,領英使用基於深度學習模型的標準化技術,如 LSTM、CNN 等來實現信息抓取。

一份职位信息的精准推荐之旅,从AI底层架构说起

領英追蹤、檢索和排名架構

一份职位信息的精准推荐之旅,从AI底层架构说起

領英人才搜索架構和流程

張梁回憶道,6、7年前,領英的職位推薦還是一個線性模型,如果求職者是一位軟件工程師,系統就會推薦一個軟件工程師的職位給他。但後來他們在使用中發現,根據用戶簡歷和工作職位的描述來做推薦,不一定能夠完全實現個性化。

一份职位信息的精准推荐之旅,从AI底层架构说起

用於具有樹交互功能的GLMix模型管道

“我們還希望根據用戶之前的職位申請,為他推薦更多類似的職位,即深度的個性化。之後我們又研發了 Generalized Linear Mixed Model(GLMix),針對每個用戶和每個職位建立一個單獨為他們服務的模型,這使得模型的參數量達到了上百億的規模,同時也成功地把職位申請的數量提高了30%。領英團隊把這個模型用在中國的數據上,又將職位申請的數量額外提高了 11%。”張梁說道。

除了智能推薦之外,領英還構建了自己的知識圖譜。

一份职位信息的精准推荐之旅,从AI底层架构说起

領英知識圖譜

一份职位信息的精准推荐之旅,从AI底层架构说起

領英知識圖譜

領英全球擁有 6.45 億會員、3.5 萬項職業技能、3000 萬僱主公司、超過 2000 萬個開放職位以及 9 萬家教育機構,形成高度結構化的數據集。領英的知識圖譜便是建立在超過 10 億數據點之上的一個大型知識庫,包括用戶職位、職級、技能、公司、地理位置、學校等。領英運用這些數據點及其之間的關係,優化推薦、搜索以及其他產品功能,推動業務增長。

首先,創建這樣一個龐大的知識庫本身就是一個巨大的挑戰。與谷歌的知識庫和微軟的 Satori 從互聯網上自動提取事實的做法不同,領英主要從會員、招聘人員、廣告商和公司管理人員等大量用戶生成的內容中獲得領英的知識圖譜,並用從互聯網上提取的數據進行補充。因此,這些數據噪音大,並可能存在重複。

為了解決這一挑戰,領英應用了自然語言處理、機器學習等技術手段,對用戶生成的內容和外部數據源進行數據標準化,如使用機器學習進行實體分類結構、實體關係推理、下游數據消費者的數據表示、從圖譜中提取洞察,以及從用戶處獲取交互式數據,以驗證推理並收集訓練數據。

利用這個龐大的知識圖譜,領英能夠做到什麼呢?

張梁介紹道,以領英檔案數據為例,幾乎所有會員數據都是由會員自己自行輸入的。因此,同一個職位在一家公司可能稱為“資深軟件工程師”,而在另一家公司則稱為“研發負責人”。為了將這些大量的職位進行標準化,領英的分類學家創建了職位分類體系,然後採用機器學習模型(LSTM模型、其他神經網絡等)進一步將大量職位進行關聯。瞭解這些關聯後就可以進一步推斷出每名會員在檔案內容之外具備的深層次技能,例如,具有“機器學習”技能的會員同時也瞭解“人工智能”。這就是構建領英知識圖譜分類和關聯體系的一個實例。

2019 年初領英中國APP推出了“職業指南”功能,便是知識圖譜標準化的一大成果體現。“職業指南”基於領英知識圖譜中已經標準化、系統化數據點,從知識庫裡的職位、職級、技能、公司等信息中提取出級別分佈、升職年限,以及該職業“入行前”和“轉行後”詳細分析等精細洞察,並應用機器學習保證更好的相關性與精準性。

另外,2019 年領英中國APP推出的“薪資洞察”功能是基於用戶提供的數據,利用貝葉斯平滑等人工智能技術來推測(Inference)不同領域和職級的平均薪資。具體來看,為了盡力消減樣本量過小導致的誤差,領英技術團隊使用貝葉斯平滑等人工智能技術進行有效推測,確保最終呈現薪資區間的真實性。舉例來說,在一些比較冷門的行業或地區,用戶提供數據量不足時,產出的洞察容易缺少代表性。此時,為了得到相對接近真實情況的薪資區間,領英運用人工智能對數據進行篩選,尋找相近的地區或行業的數據來擴充樣本量,並以形成的基準進行合理推測。

一份职位信息的精准推荐之旅,从AI底层架构说起

此外,“薪資洞察”的數據既有用戶主動提交的薪資數據,又有企業職位段的數據,確保參考樣本量足夠大的同時,也從不同數據維度綜合衡量,儘可能真實反映職場人的薪資情況。當數據源覆蓋得足夠廣足夠多時,產生的洞察自然會更全面、精準。

另外,領英還把知識圖譜與 AI 推薦系統結合起來,提供更加精準的服務。具體來說,基於領英數據的知識需要以機器可讀的方式清晰地表達出來,領英知識圖譜通過在實體分類法(entity taxonomies)之上形成專業領域的本體(ontology)來標準化實體和關係,定義每個實體的身份和屬性以及實體之間的關係。例如,在領英職位推薦中,領英從成員個人資料中提取標準化實體,如職位、技能、公司、教育、地理位置等,並與從職位描述中提取的相同類型的實體直接匹配。這樣的匹配信息可以直接用於驅動推薦系統的機器學習模型。與直接使用會員和職位發佈者提供的原始數據相比,知識圖譜中的標準化實體為推薦系統提供了更好的相關性。

多層感知器(MLP)解決延遲問題

針對某些指導性學習任務,領英會在必要時採用典型多層感知器。

MLP(多層感知器)網絡是一個簡單的深度神經網絡模型,已被用於領英的推薦、搜索系統的推斷過程,在類似於招聘者搜索和信息流排名等應用中使用了這種網絡。

MLP 模型的優勢在於它可以被快速試用而不必擔心延遲。如果使用完全在線評分的系統,更復雜的模型,如 CNN 和 BERT 有時會面對延遲帶來的挑戰。領英通過離線、近線和在線評分的混合方法解決了這樣的延遲挑戰。例如,在搜索應用中,如果用於排序的神經網絡模型遵循雙塔模式 (two-tower neural network,一個神經網絡用於對查詢關鍵字的計算,另一個神經網絡用於對需要排序的文檔的評分),你可以對查詢關鍵字使用在線計算,對文檔使用離線/近線評分。

此外,領英還已經開始嘗試在推薦、搜索在線系統中使用更高級的模型,如最近在搜索系統中嘗試了 CNN、BERT 和 sequence-to-sequence 模型,並獲得了較好的離線和在線結果。

運算平臺:在線評分+近線評分+雙塔模式

領英的運算平臺面對龐大的用戶數據和信息量,這要求領英對各種信息的處理需要“區別對待”,例如對於線上和線下的請求處理,領英就採用了不同的 AI 模型,以使效率最大化。

具體來說,張梁解釋道,就是當用戶向領英服務提出請求,並且需要在幾毫秒內響應時,領英的 AI 模型通常會使用在線評分(scored online);其他情況下,則使用近線、離線評分。舉例來說,對於領英的信息推送通知,因為不需要對用戶請求以毫秒為單位進行響應,AI 模型會使用近線評分(scored nearline)來決定向誰和何時發送何種內容的通知

而當模型需要大量運算力來滿足對於延遲的要求時(例如深度神經網絡模型)時,領英會將模型分解為在線評分和離線或近線評分組件,以在延遲和準確性之間達成良好的平衡。這將要求 AI 模型具有一定的結構以使其可以分割。例如,領英經常使用雙塔(two-tower)方法(一個神經網絡用於會員,另一個神經網絡用於需要排序的文檔),因此可以在會員在發出請求之前,給需要排序的文檔的神經網絡中的嵌入向量預打分,從而減少在線評分對系統延遲的影響。

Pro-ML“人工智能自動化”平臺

AI 自動化已成為一股技術潮流,領英也不例外地趕上了這股技術潮流,並將其應用於服務中。

2017 年 8 月,領英開始了一項名為“Productive Machine Learning”(簡稱“Pro-ML”,人工智能自動化)的新項目。Pro-ML 的目標是將機器學習工程師的效率提高一倍,同時為來自領英的工程師打造人工智能和建模工具。

在構建 Pro-ML 的過程中,領英儘可能地利用和改進現有代碼庫中的最佳組件,從而靈活地支持現有的主要 ML 算法和將要出現的新算法。在 Pro-ML 平臺上,領英主要做了:

  • 開發(Exploring and authoring):建模過程從探索問題空間、特徵和數據開始,然後確定特定目標。通過交叉摺疊驗證、曲線下面積 AUC、F分數等方法評估機器學習算法並進行重試。

  • 訓練(Training):利用 Azkaban 和 Spark 進行模型訓練。模型通過脫機驗證後,訓練庫會將經過訓練的工件和元數據傳遞給部署系統。

  • 部署(Deploying):Pro-ML 將通過自動驗證、編排、監視和通知,確保所需的代碼和數據工件同步,部署的過程還與實驗平臺相關聯,以確保所有活躍實驗在整個系統中的正確目標中具有所需的工件(Artifacts)。

  • 運行(Running):為了構建真正能夠成功運行的系統,領英需要可靠、高效、可操作地評估生產中的模型,包括在 Spark 和 Pig 等系統中的離線運算, Samza 中的近線數據處理,REST 服務中的在線評分以及在搜索系統中的文件抽取和排序。

除此之外,領英還採用多模態技術,使用多種不同類型的信號來優化信息流和搜索排名,如用自然語言處理技術(NLP)做文本理解,用計算機視覺技術做圖像和視頻理解,用微軟生成視頻腳本的 API 技術進行語音識別等,在信息流和搜索排序方面為會員提供了更有吸引力、更具個性化的用戶體驗。

流數據處理

Kafka:面向大規模流數據的標準消息系統

面對如此大的數據規模,領英在穩定運行機器學習模型上遇到哪些挑戰?如何解決?

2011 年 7 月,領英開始大規模使用 Kafka,它由領英的工程師在 2010 年研發。

張梁坦承,在領英,不同的應用使用同一個 Kafka 集群,所以如果某個應用濫用 Kafka,將會對共享集群的其他應用帶來性能和 SLA 上的負面影響。即便是有些合理的使用場景,也有可能會帶來很壞的影響,比如,在某些場合如果要重新處理整個數據庫的所有數據,那數據庫中的所有記錄會迅速推送到 Kafka 上,即便 Kafka 性能很高,也會很容易造成網絡飽和磁盤衝擊。

為了解決這個問題,領英研發了一個機制:如果每秒鐘的字節數超過了一個閾值,就會降低這些Producer 和 Consumer 的速度。對於大多數應用來講,這個默認的閾值都是可行的。但是有些用戶會要求更高的帶寬,於是領英引入白名單機制,讓白名單中的用戶能夠使用更高數量的帶寬。

對於領英來說,採用 Apache Kafka 好處很多。2011 年,當時 Kafka 每天大約處理 10 億條消息,這一數據在 2012 年達到了每天 200 億條,而到了 2013 年 7 月,每天處理的消息達到了 2000 億條。目前,領英每天利用 Kafka 處理的消息超過 5 萬億條,在峰值時每秒鐘會發布超過 450 萬條消息。如今,Apache Kafka 已經成為了一個面向大規模流數據的,標準的消息系統,在領英,它被用作各類數據管道的支柱,支持一系列關鍵服務,已經成為確保企業基礎架構健壯、容錯和高性能的核心組件。

從MapReduce/Pig 框架遷移到 Spark

另一方面,領英已逐漸把數據處理從舊的 MapReduce/Pig 框架遷移到 Spark,並在 Spark 上做了一些創新。

張梁介紹道,領英從 2015 年開始在 Spark 上構建數據處理流程,現在大多數生產環境離線工作流都使用Spark 而不是 MapReduce 或 Pig。而且,領英已經將 Jupiter NoteBook 和工作流管理工具 Azkaban 與 Spark 集成在一起。

在 Spark 之上,領英還構建了許多機器學習庫,例如 GLMix庫,它能幫助領英構建具有數百億參數的,針對個別用戶或個別文檔的個性化模型。

另外,可能會有人好奇,領英處理流數據是否為 Spark 和 領英自建的流數據處理框架 Samza 並用?以哪個為主?為什麼?

對此,張梁也為我們解答了疑惑。“對於流數據處理,我們主要使用 Samza。在領英,Samza 每天處理超過一萬億條消息,並被數百個擁有超過 10,000 個容器的生產應用程序使用。我們之所以選擇 Samza,是因為它在有效支持狀態、快速故障恢復、再處理和無 Lambda 架構以及可擴展性方面具有獨特優勢。

大規模圖處理

此外,隨著自媒體的快速發展,每天都有大量用戶生成的圖信息湧現出來,如何應對大規模圖處理帶來的問題變得迫在眉睫。對此,領英是怎麼做的呢?

對此,領英嘗試在多處應用在線和離線圖處理系統(online and offline graph processing systems)來解決問題。 領英的功能“你可能認識的人”(People You May Know)一直在使用 Gaia——一個實時圖推薦平臺來提供推薦服務。

離線圖處理系統可以為工程師執行數據分析或生成非時間敏感建議,探索新的圖算法以生成建議和評估度量的影響。有前景的算法將會進入離線推薦管道( 使用離線圖平臺),然後進入領英的在線推薦解決方案( 使用在線圖平臺)。

張梁透露,目前,領英正在探索如何使用 Gaia 來收集可以用於離線訓練的特性。

開源

如今,開源開放已成為一股潮流,很多大型企業都加入其中,推動著技術進步,同時從中受益。領英作為其中一員,也對開源持開放的態度,並做出了自己的貢獻。

據張梁統計,目前領英已經開放了超過 100 個項目,貢獻了超過 50 萬行代碼,跨越了許多軟件類別,包括數據、框架、系統操作、測試和移動,如 Kafka、Samza 等開源項目已得到了廣泛的應用。除了已經在前面介紹過的 Kafka,下面簡單介紹一些其他開源項目:

  • Samza:Apache Samza 是一個開源框架,可以幫助開發者進行高速消息處理同時具有良好的容錯能力。Samza 可從 Kafka 中獲取消息並進行處理,處理完畢後把結果返回 Kafka

  • TonY(TensorFlow on YARN):TonY 是領英開發的在 Hadoop 上自然運行 TensorFlow 的框架。TonY 旨在通過處理資源協商和容器環境等任務,為在 Hadoop 上可靠、靈活地運行TensorFlow 提供相同的支持。

  • Photon ML: 一個用於 Apache Spark 的機器學習庫。通過將 Spark 快速處理海量數據集的能力與強大的模型訓練和診斷實用程序相結合,可以運用 Photon ML 對推薦系統選擇的算法做出更明智的決策。

從 2014 年進入中國開始,領英不斷地探索著中國這片獨具特點的市場。未來,領英希望進一步依靠 AI 和大數據技術升級優化用戶體驗,這一次,它能夠憑藉技術吸引住用戶的目光嗎?我們且靜待市場的反響。

採訪嘉賓:

張梁,領英人工智能研發總監

一份职位信息的精准推荐之旅,从AI底层架构说起


分享到:


相關文章: