機器學習最直接的應用,就是把模型運用到實際業務上去解決問題。
本課所講到的幾個經典模型,是機器學習發展的幾十年間,由前輩總結出的解決特定問題的固定模式,已經在實踐中證明有效。
學會這些模型,一則可以以它們為載體理解「機器學習」這件事情本身是一種怎樣的機制;二則掌握了模型,也就掌握了當前許多實際問題有效的解決方案。
在實際應用中,如果我們要運用一種模型,那麼其實有很多現成的演算法庫、學習框架,只要把輸入匯入進去,用幾行**指定模型型別和引數,工具、框架就能自動計算出結果。
既然如此,何必再去學其中的原理,一步步推導讓人頭暈的數學公式?
對於這個問題,首先給出我的意見:
機器學習的原理和數學推導一定要學!
此處且舉個直觀的例子:
工具就像是**,學會使用一種工具只是學會了使用這種**的最基本的招式和套路。而理論學習則是學習策略,決定了未來在真實對戰中,遇到對手攻擊時,你選取哪些招式套路,如何組合起來去迎敵。反過來說,如果根本不學模型原理,只是把乙個個應用場景背誦下來,需要的時候直接把模型當黑盒使用——這樣做我們能學到什麼?
我們將學到:
演算法庫的安裝;
庫函式的呼叫;
資料的 i/o 轉換。
這和呼叫任何乙個封裝好的 api(無論其功能)有什麼區別?和呼叫你自己的同事撰寫的模組介面又有什麼不同?
學會這麼幾件事能讓你相對他人產生什麼的壁壘?作為乙個原本非 ai 領域的開發者,難道因為會安裝幾個支援庫,會調幾個介面就身價倍增成為機器學習工程師啦?
回過頭來,我們從正面來看學習原理的必要性。
功利層面
咱們先來看看最直接的用處。
面試會考
最起碼的一點,找工作的時候,但凡是個稍微靠譜點的企業,對於標明是「機器學習工程師」的職位,面試時一定會問模型原理和推導過程的!
而且問到的模型,隨著時間推移越來越複雜。
三四年前或更早些時候,企業技術面試,大多問線性回歸。這兩年,已經基本上從邏輯回歸起步了。再過一兩年是否問支援向量機不得而知,不過理論考察越來越難是必然的。
真想入這行,為了面試也得學呀。
老闆會問
在日常工作中,編碼的時候,可能確實只是在調 api 而已。
但很多時候,具體用哪個工具哪個框架,呼叫哪個具體的模型演算法,並不是你乙個人決定就可以,而是需要向老闆、合作方甚至客戶做出解釋的。
以前誰負責哪個模組都是自己搞定所有事,你怎麼還想讓別人給你標註資料呀?manager,tech lead,pm 都有可能圍繞機器學習/深度學習投入產出比,提出各種問題。要在工作中運用這些技術,首先就要說服他們。這個時候,原理就派上用場了。花費這麼多時間人力訓練的模型,怎麼連個 dsat 都 fix 不了啊?*
既然再多投入幾倍資源也不能達到95%以上的正確率,為什麼不乾脆直接用 rule-base 來 handle?
同事會質疑
對於你應用 ml/dl 的疑問不僅來自上司,很多時候也來自於同級別的同事。
相對於老闆對於價效比的關注,同事的注意點更可能在技術細節——質疑用這個新的框架/工具/模型/演算法,與之前實施方案在功能、效能方面的差別。
別人都用 tensorflow,你為什麼要用 caffe 呀?到了這個層面,只是簡單概括的說說原理已經不夠了,要能細緻到對比:以前這個分類器我們用邏輯回歸也挺好,你為什麼非要換成 rnn 啊?
你用這個譜聚類做資料預處理,可是歸根到底不還是詞袋模型算詞頻嘛,比直接算一下 tf-idf 做排序好多少?
【文-1】實用層面
當然,在日常工作中可以完全不理會 peer 的質疑,對於 boss 的決定也可以全盤遵守絕無二話。engineer 嘛,只是埋頭幹活也就可以了。但總得把活兒幹好吧。
作為乙個機器學習工程師,把活幹好的基本內容是:針對技術需求提供高質量的模型。
再高乙個層次的好處是:針對業務需求提供高質量的解決方案。
優化模型
在基本面上,機器學習工程師又被戲稱為調參工程師。
所要做的,就是在限定的資料上,規定時間內,為具體技術需求(比如:訓練乙個分類器)提供效能盡量高,消耗資源盡量小的模型。
調參工程師的三板斧:選特徵、調超參、換模型,要想能夠有章法的使用出來,理論基礎還是必不可少的。
至此,上面【文-1】處的描述不再是和他人論戰的「彈藥」,而成了工作步驟的指導。
如果連:
都不知道,又怎麼優化模型?針對問題實際問題定向建模
僅僅做到乙個合格的調參工程師,固然可以在 ai 領域佔據乙個職位,但對於業務和團隊而言,仍然是個可有可無的角色。
真正創造價值的,從來都是解決實際問題的人。
這些經典的模型、演算法,是前人在解決實際問題中所研究出的具備通行性的解決方案。我們應用它們去解決問題,因為它們所解決的目標問題總是持續出現。
但是,新的問題也會隨著新的需求湧現,並不是說我們只能用這些現有成果解決問題。
面對新問題,調參工程師可能束手無策。但乙個理論掌握得足夠深的機器學習工程師完全有可能針對具體業務問題構造目標函式,甚至開發出符合自身軟硬體資源特點的求解演算法。
到了這一步,即使還使用現成工具,也不是靠 google 一下 best practice,copy & paste **就能夠解決的了。必須具備理論基礎和數學層面的建模能力才行。
為什麼要學DirectX?
老子雲,道生一,一生二,二生三,三生萬物。也就是所謂的九九歸一,萬變不離其宗,所有在計算上執行的程式,最終都是一條條在cpu上執行的二進位制。計算機的硬體就是道,硬體的效能直接給出算計機的運算能力上限,作業系統就是道生出來的一,執行在系統下的各種編譯環境 sdk就是一生出來的二,在各種開發執行環境下...
學程式為什麼要學英語?
首先,你不會英語也能上手程式設計,但是你為什麼要去學英語呢?人是利益驅動的,看看學英語帶來的好處,就能理解為什麼要去學英語了。獲取高質量的學習資源 絕大多數高質量的計算機學習資源都是英文。國內的多數資源都是 二手 的。無損 及時的資訊獲取 大多數計算機經典圖書原版都是英文,我們所看的中文版都是二手加...
我們為什麼要學php
移動網際網路盛行的時代,市場會孕育新的產物,而每乙個人可以找能自己發展的方向。我們為什麼要學習php呢?一 php語言的優勢 1 跨平台特性 php幾乎支撐所有的操作體系平台,而且支撐apache iis等多種web伺服器。2 支撐普遍的資料庫 可操縱多種支流與非支流的資料庫。3 易學性 php嵌入...