天天看點

3個因素看透 AI 技術架構方案的可行性

--------點選螢幕右側或者螢幕底部“+訂閱”,關注我,随時分享機器智能最新行業動态及技術幹貨----------

3個因素看透 AI 技術架構方案的可行性

人工智能這幾年發展的如火如荼,不僅在計算機視覺和自然語言處理領域發生了翻天覆地的變革,在其他領域也掀起了技術革新的浪潮。無論是在新業務上的嘗試,還是對舊有業務對改造更新,AI 這個奔湧了 60 多年的“後浪”,正潛移默化的影響着我們傳統的技術架構觀念。

AI 架構(尤其是以機器學習和深度學習為代表的架構方案)已經成為我們技術架構選型中的一個新的選項。

你是否需要 AI 架構的解決方案?AI 架構選型的主要依據是什麼?這是我們今天主要讨論的問題。

我們先來看一個典型的 AI 架構:

3個因素看透 AI 技術架構方案的可行性

  • 1、首先需要采集訓練模型所需要的資料,這些資料有可能來自業務系統本身,如 CTR 預估任務中的使用者點選資料、使用者下單資料等;也有可能來系統外部,公開購買或自主爬取,如圖檔分類任務中的圖檔、NLP 任務中的語料等。
  • 2、這些資料被收集起來後,經過清洗、加工,被存儲起來,因為畢竟不是隻用一次。一般是存儲在分布式儲存設備(如 HDFS)或雲端,多數公司還會建立自己的資料平台,儲存在資料倉庫中,長期積累下來。
  • 3、需要使用的時候,先進行資料篩選,選擇合适的特征資料,然後經過資料預處理,送入到算法模型中。模型的搭建可選的技術架構很多,可以是基于 spark mllib,也可以是 sklearn、tensorflow、pytorch 等。然後經過訓練、評估和調參,完成模型的建構工作。
  • 4、最後模型要應用到線上的具體業務中,完成分類、回歸某一具體任務。在部署過程中,有可能是将模型打包,将預測模型直接部署到業務系統(用戶端)中;也有可能是直接提供一個線上 RESTful 接口,友善跨語言調用。

總結一下,經過資料采集、加工處理、特征選擇、資料預處理、模型訓練、模型評估、模型應用幾個環節,資料跨過業務系統、資料平台、算法模型三個系統,形成一個閉環,最終又應用到業務系統中,這就構成了整個 AI 架構的核心。

是否需要 AI 架構,如何衡量這套技術架構方案的可行性?我認為,主要是看以下三個要素。

1. 場景

我們讨論架構的可行性,是否适合業務及業務發展是第一衡量準則,AI 架構也不例外。

回顧那些經典的、已經廣泛應用的機器學習場景,比如推薦、搜尋、廣告等,這些場景都具有這樣的特點:場景相對封閉、目标單一、可控。

究其原因,無論算法模型多麼複雜,其最終都要落實到損失函數上的,而後者一般都是單目标、單優化任務。或追求極值(損失最小化)、或達到某種對抗上的平衡(比如GAN)。在這種情況下,無論業務如何模組化,還是要落地到算法模型和損失函數的,最終也就限制了場景和目标上的單一。

是以,看一個業務是否适合AI架構,就要先看這個業務場景目标是否單一、可控。或經過業務模組化和架構拆解後,每個環節的場景是否單一。

舉個例子,同程藝龍酒店系統為酒店商家提供了上傳酒店圖檔的功能,在這個場景下,除了要審查圖檔的合法性,還要給圖檔打上分類标簽,如“大堂”、“前台”、“客房”、“周邊”等。為了能正常使用AI架構,就必須對場景内的各目标進行拆分,訓練不同的分類器。具體流程如下:

3個因素看透 AI 技術架構方案的可行性

其中,第2、3、4步涉及到多個圖檔分類器,每個分類器的目标不同,所需要的訓練資料也不同。對于輸入的同一個樣本圖檔,每個分類器完成自己的職能,目标單一可控。對于一些不通過的樣本,可能還涉及到人工幹預。最後合法的圖檔存入系統。

