程序員們,AI來了,機會來了,危機也來了

 

1.人工智能真的來了

 

        縱觀古今,不多有計算機技術能有較長的發展壽命,大部分曇花一現,好比:昔日的DOS、windows3.二、foxpro、delphi、80x86彙編,還有不少技術也在艱難地掙扎,好比:VB、PB、Sqlserver,甚至連微軟的.NET也被來自全球強大的開源力量逼到了死角, 以致於不得不開放源碼,向Linux投出橄欖枝,才得以繼續發展壯大。java

        2013年深秋,一個秋高氣爽的日子,此時的大數據在中國已經開始蠢蠢欲動,Hadoop做爲離線計算的大數據平臺開始悄然風靡,機器學習開始在中國播下種子,但這些僅侷限於大公司和高校內部,中國的大地上並無充滿人工智能的氣息, 我應機械工業出版社的邀請,寫了《機器學習實踐指南》(該書已於2014年出版,目前是第二版)。寫完這本書後,我有一種強烈的預感:人工智能與機器學習將來確定必火,並且它確定會成爲計算機技術發展史上最長壽的技術,可能長達幾百年甚至幾千年,以致於人類移民到了其它星球,人工智能仍會繁榮昌盛~,可是,我萬萬沒想到,出書不到3年,人工智能已經在中國四處開花,碩果累累,其發展速度,超出個人想象,吳恩達公開的辭職信已經說明了人工智能在中國的發展示狀。python

       「正如百年前電電能改變的了不少行業同樣,人工智能也正在改變着醫療、交通、娛樂、製造業等主要行業,豐富充實着無數人的生活。對於人工智能將帶領咱們前往何方,我比以往都要興奮和期待。我很榮幸可以從兩大人工智能強國,中國、美國的人工智能界都學習過。美國擅長創造新的技術和理念,而中國擅於將人工智能技術用於開發出好的產品。我很高興本身可以有機會既爲中國也爲美國的人工智能發展崛起做出努力和貢獻」linux

                                                                                                                 --前百度首席科學家吳恩達 程序員

      

         注意上述信件內容「中國是人工智能大國」,做爲程序員們,機會來了,爲中國的AI技術發展做出本身的貢獻,同時開闢本身新的職業生涯。算法

 

     機器學習技術在國外獲得了海量應用和深刻發展。2015年11月,谷歌開源了全新的TensorFlow機器學習系統,該系統更快、更智能,也更具備彈性。2015年1月,機器學習平臺 GraphLab更名爲Dato,並得到了 1850 萬美圓的新融資(投資方爲 Vulcan Capital 、Opus Capital 、New Enterprise Associates、Madrona Venture Group),此前他們曾得到 680 萬美圓的融資。2015年8月,Facebook推出了「M」,Facebook認爲人類不只會回答人工智能所不能回答的問題,並且從長遠來看,人類也會幫助改善人工智能技術,「M」除了能作到回答問題、查閱信息等基本功能外,還能夠幫助用戶完成如購買商品、餐廳定位、安排旅行計劃等操做。在2015年12月召開的「2015年神經信息處理系統」(NIPS)會議上,微軟研究人員和工程師公開了20多篇機器學習新研究成果的論文。此外,微軟還宣佈,機器學習正在成爲Windows 10的一部分:Skype翻譯能夠將口語幾乎實時地翻譯成其餘語言,就像《星際迷航》中的通用翻譯器那樣,能夠作到面對面的交流。Cortana我的數字助理在與用戶的互動中不斷學習與改進,從而幫助用戶管理日曆、跟蹤快遞,甚至能與用戶聊天和講笑話,實現真正的個性化互動體驗。Clutter是微軟Office 2016的成員,經過學習它能夠識別出哪些電子郵件對用戶來講重要,並自動將不重要的郵件重定向到一個單獨的文件夾中,從而保持用戶收件箱的整潔。2015年9月,美軍軍隊醫療中心指揮官少將Steve Jones在美軍陸軍的一次會議上發言表示,將來可讓智能機器人代替人類上戰場運送傷員,美國軍方甚至高調宣佈:將來戰場上機器人救起的可能不是人,而是機器人,由於智能機器人軍團將代替人類出征。sql

       在本節的結束,我也展望一下人工智能的將來:shell

 

不久的未來,人類也許該思考:在將來的世界裏,機器人將充當什麼樣的角色,會不會代替人類呢?人類與智能機器之間應如何相處?編程

