來源:玉剛說 作者:Anymake 2018-06-14 11:34:12
摘要: 作為一名軟件工程師,我們應(yīng)該活到老學(xué)到老,時刻與不斷發(fā)展的框架、標(biāo)準和范式保持同步。同時,還要能活學(xué)活用,在工作中使用最合適的工具,以提高工作效率。隨著機器學(xué)習(xí)在越來越多的應(yīng)用程序中尋得了一席之地,越來越多的程序員加入AI領(lǐng)域,那么,入行AI領(lǐng)域需要哪些技能呢?
人工智能到底有多火
我相信大家之所以能來看這篇文章,也間接說明了人工智能這幾年的火爆。自從基于深度學(xué)習(xí)技術(shù)的算法2012年在ImageNet比賽中獲得冠軍以來,深度學(xué)習(xí)先是席卷了整個學(xué)術(shù)界,后又在工業(yè)界傳播開來,一瞬間各大企業(yè)如果沒有AI部門都不好意思對外宣傳了。BAT中,百度宣布“All In AI”,阿里建立了達摩院及AI實驗室,騰訊也在前不久會議上宣布“Ai In All”,并具有騰訊優(yōu)圖、AI Lab和微信AI實驗室。2017年7月20日,國務(wù)院發(fā)布《新一代人工智能發(fā)展規(guī)劃》,將人工智能上升為國家戰(zhàn)略,為中國人工智能產(chǎn)業(yè)做出戰(zhàn)略部署,對重點任務(wù)做出明確解析,搶抓重大機遇,構(gòu)筑我國人工智能發(fā)展的先發(fā)優(yōu)勢。
技術(shù)的發(fā)展往往遵循一個可預(yù)期的模式,即先是萌芽,然后炒作,而后幻滅,接著才是技術(shù)成熟后的穩(wěn)步爬升,最后到達應(yīng)用高峰。研究分析機構(gòu)Gartner每年都會推出這樣一個分析新興技術(shù)發(fā)展趨勢的技術(shù)炒作周期報告。前段時間,Gartner發(fā)布了2017年的新興技術(shù)炒作周期報告,報告聚焦了前端、后端與平臺發(fā)展的三大趨勢,提出了AI將無所不在(人工智能),體驗將透明化和沉浸式(AR、VR),以及平臺全面數(shù)字化(區(qū)塊鏈)的觀點,建議企業(yè)架構(gòu)師和對技術(shù)創(chuàng)新有追求的人員應(yīng)該積極探索和關(guān)注這三大趨勢,從而了解掌握這三大趨勢對自己公司和自己職業(yè)發(fā)展的未來影響。簡單來說這三大趨勢分別對應(yīng)于括號中我備注的大家平時耳熟能詳?shù)脑~語。從曲線圖可以看出,物聯(lián)網(wǎng)、虛擬助手、深度學(xué)習(xí)、機器學(xué)習(xí)、無人車、納米電子、認知計算以及區(qū)塊鏈正處在炒作的高峰。實際上AR、VR屬于計算機視覺,也可以歸于人工智能范疇,因此總體上來說,未來人工智能將無處不在。
Gartner把深度學(xué)習(xí)、強化學(xué)習(xí)、常規(guī)人工智能、無人車、認知計算、無人機、會話式用戶接口、機器學(xué)習(xí)、智能微塵、智能機器人、智能工作環(huán)境等均列為AI技術(shù)范疇。在人機大戰(zhàn)等吸引眼球的活動助推下,很多AI技術(shù)目前正處在炒作的高峰期。比如深度學(xué)習(xí)、機器學(xué)習(xí)、認知計算以及無人車等。對比2016年的炒作周期曲線可以發(fā)現(xiàn),有些太過超前的概念仍然不慍不火,比如智能微塵。有些概念因為炒作過高已經(jīng)迅速進入到了幻滅期,比如商用無人機去年還處在觸發(fā)期,今年就已經(jīng)接近幻滅期邊緣了。相對而言,正處在炒作高峰的深度學(xué)習(xí)和機器學(xué)習(xí)技術(shù)有望在2到5年內(nèi)達到技術(shù)成熟和模式成熟。
除了人工智能這么火之外,對于軟件工程師,尤其是移動端開發(fā)工程師,有一點我們更要關(guān)注,那就是移動端深度學(xué)習(xí)逐漸成為新的深度學(xué)習(xí)研究趨勢。未來會有越來越多的基于深度學(xué)習(xí)的移動端應(yīng)用出現(xiàn),作為開發(fā)者的我們了解深度學(xué)習(xí)更有助于我們開發(fā)出優(yōu)秀的應(yīng)用,同時提升自身能力,積極抓住機會,應(yīng)對未來各種變化。
什么是機器學(xué)習(xí)(Machine Learning,ML)?
深度學(xué)習(xí)的基礎(chǔ)是機器學(xué)習(xí),事實上深度學(xué)習(xí)只是機器學(xué)習(xí)的一個分支。因此我們要入門深度學(xué)習(xí)就要先了解一些機器學(xué)習(xí)的基礎(chǔ)知識。機器學(xué)習(xí)最基本的做法,是使用算法來解析數(shù)據(jù)、從中學(xué)習(xí),然后對真實世界中的事件做出決策和預(yù)測。與傳統(tǒng)的為解決特定任務(wù)、硬編碼的軟件程序不同,機器學(xué)習(xí)是用大量的數(shù)據(jù)來“訓(xùn)練”,通過各種算法從數(shù)據(jù)中學(xué)習(xí)如何完成任務(wù)。
有人曾舉過一個例子,很形象生動,當(dāng)你使用手機的語音識別進行喚醒時,有沒有想過實現(xiàn)這一功能的全部內(nèi)部流程呢?我們?nèi)粘=换サ拇蟛糠钟嬎銠C程序,都可以使用最基本的命令來實現(xiàn),但是基于機器學(xué)習(xí)的程序卻沒有那么簡單,想象下如何寫一個程序來回應(yīng)喚醒詞,例如“Okay,Google”,“Siri”,和“Alexa”。如果在一個只有你自己和代碼編輯器的房間里,僅使用最基本的指令編寫這個程序,你該怎么做?不妨思考一下……這個問題非常困難。你可能會想像下面的程序:
ifinput_command=='Okey,Google':
run_voice_assistant()
但實際上,你能拿到的只有麥克風(fēng)里采集到的原始語音信號,可能是每秒44,000個樣本點。怎樣才能識別出語音內(nèi)容?或者簡單點,判斷這些信號中是否包含喚醒詞。
如果你被這個問題難住了,不用擔(dān)心。這就是我們?yōu)槭裁葱枰獧C器學(xué)習(xí)。
雖然我們不知道怎么告訴機器去把語音信號轉(zhuǎn)成對應(yīng)的字符串,但我們自己可以。換句話說,就算你不清楚怎么編寫程序,好讓機器識別出喚醒詞“Alexa”,你自己完全能夠 識別出“Alexa”這個詞。由此,我們可以收集一個巨大的數(shù)據(jù)集(dataset),里面包含了大量語音信號,以及每個語音型號是否 對應(yīng)我們需要的喚醒詞。使用機器學(xué)習(xí)的解決方式,我們并非直接設(shè)計一個系統(tǒng)去準確地 辨別喚醒詞,而是寫一個靈活的程序,并帶有大量的參數(shù)(parameters)。通過調(diào)整這些參數(shù),我們能夠改變程序的行為。我們將這樣的程序稱為模型?傮w上看,我們的模型僅僅是一個機器,通過某種方式,將輸入轉(zhuǎn)換為輸出。在上面的例子中,這個模型的輸入是一段語音信號,它的輸出則是一個回答{yes, no},告訴我們這段語音信號是否包含了喚醒詞。
如果我們選擇了正確的模型,必然有一組參數(shù)設(shè)定,每當(dāng)它聽見“Alexa”時,都能觸發(fā)yes的回答;也會有另一組參數(shù),針對“Apricot”觸發(fā)yes。我們希望這個模型既可以辨別“Alexa”,也可以辨別“Apricot”,因為它們是類似的任務(wù)。這時候你大概能猜到了,如果我們隨機地設(shè)定這些參數(shù),模型可能無法辨別“Alexa”,“Apricot”,甚至任何英文單詞。在而大多數(shù)的深度學(xué)習(xí)中,學(xué)習(xí)就是指在訓(xùn)練過程中更新模型的行為(通過調(diào)整參數(shù))。
換言之,我們需要用數(shù)據(jù)訓(xùn)練機器學(xué)習(xí)模型,其過程通常如下:
1.初始化一個幾乎什么也不能做的模型;
2.抓一些有標(biāo)注的數(shù)據(jù)集(例如音頻段落及其是否為喚醒詞的標(biāo)注);
3.修改模型使得它在抓取的數(shù)據(jù)集上能夠更準確執(zhí)行任務(wù);
4.重復(fù)以上步驟2和3,直到模型看起來不錯。
什么是機器學(xué)習(xí)算法?從本質(zhì)上講,機器學(xué)習(xí)采用了可以從數(shù)據(jù)中學(xué)習(xí)和預(yù)測數(shù)據(jù)的算法。這些算法通常來自于統(tǒng)計學(xué),從簡單的回歸算法到?jīng)Q策樹等等。
什么是機器學(xué)習(xí)模型?一般來說,它是指在訓(xùn)練機器學(xué)習(xí)算法后創(chuàng)建的模型構(gòu)件。一旦有了一個經(jīng)過訓(xùn)練的機器學(xué)習(xí)模型,你就可以用它來根據(jù)新的輸入進行預(yù)測。機器學(xué)習(xí)的目的是正確訓(xùn)練機器學(xué)習(xí)算法來創(chuàng)建這樣的模型。
機器學(xué)習(xí)已廣泛應(yīng)用于數(shù)據(jù)挖掘、計算機視覺、自然語言處理、生物特征識別、搜索引擎、醫(yī)學(xué)診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰(zhàn)略游戲和機器人等領(lǐng)域。雖然深度學(xué)習(xí)技術(shù)的發(fā)展,也促進了語音和文本領(lǐng)域的發(fā)展,但變化最顯著的還是屬于計算機視覺領(lǐng)域。而且由于作者是做計算機視覺的,因此這里也沒法深入介紹語音和自然語言處理領(lǐng)域的過多細節(jié),就簡要介紹下計算機視覺領(lǐng)域的技術(shù)發(fā)展和相關(guān)的應(yīng)用,后續(xù)的實驗環(huán)節(jié),大部分也會是基于深度學(xué)習(xí)的圖像應(yīng)用為主。
機器學(xué)習(xí)四要素
針對識別喚醒語的任務(wù),我們將語音片段和標(biāo)注(label)放在一起組成數(shù)據(jù)集。接著我們訓(xùn)練一個機器學(xué)習(xí)模型,給定一段語音,預(yù)測它的標(biāo)注。這種給定樣例預(yù)測標(biāo)注的方式,僅僅是機器學(xué)習(xí)的一種,稱為監(jiān)督學(xué)習(xí)。深度學(xué)習(xí)包含很多不同的方法,我們會在后面的章節(jié)討論。成功的機器學(xué)習(xí)有四個要素:數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)的模型、衡量模型好壞的損失函數(shù)和一個調(diào)整模型權(quán)重來最小化損失函數(shù)的算法。
數(shù)據(jù)(Data)
越多越好。事實上,數(shù)據(jù)是深度學(xué)習(xí)復(fù)興的核心,因為復(fù)雜的非線性模型比其他機器學(xué)習(xí)需要更多的數(shù)據(jù)。
模型(Models)
相關(guān)推薦:
小升初試題、期中期末題、小學(xué)奧數(shù)題
盡在奧數(shù)網(wǎng)公眾號
歡迎使用手機、平板等移動設(shè)備訪問幼教網(wǎng),幼兒教育我們一路陪伴同行!>>點擊查看