算法知識匯總:構(gòu)成/學(xué)派/算法
如果你是產(chǎn)品經(jīng)理,希望了解算法的基本知識,可以考慮閱讀本文。
01 概述
機器學(xué)習(xí)(Machine Learning,ML)就是通過計算機程序?qū)π畔⒑蛿?shù)據(jù)進行重新組織,使用算法優(yōu)化自身性能的系統(tǒng)。搜索引擎、內(nèi)容推薦、信息流、在線廣告等已經(jīng)是機器學(xué)習(xí)算法的傳統(tǒng)應(yīng)用領(lǐng)域,與此同時,機器學(xué)習(xí)的應(yīng)用領(lǐng)域還在不斷擴展。
目前,很多產(chǎn)品、運營的工作都需要圍繞機器學(xué)習(xí)算法系統(tǒng)開展,算法系統(tǒng)已經(jīng)成為很多產(chǎn)品的核心競爭力。在這樣的背景下,為了更好地迭代有算法邏輯的產(chǎn)品,了解機器學(xué)習(xí)算法的基本邏輯就顯得非常必要。
機器學(xué)習(xí)首先是一個學(xué)習(xí)的過程,目前的機器學(xué)習(xí)已經(jīng)實現(xiàn)了學(xué)習(xí)的基本邏輯,可以從過去的經(jīng)驗中抽象出一些規(guī)律,同時將這些規(guī)律應(yīng)用在未來的場景下。
湯姆·米切爾(Tom M.Mitchell)在他的《機器學(xué)習(xí)》一書給了機器學(xué)習(xí)一個定義:
“對于某類任務(wù)T和性能度量P,如果一個計算機程序在T上以P衡量的性能隨著經(jīng)驗E而自我完善,那么我們稱這個計算機程序在從經(jīng)驗E學(xué)習(xí)。”
在這個定義中可以看到機器學(xué)習(xí)的幾個關(guān)鍵點:任務(wù)(任務(wù)T)、性能指標(性能度量P)、歷史數(shù)據(jù)(經(jīng)驗E)。
對于某類任務(wù),不斷從數(shù)據(jù)中學(xué)習(xí),從而優(yōu)化這個任務(wù)的性能指標,這是目前機器學(xué)習(xí)算法的核心邏輯。
02 構(gòu)成
機器學(xué)習(xí)系統(tǒng)由數(shù)據(jù)、算法模型、模型評估、計算結(jié)果組成。
機器學(xué)習(xí)系統(tǒng)的出發(fā)點是數(shù)據(jù),計算結(jié)果呈現(xiàn)給用戶或系統(tǒng)之后,用戶的行為數(shù)據(jù)會反饋數(shù)據(jù),這些反饋數(shù)據(jù)又會重新輸入模型中。這是機器學(xué)習(xí)的基本流程,如下圖所示:
數(shù)據(jù)是機器學(xué)習(xí)系統(tǒng)的出發(fā)點。機器學(xué)習(xí)系統(tǒng)能夠成立的前提,是有足夠讓系統(tǒng)做出決策的數(shù)據(jù)。
判斷一個問題是否能用機器學(xué)習(xí)解決,就是看能否收集足量的相關(guān)數(shù)據(jù)。
比如,所有用戶對內(nèi)容的瀏覽行為數(shù)據(jù),可以對某一個特定用戶接下來的閱讀偏好做判斷。用戶的每個瀏覽和點擊行為數(shù)據(jù),都意味著個人偏好的表達,同時其他相關(guān)用戶的行為也可以作為這個用戶行為推測的依據(jù)。構(gòu)造算法系統(tǒng)需要從多個角度判斷數(shù)據(jù)是否滿足構(gòu)建算法模型的需求。
在確定了數(shù)據(jù)可以構(gòu)建機器模型來解決業(yè)務(wù)問題之后,就到了模型構(gòu)建階段。在算法模型的構(gòu)建中,最關(guān)鍵步驟就是將問題抽象成機器學(xué)習(xí)能處理的標準問題。機器學(xué)習(xí)算法一般會對實際情況做一些模型假設(shè),這些假設(shè)包含著一些待確定的參數(shù),機器學(xué)習(xí)模型就是要找到符合實際情況的模型假設(shè),并且通過算法的迭代確定出合理的參數(shù)。
在了解業(yè)務(wù)和算法的基礎(chǔ)上,模型的構(gòu)建過程會順利很多,但是在缺少評估的情況下,模型也不可能順利構(gòu)建。模型評估一方面相當(dāng)于質(zhì)量檢驗,保證模型輸出結(jié)果的質(zhì)量,防止上線之后產(chǎn)生明顯的體驗問題。同時模型評估中發(fā)現(xiàn)的問題,也是模型優(yōu)化的重要依據(jù)。
在模型評估完成之后,就可以在線上給用戶輸出機器學(xué)習(xí)模型的計算結(jié)果。這些計算結(jié)果最終會在用戶的使用中得到驗證。真實的線上數(shù)據(jù)會反映模型上線后的效果,這些線上數(shù)據(jù)也會成為后續(xù)機器學(xué)習(xí)模型迭代的數(shù)據(jù),從而形成完整的信息閉環(huán)。
雖然不同的算法有著不同的實現(xiàn)方法,但是大部分機器學(xué)習(xí)算法基本都是由這些模塊構(gòu)成的。
03 五大學(xué)派和典型算法
佩德羅?多明戈斯(Pedro Domingos)在《終極算法》中將機器學(xué)習(xí)算法分為了五大學(xué)派,也基本涵蓋了目前的主流機器學(xué)習(xí)算法。接下來會介紹這五個學(xué)派的典型算法。
1. 聯(lián)結(jié)學(xué)派(The connectionists)
聯(lián)結(jié)學(xué)派的主要思想是通過神經(jīng)元之間的連接來推導(dǎo)知識。聯(lián)結(jié)學(xué)派有點類似于大腦的逆向工程,希望通過訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)以獲取結(jié)果。它是目前最炙手可熱的機器學(xué)習(xí)學(xué)派,神經(jīng)網(wǎng)絡(luò)和基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)都屬于聯(lián)結(jié)學(xué)派。
人工神經(jīng)網(wǎng)絡(luò)是一種非線性學(xué)習(xí)算法,和生物學(xué)的神經(jīng)元類似,由多個節(jié)點組成。神經(jīng)網(wǎng)絡(luò)中每個節(jié)點的名字也沿用了生物學(xué)中的神經(jīng)網(wǎng)絡(luò)的概念,同樣叫作神經(jīng)元。生物神經(jīng)元和算法神經(jīng)元的結(jié)構(gòu)如下圖所示。
在生物的神經(jīng)網(wǎng)絡(luò)中,多個樹突的末梢收集神經(jīng)刺激電信號,將這些信號加工成新的電信號,通過軸突傳遞出去。
而人工神經(jīng)網(wǎng)絡(luò)也是這樣的結(jié)構(gòu),多個參數(shù)在神經(jīng)元中加工并輸出到下一個節(jié)點。各個節(jié)點使用Sigmoid函數(shù)進行參數(shù)處理,如下所示:
在一個多層的神經(jīng)網(wǎng)絡(luò)中,每個神經(jīng)元都通過這樣的模式,將數(shù)據(jù)不斷傳遞下去,并最終輸出計算的結(jié)果。如下圖所示的是一個典型的人工神經(jīng)網(wǎng)絡(luò)。
具體的優(yōu)化方法在這里不展開描述,有興趣的讀者可以查看相關(guān)資料。
值得一提的是,Sigmoid函數(shù)是一個在算法領(lǐng)域很常見的函數(shù),可以將無界的變量映射到(0,1)之間,這個函數(shù)的特性是很多算法策略都會用到——神經(jīng)網(wǎng)絡(luò)中,正是因為結(jié)點用了這個函數(shù),才保證了可以兼容各種類型的數(shù)據(jù)。Sigmoid函數(shù)曲線如下所示:
基于這樣的方法可以構(gòu)造出不同類型的神經(jīng)網(wǎng)絡(luò)模型,神經(jīng)網(wǎng)絡(luò)模型因為可以兼容多種類型的數(shù)據(jù),在現(xiàn)實中都有著廣泛的應(yīng)用,包括線上信息分發(fā)系統(tǒng)、圖像識別、機器翻譯等。
當(dāng)然,這樣的算法也有著明顯的問題——模型可解釋性差,模型對數(shù)據(jù)量的要求比較高。因此,神經(jīng)網(wǎng)絡(luò)算法適用于有著海量數(shù)據(jù)且對算法解釋性要求不高的業(yè)務(wù)。
2. 符號學(xué)派(The symbolists)
符號學(xué)派通過訓(xùn)練可解釋的規(guī)則來解決問題。符號主義者更側(cè)重邏輯推理,用幾個過去的數(shù)據(jù)訓(xùn)練出一套規(guī)則引擎,對未來進行預(yù)測和判斷。決策樹和以決策樹為內(nèi)核的很多機器學(xué)習(xí)算法都屬于符號學(xué)派。
決策樹算法是一種典型的分類方法,是數(shù)據(jù)挖掘中常用算法之一。在決策中利用歸納算法可以生成可讀的決策規(guī)則,這個決策規(guī)則能夠?qū)⒖赡艹霈F(xiàn)的實例都進行分類和預(yù)測。
決策樹算法非常接近人的決策過程,人的很多標準化工作,其實也可以理解為生成了一個決策樹。
以產(chǎn)品經(jīng)理面試為例來闡述決策樹的模型框架,假設(shè)通過對話可以了解候選人的三個特征:決策能力評分、系統(tǒng)學(xué)習(xí)能力評分、合作能力評分,同時假設(shè)通過這三個特征即可判斷候選人是否通過。那么這個決策流程可能如下圖所示:
這是一個標準化的決策流程,而決策樹其實就是通過利用歷史數(shù)據(jù)構(gòu)造對未來實例進行自動化決策的方法,核心是確定每個屬性在決策樹中的位置。
在整個決策樹的生成過程中,從根部節(jié)點開始生成,每次向下分類都選擇信息增益率最大的節(jié)點,不斷迭代生成決策樹。為了防止過擬合,也會采用一定的規(guī)則算法對決策樹進行減枝,例如規(guī)定生成子節(jié)點的最小信息增益率,小于一定值不生成子節(jié)點。
決策樹是多元分類器常用算法之一,很多機器學(xué)習(xí)算法都會用決策樹的模型構(gòu)建更高級的模型。相對其他的算法模型,決策樹的決策流程更貼近決策實際情況,決策樹形成的規(guī)則也可以幫助我們更深入地理解業(yè)務(wù)。
3. 進化學(xué)派(The evolutionaries)
進化學(xué)派,是以遺傳學(xué)和進化生物學(xué)的理論基礎(chǔ),進行模型構(gòu)建。核心方法是構(gòu)造算法的評估標準和進化方法,在系統(tǒng)中不斷迭代算法獲得最佳解決方案。今年興起的強化學(xué)習(xí)就是進化學(xué)派的代表。
近年來機器學(xué)習(xí)的浪潮進入大眾視野,和AlphaGo戰(zhàn)勝李世石和柯潔的新聞有很大地關(guān)系。很多人不知道的是——在戰(zhàn)勝了柯潔之后,Deepmind公司推出了拋開人類經(jīng)驗的新版本人工智能AlphaGo Zero,這就是強化學(xué)習(xí)的典型應(yīng)用。
強化學(xué)習(xí)是系統(tǒng)用試錯的方式進行學(xué)習(xí),通過不斷和環(huán)境交互訓(xùn)練策略。在系統(tǒng)中,需要構(gòu)建出可以和系統(tǒng)不斷交互的環(huán)境,對系統(tǒng)的每一個動作進行評判,系統(tǒng)根據(jù)每個動作的獎懲信號(強化信號),不斷調(diào)整最佳的動作策略。下面是一個典型的信息交互圖。
具體在圍棋場景中,對弈中每一盤棋的勝負和局勢變化都是系統(tǒng)的獎懲信號,每一步落子都是動作,虛擬對局中的圍棋規(guī)則就是系統(tǒng)的環(huán)境。
這種算法目前在工業(yè)界已經(jīng)有了很多應(yīng)用,比如基于強化學(xué)習(xí)的推薦算法等。在實際背景下,算法面臨的環(huán)境往往是不確定的,不像圍棋中的規(guī)則總是固定的。為了應(yīng)對這個問題,算法就需要將現(xiàn)實問題抽象為穩(wěn)定的虛擬環(huán)境,也就是構(gòu)成出仿真系統(tǒng),這也是現(xiàn)實條件下,強化學(xué)習(xí)算法構(gòu)建過程中最難的一步。
仿真系統(tǒng)也不是新鮮的概念,所有的航空航天器要上天都要測試空氣動力學(xué)性能,就會用到風(fēng)洞系統(tǒng),風(fēng)洞就是對飛行中各種情況的仿真。而算法系統(tǒng)需要構(gòu)造的就是這樣一個在線的風(fēng)洞。
強化學(xué)習(xí)目前的缺點也很明顯,算法高度依賴仿真系統(tǒng)的構(gòu)建,應(yīng)用場景有限,同時實現(xiàn)復(fù)雜且不可解釋,還需要投入大量的資源。
但是強化學(xué)習(xí)的學(xué)習(xí)過程,很像生物的進化過程,人類本質(zhì)也是在地球這個環(huán)境中,以生存和繁衍為目標進化出的高級智能。也許強化學(xué)習(xí)進一步發(fā)展后,能夠真正推進機器學(xué)習(xí)進入更高的層次。
4. 貝葉斯學(xué)派(The Bayesian school of thought)
貝葉斯學(xué)派專注于研究概率推理和用貝葉斯定理解決問題。貝葉斯定理的核心是用先驗概率來推測后驗概率,也就是不斷通過新的數(shù)據(jù)來更新原有的對于概率的估計。樸素貝葉斯算法就是貝葉斯學(xué)派的典型算法,典型的應(yīng)用就是垃圾郵件過濾系統(tǒng)。
在介紹樸素貝葉斯算法之前,先簡單介紹下貝葉斯定理。貝葉斯定理是計算兩個隨機事件條件概率轉(zhuǎn)化方法的定理。比如對于隨機事件A和B,貝葉斯定理的數(shù)學(xué)描述如下:
貝葉斯定理是構(gòu)造樸素貝葉斯算法的基礎(chǔ)。下面就在郵件過濾的背景下介紹這個算法:
我們?nèi)绻呀?jīng)有一批已知的垃圾郵件,就可以知道垃圾郵件的一些典型特征。接下來如果我們先驗地知道一封郵件包含的特征和垃圾郵件類似,我們就可以做出推斷,這封郵件有很大概率是垃圾郵件。
很多算法都會圍繞貝葉斯定理展開,樸素貝葉斯是其中一個代表。貝葉斯算法也是少有的對小規(guī)模數(shù)據(jù)也可以應(yīng)用的算法。掌握好貝葉斯定理這個工具,對做好數(shù)據(jù)和策略相關(guān)工作,有著重要的促進作用。
5. 類推學(xué)派(The analogizers)
類推學(xué)派的核心是最近鄰的方法,通過相似性判斷,用近鄰的已知數(shù)據(jù),預(yù)估未知的數(shù)據(jù)。一些傳統(tǒng)的推薦算法,就是類推方法的典型應(yīng)用。類推學(xué)派的一個典型算法就是隱語義模型(Latent Factor Model,LFM),這個算法的最佳實踐也是在推薦系統(tǒng)中。
推薦算法的起點,就是用戶的行為數(shù)據(jù),如果用戶和物品發(fā)生了越多的交互,則行為越強。推薦算法就是基于用戶行為數(shù)據(jù)補全下面表格的空白。這個表格其實就是一個“用戶×物品”矩陣。
我們在選擇物品或者內(nèi)容的時候,是根據(jù)自己的偏好與物品或者內(nèi)容是否匹配來決定的。
就拿服裝而言,有的人在乎顏色,有的人在乎款式,有的人在乎調(diào)性,有的人在乎價格。人在選擇的時候會考慮很多因素,每個因素都有一個心理預(yù)期的偏好范圍。下表所示就是一個“用戶×偏好”的矩陣。
不同的物品或者內(nèi)容與這些偏好的符合程度不一樣。物品和這些偏好的符合程度也會形成一個“物品×偏好”的矩陣,如下表所示:
總而言之,我們需要利用“用戶×物品”矩陣,去想辦法構(gòu)建出“用戶×偏好”矩陣和“物品×偏好”矩陣。在得到這兩個矩陣之后,就可以使用線性加權(quán)求和的方法來計算用戶和物品的推薦分數(shù)。
LFM就是這樣一種算法,通過隨機梯度下降,構(gòu)建出兩個潛在因子矩陣,并用這個矩陣計算空缺物品的推薦值。如下所示,是上面數(shù)據(jù)形成的推薦結(jié)果。
在原始數(shù)據(jù)中,用戶7和用戶8比較類似,如下表所示:
從推薦結(jié)果來看,用戶7和用戶8的推薦結(jié)果分數(shù)也比較類似,結(jié)果如下所示:
04 總結(jié)
本文介紹了基礎(chǔ)的機器學(xué)習(xí)算法思路,同時也介紹了幾種基本算法,算法介紹以思路為主,如果需要進一步學(xué)習(xí),可以查詢公開資料。
這幾種算法比較基礎(chǔ),在這些算法的基礎(chǔ)上,衍生出了多種多樣的算法。在實際應(yīng)用中,往往會將多種算法進行組合使用,從而發(fā)揮出更大的效果。
機器學(xué)習(xí)算法離不開模型假設(shè),這些假設(shè)包含著一些待確定的參數(shù)。每一個假設(shè)都是對現(xiàn)實情況的抽象,每一個參數(shù)都是對模型的理想化處理,這些假設(shè)和參數(shù)讓模型能夠成立,也讓模型和現(xiàn)實存在差異。
但這些“差異”的存在并不影響實際問題的解決,就像統(tǒng)計學(xué)大師喬治·博克斯說的那樣,“所有的模型都是錯誤的,但是其中有些模型是有用的”。我們需要理解模型和現(xiàn)實之間差異形成的原因和影響范圍,并據(jù)此判斷模型的適用范圍。
作為產(chǎn)品經(jīng)理,理解模型的算法的基本原理非常必要。只有這樣,才能將業(yè)務(wù)理解更好地融入到算法系統(tǒng)中,否則就很容易淪為算法的人工標注員和case收集者。
為了能介紹機器學(xué)習(xí)的知識,這篇文章不可避免地涉及了一些數(shù)學(xué)邏輯,也可能也會讓很多產(chǎn)品經(jīng)理感覺閱讀困難,但這只是機器學(xué)習(xí)的冰山一角。我們始終要選擇做對的事情,而非簡單的事情。
產(chǎn)品經(jīng)理需要站在科技和人文的交匯點,那么對最新的技術(shù)有基礎(chǔ)的了解,就是產(chǎn)品經(jīng)理的必由之路。
#專欄作家#
潘一鳴,公眾號:產(chǎn)品邏輯之美,人人都是產(chǎn)品經(jīng)理專欄作家。畢業(yè)于清華大學(xué),暢銷書《產(chǎn)品邏輯之美》作者;先后在多家互聯(lián)網(wǎng)公司從事產(chǎn)品經(jīng)理工作,有很多復(fù)雜系統(tǒng)的構(gòu)建實踐經(jīng)驗。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議
您好,文章很受益,有個疑問,類推算法中,用戶和物品之間的加權(quán)推薦值,是如何計算出來的?
搜索 基于用戶的協(xié)同過濾算法,與基于物品的協(xié)同過濾算法