人類開始着手研究,如何才能更好地實現下面三大定律:windows

第一,機器人不可傷害人;設計模式

第二,機器人必須服從人的命令;

第三,機器人能夠在不違背上述原則的狀況下保護本身。

2.  人工智能與大數據

 

大數據時代已經到來,這個已經成爲事實。但隨着hadoopSpark、storm的高度普及,大數據技術成爲軟件開發和編程的普通領域,技術門檻愈來愈低,愈來愈多的人涌入這個行業,歷史證實沒有一個長久發展的技術領域一定是曇花一現,大數據技術也會這樣嗎?答案是:不!由於有人工智能的參與,大數據是基於數據分析與挖掘技術的應用,是機器學習算法和數據存取技術的結合,利用機器學習提供的統計分析、知識發現等手段分析海量數據,同時利用數據存取機制實現數據的高效讀寫。

 

                                        

 

提示:在此普及一下兩個概念:

1. 數據挖掘是識別出巨量數據中有效的、新穎的、潛在有用的、最終可理解的模式的非平凡過程。

2. 數據分析是指用適當的統計方法對收集來的大量第一手資料和第二手資料進行分析,以求最大化地開發數據資料的功能,發揮數據的做用,它是爲了提取有用信息和造成結論而對數據加以詳細研究和歸納總結的過程」不管是數據分析仍是數據挖掘,都是幫助人們收集、分析數據,使之成爲信息,並做出判斷。

 

3.  人工智能與模式識別

 

  程序員們,人工智能不是一門編程技術,也不是數據結構與算法,人工智能是編程、數據結構、算法與數學的結合 。

  咱們開始來談模式識別,它是起源於工程領域,而機器學習起源於計算機科學,這兩個不一樣學科的結合帶來了模式識別領域的調整和發展。模式識別研究主要集中在兩個方面:一是研究生物體(包括人)是如何感知對象的,屬於認識科學的範疇;二是在給定的任務下,如何用計算機實現模式識別的理論和方法,這些是機器學習的長項,也是機器學習研究的內容之一。

 模式識別的應用領域普遍,包括計算機視覺、醫學圖像分析、光學文字識別、天然語言處理、語音識別、手寫識別、生物特徵識別、文件分類、搜索引擎等,而這些領域也正是機器學習的大展身手的舞臺。

 

4 . 數學來了!危機來了

      我們前面一直在談機會,下面該談危機了,大夥從第3節就能夠看出危機了,模式識別都來了~
      人工智能和機器學習是美好的,程序們,進軍AI領域吧!準備好了嗎?!真的準備好了嗎?那咱們繼續。。
      人工智能和機器學習的入門門檻較高,尤爲對研究者的數學理解能力有較高要求,你確定有話說,我懂數據結構、計算機算法,我作軟件開發不少年了,我都是系統架構師了,都是項目管理師了,各類高端~
       但我告訴大家,機器學習是一個全新的領域,也是一個全新的高度,理解機器學習算法每每要從理解它涉及的數學公式和數學知識開始,全部的AI從業者都必須經過攀登數學這座大山一步步走入機器學習領域,打好數學基礎是很是必要的,一旦你掌握了數學分析、線性代數、機率與統計、統計學、離散數學、抽象代數、數學建模等數學理論後,理解機器學習算法就容易多了,就不會畏懼那些讓人生厭和煩瑣的數學符號和數學公式,反而會喜歡上這些數學公式,並嘗試親自推導一番。
      掌握機器學習算法至少須要如下幾種數學的基本知識。

1) 微積分

微積分的誕生是繼歐幾里得幾何體系創建以後的一項重要理論,它的產生和發展被譽爲「近代技術文明產生的關鍵之一,它引入了若干極其成功的、對之後許多數學的發展起決定性做用的思想」。微積分學在科學、經濟學和工程學領域有普遍的應用,解決了僅依靠代數學不能有效解決的問題。微積分學創建在代數學、三角學和解析幾何學的基礎上,包括微分學、積分學兩大分支,包括連續、極限、多元函數的微積分、高斯定理等內容。

微積分在天文學、力學、化學、生物學、工程學、經濟學、計算機科學等領域有着愈來愈普遍的應用,好比:在醫療領域,微積分能計算血管最優支角,將血流最大化;在經濟學中,微積分能夠經過計算邊際成本和邊際利潤來肯定最大收益;微積分可用於尋找方程的近似值;經過微積分解微分方程,計算相關的應用,好比,宇宙飛船利用歐拉方法來求得零重力環境下的近似曲線等。

