您是否注意到推薦引擎并不是那么聰明? “爛番茄”的影評很好地傳達了評論家和其他觀眾的看法,但他們評出的高分電影也許并不一定合我的口味。反倒是有些低分的“爛片”,您反而可能會看得津津有味。人工智能可以解決這種矛盾嗎? 人工智能 (AI) 系統需要高質量的輸入來讓它們“學習”。Pandora的音樂推薦引擎根據數千億條用戶反饋,人工標注了每首曲目的流派、節奏與和弦進行, 然后借助這些標注信息,通過70多種不同的算法向用戶進行推薦。這真是了不起的黑科技……嗎? 反正在點了不知多少次“跳過”后,我還是不知道該怎么評價它。我提出了一個更簡單的AI系統(圖1),來幫助大家確定接下來想看的電影。下面,就來介紹下我使用的設計流程。 圖1:通過幾個簡單的步驟構建更好的AI推薦(圖源:貿澤電子) 從一個問題開始 首先,我要用一個問題來概括本文所要解決的問題: “更聰明、更準確的電影推薦引擎是什么樣的?” 接下來,我要概括出用戶希望得到的結果:“系統將準確預測用戶是否喜歡某一部電影。” 當然,兩者之間依然有很多空白地帶,但是用戶得到的結果必須要解決上面提出的問題。如果沒有解決,或者我可以想象到其他呈現給用戶的結果也可以解決前面的問題,那么我將會返回并簡化這個問題或用戶結果,直到它們互相匹配。 現在,我有了起點和終點,我從用戶希望得到的結果反向回推到開頭的問題,在這一過程中將兩者加以簡化,確保過程中的每一點都有助于回答開頭提出的問題。 我記下了我對當前解決方案不滿意的地方。“爛番茄”上的短評需要閱讀并加以分析, 這真是太燒腦了! 我希望系統能為我做出決定, 判斷出我會喜歡還是不喜歡這部電影; 或者,更好(更簡單)的方法是機器僅向我顯示它認為我會喜歡的電影。 為了讓機器采取機器的方法思考,我們必須使其非人化,將情緒從數據中剝離。電影評論家的意見主觀性太強,不適合讓機器采用。我們需要的只是“贊”或“踩”, 對應到“1”或“0”,因為沒有什么比二進制對象更簡單了。 在搭建系統的大體框架時,我喜歡概括。“我不信任電影評論家的意見,因為他們跟我想的不一樣。系統需要把我和其他與我想法一樣的人歸到一起。” 在這里似乎要回答的關鍵問題是“什么使一個人的意見值得信賴?” 許多系統嚴重依賴于“1”(人們喜歡的電影)而忽略“0”(人們不喜歡的電影),但是我相信這是一個錯誤。“0”可以幫助我們極大地提高機器的準確度。 例如:芝加哥的Jeremy喜歡《教父3》,而不喜歡《壯志凌云2:獨行俠》。我們對這兩部電影的感受是一樣的。接下來,Jeremy對《節奏組》評了分,這部片子我還沒看過。他贊了這部電影。借助這條信息,系統推薦我觀看《節奏組》(圖2)。如果看完電影后,我也“贊”了這部電影,Jeremy推薦的權重就會增加,他的意見也會變得更加值得信賴一些。 圖2:向系統中添加更多意見后,推薦的準確性將會提高。(圖源:貿澤電子) 就這么簡單。設計得宜的系統應該僅使用幾個數據點即可實現目標,并以此為基礎進行構建。在我們的案例中,我們的機器可以通過收集越來越多的用戶對越來越多電影的“贊”和“踩”,來繼續提高準確性。 簡化 設計好機器的運行機制后,我接下來要問:“系統還可以簡化嗎?” 我發現我并不需要知道“來自芝加哥的Jeremy”是誰。我不需要看他的個人資料照片或推薦的其他電影。我甚至不需要看到他的名字(實際上匿名系統可能更可取)。我關心的只是機器會以越來越高的精度來推薦電影,這樣就可以擺脫系統中的所有社交負擔。我可以想象一個干凈的用戶界面,它只顯示機器認為我會喜歡的一部電影的海報。 我看到過系統因為設計人員未能一直簡化下去而失敗,所以我想提醒自己,只要仍能達到預期的目標,解決方案越簡單就越精巧。 擴展 我的電影推薦引擎現在可以通過每部電影僅收集一個數據點而進一步變得“更聰明”。10,000個用戶中,每個用戶只要評價50部電影,就可以實現可接受的準確度。當然,在數據自身足夠可靠,并且機器可以準確地預測我接下來應該看哪部電影之前,一切都還是猜測。但這才是重點。我們剛剛設計了一個非常簡單的系統,當我們將模型擴展到更大的用戶群時,可以輕松地進行準確性測試。 機器之美就在于其中。當您設計簡單而有效的AI系統時……先提出問題, 加以簡化, 然后再進行擴展。 文章來源:貿澤電子 作者簡介:Stephen經常受邀為《財富》100強企業提供總體產品戰略和架構設計方面的建議,尤其是在涉及工作流管理、電子商務、人工智能和機器學習的領域,他對當前流程有著客觀的看法。他建議在戰略上進行小幅調整,以產生長期重大收益以及快速的投資回報。 作為首席技術官/首席系統架構師,Stephen深刻了解搭建成功的“軟件即服務”平臺所需的一切。一般是通過基于云的可擴展架構,將多個舊系統組合在一起,讓復雜數據集能夠以安全、統一的視圖呈現給用戶。 |