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