編譯|荷葉
來源|雲起社區
摘要:深度學習背後的主要原因是人工智能應該從人腦中汲取靈感。本文用壹個沒有死角的小例子來介紹深度學習!
人腦模擬
深度學習背後的主要原因是人工智能應該從人腦中汲取靈感。這個觀點引出了“神經網絡”這個術語。人類的大腦包含數十億個神經元,神經元之間有數萬個連接。在很多情況下,深度學習算法類似於人腦,因為人腦和深度學習模型都有大量的編譯單元(神經元)。這些編譯單元(神經元)在獨立的情況下並不是很智能,但是在相互作用時會變得智能。
我認為人們需要知道深度學習正在使許多幕後的事情變得更好。深度學習已經被應用到谷歌搜索和圖片搜索中,通過它妳可以搜索“擁抱”這樣的詞,得到相應的圖片。傑弗裏·辛頓
神經元
神經網絡的基本構件是人工神經元,它模仿人腦的神經元。這些神經元是簡單而強大的計算單元,它們對輸入信號進行加權,並使用激活函數來生成輸出信號。這些神經元分布在神經網絡的幾層中。
輸入輸入輸出重量激活被激活。
人工神經網絡的工作原理是什麽?
深度學習由壹個人工神經網絡組成,它模擬了人腦中的壹個類似網絡。當數據經過這個人工網絡時,每壹層都會處理這個數據的壹個方面,過濾掉異常值,識別出熟悉的實體,產生最終的輸出。
輸入層:這壹層由神經元組成,神經元只接收輸入信息並傳遞給其他層。輸入圖層的數量應等於數據集中屬性或要素的數量。輸出層:輸出層是預測性的,主要看妳建立的模型類型。隱式層:基於模型類型,隱式層位於輸入層和輸出層之間。隱藏層包含大量的神經元。隱藏層的神經元會先對輸入的信息進行轉換,然後再傳遞下去。隨著網絡被訓練,權重被更新,使其更具前瞻性。
神經元的權重
權重是指兩個神經元之間連接的強度或幅度。如果您熟悉線性回歸,您可以將輸入權重與我們在回歸方程中使用的系數進行比較。權重通常被初始化為小的隨機值,比如0-1。
前饋深度網絡
前饋監督神經網絡是第壹個也是最成功的學習算法。這種網絡也可以稱為深度網絡、多層感知器(MLP)或簡單神經網絡,並用單個隱藏層來說明原始架構。每個神經元通過壹定的權重與另壹個神經元相關聯。
網絡向前處理輸入信息,激活神經元,最終產生輸出值。在這個網絡中,這被稱為前向傳送。
輸入層輸入層隱藏層輸出層輸出層輸出層
激活功能
激活函數是總加權輸入到神經元輸出的映射。它被稱為激活函數或傳遞函數,因為它控制著激活神經元的初始值和輸出信號的強度。
數學上表示為:
我們有很多激活函數,其中最常用的有整流線性單位函數,雙曲正切函數,solfPlus函數。
激活函數的快速查找表如下:
反向傳播
在網絡中,我們將預測值與期望輸出值進行比較,並使用函數計算其誤差。然後,這個誤差會被送回這個網絡,壹層壹層的,通過找出它造成的誤差值來更新權重。這種巧妙的數學方法就是反向傳播算法。這壹步將在訓練數據的所有樣本中重復,整個訓練數據集的網絡更新輪稱為壹個周期。壹個網絡可以訓練幾十期、幾百期、幾千期。
預測誤差
成本函數和梯度下降
成本函數衡量神經網絡對於給定的訓練輸入和預期輸出有多好。該函數可能取決於諸如重量和偏差之類的屬性。
代價函數是單值的,而不是向量,因為它從整體上評估神經網絡的性能。當使用梯度下降優化算法時,權重將在每個周期後遞增地更新。
兼容成本函數
數學上表示為差的平方和:
目標輸出值
權重更新的幅度和方向通過在成本梯度的相反方向上采取步驟來計算。
其中η是學習率
其中,δw是包含每個權重系數w的權重更新的向量,其計算如下:
目標輸出值
圖表中將考慮單個系數的成本函數。
初始重量初始重量梯度全局成本最小成本最小值
我們會壹直計算梯度下降,直到導數達到最小誤差值,每壹步都取決於斜率(梯度)的陡度。
多層感知器(正向傳播)
這種網絡由多層神經元組成,通常以前饋方式(前向傳播)相互連接。壹層中的每個神經元可以直接連接到下壹層中的神經元。在許多應用中,這些網絡的單元將采用S型函數或整流器線性單元(整流器線性激活)函數作為激活函數。
現在考慮找出處理時間的數量,給定賬戶和家庭成員作為輸入。
為了解決這個問題,首先,我們需要創建壹個前向傳播神經網絡。我們的輸入層將是家庭成員和賬戶的數量,隱藏層將是1,輸出層將是處理次數。
以輸入層到輸出層的給定權重為輸入:家庭成員數為2,賬戶數為3。
現在將通過以下步驟使用前向傳播來計算隱藏層(I,j)和輸出層(k)的值。
步驟:
1,乘法-加法。
2、點積(輸入*重量)。
3.壹次向前傳播壹個數據點。
4.輸出是這個數據點的預測。
I的值將根據與連接的神經元相對應的輸入值和權重來計算。
i = (2 * 1) + (3* 1) → i = 5
同理,j =(2 *-1)+(3 * 1)→j = 1。
K = (5 * 2) + (1* -1) → k = 9
Python中多層感知器問題的解決方案
激活功能的使用
為了使神經網絡達到其最大預測能力,我們需要在隱藏層中應用壹個激活函數來捕捉非線性。我們通過將值代入方程,在輸入層和輸出層應用激活函數。
這裏我們使用整流線性激活(ReLU):
用Keras開發第壹個神經網絡
關於Keras:
Keras是高級神經網絡的應用編程接口,用Python編寫,可以建立在TensorFlow、CNTK或Theano上。
使用PIP在設備上安裝Keras,並運行以下說明。
在keras中執行深度學習程序的步驟
1,加載數據;
2、創建模型;
3.編譯模型;
4、模型擬合;
5、評價模型。
開發Keras模型
全連通層用密集表示。我們可以指定層中神經元的個數作為第壹個參數,初始化方法作為第二個參數,也就是初始化參數,用激活參數確定激活函數。既然已經創建了模型,我們就可以編譯它了。我們在底層庫(也叫後端)用高效的數字庫編譯模型,底層庫可以用Theano或者TensorFlow。到目前為止,我們已經完成了模型的創建和編譯,為有效的計算做好了準備。現在,您可以在PIMA數據上運行模型。我們可以在模型上調用擬合函數f(),對數據進行模型的訓練或擬合。
先說KERAS的節目。
神經網絡已被訓練到150個周期,並返回準確的值。