從業務必要性上來說,也并不是所有業務場景都需要AI架構。算法模型是對事物的精确模拟和抽象,複雜度也是比較高的。但可能有時我們業務上并不需要如此精細的控制。比如有時一個簡單的if...else...就解決了問題;複雜點的可能會設計幾種“政策”,然後由業務專家針對每種情況進行配置;再複雜的可能還會考慮BI的方案:收集資料,然後展開多元度的分析,最後由分析師連同業務專家得到某種規律性的結論,再内置到系統裡,效果可能也不錯。

再舉個酒店分銷調價的例子,在将酒店分銷給代理售賣前,一般會在底價基礎上對産品賣價進行幹預,調整一定的點數(百分比),保證銷量的同時,最大化收益。

一開始,可能僅僅是一個固定的比率(比如加價6%)。随着業務發展,設計了一系列政策,比如針對“是否獨家”、“是否熱門”2次元将酒店劃分到4個象限裡,對“獨家-熱門”酒店實施一個較高的調價比率,而對“非獨家-冷門”酒店實施一個較低的比率。結果收益提高了一大截,效果不錯。

而後,業務人員希望施行更加精細的控制,于是對酒店的星級、地區、商圈、獨家、房型等次元進行了更為精細的劃分,并結合曆史資料進行統計分析,對各種結果施以不同的調價比率。産量和收益又進一步提升了。

這時如果各業務方都比較滿意、成本也不高,系統複雜度也不高,那就沒必有再考慮更為精細、智能的AI架構了。引入AI,本質上,還是要帶來效率、體驗或準确性的提升,同時平衡成本和收益,控制系統複雜度。如果不能帶來這些,那就要重新審視我們的方案了。

當然,有時我們也會考慮架構的擴充性和業務的發展,預留一些設計上的“開閉”空間。“政策模式”這時也許是個不錯的選擇。對于系統的預設政策,采用基于人工的、配置的方案,同時保留政策擴充接口,随着将來業務要求的增高,再引入“基于AI的政策”。這樣即控制了目前的成本,又平衡了系統的擴充性。

2. 資料

資料決定了機器學習的上限,而算法和模型隻是逼近這個上限而已。

資料的采集和擷取通常需要很長時間,建立充分、全面的資料倉庫,更需要長時間的積累和打磨,是以,資料在任何一個公司都是寶貴的資産,不肯輕易送出。而一個算法模型的成功與否,關鍵看資料和特征。是以,一套 AI 架構的解決方案,最終能否取得好的效果,關鍵看是否已經采集到了足夠、充分的資料。

這些資料來源一般包括:自有系統采集、網際網路公開資料收集(或爬取)、外購等。

自有系統采集是最常見的方案,業務系統自身産生的資料,一般也更适合業務場景的應用。可這樣的資料珍貴且稀少,是以往往需要公司的決策者提前布局,早早的開始收集、整理業務資料,建設資料平台、充實資料倉庫,這樣經過幾個月甚至幾年以後,在真正用到AI架構時,彈藥庫裡已經儲備了充足的“彈藥”了。

網際網路公開的資料爬取也是一個快速且免費的方法,但在茫茫大海中找到适合自己的資料并不容易,且因為你能拿到、别人也能拿到,是以很難拉開和其他競對公司的差異。

外購一般要花費巨額費用,且品質參差不齊,一般是網際網路公司最後不得已的方案。

