杉數科技CTO王子卓:4大案例告訴你,如何用機器學習玩轉企業大資料 | 硬創公開課
在上一期雷鋒網AI掘金志硬創公開課《十大場景案例詳解:人工智慧如何提升商業效益》中,我們通過案例詳細介紹了AI用於商業實戰中的場景和效益。而為了真正幫助推動AI落地,我們將帶來更多場景單點技術乾貨分享,以饗讀者。
因此,本期公開課,雷鋒網邀請到杉數科技CTO王子卓博士來進行主題為“如何利用機器學習做運籌優化與智慧決策”的分享。
以運籌優化與智慧決策為例,王子卓表示,大資料要產生實質價值,必須真正提升決策品質。規律性分析能夠從海量資料中發掘出規律,但是找到規律並不自然而然帶來決策方案,所以運籌優化學和機器學習,就是將實際中決策問題轉化為數學模型,並用高效的優化演算法求解。因此,本次公開課,王子卓博士將分享他在解決實際問題過程中的建模、演算法優化實踐經驗。
嘉賓簡介
王子卓,杉數科技CTO、明尼蘇達大學工業與系統工程系助理教授,曾就職於IBM Watson研究中心及Janestreet capital等機構,擔任分析/研究員;清華大學數學與應用數學系學士,斯坦福大學金融數學碩士,斯坦福大學管理科學與工程博士,主要研究方向為定價與收益管理,電子商務、網路經濟學,隨機優化與魯棒優化及其在管理科學與金融中的應用。
杉數科技是一家專注於打造人工智慧決策的初創公司,杉數科技旨在通過人工智慧演算法構建企業在大資料時代下的決策閉環——從資料收集、規律分析、到最終的決策,主要服務客戶領域為電商零售、物流、金融。
以上是王子卓博士公開課視頻,強烈建議先看視頻!
以下是本次公開課實錄,雷鋒網做了不改變原意的編輯:
我今晚分享的內容主要有運籌優化的背景;什麼是運籌優化;運籌優化能解決的問題;運籌優化和機器學習之間的關係;最後展示幾個運籌優化在實際中的應用以及和機器學習共同解決實際問題的場景。
大資料時代下的商務決策
如今是大資料的時代,公司都希望能利用資料做更好的決策。我認為從資料到決策主要有三個步驟:
第一是資料的採集與管理,這是大資料時代的根本,這部分更多是由電腦技術實現的,包括硬體技術和軟體技術,可以認為是資料驅動決策的原材料;
第二是對資料進行規律性分析,找到資料背後的規律,以預測未來,這一步是由統計技術或者機器學習技術完成的;
但在實際的場景中,並不是簡單地對資料規律性分析,想要創造實際價值,我們需要根據分析結果進行決策,即第三步,利用資料進行決策建模與求解,這一步用到的技術是我們接下來討論的運籌優化技術。
資料是資料時代的原材料,規律性分析或機器學習把原材料加工成一些更精細內容,之後經過決策引擎,將這些材料轉化成于公司有益的知識。具體到底什麼是運籌優化呢?簡單來說,我們可以將實際生活中的決策轉化成數學模型,並且用運籌優化方法進行求解。
運籌學的背景
從廣義上講,優化運籌是非常古老的學科,可以追溯到人類有生產生活之後的非常久遠的歷史。著名的數學家歐拉有一句話:“Nothing at all takes place in the Universe in which some rule of maximum or minimum does not appear。"意思是,世間萬物無非都是優化過程,企業生產、普通人的生活,甚至一些重要的自然規律,實際上都是某種優化的問題。給大家舉個簡單的例子,物理學中的光折射定律或者光反射定律,實際上都可以認為是光線在尋找一條路徑以最短的時間達到某一點的某種優化問題。
通常認為,現代的運籌優化起源於大約上世紀的四五十年代,大約在第二次世界大戰期間,那個時候很多應用都集中於軍事領域,盟軍發現他們在作戰時有很多數學問題需要解決,比如說雷達部署問題、運輸船的護航問題、炸彈的投擲問題等,這些問題都是某種非常複雜的具體場景中的優化問題或者說數學問題。當時盟軍雇傭了大量數學家及電腦學家,像馮諾依曼等。在這期間,人們系統地發展出一套解決這類問題的方法,這就是運籌學最初的背景。
值得一提是,1947年,運籌學的泰斗George Dantzig發明了一個數學裡最經典問題——線性優化問題的解法。如果大家對這種演算法比較感興趣,可以在網上找一找,這個演算法被評為20世紀的十大演算法。戰爭結束之後,運籌學更多的被用到民用場景中,包括企業、政府、經濟發展等,並且也產生了大量的新演算法以及運籌學的各個分支。
在大約二三十年之前,由於電腦的發展,運籌學得到革命性突破,電腦的發展使得很多研究的演算法得以真正實現,使得其能真正幫助企業進行優化和決策。過去十幾年裡,大資料的發展又給運籌學帶來了更大的舞臺,剛才也說到,運籌學可以認為是把實際中的資料轉化成企業所需要的決策。大資料時代到來,我們有了大量的資料支撐,那我們就可以通過這一套方法幫助更多的企業進行更優決策。
智慧決策的重要工具
運籌優化
運籌優化有兩大重要的工具,第一是所謂的優化工具,我們說運籌優化,自然的優化本身是最核心的內容。優化問題有三個組成部分。
首先是決策。在很多實際場景中,我們都是針對特定的某件事或特定的目的進行決策。比如公司會經常面臨著庫存方面問題,要決策每天訂多少貨物;電商可能面臨著價格的決策、定價問題,在這個場景下,決策就是每一件商品的價格;在其他場景中,我們可能需要設計最優路線,比如快遞公司以最快的速度投遞每天的信件,決策就是投遞的路線,路線的整體就是決策。
第二是目標或目標函數,即我們做決策時希望達到的目的。比如剛才提到的有關庫存的決策,目標通常是減少庫存堆積、降低庫存成本等;有關定價的決策目的是增加企業收入或者銷量;路徑優化的目的是使完成路線所需時間或者所需要的成本最小化。
第三是約束,實際場景中,決策往往受到客觀條件的約束,比如庫存可能受到滿足用戶需求的約束;路徑優化可能會有道路上的限制;或有時候我們希望儘量少左轉,左轉的次數就成為約束。
優化問題便是要尋找在滿足這些約束的條件下最好地達到目標的決策。
在解決實際問題時,有兩個關鍵的步驟:
第一是建模,將實際問題通過最有效的數學形式來表達出來,建立數學模型。
第二是求解,有了數學模型型之後,通過演算法找到最優的決策、能夠達到最優的目標的且滿足約束條件的決策。
這兩步是整個優化問題中核心的兩部分,缺一不可。
首先,我們需要好的模型簡潔有效地刻畫實際問題。有效很容易理解,我們希望模型能夠盡可能地和實際問題吻合,即考慮實際問題的各個因素;簡潔是為了更好求解,另外也可以讓人們更好地理解優化模型。演算法或求解也是非常重要的。好的演算法可以更有效地求解更大規模的問題,現在遇到的問題經常是非常大規模的,好的演算法能保證在有效的時間內找到最優化目標的決策。
隨機建模
第二個工具是隨機建模。主要的目的是科學刻畫不確定性,並且基於不確定性環境分析,比如分析事物的發展規律及如何做出較優的決策。其中有很多具體的模型,比如隨機優化模型、魯棒優化模型、隨機類比方法以及像瑪律可夫決策過程這樣更加複雜的優化和決策模型。在複雜場景中,通常通過優化加隨機建模的方法刻畫問題,再通過優化的演算法進行求解,最終得到在複雜問題場景之下的決策建議。
以上就是運籌學兩大核心內容,即優化和隨機建模方法。
智慧決策
這幾年,人工智慧有非常大的發展,比如圖像識別、語言識別等技術,應用領域包括自動駕駛、智慧診斷等。但機器學習或人工智慧的本質到底是什麼呢?這個問題有很多角度,但在我看來,機器學習或人工智慧應用到具體問題中的話,它的核心也是兩部分,一部分是模型,另一部分是演算法。比如在自動駕駛中,我們需要通過模型判斷如何識別障礙物或路況,有模型之後,我們需要通過演算法求解這個模型。
這裡的演算法包括兩個部分,首先模型中存在大量參數,我們需要通過演算法找到模型中的參數,使得模型能最好地刻畫想刻畫的場景。另外,通過演算法求解最優決策。在自動駕駛中,我需要決定車往左走多少度或往右走多少度;在遊戲裡要決定我下一步做什麼。演算法的第二部分就是在模型基礎上做出最優決策。
我認為,機器學習和人工智慧在解決實際問題的任何場景中,核心部分仍然是模型和演算法兩部分,雖然不同的場景有可能有不同模型和演算法,這與上面介紹的運籌優化是一致的。
機器學習與運籌優化關係
很多時候,機器學習本身的核心也是運籌優化的一部分。機器學習中一個非常經典的問題:支持向量機問題,簡稱SVM問題。
這個問題的背景是這樣的:我有很多數據點,我知道一些資料屬於某種類別,另一些不屬於,我需要找到方法區分這兩類資料點,如果有新資料點進來,我就可以判斷其是否屬於某個類別,這可以用到智慧診斷中。資料點對應病人的病歷,通過歷史資料,我們知道某些病人患有哪些疾病,通過這樣的分類,我們對未來病人自動診斷。
這類問題的應用場景非常廣泛,除去剛才提到的智慧診斷之外,還比如垃圾郵件自動分類、模式識別等,甚至一些圖像識別都可以用類似方法處理。這是非常基本、也是非常核心的機器學習問題,從數學角度來看,這個問題無非就是優化問題。
上面PPT的右上角坐標系中,我們希望找到一種分割方式,把紅點和藍點盡可能地區分開。假設先考慮簡單的劃分方法,比如找到一條直線盡可能將紅點和藍點區分,那麼,決策就是找到這條線,這條線對應運籌優化中的決策。有了決策,即我們找到了這條線之後,未來有一個新的點,只需判斷其線上上還是線下,就能判斷它是紅色還是藍色。
我們的目標是盡可能使這條線把不同類別的資料點能夠分開。在實際情況,顯然不可能有一條線資料點徹底分開,必然存在誤差,這種情況下,我們就要儘量減小誤差。除此之外,實際中對於這些線也有約束,比如參數要滿足特定條件。
這樣,我們可以把這個問題寫成優化問題,通過求解找到最優參數。如今,通過一些先進的優化演算法,可以非常有效地求解這類優化問題,把這類問題轉化線性規劃問題或凸優化問題,現在演算法可以非常有效地求解。對於上述問題,哪怕存在幾百萬變數求解也可以很容易,在筆記型電腦上求解可能只需要幾秒或者幾分鐘。其中的核心是優化演算法。
剛才我們是用直線劃分,其實我們也可以用其他形狀劃分,比如橢圓、圓形等。不同情況對應不同的模型,不同的模型對應不同的優化問題,寫優化問題的時候需要修改,修改後又會面臨求解問題,其中會涉及到優化問題求解演算法。其中,優化模型和演算法是機器學習問題的關鍵。
實際上,基本所有機器學習問題都可以歸類成優化問題,我們需要選擇的是機器學習模型下的參數,用x表示;歷史的資料用D表示,我們要尋找最優參數使其可以最好描述歷史資料。f表示x和D的擬合程度,通常對於x,我們會加一些懲罰函數使得x滿足某種條件,甚至有時對x加一些約束條件。
從這個角度來講,所謂的機器學習問題,本質上都是優化問題,如果我們有優化演算法方面的優勢,意味著我們也有機器學習演算法的優勢。
研究機器學習或討論機器學習時,一方面模型的選取非常重要,另外一方面,背後的優化演算法也很重要,這些才是使你在面對新模型或複雜場景時都找到好的解決方案的基礎。
機器學習、運籌優化、應用案例
一、線上匹配問題
靜態匹配的問題
我簡單介紹一下靜態匹配問題,在很多場景中我們都會面臨這樣的問題,即將供給和需求進行匹配,比如打車軟體需要將計程車司機和乘客進行匹配;搜尋引擎需要把搜索關鍵字和廣告商進行匹配;線上交友網站需要把男生和女生進行匹配,其中每一個匹配都有其分數,即兩端匹配程度。
在靜態的匹配問題中,我們的目標是供給與需求如何匹配以最大化匹配總分數,這樣的問題實際上就是典型的優化問題。我們按照剛才說的決策目標和約束,把它寫成優化問題。
在實際場景中會存在一些約束,比如一個供給只能匹配給一個需求,一個需求只能配給一個供給,以及一些更複雜約束都有需要考慮,但是不管怎樣,我們把這個問題寫成優化問題,有好的演算法之後就可以高效求解。
線上匹配問題
上面講的是靜態匹配問題,即假設匹配的兩端都是在確定的情況下進行匹配的。但在實際場景中,我們通常面臨動態或線上的問題,比如在打車過程中,車和乘客都是動態出現的;在搜尋引擎場景下,匹配一端比如廣告商是固定的,但關鍵字是逐個出現的,每出現一個關鍵字的時候都要決定把它匹配給哪個廣告商。這些問題涉及不確定性,我們在匹配這個需求的時候,並不知道未來可能還會產生哪些需求或者供給,但目標仍是使得最終匹配分數最大,在某個時間段或長時間維度上獲得最大價值。這就是一個不確定性下的優化問題。
這個問題就比靜態匹配問題複雜不少,
但我們仍然可以把它寫成優化問題形式,只不過在這類優化問題中,係數不是事先給定而是動態生成的,我們可以用多種方式假設,比如這些係數可能是按某種概率分佈生成的,甚至我們可能都不知道這些係數分佈,只知道出現的順序是隨機的。我們可以有不同的假設,但在每一個點產生之後,我們要決定如何進行分配,是分配給某資源?或不匹配這個點,這就是實際中做決策的問題。
實際上,對於做運籌優化的人來說,我們要對這個問題設計一系列演算法,即如何決策才能達到最優目標。經過一系列研究之後,人們提出一些演算法。其中一種演算法是,觀察少量樣本,求得每個右端資源j的“合理”價格,在優化裡稱之為“對偶變數”。當新的需求或匹配產生之後,將匹配分數和所需消耗資源的價值進行比較,看這個匹配是否帶來了應有的價值,如果匹配的價值比計算出的合理價格高的化,我們就進行這個匹配,而且選擇其中最有匹配使得價值比價格高最多。否則,就拒絕這個匹配請求,這就形成了可以實際運行的演算法。
另外, 做運籌優化的人不僅是提出一個演算法,還希望能證明一個演算法確實能夠達到最優的決策,實際上,通過一些數學方法也可以證明。
從某方面看,這個問題也有一個機器學習的成分,比如通過不斷觀察樣本,機器可以學習每件商品的價值。本質上,這也是優化結合隨機建模的問題,我們剛才講到優化和隨機建模是運籌學的兩大核心內容,通過這樣的演算法和模型,我們可以面對這種實際的場景,達到長期最優的策略。
二、收益管理
第二個是關於收益管理的場景。簡單來說,收益管理就是定價和銷售問題,商家要決定其商品以什麼形式什麼價格賣給消費者,或者說希望以正確的時間將正確的商品以正確的價格賣給正確的人,通常在進行收益管理的決策的時候會有這樣的過程。
首先是資料獲取;然後根據資料對消費者進行分析,比如客戶挖掘、對消費者進行標注、分析消費者對價格的敏感程度等;在此基礎上進一步決策,比如用什麼樣的價格買哪些商品、什麼時間賣等。實際上這部分與我們開始說的從資料到決策的鏈條是一致的。
組合定價
其中一個很重要的問題叫組合定價問題。商家要管理很多商品,商品之間可能會有需求的關聯性,比如同時銷售可樂和百事的話,一種商品的價格可能會影響另一種商品的銷量,在這種情況下,商家需要決定如何對多種商品進行組合定價。其中的決策就是每一種商品的具體價格,目標是未來最大化整體收益,這個過程也涉及建模和求解兩個步驟。
這裡也有很多模型,比如通過消費者選擇模型刻畫消費者對商品的選擇,其中用到優化和機器學習選擇最好的模型。有了模型之後,我們要決定如何定價以最大化利潤或銷量等,這就變成了非常經典的優化問題。除定價以外,商家還面臨著像選品、商品展示區等問題,仍然需要考慮到商品之間互相影響情況,這些問題均可以寫成優化問題,同樣需要優化演算法對這類問題求解。
三、動態定價
上述組合定價問題可以看做靜態問題,在實際中我們經常遇到動態問題。一開始,我們對消費者的偏好不是非常瞭解,希望通過動態定價、資料收集來瞭解消費者對商品的偏好、或學習消費者的行為,這就涉及如何動態定價的問題。我們要確定到底要通過多少資料點、怎麼設計這些價格以學習消費者行為,同時不能由於定價波動太大造成收益損失、或對消費者產生負面影響,我們要確定什麼樣的方案是長期最優方案,既能學習到消費者對商品的偏好,又能夠獲得最大收益,這個可以認為是機器學習問題,也可以看做運籌優化和機器學習結合問題。
同樣,關於這類問題有大量演算法,但重要的是,我們不僅要提出演算法,還要證明這個演算法是所有演算法中最好的。
四、路徑優化
我們之前也提到過,像電商、物流公司等企業在經營過程中都會面臨這樣的問題:比如每天要把貨物送達幾個消費者,想要設計一條在最短的時間或路程內完成任務的路線,這就是路徑優化問題的基本形式。
有許多優化模型或演算法可以求解這個模型,但實際生活中,基於這個基本的場景還有很多非常複雜的變化或需求,比如不僅要送貨,還要取貨;不僅是一個人送貨,可能有很多人或車要送貨或取貨,這就涉及到車輛和人員的分配問題;或有些需求不是事先確定的,還有一些即時需求,比如快遞員突然接到上門取件的訂單;另外,在送貨路途上花費的時間也有很大不確定性,這些情況下,就需要線上演算法應對這樣的需求。現在比較火的自動化倉庫管理,機器人管理倉庫時會遇到貨物擺放問題、機器人如何取貨問題等,這裡要平衡不同機器人之間任務以及優化每一個機器人路徑,其中也會面臨複雜的建模和求解問題。
實際場景中的問題是非常複雜的,而把這些場景的要求轉化為數學模型,之後進行求解,這是運籌優化最擅長的。
總結:
說了這麼多,我希望大家能瞭解這幾點:
對運籌優化有基本瞭解。什麼是運籌優化,對於實際問題能產生什麼價值,運籌優化和機器學習的關係。兩者之間更多是一種相互支持的關係,在很多場景下,優化運籌和機器學習結合才能提高好的解決方案。
運籌優化的一些基本方法。包括優化和隨機建模。
最後,我想談一下國內運籌優化的發展情況。
總的來說,國內運籌優化的發展比美國要落後一些,美國很多的大企業,像亞馬遜、穀歌或者一些物流企業,內部都有一大批運籌學背景的團隊來解決公司生產可能面臨的問題,比如亞馬遜中有50~200個的運籌學博士做定價、庫存、物流等方面的決策支持。這方面,國內要落後一些,但我認為,未來幾年,國內很多企業會在這方面轉型,過程中正需要運籌優化的技術,這些技術説明企業將大資料轉換為真正的決策。