當前位置:
首頁 > 最新 > 機器學習與神經網路

機器學習與神經網路

一、機器學習的現狀和瓶頸

機器學習如今已算是在互聯網圈家喻戶曉的名詞了。現實生活中其實也早有很多應用,什麼無人駕駛,人臉識別,智能音響等等。去年七月國家發布了《新一代人工智慧發展規劃》,說明人工智慧領域已經上升到了國家戰略層面。身邊一直羨慕的土豪朋友們五年後的長線股也都已經買好了。五年後的事情我不知道,但是對我印象最深的就是去年互聯網大會,原先人們口中的互聯網現在都改名叫傳統互聯網了。當我們還在理解什麼是機器學習的時候,別人已經開公司幫人制定解決方案了。

實際上當前機器學習作為工具商業化較為廣泛的還是在B端,比如一些金融公司會輸出自己的風控能力、反作弊能力。在一些高精密工業領域通過AR AI的技術,已經可以幫助技術人員迅速測量出儀器的指標,並將相關數據回傳至控制系統中。大大滴減少了技術人員手工測量的工作,同時也減少了人工測量數據的誤差。更多的應用場景比如安防領域,通過人臉識別技術可以快速記錄出入人員,從而把非結構化數據變成結構化。

不過機器學習也並不是在所有領域都能發揮出巨大作用,起碼是在現在這個階段。機器學習很多情況是需要很多標註數據來供機器進行學習,通過對標註數據不斷的學習和優化從而使其建立一個泛化的模型,當新的數據通過這個模型時機器便會對其進行分類或者預測。

比如說如果要判斷一個病人是否患有血管癌,就需要有大量被標註的血管病變數據。但這些標註數據的工作是需要非常有臨床經驗的醫生一個一個的去判斷和標註的。一方面是有經驗的專家醫生很少,另一方面對於這類數據本身數量也有限。另外醫療行業對於模型的準確率要求肯定不會亞於無人駕駛。所以不可否認機器學習的應用的確有它的強大之處,但在不同領域中充滿的挑戰也非常多。

二、神經網路演算法

按照慣例,簡單介紹一下神經網路。

1、神經元

人類對事物的感知是通過無數個神經元通過彼此鏈接而形成的一個巨大神經網路,然後每層神經元會將接收到的信號經過處理後逐層傳遞給大腦,最後再由大腦做出下一步決策。神經網路演算法實際上就是在模仿這一生物原理。

2、監督無監督

神經網路演算法是屬於有監督學習的一種。有監督學習實際上就是需要有大量的被標註數據供其學習。反之無監督就是不需要事先對數據進行標註,而是利用演算法挖掘數據中潛在的規律,比如一些聚類演算法。那麼半監督學習,相信也不難理解。

3、權重參數

神經網路演算法中的最小單元即為神經元,一個神經元可能會接受到n個傳遞過來的數據。每條數據在輸入神經元時都需要乘以一個權重值w,然後將n個數據求和,在加上偏置量b。這時得到的值與該神經元的閾值進行比較,最後在通過激活函數輸出處理結果。

4、線性與非線性

但事實上大部分的數據並不是線性可分的,或者說一條直線無法很好的表達這些數據集。這時候怎麼辦呢?這時候一般情況下就會通過增加多個神經元以及激活函數來使模型擬合數據集。

5、激活函數

那麼,什麼是激活函數?說白了,激活函數就是一個能把線性函數掰彎的函數。比如下面的這組數據我們是無法通過一條直線將紅藍兩種數據分隔開。但是通過激活函數,我們甚至可以將一條直線掰成一個圓。這樣我們就可以將兩組數據分隔開了。

所以理論上,我們可以將一條直線做任意的變化使其更加貼近數據集,並選取一條最優曲線即為我們期望的最終訓練模型。那麼我們的目標就很明確了。

6、優化器

