摘要: 本文可讓你瞭解到,具備創造性的數據處理方法如何才能將深度學習視覺的功能應用於非視覺的領域。
近些年來,深度學習技術已經完全改變了計算機視覺領域。因爲遷移學習和各類各樣的學習資源的出現,任何人均可以經過使用預訓練的模型,將其應用到本身的工做當中,以此得到很是好的結果。隨着深度學習愈來愈商業化,但願它的創造性能應用在不一樣的領域上。html
今天,計算機視覺領域中的深度學習在很大程度上解決了視覺對象的分類、目標檢測和識別問題。在這些領域,深度神經網絡(Deep Neural Network,DNN)的表現要賽過人類。git
即便數據不是可視化的,但你仍然能夠利用這些視覺深度學習模型的力量,主要是卷積神經網絡(Convolutional Neural Network,CNN)。要作到這一點,你必須將數據從非視覺領域遷移到視覺領域(圖像)裏,而後使用一個通過在圖像和數據上訓練過的模型。你將會感嘆這種方法是多麼的強大。github
在本文中,我將介紹3個案例,這是關於公司如何進行創造性地深度學習應用,將視覺深度學習模型應用於非視覺領域。在每個案例中,都會對一個非計算機視覺的問題進行轉換和描述,以便更好地利用適合圖像分類的深度學習模型的能力。網絡
在石油工業中,遊梁式抽油機(Beam pumps)經常用於從地下開採石油和自然氣。它們由鏈接在移動樑上的發動機來提供動力。移動梁將發動機的旋轉運動傳遞給抽油杆的垂直往復運動,抽油杆做爲一個動力泵,再將油輸送到地面上。架構
遊梁式抽油機做爲一種複雜的機械系統,很容易發生故障。爲了方便診斷排查,在抽油機上安裝了一個測功機,用於測量桿上的負載。測量後,繪製出一張測功機的動力泵卡片,圖上顯示了發動機在旋轉循環過程當中每一個部分的負載。機器學習
當遊梁式抽油機出故障的時候,測功機卡片上的形狀會改變。這個時候,一般會邀請專業的技術人員過來檢查卡片,並根據抽油機出現故障的部分來判斷須要採起什麼措施和方法來進行維修。這個過程不只很是耗時,並且還須要很是深刻的專業知識才能有效地解決問題。性能
另外一方面,這個過程看起來有多是能夠自動化完成的,這就是爲何嘗試過典型的機器學習系統而並無取得很好效果的緣由,準確率大約爲60%。學習
將深度學習應用到這個領域的一個公司是Baker Hughes。在這種狀況下,測功機卡片被轉變爲圖像,而後做爲輸入到Imagenet的預訓練模型中。這個結果很是使人印象深入,精度從60%上升到93%,只需採用預訓練的模型並用新的數據對其進行一下微調。通過模型訓練的進一步優化,其精度達到了97%。優化
上圖是Baker Hughes部署的系統示例。在左側,你能夠看到輸入圖像,在右側是故障模式的實時分類。網站
它不只擊敗了之前的基於機器學習的傳統方法,並且公司再也不須要抽油機的技術人員花費大量的時間來排查故障,他們過來就能夠當即進行機械故障修復,從而大大提升了效率。
計算機用戶在使用計算機的時候有獨特的模式和習慣。當你在瀏覽一個網站或在鍵盤上鍵入電子郵件內容的時候,你使用鼠標的習慣是獨一無二的。
在這種特殊的狀況下,Splunk解決了一個問題,即經過使用計算機鼠標的方式來對用戶進行分類。若是你的系統可以根據鼠標使用的方式來識別用戶,那麼這種方法能夠用於欺詐檢測。假設這樣一個狀況:某些人在竊取了別人的用戶名和登陸密碼以後在網上消費。他們使用電腦鼠標的方式是獨一無二的,系統將很容易檢測到這種異常操做,並進一步防止發生欺詐交易,同時也會通知真正的帳戶全部者。
使用特殊的Javascript代碼,能夠收集全部鼠標的行爲活動。軟件每5-10毫秒記錄一次鼠標的行爲。所以,每一個用戶在每一個網頁的行爲數據能夠是5000–10000個數據點。數據表明了兩個挑戰:第一個挑戰是對於每一個用戶來講都是海量的數據,第二個挑戰是每一個用戶的數據集都將包含不一樣多個數據點,這不太方便,由於,一般來講,不一樣長度的序列須要更復雜的深度學習架構。
這個方案是將每一個用戶在每一個網頁上的鼠標活動轉換爲一個單個圖像。在每幅圖像中,鼠標的移動是一條由不一樣的顏色來表示鼠標移動速度的線來表示的,而點擊左鍵和點擊右鍵則是由綠色和紅色的圓圈來表示的。這種處理初始數據的方法解決了上述的兩個問題:首先,全部圖像的大小都相同;其次,如今基於圖像的深度學習模型能夠用於此類數據了。
Splunk使用TensorFlow和Keras爲用戶分類建立了一個深度學習的系統。他們作了2個實驗:
1. 當訪問相相似的頁面時,金融服務網站的用戶組分類:正常客戶與非客戶用戶。一個由2000張圖片組成的相對較小的訓練數據集。在對基於VGG16網絡的一個已修改結構進行了2分鐘的訓練以後,系統可以以80%以上的準確度識別出這兩個類;
2. 用戶的我的分類。該任務是爲一個給定的用戶預測出是真實用戶仍是一個模擬者。提供了一個只有360張圖片的很是小的訓練數據集。基於VGG16網絡,可是因爲考慮到小數據集和減小過分擬合(有可能放棄和批量標準化)而進行了修改。通過了3分鐘的訓練,準確率達到了78%左右,考慮到任務具備的挑戰性,那麼這一點很使人印象深入;
要了解更多相關內容,請參閱描述了系統和實驗過程的完整內容。
在這個例子中,谷歌使用卷積神經網絡來分析錄音並檢測出其中的座頭鯨。這對於科學研究來講頗有幫助,例如跟蹤單個鯨魚的活動、叫聲的特性、鯨魚的數量等等。有趣不是目的,而是如何經過須要利用圖像的卷積神經網絡來處理數據。
將音頻數據轉換成圖像的方法是經過使用光譜圖來實現的。光譜圖是音頻數據基於頻率特徵的視覺來表示的。
在將音頻數據轉換成光譜圖以後,谷歌的研究人員使用了ResNet-50網絡結構來訓練這個模型。他們可以達到如下的性能表現:
讓咱們把焦點從鯨魚叫聲轉移處處理音頻數據時能夠作些什麼。當你建立光譜圖的時候,能夠選擇要使用的頻率,這取決於你所擁有的音頻數據的類型。你將須要給人類的說話聲、座頭鯨的叫聲、或工業設備的錄音設置不一樣的頻率,由於在全部的這些狀況下,最重要的信息是包含在了不一樣的頻段裏。你不得不使用本身的專業領域知識來選擇相關的參數。例如,若是你使用的是人類聲音數據,那麼你的第一選擇應該是梅爾頻率倒譜圖。
目前有一些有比較好的軟件包可用於音頻。Librosa是一個免費的音頻分析Python庫,可使用CPU生成光譜圖。若是你在TensorFlow中開發而且想在GPU上作光譜計算,那也是支持的。
請參考一下這篇文章,瞭解更多的關於谷歌如何處理座頭鯨數據的內容。
綜上所述,本文所闡述的通常方法都遵循了兩個步驟。首先,找到一種將數據轉換成圖像的方法;其次,使用一個通過預訓練的卷積網絡或者從頭開始進行訓練。第一步要比第二步更難,這是須要你必須有創造力的地方,要考慮到若是你的數據能夠轉換成圖像。我但願提供的實例對解決你的問題有所幫助。
本文爲雲棲社區原創內容,未經容許不得轉載。