在機器學習和數據分析領域,微積分是不少算法的理論基礎,如:多層感知器神經網絡算法。多層感知器是一種前饋人工神經網絡模型,算法分爲兩個階段:正向傳播信號、反向傳播偏差。

正向傳播信號階段是對樣本的學習階段,輸入的信息從輸入層傳入,經各個隱層計算後傳至輸出層,計算每一個單元的實際值,向各層各單元分攤產生的偏差;反向傳播偏差階段經過網絡輸出與目標輸出的偏差對網絡進行修改審查,將正向輸出的偏差再傳播回各層進行權重值調整,直到偏差最小化或達到規定的計算次數。微積分理論在多層感知器模型中運用較多。

 

2)線性代數

線性代數是高等數學中的一門成熟的基礎學科,它內容普遍,不但包含行列式、矩陣、線性方程組等初等部分,並且包括線性空間、歐式空間、酉空間、線性變換和線性函數、λ-矩陣、矩陣特徵值等更深刻的理論,線性代數在數學、物理學、社會科學、工程學等領域也有普遍的應用。

線性代數理論是計算技術的基礎,在機器學習、數據分析、數學建模領域有着重要的地位,這些領域每每須要應用線性方程組、矩陣、行列式等理論,並經過計算機完成計算。

         

3) 機率論

機率論是研究隨機性或不肯定性現象的數學,用來模擬實驗在同一環境下會產生不一樣結果的狀況。下面這些機率理論是機率論的基礎。

 (1)古典機率

 

 (2)條件機率

 

 

 (3)機率公理

公理1:0≤P(A)≤1(A∈S)

公理2:P(S)=1

公理3:P(A∪B)=P(A)+P(B),若是A∩B=0

 

(4)機率分佈

包括二項分佈、幾何分佈、伯努利分佈、泊松分佈、均勻分佈、正態分佈、指數分佈等。樣本空間隨機變量的機率分佈可用累積分佈函數和機率密度函數進行分析。

 

機率論在機器學習和數據分析領域有舉足輕重的地位,好比馬爾可夫鏈理論。馬爾可夫鏈對於現實世界的不少現象都給出瞭解釋,泊松過程是連續時間離散狀態的馬爾可夫鏈,布朗運動是連續時間連續狀態的馬爾可夫鏈等。

馬爾可夫鏈在計算數學、金融經濟、機器學習、數據分析等領域都有重要的應用,馬爾可夫鏈是數學中具備馬爾可夫性質的離散時間隨機過程,在給定當前知識或信息的狀況下,僅使用當前的狀態預測未來,在馬爾可夫鏈的每一步,系統根據機率分佈,從一個狀態變到另外一個狀態或保持當前狀態。

 

4)統計學

統計學是收集、分析、表述和解釋數據的科學,做爲數據分析的一種有效工具,統計方法已普遍應用於社會科學和天然科學的各個領域。統計學與機率論聯繫緊密,前者之後者爲理論基礎。統計學主要分爲描述統計學和推斷統計學。描述統計學描繪或總結觀察量的集中和離散情形,基礎的數學描述包括了平均數和標準差等;推斷統計學將資料中的數據模型化,計算它的機率而且作出對於母羣體的推論,主要包括假設檢定、對於數字特徵量的估計、對於將來觀察的預測、相關性預測、迴歸、變異數分析、時間序列、數據挖掘等。

不管是描述統計學仍是推斷統計學都是數據分析技術的基礎。經過描述統計學方法,數據分析專家能對數據資料進行圖像化處理,將資料摘要變爲圖表,分析數據分佈特徵。此外,還能夠分析數據資料,以瞭解各變量內的觀察值集中與分散的狀況等。經過推斷統計學方法,對數據未知特徵作出以機率形式表述的推斷,在隨機抽樣的基礎上推論有關整體數量特徵。

5) 離散數學

離散數學是數學的幾個分支的總稱,研究基於離散空間而不是連續的數學結構,其研究內容很是普遍,主要包括數理邏輯、集合論、信息論、數論、組合數學、圖論、抽象代數、理論計算機科學、拓撲學、運籌學、博弈論、決策論等。

