人工智能、机器学习、深度学习和神经网络的区别
人工智能
背景:人工智能最初可以追溯至1956年,當時多名計算機科學家在達特茅斯會議上共同提出了人工智能的概念。在隨后幾十年中,人工智能一方面被認為是人類文明未來的發展方向,另一方面也被認為是難以企及的夢想。實際上,直到2012年之前,情況一直如此。
定義:人工智能(Artificial Intelligence,AI)是機器模擬人的意識和思維,讓計算機具備人類擁有如感知、學習、記憶、推理、決策等的能力。細分為:
- 機器感知:機器視覺、NLP
- 學習:模式識別、機器學習、增強學習、遷移學習等
- 記憶:知識表示
- 決策:規劃、數據挖掘、專家系統等
在機器上實現人工智能
智能的三個核心部分,學習,存儲,應用,在自然界中有自然界的實現方式。
消費級人工智能產品:谷歌 Assistant、微軟 Cortana、蘋果 Siri、亞馬遜 Alexa、阿里的天貓精靈、小米的小愛同學。
人工智能的先鋒:
- Geoffrey Hinton:多倫多大學教授,谷歌大腦多倫多分部負責人,人工智能領域的鼻祖,他發表了許多讓神經網絡得以應用的論文,激活了整個人工智能領域。他還培養了許多人工智能的大家。如LeCun就是他的博士后。
- Yan LeCun:紐約大學教授,Facebook人工智能研究室負責人,他改進了卷積神經網絡(CNN)算法,使CNN具有了工程應用價值,現在CNN依舊是計算機視覺領域最有效的模型之一。
- Yoshua Bengio:蒙特利爾大學教授,現任微軟公司戰略顧問,他推動了循環神經網絡(RNN)算法的發展,使RNN得到了工程應用,用RNN解決了自然語言處理中的問題。
機器學習:實現人工智能的方法
背景: 機器學習的概念來自于人工智能發展的早期。隨后多年中,基于算法的方法包括決策樹學習、歸納邏輯編程、聚類算法、強化學習,以及貝葉斯網絡等等。正如我們所知,這些技術最終都未能形成通用人工智能,而早期的機器學習方法甚至也沒有帶來狹義人工智能。
機器學習 (Machine Learning) 是近 20 多年興起的一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等多門學科。
定義:機器學習是一種統計學習方法,計算機用已有的數據得出某種模型,再利用模型預測結果。如果一個程序可以在任務T上,隨著經驗E的增加,效果P也可以隨之增加,則稱這個程序可以從經驗中學習。
卡內基梅隆大學(Carnegie Mellon University)的Tom Michael Mitchell教授在1997年出版的書籍Machine Learning中對機器學習進行過非常專業的定義,這個定義在學術界內被多次引用。通過垃圾郵件分類的問題來解釋機器學習的定義。在垃圾郵件分類問題中,“一個程序”指的是需要用到的機器學習算法,比如邏輯回歸算法;“任務T”是指區分垃圾郵件的任務;“經驗E”為已經區分過是否為垃圾郵件的歷史郵件,在監督式機器學習問題中,這也被稱之為訓練數據;“效果P”為機器學習算法在區分是否為垃圾郵件任務上的正確率。
機器學習三要素
分類:機器學習利用算法去分析數據、學習數據,隨后對現實世界情況作出判斷和預測。因此,與預先編寫好、只能按照特定邏輯去執行指令的軟件不同,機器實際上是在用大量數據和算法去“自我訓練”,從而學會如何完成一項任務。機器學習可以分為以下幾類:
- 監督學習 (Supervised Learning):從給定的數據集中學習出一個函數, 當新的數據到來時, 可以根據這個函數預測結果, 訓練集通常由人工標注
- 無監督學習 (Unsupervised Learning):相較于監督學習, 沒有人工標注
- 強化學習(Reinforcement Learning,增強學習):通過觀察通過什么樣的動作獲得最好的回報, 每個動作都會對環境有所影響, 學習對象通過觀察周圍的環境進行判斷
- 半監督學習(Semi-supervised Learning):介于監督學習和無監督學習
深度學習 (Deep Learning):利用深層網絡神經模型, 抽象數據表示特征。
也有資料說明:深度學習是無監督學習的一種。
機器學習面臨的挑戰
- 數據會以各種形式和大小出現。真實數據集可能比較混亂、不完整,并且采用各種不同格式提供。
- 預處理數據可能需要掌握專業知識和工具 。例如,對象檢測算法訓練中的特征選取,需要掌握圖像處理領域的專業知識。不同類型的數據的特征選取,需要掌握圖像處理領域的專業知識。不同類型的數據
- 找到擬合數據的最佳模型需要時間。 如何選擇正確的模型是一項平衡過程。高度靈活的模型由于擬合了噪聲的細微變化而造成了過度擬合。另一方面,簡單的模型可能要有更多的假設條件。這些始終是在模型速度、準確性和復雜性之間權衡取舍。
深度學習:深層次神經網絡/實現機器學習的技術
背景:2006年,加拿大多倫多大學教授、機器學習領域的泰斗Geoffrey Hinton和他的學生RuslanSalakhutdinov在《科學》上發表了一篇文章,開啟了深度學習在學術界和工業界的浪潮。這篇文章動機在于建立、模擬人腦進行分析學習,文章有兩個主要觀點:
1)多隱層的人工神經網絡具有優異的特征學習能力,學習得到的特征對數據有更本質的刻畫,從而有利于可視化或分類;
2)深度神經網絡在訓練上的難度,可以通過“逐層初始化”(layer-wise pre-training)來有效克服,在這篇文章中,逐層初始化是通過無監督學習實現的。
深度學習的概念源于人工神經網絡的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發現數據的分布式特征表示。
Deep learning本身算是machine learning的一個分支,簡單可以理解為neural network的發展。大約二三十年前,neural network曾經是ML領域特別火熱的一個方向,但是后來確慢慢淡出了,原因包括以下幾個方面:1)比較容易過擬合,參數比較難tune,而且需要不少trick;2)訓練速度比較慢,在層次比較少(小于等于3)的情況下效果并不比其它方法更優;
所以中間有大約20多年的時間,神經網絡被關注很少,這段時間基本上是SVM和boosting算法的天下。但是,一個癡心的老先生Hinton,他堅持了下來,并最終(和其它人一起Bengio、Yann.lecun等)提成了一個實際可行的deep learning框架。
定義:深度學習(Deep learning)是通過構建具有很多隱層的機器學習模型和海量的訓練數據,來學習更有用的特征,從而最終提升分類或預測的準確性。因此,“深度模型”是手段,“特征學習”是目的。區別于傳統的淺層學習,深度學習的不同在于:
1)強調了模型結構的深度,通常有5層、6層,甚至10多層的隱層節點;
2)明確突出了特征學習的重要性,也就是說,通過逐層特征變換,將樣本在原空間的特征表示變換到一個新特征空間,從而使分類或預測更加容易。與人工規則構造特征的方法相比,利用大數據來學習特征,更能夠刻畫數據的豐富內在信息。
深度學習的訓練過程
為了克服神經網絡訓練中的問題,DL采用了與神經網絡很不同的訓練機制。深度學習與傳統的神經網絡在訓練機制上存在差異:
傳統神經網絡(這里作者主要指前向神經網絡)中,采用的是back propagation的方式進行,簡單來講就是采用迭代的算法來訓練整個網絡,隨機設定初值,計算當前網絡的輸出,然后根據當前輸出和label之間的差去改變前面各層的參數,直到收斂(整體是一個梯度下降法)。
deep learning整體上是一個layer-wise的訓練機制。這樣做的原因是因為,如果采用back propagation的機制,對于一個deep network(7層以上),殘差傳播到最前面的層已經變得太小,出現所謂的gradient diffusion(梯度擴散)。
如果對所有層同時訓練,時間復雜度會太高;如果每次訓練一層,偏差就會逐層傳遞。這會面臨跟上面監督學習中相反的問題,會嚴重欠擬合(因為深度網絡的神經元和參數太多了)。
2006年,hinton提出了在非監督數據上建立多層神經網絡的一個有效方法,簡單的說,分為兩步,一是每次訓練一層網絡(相當于參數的初始化),二是調優,使原始表示x向上生成的高級表示r和該高級表示r向下生成的x’盡可能一致。
具體的訓練方法是:
1)首先逐層構建單層神經元,這樣每次都是訓練一個單層網絡。采用無標定數據(有標定數據也可)分層訓練各層參數,這一步可以看作是一個無監督訓練過程,是和傳統神經網絡區別最大的部分(這個過程可以看作是feature learning過程)。
使用自下上升非監督學習(就是從底層開始,一層一層的往頂層訓練)
2)當所有層訓練完后,使用wake-sleep算法進行調優。wake-sleep算法進行調優,是自頂向下的監督學習(就是通過帶標簽的數據去訓練,誤差自頂向下傳輸,對網絡進行微調)
將除最頂層的其它層間的權重變為雙向的,這樣最頂層仍然是一個單層神經網絡,而其它層則變為了圖模型。向上的權重用于“認知”,向下的權重用于“生成”。然后使用Wake-Sleep算法調整所有的權重。讓認知和生成達成一致,也就是保證生成的最頂層表示能夠盡可能正確的復原底層的結點。比如頂層的一個結點表示人臉,那么所有人臉的圖像應該激活這個結點,并且這個結果向下生成的圖像應該能夠表現為一個大概的人臉圖像。Wake-Sleep算法分為醒(wake)和睡(sleep)兩個部分。
(1)wake階段:認知過程,通過外界的特征和向上的權重(認知權重)產生每一層的抽象表示(結點狀態),并且使用梯度下降修改層間的下行權重(生成權重)。也就是“如果現實跟我想象的不一樣,改變我的權重使得我想象的東西就是這樣的”。
(2)sleep階段:生成過程,通過頂層表示(醒時學得的概念)和向下權重,生成底層的狀態,同時修改層間向上的權重。也就是“如果夢中的景象不是我腦中的相應概念,改變我的認知權重使得這種景象在我看來就是這個概念”。
- 常見的深度學習算法包括:
- 受限波爾茲曼機(Restricted Boltzmann Machine, RBN)
- 深度置信網絡(Deep Belief Networks,DBN)
- 卷積神經網絡(Convolutional Neural Network, CNN)
- 堆棧式自動編碼器(Stacked Auto-encoders,SAE)。
神經網絡
背景:人工神經網絡在人工智能的誕生早期就已出現,但在“智能性”方面一直未能取得太大突破。問題在于,最基本的神經網絡也需要大量的計算資源,因此很難實現。不過,由多倫多大學的吉奧夫里?辛頓(Geoffrey Hinton)帶領的一個小型研究團隊持續地進行這方面的嘗試,最終找到了一種可以由超級計算機運行的算法,證明了這一概念。然而,直到GPU開始大規模部署之后,這種技術才得以普及。
神經網絡的發展歷史:
- 第一次興起:1958年,人們把兩層神經元首尾相接,則稱單層神經網絡,稱為感知機。感知機成了首個可以學習的人工神經網絡。引發了神經網絡研究的第一次興起。
- 第二次寒冬:1969年,這個領域的權威者Minsky用數學公式證明了只有單層神經網絡的感知機無法對異或邏輯進行分類,Minsky還指出要想解決異或邏輯可分問題,需要把單層神經網絡擴展到兩層或者以上。然而那個時代計算機的運算能力無法支撐這種運算量。只有一層計算單元的感知機暴露了它的天然缺陷,使得神經網絡陷入第一次寒冬。
- 第二次興起:1986年,Hinton等人提出了方向傳播方法(BP),有效地解決了兩層神經網絡的算理問題,引發了神經網絡研究的第二次興起。
- 第二次寒冬:1995年,支持向量機(SVM)誕生,支持向量機可以免去神經網絡需要調節參數的不足,還避免了神經網絡中局部最優問題,一舉擊敗神經網絡,稱為當時人工智能領域的主流算法,使得神經網絡進入了第二個冬季。
第二次興起:2006年,深層次神經網絡出現,2012年,卷積神經網絡在圖像識別領域中的驚人表現,又引發了神經網絡研究的第三次興起。
定義:人工神經網絡(Artificial Neural Network,即ANN )是由大量的簡單處理單元經廣泛并行互連形成的一種網絡系統。它是對人腦系統的簡化、抽象和模擬,具有大腦功能的許多基本特征。
關系
人工智能與機器學習
機器學習是實現人工智能的手段, 其主要研究內容是如何利用數據或經驗進行學習, 改善具體算法的性能多領域交叉, 涉及概率論、統計學, 算法復雜度理論等多門學科廣泛應用于網絡搜索、垃圾郵件過濾、推薦系統、廣告投放、信用評價、欺詐檢測、股票交易和醫療診斷等應用。
人工智能的根本在于智能,而機器學習則是部署支持人工智能的計算方法。簡單的講,人工智能是科學,機器學習是讓機器變得更加智能的算法,機器學習在某種程度上成就了人工智能。
機器學習與深度學習
深度學習是機器學習研究中的一個新的領域,其動機在于建立、模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。深度學習是無監督學習的一種。
深度學習與神經網絡
深度學習算法是對人工神經網絡的發展。在計算能力變得日益廉價的今天,深度學習試圖建立大得多也復雜得多的神經網絡。很多深度學習的算法是半監督式學習算法,用來處理存在少量未標識數據的大數據集。
現代的深度學習已經超越了神經科學觀點,它可以更廣泛地適用于各種并不是由神經網絡啟發而來的機器學習框架。值得注意的是,有一個領域的研究者試圖從算法層理解大腦的工作機制,它不同于深度學習的領域,被稱為“計算神經學”(computational neuroscience)。深度學習領域主要關注如何搭建智能的計算機系統,解決人工智能中遇到的問題。計算神經學則主要關注如何建立更準確的模型來模擬人類大腦的工作。
Neural networks, a beautiful biologically-inspired programming paradigm which enables a computer to learn from observational data
Deep learning, a powerful set of techniques for learning in neural networks
參考:
總結
以上是生活随笔為你收集整理的人工智能、机器学习、深度学习和神经网络的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么越来越多的人都拒绝办信用卡?
- 下一篇: Android 中 OkGo 的使用 (