在資料擷取成本高、難度大、積攢時間久這樣的前提下,而場景又适合使用 AI 架構,面對資料匮乏,是不是就沒有辦法了呢?也不盡然,我們還是有些替代方案的。

  • 1、 淺層模型通常比深層模型需要更少的資料量,是以,在資料量不足的時候,通常可以使用淺層模型替代深層模型來減少對資料量的需求。當然,模型的表達能力也會随之下降,但應對不是特别複雜的業務場景,淺層模型也一樣能取得很好的效果。當然,随之而來的是對特征挖掘更高的要求和對模型選擇的挑剔。拿分類任務來說,SVM、邏輯回歸、随機森林、樸素貝葉斯...每種模型都有其特點和适用性,要充分考慮和權衡,才能利用好每一條資料。所謂資料不夠、模型來湊,也是不得已的辦法。
  • 2、 采用預訓練模型也是降低資料需求量的一個很好的辦法,遷移學習已經在圖像分類問題上廣泛運用, BERT 模型也将預訓練模型帶入自然語言處理的大門。在一些特定問題上,如果能找到合适的預訓練模型,再加之少量自己的資料進行微調,不但對資料的需求量降低,訓練時間也大大降低,一舉兩得。隻是合适的預訓練模型可遇而不可求。
  • 3、 還有一個減少資料需求的變通的辦法是采用少量資料先“啟動”,然後不斷擷取資料,并加快模型更新頻率,直至采用“線上學習”的方法。這裡實際上是将總的資料需求,拉長到時間次元去解決。當然,這裡也需要業務上允許前期模型的準确度不是那麼高,随着資料的增多和模型的不斷更新,逐漸達到預期效果。
  • 舉個例子,酒店 shopper 類産品的售賣,為了加快展現速度,通常采取供應商資料預抓取的方式落地。但供應商給的 QPS 極其有限,每次隻能抓取一個酒店,高頻率的抓取可以保證酒店資料的新鮮度,給客人更好的體驗;低頻率的抓取因庫存、價格資訊時效性不能保證,往往就會導緻預定失敗,造成損失。是以,如何在酒店間合理的配置設定 QPS 就是一個典型的機器學習問題。
  • 我們從酒店熱度、預定周期、節假日等多個次元進行了特征挖掘,最後卻發現“季節”這個關鍵因素,我們卻提取不到有效特征,原因是資料倉庫裡隻有三個月的資料,也就是隻有當季的資料。
  • 為了解決這個問題,我們重新設計了模型,調整了架構方案,采用“線上學習”的方式,将模型更新問題納入到了解決方案中。原始資料隻用來訓練一個初始模型,上線後,模型不斷拿新産生的資料并進行疊代更新,同時對時間線更近的資料賦以更高的樣本權重,以此來保證對季節性因素的跟進。系統上線後,取得了很好的效果。
  • 4、 強化學習在初始資料缺乏的情況下,大多數時候也是一個備選方案。強化學習采用“試錯”的方式,不斷演化,并最終學到規律。當然這需要業務模型做相應的調整,同時,如果演化周期過長,那有可能模型在前期相當長的時間内,都不能做出較優的決策,是以需要業務容忍度較高。

3. 算力

衆所周知,訓練過程是一個典型的“計算密集型任務”,沒有強大的算力,是難以支撐算法模型的訓練和研究的。做機器學習的計算平台,GPU 幾乎是标配,其訓練時間比 CPU 一般能縮短 5 倍以上。

目前,主要有自建和租賃雲平台兩種途徑擷取。如果“不差錢”,當然可以選擇自建,但現在 GPU 更新換代太快,基本一年一換。對于做機器學習的 GPU 來說,運算速度是關鍵,很可能花了大價錢搭建的 GPU 叢集,過幾年卻變成了一台“老爺車”。

租賃雲平台雖然可以随時享受最新 GPU 運算速度帶來的“快感”,但所需花費的精力也不少。不但要詳細對比每家雲平台提供的服務和成本,還要合理的搭配 CPU和 GPU,做到資源利用最大化。

說了這麼多,提的最多的可能就是“成本”和“收益”這兩個詞了,這也是業務最關心的問題。無論是計算資源還是系統架構,上一套 AI 架構的解決方案都是需要投入相當大的成本的,如果選擇得當,在一個合适的場景下,AI 也是能帶來相當不錯的收益;但如果入不敷出,選擇 AI 架構的解決方案就要慎重了。

最後,技術人員儲備和法律因素也是上AI架構前需要考量的問題,前陣子還發生了國家工信部約談AI換臉應用企業的事件。

AI 是一場浪潮,它不僅帶來了新的技術和行業,也給了老系統煥發新生命活力的機會。作為技術人員,我們不僅要擁抱新技術帶來的挑戰,更要清楚其技術選型的主要因素和背後的風險,這樣才能屹立浪潮之巅。那麼,你是否需要 AI 架構的解決方案呢?

3個因素看透 AI 技術架構方案的可行性

原文連結:

https://yqh.aliyun.com/detail/14534

繼續閱讀