離散數學普遍應用於機器學習、算法設計、信息安全、數據分析等領域,好比:數理邏輯和集合論是專家系統的基礎,專家系統是一類具備專門知識和經驗的計算機智能程序系統,通常採用人工智能中的知識表示和知識推理技術,模擬一般由領域專家才能解決的複雜問題;信息論、數論、抽象代數用於信息安全領域;與信息論密切相關的編碼理論可用來設計高效可靠的數據傳輸和數據儲存方法;數論在密碼學和密碼分析中有普遍應用,現代密碼學的DES、RSA等算法技術(包括因子分解、離散對數、素數測試等)依賴於數論、抽象代數理論基礎;運籌學、博弈論、決策論爲解決不少經濟、金融和其餘數據分析領域的問題提供了實用方法,這些問題包括資源合理分配、風險防控、決策評估、商品供求分析等。

以上是機器學習須要的核心數學知識,但不是所有知識。隨着從此人類對機器學習的深刻研究,將有更多的數學分支進入機器學習領域。所以,僅掌握大學數學知識是不夠的,還須要向更高層次進軍,對於非數學專業畢業的朋友來講,還應該學習其餘數學分支理論,好比說泛函分析、複變函數、偏微分方程、抽象代數、約束優化、模糊數學、數值計算等。

建議各位購買如下數學書籍,隨時翻閱參考。

Finney,Weir,Giordano.《托馬斯微積分》.葉其孝,王耀東,唐兢譯.第10版. 北京:高等教育出版社 2003-1

Steven J.Leon.《線性代數》.張文博,張麗靜譯.第8版.北京:機械工業出版社

William Mendenhall等.《統計學》. 梁馮珍,關靜譯.第5版.北京:機械工業出版社

Dimitri P. Bertsekas等.《機率導論》.鄭忠國,童行偉譯.第2版.北京:人民郵電出版社

Kenneth H.Rosen等.《離散數學及其應用》.袁崇義,屈婉玲,張桂芸譯.第6版.北京:機械工業出版社

Eberhard Zeidler等.《數學指南:實用數學手冊》.李文林譯.北京:科學出版社

它們都是機器學習所涉及的經典數學書,能夠考慮將它們和《設計模式》、《算法導論》、《深刻理解計算機系統》等經典算法書放在一塊兒,做爲案頭必備書。

      歷數這麼多,只是人工智能須要懂得的數學的冰山一角。危機是來了,但是程序員們,爲了AI,仍是拼一把,好好學習數學吧~

一位MIT的牛人在BLOG中曾提到,數學彷佛老是不夠的,爲了解決和研究工程中的一些問題,不得不在工做後,從新回到圖書館捧起了數學教科書。他深深感到,從大學到工做,課堂上學的和自學的數學其實不算少了,但是在機器學習領域老是發現須要補充新的數學知識。看來,要精通機器學習知識,必須在數學領域學習、學習、再學習,這一切都是很艱苦的。要學好機器學習必須作好艱苦奮鬥的準備,堅持對數學知識的追求。

       

 

5.程序員的看家本領出場了

 
       既然是程序員進軍AI,那天然有程序員的優點。如下技術是建議程序員進軍AI時,須要學習的技術(這些不須要解釋,因此只提供列表,若是看不懂。。。。那無語。。。):
        (1)    python
        (2)    R
        (3)    SQL
        (4)    linux shell和基本運維知識
        (5)    java(激動吧,處處都有它的影子,它能出如今列表中,應感謝HADOOP和SPARK還有STORM)  
      (6) scala
        接下來是架構:
         1.hadoop
         2.spark
         3.storm
         4.tensorflow,paddlepaddle,caffe
        
    最後,強調一下激動人心的機器學習框架(程序員能夠簡單得理解爲庫,實際比庫要更復雜)及其融合:
    一、spark    :數據都經過RDD這種萬能格式在內部處理,不管是離線計算仍是實時流計算,都是RDD,簡化了編程(官方編程語言是python、R、scala)。
    二、MLlib       :是Spark的機器學習庫,能夠實現分佈式機器學習算法,包括分佈式矩陣計算等,支持各類非深度學習算法用於分類、迴歸、聚類、推薦等。
    三、tensorflow :一個很是優秀的AI框架,注意,它不只僅是一個深度學習庫,它是一個AI架構。
    四、tensorflow on spark:TensorflowOnSpark 支持使用Spark/Hadoop集羣分佈式的運行Tensorflow,號稱支持全部的Tensorflow操做。TensorFlowOnSpark提供兩種不一樣的模式來提取訓練和推理數據: 

   (1)TensorFlow QueueRunners:TensorFlowOnSpark利用TensorFlow的file readers和QueueRunners直接從HDFS文件中讀取數據。Spark不涉及訪問數據。

   (2)Spark Feeding :Spark RDD數據被傳輸到每一個Spark執行器裏,隨後的數據將經過feed_dict傳入TensorFlow圖。

    五、caffe on spark:CaffeOnSpark被設計成爲一個Spark深度學習包,CaffeOnSpark API支持dataframes,以便易於鏈接準備使用Spark應用程序的訓練數據集,以及提取模型的預測或中間層的特徵,用於MLLib或SQL數據分析。

 

