天天看點

程式員如何轉型人工智能(機器學習)

我是一個工作時間比較久的全棧工程師,做過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行業變化很快,說不定幾年後無論做什麼開發都需要懂一些人工智能知識呢?

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

繼續閱讀