但是如何才能找到這麼一條曲線?這時候我們可以引入一系列的優化演算法,比如梯度下降。通過優化演算法對函數求導我們可以使模型中的參數逐漸貼近真實值。同時在優化過程中還需要加入損失函數。

7、損失函數

什麼是損失函數?損失函數說白了可以理解成為一個驗收者。損失函數會去衡量測試數據中的結果與實際值的偏差情況。如果偏差較大就要告訴優化函數繼續優化直到模型完全收斂。常用的損失函數如:交叉熵、平方差等。

8、過擬合欠擬合

不過需要注意的是,如果我們的曲線完美的擬合了所有數據,那麼這條曲線是否即為我們模型的最優曲線呢?答案是否定的。這裡我們還需要考慮一個模型泛化的問題。如果我們訓練了一個模型,但是這個模型僅能在訓練數據集中發揮很大效用,那麼它實際的應用意義其實並不大。我們需要的是通過這個模型能夠讓我們了解到我們未知的信息,而不是已知的。所以我們並不希望這條曲線能夠穿過所有的數據,而是讓它儘可能的描繪出這個數據集。為了防止模型過擬合可以嘗試增加訓練數據同時減小模型複雜度。同樣我們也不可能讓這條曲線完全偏離數據集。

三、深度學習框架

自己推導演算法?自己設計模型?不存在的…大神們早就幫你封裝好了。安心做一個調包俠吧。

沒有訓練數據?沒有測試樣本?不存在的…大神們早就幫你準備好了。安心做一個調參狗吧。

什麼?還是不知道怎麼做?不存在的!下面讓你秒變機器學習大神(裝逼狗)。

Keras

機器學習的框架這裡就不枚舉了,不過Keras還是非常值得提一下。相比Tensorflow,Keras更容易新手上手,封裝的更加高級。建議在嘗試使用框架前先了解或學習一下python,然後直接Keras中文文檔吧。

那麼如何秒變大神?Keras框架中其實已經內置了很多預訓練好的模型,如ResNet50圖片分類器。你只需要將下圖中的代碼複製到你的Keras框架中並運行。然後泡一杯咖啡,想像自己已經成為吳恩達一樣的大神。靜靜的等待著深藏功與名的那一刻的到來。

大概半小時的時間,模型下載安裝完畢。激動人心的時刻終於來臨,趕快來測一下這個模型。從百度上隨便搜索了一張貓的圖片,並將圖片的大小改為224*224像素。然後將圖片放到項目的根目錄中(不要忘記修改代碼中的圖片名稱),最後運行程序。你會發現模型不僅能識別出來是一隻貓,並且還知道是一隻波斯貓。驚不驚喜?刺不刺激?是不是有很多小圖片想要嘗試?趕快玩起來吧。

通過對這個模型的封裝以及作為產品經理的你,相信也可以YY出很多好玩的應用。雖然通過Keras中的預置模型可以讓我們快速體驗機器學習的能力,但是個人建議最好還是自己手動搭建一套簡單的模型會更加幫助理解。Keras是通過Sequential模型線性堆疊網路層。其中一些常用的層Keras已經封裝好了,同時上面說到的激活函數、優化器、損失函數等等也都是任君挑選的。所以想要通過Keras搭建自己的模型其實也不難。上述內容實際上也只是一個拋磚引玉,至少個人也是通過這些才開始對機器學習感興趣的。

想要成為機器學習大神?困難的確存在。不過,作為產品經理起碼要了解演算法的原理以及它的邊界和優勢,能夠知道在不同場景下應用什麼演算法什麼模型可以達到目的。

最後感謝大家的瀏覽,若文中存在理解有誤的地方還望大神指出。

本文由 @宗瀚zone 原創發佈於人人都是產品經理。未經許可,禁止轉載。

題圖來自 Pixabay,基於 CC0 協議

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

谷歌發布Android年度安全報告 機器學習做出突出貢獻
初識機器學習

TAG:機器學習 |