6.AI的核心

       前面說了這麼多,估計各位是有壓力了。接下來的壓力會更大~
       AI全名人工智能,它須要使用編程、算法、數據結構、數學,更須要一個機器學習思惟方式。
       AI的核心在於如下三點:
       (1)特徵提取,好比,對一堆蘋果進行分類,特徵包括,重量,形狀,生長期等等。
       (2)模型與算法選擇,好比:SVM、神經網絡、決策樹、語義樹、知識庫、各類視覺算法等等。
       (3)機器學習網絡構造,好比:深度學習雖然能夠自動提取特徵,但仍須要對其參數、具體網絡結構進行定義和訓練。

7.結束語

      我們來輕鬆一下吧,AI做爲一個發展空間很大,發展週期也很長的技術,確實是程序員的最佳進軍地點,可是難度也很大,是的,不能否認,有框架,有現成的庫,做爲一個調參黨挺好,若是這樣,那在AI領域確定不能長久走下去。你必須理解這些算法的原理,有空應親自實現這些算法,加深理解,不然你沒法完成參數良好的AI庫調用,簡單的調庫是不行的~
       機會和危機老是並存的,祝各位早日進入機器學習和人工智能的大門。
       僅以此文與各位共同窗習,共同進步,不當之處請諒解。

8.最後的甜點

       不是結束了嘛~嘻嘻,不不,還有一個甜點,一個AI從業者的發展路線,讓各位朋友能夠輕鬆地進入人工智能行業
       第o步,爲何說是第0步,由於這一步只是須要熟悉和有使用經驗,不須要精通~那麼這一步的是什麼?就是大數據碼農(AI時代的碼農,領域技術更新快,也是普通程序員最容易轉行AI的領域,可是也是最容易被高速發展的技術淘汰的領域~):
       學習hadoop搭建與基礎、zookeeper、mapreduce、hbase、hive、flume、kafka、spark dataframe、spark sql、spark streaming、scala基礎。
       爲何若是僅停留在第0步很容易被淘汰,由於hadoop曾經風光一時,但不到2年,spark已經大行其道,如今,tensorflow、paddlepaddle開始變得很火了。
       而後,當你在努力學習spark時,hadoop3.0已經出了測試版,號稱計算速度將超過spark。
       技術更新速度已是以年爲單位~
       第一步,學習數據結構與算法,用程序調用AI庫。
       第二步,使用大數據存取平臺,存取數據,調用AI庫。
       第三步,學會調節參數,調用AI庫。
       第四步,努力學習數學,仍是調用AI庫。
       第五步,學習機器學習算法,仍是調用AI庫。
       第六步,仍是調用AI庫,哈哈,不一樣的是,知道算法的原理和核心要點,明白什麼樣的數據和場景使用什麼樣的算法,明白參數要如何調節,才能讓AI庫獲得最好的效果。
       第七步,此次剖析AI庫,從而更好地利用AI庫,途徑是:親自編程實現機器學習算法,理解AI庫的內部實現方式,必要時,直接編寫AI算法和現有AI庫一塊兒工做。
       第八步,更深刻學習數學,迎接AI技術的不斷髮展和挑戰。
       第九步, 。。。。機器人出來後,研究三大定律。
       
       再來和你們分享一下提升機器學習算法準確率的心得:
         第一,換算法

         第二,優化特徵提取

         第三,調整參數
         
        第四,樣本數據的優化和輸出結果的優化
         
         對於某類偏科牛人,我有一些當心得與你們分享。
         一、編程好的牛人,應加油補數學。
         二、數學好的牛人,應加油補編程。
        
         【更多AI討論入Q羣332527366】
相關文章
相關標籤/搜索