隨著大數(shù)據(jù)和以深度學(xué)習(xí)為代表的人工智能技術(shù)的飛速發(fā)展,算法工程師這個(gè)職業(yè)逐漸成為國(guó)內(nèi)互聯(lián)網(wǎng)行業(yè)的標(biāo)配。2016年3月,谷歌旗下DeepMind公司的圍棋程序“AlphaGo”戰(zhàn)勝職業(yè)九段棋手李世石。這場(chǎng)著名的科技秀把人工智能的熱潮從學(xué)術(shù)界席卷到工業(yè)界、新聞媒體和廣大群眾。
外行人眼中的算法工程師是高收入和高科技的職業(yè);而新入行的人往往覺得算法工程師門檻低導(dǎo)致內(nèi)卷化(人才飽和導(dǎo)致過度競(jìng)爭(zhēng))。隨著算法相關(guān)的工具越來越成熟,很多算法工程師自嘲為調(diào)包俠、調(diào)參俠,于是也開始有人唱衰這個(gè)職業(yè)。
本人作為有一些算法研究和實(shí)踐經(jīng)驗(yàn)的過來人,想分享一些自己在企業(yè)做算法工作的心得,順便為想入行做算法以及剛從事算法工作的朋友提供一些參考。本文的觀點(diǎn)基于個(gè)人的工作經(jīng)驗(yàn)和理解,如有不對(duì)的地方歡迎指正。
本文接下來的內(nèi)容分為六個(gè)部分:
1. 什么是算法
2. 算法的應(yīng)用場(chǎng)景
3. 算法技術(shù)介紹
4. 算法工程師的職業(yè)定位
5. 算法工程師的職業(yè)發(fā)展
6. 總結(jié)
1. 什么是算法
提到算法,有人可能會(huì)聯(lián)想到人工智能。個(gè)人覺得人工智能是個(gè)非常大的概念(很多算法技術(shù)似乎都可以歸類到人工智能),所以為了使敘述更清晰和聚焦,本文會(huì)避免用“人工智能”這樣的術(shù)語(yǔ),而是盡量用更精確的詞匯來描述算法相關(guān)的技術(shù)。
狹義地看,算法是用計(jì)算機(jī)程序求解 計(jì)算問題的方法。定義一個(gè)計(jì)算問題有兩個(gè)要素:輸入和輸出。
例(素?cái)?shù)判定問題):給定一個(gè)整數(shù),判斷它是否為素?cái)?shù)(素?cái)?shù)是只能被1和自身整除且大于1的整數(shù))。
以素?cái)?shù)判定問題為例,它的輸入是一個(gè)整數(shù),輸出是一個(gè)布爾值:“是”或“否”。求解素?cái)?shù)判定問題的算法是一個(gè)滿足上述輸入和輸出條件的計(jì)算機(jī)程序。
在實(shí)際應(yīng)用中,首先要明確算法需要解決的具體問題,以及對(duì)應(yīng)的輸入和輸出,然后才是設(shè)計(jì)與實(shí)現(xiàn)算法。我們可以把一個(gè)算法理解成一個(gè)滿足輸入與輸出要求的硬件裝置或軟件模塊。從這個(gè)角度來看,算法工程師與軟件、硬件工程師的工作是相似的:實(shí)現(xiàn)滿足輸入與輸出要求的算法(軟件、硬件)模塊。
算法工程師的工作目標(biāo)是實(shí)現(xiàn)“又快又好”的算法。具體來說,需要關(guān)注兩個(gè)要素:
解的質(zhì)量算法輸出的結(jié)果稱為“解”。它的解是否“正確”或者說有多好?
解的效率算法的計(jì)算時(shí)間有多長(zhǎng)?
更多關(guān)于算法的介紹可以參考經(jīng)典教材《Introduction to Algorithms》(中文:算法導(dǎo)論),作者:T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein。
前面介紹了算法的基本概念,接下來我們看看算法在商業(yè)中的應(yīng)用價(jià)值。
2. 算法的應(yīng)用場(chǎng)景
算法產(chǎn)生商業(yè)價(jià)值有兩個(gè)思路:
產(chǎn)品研發(fā) 算法本身是商業(yè)產(chǎn)品的一個(gè)核心模塊。例如,“詞典筆”可以直接“掃一掃”書本上的文字就能實(shí)現(xiàn)單詞或句子的查詢和翻譯功能。
與傳統(tǒng)的詞典相比,它不僅提供了更方便的查詢方式,而且體積小巧、方便攜帶。為了實(shí)現(xiàn)這樣的產(chǎn)品功能,背后的一個(gè)核心算法是文本圖像識(shí)別(稱為OCR技術(shù))。它解決的算法問題是這樣的:輸入一張文本照片,輸出照片中的文本內(nèi)容。我們不難發(fā)現(xiàn),決定這個(gè)產(chǎn)品體驗(yàn)好壞的關(guān)鍵因素之一就是文本識(shí)別的準(zhǔn)確率。
降低業(yè)務(wù)的復(fù)雜性 當(dāng)企業(yè)的規(guī)模增大,業(yè)務(wù)必然會(huì)變得越來越復(fù)雜。這個(gè)時(shí)候可能會(huì)導(dǎo)致兩種問題:
組織運(yùn)轉(zhuǎn)效率降低,典型的表現(xiàn)就是人力成本高、協(xié)作困難、決策流程冗長(zhǎng);
各業(yè)務(wù)節(jié)點(diǎn)之前存在依賴關(guān)系,導(dǎo)致需要決策的“變量”太多以及決策“空間”太大。
由于任何一種決策結(jié)果都會(huì)帶來顯著的成本,因此尋求低成本高收益的決策變得非常困難。在這樣的背景下,只有把復(fù)雜的業(yè)務(wù)抽象成一個(gè)個(gè)高內(nèi)聚、低耦合的模塊,然后用算法代替人工決策,才能達(dá)到降低成本、提高效率的目的。
接下來我們從三個(gè)角度介紹一些算法的商業(yè)應(yīng)用:
自動(dòng)化解決重復(fù)勞動(dòng)。
車牌識(shí)別汽車進(jìn)入單位、小區(qū)、上高速、停車等日常場(chǎng)景,管理人員一般都需要記錄車牌號(hào)以及出入場(chǎng)地時(shí)間。有了車牌識(shí)別技術(shù),在這些場(chǎng)景下軟件系統(tǒng)可以代替人工,精準(zhǔn)地記錄車輛號(hào)牌和出入場(chǎng)時(shí)間。
人臉識(shí)別人臉識(shí)別技術(shù)為金融和安防領(lǐng)域提供了廉價(jià)、準(zhǔn)確且高效的身份核驗(yàn)?zāi)芰?。以安檢為例,以往身份核驗(yàn)流程是首先由被檢人提供證件,之后檢查官做人證對(duì)比,最后在后臺(tái)查詢被檢人的犯罪記錄。整個(gè)過程既費(fèi)人又費(fèi)時(shí)。有了人臉識(shí)別技術(shù),被檢人只要面對(duì)攝像頭,系統(tǒng)就可以在1秒內(nèi)完成身份核驗(yàn)。
紙箱推薦在網(wǎng)絡(luò)購(gòu)物中,商品發(fā)貨時(shí)一般需要被裝入紙箱。而紙箱的大小對(duì)用戶體驗(yàn)和成本有著直接的影響。如果選擇更大的紙箱,對(duì)工人來說裝箱比較容易,但是成本高而且容易造成商品損壞;選擇稍小的紙箱,對(duì)工人來說裝箱耗時(shí)更長(zhǎng),會(huì)降低工作效率。
基于選擇紙箱這個(gè)頻繁操作的場(chǎng)景,我們?cè)O(shè)計(jì)了一套裝箱算法,為打包工人推薦最合適的紙箱,不僅節(jié)省了裝箱成本而且提升了用戶體驗(yàn)。
個(gè)性化解決用戶需求。
內(nèi)容推薦基于人的瀏覽行為與“內(nèi)容”進(jìn)行匹配,其中內(nèi)容包括文章、商品、廣告等,素材形式有文本、圖片、語(yǔ)音和視頻。好的推薦算法可以讓用戶在APP中看到更多自己感興趣的內(nèi)容,就會(huì)沉迷其中難以自拔。
換句話會(huì)說,用戶在APP上停留的時(shí)間越長(zhǎng),APP就可以把更多的廣告呈現(xiàn)在用戶面前,于是賺取更多的廣告費(fèi)。
地圖導(dǎo)航生活中出差、旅行、接人、上班等場(chǎng)景大概率需要用到地圖導(dǎo)航。輸入出發(fā)地、目的地、交通方式等信息,背后的路徑規(guī)劃算法會(huì)根據(jù)地理信息自動(dòng)幫我們規(guī)劃出一條路徑,甚至能避開擁堵和限行。
由于出行是人們的剛需,因此地圖導(dǎo)航是人們的必需品。它的商業(yè)價(jià)值不僅體現(xiàn)在廣告的觸達(dá)能力,更重要的是可以直接獲取珍貴的“線下”數(shù)據(jù)(出行數(shù)據(jù)),從而為其它的商業(yè)決策提供有價(jià)值的輸入,例如商業(yè)選址、餐館和景點(diǎn)的推薦等。
客服機(jī)器人在電商業(yè)務(wù)中,客服需要回答用戶的售前和售后提問,例如商品、活動(dòng)、物流、保修等各種咨詢。尤其是在大促期間,常常會(huì)出現(xiàn)用戶咨詢量過大導(dǎo)致等待時(shí)間長(zhǎng)的問題。
我們通過知識(shí)圖譜技術(shù)構(gòu)建商品和物流相關(guān)的知識(shí)庫(kù),然后把用戶經(jīng)常咨詢的問題進(jìn)行分類,基于自然語(yǔ)言處理的技術(shù)對(duì)用戶的提問進(jìn)行解析和回答,從而在一定程度上提升用戶體驗(yàn)并降低客服成本。
系統(tǒng)化解決復(fù)雜問題。
客服排班給客服安排上班的班次。當(dāng)客服人數(shù)多達(dá)百人時(shí),這個(gè)問題往往變得非常棘手。原因是現(xiàn)實(shí)中考慮的約束條件非常多,例如:
每個(gè)班次的客服人數(shù)不能低于指定的數(shù)量;
一個(gè)客服每個(gè)月必須休息8天,至少保證每月一次2天連休;
客服安排晚班之后,第二天不能上早班(因?yàn)樾枰菹ⅲ?/p>
一天同一個(gè)人只能安排一個(gè)班次;
每個(gè)人的晚班天數(shù)差異盡可能??;
當(dāng)客服規(guī)模達(dá)到一定數(shù)量時(shí),這個(gè)問題的復(fù)雜程度顯然出過了人的經(jīng)驗(yàn)?zāi)芰?。我們因此研發(fā)了一套排班算法來解決上述問題。
庫(kù)存調(diào)度用戶在網(wǎng)上下單之后,商品一般會(huì)從用戶所在區(qū)域的倉(cāng)庫(kù)發(fā)貨,稱為本地發(fā)貨。由于不同客戶購(gòu)買的商品和數(shù)量可能不同,因此單個(gè)倉(cāng)庫(kù)的商品可能會(huì)發(fā)生供需不均的情況。
我們需要對(duì)全國(guó)各倉(cāng)庫(kù)之間的商品進(jìn)行調(diào)撥,目標(biāo)是提高倉(cāng)庫(kù)的本地發(fā)貨率。這樣一來不僅能節(jié)約配送成本,而且能提高配送時(shí)效。
庫(kù)存調(diào)度要解決如下問題:
哪些商品需要調(diào)度?
從哪調(diào)到哪?
調(diào)撥量如何計(jì)算?
安排幾輛貨車?
實(shí)際中需要考慮的限制因素也非常多:
箱規(guī):按整箱調(diào)撥;
調(diào)撥限制:有些商品在只能調(diào)撥到特定倉(cāng)庫(kù);
倉(cāng)庫(kù)產(chǎn)能:倉(cāng)庫(kù)每日可調(diào)撥的件數(shù)有限;
貨車容量:貨車的長(zhǎng)寬高有尺寸限制;
大促和平銷的目標(biāo):平銷控成本,大促控本地缺貨;
我們自研了一套調(diào)撥系統(tǒng),可支持日均10萬(wàn)商品的調(diào)撥計(jì)劃自動(dòng)生成。試想一下,如果這背后沒有算法的支持,我們的人力成本、溝通協(xié)作成本以及軟件成本將會(huì)隨著業(yè)務(wù)的發(fā)展呈指數(shù)增長(zhǎng)。
用戶觸達(dá)隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,商家觸達(dá)用戶變得越來越容易。常見的線上觸達(dá)方式有APP內(nèi)的消息推送、短信和在線廣告。在這樣的背景下,商家觸達(dá)用戶需要從全局的角度來考慮,否則不僅浪費(fèi)成本而且可能帶來極差的用戶體驗(yàn)。
例如:一個(gè)用戶可能在同一天內(nèi)被短信、消息推送和廣告彈窗的騷擾,從而引起用戶對(duì)商家的反感。因此,我們觸達(dá)用戶時(shí)需要對(duì)四個(gè)要素做決策:觸達(dá)人群、觸達(dá)時(shí)機(jī)、觸達(dá)方式和觸達(dá)內(nèi)容。
由于不同的觸達(dá)方式對(duì)應(yīng)不同的成本與收益,我們自研的這套全渠道觸達(dá)決策系統(tǒng)不但可以從全局優(yōu)化“投入產(chǎn)出比”,還能為被觸達(dá)用戶提供個(gè)性化的文案和紅包等權(quán)益。這背后的算法系統(tǒng)除了要考慮商業(yè)價(jià)值和用戶體驗(yàn),還要考慮如何在現(xiàn)有業(yè)務(wù)中以低成本、低風(fēng)險(xiǎn)的方式進(jìn)行落地。
通過前文介紹的案例,我們可以看到算法既能作為商業(yè)產(chǎn)品的核心模塊輸出價(jià)值,也能簡(jiǎn)化業(yè)務(wù)、降本提效,從而讓業(yè)務(wù)更快更好地發(fā)展。值得注意的是,算法是一個(gè)寬廣的技術(shù)領(lǐng)域,涉及的技術(shù)方向較多。下面我們列舉一些常見的算法技術(shù)。
3. 算法技術(shù)介紹
本節(jié)介紹的算法技術(shù)(或方向)僅限拋磚引玉,不宣稱公認(rèn)的分類,也談不上深刻的理解。技術(shù)方向之間或多或少有重疊,也無法涵蓋所有算法方向。之所以列出這些方向,要么出于本人在工作中發(fā)現(xiàn)了它的應(yīng)用價(jià)值,要么源自于本人的興趣。
算法理論
這里提到的算法理論實(shí)際上是指算法相關(guān)的基礎(chǔ)知識(shí),主要分為兩塊:1. 數(shù)據(jù)結(jié)構(gòu);2. 算法設(shè)計(jì)與分析。數(shù)據(jù)結(jié)構(gòu)是算法的基石,掌握必要的數(shù)據(jù)結(jié)構(gòu)才有可能去實(shí)現(xiàn)一個(gè)算法。前文提到算法工程師還關(guān)心解的質(zhì)量和效率,而算法設(shè)計(jì)與分析的理論可以有效地指導(dǎo)我們?nèi)绾巫鲞@件事。
在實(shí)際工作中,或許90%以上的項(xiàng)目都可以使用現(xiàn)有的算法工具求解,而不需要我們親自設(shè)計(jì)算法。但是一旦遇到真正棘手的問題,它需要我們有能力應(yīng)對(duì),這也是算法工程師的價(jià)值所在。
我們?cè)?jīng)做包材推薦項(xiàng)目時(shí)需要求解一個(gè)三維裝箱問題。根據(jù)算法理論,三維裝箱問題是一個(gè) NP-難 問題。這意味著(在NP不等于P的假設(shè)下),它不存在“又快又好”的算法(即,多項(xiàng)式時(shí)間的精確算法)。于是我們?cè)O(shè)計(jì)算法方案的時(shí)候分兩部分考慮:
當(dāng)問題規(guī)模較小時(shí)采用精確算法;
當(dāng)問題規(guī)模較大時(shí)采用啟發(fā)式算法。
在求解小規(guī)模三維裝箱問題時(shí),我們對(duì)計(jì)算效率有較高要求。當(dāng)時(shí)開源的求解器不能滿足我們的需求,因此我們決定自研一套算法。這個(gè)時(shí)候就要求我們對(duì)算法設(shè)計(jì)的方法有一定了解。在項(xiàng)目中,我們用到了 規(guī)約(Reduction)的技巧,把一個(gè)三維裝箱問題轉(zhuǎn)化成 圖(Graph)上的搜索問題,然后利用圖相關(guān)的數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)化三維裝箱操作。
概率統(tǒng)計(jì)
數(shù)據(jù)往往是企業(yè)的寶貴資產(chǎn),因?yàn)樗粌H可以為商業(yè)決策提供依據(jù),還是業(yè)務(wù)的護(hù)城河。數(shù)據(jù)之所以會(huì)有價(jià)值,還依賴于正確的數(shù)據(jù)加工和使用方法。而概率統(tǒng)計(jì)提供了描述數(shù)據(jù)規(guī)律的方法,利用數(shù)據(jù)的規(guī)律,使得我們可以預(yù)判未來的趨勢(shì)、提高決策效率、降低決策成本。
雖然這是個(gè)大數(shù)據(jù)時(shí)代,但不意味著我們想要的數(shù)據(jù)應(yīng)有盡有。在實(shí)際項(xiàng)目中,我們常常面臨樣本量不足的問題。以銷量預(yù)測(cè)為例,假設(shè)我們要預(yù)測(cè)每個(gè)商品在 “雙十一”期間的銷量。這個(gè)時(shí)候我們發(fā)現(xiàn)一共才搞過四次雙十一活動(dòng)。換句話說,每個(gè)商品關(guān)于歷史雙十一的銷量最多只有四個(gè)樣本點(diǎn)。如果簡(jiǎn)單地?cái)M合這個(gè)規(guī)律,在實(shí)際中容易出現(xiàn)過擬合的問題,即導(dǎo)致預(yù)測(cè)值與真實(shí)值偏差很大。
在這種情況下,我們可以考慮結(jié)合主觀經(jīng)驗(yàn)與客觀事實(shí)。例如,假設(shè)雙十一的銷量與平銷的差異服從某個(gè)規(guī)律,然后借助歷史上幾次雙十一的銷售數(shù)據(jù)來修正這個(gè)規(guī)律。這套方法在統(tǒng)計(jì)上稱為貝葉斯估計(jì)(Bayesian Estimation):主觀經(jīng)驗(yàn)得到的規(guī)律稱為 先驗(yàn)分布,利用客觀事實(shí)修正后得到的規(guī)律稱為 后驗(yàn)分布。貝葉斯估計(jì)提供了一套主觀經(jīng)驗(yàn)與客觀事實(shí)結(jié)合的方法,能有效地彌補(bǔ)實(shí)際情況下樣本量不足的問題。
機(jī)器學(xué)習(xí)
網(wǎng)絡(luò)上每天生產(chǎn)著海量的文本、圖片、語(yǔ)音和視頻信息,它們也是企業(yè)珍貴的數(shù)據(jù)資產(chǎn),有著巨大的商業(yè)價(jià)值。那么如何用算法對(duì)這些信息進(jìn)行分類、理解以及分發(fā)?
深度學(xué)習(xí)普及之前,業(yè)界主流仍然是采用基于統(tǒng)計(jì)的方法處理這些數(shù)據(jù),即,利用概率分布函數(shù)來表示數(shù)據(jù)的規(guī)律。注意到數(shù)字媒體這一類數(shù)據(jù)的維度非常高,例如,一張手機(jī)照片的像素點(diǎn)就高達(dá)千萬(wàn),好處是它能表達(dá)的內(nèi)容非常豐富。但是從算法的角度來看,這一類高維數(shù)據(jù)非常難以處理,因?yàn)橐阎母怕史植己瘮?shù)難以表達(dá)這種規(guī)律,即使這些規(guī)律在人看來很簡(jiǎn)單。以文本識(shí)別為例,人可以快速識(shí)別出照片中的文字,但是我們很難找到一個(gè)函數(shù)把圖片上的像素值和它表達(dá)的文字關(guān)聯(lián)起來。
而深度學(xué)習(xí)提供了一種“逼近”這種復(fù)雜函數(shù)的方法。它通過定義“元函數(shù)”(稱為激活函數(shù))和仿射變換,然后利用海量的數(shù)據(jù)來擬合出這種復(fù)雜的函數(shù)關(guān)系(這個(gè)步驟稱為“訓(xùn)練”),從而可以表達(dá)“樣本”與“標(biāo)簽”之間的聯(lián)系。
例如,通過輸入大量包含水果的照片“訓(xùn)練”一個(gè)深度學(xué)習(xí)模型,從而讓計(jì)算機(jī)有能力識(shí)別照片中的水果。這背后并不是數(shù)據(jù)讓計(jì)算機(jī)有了真正的智能,而是它把照片的像素值作為算法模型的輸入,用類似于最小二乘回歸的方法擬合出了一個(gè)復(fù)雜的函數(shù),把像素值與“水果”之間的規(guī)律表達(dá)出來。
深度學(xué)習(xí)這種自動(dòng)化的擬合能力使它可以在海量數(shù)據(jù)中學(xué)習(xí)數(shù)據(jù)與標(biāo)簽之間的聯(lián)系,因而非常適合用來解決分類問題,例如人臉識(shí)別、圖像分割、語(yǔ)音識(shí)別、機(jī)器翻譯等。隨著機(jī)器學(xué)習(xí)工具和相關(guān)計(jì)算硬件(GPU、TPU、FPGA等)的發(fā)展成熟,機(jī)器學(xué)習(xí)應(yīng)用的門檻進(jìn)一步降低,模型的訓(xùn)練和部署已經(jīng)變得非常便捷。我們有理由相信,未來有只要數(shù)據(jù)的地方就有機(jī)器學(xué)習(xí)算法創(chuàng)造價(jià)值的機(jī)會(huì)。
建模與優(yōu)化
數(shù)學(xué)建模是一種把復(fù)雜問題抽象化的技術(shù),它用數(shù)學(xué)語(yǔ)言描述現(xiàn)實(shí)世界的問題,使得我們可以用系統(tǒng)的方法對(duì)它求解和分析。而優(yōu)化方法可以看作是求解數(shù)學(xué)模型的工具,例如前文提到的深度學(xué)習(xí)技術(shù),本質(zhì)上是用梯度下降的方法解一個(gè)優(yōu)化問題。
在企業(yè)經(jīng)營(yíng)中,利潤(rùn)和成本結(jié)構(gòu)往往是非常復(fù)雜的。以網(wǎng)易嚴(yán)選的電商業(yè)務(wù)為例,我們的業(yè)務(wù)鏈路包含商品研發(fā)、采購(gòu)、倉(cāng)儲(chǔ)、質(zhì)檢、配送、營(yíng)銷、渠道和售后。業(yè)務(wù)節(jié)點(diǎn)之間的成本(或利潤(rùn))可能同時(shí)存在依賴和沖突的關(guān)系,因此各節(jié)點(diǎn)做好自己的業(yè)務(wù)不一定意味著整體業(yè)務(wù)會(huì)好。
如何站在全局的角度來思考并解決業(yè)務(wù)中的復(fù)雜問題?需要分三步:
充分理解業(yè)務(wù);
把業(yè)務(wù)問題抽象化;
用數(shù)學(xué)語(yǔ)言表達(dá)然后求解。
構(gòu)建數(shù)學(xué)模型可以使用一套標(biāo)準(zhǔn)方法,即梳理數(shù)學(xué)模型的四要素:參數(shù)、變量、目標(biāo)和約束,其中參數(shù)是指問題的輸入。
以數(shù)獨(dú)游戲(Sudoku)為例,把數(shù)字1-9填入下圖的空格子中。
填入的數(shù)字必須滿足三個(gè)條件:
每個(gè)區(qū)塊包含數(shù)字1-9;
(圖中灰色方框包含的3×3小格子代表一個(gè)區(qū)塊)
每行包含數(shù)字1-9;
每列包含數(shù)字1-9。
問題的 輸入?yún)?shù) 是圖中給定的數(shù)字;變量 是空白處需要填入的數(shù)字;約束 是上述三個(gè)條件。這個(gè)問題沒有優(yōu)化目標(biāo)。這樣一來,我們可以得到求解數(shù)獨(dú)問題的數(shù)學(xué)模型:
利用通用的求解工具求解這個(gè)數(shù)學(xué)模型,即可得到數(shù)獨(dú)問題的解。
我們研發(fā)的決策產(chǎn)品, 例如庫(kù)存平衡系統(tǒng)、自動(dòng)補(bǔ)貨系統(tǒng)、排班系統(tǒng)和全渠道觸達(dá)系統(tǒng),都是以抽象的數(shù)學(xué)模型為基礎(chǔ),并持續(xù)地迭代模型和算法。這些算法產(chǎn)品在提升業(yè)務(wù)目標(biāo)的同時(shí),推動(dòng)業(yè)務(wù)沿著低復(fù)雜性的方向發(fā)展。
個(gè)性化技術(shù)
在電商業(yè)務(wù)中,一個(gè)殺手級(jí)的功能是可以為用戶帶來個(gè)性化的購(gòu)物體驗(yàn)(俗稱“千人千面”),因而使得網(wǎng)絡(luò)購(gòu)物比線下購(gòu)物更高效。個(gè)性化技術(shù)的典型代表是內(nèi)容推薦技術(shù),在電商業(yè)務(wù)中,推薦的內(nèi)容以商品為主。
為了實(shí)現(xiàn)更精準(zhǔn)的推薦,技術(shù)層面要不僅要參考商品和用戶的特征,甚至還需要考慮營(yíng)銷活動(dòng)、庫(kù)存、用戶體驗(yàn)等因素。這背后可能還需要圖像處理、音視頻處理和自然語(yǔ)言處理等技術(shù)的協(xié)同。
以生成商品頁(yè)面為例,一般它包含了賣點(diǎn)文案、圖片和視頻介紹。為了給用戶呈現(xiàn)個(gè)性化的文案、圖片和視頻風(fēng)格,從而刺激用戶下單,我們用自然語(yǔ)言處理技術(shù)抽取商品信息并生成賣點(diǎn)文案,用圖像生成技術(shù)制作不同風(fēng)格的商品圖片。
通過算法挖掘商品評(píng)論,我們可以自動(dòng)化地提取商品賣點(diǎn)并呈現(xiàn)給用戶,促進(jìn)用戶下單;對(duì)差評(píng)原因分類,從而改進(jìn)商品和提升購(gòu)物體驗(yàn);通過建立商品知識(shí)圖譜,用對(duì)話生成的技術(shù)回答用戶的售前和售后提問,從而提升用戶體驗(yàn)并降低客服成本。
回顧前文提到的深度學(xué)習(xí)技術(shù),它的成功離不開它在圖像、音視頻和自然語(yǔ)言領(lǐng)域的突破。而個(gè)性化技術(shù)本質(zhì)上也是在海量非結(jié)構(gòu)化數(shù)據(jù)中擬合人與內(nèi)容的聯(lián)系。因此,應(yīng)用深度學(xué)習(xí)技術(shù)可以有效地實(shí)現(xiàn)多種場(chǎng)景下的個(gè)性化能力,例如猜你喜歡、新品推薦、個(gè)性化文案等。
更多的技術(shù)
前文提到的算法技術(shù)只是工業(yè)應(yīng)用中的冰山一角。還有非常多不同的算法在工業(yè)界中大放異彩,例如計(jì)算機(jī)圖形學(xué)用于動(dòng)畫、游戲和工業(yè)設(shè)計(jì)中的三維建模,有限元分析用于建筑和橋梁設(shè)計(jì),同步定位與地圖構(gòu)建技術(shù)(SLAM)用于機(jī)器人和自動(dòng)駕駛等等。
世界在變化,用戶需求在變化,因而企業(yè)面對(duì)的問題也在不斷變化。技術(shù)人員應(yīng)該意識(shí)到?jīng)]有哪門技術(shù)能解決所有問題,而技術(shù)交叉越來越普遍,因此我們需要保持技術(shù)嗅覺和好奇心,堅(jiān)持學(xué)習(xí),然后用適合的技術(shù)解決問題。
4. 職業(yè)定位
前文介紹了一些算法技術(shù),但實(shí)際上并沒有在技術(shù)細(xì)節(jié)層面展開,而是始終圍繞技術(shù)在商業(yè)中的應(yīng)用價(jià)值,目的是想強(qiáng)調(diào)兩點(diǎn):一是在企業(yè)中技術(shù)必須創(chuàng)造商業(yè)價(jià)值,這樣才能讓企業(yè)在競(jìng)爭(zhēng)中領(lǐng)先,同時(shí)促進(jìn)行業(yè)的進(jìn)步;二是算法工程師的職責(zé)以“應(yīng)用”算法為主,不能脫離業(yè)務(wù)。
我把算法工程師分為三種類型(我承認(rèn)可能過于狹隘,畢竟某些企業(yè)還存在學(xué)術(shù)型的算法人才):
產(chǎn)品研發(fā)型
為產(chǎn)品研發(fā)提供技術(shù)支持。這種情況下,算法一般是商業(yè)產(chǎn)品的一個(gè)模塊。例如:詞典筆的文本識(shí)別功能、汽車的自動(dòng)駕駛系統(tǒng)、電商APP的搜索功能等。
產(chǎn)品研發(fā)型的算法工程師主要關(guān)心產(chǎn)品的技術(shù)實(shí)現(xiàn),用算法技術(shù)為用戶提供極致的體驗(yàn)。這種情況下,只要產(chǎn)品賣得好,算法的價(jià)值就能充分體現(xiàn)。因此,產(chǎn)品研發(fā)型的算法工程師一般出現(xiàn)在商業(yè)模式比較清晰的業(yè)務(wù)(例如賣產(chǎn)品、賣廣告)。
業(yè)務(wù)優(yōu)化型
當(dāng)業(yè)務(wù)發(fā)展到一定階段可能會(huì)面臨兩種局面:一是規(guī)模太大,例如用戶數(shù)、員工數(shù)、設(shè)備數(shù)、產(chǎn)品數(shù)等非常龐大;二是業(yè)務(wù)復(fù)雜,業(yè)務(wù)節(jié)點(diǎn)之間依賴與競(jìng)爭(zhēng)并存,導(dǎo)致成本和利潤(rùn)構(gòu)成復(fù)雜。這樣會(huì)造成業(yè)務(wù)的運(yùn)轉(zhuǎn)效率降低,企業(yè)成本增加。
在這樣的背景下,算法工程師需要為企業(yè)降本提效。例如:
實(shí)現(xiàn)業(yè)務(wù)節(jié)點(diǎn)的自動(dòng)化;
做精細(xì)化的決策;
業(yè)務(wù)建模與流程仿真。
以零售中的補(bǔ)貨為例,庫(kù)存量的多少直接影響到企業(yè)的成本和利潤(rùn)。一般來說,從下采購(gòu)單到貨品入庫(kù)需要制造和運(yùn)輸時(shí)間(稱為提前期,短則數(shù)周長(zhǎng)則數(shù)月),因此商家需要預(yù)估未來一段時(shí)間的銷售量,依此計(jì)算采購(gòu)量。由于預(yù)測(cè)不可能精準(zhǔn),所以會(huì)導(dǎo)致計(jì)算的采購(gòu)量與實(shí)際需求有偏差。采購(gòu)多了不僅占用資金而且會(huì)增大庫(kù)存積壓的風(fēng)險(xiǎn);采購(gòu)少了就會(huì)造成缺貨,從而損失銷售利潤(rùn)。因此,采購(gòu)量的計(jì)算模型直接影響到商家的成本和利潤(rùn)。
類似這樣的決策問題在零售業(yè)中比比皆是,算法工程師需要建立符合業(yè)務(wù)的數(shù)學(xué)模型,用科學(xué)的方法為企業(yè)做出最優(yōu)決策。
業(yè)務(wù)優(yōu)化型算法工程師的價(jià)值在于創(chuàng)造“增量”價(jià)值,即帶來成本的節(jié)約、效率的提升或利潤(rùn)的增加。在日常工作中,我們需要評(píng)估算法項(xiàng)目帶來的增量?jī)r(jià)值,避免把過多的精力放在價(jià)值不高的事情上。
需求洞察型
技術(shù)研發(fā)最難的地方有時(shí)候不是解決問題,而是發(fā)現(xiàn)問題。比如復(fù)盤業(yè)務(wù)數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)用戶規(guī)?;蚪?jīng)營(yíng)利潤(rùn)不達(dá)標(biāo),這個(gè)屬于業(yè)務(wù)癥狀。那么造成這些癥狀背后的主要原因是什么?這是我們需要回答的問題。算法工程師要有能力從數(shù)據(jù)的角度發(fā)現(xiàn)問題、抽象問題以及提供解決方案。
有人可能會(huì)質(zhì)疑,難道這不是數(shù)據(jù)分析師的職責(zé)嗎?沒錯(cuò),數(shù)據(jù)分析師當(dāng)然可以做這件事。但是對(duì)其能力的要求可能不僅限統(tǒng)計(jì)分析,還要有一定的建模和計(jì)算能力。事實(shí)上,發(fā)現(xiàn)技術(shù)問題的本質(zhì)是定義技術(shù)問題,而定義技術(shù)問題需要對(duì)技術(shù)有較深的理解。
下面我舉一個(gè)例子來說明這個(gè)觀點(diǎn)。我們?cè)?jīng)做一個(gè)包材項(xiàng)目,目標(biāo)是降低消耗紙箱的成本。我們的技術(shù)思路是研發(fā)一套三維裝箱算法,給倉(cāng)庫(kù)打包的工人推薦最優(yōu)箱型,從而節(jié)省裝箱成本。事實(shí)證明這套算法確實(shí)產(chǎn)生了顯著的效果。那么后續(xù)如何進(jìn)一步降低紙箱成本呢?
經(jīng)過思考我們發(fā)現(xiàn),這套三維裝箱算法還可以用來優(yōu)化紙箱的尺寸,從而達(dá)到進(jìn)一步降低紙箱成本的目的。之后我們用算法設(shè)計(jì)的新箱型,用歷史訂單進(jìn)行了一次模擬,評(píng)估發(fā)現(xiàn)確實(shí)可以顯著降低紙箱成本,于是推動(dòng)了新箱型在業(yè)務(wù)中的落地。回顧這個(gè)案例,我們從紙箱推薦問題出發(fā),進(jìn)而研發(fā)紙箱設(shè)計(jì)算法。這個(gè)研發(fā)需求的變化來源于我們對(duì)業(yè)務(wù)的理解和技術(shù)的認(rèn)知。
算法工程師走到這個(gè)階段,除了對(duì)技術(shù)能力的要求,還需要承擔(dān)部分?jǐn)?shù)據(jù)分析、產(chǎn)品設(shè)計(jì)甚至是業(yè)務(wù)操作的職能。從另外一個(gè)角度來看,數(shù)據(jù)分析師、產(chǎn)品經(jīng)理、業(yè)務(wù)人員也應(yīng)該掌握一些算法能力,以便從技術(shù)角度思考問題或者讓技術(shù)人員更快速地定位問題。
小結(jié)隨著技術(shù)工具越來越成熟,技術(shù)應(yīng)用的門檻越來越低,個(gè)人覺得未來對(duì)復(fù)合型人才的需求會(huì)越來越旺盛。作為算法工程師的你,不妨問自己幾個(gè)問題:
我們的商業(yè)產(chǎn)品是什么?它是否以算法為核心的產(chǎn)品?
我參與的算法項(xiàng)目,產(chǎn)生的商業(yè)價(jià)值是多少?
我們的商業(yè)模式是什么?業(yè)務(wù)的機(jī)會(huì)點(diǎn)在哪?
企業(yè)在不同的發(fā)展階段和不同的項(xiàng)目中對(duì)算法人才的要求是不一樣的,因此要求我們能夠在不同角色之間切換。技術(shù)是我們的出發(fā)點(diǎn),但解決問題才是我們的終點(diǎn)。只有站在商業(yè)的角度思考技術(shù),才能洞察需求和創(chuàng)造商業(yè)價(jià)值,進(jìn)而提升自身的競(jìng)爭(zhēng)力。
5. 職業(yè)發(fā)展
技術(shù)在進(jìn)步,需求在變化。只有洞察變化,才有可能引領(lǐng)技術(shù)創(chuàng)新,進(jìn)而提升自己的職場(chǎng)競(jìng)爭(zhēng)力。下面我站在職業(yè)發(fā)展的角度,探討一下算法工程師需要具備的能力(我承認(rèn)又狹隘了,畢竟作者本人菜雞一只)。
技術(shù)能力
技術(shù)能力是技術(shù)人員的立身之本。站在算法的角度,這里的技術(shù)能力主要是算法應(yīng)用能力,包括閱讀論文、算法實(shí)現(xiàn)、工程化以及相關(guān)文檔的撰寫。
技術(shù)人員常見的一個(gè)認(rèn)知誤區(qū)是技術(shù)大于一切,認(rèn)為只要技術(shù)做好了,就應(yīng)該得到認(rèn)可或獎(jiǎng)勵(lì)。事實(shí)上,技術(shù)在大多數(shù)情況下只是商業(yè)中的一環(huán),技術(shù)做得好不能確保商業(yè)上的成功。
以自營(yíng)電商為例,技術(shù)人員做一款功能強(qiáng)大的購(gòu)物APP不難,但同時(shí)必須有商品研發(fā)、供應(yīng)鏈和物流配送才能完成一個(gè)極小的商業(yè)閉環(huán)。此外,要想商品賣得好得有市場(chǎng)和運(yùn)營(yíng)團(tuán)隊(duì)一起發(fā)力。在這樣的背景下,購(gòu)物APP只是諸多商業(yè)環(huán)節(jié)中的一個(gè)節(jié)點(diǎn),因此僅僅依賴軟件研發(fā)技術(shù)顯然不足以實(shí)現(xiàn)商業(yè)上的成功。好的技術(shù)團(tuán)隊(duì)必須始終圍繞各商業(yè)環(huán)節(jié),有能力定位問題,并研發(fā)工具有效地解決問題。
業(yè)務(wù)能力
作為算法工程師,在立項(xiàng)和需求評(píng)審時(shí),需要有能力評(píng)估項(xiàng)目為業(yè)務(wù)帶來的價(jià)值以及算法在整個(gè)項(xiàng)目中的價(jià)值,從而避免把精力浪費(fèi)在“投入產(chǎn)出比”不高的事情上。如何做到這一步呢?除了有扎實(shí)的技術(shù),還需要深入了解業(yè)務(wù)。
需要了解的業(yè)務(wù)知識(shí)包括(但不限于)商業(yè)模式、業(yè)務(wù)流程、業(yè)務(wù)限制以及與當(dāng)前業(yè)務(wù)相關(guān)的技術(shù)等等。算法工程師了解業(yè)務(wù)的另一個(gè)好處是洞察需求,解決問題的同時(shí)可以發(fā)現(xiàn)更多的技術(shù)問題,從而推動(dòng)業(yè)務(wù)的進(jìn)步。
技術(shù)人員最難跨越的是從技術(shù)能力到業(yè)務(wù)能力的提升。有兩方面原因:一是技術(shù)人員主觀上不太愿意處理業(yè)務(wù)問題(扯皮的事情較多);二是技術(shù)人員晉升和跳槽時(shí)主要被考察的還是技術(shù),因此業(yè)務(wù)能力在有些技術(shù)人員看來短期的收益不高。
架構(gòu)能力
架構(gòu)能力是一種解決復(fù)雜問題的能力,它需要考慮業(yè)務(wù)的現(xiàn)狀和未來,把復(fù)雜問題分解成簡(jiǎn)單問題,然后給出解決方案。與軟件架構(gòu)相比,算法架構(gòu)更偏向業(yè)務(wù),不僅要對(duì)業(yè)務(wù)進(jìn)行建模和抽象,還要考慮工程實(shí)現(xiàn),以便技術(shù)方案在實(shí)際業(yè)務(wù)中落地。因此,良好的技術(shù)能力和業(yè)務(wù)能力是算法架構(gòu)能力的基礎(chǔ)。
算法相關(guān)的技術(shù)項(xiàng)目可能涉及到與其它技術(shù)工種的配合,例如:產(chǎn)品經(jīng)理、數(shù)據(jù)分析、數(shù)據(jù)開發(fā)、前端、后端、測(cè)試、運(yùn)維等。因此,算法工程師設(shè)計(jì)的技術(shù)方案應(yīng)該考慮到算法模塊與其它技術(shù)模塊的解耦與協(xié)同。
算法工程師做解決方案時(shí)應(yīng)該從全局出發(fā):一是技術(shù)上不僅考慮算法而且還要考慮工程實(shí)現(xiàn)和產(chǎn)品化(切忌手里有錘子,看什么都是釘子的想法);二是從整體業(yè)務(wù)的角度考慮項(xiàng)目帶來的收益。例如,假設(shè)推薦系統(tǒng)的重構(gòu)可以帶來推薦模塊的轉(zhuǎn)化率提升。那么這件事情一定值得做嗎?我們還應(yīng)該評(píng)估這個(gè)提升效果對(duì)大盤利潤(rùn)的影響。如果對(duì)大盤利潤(rùn)的提升有限,或許應(yīng)該把精力投入在更有價(jià)值的項(xiàng)目中。
管理能力
在互聯(lián)網(wǎng)行業(yè),多工種協(xié)作是常態(tài),但管理能力卻恰恰是技術(shù)人員最容易忽略的一項(xiàng)能力。這里說的管理能力不是站在管理人的角度,而是站在取得業(yè)務(wù)結(jié)果的角度。它主要體現(xiàn)在:溝通協(xié)作、項(xiàng)目管理、目標(biāo)管理和風(fēng)險(xiǎn)管理。
簡(jiǎn)單來說,就是把自己負(fù)責(zé)的事情做好而且講明白,即:
把要做的事講清楚;
按要求交付工作內(nèi)容;
把業(yè)務(wù)結(jié)果講清楚;
把風(fēng)險(xiǎn)講清楚。
我在工作中發(fā)現(xiàn),不重視管理能力的技術(shù)人員常常面臨這樣的尷尬局面:辛辛苦苦寫了很多代碼,最后項(xiàng)目卻沒有上線;或者項(xiàng)目上線了卻說不清收益。然后看著自己的同事,覺得他代碼能力不如自己,研究能力也不如自己,卻屢次升職加薪。于是內(nèi)心抱怨著命運(yùn)的不公:寫代碼的不如寫PPT的!
管理能力的提升不是一朝一夕,希望算法工程師們重視管理能力,在實(shí)際項(xiàng)目中不斷磨練自己。說不定升職加薪不過是水到渠成的事。
6. 總結(jié)
本文花了較大篇幅介紹算法的概念、應(yīng)用場(chǎng)景和算法技術(shù),目的是強(qiáng)調(diào)算法技術(shù)必須創(chuàng)造商業(yè)價(jià)值。隨著科技進(jìn)步和全球數(shù)字化時(shí)代的到來,商業(yè)決策只會(huì)變得越來越復(fù)雜,而算法產(chǎn)生價(jià)值的空間一定越來越大。
從前文提到的應(yīng)用場(chǎng)景,我們看到算法工程師這個(gè)職業(yè)的工作內(nèi)容是非常多元化的??鋸埖卣f,算法工作簡(jiǎn)直沒有邊界,這也對(duì)算法工程師提出了更高的要求。我總結(jié)成兩點(diǎn):
1. 算法工程師有三種類型:產(chǎn)品研發(fā)型、業(yè)務(wù)優(yōu)化型和需求洞察型。企業(yè)在不同階段以及不同項(xiàng)目中,對(duì)算法的需求是不同的。我們需要有能力洞察需求,并按需切換自己的角色。
2. 從職業(yè)發(fā)展的角度來看,算法工程師需要掌握四種能力:技術(shù)能力、業(yè)務(wù)能力、架構(gòu)能力和管理能力。業(yè)務(wù)能力和管理能力非常重要,但往往容易被技術(shù)人員輕視。
最后聲明一下,文中的觀點(diǎn)基于個(gè)人工作經(jīng)驗(yàn),由于個(gè)人經(jīng)歷的狹隘和認(rèn)知的不足,難免有不正確的地方,歡迎讀者指出。
?推薦閱讀:2022新疆高考防疫須知
?推薦閱讀:西藏:2022年度房地產(chǎn)估價(jià)師職業(yè)資格考試報(bào)名工作的通知
?推薦閱讀:吉林2023年二級(jí)建造師考試準(zhǔn)考證打印時(shí)間:考前一周內(nèi)
?推薦閱讀:營(yíng)養(yǎng)師證報(bào)名入口是什么 一年有幾次機(jī)會(huì)
?推薦閱讀:高中美術(shù)教師資格證考試科目有哪些 報(bào)名條件有哪些
以上內(nèi)容由河南考試信息網(wǎng)為您收集整理!如果您覺得有用,歡迎分享給朋友!掃描下方二維碼關(guān)注我們,獲取更多有用考試信息!
速覽!注冊(cè)城鄉(xiāng)規(guī)劃師拿證后別忘抵個(gè)稅!
已通過2023注冊(cè)城鄉(xiāng)規(guī)劃師考試的同學(xué)們想必都已順利下載了注冊(cè)城鄉(xiāng)規(guī)劃師電子證書啦!拿到證書后,同學(xué)們可以抵扣個(gè)人所得稅啦,抓緊時(shí)間辦理吧!注冊(cè)城鄉(xiāng)規(guī)劃師證書屬于專業(yè)技術(shù)人員職業(yè)資格中的準(zhǔn)入類證書。一,最新增加為7項(xiàng)附加扣除2023年12月1日-12月31日,納稅人需對(duì)次年享受個(gè)稅專項(xiàng)附加扣除的內(nèi)容進(jìn)行確認(rèn)。...0人閱讀時(shí)間:2023-12-26好機(jī)會(huì)!二建報(bào)名條件放寬!
在報(bào)名二級(jí)建造師執(zhí)業(yè)資格考試的條件中,許多省份要求申請(qǐng)者必須滿足以下條件:擁有工程類或工程經(jīng)濟(jì)類中等專科或更高學(xué)歷,并且從事建設(shè)工程項(xiàng)目施工管理工作至少2年。只有符合這些條件的人員才能參加考試。然而,由于市場(chǎng)緊缺,部分地區(qū)放寬了二級(jí)建造師報(bào)名條件。在以下七個(gè)地區(qū),即使沒有相關(guān)專業(yè)背景,也可以報(bào)考。重慶具備其他...0人閱讀時(shí)間:2023-12-26最新整理!24年一級(jí)注冊(cè)消防工程師報(bào)名條件相關(guān)問題及解答!
2024考季即將開始,你對(duì)2024年一級(jí)注冊(cè)消防工程師報(bào)考的相關(guān)信息了解多少呢?哪種學(xué)歷可以報(bào)考?畢業(yè)多久后可以報(bào)考?如何計(jì)算工作年限?今天我將帶你了解考取一級(jí)注冊(cè)消防工程師的報(bào)考條件!什么樣的學(xué)歷和專業(yè)可以報(bào)考?大專以上學(xué)歷,沒有專業(yè)沒有限制,消防工程及相關(guān)專業(yè)與其他專業(yè)都可以報(bào)考,只不過所需要的工作年限不...0人閱讀時(shí)間:2023-12-26速覽!2024年5月CFA考試安排及費(fèi)用發(fā)布!
2024年5月考期時(shí)間安排已正式公布!快來看看CFA考試時(shí)間安排、報(bào)名要求及流程吧~很多同學(xué)尤其是小白黨,學(xué)習(xí)進(jìn)度一直提不起來的一個(gè)關(guān)鍵原因就是對(duì)CFA不夠了解,沒辦法制定全周期的復(fù)習(xí)計(jì)劃。所以小編今天給大家?guī)砹薈FA考試指南!一、CFA考試時(shí)間安排及費(fèi)用協(xié)會(huì)在官網(wǎng)已正式公布24年CFA考試時(shí)間!小編已經(jīng)將...0人閱讀時(shí)間:2023-12-26想要成功報(bào)名,必須注意!2024初級(jí)會(huì)計(jì)報(bào)名開啟!
部分地區(qū)已發(fā)布了2024年的初級(jí)會(huì)計(jì)考試安排!不少地區(qū)要求考生需要做信息采集,但是很多小伙伴是第一次備考,可能有很多疑問:信息采集是什么?哪些地區(qū)需要做信息采集?需要哪些材料?今天小編給大家匯總了相關(guān)解答,一起來看看吧!信息采集是什么?會(huì)計(jì)人員信息采集是指當(dāng)?shù)氐闹鞴軝C(jī)關(guān)采集會(huì)計(jì)從業(yè)人員或者會(huì)計(jì)考試報(bào)名人員的基...0人閱讀時(shí)間:2023-12-26