0
本文作者: 汪思穎 | 2018-05-23 18:30 |
雷鋒網(wǎng) AI 研習(xí)社按,本文來源于谷歌開發(fā)者博客,雷鋒網(wǎng)獲其授權(quán)轉(zhuǎn)載。以下為下篇,內(nèi)容為進行機器學(xué)習(xí)之前的第 21-43 條規(guī)則。相關(guān)術(shù)語及第1-20條規(guī)則參見谷歌發(fā)布機器學(xué)習(xí)規(guī)則 (Rules of Machine Learning): 關(guān)于機器學(xué)習(xí)工程的最佳實踐(上)
第 21 條規(guī)則:您可以在線性模型中學(xué)習(xí)的特征權(quán)重數(shù)目與您擁有的數(shù)據(jù)量大致成正比。
關(guān)于模型的合適復(fù)雜度方面,有各種出色的統(tǒng)計學(xué)習(xí)理論成果,但您基本上只需要了解這條規(guī)則。在某次談話中,曾有人表達過這樣的疑慮:從一千個樣本中是否能夠?qū)W到任何東西,或者是否需要超過一百萬個樣本,他們之所以有這樣的疑慮,是因為局限在了一種特定學(xué)習(xí)方式中。關(guān)鍵在于根據(jù)數(shù)據(jù)規(guī)模調(diào)整您的學(xué)習(xí)模型:
如果您正在構(gòu)建搜索排名系統(tǒng),文檔和查詢中有數(shù)百萬個不同的字詞,且您有 1000 個有標(biāo)簽樣本,那么您應(yīng)該在文檔和查詢特征、TF-IDF 和多個其他高度手動工程化的特征之間得出點積。您會有 1000 個樣本,十多個特征。
如果您有一百萬個樣本,則使用正則化和特征選擇(可能)使文檔特征列和查詢特征列相交。這樣一來,您將獲得數(shù)百萬個特征;但如果使用正則化,則您獲得的特征會有所減少。您會有千萬個樣本,可能會產(chǎn)生十萬個特征。
如果您有數(shù)十億或數(shù)千億個樣本,您可以使用特征選擇和正則化,通過文檔和查詢標(biāo)記組合特征列。您會有十億個樣本,一千萬個特征。統(tǒng)計學(xué)習(xí)理論很少設(shè)定嚴(yán)格的限制,但能夠提供很好的起點引導(dǎo)。
最后,請根據(jù)第 28 條規(guī)則決定要使用哪些特征。
第 22 條規(guī)則:清理不再使用的特征。
未使用的特征會產(chǎn)生技術(shù)負(fù)債。如果您發(fā)現(xiàn)自己沒有使用某個特征,而且將其與其他特征組合在一起不起作用,則將其從您的基礎(chǔ)架構(gòu)中刪除。您需要讓自己的基礎(chǔ)架構(gòu)保持簡潔,以便盡可能快地嘗試最有可能帶來良好效果的特征。如有必要,他人可以隨時將您的特征添加回來。
在決定要添加或保留哪些特征時,要考慮到覆蓋率。即相應(yīng)特征覆蓋了多少個樣本?例如,如果您有一些個性化特征,但只有 8% 的用戶有個性化特征,那效果就不會很好。
同時,有些特征可能會超出其權(quán)重。例如,如果您的某個特征只覆蓋 1% 的數(shù)據(jù),但 90% 具有該特征的樣本都是正分類樣本,那么這是一個可以添加的好特征。
對系統(tǒng)的人工分析
在繼續(xù)探討機器學(xué)習(xí)的第三階段之前,請務(wù)必重點了解一下在任何機器學(xué)習(xí)課程中都無法學(xué)到的內(nèi)容:如何檢查現(xiàn)有模型并加以改善。這更像是一門藝術(shù)而非科學(xué),但是有幾個有必要避免的反模式。
第 23 條規(guī)則:您不是典型的最終用戶。
這也許是讓團隊陷入困境的最簡單的方法。雖然 fishfood(在團隊內(nèi)部使用原型)和 dogfood(在公司內(nèi)部使用原型)有許多優(yōu)點,但員工應(yīng)該看看是否符合性能要求。雖然應(yīng)避免應(yīng)用明顯比較糟糕的更改,但在臨近生產(chǎn)時,應(yīng)對任何看起來比較合理的更改進行進一步測試,具體方法有兩種:請非專業(yè)人員在眾包平臺上回答有償問題,或?qū)φ鎸嵱脩暨M行在線實驗。
這樣做的原因有如下兩點。首先,您與代碼的關(guān)系太密切了。您關(guān)注的可能是帖子的某個特定方面,或者您只是投入了太多感情(例如確認(rèn)偏差)。其次,您的時間很寶貴??紤]一下九名工程師開一個小時會議所花的費用可以在眾包平臺上購買多少簽約的人工標(biāo)簽。
如果您確實想獲得用戶反饋,請使用用戶體驗方法。在流程的早期階段創(chuàng)建用戶角色(請參閱比爾·布克斯頓的 Sketching User Experiences 一書中的描述),然后進行可用性測試(請參閱史蒂夫·克魯格的 Don’t Make Me Think 一書中的描述)。用戶角色是指創(chuàng)建假想用戶。例如,如果您的團隊成員都是男性,則有必要設(shè)計一個 35 歲的女性用戶角色(使用用戶特征完成),并查看其生成的結(jié)果,而不是只查看 10 位 25-40 歲男性的結(jié)果。在可用性測試中請真實用戶體驗?zāi)木W(wǎng)站(通過本地或遠(yuǎn)程方式)并觀察他們的反應(yīng)也可以讓您以全新的視角看待問題。
第 24 條規(guī)則:衡量模型間的差異。
在向任何用戶展示您的新模型之前,您可以進行的最簡單(有時也是最有用)的一項衡量是,評估新模型的結(jié)果與生產(chǎn)有多大差別。例如,如果您有一項排名任務(wù),則在整個系統(tǒng)中針對一批示例查詢運行這兩個模型,并查看結(jié)果的對稱差分有多大(按排名位置加權(quán))。如果差分非常小,那么您無需運行實驗,就可以判斷不會出現(xiàn)很大變化。如果差分很大,那么您需要確保這種更改可以帶來好的結(jié)果。查看對稱差分較大的查詢有助于您了解更改的性質(zhì)。不過,請確保您的系統(tǒng)是穩(wěn)定的。確保模型與自身之間的對稱差分較低(理想情況下為零)。
第 25 條規(guī)則:選擇模型時,實用效果比預(yù)測能力更重要。
您的模型可能會嘗試預(yù)測點擊率。但歸根到底,關(guān)鍵問題在于您用這種預(yù)測做什么。如果您使用該預(yù)測對文檔進行排名,那么最終排名的質(zhì)量比預(yù)測本身更重要。如果您要預(yù)測一個文檔是垃圾內(nèi)容的概率,然后選擇一個取舍點來確定要阻斷的內(nèi)容,那么允許的內(nèi)容的精確率更為重要。大多數(shù)情況下,這兩項應(yīng)該是一致的:當(dāng)它們不一致時,帶來的優(yōu)勢可能會非常小。因此,如果某種更改可以改善對數(shù)損失,但會降低系統(tǒng)的性能,則查找其他特征。當(dāng)這種情況開始頻繁發(fā)生時,說明您該重新審視模型的目標(biāo)了。
第 26 條規(guī)則:在衡量的錯誤中尋找規(guī)律,并創(chuàng)建新特征。
假設(shè)您看到模型“弄錯”了一個訓(xùn)練樣本。在分類任務(wù)中,這種錯誤可能是假正例,也可能是假負(fù)例。在排名任務(wù)中,這種錯誤可能是假正例和假負(fù)例,其中正例的排名比負(fù)例的排名低。最重要的是,機器學(xué)習(xí)系統(tǒng)知道自己弄錯了該樣本,如果有機會,它會修復(fù)該錯誤。如果您向該模型提供一個允許其修正錯誤的特征,該模型會嘗試使用它。
另一方面,如果您嘗試根據(jù)系統(tǒng)不會視為錯誤的樣本創(chuàng)建一個特征,該特征將會被系統(tǒng)忽略。例如,假設(shè)某人在 Play 應(yīng)用搜索中搜索“免費游戲”。假設(shè)排名靠前的搜索結(jié)果中有一個是相關(guān)性較低的搞笑應(yīng)用。因此,您為“搞笑應(yīng)用”創(chuàng)建了一個特征。但是,如果您要最大限度地增加安裝次數(shù),并且用戶在搜索免費游戲時安裝了搞笑應(yīng)用,那么“搞笑應(yīng)用”特征不會達到您想要的效果。
如果模型弄錯了您的某些樣本,請在當(dāng)前特征集之外尋找規(guī)律。例如,如果系統(tǒng)似乎在降低內(nèi)容較長的帖子的排名,那么添加帖子長度。不要添加過于具體的特征。如果您要添加帖子長度,請不要試圖猜測長度的具體含義,只需添加十多個特征,然后讓模型自行處理(請參閱第 21 條規(guī)則)。這是實現(xiàn)目標(biāo)最簡單的方式。
第 27 條規(guī)則:嘗試量化觀察到的異常行為。
當(dāng)現(xiàn)有的損失函數(shù)沒有捕獲您團隊中的部分成員不喜歡的某些系統(tǒng)屬性時,他們會開始有挫敗感。此時,他們應(yīng)該竭盡所能將抱怨轉(zhuǎn)換成具體的數(shù)字。例如,如果他們認(rèn)為 Play 搜索中顯示的“搞笑應(yīng)用”過多,則可以通過人工評分識別搞笑應(yīng)用。(在這種情況下,您可以使用人工標(biāo)記的數(shù)據(jù),因為相對較少的一部分查詢占了很大一部分流量。)如果您的問題是可衡量的,那么您可以開始將它們用作特征、目標(biāo)或指標(biāo)。一般規(guī)則是“先量化,再優(yōu)化”。
第 28 條規(guī)則:請注意,短期行為相同并不意味著長期行為也相同。
假設(shè)您的新系統(tǒng)會查看每個 doc_id 和 exact_query,然后計算每個查詢的每個文檔的點擊概率。您發(fā)現(xiàn)在并排分析和 A/B 測試中,其行為與您當(dāng)前系統(tǒng)的行為幾乎完全相同,考慮到它的簡單性,您發(fā)布了它。不過,您發(fā)現(xiàn)它沒有顯示任何新應(yīng)用。為什么?那是因為您的系統(tǒng)僅根據(jù)自己的查詢歷史記錄顯示文檔,所以不知道應(yīng)該顯示新文檔。
了解這種系統(tǒng)長期行為的唯一方法是,僅使用模型在線時獲得的數(shù)據(jù)對其進行訓(xùn)練。這一點非常難。
訓(xùn)練-應(yīng)用偏差
訓(xùn)練-應(yīng)用偏差是指訓(xùn)練效果與應(yīng)用效果之間的差異。出現(xiàn)這種偏差的原因可能是:
訓(xùn)練管道和應(yīng)用管道中數(shù)據(jù)的處理方式有差異。
訓(xùn)練時和應(yīng)用時所用數(shù)據(jù)有變化。
模型和算法之間有反饋環(huán)。
我們注意到 Google 的生產(chǎn)機器學(xué)習(xí)系統(tǒng)也存在訓(xùn)練-應(yīng)用偏差,這種偏差對性能產(chǎn)生了負(fù)面影響。最好的解決方案是明確進行監(jiān)控,以避免在系統(tǒng)和數(shù)據(jù)改變時引入容易被忽視的偏差。
第 29 條規(guī)則:確保訓(xùn)練效果和應(yīng)用效果一樣的最佳方法是,保存在應(yīng)用時使用的特征集,然后將這些特征通過管道傳輸?shù)饺罩?,以便在?xùn)練時使用。
即使您不能對每個樣本都這樣做,也對一小部分樣本這樣做,以便驗證應(yīng)用和訓(xùn)練之間的一致性(請參閱第 37 條規(guī)則)。采取了這項措施的 Google 團隊有時會對結(jié)果感到驚訝。 YouTube 首頁改用這種在應(yīng)用時記錄特征的做法后,不僅大大提高了質(zhì)量,而且減少了代碼復(fù)雜度。目前有許多團隊都已經(jīng)在其基礎(chǔ)設(shè)施上采用了這種方法。
第 30 條規(guī)則:按重要性對采樣數(shù)據(jù)加權(quán),不要隨意丟棄它們!
數(shù)據(jù)過多時,總會忍不住采用前面的文件而忽略后面的文件。這是錯誤的做法。盡管可以丟棄從未向用戶展示過的數(shù)據(jù),但對于其他數(shù)據(jù)來說,按重要性加權(quán)是最佳選擇。按重要性加權(quán)意味著,如果您決定以 30% 的概率對樣本 X 進行抽樣,那么向其賦予 10/3 的權(quán)重。按重要性加權(quán)時,您仍然可以使用第 14 條規(guī)則中討論的所有校準(zhǔn)屬性。
第 31 條規(guī)則:如果您在訓(xùn)練和應(yīng)用期間關(guān)聯(lián)表格中的數(shù)據(jù),請注意,表格中的數(shù)據(jù)可能會變化。
假設(shè)您將文檔 ID 與包含這些文檔的特征(例如評論次數(shù)或點擊次數(shù))的表格相關(guān)聯(lián)。表格中的特征在訓(xùn)練時和應(yīng)用時可能有所不同。那么,您的模型在訓(xùn)練時和應(yīng)用時對同一文檔的預(yù)測就可能會不同。要避免這類問題,最簡單的方法是在應(yīng)用時記錄特征(請參閱第 32 條規(guī)則)。如果表格只是緩慢發(fā)生變化,那么您還可以每小時或每天創(chuàng)建表格快照,以獲得非常接近的數(shù)據(jù)。請注意,這仍不能完全解決問題。
第 32 條規(guī)則:盡可能在訓(xùn)練管道和應(yīng)用管道間重復(fù)使用代碼。
批處理不同于在線處理。進行在線處理時,您必須在每個請求到達時對其進行處理(例如,您必須為每個查詢單獨進行查找),而進行批處理時,您可以組合任務(wù)(例如進行關(guān)聯(lián))。應(yīng)用時,您進行的是在線處理,而訓(xùn)練時,您進行的是批處理。不過,您可以通過一些方法來重復(fù)使用代碼。例如,您可以專門為自己的系統(tǒng)創(chuàng)建一個對象,其中所有查詢結(jié)果和關(guān)聯(lián)都能以非常易于人類讀取的方式進行存儲,且錯誤也可以輕松進行測試。然后,收集了所有信息后,您可以在應(yīng)用和訓(xùn)練期間使用一種共同的方法,在人類可讀對象(特定于您的系統(tǒng))和機器學(xué)習(xí)需要的任何格式之間架起一座橋梁。這樣可以消除訓(xùn)練-應(yīng)用偏差的一個根源。由此推知,在訓(xùn)練和應(yīng)用時,盡量不要使用兩種不同的編程語言。如果這樣做,就幾乎不可能共享代碼了。
第 33 條規(guī)則:如果您根據(jù) 1 月 5 日之前的數(shù)據(jù)生成模型,則根據(jù) 1 月 6 日及之后的數(shù)據(jù)測試模型。
一般來說,要衡量模型的效果,應(yīng)使用在訓(xùn)練模型所有數(shù)據(jù)對應(yīng)的日期之后的日期收集的數(shù)據(jù),因為這樣能更好地反映系統(tǒng)應(yīng)用到生產(chǎn)時的行為。如果您根據(jù) 1 月 5 日之前的數(shù)據(jù)生成模型,則根據(jù) 1 月 6 日及之后的數(shù)據(jù)測試模型。您一般會發(fā)現(xiàn),使用新數(shù)據(jù)時模型的效果不如原來好,但應(yīng)該不會太糟。由于可能存在的一些日常影響,您可能沒有預(yù)測到平均點擊率或轉(zhuǎn)化率,但曲線下面積(表示正分類樣本的分?jǐn)?shù)高于負(fù)分類樣本的概率)應(yīng)該非常接近。
第 34 條規(guī)則:在有關(guān)過濾的二元分類(例如,垃圾郵件檢測或確定有趣的電子郵件)中,在短期內(nèi)小小犧牲一下效果,以獲得非常純凈的數(shù)據(jù)。
在過濾任務(wù)中,標(biāo)記為負(fù)分類的樣本不會向用戶顯示。假設(shè)您的過濾器在應(yīng)用時可屏蔽 75% 的負(fù)分類樣本。您可能會希望從向用戶顯示的實例中提取額外的訓(xùn)練數(shù)據(jù)。例如,如果用戶將您的過濾器未屏蔽的電子郵件標(biāo)記為垃圾郵件,那么您可能想要從中學(xué)習(xí)規(guī)律。
但這種方法會引入采樣偏差。如果您改為在應(yīng)用期間將所有流量的 1% 標(biāo)記為“預(yù)留”,并向用戶發(fā)送所有預(yù)留樣本,則您可以收集更純凈的數(shù)據(jù)?,F(xiàn)在,過濾器屏蔽了至少 74% 的負(fù)分類樣本。這些預(yù)留樣本可以成為訓(xùn)練數(shù)據(jù)。
請注意,如果過濾器屏蔽了 95% 或以上的負(fù)分類樣本,則此方法的可行性會降低。即便如此,如果您希望衡量應(yīng)用效果,可以進行更低比例的采樣(比如 0.1% 或 0.001%)。一萬個樣本足以非常準(zhǔn)確地評估效果。
第 35 條規(guī)則:注意排名問題中存在的固有偏差。
當(dāng)您徹底改變排名算法,導(dǎo)致出現(xiàn)不同的排名結(jié)果時,實際上改變了您的算法以后會處理的數(shù)據(jù)。這時,就會出現(xiàn)固有偏差,您應(yīng)該圍繞這種偏差來設(shè)計模型。具體方法有多種。以下是讓您的模型青睞已見過的數(shù)據(jù)的方法。
對覆蓋更多查詢的特征(而不是僅覆蓋一個查詢的特征)進行更高的正則化。通過這種方式,模型將青睞專門針對一個或幾個查詢的特征,而不是泛化到所有查詢的特征。這種方法有助于防止十分熱門的查詢結(jié)果顯示到不相關(guān)的查詢中。請注意,這與以下更為傳統(tǒng)的建議相左:對具有更多唯一值的特征列進行更高的正則化。
僅允許特征具有正權(quán)重。這樣一來,就可確保任何好特征都比“未知”特征合適。
不選擇只處理文檔數(shù)據(jù)的特征。這是第一條規(guī)則的極端版本。例如,即使指定應(yīng)用是熱門下載應(yīng)用(無論查詢是什么),您也不想在所有地方都展示它。如果不選擇只處理文檔數(shù)據(jù)的特征,這一點很容易做到。您之所以不想在所有地方展示某個特定的熱門應(yīng)用,是因為讓用戶可以找到所有所需應(yīng)用至關(guān)重要。例如,如果一位用戶搜索“賞鳥應(yīng)用”,他/她可能會下載“憤怒的小鳥”,但那絕對不是他/她想要的應(yīng)用。展示此類應(yīng)用可能會提高下載率,但最終卻未能滿足用戶的需求。
第 36 條規(guī)則:通過位置特征避免出現(xiàn)反饋環(huán)。
內(nèi)容的位置會極大地影響用戶與其互動的可能性。如果您將應(yīng)用放在首位,則應(yīng)用獲得的點擊率更高,導(dǎo)致您認(rèn)為用戶更有可能點擊該應(yīng)用。處理此類問題的一種方法是添加位置特征,即關(guān)于內(nèi)容在網(wǎng)頁中的位置的特征。您可以使用位置特征訓(xùn)練模型,使模型學(xué)習(xí)(例如)對特征“1st-position”賦予較高的權(quán)重。因此,對于具有“1st-position=true”特征的樣本的其他因素,模型會賦予較低的權(quán)重。然后,在應(yīng)用時,您不向任何實例提供位置特征,或為所有實例提供相同的默認(rèn)特征,因為在決定以怎樣的順序顯示候選實例之前,您就對其進行了打分。
請注意,因為訓(xùn)練和測試之間的這種不對稱性,請務(wù)必在位置特征與模型的其余特征之間保持一定的分離性。讓模型成為位置特征函數(shù)和其余特征函數(shù)之和是理想的狀態(tài)。例如,不要將位置特征與任何文檔特征組合在一起。
第 37 條規(guī)則:測量訓(xùn)練/應(yīng)用偏差。
一般來說,很多情況都會引起偏差。此外,您可以將其分為以下幾個部分:
訓(xùn)練數(shù)據(jù)和預(yù)留數(shù)據(jù)的效果之間的差異。一般來說,這種情況始終存在,而且并非總是壞事。
預(yù)留數(shù)據(jù)和“次日”數(shù)據(jù)的效果之間的差異。同樣,這種情況始終存在。您應(yīng)該調(diào)整正則化,以最大程度地提升次日數(shù)據(jù)的效果。不過,如果與預(yù)留數(shù)據(jù)相比,次日數(shù)據(jù)效果下降明顯,則可能表明某些特征具有時效性,而且可能會降低模型的效果。
“次日”數(shù)據(jù)和實時數(shù)據(jù)的效果之間的差異。如果您將模型應(yīng)用于訓(xùn)練數(shù)據(jù)中的某個樣本,并在應(yīng)用時使用同一樣本,那么您得到的結(jié)果應(yīng)該完全相同(請參閱第 5 條規(guī)則)。因此,此處的差異很可能表示出現(xiàn)了工程錯誤。
機器學(xué)習(xí)第三階段:緩慢增長、優(yōu)化細(xì)化和復(fù)雜模型
第二階段即將結(jié)束時會出現(xiàn)一些信號。首先,月增長開始減弱。您將開始在指標(biāo)之間做出取舍:在部分試驗中,您會看到一些指標(biāo)上升了,而另一些指標(biāo)下降了。情況變得有趣起來。由于越來越難實現(xiàn)增長,因此機器學(xué)習(xí)系統(tǒng)必須變得更加復(fù)雜。注意:相比之前兩個部分,本部分中會有較多的純理論性規(guī)則。我們見過許多團隊在機器學(xué)習(xí)的第一階段和第二階段非常滿意。但到了第三階段后,他們必須找到自己的道路。
第 38 條規(guī)則:如果目標(biāo)不協(xié)調(diào),并成為問題,就不要在新特征上浪費時間。
當(dāng)您的衡量結(jié)果穩(wěn)定時,您的團隊會開始關(guān)注當(dāng)前機器學(xué)習(xí)系統(tǒng)的目標(biāo)范圍之外的問題。如前所述,如果現(xiàn)有算法目標(biāo)未涵蓋產(chǎn)品目標(biāo),則您需要修改算法目標(biāo)或產(chǎn)品目標(biāo)。例如,您可以優(yōu)化點擊次數(shù)、+1 次數(shù)或下載次數(shù),但讓發(fā)布決策部分依賴于人工評分者。
第 39 條規(guī)則:發(fā)布決策代表的是長期產(chǎn)品目標(biāo)。
Alice 有一個關(guān)于減少預(yù)測安裝次數(shù)的邏輯損失的想法。她添加了一個特征。邏輯損失降低了。當(dāng)她運行在線實驗時,看到安裝率增加了。但是,在發(fā)布評審會上,有人指出,每日活躍用戶數(shù)減少了 5%。于是,團隊決定不發(fā)布該模型。Alice 很失望,但現(xiàn)在她意識到發(fā)布決策取決于多個條件,只有一部分條件可以通過機器學(xué)習(xí)直接得到優(yōu)化。
事實上,現(xiàn)實世界并不是網(wǎng)游世界:沒有“生命值”來確定產(chǎn)品的運行狀況。團隊必須使用自己收集的統(tǒng)計信息來嘗試有效地預(yù)測系統(tǒng)未來的表現(xiàn)會如何。他們需要關(guān)注互動度、日活躍用戶數(shù) (DAU)、30 日 DAU、收入以及廣告主的投資回報率。這些可在 A/B 測試中衡量的指標(biāo)本身僅代表了以下更長期目標(biāo):讓用戶滿意、增加用戶數(shù)量、讓合作伙伴滿意以及實現(xiàn)盈利,進一步,您還可以認(rèn)為它們代表了發(fā)布優(yōu)質(zhì)且實用的產(chǎn)品,以及五年后公司繁榮發(fā)展。
唯一可以輕松做出發(fā)布決策的情況是,所有指標(biāo)都在變好(或至少沒有變差)。 如果團隊能夠在復(fù)雜的機器學(xué)習(xí)算法和簡單的啟發(fā)式算法之間做出選擇,而對所有這些指標(biāo)來說,簡單的啟發(fā)式算法可以提供更好的效果,那么應(yīng)該選擇啟發(fā)式算法。此外,并未對所有可能的指標(biāo)值進行明確排名。具體而言,請考慮以下兩種情形:
如果當(dāng)前系統(tǒng)是 A,那么團隊不太可能會改用 B。如果當(dāng)前系統(tǒng)是 B,那么團隊不太可能會改用 A。這似乎與理性行為背道而馳;但是,對更改指標(biāo)的預(yù)測可能會成功也可能不會,因此這兩種改變都蘊含著巨大的風(fēng)險。每個指標(biāo)都涵蓋了團隊所擔(dān)心的一些風(fēng)險。
此外,沒有一個指標(biāo)涵蓋團隊最關(guān)心的問題,即“五年后我的產(chǎn)品將何去何從”?
另一方面,個人更傾向于選擇可以直接優(yōu)化的目標(biāo)。 大多數(shù)機器學(xué)習(xí)工具也都青睞這樣的環(huán)境。在這樣的環(huán)境下,快速創(chuàng)建新特征的工程師能穩(wěn)定地進行一系列發(fā)布。一種稱為“多目標(biāo)學(xué)習(xí)”的機器學(xué)習(xí)已開始解決此問題。例如,您可以提出約束滿足問題,對每個指標(biāo)設(shè)定下限,并優(yōu)化指標(biāo)的一些線性組合。不過,即使如此,也并不是所有指標(biāo)都可以輕松框定為機器學(xué)習(xí)目標(biāo):如果用戶點擊了文檔或安裝了應(yīng)用,那是因為相應(yīng)內(nèi)容展示出來了。但要弄清楚用戶為什么訪問您的網(wǎng)站就難得多。如何預(yù)測整個網(wǎng)站未來的成功狀況屬于 AI 完備問題:與計算機視覺或自然語言處理一樣難。
第 40 條規(guī)則:保證集成學(xué)習(xí)簡單化。
采用原始特征并直接對內(nèi)容進行排名的統(tǒng)一模型是最易于進行調(diào)試和理解的模型。但是,集成學(xué)習(xí)模型(將其他模型的分?jǐn)?shù)結(jié)合到一起的模型)可以實現(xiàn)更好的效果。為了簡單起見,每個模型應(yīng)該要么是僅接受其他模型的輸入的集成學(xué)習(xí)模型,要么是接受多個特征的基本模型,但不能兩者皆是。 如果在單獨訓(xùn)練的模型之上還有其他模型,則組合它們會導(dǎo)致不良行為。
使用簡單的模型進行集成學(xué)習(xí)(僅將“基本”模型的輸出作為輸入)。此外,您還需要將屬性強加到這些集成學(xué)習(xí)模型上。例如,基本模型生成的分?jǐn)?shù)的升高不應(yīng)使集成學(xué)習(xí)模型的分?jǐn)?shù)有所降低。另外,如果傳入的模型在語義上可解釋(例如,經(jīng)過校準(zhǔn)),則最理想,因為這樣一來,即使基本模型發(fā)生改變,也不會擾亂集成學(xué)習(xí)模型。另外,強制要求:如果基本分類器的預(yù)測概率增大,不會使集成學(xué)習(xí)模型的預(yù)測概率降低。
第 41 條規(guī)則:效果達到平穩(wěn)后,尋找與現(xiàn)有信號有質(zhì)的差別的新信息源并添加進來,而不是優(yōu)化現(xiàn)有信號。
您添加了一些有關(guān)用戶的受眾特征信息,也添加了一些有關(guān)文檔中字詞的信息。您探索了模板,并調(diào)整了正則化。但在幾個季度的發(fā)布中,關(guān)鍵指標(biāo)的提升幅度從來沒有超過 1%?,F(xiàn)在該怎么辦?
是時候開始為截然不同的特征(例如,用戶在過去一天內(nèi)、一周內(nèi)或一年內(nèi)訪問的文檔的歷史記錄,或者其他屬性的數(shù)據(jù))構(gòu)建基礎(chǔ)架構(gòu)了。您可以使用維基數(shù)據(jù)條目或公司內(nèi)部信息(例如,Google 的知識圖譜)。利用深度學(xué)習(xí)。開始調(diào)整您對投資回報的預(yù)期,并付出相應(yīng)的努力。與在任何工程項目中一樣,您必須對添加新特征的好處與增加復(fù)雜性的成本進行一番權(quán)衡。
第 42 條規(guī)則:不要期望多樣性、個性化或相關(guān)性與熱門程度之間的聯(lián)系有您認(rèn)為的那樣密切。
一組內(nèi)容中的多樣性可以有多種含義,其中內(nèi)容來源的多樣性是最常見的一種。個性化意味著每個用戶獲得貼合其個人需求的結(jié)果。相關(guān)性意味著某個特定查詢的結(jié)果更適合該查詢,而非其他任何查詢。因此,這三個屬性均具有不同于常態(tài)的定義。
但常態(tài)往往很難被打敗。
請注意,如果您的系統(tǒng)在測量點擊次數(shù)、訪問時間、觀看次數(shù)、+1 次數(shù)、轉(zhuǎn)發(fā)次數(shù)等數(shù)據(jù),那么您測量的是內(nèi)容的熱門程度。團隊有時會嘗試學(xué)習(xí)具備多樣性的個性化模型。為實現(xiàn)個性化,他們會添加支持系統(tǒng)進行個性化(代表用戶興趣的部分特征)或多樣化(表明相應(yīng)文檔是否與其他返回的文檔有任何相同特征的特征,例如作者或內(nèi)容)的特征,然后發(fā)現(xiàn)這些特征的權(quán)重比預(yù)期低(或者有時是不同的信號)。
這并不意味著多樣性、個性化或相關(guān)性不重要。正如上一條規(guī)則中所指出的那樣,您可以進行后期處理來增加多樣性或相關(guān)性。如果您看到更長期的目標(biāo)有所增長,您可以聲明除了熱門程度外,多樣性/相關(guān)性也很有價值。然后,您可以繼續(xù)采用后期處理方法,也可以根據(jù)多樣性或相關(guān)性直接修改目標(biāo)。
第 43 條規(guī)則:在不同的產(chǎn)品中,您的好友基本保持不變,但您的興趣并非如此。
Google 的團隊通過以下做法取得了大量進展:采用一個預(yù)測產(chǎn)品中某種聯(lián)系的緊密程度的模型,并使用該模型對其他產(chǎn)品進行準(zhǔn)確預(yù)測。您的好友保持不變。另一方面,我曾見過幾個團隊在應(yīng)對多個產(chǎn)品間的個性化特征時捉襟見肘。是的,當(dāng)時看起來應(yīng)該可以奏效的。但現(xiàn)在看來并沒有。有時可以奏效的方法是,使用一個屬性的原始數(shù)據(jù)來預(yù)測另一個屬性的行為。此外,請注意,僅僅是知道用戶有其他屬性的歷史記錄也會有幫助。例如,兩個產(chǎn)品上出現(xiàn)了用戶活動或許本身就可以說明該問題。
相關(guān)資源
Google 內(nèi)部和外部有許多關(guān)于機器學(xué)習(xí)的文檔。
機器學(xué)習(xí)速成課程:應(yīng)用機器學(xué)習(xí)簡介。
機器學(xué)習(xí):概率法,凱文·墨菲著,幫助了解機器學(xué)習(xí)領(lǐng)域。
分析大型復(fù)雜數(shù)據(jù)集的實用建議:一種考慮數(shù)據(jù)集的數(shù)據(jù)科學(xué)方法。
深度學(xué)習(xí),伊恩·古德費洛等著,幫助學(xué)習(xí)非線性模型。
關(guān)于技術(shù)負(fù)債的 Google 論文,其中提供了許多一般性建議。
致謝
感謝 David Westbrook、Peter Brandt、Samuel Ieong、Chenyu Zhao、Li Wei、Michalis Potamias、Evan Rosen、Barry Rosenberg、Christine Robson、James Pine、Tal Shaked、Tushar Chandra、Mustafa Ispir、Jeremiah Harmsen、Konstantinos Katsiapis、Glen Anderson、Dan Duckworth、Shishir Birmiwal、Gal Elidan、Su Lin Wu、Jaihui Liu、Fernando Pereira 和 Hrishikesh Aradhye 對本文檔進行多處更正、提供建議和有用示例。此外,還要感謝 Kristen Lefevre、Suddha Basu 和 Chris Berg 對早期版本提供的幫助。任何錯誤、遺漏或(喘氣聲?。┎皇軞g迎的看法均由本人承擔(dān)責(zé)任。
附錄
本文檔中多處提到了一些 Google 產(chǎn)品。為了提供更多背景信息,我將在下面對幾個最常見的示例進行簡單說明。
YouTube 概覽
YouTube 是流式視頻服務(wù)。YouTube 的“接下來觀看”和 YouTube 首頁團隊均使用機器學(xué)習(xí)模型對推薦視頻進行排名。“接下來觀看”會推薦在當(dāng)前視頻播放完后觀看的視頻,而首頁向瀏覽首頁的用戶推薦視頻。
Google Play 概覽
Google Play 有許多解決各種問題的模型。Play 搜索、Play 首頁個性化推薦和“用戶還安裝了以下應(yīng)用”都采用了機器學(xué)習(xí)技術(shù)。
Google+ 概覽
Google+ 在各種情況下采用了機器學(xué)習(xí)技術(shù),例如對用戶可以看見的帖子“信息流”中的帖子進行排名時、對“熱門信息”中的帖子(目前非常熱門的帖子)進行排名時、對您認(rèn)識的人進行排名時,等等。
原文地址:https://developers.google.cn/machine-learning/rules-of-ml/#human_analysis_of_the_system
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。