
內(nèi)容來源:2017年6月24日,美登科技前端架構(gòu)師鄧鋆在“騰訊Web前端大會 TFC 2017”進行《一名前端工程師的機器學(xué)習(xí)之旅》演講分享。IT 大咖說(WeChat_ID:itdakashuo)作為獨家視頻合作方,經(jīng)主辦方和講者審閱授權(quán)發(fā)布。
閱讀字?jǐn)?shù):1980?| 4分鐘閱讀
觀看嘉賓完整演講視頻及PPT,請點擊:http://t.cn/ELJPm9v
摘要
美登科技前端工程師鄧鋆分享自己的機器學(xué)習(xí)之旅心路歷程。
未來的前端
多元輸入。現(xiàn)有的輸入從最早的鍵盤鼠標(biāo)到現(xiàn)在的觸屏,以后可能會是語音和手勢。
另外一個方面就是因人而異。我認(rèn)為多年以后,可能每個用戶看到同一個產(chǎn)品的交互都是不一樣的。在人工智能面前,我們要做的事情不再是一個產(chǎn)品,也許會為每一個用戶創(chuàng)造一個新的產(chǎn)品,用最適應(yīng)這個用戶的方式去改造他的體驗。
以及信息層次豐富。信息應(yīng)該有一種層次化的表達,應(yīng)該跟隨人的注意力和一些細(xì)節(jié)的動作主動把一些信息展示出來,而其它的信息更多是保留在背后,在整個應(yīng)用中作為一個暫時沒有接觸到的部分。但是當(dāng)你需要它的時候,它能夠第一時間跳到你面前。
還有就是VR和AR。通過近幾年反復(fù)的推廣,這兩個技術(shù)已經(jīng)是開始小有成果的狀態(tài)了。但什么時候前端用戶交互之間能被這兩個技術(shù)所顛覆,目前仍是未知數(shù)。
五分鐘搞懂機器學(xué)習(xí)
人工智能在近幾年的突破巨大,主要體現(xiàn)在幾個方面。第一個是硬件的突破,第二個是算法的突破,第三個是大數(shù)據(jù)的存儲。這三件事促使了現(xiàn)在機器學(xué)習(xí)的領(lǐng)域一次又一次大的爆炸。
機器學(xué)習(xí)是什么
機器學(xué)習(xí)賦予了計算機“不需要特定的編程而能夠自行學(xué)習(xí)”的能力,通過訓(xùn)練來解決特定的簡單問題。
傳統(tǒng)編程與機器學(xué)習(xí)
傳統(tǒng)編程最開始是人類去發(fā)現(xiàn)需求,然后人類把需求轉(zhuǎn)化成一個抽象的設(shè)計。要實現(xiàn)它必須要有客戶端各種程序和服務(wù)端巨大的庫,在此基礎(chǔ)之上再去做相應(yīng)的開發(fā),逐步分解并解決每一個子問題。最后還需要人或者機器來進行測試。而真正交給機器去做的一步只有運行,其它步驟都是需要人工進行操作的。
在機器學(xué)習(xí)的方式下,首先假設(shè)要解決一個特定的問題,第一個步驟還是了解需求,可以預(yù)見將來有一天機器能夠去發(fā)現(xiàn)人類的需求,然后機器去找尋需求的規(guī)律。機器自動通過大量的數(shù)據(jù)、實驗,找到這些事情相互的關(guān)聯(lián),這個過程是完全沒有人工參與的。我們只是設(shè)定了網(wǎng)絡(luò)結(jié)構(gòu)和目標(biāo)函數(shù),除此之外的思考過程都是機器完成的,機器會自己在事后在驗證它的方式。由于機器需要吃掉大量的數(shù)據(jù),所以人類需要準(zhǔn)備數(shù)據(jù)。最后由機器完成執(zhí)行,人類輔助機器做測試與糾錯。
淺層學(xué)習(xí)
如上圖所示,右邊區(qū)域是我們的問題,黃色區(qū)域里面有很多的點是我們所收集到的數(shù)據(jù),背景色是我們找到的解。這幅圖展現(xiàn)的就是通過淺層學(xué)習(xí)找到了問題的解。但是淺層學(xué)習(xí)有一個巨大的缺點就是特征需要人工提前做抽取和處理。
深度學(xué)習(xí)
深度學(xué)習(xí)從結(jié)構(gòu)上和淺層學(xué)習(xí)有巨大的區(qū)別,我們引入了很多hidden layers。如圖所示,在一次乘法、一次加法、一次取極值之后,到最后輸出結(jié)果。深度學(xué)習(xí)就是這樣一個公式。
數(shù)據(jù)很重要
硬件最大的變化就是對GPU的使用越來越頻繁。人工智能深度學(xué)習(xí)的函數(shù)、公式內(nèi)部涉及的是大量的浮點運算。這些函數(shù)在GPU出現(xiàn)之后,有大量的浮點運算就交給GPU。事實上,深度學(xué)習(xí)在GPU上的執(zhí)行效率可能是在CPU上的30~50倍。GPU也給機器學(xué)習(xí)帶來了巨大的促進作用。
我們的嘗試
千里之行始于足下,我們的第一個目標(biāo)是想要知道用戶喜歡多大的字體,這是一個很簡單同時也很有用的事。不同年齡用戶喜歡的字體大小都是不一樣的,老年人比較喜歡偏大的字體,但是年輕人或使用電腦顯示器的會傾向于使用小的字體。這個就是機器學(xué)習(xí)很擅長解決的預(yù)測。
怎么做
第一步是數(shù)據(jù)的采集。先要有大量的數(shù)據(jù),什么用戶喜歡多大的字體。第二步就是訓(xùn)練,把之前采集到的數(shù)據(jù)通過機器學(xué)習(xí)的方式去訓(xùn)練,讓這個網(wǎng)絡(luò)擁有根據(jù)新用戶的特征能判斷出用戶喜歡多大字體的能力。還有服務(wù),就是把它最終用到應(yīng)用內(nèi),對前端開放,讓前端程序能夠得到這些用戶信息。再然后就是實際的把這些東西做到前端應(yīng)用上去。
常用函數(shù)與網(wǎng)絡(luò)結(jié)構(gòu)
預(yù)測服務(wù)我們通常會用softmax,要判斷一個用戶屬于哪個類別,使用softmax來對它進行預(yù)測。
在沒有預(yù)先知道有幾個類別的時候,可以使用k-means讓機器學(xué)習(xí)告訴我們是怎樣的情況,指定分類的數(shù)量,然后機器學(xué)習(xí)自動幫助我們完成分類。
t-SNE是一個很好的降維方式。降維有一個很大的作用就是數(shù)據(jù)可視化,我們能直觀地看到這些數(shù)據(jù)的分布。另一個作用是尋找最近點的命令。
CNN用于處理機器視覺,RNN和LTSM是做流式處理。
DeepQ Learning是近年來機器學(xué)習(xí)的一個熱點,當(dāng)機器有幾種選擇的時候,它會盡量讓機器去預(yù)測哪個選擇最好,然后看這個選擇是否和機器預(yù)測的一樣。這就意味著當(dāng)我們要解決這類問題的時候,不需要預(yù)先準(zhǔn)備測試數(shù)據(jù),這個算法可以自己學(xué)習(xí)。
一些奇奇怪怪的優(yōu)化
預(yù)訓(xùn)練與組合網(wǎng)絡(luò)。預(yù)訓(xùn)練是機器學(xué)習(xí)中很重要的部分,當(dāng)你需要解決的問題有些復(fù)雜的時候,可以預(yù)訓(xùn)練網(wǎng)絡(luò)的部分組合,這樣可以大幅提高網(wǎng)絡(luò)的訓(xùn)練速度。
還有就是規(guī)則化調(diào)整與網(wǎng)絡(luò)簡化,以及極端偏見和理性仲裁者。
實際業(yè)務(wù)
實際上我們接下來準(zhǔn)備去探索一些其它的事情,比如語義搜索、功能推薦、智能推薦、流失防止和催化轉(zhuǎn)化,以及自動化兼容性測試。
值得一提的是谷歌發(fā)布了deeplearn.js,正式拉開了在前端做機器學(xué)習(xí)的工業(yè)化序幕。
今天的分享就到這里,謝謝大家!
編者:IT大咖說,轉(zhuǎn)載請標(biāo)明版權(quán)和出處