機器學習是人工智能在近期最重要的發展之一。機器學習的理念是,不將智能看作是給機器傳授東西,而是機器會自己學習東西。這樣一來,機器就可以直接從經驗(或數據)中學習如何處理復雜的任務。
即使是相對簡單的機器學習算法也可以學習如何區分貓和狗的圖片。
隨著計算速度和用于編程的算法的巨大進步與發展,機器學習成長迅速。由此產生的算法對我們的生活開始產生重大影響,而且它們的表現往往勝過人類。那么,機器學習是如何工作的呢?
從經驗中學習
在機器學習系統中,計算機通常是通過在相同任務的大型數據庫中進行訓練,然后自己編寫代碼去執行一項任務。其中很大一部分涉及到識別這些任務中的模式,然后根據這些模式做出決策。
舉個例子,假設一家公司正要招聘一名新員工,在招聘廣告登出之后有1000個人申請,每個人都投了簡歷。如果要親自一個個篩選,這實在太多了,所以你想訓練一臺機器來完成這項任務。
為了做到這一點,你需要把公司過往的許多應聘者的簡歷都記錄下來。對于每一份簡歷,你都有記錄表明這個人是否最終被聘用了。為了訓練機器,你拿出一半的簡歷,讓機器通過學習這些簡歷最終是否成功地申請到了一份工作來找出其中的模式。
這樣一來,當機器收收到一份簡歷時,它就可以對這個人是否適合被雇傭做出判斷。訓練完畢,就可以接著用另一半簡歷來對機器進行測試。如果它的成功率足夠高,也就是機器做出正確判斷的概率夠高,那么你就可以安心地讓機器根據一個人的簡歷來判斷他是否適合被聘用。在任何階段都不需要人的判斷。
具體細節
為了更清楚地理解機器學習的過程,我們將以開發能夠識別手寫數字的機器為具體例子來考慮模式識別的問題。這樣的機器應該能夠準確識別一個字符所代表的數字,而無論它的書寫格式如何變化。
數字識別的過程分為兩個階段。首先,我們必須能夠將手寫數字的圖像掃描到機器中,并從這張(數字)圖像中提取出有意義的數據。這通常是通過主成分分析(PCA)的統計方法實現的,這種方法會自動提取圖像中的主要特征,例如圖像的長度、寬度、線條的交點等。這個過程與求解矩陣的本征值和本征向量的過程密切相關,也與谷歌用來在萬維網上搜索信息的過程非常相似。
然后,我們想訓練機器從這些提取的特征中識別數字。一種非常主流的用來訓練機器的方法是神經網絡。神經網絡算法的最初靈感來源是我們認為的人類大腦的工作方式,但并不嚴格地建立在我們認為的人類大腦的工作方式之上。
首先要創建一組“神經元”,并將它們連接起來,它們可以相互發送消息。接下來,讓神經網絡去解決大量已經知道結果的問題,這樣做能讓算法“學習”到應該如何確定神經元之間的連接,以便能成功地識別出數據中的哪些模式導致了正確的結果。
這種神經網絡的一個早期例子是一種叫做感知機的單層系統,人們用它來模擬單個神經元。感知機的概念是由Frank Rosenblatt在1962年提出的,它的典型結構如下圖所示:
向感知機輸入n個數字X1、X2......Xn。然后將每個Xi乘以一個加權wi,并將所有這些乘積相加,得到它們的和
w?X1+w?X2+...+wnXn
如果這個和大于某個閾值C,則返回1,其他情況則返回0。也就是說,如果
w?X1+w?X2+...+wnXn-C > 0,
那么,感知機返回1;如果
w?X1+w?X2+...+wnXn-C ≤ 0,
那么感知機返回0。
對于數字識別問題,數字圖像的提取特征就是輸入Xi,感知機的判斷是,這個數字是3還是4。訓練感知機的過程包括要找到合適的加權wi和閾值C,使得感知機能夠始終如一地識別出正確的數字。要做到這一點,需要謹慎使用基于統計的數學優化算法。
舉例:數字識別
例如,假設我們僅從圖像中提取兩個特性:X1和X2,其中X1可能計算圖像中直線的數量,X2能計算圖像中線條交叉的次數。
現在,每個手寫數字(比如3或4)的圖像都有兩個數字來描述,因而可以定位在一個坐標系中。由于數字3通常沒有直線段,也沒有交叉線,它的圖像很可能對應于坐標系中接近 (0,0) 的點。數字4有三條直線段和1個交叉點,它的圖像可能在點 (3,1) 附近。
對于給定的w?、w?和C,感知機中的和是
w?X1+w?X2-C,
讓這個式子等于0就定義了一條直線。如果感知機能用訓練的圖像找到w?、w?和C的值,使得這條直線將所有對應于數字3的點與所有對應于數字4的點分隔開來,那么,它也就有很大的概率能夠正確識別出新的數字圖像。如果存在這樣一條直線,則稱數據是線性可分的。
假設圖中紅色的點來自代表數字3的圖像,藍色的點來自代表數字4的圖像。如果算法使用C=2,X1=X2=1,則加權后的和等于0對應于圖中的直線(w?+w?-2=0)。對于藍色的數據點,加權和大于零,對于紅色的數據點,加權和小于零,所以算法總是會給出這個數據集的正確答案。
如果數據點不能被一條直線分割,也就是說,數據不是線性可分的,那么可以把這些點擴展到一個更高的維度,并寄希望于在更高維空間它們是線性可分的。一個非常簡單的例子是,你可以將圖中的點拖拽出屏幕到第三個維度,拖拽的距離對應于它們到點 (0,0) 的初始距離。但是,通常會使用的是更復雜的方法。當然,如果從原始數據中提取的特征是兩個以上,那么就可以在更高維度上使用類似的方法。
感知機方法也可以用于對貓和狗的圖像進行分類:
隨著訓練數據的增加,算法會更新其選擇的直線,也就是會改變常數C和加權w?、w?的數值。
神經網絡和深度學習
簡單的感知機可以被訓練來完成許多簡單的任務,但很快就會達到極限。顯然,將許多感知機耦合在一起就可以進行更多的計算,但這一發展必須等待更強大的計算機的出現。當多層感知機耦合起來形成一個神經網絡時,這一重大突破就出現了。這種神經網絡的典型結構如下圖所示,它包括輸入層、隱藏層和輸出層。在這種情況下,輸入會組合起來以觸發感知機的第一層神經元,由此產生的輸出也會組合起來以觸發下一層神經元,最后,這些組合起來給出最終的輸出。
層數越多,神經網絡就越“深”。然后,這樣一個神經網絡就會通過為上面的神經元之間的每個連接分配加權而得到訓練。這個過程是為了模仿大腦神經通路強化或衰減的方式。深度學習描述了訓練這樣一個神經網絡的過程。
事實上,神經網絡算法之所以可能實現,是由新的數學優化算法的發展與強大的計算能力結合的結果。在為神經網絡尋找合適的加權wi的過程結束之時,我們得到了一個黑箱,它可以非常快速地運行并做出“決策”。
不同的機器學習方法
神經網絡學習的過程有多種形式。
在監督學習中,用戶會事先提供一組成對的實例,也就是輸入和輸出。然后,學習的目標是找到一個給出的輸出能與實例匹配的神經網絡。通常,用來比較神經網絡的輸出與實例的輸出的方法是計算兩者的均方誤差;然后對網絡進行訓練,讓這一誤差對所有訓練數據集最小化。這種方法的一個非常標準的應用是在統計學中使用的曲線擬合,它對手寫數字和其他的模式識別問題都有很好的效果。
在強化學習中,數據不會由用戶事先給出,而是由神經網絡控制的機器與環境交互作用時生成的。機器會在每個時間點上對環境執行一個操作,由此生成一個觀察結果,以及這個操作的成本。然后訓練這個神經網絡去選擇那些將總體成本降至最低的操作。在許多方面,這個過程類似于人類(尤其是小孩子)學習的方式。
近年來,機器學習的數學算法有了很大的發展。卷積神經網絡(CNNs)就是一種令人興奮的、重要的新發展,它是對那些將圖像處理技術與深度神經網絡結合的方法的擴展,可以應用于人臉識別,甚至可以用來檢測情緒,現在還被用于包括醫學診斷在內的許多其他領域。
為了更好地學習下國際象棋,AlphaZero使用了深度卷積神經網絡。它的訓練是通過強化學習的方法,讓機器在24小時內與自己對弈70萬局。過程中采用一種通用的蒙特卡羅樹搜索(MCTS)算法來分配加權。在學習下圍棋和日本將棋時采用的也是類似的方法,而且在每種情況下都達到了相似的水平。這是非常了不起的!
機器學習進展迅速,在更快的訓練算法和越來越多的數據的驅動下,發展更復雜、更深層神經網絡的趨勢越來越明顯。但或許我們需要思考的問題是,把可能改變生命的決定(如醫學診斷)留給機器,這樣做安全且合乎道德嗎?
-
神經網絡
+關注
關注
42文章
4771瀏覽量
100715 -
人工智能
+關注
關注
1791文章
47183瀏覽量
238260 -
機器學習
+關注
關注
66文章
8406瀏覽量
132565
原文標題:什么是機器學習?
文章出處:【微信號:IEEE_China,微信公眾號:IEEE電氣電子工程師】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論