一名前端工程師的機器學習之旅

內容來源:2017年6月24日,美登科技前端架構師鄧鋆在「騰訊Web前端大會 TFC 2017」進行《一名前端工程師的機器學習之旅》演講分享。IT 大咖說做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。
前端

閱讀字數:1980 | 4分鐘閱讀算法

嘉賓演講視頻地址: suo.im/4OHKqQ

摘要

美登科技前端工程師鄧鋆分享本身的機器學習之旅心路歷程。編程

將來的前端

多元輸入。現有的輸入從最先的鍵盤鼠標到如今的觸屏,之後可能會是語音和手勢。網絡

另一個方面就是因人而異。我認爲多年之後,可能每一個用戶看到同一個產品的交互都是不同的。在人工智能面前,咱們要作的事情再也不是一個產品,也許會爲每個用戶創造一個新的產品,用最適應這個用戶的方式去改造他的體驗。前端工程師

以及信息層次豐富。信息應該有一種層次化的表達,應該跟隨人的注意力和一些細節的動做主動把一些信息展現出來,而其它的信息更可能是保留在背後,在整個應用中做爲一個暫時沒有接觸到的部分。可是當你須要它的時候,它可以第一時間跳到你面前。架構

還有就是VR和AR。經過近幾年反覆的推廣,這兩個技術已是開始小有成果的狀態了。但何時前端用戶交互之間能被這兩個技術所顛覆,目前還是未知數。機器學習

五分鐘搞懂機器學習

人工智能在近幾年的突破巨大,主要體如今幾個方面。第一個是硬件的突破,第二個是算法的突破,第三個是大數據的存儲。這三件事促使瞭如今機器學習的領域一次又一次大的爆炸。函數

機器學習是什麼

機器學習賦予了計算機「不須要特定的編程而可以自行學習」的能力,經過訓練來解決特定的簡單問題。學習

傳統編程與機器學習

傳統編程最開始是人類去發現需求,而後人類把需求轉化成一個抽象的設計。要實現它必需要有客戶端各類程序和服務端巨大的庫,在此基礎之上再去作相應的開發,逐步分解並解決每個子問題。最後還須要人或者機器來進行測試。而真正交給機器去作的一步只有運行,其它步驟都是須要人工進行操做的。測試

在機器學習的方式下,首先假設要解決一個特定的問題,第一個步驟仍是瞭解需求,能夠預見未來有一天機器可以去發現人類的需求,而後機器去找尋需求的規律。機器自動經過大量的數據、實驗,找到這些事情相互的關聯,這個過程是徹底沒有人工參與的。咱們只是設定了網絡結構和目標函數,除此以外的思考過程都是機器完成的,機器會本身在過後在驗證它的方式。因爲機器須要吃掉大量的數據,因此人類須要準備數據。最後由機器完成執行,人類輔助機器作測試與糾錯。

淺層學習

如上圖所示,右邊區域是咱們的問題,黃色區域裏面有不少的點是咱們所收集到的數據,背景色是咱們找到的解。這幅圖展示的就是經過淺層學習找到了問題的解。可是淺層學習有一個巨大的缺點就是特徵須要人工提早作抽取和處理。

深度學習

深度學習從結構上和淺層學習有巨大的區別,咱們引入了不少hidden layers。如圖所示,在一次乘法、一次加法、一次取極值以後,到最後輸出結果。深度學習就是這樣一個公式。

數據很重要

硬件最大的變化就是對GPU的使用愈來愈頻繁。人工智能深度學習的函數、公式內部涉及的是大量的浮點運算。這些函數在GPU出現以後,有大量的浮點運算就交給GPU。事實上,深度學習在GPU上的執行效率多是在CPU上的30~50倍。GPU也給機器學習帶來了巨大的促進做用。

咱們的嘗試

千里之行始於足下,咱們的第一個目標是想要知道用戶喜歡多大的字體,這是一個很簡單同時也頗有用的事。不一樣年齡用戶喜歡的字體大小都是不同的,老年人比較喜歡偏大的字體,可是年輕人或使用電腦顯示器的會傾向於使用小的字體。這個就是機器學習很擅長解決的預測。

怎麼作

第一步是數據的採集。先要有大量的數據,什麼用戶喜歡多大的字體。第二步就是訓練,把以前採集到的數據經過機器學習的方式去訓練,讓這個網絡擁有根據新用戶的特徵能判斷出用戶喜歡多大字體的能力。還有服務,就是把它最終用到應用內,對前端開放,讓前端程序可以獲得這些用戶信息。再而後就是實際的把這些東西作到前端應用上去。

經常使用函數與網絡結構

預測服務咱們一般會用softmax,要判斷一個用戶屬於哪一個類別,使用softmax來對它進行預測。

在沒有預先知道有幾個類別的時候,可使用k-means讓機器學習告訴咱們是怎樣的狀況,指定分類的數量,而後機器學習自動幫助咱們完成分類。

t-SNE是一個很好的降維方式。降維有一個很大的做用就是數據可視化,咱們能直觀地看到這些數據的分佈。另外一個做用是尋找最近點的命令。

CNN用於處理機器視覺,RNN和LTSM是作流式處理。

DeepQ Learning是近年來機器學習的一個熱點,當機器有幾種選擇的時候,它會盡可能讓機器去預測哪一個選擇最好,而後看這個選擇是否和機器預測的同樣。這就意味着當咱們要解決這類問題的時候,不須要預先準備測試數據,這個算法能夠本身學習。

一些奇奇怪怪的優化

預訓練與組合網絡。預訓練是機器學習中很重要的部分,當你須要解決的問題有些複雜的時候,能夠預訓練網絡的部分組合,這樣能夠大幅提升網絡的訓練速度。

還有就是規則化調整與網絡簡化,以及極端偏見和理性仲裁者。

實際業務

實際上咱們接下來準備去探索一些其它的事情,好比語義搜索、功能推薦、智能推薦、流失防止和催化轉化,以及自動化兼容性測試。

值得一提的是谷歌發佈了deeplearn.js,正式拉開了在前端作機器學習的工業化序幕。

今天的分享就到這裏,謝謝你們!

相關文章
相關標籤/搜索