什麼是機器學習?
作者:許鐵-巡洋艦科技
鏈接:知乎專欄
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
一段程序可以看做一連串從輸入到輸出的過程,無論是工程師還是程序員,我們都想通過設計來完成某種功能, 比如說你做一個網頁, 你要畫視覺圖, UI圖, 前端後端交互圖,我們是給計算機設計一套解決具體問題的流程, 如做一個淘寶網。
機器學習呢? 機器學習是你不去設計, 而讓計算機自己去磨,如同用一套很一般的模子里打磨出能夠解決特定問題的武器。 這點上,機器學習做的正是」 自發能夠產生解決問題的程序的程序」 , 一些機器學習的經典演算法如線性回歸, SVM, 神經網路, 它們單個都不能解決問題, 但是通過「學習」卻可以一會去預測房價一會去尋找美女。
它是怎麼做到的:
我們模仿人學習的過程讓機器來學習些程序:
最常見的方法就是是有老師告訴你對錯的學習 ,這個稱為有監督學習 。
一個一般被作為監督學習入門的實例, 是預測房產的價格, 一個房子的價格決定於非常多的相關因素, 比如房子中卧室, 廁所,客廳的數量和面積, 周圍環境的交通, 安靜與否,有無學校等, 我們要從這些要素中知道房子的價格。如果你是傳統的房產專家, 你的方法一定是到各個地點做調查成交價, 隨著經驗的增加, 你會得到各個區域的基準價格, 然後按照這個基本價格結合房子的特徵上下調整,得出你的經驗公式。 這真是累死小哥啊。
有了最原始的機器學習,我們也可以把這個人類得出經驗的過程讓機器解決。我們的小哥現在只需要在網上放一分表格, 讓人們把有關房子的有用無用的信息和價格都填了, 做一個巨大的excel表格。 然後我們讓程序從這些信息學習價格的pattern(模式)。
之前的因素在這裡我們換以一個新的辭彙-特徵。每一個特徵, 這次要用一個數表示, 如同線性代數里的坐標基。而這些特徵如何決定價格的, 我們就可以不管, 讓機器決定去。特徵的個數我們通常稱之為維度,一個問題的維度往往決定其複雜性, 以及所使用的方法, 這就是複雜系統所擅長討論的範疇了在此不詳述。 維度本身同時決定我們可能需求的數據量多少, 高維度意味著我們需要求解問題的信息量也成比例的增長。 特徵工程就是在大量的信息, 比如「我的房子有個大落地窗」這種話里提取出和房價可能相關的屬性(attribute)。
所謂機器學習的模型選擇,就是在尋找一個基本學習框架, 包含你對預測事物的非常一般的理解, 比如房子的價格可能是很多因素的疊加這種初中水平的東西,學名線性回歸:
你不是有眾多特徵決定嗎? 我可以用一個演算法,讓一個非常初級的模型自動的進化,機器學習工程師要做的是把這個模式的毛坯找出來,以及這個尋找自動演算法的演算法做出來,這個一旦做出來, 後續的數據就像一顆顆子彈把模型打造成型。
這個把模型打磨成型的過程就是學習,行里叫求解參數。這組參數不是讓某個特定的房子的價格被最好的擬合,而是讓整個數據集都被一組參數涵蓋。 這組參數就是我們學習的結果, 放佛具有了一種人一樣的預測未知房價的能力。
就像人一樣,機器也是從錯誤中學習的,因此,最經典的監督學習里, 我們首先要做的是衡量錯誤的大小,我們用一個叫cost function的東西衡量模型預測的結果與真實值的差距, 模型的效果越差, 這個cost function的值就越高。
這個函數告訴你的是,每次犯錯都是潛在的風險和損失,我們稱之為cost。而cost 函數來衡量目前模型離最終正確模型的距離。
這個cost函數恰恰是由剛剛說的參數決定的。 這些參數的含義是, 當你改變某一個特徵比如房屋的面積,你的房子價格就會變動,但是變動的方式是什麼, 你不知道, 你就去隨機的擾動這些參數看看得來的價格會如何變化,並且和真實的價格信息比較, 可能你忽然發現某個瞬間, 你的所有房子的價格都被一組參數神奇的擬合了。
我們稱這組參數為最優,或者說我們學習的結果。雖然這個cost函數和統計學裡的方差很相近,但說的不是並非一個意思。
機器學習能否成功,就在於這個最優位置能否找到, 而在大多數時候,我們連這個最優位置是否存在都不知道。
當然剛剛說的隨機方法很是不靠譜,實際操作中我們用到的是一個叫梯度下降的方法, 讓參數順著最快速減少預測錯誤的方向去自動調整,如下圖。
圖中的x,y軸代表參數, 高度代表錯誤率, 窪地的那個點正是最優參數點。
訓練與測試:
用一個形象的比喻理解有監督學習,它就像一個拿著一堆模擬考試題學習的學生, 這個過程里你通過不停的比較你和標準答案的差距來學習完成試卷, 而最終這個學生要面對的是真實的考試。 相對應的,我們通常在有監督學習里把我們的數據分成兩部分, 一部分做學習的試題,另一個部分做考試用。 一個學生完全可能在平時練習的時候把每道考題被的滾瓜爛熟,而在真正的考試里一塌糊塗,這種情形我們稱之為過擬合。
如果用兩個最簡單的例子來解釋過擬合發生的原因,主要就是在局限的數據里過度的挖掘模式導致的。 比上圖說一個人想要識別樹葉,它只見過那些有鋸齒的樹葉, 見到沒有鋸齒的葉子就會判斷它不是葉子。 或者一個人只見過白天鵝, 它拚命的根據已有的經驗去定義天鵝,而當第一個黑天鵝出現時候, 它的定義就失效了。
無監督學習 :
再一些更困難的問題里, 我們根本不掌握我們所要求解的信息,比如房屋的價格, 這好比一個沒有標準答案的開放性考題, 我們需要學生髮散式的探索。
無監督學習看起來不能給出一定的答案, 但是其結果卻可以讓我們得到意想不到的驚喜。
無監督學習最典型的範例是聚類, 一個典型的例子是, 你是一家互聯網公司,你要對你的一大堆客戶信息, 你首先面對的是如何把這些數據進行整理歸類,無監督學習里的聚類演算法如k-means,它可以輕鬆的把你的客戶信息根據特徵自動劃分成大類, 之後你可以發現喜歡愛馬仕包的女生也愛喝拉菲的紅酒這種信息。
再有說如果你有大量的人的心電圖,你要分辨出哪些是異常的可能是心臟病的情況,但是你又不知道病人有關的信息, 讓機器自己去無監督學習, 都可能得到意想不到的insight。
機器學習很美嗎:
機器學習這件事, 看上去很美, 事實上一點也不, 因為你面臨的是變幻莫測的問題, 你訓練的再好, 你的預測也是有風險的。首先, 因為存在模式,問題才可以預測, 如果你的問題本身就沒有模式, 或者模式極為不可捉摸, 你的演算法再強大也會失敗。比如說你要預測某個商品網站上衣服的價格, 但是這個網站里的衣服都是一個瘋狂銷售者根據它每天的心情好壞定的, 而你卻去找了一堆衣服的尺碼材質特徵來, 那你的演算法終究要失敗。 即使是一個模式存在的問題, 也總會在某個時點上, 碰到問題的邊界。比如說你要做一個根據女生特徵匹配對象的機器學習演算法, 你的演算法總是根據你過去掌握的男女匹配記錄搞的, 而總會有某個時刻, 你的對象已經不符合歷史數據的規律,這時候要不你調整演算法, 要不你直接放棄服務這類無法預測的人。
機器學習最難的是什麼?
如果你思考一遍上述流程, 你可能發現一切都很容易, 從數據清洗,特徵提取,到模型選擇, 事實上這你就錯了。 因為機器學習最難的一部 , 這裡根本就沒提到, 那就是把現實生產生活中的問題, 提煉成一個機器學習問題 。這需要的是你對問題本身的深刻洞察。 有一天也許整個數據清洗到模型選擇和交叉驗證都自動化了。但始終有一個東西不能完全被機器搞定, 那就是你如何從一個全新的領域, 去提取機器學習可以有助解決的最重要的問題。 再有, 無論機器的預測多準確, 它的結果如果不是在解答人的需求, 也是一個沒用的或至少不令人喜歡的東西。 比如我發明一個演算法能夠特別準的預測老人的壽命, 或者根據女生現在的長相推測她80歲的長相, 即使演算法十分牛掰, 這樣的產品估計也不是客戶喜聞樂見的。
- 1+1等於幾 ?
- 50
- 傻x,多了
- 1+2等於幾?
- 20
- 傻x,多了
- 3+4等於幾
- 7
- 傻x,對了
- 6+9等於幾
- 13
- 傻x,少了
很多很多次以後……
- 2+2等於幾
- 4
- 4+5等於幾
- 9
這就是機器學習,準確來說是最常見的一種,監督學習。最開始的幾步是對於模型的訓練,「多了」或「少了」可以理解為訓練時的誤差,模型根據誤差調整自身參數,這就是機器學習里常用的反向傳播(Backpropagation)的簡單的解釋。梯度下降涉及到計算,真沒想到該怎麼通俗解釋。。
再補充一個最近一直在看的,生成對抗網路(GAN)。
- 孫悟空(Real data):我是孫悟空。
- 如來(D net):你是真的。
- 六耳獼猴(G net):我是孫悟空。
- 如來:你是假的。
- 孫悟空:我是孫悟空。
- 如來:你是真的。
很多很多次以後......
- 六耳獼猴:我是孫悟空。
- 如來:你是真的。
曾經有個笑話說:你一個搞機器學習的,哪來的資格鄙視我們迷信星座的人?
是的……星座可以是:
無監督的機器學習
我認識k個人,我有他們的出生年月日,性別,長相,身高,膚色,性格,聰明程度,有沒有寵物......
我的目標是把相似的人集中到一簇里,分成十二簇。訓練成功的時候,發現這些人都有類似的出生月日和性格。
我認識了個新朋友,他說他生日11.11,有魅力然鵝有仇必報,我就知道「哦!(劃掉)單身狗(/劃掉)天蠍座!」。
有監督的機器學習
我認識k個人,雙子座k1個,水瓶座k2個,獅子座k3個......天秤座k12個。樣本量充足。
我把一部分人的各種特徵作為輸入,他們的星座作為輸出。機器幫我們建了個模型,模型這頭放進特徵,那頭產出星座。如何評估模型好不好用呢,我把剩下的人的特徵放進去,用模型產出星座,然後和他們的真實星座比較。
用來建立模型的叫訓練集,用來評估模型效果的叫測試集。
訓練和評估了一會兒,機器表示AUC(注2)達到0.6,我不滿意,調了一會兒參,AUC達到0.75,差不多能上線了。
(過擬合和欠擬合用星座來舉例反而複雜了,這裡略過。)
我在十月認識了個膚白貌美的新朋友,和她約吃飯,花了兩個小時挑餐廳,一個小時點菜,吃完以後餐廳還送了她一個小蛋糕因為在生日當月光臨有獎。
「你天秤座的吧。」
「啊,你怎麼知道!」
對抗生成網路
在擁有一些星座的基本知識後,我是一個待訓練的判別器。
我有一群無聊的朋友,他們各有星座,但他們試圖騙我他們都是雙子座。
他們有的學得不像,被我拆穿了,就回爐重練,試圖學得更無破綻,我也在一次次辨別中越來越抓得到雙子座的精髓。
最後兩方盡己所能,他們儘力騙我,我儘力不被騙,最後識別概率50%左右,他們就成了裝得最像雙子座的人,我成了最能看穿雙子座偽裝的人。
這就是對抗生成。
卷積神經網路
我認識k個人,現在不管他們的年齡身高收入水平,只看臉,能知道他們的星座嗎?實際上估計是不能的......但反正也扯這麼遠了,就假設每個星座長得有每個星座的特點吧!
卷積神經網路是深度學習的一種,優越性在於輸入可以是圖像,而且不需要用文字描述。所以不用抓破腦袋去想特徵,「眼睛距離」,「眉毛上挑程度」,「鼻頭大小」,「人中長短」......放棄吧,列不完的。
我餵給機器的是足量的人臉圖片和他們的星座,機器從圖片一角開始卷像素點,提取語言不能表達的特徵。下圖示意了「卷」的動作。
中間層肯定卷得媽都不認識了,不要緊,機器認識就行,最後它會告訴你這個人是各個星座的概率。
結果就是,我只要拿著你的照片給機器,就知道你大概率是什麼星座了,神不神奇~
注釋
—
1. AUC指Area Under Curve,越高模型效果越好。Curve在哪兒呢……curve是正樣本的正確率和負樣本錯誤率的抗衡,如果一直都是正樣本正確率0.5,負樣本錯誤率也0.5,就是斜向右上角的一條45度直線,AUC也等於0.5,和拋硬幣差不多。更具體的解釋一兩句寫不完請自行搜索~
—
感覺這個答案下嚴謹的也有,通俗的也有,嚴謹的我是寫不了了所以打了個通俗的比方……希望零基礎的知友看得開心!專業的知友請批評指正~1. 機器學習的本質
機器學習的本質是什麼?
2.Andrew Ng說機器學習
Andrew Ng在《斯坦福大學公開課 :機器學習課程 》開頭,提到了 Arthur Samuel 和 Tom Mitchell 兩位j機器學習領域前輩關於機器學習的定義。見本篇第4節。
3. 林軒田說機器學習
- 果殼網:「機器學習」聽起來很厲害,可「機器學習」到底是研究什麼的?與當前熱門的大數據、人工智慧,有何聯繫?有沒有一些好玩的例子?
- 林軒田:機器學習想做的事情,簡單的說是要從資料中歸納出有用的規則。大數據說的是對大量的資料做分析,而人工智慧說的是讓機器看起來更聰明,兩者都可以使用機器學習來做核心的工具。
- 我們可以舉 2012 年的 KDD-Cup 做例子,當年騰訊給的題目之一,是希望能從大量的線上廣告資料中,找出「這個廣告到底會不會被點擊」的規則,如果機器能找出有用的規則,我們就會有更高「智能」的廣告系統了。我們在第一堂課中還會有些很有趣的例子跟大家分享。
4. 機器學習的定義
什麼是機器學習:一次權威定義之旅
- 權威定義
我們先從閱讀四本大學課程中常用的機器學習參考書開始。這些是我們的權威定義,它們為我們更加深入地思考這個學科奠定了基礎。我選擇這四本書來強調該領域的一些有用的、多樣的觀點。經驗告訴我們,這個領域確實是包括很多的方法,因此選擇一個合適的角度是取得進展的關鍵。
- Arthur Samuel定義的機器學習(1959)
作為機器學習領域的先驅,Arthur Samuel在 IBM Journal of Research and Development期刊上發表了一篇名為《Some Studies in Machine Learning Using the Game of Checkers》的論文中,將機器學習非正式定義為:」在不直接針對問題進行編程的情況下,賦予計算機學習能力的一個研究領域。」
在機器學習的歷史上,Arthur Samuel做了一些非常酷的事情。他曾經做了一個西洋棋程序,讓計算機自己跟自己下棋,下棋速度非常快,因此Arthur Samuel讓他的程序自己和自己下了成千上萬盤棋,逐漸的,程序開始慢慢意識到怎樣的局勢能導致勝利,怎樣的局勢能導致失敗,因此它反覆的自己學習「如果讓競爭對手的棋子佔據了這些地方,那麼我輸的概率可能更大」或者「如果我的棋子佔據了這些地方,那麼我贏的概率可能更大」所以漸漸的,Arthur Samuel的程序掌握了哪些局面可能會輸,哪些局面可能會贏,因此奇蹟出現了,他的程序的棋藝甚至遠遠超過了他自己。ArthurSamuel讓他的程序比他自己更會下棋,但是他並沒有明確的教給程序具體應該怎麼下,而是讓它自學成材。
- Mitchell 定義的機器學習 (1998)
Tom Mitchell在他的《Machine Learning(中文版:計算機科學叢書:機器學習 )》一書的序言開場白中給出了一個定義:
「機器學習這門學科所關注的問題是:計算機程序如何隨著經驗積累自動提高性能。」
我喜歡這個簡單明了的定義,它是我們在帖子最後得出的程序員定義的基礎。注意計算機程序這一提法和提到的「自動提高」一詞。寫程序以改善它們自身,這是挑釁!
他在引言中多次重複提到一個簡短的形式體系:
「對於某類任務T和性能度量P,如果一個計算機程序在T上以P衡量的性能隨著經驗E而自我完善,那麼我們稱這個計算機程序在從經驗E學習。」
不要讓術語的定義把你嚇跑,這是一個非常有用的形式體系。我們把這一形式體系作為一個模版,把經驗E、任務T和性能度量P列在一張表的頂部,並且列出帶有更少歧義的複雜問題。它可以作為一個設計工具來幫助我們清楚的思考收集什麼樣的數據(E),需要做出什麼樣的決策(T),以及如何評價結果(P)。這就是我們把它作為一個標準定義的原因。請把它記在心裡。
- 統計學習基礎
《The Elements of Statistical Learning: Data Mining, Inference, and Prediction》是由三個斯坦福的統計學家編寫的,它自我描述為組織探究他們領域的統計框架。它在前言中寫到:
「許多領域都產生了大量的數據,統計學家的工作就是讓所有這些數據變得意義:提取重要的模式和趨勢,理解「數據在說什麼」。我們稱之為從數據中學習。」
我所理解的統計學家的工作是,使用統計工具在上下文環境中解譯數據。作者似乎想要把機器學習領域中的全部作為輔助工具。有趣的是,他們選擇把「數據挖掘」包含在書的標題中。
統計學家從數據中學習,但軟體也可以,並且我們是從軟體學習到的事情中學習,從由多種多樣的機器學習方法做出的決策和得出的結果中學習。
- 模式識別
Bishop在《 Pattern Recognition and Machine Learning 》的前言中寫到:
「模式識別起源於工程學,而機器學習產生於計算機科學。然而這些領域可以看做成是同一領域的兩個方面。」
看了這些,你會獲得這樣一個印象,Bishop從一個工程的角度來到這個領域,後來又採取同樣的方法學習和利用了計算機科學。這是一個我們應該效仿的成熟方法。更廣泛地說,不管一個方法所宣稱的領域,如果它能夠通過從數據中學習使得我們獲得一個更接近的洞察力或結果,從而更符合我們的需要,那麼,我們就稱之為機器學習。
- 演算法角度
Marshland在《Machine Learning: An Algorithmic Perspective》中採用了Mitchell對於機器學習的定義。他在序言中提供了一個促使他寫下這本書的強有力的解釋:
「機器學習最有趣的特徵之一就是,它介於幾個不同理論學科之間,主要是計算機科學、統計學、數學和工程學。機器學習經常被作為人工智慧的一部分來進行研究,這把它牢牢的置於計算機科學中。理解為什麼這些演算法能夠有效工作需要一定的統計學和數學頭腦,這往往是計算機科學專業的本科生所缺少的能力。」
這是深刻並有益的。首先,他強調該領域的多學科性質。雖然我們已經從上面的定義中獲得了這樣一種感覺,但他為我們進一步強調了這一點,機器學習來源於各種各樣的信息科學。第二,他強調了過於堅持一個給定的角度的危險性。特別是,演算法工程師避開一個方法的數學內部運作原理的情況。毫無疑問,相反的情況,統計學家避開實現和部署的實際問題也是同樣受限的。
- 維恩圖解
2010年9月,Drew Conway創建了一個漂亮的維恩圖,我發現這個圖是很有幫助的。他在解釋中評論到,「機器學習就是黑客技能、數學和統計學知識的加和。」
數據科學維恩圖。歸屬於Drew Conway,是一種知識共享許可的非商業歸屬。
他還把危險區域描述為黑客技能與專業知識的加和。這裡,他所指的是,那些了解得足夠多的人是危險的。他們能夠訪問和構建數據,了解這個領域,還能運行一種方法並給出結果,但是他們並不理解結果的含義。我認為這就是Marsland曾經可能暗示的意思。
- 程序員定義
現在我們來談談,要想把所有這些問題分解為具體細節,程序員需要做些什麼。首先,我們來看看抵制我們分解和程序的解決方案的複雜問題。這構成機器學習的動力。然後,我們需要找出一個適合於程序員的定義,一個每當其他程序員問我們什麼是機器學習時我們就可以使用的定義。
a. 複雜問題
作為一名程序員,你最終將會遇到很多類型的頑固抵制邏輯的、程序的解決方案的問題。我的意思是,對於很多類問題,坐下來寫出解決問題所需要的所有條件語句是既不可行也不划算的。
我聽到你的程序員大腦在大喊,「褻瀆」。
這是真的,以每天的鑒別垃圾郵件問題為例,每當介紹機器學習時,它是一直被使用的例子。當一封郵件到來時,你將怎樣寫一個程序來過濾垃圾郵件,決定是將它放在垃圾箱還是收件箱中?
你將可能開始收集一些實例並深入研究它們,你將尋找垃圾郵件和非垃圾郵件所特有的模式,你還將會考慮抽象出那些模式以便你的啟發式學習將來能夠應用到新案例之中。你將會忽視那些永遠不會被看到的古怪郵件,你將能夠輕鬆的提高準確率並為邊界情況制定特殊的程序。你將反覆多次的瀏覽郵件並抽象出新模式來改善做出的決策。
在那裡有一個機器學習演算法,所有這些事情都由程序員而不是電腦來完成。這種手動導出的硬編碼系統將具有同程序員一樣的、從數據中提取規則並將其實現的能力。
這能夠做到,但是它將花費太多的資源,而且會是一個持續的噩夢。
b. 機器學習
在上面的例子中,我確信你下定決心尋求自動化的那一部分程序員大腦,能夠看到自動化和優化從例子中提取模式這一過程的機會。機器學習方法就是這樣一個自動化過程。
在垃圾/非垃圾郵件的例子中,經驗E就是我們所收集的郵件,任務T是一個決策問題(也稱為分類),它需要標記每一封郵件是否為垃圾郵件,並將其放入到正確的文件夾中。我們的性能度量將是一些類似於準確率之類的、介於0%-100%之間的一個百分比(正確決策數除以總的決策數再乘以100)。
準備這樣一個決策程序的過程通常被稱為訓練,收集到的實例稱為訓練集,程序即為一個模型,一個把非垃圾郵件從垃圾郵件的分離出來的問題的模型。作為程序員,我們喜歡這個術語,一個模型具有特定的狀態並且需要被保持,訓練是一個執行一次的過程,也可能會根據需要重新運行,分類是待完成的任務。這些對我們來說都是有意義的。
我們能夠看到上面定義中所用到的術語並不是很適合於程序員。從技術上來說,我們寫的所有的程序都是一個自動化操作,因此,機器學習是自動化學習的這一說明是沒有意義的。
c. 一個現成的小笑話
那麼,讓我們來看看我們是否可以使用這些片段,構建一個機器學習的程序員定義。
機器學習是一個源於數據的模型的訓練過程,最終歸納出一個面向一種性能度量的決策。
「訓練一個模型」代表訓練實例,「模型」表示通過經驗學習獲得的狀態,「歸納出一個決策」代表基於輸入做出決策的能力,並且需要一個用於未來決策的、不可見的預期輸入。最後,「面向一種性能度量」是指準備好的模型的針對性需要和定向特性。
——————————————————————————————————————————
Best wishes to all MLers !
這則新聞高度凝練地回答了本問題:四川推「智慧紅雲」:用大數據和人工智慧「算」黨員思想狀況
四川推「智慧紅雲」:用大數據和人工智慧「算」黨員思想狀況
下面我們展開港一蛤:
01. 量化
將不再是抽象、模糊的「印象分」
這句話點出了機器學習的本質,一切都是量化的,而不是「抽象、模糊」的。原生的圖片、文字等形式都是不識得的,都要轉化為數字、向量、矩陣。之前我也分享過一個關於「詞袋」模型的例子,最終都是0101的,當然實際應用中的量化問題比這複雜得多。
我們常說機器學習是「玄學」,因為從方法論上來講,機器學習不是基於推理的「演繹法」,而是基於觀測的「歸納法」,這就跟「因為所以,科學道理」的灌腸思維方式有別。前幾天看到一位情緒很不穩定的朋友留言,很有代表性地體現了兩種思維方式交會下,人類的迷茫與焦慮,進而惱羞成怒的過程。
這裡還是希望大家保持一顆平常心,不要打那麼多感嘆號,你的感嘆號並不能治感冒。
說到中醫的話,這個「神農嘗百草」其實就是機器學習的思想,雖然沒有真的用機器。
02. 數據
系統首先將收集黨員(基層組織)的基礎數據、活動數據,及參加「三會一課」、討論發言情況等精準數據;
......
「智慧紅雲」通過數據滲透、數據驅動、數據再造、數據協同......
可以看到這裡出鏡率最高的詞就是「數據」,因為是歸納法,所以數據是基礎。注意「數據」和「數字」的區別,原始的、非結構化的圖片文字音頻這些雖然不是數字,但也是數據。
世上本沒有「大數據」,後來數據多了,就有了大數據。——山東·迅
其實人們很早就意識到了數據的重要性,比如在一些老司機很集中的貼吧,會看到鋪天蓋地的「求數據」。
03. 學習一個
隨後,系統獨有的「黨員數據精準畫像引擎」,將在雲平台上對黨員(基層組織)進行快速、準確、全面的「畫像」
所謂「畫像」就是特徵提取的過程,有一個很古典的笑話:說生物課考試,老師拿了個籠子掀開一角讓學生辨認這是什麼鳥,一考生憤然離席。當被問到身份的時候,該生露起褲腿怒斥:「你看看我是誰」。
「認鳥」就是機器學習的典型應用,叫作「分類」。很多問題都可以轉化為分類,比如說看病診斷,分類的結果就是「有病沒病」、「我有病你有葯嗎」、「沒病走兩步」等類別。近兩年醫療+深度學習結合的方向很熱,尤其是醫療影像+圖像識別,其實就是讓機器學習看片子,現在準確率已經很高了。對於「認鳥」這個分類任務來說,腿或許不是一個很好的特徵。
生活中很常見的一種景象,也可以歸結為分類,就是「性慾強」系列。在女性(甚至男性)的照片評論區,總能看到各種「鼻子大、性慾強」,「髮際線高、性慾強」,「有腦袋、性慾強」等說法。這裡「性慾強」是分類預測結果,前面就是提取的特徵。
那麼對於機器學習來說,「鼻子大」和「性慾強」到底有沒有統計上的相關性,相關性有多強,是需要從數據中挖掘的。而數據挖掘的結果,都是以概率分布的形式存在的,本質上都是「猜測」,而非「兩點之間直線最短」、「pV=nTR」這樣確定性的結論,所以顯得「玄學」。
很多時候這個「鼻子大」也很難直接量化,我們可能沒法事先去量人家鼻子,而是只有一張圖片,那麼從圖片中自行提取特徵也是一個專門的課題。
04. 深度學習
最後,系統可針對「畫像」採用「TensorPlus深度學習系統」進行解決方案推送,為基層組織更好開展黨員學習教育提供幫助。
這裡有個「深度學習系統」叫「TensorPlus」,不知道跟「TensorFlow」有什麼關係(應該沒啥關係),他們的名字里都有一個「Tensor」,也就是張量。剛才說的「數字、向量、矩陣」都是低階張量,這個機器學習最終都會落實到張量的計算上,這一點和計算流體力學(CFD)有些相似。
所謂「深度學習」是機器學習的子集,即多層神經網路的方法。其實學術界也是存在起名浮誇風的,早年支持向量機剛出來的時候,也叫「支持向量網路」,其實裡面沒有網路啥事,就是聽著牛逼。
TensorFlow的這個頁面可以直觀地體驗玩耍用神經網路做分類: Tensorflow — Neural Network Playground
05. 廣告
本文的部分圖片出自我站剛剛上線的課程,地址及主講人介紹如下:
深度學習的理論基礎 - 集智課堂
自然語言處理 - 集智課堂
歡迎感興趣的朋友們關注(都有免費試聽章節)。
這個問題好像跟另一個問題(機器學習的本質)類似:
http://www.zhihu.com/question/19830921
這是我的回答:
https://www.zhihu.com/question/19830921/answer/258032988
所謂人類的智能就是能根據已有的信息結合過往的經驗邏輯去做判斷,然後用這個判斷去指導行動,再根據行動獲得的反饋去修正判斷,如此循環往複。
人工智慧就是通過編程讓計算機擁有接近人類的智能。
傳統的計算機編程方式是人類自己總結經驗,歸納成嚴謹的邏輯公式,然後用編程語言描述出來,編譯成機器碼交給計算機去執行。
機器學習是一種新的編程方式,它不需要人類來總結經驗、輸入邏輯,人類只需要把大量數據輸入給計算機,然後計算機就可以自己總結經驗歸納邏輯,這個過程就叫訓練,訓練過後得到一個模型,這個模型就可以用來代替人去做判斷了,訓練得比較好的模型甚至可以達到超過人類的判定準確度。
這種新的編程方式未來可能成為日常軟體開發中常用的技術,用來解決一些傳統編程方式不太好解決的問題。每個程序員都應該學一下機器學習。
舉個例子:
十年前,2007年我在Nokia的時候遇到個問題,需要給當時的全屏手寫輸入法開發一個判定演算法,因為輸入法是全屏模式的,用戶可以在整個屏幕上寫字,但是屏幕上還是有一些可以點擊的按鈕的,比如回退,關閉,選擇候選字之類的,所以要能區分用戶到底想寫一個筆畫還是要點按鈕。
當時用的方法是根據收集的大量用戶書寫行為數據,根據筆畫的位置,長度,角度,書寫時間等數據,用一些三角函數,對數,配合一堆係數(都是些初中代數幾何知識)生成一個公式,公式的計算結果就是這個用戶輸入是點擊還是筆畫的概率。
這個公式不是我總結的,有專門的人做這個研究,我的工作只是把公式寫成C++代碼並調試通過。
如果用今天的觀念來看,這就是一個典型的機器學習問題,訓練一個分類器就可以解決。當時的研究者未必想不到用機器學習來解決,但他想到也沒用,因為當時的硬體性能不足以運行機器學習的判定代碼,當時的手機只有 400MHz的ARMV7單核,浮點運算性能也很差,內存也很小。現在的硬體平台已經沒什麼問題了,至少簡單的淺層模型跑起來沒壓力。
如今各種機器學習的平台框架都很成熟,學習資料也很豐富,每個程序員都應該學一學。
其實入門並不難,下面是我前些日子學習機器學習入門的時候寫的代碼,用來訓練一個分類器,用給定的三個邊長判定這是不是一個合法三角形。代碼只有30行,用Keras API開發,後端是Tensorflow。
如果已經安裝部署了 Keras和Tensorflow,那麼這個代碼可以直接運行。
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras import optimizers
import numpy as np
def isTriangle(a, b, c):
return a + b &> c and a + c &> b and b + c &> a
data = np.random.random((1000, 3))
labels = np.zeros(1000)
for x in range(0, 1000):
if isTriangle(data[x][0], data[x][1], data[x][2]):
labels[x] = 1
model = Sequential()
model.add(Dense(32, activation="relu", input_dim=3))
model.add(Dense(1, activation="sigmoid"))
model.compile(optimizers.RMSprop(lr=0.01, rho=0.1, epsilon=1e-07, decay=0.0),
loss="binary_crossentropy",
metrics=["accuracy"])
model.fit(data, labels, epochs=50, batch_size=32)
test_data = np.random.random((10, 3))
test_result = model.predict(test_data)
print test_data
print test_result
score = model.evaluate(data, labels, batch_size=1)
print "
Score: ", score
我承認,代碼是從一些例子里摘抄的,參數是自己亂填的,這些代碼我還不是每一行都能讀懂,但是沒關係,先有實踐然後慢慢補充理論知識,這是我一貫的學習方法。
什麼是機器學習?
推薦完全沒有開始學習的同學,可以先去集智(https://jizhi.im)的社區看看,看看他們都在解決什麼問題,對機器學習和深度學習有一個初步的印象,這對你看以下的若干段落會比較有幫助,因為有些辭彙比較生澀。如果你已經有python基礎,可以選擇直接從《機器學習實戰》開始你的機器學習之旅。如果你不知道如何入手,這裡或許能提供一些入門的方法:大一計算機學生如何學習機器學習? - 知乎。
概覽:
機器學習是計算機科學的一個子領域,1959年一個叫Arthur Samuel的人給出了機器學習的定義「計算機有能力去學習,而不是通過預先準確實現的代碼」。在人工智慧領域,機器學習逐漸發展成模式識別和計算科學理論的研究。機器學習探索可以預測數據的演算法的研究和建設--比如有些演算法克服了嚴謹的靜態的程序流程,通過從簡單的數據中構建簡單的模型來進行數據預測或者下決定。機器學習被應用於大規模計算性任務,尤其是當設計和編程過程中擁有良好表現的確切演算法是難以實現或者不能實現的時候。簡單的幾個應用:email過濾,檢測網路入侵者,OCR,排序學習,計算機視覺。
機器學習是非常接近(重疊)計算統計學的,關注於通過計算機來實現預測-決定這一過程。它與數學最優化有很強的關聯性(提供方法,理論,應用領域)。機器學習有時候可以跟數據挖掘混為一談,後者關注更多的是探索性的數據統計並且因為無監督學習而出名。機器學習同樣可以是無監督的,並且可被用來學習和建立實體行為上的基準線,並且被用來發現有意義的異常。
在數據統計領域,機器學習是一種用來設計複雜模型和演算法並以此實現預測功能的方法。在商業領域,機器學習因為預測分析而聞名。這些統計模型允許研究者,數據科學家,工程師和統計學家去「產出可信賴的,可重複的決策和結果」,並且通過對數據的歷史關係和趨勢的學習發現「隱藏的視角」。
從2016年起,機器學習成了流行詞,並且通過Gartner 在2016年的大肆宣傳,機器學習到達了不合理的期望的峰頂。有效的機器學習是困難的,因為找到模式是困難的並且經常出現訓練數據不夠的情況。導致機器學習程序經常不能交付結果。
Tom M. Mitchell 提出了一種被廣泛引用的,更正式的定義:對於某類任務T和性能度量P,如果一個計算機程序在T上以P衡量的性能隨著經驗E而自我完善,那麼我們稱這個計算機程序在從經驗E中學習。這個定義對機器學習在基礎的操作上而不是認知術語上來說是重要的,因此根據Alan Turing在他的paper----「Computing Machinery and Intelligence」中的提議,問題「機器可以思考么?」可以被替換為「機器可以做我們可以做的么?」。在這個假說中,他想要實現構建一台思考的機器可能著了魔。
不同的類型和任務
機器學習任務往往可以被劃分為三種大類,取決於可從訓練系統獲得的信號量或者反饋的屬性。
這些分別是:
- 監督學習:計算機獲得簡單的輸入給出期望的輸出,過程是通過一個「訓練模型」,學習通用的準則來從輸入映射到輸出。
- 無監督學習:沒有給出標記用來學習演算法,讓它自己去發現輸入的結構。無監督學習自己可以被當成一個目標或者一個實現結果的途徑(特徵學習)。
- 增強學習:一個計算機程序與動態環境交互,同時表現出確切目標(比如駕駛一輛交通工具或者玩一個遊戲對抗一個對手)。這個程序的獎懲機制會作為反饋,實現它在問題領域中的導航。
處於監督學習和無監督學習之間的是半監督學習,「teacher」給出一個不完整的訓練信號:一個訓練集丟失了部分目標輸出。傳導是原則中的一個特殊的例子,除了那部分丟失的目標,整個問題實例的集合在學習過程中是被知曉的。
在別的機器學習問題的分類中,學會學習這一過程需要靠學習它自己,這歸納偏向於之前的經驗。
發展性學習則闡明了機器人學習,生成它自己學習情況的序列,通過不斷地自我探索、與人類「教師」的不斷社會性交互、使用導向性的機制(比如主動學習,熟化,機器協同,模仿這一過程),進而去累積地獲得各部分的獨特技巧。
當一個人開始考慮獲得一個機器學習過的系統的輸出,另一類機器學習的任務就出現了:
- 從分類上來說,輸出被分為兩個或者多個類別,並且學習者必須製造出一個模型用來分配目前沒有出現的輸入數據提供給一個或者更多的類別。這是傳統解決方法,使用監督學習。垃圾郵件過濾器就是一個典型的分類,輸入是email信息並且類別分為垃圾郵件和非垃圾郵件。
- 從回歸上來說,同樣是一個監督學習的問題,輸出是連續的而不是離散的。
- 從聚類上來說,一個輸入集應該被分為若干個組。不同於分類的做法,這些組之前並不被預先知道,這使其被當做無監督學習的任務來處理。
- 密度估計可以在某些地方找到不同版本的輸入。
- 降維處理簡化了輸入,通過映射它們給更低維度的空間。主題模擬是一種近似的問題解決辦法,尤其是當一個程序被給予了一個序列的人類語言的文檔,並且任務是找出哪些文檔的主題接近時。
歷史淵源以及和別的領域的關係:
作為一項科學嘗試,機器學習在人工智慧領域不斷地探索,現在已經長大。在人工智慧的早期,作為一門學術學科,許多研究者對機器從數據中學習非常感興趣。他們嘗試著用多種抽象的手段去解決問題,比如術語----「神經網路」。這些感知機一樣的玩意兒和一些其他的模型被重新改變為統計學上的廣義線性模型。概率推理也被應用於此,尤其是自動化的醫療診斷系統。
但是,「過於強調邏輯,以已有知識為基礎的方法」這一現象,造成了人工智慧和機器學習的分歧與割裂。概率系統被數據的獲得和表現,這兩者的理論和實踐中出現的問題所困擾。到1980年,專家系統開始主宰人工智慧,並且統計學開始失寵。致力於抽象的/以現有知識為基礎的的學習繼續影響著人工智慧,引領了歸納邏輯編程這一潮流,但是更多的統計學上的線性研究開始完全地跌出了人工智慧,尤其是在模式識別和信息檢索領域。神經網路研究此時被人工智慧和計算機科學同時放棄。與此相關的整個系列,也因為 Hopfield, Rumelhart and Hinton三者在20世紀80年代中期對反向傳播演算法的成功革新,被人工智慧/計算機科學領域當成一種聯結機制而排除。
機器學習,被改組成了一個獨立的領域,在20世紀90年代開始走向繁榮。這個領域改變了它的目標,從實現人工智慧到解決實際問題。它的關注點從繼承自人工智慧的象徵性做法轉換為從統計學和概率學上借來的方法和模型。它同時也從英特網不斷增長的數字化信息、分發有效性等方面獲利。
機器學習和數據挖掘經常使用同樣的方法並具有明顯地重疊,但是不同之處是機器學習關注於預測,是從訓練數據中學習,基於已知的特性進行預測。數據挖掘關注於從數據中發現未知的特性。數據挖掘使用和很多機器學習的手法,但是持有的是不同的目標。從另一方面說,機器學習同樣使用了數據挖掘的一些做法,比如「非監督學習」或者預處理的步驟去提高學習器的準確性。大量的困惑出現在兩個研究團體之間,這來自於兩個團體的基礎假設:在機器學習領域,表現是通常用來衡量再次產生已知知識的能力,但是在知識探索和數據挖掘(KDD)領域,關鍵任務是發現先前不知道的知識。衡量已知的知識,一套監督學習的處理方法將會比無知的做法(無監督學習)容易呈現出更好的性能,雖然在典型的KDD任務中,監督學習不能被使用,因為訓練用的數據的無用性。
機器學習同時與優化有著親密的關係:許多學習問題可以被作為公式,用來使訓練樣例集中損失函數最小化。損失函數在預測被訓練的模型和實際問題實例上表現出了差異性(舉例來說,就分類來說,一個想要程序想要分派標籤給一個實例,並且模型被訓練為正確預測,預先指派標籤給樣例數據集)。兩個領域的不同之處源自目標的廣義化:一個優化演算法關注於在訓練集上可以被最小化損失,而機器學習是關心最小化損失在看不到的例子上。
機器學習與統計學的關係
機器學習和統計學是非常接近的兩個領域。根據 Michael I. Jordan在機器學習領域的理念,從方法論原則到理論工具,在統計學領域是有一段很長的史前史。他也建議數據科學這一術語作為全部領域的前置。
Leo Breiman區別兩個統計學的模型:數據模型和演算法模型,在演算法模型中意味著或多或少包含著機器學習的演算法,比如隨機森林(Random forest)。
一些統計學家已經採納了機器學習中的一些做法,引申出了一個聯結領域-----統計學習。
機器學習理論
一個學習者的核心目標就是從經驗中形成概念(推廣)。概括是學習機器通過在學習一個數據集後在新的、未知的例子/任務中根據上下文精確表現的一種能力。這些訓練例子來自一些通用的不知道可能性的分發版本,並且學習者不得不去構建一個通用模型來使它在新的例子中產生足夠準確預測。
機器學習演算法中的計算分析和它們的表現是一個理論計算機科學的分支,其中理論計算科學因計算學習理論而出名。因為訓練集是有限的,並且將來是不確定的,學習理論通常並不做出對演算法表現的保證。反而,在表現上出現兩極間概率性的抖動是很常見的。偏置方差分解是一個量化概括過程出現的錯誤的方法。
為了在泛化過程環境中的最好表現,假說的複雜性應該匹配數據下函數的複雜性。如果假說的複雜性小於函數,那麼模型會對數據欠擬合。如果模型的複雜性作為回應而增強,那麼訓練中的錯誤會減少。但是如果假說過於複雜,那麼模型會過擬合,並且泛化性會變差。
除了性能界限之外,計算學習理論家研究了時間的複雜度和學習的可能性。在計算學習理論中,一個計算被認為是可行的,如果它可以在多項式時間內被執行完畢。這裡有兩種時間複雜度結果。積極結果展現出一個確定類別的函數,它可以在多項式時間內被學習。消極的結果展現出確定類別不能在多項式時間內被學習。
機器學習方法
決策樹學習:決策樹學習使用了一個決策樹作為預測性模型,映射一個對象的觀察結果給其目標價值一個推論。
關聯規則學習:關聯規則學習是一種用來在大型資料庫中發現變數之間的有趣聯繫的方法。
人工神經網路:一個人工神經網路學習(ANN)演算法,通常被稱為神經網路(NN),是一個由生物的神經網路所激發出的一個演算法。計算結構是由聯結的人工神經元組所構成,通過聯結式的方法來傳遞信息和計算。現代神經網路是非線性的統計學數據模型工具。它們通常被用來在輸入和輸出之間模擬複雜關係,找到數據中的關係,或者在觀測變數中從不知道的節點捕獲統計學結構。
深度學習:個人不能承受硬體的價格和GPU的發展推動了這些年深度學習的進步,深度學習是由人工神經網路中的多個隱藏層組成的。這條道路試圖去模擬人腦的過程,光、聲進入視覺和聽覺。一些成功的應用有計算機視覺和演講識別。
歸納邏輯編程:歸納邏輯編程(ILP)是一門用邏輯編程式控制制規則的學科,它使用統一的表示法來處理輸入樣例,背景知識和假說。給定已知的背景知識的編碼和一組被表示為事實的邏輯資料庫的示例,ILP系統將派生出一個假設的邏輯程序,該程序包含所有積極的和沒有負面的示例。歸納編程是一個相關的領域,它考慮任何一種表示假設(而不僅僅是邏輯編程)的編程語言,例如函數式編程。
支持向量機:支持向量機是一系列關於監督學習在分類和回歸上的應用。給出訓練樣本的數據集,每一個標記屬於兩類中的一類,一個SVM訓練演算法構成了一個模型,可以用來預測一個新的樣本是否進入一個類別或者是另一個。
集群:集群分析是將一組觀察結果分配到子集(稱為集群),這樣,同一集群中的觀察與一些預先確定的標準或標準相似,而來自不同集群的觀察則不同。不同的聚類技術對數據的結構作出不同的假設,通常由一些相似性度量定義,並通過內部緊度(相同集群的成員之間的相似性)和不同的集群之間的分離來評估。其他方法基於估計的密度和圖連通性。摘要聚類是一種非引導性學習的方法,是一種統計數據分析的常用技術。
貝葉斯網路:一個貝葉斯網路,信任網路或者有向無環圖模型是一個概率性圖的模型,它通過有向無環圖代表了一系列的隨機變數和他們的條件獨立性。舉例,一個貝葉斯網路代表著疾病和癥狀可能的關係。給出癥狀,網路可以被用來計算疾病出現的可能性。有效的演算法存在於執行推理和學習的過程中。
增強學習:增強學習關心代理人如何在一個環境中採取行動,從而最大化一些長期受益的概念。增強學習演算法嘗試去尋找一些策略,映射當前世界的狀態給代理在這些狀態中應該採取的行動。
特徵學習:一些學習演算法,主要是無監督的學習演算法,旨在發現訓練中提供的輸入的更好的表示。經典的例子包括主成分分析和聚類分析。特徵學習演算法常常試圖保存他們的信息輸入同時變換方式使它有用,在執行分類或預測之前經常作為預處理步驟,允許重建輸入來自未知的數據生成版本,而不一定是必須可靠的設置。流行學習演算法試圖在學習表現是低維度的約束條件下實現這一目標。稀疏編碼演算法試圖在學習表示稀疏(有很多個0)的約束條件下這樣做。多線性子空間學習演算法的目標是直接從多維數據的張量表示中學習低維表示,而不需要將它們重新組合成(高維的)向量。深度學習演算法發現了多個層次的表示形式,或者說是一種層次結構,在(或生成)低層次特性的基礎上定義了更高級、更抽象的特性。有人認為,智能機器是一種可以學習一種表達方式,它可以分解解釋所觀察到的數據的各種變化的潛在因素。
相似度量學習:在這個問題中,學習機被給予了很多對相似或者不相似的例子。它需要去學習一個相似的函數,以用來預測一個新的對象是否相似。它有時被用到推薦系統中。
稀疏字典學習:在這種方法中,一個基準面被表示為基函數的線性組合,那麼這些係數被認為是稀疏的。讓x是一個D維的基準,D是一個d乘以n的矩陣,每一列D代表一個基函數。r是用d表示x的係數。從數學上講,稀疏字典學習意味著解決
這個問題,這裡r是稀疏的。一般來說,n被假定為大於d,以允許稀疏表示的自由。學習字典和稀疏表示是非常困難NP問題,很難解決。一種流行的啟發式學習方法是k-svd。稀疏字典學習被應用在很多場景。在分類中,問題是確定一個從未被發現的數據屬於哪個類。假設每個類的字典已經構建好了。然後,一個新的數據與類相關聯,這樣就可以用相應的字典來表示最稀疏的數據了。稀疏字典學習也被應用於圖像去噪。關鍵的地方是,一個清晰的圖像補丁可以用圖像字典來表示,但是噪音是不能的。
遺傳演算法:遺傳演算法是一種啟發式搜索,它模仿自然選擇的過程,並且使用一些突變和變向來生成新的基因型,以找到好的情況解決問題。在機器學習中,遺傳演算法在20世紀80年代和90年代使用過。反之,機器學習技術被用來提高遺傳和進化演算法的表現。
基於規則的機器學習:基於規則的機器學習是任何機器學習方法的通用術語,它可以識別、學習或發展規則來存儲、操作或應用知識。基於規則的機器學習者的定義特徵是一組關係規則的標識和利用,這些規則集合了系統所捕獲的知識。這與其他機器學習者形成鮮明對比,他們通常會識別出一種特殊的模型,這種模型可以普遍應用於任何實例,以便做出預測。基於規則的機器學習方法包括學習分類器系統、關聯規則學習和人工免疫系統。
學習分類器系統:學習分類器系統(LCS)是一個基於規則機器學習演算法的家族,它每次結合一個發現組件和一個學習組件。它們試圖鑑別一套上下文相關的規則,用分段的方式共同地存儲和應用知識,以達到預測的目的。
應用:
- 自適應網站
- 情感計算
- 生物信息學
- 腦機介面
- 化學信息學
- DNA序列分類
- 計算解剖學
- 計算機視覺,包括物體識別
- 信用卡欺詐檢測
- 博弈
- 信息檢索
- 網路欺詐檢測
- 市場營銷
- 機器學習控制
- 機器感知
- 醫療診斷
- 經濟學
- 自然語言處理
- 自然語言理解
- 優化和啟發式演算法
- 在線廣告
- 推薦系統
- 機器人移動
- 搜索引擎
- 情緒分析
- 序列挖掘
- 軟體工程
- 演講和手寫識別
- 金融市場分析
- 健康監測
- 句法模式識別
- 用戶行為分析
- 翻譯
引用
Machine Learning and Optimization
http://www.britannica.com/EBchecked/topic/1116194/machine-learning This tertiary source reuses information from other sources but does not name them.
Ron Kohavi; Foster Provost (1998). "Glossary of terms". Machine Learning. 30: 271–274.
a b c d Machine learning and pattern recognition "can be viewed as two facets of the same field."
Dickson, Ben. "Exploiting machine learning in cybersecurity". TechCrunch. Retrieved 2017-05-23.
Wernick, Yang, Brankov, Yourganov and Strother, Machine Learning in Medical Imaging, IEEE Signal Processing Magazine, vol. 27, no. 4, July 2010, pp. 25–38
Mannila, Heikki (1996). Data mining: machine learning, statistics, and databases. Int"l Conf. Scientific and Statistical Database Management. IEEE Computer Society.
Friedman, Jerome H. (1998). "Data Mining and Statistics: What"s the connection?". Computing Science and Statistics. 29 (1): 3–9.
"Dark Reading".
"AI Business".
"Machine Learning: What it is and why it matters". www.sas.com. Retrieved 2016-03-29.
"Gartner"s 2016 Hype Cycle for Emerging Technologies Identifies Three Key Trends That Organizations Must Track to Gain Competitive Advantage". Retrieved 2017-04-10.
"Why Machine Learning Models Often Fail to Learn: QuickTake QA". Bloomberg.com. 2016-11-10. Retrieved 2017-04-10.
a b Langley, Pat (2011). "The changing science of machine learning". Machine Learning. 82 (3): 275–279. doi:10.1007/s10994-011-5242-y.
Le Roux, Nicolas; Bengio, Yoshua; Fitzgibbon, Andrew (2012). "Improving First and Second-Order Methods by Modeling Uncertainty". In Sra, Suvrit; Nowozin, Sebastian; Wright, Stephen J. Optimization for Machine Learning. MIT Press. p. 404.
a b MI Jordan (2014-09-10). "statistics and machine learning". reddit. Retrieved 2014-10-01.
Cornell University Library. "Breiman : Statistical Modeling: The Two Cultures (with comments and a rejoinder by the author)". Retrieved 8 August 2015.
Gareth James; Daniela Witten; Trevor Hastie; Robert Tibshirani (2013). An Introduction to Statistical Learning. Springer. p. vii.
Bishop, C. M. (2006), Pattern Recognition and Machine Learning, Springer, ISBN 0-387-31073-8
Mohri, Mehryar; Rostamizadeh, Afshin; Talwalkar, Ameet (2012). Foundations of Machine Learning. USA, Massachusetts: MIT Press. ISBN 9780262018258.
Alpaydin, Ethem (2010). Introduction to Machine Learning. London: The MIT Press. ISBN 978-0-262-01243-0. Retrieved 4 February 2017.
我是軍師,國內首家高質量強專業性機器學習社區----集智(https://jizhi.im)聯合創始人COO,互聯網界的信息販子,招聘相關信息可以免費發布在我站或者知乎專欄,需要幫助或商務合作請私信。
有一個古老經典的例子:
購買芒果
假設有一天你去購買芒果,老闆擺了滿滿的芒果,你會挑選一些芒果後讓老闆稱重,然後根據重量付款購買。
顯然,你希望挑選相對更成熟更甜一些的芒果(因為你是根據重量付款而不是根據質量),所以你應該怎麼挑選芒果呢?
你想起來你媽媽曾教過你,亮黃色的芒果比暗黃色的芒果更甜一些,所以你有了一個簡單的規則:只挑選亮黃色的芒果。所以你會檢查芒果的顏色,挑選其中顏色更亮麗一些的,然後付款回家。是不是So easy ?
並不是。。。
生活總會更加複雜
你回家吃了這些芒果之後,也許會覺得有的芒果味道並不好,你鬱悶了。。很顯然,你媽媽教給你的方法很片面,挑選芒果的因素有很多而不只是根據顏色。
在經過大量思考(並且試吃了很多不同類型的芒果)之後,你又得出一個結論:相對更大的亮黃色芒果肯定是甜的,同時,相對較小的亮黃色芒果只有一半甜(即:如果你買100個亮黃色芒果,其中50個大的,50個小的,則50個大的都是甜的,而50個小的大概只有25個是甜的)。
你會很開心自己得出的結論,然後下次去買芒果的時候就根據這個結論去買芒果。但是下次又去買芒果的時候,你喜歡的那家店不賣了。。所以你只能買別家的芒果,不過別家的芒果和之前你常去的那家的芒果不是一個產地的。然後你發現你之前得出的結論不適用了。所以你只能重新開始嘗試。你嘗試了這家店的每種類型的芒果之後,你發現,這個產地的芒果是:小的、暗黃色的更甜一些。
這時候呢假設你有朋友來家裡了,你擺了一些芒果給他們吃,但是你朋友說他並不是很在意芒果甜不甜,他更加喜歡多汁的芒果(這個朋友是不是很煩?)。又一次,你根據你的經驗,又嘗了所有類型的芒果,然後發現: 軟一點芒果比較多汁。
然後後來你又因為工作或其他原因要搬家了,在新的地方你發現這裡的芒果和家裡的芒果又不一樣,這裡 綠色的實際上比黃色的更甜一點。
然後你喜歡上了一個妹子,結果妹子竟然不喜歡芒果,妹子喜歡蘋果。所以你得去買蘋果,你之前所有實踐得出的芒果的知識都沒用了。你需要根據芒果的經驗,用相同的辦法重新研究一遍哪些因素會影響蘋果的口感。沒辦法,誰讓妹子長得好看呢。
編程
現在呢想像一下,你在寫一個程序幫助你挑選芒果(或者蘋果),你會寫到類似如下的規則:
if ( color is bright yellow and size is big and sold is vendor1 ): mango is sweet ;
if ( soft ): mango is juicy ;
等等。。。
你會利用這些規則來挑選芒果,甚至你也許會把這個規則告訴你的家人,你可以保證挑選出的芒果都是預期的結果。
但是,每當你要觀察一個新的屬性的時候,你只能手動更改這套規則。並且你需要了解所有繁雜的影響芒果質量的因素。如果這些因素足夠複雜,你很難手動分類所有類型的芒果而做出精確的規則。也許你的研究還可以獲得一個芒果科學的PhD(如果有的話)。
並且,也不是所有人都這麼閑來研究這個。
機器學習(ML)演算法
ML演算法算是普通演算法的一個進化。 允許程序可以根據提供的數據進行自動的學習,它可以使你的程序變得更"聰明"。
你可以從市場隨機購買一些芒果作為樣本(training data),然後列出所有芒果的屬性,比如顏色,大小,形狀,產地,經銷商,等等(features),以及 甜度,成熟度,是否多汁,等等(output variables)。將這些數據在機器學習演算法里運行(classification/regression),則ML演算法構建一個模型:芒果的屬性--芒果質量。
下次你再去買芒果,你就可以檢測一下芒果的屬性(顏色,大小等等)(test data),然後提供給ML演算法。ML演算法會根據模型(model)預測哪些芒果是甜的,較成熟的/或者更多汁。演算法內部使用的規則也許會類似於你之前手動寫的哪些規則(decision tree),也或者使用更複雜的規則,但是基本上這些對於用戶和使用者而言並不需要關心。
yoyo切克鬧,你現在再去買芒果就有很大信心了,而且並不需要關心這些挑選好的芒果的細節。而且更重要的時候,隨著時間你的ML演算法會自我提升(reinforcement learning),當預測錯誤的時候矯正自身,隨著讀取更多的training data預測也會越來越精準。但是,最流弊的一點在於,你可以利用相同的演算法而訓練出不同的模型(model),比如蘋果,橘子,香蕉,西瓜等等,隨便你想要訓練出什麼模型只要你高興就好
而且,這套演算法是為你學習的,你說屌不屌?
機器學習: 使你的演算法越來越聰明, 所以你就可以不用太聰明
翻譯自quora.
# 未完工
這就是一個很好的機器學習的栗子(認真)
我們定義一下寶寶學習:
"如果寶寶的認知在隨著家長的諄諄教誨和熏陶下,以表達能力或考試成績衡量下自我完善,我們稱這個寶寶在從家長的教育中學習。"(沃玆基·碩德, 2016)
而機器可以簡化為沒有智能但計算能力超好記性超好的寶寶:
「對於某類任務T和性能度量P,如果一個計算機程序在T上以P衡量的性能隨著經驗E而自我完善,那麼我們稱這個計算機程序在從經驗E學習。」
「A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T , as measured by P , improves with experience E」 (Mitchell, 1997)
(中文翻譯引用 @unknownknown 的答案)
用人話講,就是用數據E完成一個任務T,並且用性能測量P衡量如何:
- Task: 任務,包括但不僅限於分類(貓還是狗)、回歸(股價預測)、降維、轉錄(圖像-&>文字,語音-&>文字)、翻譯、合成和採樣(產生偽數據)、缺失數據的填補、去噪...
- Experience: 數據,有監督的或無監督的
- Performance measurement: 性能測量,比如錯誤率、準確率
噫,好像還是有點拗口,換成寶寶學習就明白了:
- Task: 任務,分類『分享』褒義詞/貶義詞,分辨『分享』應該使用/不該使用,分辨『分享』名詞/動詞/形容詞
- Experience: 數據,馬老師灌輸的分享的理念,涵蓋『分享』二字 (label=1) 的都算,不含『分享』二字 (label=0) 的也算;還是無特徵的數據,寶寶自己抓取了特徵:利益受到傷害
- Performance measurement: 性能測量,寶寶使用『分享』正確率...不斷糾正寶寶,作為的新的數據又輸入給寶寶,很快寶寶就可以抓取正確的特徵而收斂...
機器學習和寶寶學習最主要的區別,是寶寶是高智能,可以自適應地處理各種問題,機器需要模型,需要編程告訴它流程。模型可以看做是一種對數據的假設,所謂『學習』就是學習模型中的參數,而寶寶真的學到了分享。舉個栗子,就像從沒見過大象的盲人摸象(任務T),我先告訴盲人,大象不是一堵牆也不是圓柱體,是一堵牆帶四個圓柱體兩個尖銳物質和一根水管的東西(模型),然後帶他去大象館摸個夠(數據E)。盲人漸漸摸出了感覺,嗯,柱體的直徑和腰差不多粗,牆比人高,尖銳物質是堅硬的(學到了參數)。這個時候帶他去摸動物園——噫,這都不是大象啊。(性能測量P)
機器學習里駭人的部分往往都是模型,因為我對大象一無所知,才會構建各種各樣的模型和演算法(如果開個天眼直接告訴我大象的DNA序列或者發我一個博物君,就不用搞這些幺蛾子了)。還有一個好玩的定理叫『沒有免費的午餐定理』(No free lunch theorem for machine learning, Wolpert, 1996),其實就是沒有一個絕對優秀的機器學習演算法,要就數據論數據,就情況論情況。這才是機器學習研究工作者孜孜不倦的追求啊。
具體演算法太多啦,只推薦一個有趣的神經網路的回答:
如何簡單形象又有趣地講解神經網路是什麼? - 王小龍的回答
很多人都在談機器學習,無論是專業從業者還是業餘愛好者都必須弄清楚一個問題:什麼是機器學習?今天,我們想借用微軟亞洲研究院資深研究員閆峻博士撰寫的一個小故事《「小馬醫生養成記」》來回答這個問題,相信同學們看完以後對機器學習的認識會更加深刻哦~
————這裡是正式回答的分割線————
近年來,機器學習和大數據領域的突破進展使人工智慧急速回溫,訓練計算機模擬甚至實現人類的學習行為則是目前人工智慧領域最受關注的研究課題之一。很多人都難以想像,看似冷冰冰的機器如何能在短時間內學得一身本領的?其實,培養計算機具有一定的專業能力與培養一個專業人才的過程具有很多相似性。
計算神器,天資超凡
老馬有一個小兒子叫小馬,他非常可愛,且擁有超乎常人的記憶力,基本過目不忘。小馬的算數能力同樣驚人,各種加減乘除,非一般兒童可比。經過兒時的培養和精心呵護,老馬驚喜地發現自己的孩子還耳聰目明,聽寫考試成績永遠名列前茅,對所看到事物的辨識力也十分了得。老馬總是驕傲地和朋友們說:「我的孩子是個小天才,小小年紀已經學會好幾種語言了,我們全家出國旅遊,他都可以當個小翻譯了。」就在前幾天學校的下棋比賽上,小馬輕輕鬆鬆拿了第一名。於是,老馬決定,要好好培養這個孩子。
機器學習小課堂
計算機與人類相比有很多先天的優勢。比如記憶能力、基本運算的速度等方面都是正常人類所無法比擬的。隨著人工智慧技術的發展,計算機在感知計算如語音識別、圖像識別等領域的能力也已經開始趕超人類。在基於大數據的機器翻譯,以及基於搜索演算法與增強學習的棋類競技上,計算機也表現出了強有力的競爭力。於是,人們期望計算機能做的更多、更好。雖然計算機有先天的優勢,但自身仍有不足。在努力了解計算機並幫助這個 「天才兒童」 成長的過程中,我們是否可以利用一個或多個具體的應用領域來更好地認識「他」並更有效地挖掘「他」的潛力呢?因此,我們計劃從一個小目標開始,看看計算機能不能成為一名稱職的人類醫生助手,甚至未來是成為一名醫生。
知識工程,美中不足
小馬果然沒有辜負家人的期望,以優異的成績考入了全國知名的醫學院。在學校里,小馬認真閱讀了大量書籍和文獻,知識積累越來越豐富。眼看大學就要畢業了,小馬被派到一所知名醫院進行實習。憑藉自己的知識積累,小馬決定一展身手。可是當小馬到了醫院見到了形形色色的患者後,他發現書本里學到的知識有點不太夠用。患者對癥狀的含糊描述讓他不知所措。而且很多患者的現實情況和書本里講的經常不太一樣,總是多出或缺少幾個他沒見過的特殊癥狀表現,所以小馬沒辦法用他在學校里學到的知識嚴謹的推理出合理的結論給患者。這讓小馬感覺挫敗,他覺得自己的知識零散,不靈活,於是他決定回到學校繼續讀研深造。
讀研期間,小馬勤學好問,把他遇到過的、不知道如何解決的問題歸納總結起來,嚮導師詢問,學習到了很多書本里學不到的新知識。他意識到:要成為一名好醫生,不能光靠書本知識,經驗也很重要。研究生畢業後,小馬如願以償加入到他實習時的這家知名醫院成為了一名醫生,並開始積累他的臨床經驗。
機器學習小課堂
知識工程是早期人工智慧技術關注的焦點。知識的提取、知識的表示與推理曾被認為是人工智慧的基礎。但在應用的過程中,人們逐漸發現高質量專業知識抽取的成本很高,也很難做到完備,知識的表示也很難做到易用的語義層面,這一切都給知識推理帶來了巨大的挑戰。這些挑戰所帶來的後果就是人們發現在很多應用領域單純依賴於知識工程的方法成本高,也難以達到預期的效果。因此,人們開始對知識工程產生質疑,甚至對人工智慧產生質疑。
另一方面,隨著統計機器學習的發展以及計算機對大數據處理能力的提高,人們開始重新解讀人工智慧。雖然知識工程遇到了很多問題,但大批科學家還是堅信計算機的智能不能單純依靠統計學習,它離不開前人知識的總結。在微軟亞洲研究院,針對知識圖譜的建立,我們研究了一系列知識挖掘工具,並定義為Knowledge Mining API。針對知識的語義表示,我們研究並開放了 Microsoft Concept Graph等能夠在語義層面表達知識的方法。所有的這些努力都是為了以更低的成本建立更完備、更易於計算的知識圖譜來「武裝」我們的計算機。
統計學習,返璞歸真
小馬的勤奮讓人動容,除了每天出診,他還閱讀了大量科室內之前的治療記錄,他的學習速度讓其他醫生望塵莫及。經過一段時間的拼搏,小馬已經是一名頗有經驗的醫生了。對於患者的診斷,他有了自己的心得甚至可以稱之為感覺。很多時候小馬像條件反射一樣,憑感覺就能快速給出判斷和治療方案,一般的患者小馬都能輕鬆診斷。慢慢地,小馬覺得他已經不需要按照醫學院里學的那些條條框框工作了,他的經驗和直覺足以應對。
然而有一天,科里發生了一起醫療事故:有一位資深醫生根據自己經驗治療的一名患者出了問題,「人走了」,患者家屬要打官司。於是醫院決定,再有經驗的醫生在診斷之後也要有理有據,可以給出診斷理由。
這件事對小馬觸動很大,他成為科室里第一個做出快速反應的人。因為小馬在學校里學習的知識很有邏輯性,所以他很快地把自己的經驗和之前的知識做了研究,找出了其中的核心聯繫。同時,令人驚喜的是,小馬發現,當他的理性知識結合他的感性經驗後所做出的診療結果比以前更加有效,這也讓他加速成為了一名令人信服的專家醫生。同時,他的經驗也給書本知識進行了很大的補充。這些收穫讓小馬思考了一個新的問題:「我從事了這麼久的臨床治療,獲得了一些書本里沒有的經驗,這本身就是一種創新。除了把它們總結下來,我能不能有更大的創新來推動醫學的進步呢?」
機器學習小課堂
基於大量數據的統計機器學習包括深度學習,近年異軍突起,尤其是深度學習。由於對複雜非線性模型的逼近能力與對數據的自適應能力,因此深度學習在很多應用領域表現優異,在很多應用中深度學習得出的結論甚至可以與人類專家的決策相媲美。但人們也陸續發現了一些深度學習的不足之處——一個突出的問題就是完全參數化模型導致的結果具有不可解釋性。另外,很多科學家還在想的一個問題是,既然人類的進步總是站在前人的肩膀上,那麼機器學習為什麼一定要從零開始,是否可以把前人的經驗和知識利用起來,融入到機器學習的過程中?於是,知識工程與統計機器學習的結合引起了越來越多的關注。
目前針對知識與統計機器學習結合的相關研究主要集中在把知識表示為統計學習目標函數的歸一化項或把知識當作輸入數據表示的擴展。當然還有一些更加簡單粗暴的方式,如多個不同獨立模型加權後的共同決策、知識圖譜當作統計學習的後處理過濾器等等。各種早期嘗試都讓我們看到了二者結合帶來的進步,但目前還沒有顯著的幫助。這個方向是我們當前研究的一個重點。
創新野心,假設求證
人人都在談創新,可創新談何容易,該從何下手呢?忽然,小馬想起了讀研時導師對他所選擇課題的建議「大膽假設,小心求證」。對,創新的方式很多,就從「大膽假設,小心求證」開始,小馬決定。「以前學到的知識可以讓我進行理性地推理,積累的經驗可以讓我進行感性地決策。二者的結合讓我成為了一名專家醫生。創新要基於我的知識和經驗,但不能局限於此,一定要有所超越!」小馬心裡想到。
於是小馬在各種病症與診斷用藥之間尋找聯繫,基於他的知識和經驗尋找新的可能性。小馬常問自己的一句話是「這個病人為什麼不能那樣治呢?」當提出這樣的問題後,小馬查找大量資料,尋找臨床證據,當證據相對充分時,他便提出臨床實驗請求。終於功夫不負有心人,小馬一個大膽的假設被多個病例所驗證。因為此事,小馬成了院里知名的具有極強科研能力的專家醫生。這一切,也讓小馬的父親倍感驕傲。
再來談談老馬。老馬是一名大學教授,主攻計算機領域的機器學習理論。有一次,老馬對小馬說:「孩子,爸爸的演算法研究在應用時就像在治病,具體問題是病,演算法就是葯,葯沒有萬能的,演算法也一樣。」小馬無意間想到了和父親的那次談話,他突然意識到,現在各個領域都在講跨界是有道理的,「我們行醫也可以借鑒一些其他領域的知識,觸類旁通可以得到更多的靈感來激發我的創造力。」
機器學習小課堂
無論是知識工程還是統計機器學習,如今人們開始願意相信計算機的理性推理和感性決策能力。但即使二者結合,人們還是無法預期計算機是否將會具有創新能力。想想人類的創新,很多情況是基於兩點:一是靈感,這是具有很強隨機性的東西;另一個是聯想,就是觸類旁通。關於靈感,人類的很多創新靈感是在理性推理與感性認知後的一種假設檢驗,即先想到「能不能這樣」,然後再去求證。那麼計算機是否可以模擬這一過程呢?
由於靈感即假設的某些隨機性,我們開始重新關注近期並沒有被重視的隨機演算法。比如遺傳演算法,可以通過數據向量基因表示的遺傳變異得到一些新的假設,然後利用大數據搜索技術尋證。由於計算機的超強記憶與快速搜索能力,這條路是否可以讓計算機具有一定的創新力?從另一個角度來看,這種假設檢驗的思路也是對現有大部分統計學習和知識推理的一種有效補充。
統計學習是基於大數據的,也就是說,可以從大量數據中學到統計規律。知識圖譜的建立往往也是基於大數據的,那麼能解決的問題也就主要集中在數據分布的前端,往往忽略了長尾。比如,有一個罕見疾病在不經意間被某些治療手段治好了,但這種案例很少,也容易被人忽視,那麼大數據觀點是很難建立出相應的模型和知識圖譜的。但如果通過假設檢驗的方式,一旦假設被建立,檢驗過程就是去尋找相應的證據,哪怕相關數據量很小,也可能被捕捉。所以,我們的一個長線研究課題就是這種基於假設檢驗的機器「創新」。
跨界人才,觸類旁通
小馬從小愛好廣泛,歷史、地理、物理、化學樣樣精通。然而,小馬以前的這些知識所在領域分散,看起來相互之間好像沒有什麼關聯。但自從在和父親的談話中意識到跨領域思考可以觸類旁通的道理以後,小馬遇到各種事情都會想一想:是否在其它問題中學習到的道理可以被應用。
果然,在一次診療過程中,小馬發現病人所面臨的情況和治理城市污染的道理相似。表面上看到各個排污企業都安裝了環保設備,但因為使用成本過高,很多企業沒有真正投入使用,所以污染依舊。同樣的道理,這個病人雖然使用了看上去最好的藥物,但這些藥物會消耗正常細胞,導致身體抵抗力下降,所以身體可能會出於本能主動阻止藥物發揮應有的作用。
於是,小馬果斷調整了治療方案,讓病人獲得了更好的療效。同時,在和病人溝通的過程中小馬發現很多患者聽不懂他關於病情的解釋,但如果根據患者的知識背景用一些比喻的方式解釋,患者很快就會接受診療建議。小馬想到,這同樣也是運用一個領域的知識來解釋另一個領域的問題,只要道理是一樣的。
從此以後,小馬養成了一個習慣,就是遇到任何問題都會聯想到他在生活、學習和工作中遇到的其他領域可以觸類旁通的情景。很快,小馬的診療技術進一步突飛猛進,也越來越受患者的喜愛。
機器學習小課堂
人類的很多創新來自聯想。另外,人的舉一反三地能力也不同程度地依賴於聯想。聯想是什麼?從我們研究的觀點看,可以片面理解為從某個未被解決的具體問題搜索到已被解決或已被部分解決的類似問題,這個類似問題的解決方案或背後隱藏的道理可以被應用來解決當前問題。這種聯想往往是跨領域的。
回到當前研究的熱點領域,在統計機器學習中,transfer of learning(遷移學習)就是一種機器通過聯想解決問題的途徑。從知識圖譜的角度看,要實現機器的聯想能力,首先要建立一個跨領域的知識圖譜。現今所有常見的知識圖譜一般都不會為「父親」和「大山」建立關係,也不會為「生活」與「巧克力」建立關係。但在人類的常識體系中,他們是有一定聯繫的,也是經常會被人們聯想到的。當前,我們研究的一個早期嘗試,就是建立這種跨領域的知識關係圖譜,以此賦予機器一定的聯想能力。
情感注入,人性溝通
小馬在事業上的一帆風順並不能掩蓋他自身的一些問題。由於名氣越來越大,找他看病的患者也越來越多,他發現自己很多時候對患者沒那麼有耐心。很多患者反映:和小馬醫生交流時,他總是面無表情,語言生硬。小馬的一個很大優點就是發現問題盡量馬上解決,他意識到,除了給患者治好病,還要讓患者滿意。
於是,他開始學習各種溝通技巧。慢慢地,小馬能夠從與患者的溝通中體會患者的心理需求,能夠體會患者的喜怒哀樂,並能察言觀色給患者體貼的呵護與治療。他還開始主動關心每一位患者,並提出個性化的建議。不僅治病,小馬還會給出防病、養生的建議。此後,小馬成為了一名真正受歡迎並具有創造力的醫學專家。
機器學習小課堂
在關注計算機硬能力的同時,為了更好地讓機器與人類溝通並服務於人類,我們也要關注計算機的軟能力。這包括用戶個性化建模的能力、情感理解與表達的能力等等。我們關注的另一個重點是主動模型與被動模型的區別。目前我們建立的很多計算機服務都是被動模型,也就是說以有求必應為目標。但很多情況下主動地提醒、建議在很多實際應用中是非常必要的。然而主動模型的度很難把握,多了會煩、少了會想。因此,關於主動模型的研究也是我們當前研究的一部分。
時代人才,綜合素質
小馬的成功不是偶然的,其中付出了巨大的努力。他天資聰慧,具有某些如記憶、算數天分這樣的超常能力,經過培養後感知能力超群,無論聽還是看。他勤奮好學,對書本有很強的學習能力,並快速建立了自己的知識體系。他學習迅速,可以快速從大量案例中積累經驗。更了不起的是,他能很好地把經驗和書本知識相結合。
之前一直有親戚擔心小馬天資過於聰慧。「上帝給了你超群的能力,為你開了很多門,就會給你關上幾扇窗。你的創造力可能不如別人,可能沒那麼強的聯想能力,也可能會自閉,和別人的溝通可能會出問題」,各種質疑曾經頻繁出現,但小馬一次次證明了自己。他比別人更細心,這讓他的大膽假設更容易被驗證,這就賦予了他超乎常人的創造力。通過知識體系的建立,小馬擁有自己超群的聯想能力。而他的細緻讓他更容易察言觀色每一個人,也賦予了他更強的情感溝通能力。在這樣一個日新月異的時代中,小馬的綜合素質能夠使他脫穎而出,成為最優秀的明日之星。
————這裡是回答結束的分割線————
以上回答摘選自微軟研究院AI頭條,機器學習六步曲--「小馬醫生」養成記。
感謝大家的閱讀。
本賬號為微軟亞洲研究院的官方知乎賬號。本賬號立足於計算機領域,特別是人工智慧相關的前沿研究,旨在為人工智慧的相關研究提供範例,從專業的角度促進公眾對人工智慧的理解,並為研究人員提供討論和參與的開放平台,從而共建計算機領域的未來。
微軟亞洲研究院的每一位專家都是我們的智囊團,你在這個賬號可以閱讀到來自計算機科學領域各個不同方向的專家們的見解。請大家不要吝惜手裡的「邀請」,讓我們在分享中共同進步。
也歡迎大家關注我們的微博和微信 (ID:MSRAsia) 賬號,了解更多我們研究。
普林斯頓大學機器學習方向博士,大數據建模公司普林科技CTO。
樓上的回答都偏學術一些,以下將儘可能通俗易懂地講一講怎麼理解「機器學習」。
和大數據一樣,機器學習(MachineLearning, ML)是一個熱門而又有略有誤導性的名詞。
字面上它讓不禁讓人聯想到一群機器人排排坐上自習的科幻場景,然而實際上它指的是讓計算機具備像人一樣的學習能力的高(qi)端(ji)技(yin)術(qiao),進而從堆積如山的數據中尋找出有用的知識。
聽起來有些不可思議,真的有這種黑科技嗎?
計算機的正確打開方式難道不是餵給它一串命令,然後愉快地看它乖乖執行么?
除了0和1啥也不認識的獃獃計算機,怎麼還能像人類一樣「學習」了呢?
嘿嘿,這個還真可以有。別急,且容我慢慢道來。
在討論計算機如何學習之前,不妨先來看看我們人類是如何學習的。
人類的學習按邏輯順序可分為三個階段:輸入,整合,輸出。大家都多多少少學過英語,我就拿學英語來舉例好了。
在入門時我們都逃不出背單詞的苦海,不積累一定的辭彙量後續學習都無從談起,這是輸入階段。
然而很快我們就會發現,即使背完一本牛津大辭典也是沒法和歪果仁愉快交流的。
我們必須學習語法,學習一些約定俗成的習慣用語,才能知道如何把單片語合成地道的句子,這便是整合階段。
最後,有辭彙量作基石,又有了語法規律作為架構,我們就能在特定場合用英文來表達自己的想法。這是輸出階段,也正是我們學習英文的初衷。
學習其他東西也是一樣,概括來說,都要經歷從積累經驗到總結規律,最終靈活運用這三個階段。
對此,我們完全可以對人類的學習給出如下定義:
人類的學習是一個人根據過往的經驗,對一類問題形成某種認識或總結出一定的規律,然後利用這些知識來對新的問題下判斷的過程。
毫不誇張地說,學習能力絕對是人類打猩猩時代起憋出的大招,在它的幫助下人類一舉登頂食物鏈之巔。
之後經過了數千萬年的自然選擇,學習能力弱的要麼被環境淘汰要麼被同類坑害,都死絕了。
學習這套流程已深深寫入了我們的DNA里,一代比一代玩得溜。
故事到這裡似乎直指人類稱霸宇宙的happy ending了,然而我們還忽略了一件事,就是人類的腦容量和壽命畢竟有限。
即便聰明如愛因斯坦,發現相對論前前後後也要耗費數十年。即使再有更聰明的人出生,也得從1+1abc學起,達到愛因斯坦的水平小半輩子也過去了。
由於這個限制,縱使人類有超級的學習能力,還是很難讓現有知識爆炸性增長的。
幫助人類突破這個瓶頸的,正是計算機。
人類學習能力強,但記性差,反應慢,還容易壞。計算機雖呆,但容量大,計算快,還穩定
怎樣融合這兩者的優勢呢?
顯然最簡單省事的方法就是手把手教會計算機學習了~(是誰說不如植入晶元讓人腦變電腦的,你出來,我保證不拿你去做實驗(微笑臉))
那麼,應該怎樣教會計算機學習呢?
人類可以從自己獲得的經驗中學習知識,然而計算機沒法讀書萬卷也做不到閱人無數,只能從我們投餵給它的數據中學習規律了。我們當然希望計算機學到規律之後立馬智商爆表,分分鐘就能自己用新知識獨當一面啦。
不難想像,一旦這個設想成為現實,計算機就能以類似人類的方式解決很多複雜而多變的問題。計算機解決問題與人類思考的經驗過程將會趨同,不過它能考慮更多的情況,執行更加複雜的計算,從而產生及其可觀的效益。
那麼問題來了,怎麼指導計算機從數據中總結規律呢?
幾十年來,很多計算機科學和應用數學界的學者們總結出了不少教會計算機的辦法,它們就是各式各樣的機器學習演算法。它們是數據科學家們胯下的挖掘機,擔負著將海量數據化腐朽為神奇的使命。
至此,我們終於可以對機器學習下這樣一個定義了:機器學習是指用某些演算法指導計算機利用已知數據得出適當的模型,並利用此模型對新的情境給出判斷的過程。
由此看來,機器學習的思想並不複雜,它僅僅是對人類生活中學習過程的一個模擬。
而在這整個過程中,最關鍵的是數據,是數據,是數據!重要的事情說三遍。
如果說模型是我們希望造出來的火箭,那數據就是它的燃料。數據量直接決定了我們的火箭只是個概念玩具,還是能夠載人登月,還是可以飛出太陽系探尋智慧生物。
這也是機器學習和大數據是如此密不可分的原因。不得不說在這一點上計算機是遠遠比不上人腦的。
人類學習能力的可怕之處在於,能夠通過極其有限的樣本歸納出泛化能力極高的準則。
要知道,AlphaGo經過和自己左右互搏數千萬局才達到現今的棋力,而和他不相上下的李世石,窮其一生打譜恐怕也到不了這個數目的百分之一。
正所謂「No data,no intelligence」。事實上,只要數據量足夠大,機器學習演算法的選擇反倒沒有那麼重要了。
打個比方的話,數據和演算法之於計算機好比閱歷和智商之於人類。豐富的閱歷所帶來的智慧,自然不是靠一點小聰明就能駕馭得了的啦。AlphaGo就是一個智商20棋齡10000年的老妖精,打敗李世石主要靠的是經驗。
機器學習根據所處理數據種類的不同,可以分為有監督學習,無監督學習,半監督學習和強化學習等幾種類型。
實踐中應用較多的也就是前兩種。
所謂監督學習,就是說數據樣本會告訴計算機在該情形下的正確輸出結果,希望計算機能夠在面對沒有見過的輸入樣本時也給出靠譜的輸出結果,從而達到預測未知的目的。就像一個學生通過做多套高考模擬卷並訂正答案的方式來提高高考成績。在這種情形下,數據就像是監督計算機進行學習的教師,故而得名。
根據輸出結果是離散值還是連續值,監督學習可以分為分類問題和回歸問題兩大類。他們在文字、語音、圖像識別,垃圾郵件分類與攔截,網頁檢索,股票預測等方面有著廣泛應用。
而無監督學習,是指數據樣本中沒有給出正確的輸出結果信息。這就像做了好多套沒有答案的模擬卷,最後還要去高考。聽上去是不是既驚悚又不靠譜?
但其實做沒有答案的試卷也是能學到很多有價值的信息的,比方說哪些題出現頻率高,那些題愛扎堆考,等等。無監督學習希望從數據中挖掘的正是這一類信息,常見的例子有聚類,關聯規則挖掘,離群點檢測等等。
知乎專欄鏈接:http://zhuanlan.zhihu.com/p/20791490
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
拿買西瓜舉例
一個人買西瓜買的多了,就會接受大量的西瓜數據
例如敲西瓜的聲音、西瓜外皮顏色、紋路等
從而生成了一個西瓜模型(敲擊聲音清脆、紋路清晰、顏色鮮綠的瓜會比較甜)
下次遇到一個新的西瓜,這個人就可以通過西瓜模型來判斷出這個瓜甜不甜。
- 大量西瓜數據 + 大腦學習 = 西瓜模型
- 遇到一個新西瓜 + 西瓜模型 = 判斷出新西瓜甜不甜
由以上總結一個極度簡化版的機器學習過程
給計算機大量的數據
計算機通過學習演算法生成一個模型
在面對新的情況時,模型會給出相應的判斷。
大量數據 + 學習演算法= 模型
新的一條數據 + 模型 = 機器的判斷
這大概就是機器學習
f(x)=y
機器學習就是得到f
其實就是擬合一個或者多個函數來解釋觀測到的一些現象。
看起來神秘其實是因為擬合過程很難用現有的理論知識來解釋。謝邀。
一個人有符合當代社會發展的三觀,就會為自己、為別人帶來正向的收益。
機器沒有三觀,站在我們的視角看,它不會痛不會爽不會恐懼不會欲求,不像我們那樣被基因支配著、被社會網路支配著表層認知和潛意識。
但是我們可以給它設定三觀,設定什麼是好的什麼是壞的(目標函數),設定什麼是可行的什麼是不可行的(約束條件),這樣就構成了一個最優化問題。各種類型的最優化問題有相應的一些解法,有興趣可以去看凸優化的書。這些解法以演算法的形式表現給機器看,機器照著做。那麼,機器按照人們的設定去追求夢想的過程,就叫做機器學習。
只有好的三觀和方法,是不夠的,還要有好的採樣。在一個小地方小環境裡面,一樣正的三觀,付出同樣多的努力,你的成就和格局相對是非常有限的。所以,要見多識廣,讀萬卷書,行萬里路,閱萬重人。
總結三要素。
1. 三觀。決定你走向何方。
2. 方法。不斷反省優化自己的方法,提高靠近目標的效率。
3. 採樣。既要廣,又要密。不一樣的採樣看到的是不一樣的世界。
我這是在教做人還是做機器學習?
上面有答友說的很詳細了。。。
我用最簡單的例子來說吧
1)百度的識圖(圖像檢索)
2)淘寶的給你推薦商品
3)各種各樣的圖像識別(比如前些日子的微軟年齡)
機器學習,兩部分
首先是「機器」,這個機器一般其實指的就是「電腦」
其次學習,這個學習也分為兩部分,一是「數據」而是「演算法」
其實和人是一樣的,比如你父母教你認識「打棒球」這個體育運動的時候。
肯定要給你看打棒球的圖片或者視頻,或者需要跟你描述這個運動
這些就是「數據」
至於說「演算法」的話,描述本身就是一種演算法。比如他們告訴你「拿著球棒,這樣那樣揮舞擊球的就是棒球」。
這樣,在沒有他們幫助的情況下,再給你一個新的打棒球的圖片,你也認出這是打棒球
=====
機器學習其中的一個門類也是一樣的道理
首先輸入數據
通過預先建立好的一套框架,訓練出一個模型
對於一個不在訓練數據集里的輸入
我們將之和模型做一系列的操作
然後得到一個結果,這個結果可以是一個概率,也可以是一個二值(0,1)
從而幫助我們分析這個測試輸入
上述只是最簡單的一個分類的流程。
=====
機器學習還可以干很多其他的事情
但是究其核心,最終總是可以歸類到「分類」和「擬合」上面去
要注意一個最核心的問題
機器學習必須要有樣本,如果沒有訓練數據,無從談起什麼學習。
所以現在越來越火的什麼大數據、數據挖掘之類的東西。
正是因為數據量已經太大,使得人類無法處理了。所以才用計算機在數據之間去尋找隱藏其中的規律
首先機器學習分為:監督式學習,非監督式學習,半監督學習和增強學習
下面先講監督式學習:
就是 先給給機器一堆數據(text data),並給這些數據貼上label,告訴機器這是雞排豬排還是滷味
然後engineer結合algorithm(包括決策樹,神經網路,支持向量機,最近鄰居法,native bayesian classification ,最小二乘法,邏輯回歸 )寫出一個program到機器裡面。
並且告訴機器「以後再遇到數據就往這個公式裡面套哦 記住了沒」
然後機器說「哦 」
半監督非監督和增強等有空更
這個圖解做的特別好 特 別 的 好 要記得看
圖解機器學習
10.14更:
講下非監督式學習:
非監督式學習的系統的text data不需要預先貼上標籤
總結過去,預測未來
推薦閱讀:
※如何評價聚類結果的好壞?
※為什麼交叉熵(cross-entropy)可以用於計算代價?
※ICLR 2017 有什麼值得關注的亮點?
※如何用簡單易懂的例子解釋條件隨機場(CRF)模型?它和HMM有什麼區別?
※在 Caffe 中如何計算卷積?