1. 程式人生 > >程式設計師如何轉型人工智慧(機器學習)

程式設計師如何轉型人工智慧(機器學習)

我是一個工作時間比較久的全棧工程師,做過web開發,前端,後端,移動端,HTML5的開發。2016年底開始學習機器學習,做深度學習大概不到半年。在人工智慧技術方面我肯定沒有研究人工智慧很多年的人有經驗,但在怎樣轉型人工智慧方面我還是有些體會的。

一個很小的卷積神經網路的結構圖

學習人工智慧為什麼比學習其他的程式設計技術要困難

  • 首先是人工智慧整個領域特別大
    我們常說的深度學習是機器學習的一個小分支,而機器學習又只是人工智慧的一個小分支。但目前深度學習比較熱,因此很多人就把深度學習當成人工智慧了。具體到業務領域,就有計算機視覺,語音識別,自然語言處理等,每一個領域都很專業,會用到機器學習的各種方法。後面的內容主要是說深度學習和機器學習。

  • 其次人工智慧是不確定性的
    思維模式和傳統程式設計不一樣,我們平常接觸的程式語言無論前端,後端還是移動端,都是確定性的,確定性是什麼意思呢?例如你要修改個傳統系統的bug,你弄明白了邏輯,就可以修改程式碼改掉bug。但做人工智慧不一樣,它是不確定性的,目前深度神經網路可能會有幾百層,幾千萬個引數,我們沒有嚴格的數學邏輯確定這些引數的意義,只能根據經驗和一些原理進行調參,修改資料集等優化結果,過程中充滿了不確定性。

  • 第三,學習人工智慧對於數學和英語有一定要求
    特別是做模型優化的時候。數學方面需要知道一些微積分,線性代數,概率論的知識,英文方面需要能夠比較順利的看懂一些英文的資料和論文,例如很多著名模型的結構相關的論文都發表在arxiv上,需要能大概看懂這些論文。

  • 第四,學習深度學習對於計算機有一定要求
    模型訓練在GPU上做能夠明顯加快速度,例如在Imagenet2012資料集上訓練InceptionV3模型, 大概有120萬張圖片, 在一個nVidia Tesla P100 GPU上訓練到95%的召回率需要3天,在普通CPU上訓練可能需要幾個星期。如果你學習一個東西,幾星期後才能知道結果那肯定是讓人崩潰的。萬幸的是,現在Amazon,Goolge,阿里雲,騰訊雲等都GPU伺服器可以租用。

程式設計師學習人工智慧的三個階段

學習人工智慧的三個階段是 應用,優化,和定義問題,這個觀點是我在某大牛的一篇文章中看到的,然後我針對程式設計師的學習特點做了一些優化。

應用應該是學習的第一步,就是想怎麼樣才能把人工智慧應用到你的業務中,在這一步之前你需要對人工智慧的現狀有個基本清晰的認識,拋棄不實際的想法。具體的做法大概是針對自己的問題,收集資料,建立模型,可以用傳統模型或深度學習模型。這一塊程式設計師去做還是有一定優勢的, 做到這一步需要對機器學習和深度學習有一定了解, 熟悉python, 能用tensorflow做一些模型訓練。舉個應用的例子,人工智慧跨界農業實現“桃臉識別”,用人工智慧實現桃子的智慧篩選。

優化是學習的第二步,這一步就有些難度了,需要對卷積神經網路的原理和計算過程很清楚,需要對tensorflow,caffe,pyTorch等框架比較熟悉,需要對Inception,Resnet等經典模型的結構有一定研究,能夠看懂論文和程式碼,並能夠結合資料進行分析和實驗,對模型結構,引數等不斷進行優化,達到提高識別率等目的, 這個優化過程需要耗費大量的時間。

定義問題是學習的第三步,能夠做到這一步應該是大神級的存在了,例如谷歌大腦,AlphaGO,百度大腦等頂級團隊和學術界的科學家和資深工程師等。這一步的難點是如果用數學語言定義清楚問題,並能夠用工程上可行的機器學習演算法進行優化求解。做到這一步是很難的,能夠做到這一步的人應該是很少的,大部分都是大公司某個方向的領軍人物。

應該怎樣轉型人工智慧

對於想轉型人工智慧的程式設計師, 我覺得首先要想清楚,自己想不想做這樣一個不確定性的事情,自己的學習能力,數學和英語基礎怎麼樣,不能看到行業熱工資高就盲目轉行。其實無論是前端,後端還是移動端,只要技術做到一定深度,收入都會不錯,網際網路行業的高薪還會持續很多年,做好技術可以有個不錯的收入。

當然,學習和了解一些人工智慧技術總是沒有壞處的,可以先在自己感興趣的領域嘗試應用下人工智慧技術,試試有沒有這方面的興趣和能力。畢竟IT行業變化很快,說不定幾年後無論做什麼開發都需要懂一些人工智慧知識呢?

在人工智慧這個熱門的行業,早起的鳥有蟲吃,但前提是鳥才行。