形而上的機器學習

jopen 10年前發布 | 34K 次閱讀 機器學習

形而上的機器學習

Part 1: 機器學習的前世今生.

既然說機器學習,就從什么機器學習開始,相對而言,機器學習是一個比較泛的概念

初看的話,會覺得機器學習和人工智能,數據挖掘講的東西很像,實際他們之間的關系可以概括為:

  • 機器學習是人工智能的一個子方向
  • 機器學習是數據挖掘的一種實現方式
  • </ul>

    形而上的機器學習


    舉個簡單的例子,給一些蘋果和香蕉,人會通過特征的判斷做區分,并且記憶這些特征,下次來了一個新的蘋果或者香蕉的時候,就可以判斷是香蕉還是蘋果了

    作為任意一個算法或者說用程序執行的數學問題,總需要一些輸入,一些輸出

    對于機器學習而言,輸入就是特征所構成向量的向量,或者說是一個矩陣

    如果只有一個特征,輸入就是一個向量了,當然,向量是一個弱化的矩陣概念,統一稱作矩陣

    ? 目前機器學習的核心技術是基于矩陣的優化技術

    • 輸入:矩陣 – 待學習的信息
    • 輸出:模型 – 總結出的規則
    • </ul>

      因此,目前主流的機器學習技術就可以形式化為

      ? 輸入:特征矩陣 X、標注向量 y

      • X 是特征矩陣,不包括“樣本名稱”和“樣本 標注”
      • y 是標注向量,即“樣本標注”那列
      • </ul>

        ? 輸出:模型向量 w

        ? 期望:X·w 盡可能接近 y

        多種優化算法可以解 w,區別在于如何定義 “盡可能接近”

        舉個例子來說,要計算廣告的CTR

        形而上的機器學習

        這個例子中

        目標是要根據已知的auc特征,猜測這個目標廣告是否會被點擊

        例子中特征只有兩個,query關鍵詞和“是否飄紅”,判斷結果是是否點擊

        好了,現在問題和輸入輸出都有了,具體解決這個問題,就可以選用相關的算法了

        前面定義里面有這么一個隱含的關鍵點:X w 盡可能接近 y

        如何定義這個“接近”,思路不同,算法就不同

        比如對于LR (Logistic Regression)和SVM(Support Vector Machine)是不同的,作為樣例,可以按照下圖理解

        形而上的機器學習 形而上的機器學習

        數學形式表示,就是

        形而上的機器學習

        具體算法細節不是這里討論的重點,在這兩個算法中,“接近”的定義不同

        學術的講,就是“優化目標不同”

        無論是否相同,我們都至少可以選一個優化目標了

        有了優化目標,下面要做的就是如何求解這個優化目標了

        一般現在用的思路主要是

        L-BFGS,CDN,SGD這一些

        把上面這一些要素放在一起,就有了完整的一個機器學習問題

        形而上的機器學習

        Part 2: 如果你要用機器學習的方法去解決問題

        就需要注意三個方面的優化了:

        算法,數據,特征

        我們下面分開來說

        算法,就是優化目標 + 優化算法

        從優化目標的角度,工業界往往沒有那個資源或者實力去研究新的算法,大多是在使用已有算法或者在已有算法的基礎上做擴展

        從優化算法的角度,主要是三點:

        • 更小的計算代價
        • 更快的收斂
        • 更好的并行
        • </ul>

          這三點也比較好理解,對于一個工程問題,計算代價小,機器就可以做別的事情,更快的收斂,就可以更好的把結果投入使用,更好的并行,就可以用現有的大數據框架解決問題

          訓練數據就是盡可能和實際同分布的數據 + 盡可能充分的數據

          機器學習算法中,由于期望的往往是總的誤差最小,所以很可能講數據量小的類目判別錯誤

          如果樣本數據和實際數據分布差異大的話,對于實際的算法效果一般都不好

          充分的數據,這個就好解釋了,數據越充分,訓練就越充分,就好比考試前做的練習越多,一般效果越好

          特征就是盡可能包含足夠多的需要識別對象的信息

          一個簡單的例子,如果只有一個特征,對于水果的判斷往往偏頗,就會造成下面的結果

          形而上的機器學習

          隨著特征的增多,訓練就會準確

          形而上的機器學習
          往往對于一個工程問題來說,特征是決定最多的方面

          一個算法方面的優化,可能只是優化了2~3%的效果,但是特征可能就是50~60%了,一個工程項目七八成的精力往往都是畫在特征選取上的,比如百度CTR預測,特征數據目前就是100億級別的。

          最后來說一點關于deep learning 的東西

          Deep learning和目前的機器學習算法(Shallow Learning)最大的區別在于特征層數

          形而上的機器學習
          目前的機器學習算法主要是一層的,就是從特征直接推斷是結果;

          而Deep Learning和人類的處理問題的結果更接近,是由特征推斷出一些中間層的結果,進而推斷出最終結果的;

          比如視覺是由一些點,進而判斷出一些邊,進而判斷出一些形狀,然后才是整體的物體的。

          形而上的機器學習

          之前大量使用Shallow learning 主要是因為 Shallow Learning有很好的數學特征

          • 解空間是凸函數
          • 凸函數有大量的求解方法
          • </ul>

            凸函數優化可以參考

            **Convex Optimization
            **http://book.douban.com/subject/1888111/
            **http://www.stanford.edu/~boyd/cvxbook/

            而Deep Learning則容易找到局部最優解,而非全局最優解

            形而上的機器學習

            Deep Learning解法可以參考

            G. Hinton et al., A Fast Learning Algorithm for Deep Belief Nets. Neural Computation, 2006.

            也可以看Andrew NG最近的課程

            這里有最新的中文翻譯

            http://deeplearning.stanford.edu/wiki/index.php/UFLDL教程

            本文整理自@戴文淵 機器學習簡介 講座

            End.



            形而上的機器學習

            來自36大數據(36dsj.com)

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!