農林漁牧網

您現在的位置是:首頁 > 畜牧業

AI開發者指南丨如何正確理解神經網路和深度學習?

2022-04-17由 音影片流媒體直播 發表于 畜牧業

如何理解深度學習

神經網路定義

神經網路是一組演算法,可以模仿人腦,旨在識別其模式。它們透過一種機器感知、標記或聚類原始輸入來解釋感官資料。他們識別的模式是包含在向量中的數字,無論是影象、聲音、文字還是時間序列,都必須轉換成向量。

AI開發者指南丨如何正確理解神經網路和深度學習?

神經網路幫助我們進行聚類和分類。你可以將它們視為儲存和管理的資料之上的聚類和分類層。它們有助於根據示例輸入之間的相似性對未標記的資料進行分組,並在有要訓練的標記資料集時對資料進行分類。(神經網路還可以提取特徵,這些特徵會被提供給其他演算法進行聚類和分類;因此,你可以將深度神經網路視為涉及強化學習、分類和迴歸演算法的大型機器學習的元件。)

AI開發者指南丨如何正確理解神經網路和深度學習?

一些具體的例子

深度學習將輸入對映到輸出。 它找到相關性。 它被稱為“通用逼近器”,因為它可以學習在任何輸入 x 和任何輸出 y 之間逼近未知函式 f(x) = y,假設它們完全相關(例如透過相關性或因果關係)。 在學習過程中,神經網路會找到正確的 f,或者將 x 轉換為 y 的正確方式,無論是 f(x) = 3x + 12 還是 f(x) = 9x - 0。1。 以下是深度學習可以做什麼的幾個例子。

1)分類

所有分類任務都依賴於標記資料集;也就是說,人類必須將他們的知識轉移到資料集,以便神經網路學習標籤和資料之間的相關性。 這被稱為監督學習。

檢測人臉,識別影象中的人物,識別面部表情(生氣、高興)

識別影象中的物體(停車標誌、行人、車道標記……)

識別影片中的手勢

檢測語音、識別說話者、將語音轉錄為文字、識別語音中的情緒

將文字分類為垃圾郵件(在電子郵件中)或欺詐性(在保險索賠中); 識別文字中的情緒(客戶反饋)

AI開發者指南丨如何正確理解神經網路和深度學習?

2)聚類

聚類或分組是對相似性的檢測。深度學習不需要標籤來檢測相似性。沒有標籤的學習稱為無監督學習。機器學習的一條定律是:演算法可以訓練的資料越多,它就越準確。因此,無監督學習有可能產生高度準確的模型。

搜尋:比較文件、影象或聲音以顯示相似的專案。

異常檢測:檢測相似性的另一方面是檢測異常或異常行為。 在許多情況下,異常行為與您想要檢測和預防的事情高度相關。

AI開發者指南丨如何正確理解神經網路和深度學習?

3)預測分析:迴歸

透過分類,深度學習能夠建立影象中的畫素與人名之間的相關性。你可以將其稱為靜態預測。同樣的道理,如果有足夠多的正確資料,深度學習能夠在當前事件和未來事件之間建立關聯。它可以在過去和未來之間執行迴歸。未來事件在某種意義上就像標籤。深度學習不一定在意時間,也不一定在意尚未發生的事情。給定一個時間序列,深度學習可能會讀取一串數字並預測接下來最有可能出現的數字。

硬體故障(資料中心、製造、運輸)

健康問題(基於重要統計資料和可穿戴裝置資料的中風、心臟病發作)

使用者流失(根據網路活動和元資料預測使用者流失的可能性)

我們預測得越好,我們就能越好地預防和預防。藉助神經網路,我們也正在邁向一個更智慧的世界,將神經網路與其他演算法(如強化學習)相結合以實現更多的目標。

AI開發者指南丨如何正確理解神經網路和深度學習?

透過對深度學習用例的簡要概述,讓我們看看神經網路是由什麼組成的。

神經網路元素

深度學習是我們用於“堆疊神經網路”的名稱;即由多層組成的網路。

層由節點組成節點只是計算發生的地方,類似人腦中的神經元,當它遇到足夠的刺激時就會啟用。一個節點將來自資料的輸入與一組係數或權重相結合,這些係數或權重可以放大或抑制該輸入,從而為演算法嘗試學習的任務賦予輸入重要性。這些輸入權重乘積被求和,然後總和透過一個節點的所謂啟用函式,以確定該訊號是否以及在多大程度上應該透過網路進一步傳播以影響最終結果,例如分類行為。如果訊號透過,則神經元已被“啟用”。

大致流程如下圖所示:

AI開發者指南丨如何正確理解神經網路和深度學習?

節點層是一排類似神經元的開關,當輸入透過網路饋送時,這些開關會開啟或關閉。每個層的輸出同時是後續層的輸入,從接收資料的初始輸入層開始。

AI開發者指南丨如何正確理解神經網路和深度學習?

將模型的可調整權重與輸入特徵配對是我們如何根據神經網路如何對輸入進行分類和聚類來為這些特徵分配權重。

深度神經網路的關鍵概念

深度學習網路與更常見的單隱藏層神經網路的區別在於它們的深度;也就是說,在模式識別的多步驟過程中,資料必須透過的節點層數。

早期版本的神經網路(如第一個感知器)是淺層的,由一個輸入層和一個輸出層組成,中間最多有一個隱藏層。

超過三層(包括輸入和輸出)就可以稱為“深度”學習。

So deep 不僅僅是一個流行詞,它讓演算法看起來像是在讀薩特,聽你還沒有聽說過的樂隊。這是一個嚴格定義的術語,表示多個隱藏層。

在深度學習網路中,每一層節點都根據前一層的輸出在一組不同的特徵上進行訓練。越深入神經網路,節點可以識別的特徵就越複雜,因為它們聚合和重新組合來自前一層的特徵。

AI開發者指南丨如何正確理解神經網路和深度學習?

這被稱為

特徵層次結構

,它是一個複雜性和抽象性不斷增加的層次結構。它使深度學習網路能夠處理具有數十億個透過非線性函式的引數的非常大的高維資料集。

最重要的是,這些神經網路能夠發現未標記、非結構化資料中的潛在結構。非結構化資料的另一個詞是原始媒體。即圖片、文字、影片和錄音。因此,深度學習最能解決的問題之一是處理和聚類世界上原始的、未標記的媒體,辨別資料中的相似之處和異常,這些資料沒有人在關係資料庫中組織過或從未命名過。

例如,深度學習可以拍攝一百萬張影象,並根據它們的相似性對它們進行聚類:一個角落是貓,另一個角落是破冰船,還有三分之一是你祖母的所有照片。這就是所謂的智慧相簿的基礎。

現在將相同的想法應用於其他資料型別:深度學習可能會聚類原始文字,例如電子郵件或新聞文章。充滿憤怒抱怨的電子郵件可能會聚集在向量空間的一個角落,而滿意的客戶或垃圾郵件訊息可能會聚集在其他角落。這是各種訊息過濾器的基礎,可用於客戶關係管理 (CRM)。這同樣適用於語音訊息。

AI開發者指南丨如何正確理解神經網路和深度學習?

對於

時間序列

,資料可能會聚集在正常/健康行為和異常/危險行為的周圍。如果時間序列資料是由智慧手機生成的,它將提供對使用者健康和習慣的洞察;如果它是由汽車零件產生的,它可能被用來防止災難性的故障。

與大多數傳統機器學習演算法不同,

深度學習網路無需人工干預即可執行自動特徵提取。

鑑於特徵提取是一項需要資料科學家團隊數年才能完成的任務,深度學習是一種繞過有限瓶頸的方法。

在對未標記資料進行訓練時,深度網路中的每個節點層都會透過反覆嘗試重構從中抽取樣本的輸入來自動學習特徵,嘗試最小化網路猜測與輸入資料本身的機率分佈之間的差異。例如,受限玻爾茲曼機以這種方式建立所謂的重建。

在這個過程中,這些神經網路學會識別某些相關特徵與最佳結果之間的相關性——它們在特徵訊號和這些特徵代表的含義之間建立聯絡,無論是完全重建還是標記資料。

AI開發者指南丨如何正確理解神經網路和深度學習?

然後,在標記資料上訓練的深度學習網路可以應用於非結構化資料,使其能夠獲得比機器學習網路更多的輸入。這是提高效能的秘訣:網路可以訓練的資料越多,它就越準確。 (在大量資料上訓練的糟糕演算法可以勝過在很少資料上訓練的好演算法。)

深度學習處理和學習大量未標記資料的能力使其比以前的演算法具有明顯的優勢。

深度學習網路在輸出層結束:

邏輯或 softmax 分類器,為特定結果或標籤分配可能性。我們稱之為預測,但它是廣義的預測。給定影象形式的原始資料,深度學習網路可能會決定,例如,輸入資料有 90% 的可能性代表一個人。

1)前饋網路

我們使用神經網路的目標是儘可能快地到達誤差最小的點。舉個例子,跑步比賽中,比賽圍繞著一條賽道進行,所以我們在一個迴圈中反覆透過相同的點。 比賽的起點是我們的權重被初始化的狀態,終點是那些引數能夠產生足夠準確的分類和預測時的狀態。

比賽本身涉及許多步驟,而這些步驟中的每一步都類似於之前和之後的步驟。 就像跑步者一樣,我們會一遍又一遍地進行重複的動作以到達終點。 神經網路的每一步都涉及猜測、誤差測量和權重的輕微更新,對係數的增量調整,因為它會慢慢學會關注最重要的特徵。

權重的集合,無論它們處於起始狀態還是結束狀態,也稱為模型,因為它試圖對資料與真實標籤的關係進行建模,以掌握資料的結構。模型通常開始時很糟糕,隨著神經網路更新其引數而隨著時間的推移而變化,最終會變得不那麼糟糕。

這是因為神經網路是在無知中誕生的。它不知道哪些權重和偏差可以最好地轉換輸入以做出正確的猜測。它必須從猜測開始,然後隨著它從錯誤中吸取教訓,嘗試按順序做出更好的猜測。 (你可以把神經網路想象成一個孩子:他們生來就知之甚少,並且透過接觸生活經驗,他們慢慢學會解決世界上的問題。對於神經網路來說,資料是唯一的經驗。)

以下是對前饋神經網路學習過程中發生的事情的簡單解釋,也是最簡單的架構。

輸入進入網路。

係數或權重將輸入對映到網路最後做出的一組猜測。

輸入 * 權重 = 猜測

加權輸入導致對輸入是什麼的猜測。 然後神經系統將其猜測與資料的基本事實進行比較,有效地詢問專家“我做對了嗎?”

基本事實 - 猜測 = 錯誤

網路的猜測和真實情況之間的區別在於它的錯誤。網路測量該誤差,並將誤差遍歷其模型,根據它們對誤差的貢獻程度調整權重。

誤差 * 權重對誤差的貢獻 = 調整

上面的三個偽數學公式解釋了神經網路的三個關鍵功能:

對輸入進行評分、計算損失和對模型應用更新——重新開始三步過程。

神經網路是一個糾正性反饋迴圈,獎勵支援其正確猜測的權重,懲罰導致其出錯的權重。

2)多元線性迴歸

儘管名稱受生物學啟發,但人工神經網路與任何其他機器學習演算法一樣,只不過是數學和程式碼。事實上,任何瞭解線性迴歸的人都可以理解神經網路的工作原理。在最簡單的形式中,線性迴歸表示為:

Y_hat = bX + a

其中 Y_hat 是估計的輸出,X 是輸入,b 是斜率,a 是二維圖垂直軸上一條線的截距。 可以想象,每次向 X 新增一個單位時,因變數 Y_hat 都會按比例增加,無論在 X 軸上走多遠。一起向上或向下移動的兩個變數之間的這種簡單關係是一個起點。

下一步是想象多元線性迴歸,其中有許多輸入變數產生一個輸出變數。它通常是這樣表達的:

Y_hat = b_1*X_1 + b_2*X_2 + b_3*X_3 + a

現在,這種形式的多元線性迴歸正在神經網路的每個節點上發生。對於單層的每個節點,來自前一層每個節點的輸入與來自其他每個節點的輸入重新組合。也就是說,輸入根據它們的係數以不同的比例混合,這些係數不同,導致進入後續層的每個節點。透過這種方式,網路測試哪個輸入組合在試圖減少錯誤時是重要的。

一旦對節點輸入求和以到達 Y_hat,它就會透過一個非線性函式。原因如下:如果每個節點只進行多元線性迴歸,Y_hat 會隨著 X 的增加而無限制地線性增加,但這不符合我們的目的。

我們試圖在每個節點上構建的是一個開關(如神經元……),它可以開啟和關閉,這取決於它是否應該讓輸入訊號透過以影響網路的最終決策。

當你有一個開關時,你有一個分類問題。輸入的訊號是否表明節點應該將其分類為足夠、或不足夠、開或關?二元決策可以用 1 和 0 表示,邏輯迴歸是一個非線性函式,它壓縮輸入以將其轉換為 0 和 1 之間的空間。

每個節點的非線性變換通常是類似於邏輯迴歸的 S 形函式。它們以 sigmoid(希臘語中的“S”一詞)、tanh、hard tanh 等名稱命名,它們塑造了每個節點的輸出。所有節點的輸出,每個節點都被壓縮成 0 到 1 之間的 S 形空間,然後作為輸入傳遞到前饋神經網路中的下一層,依此類推,直到訊號到達網路的最後一層,其中做出決定。

3)梯度下降

一種根據權重引起的誤差調整權重的常用最佳化函式的名稱稱為“梯度下降”。

梯度是斜率的另一種說法,斜率在 xy 圖上以其典型形式表示兩個變數如何相互關聯:隨時間變化的增長、貨幣變化等。在這種特殊情況下,我們關心的斜率描述了網路誤差和單個權重之間的關係;也就是說,隨著權重的調整,誤差是如何變化的。

更準確地說,哪個權重產生的誤差最小?哪一個正確表示輸入資料中包含的訊號,並將它們轉換為正確的分類?哪個可以在輸入影象中聽到“鼻子”,並且知道應該將其標記為人臉而不是煎鍋?

隨著神經網路的學習,它會慢慢調整許多權重,以便它們可以正確地將訊號對映到含義。網路誤差與每個權重之間的關係是一個導數 dE/dw,它衡量權重的輕微變化導致誤差輕微變化的程度。

每個權重只是涉及許多變換的深度網路中的一個因素;權重的訊號經過多個層的啟用和求和,因此我們使用微積分的鏈式法則返回網路的啟用和輸出,最終得出所討論的權重及其與總體誤差的關係。

微積分中的鏈式法:

AI開發者指南丨如何正確理解神經網路和深度學習?

在前饋網路中,網路誤差和單個權重之間的關係如下所示:

AI開發者指南丨如何正確理解神經網路和深度學習?

也就是說,給定兩個變數 Error 和 weight,它們由第三個變數啟用(權重透過該變數傳遞)介導,可以透過首先計算啟用的變化如何影響來計算權重的變化如何影響 Error 的變化 Error 的變化,以及權重的變化如何影響啟用的變化。

深度學習中學習的本質無非是:根據模型產生的誤差調整模型的權重,直到無法再減少誤差為止。

4)邏輯迴歸

在許多層的深度神經網路上,最後一層具有特殊的作用。在處理標記輸入時,輸出層對每個示例進行分類,應用最可能的標籤。輸出層上的每個節點代表一個標籤,該節點根據它從前一層的輸入和引數接收到的訊號強度開啟或關閉。

每個輸出節點產生兩種可能的結果,二進位制輸出值 0 或 1,因為輸入變數要麼值得一個標籤,要麼不值得。畢竟,沒有一點懷孕這回事。

雖然處理標記資料的神經網路產生二進位制輸出,但它們接收的輸入通常是連續的。也就是說,網路作為輸入接收的訊號將跨越一系列值幷包括任意數量的指標,具體取決於它尋求解決的問題。

例如,推薦引擎必須就是否投放廣告做出二元決策。但它做出決定所依據的輸入可能包括使用者上週在亞馬遜上花費了多少,或者該使用者訪問該網站的頻率。

因此,輸出層必須將諸如花在購物上的 67。59 美元和對網站的 15 次訪問等訊號壓縮到 0 到 1 之間的範圍內;即給定輸入是否應該被標記的機率。

我們用來將連續訊號轉換為二進位制輸出的機制稱為邏輯迴歸。這個名字很不幸,因為邏輯迴歸用於分類而不是大多數人熟悉的線性迴歸。它計算一組輸入與標籤匹配的機率。

AI開發者指南丨如何正確理解神經網路和深度學習?

讓我們研究一下這個小公式。

對於要表示為機率的連續輸入,它們必須輸出正結果,因為不存在負機率之類的東西。這就是為什麼將輸入視為分母中 e 的指數的原因——因為指數迫使我們的結果大於零。現在考慮 e 的指數與分數 1/1 的關係。一個,正如我們所知,是機率的上限,超過這個上限,我們的結果就會變得荒謬。 (我有 120% 的把握。)

隨著觸發標籤的輸入 x 的增長,x 的表示式 e 向零收縮,留下 1/1 或 100% 的分數,這意味著我們接近(但從未完全達到)標籤適用的絕對確定性。與你的輸出負相關的輸入的值將被 e 指數上的負號翻轉,並且隨著負訊號的增長,x 的 e 量變得更大,從而使整個分數越來越接近於零。

現在想象一下,不是將 x 作為指數,而是所有權重及其相應輸入的乘積之和——透過網路的總訊號。這就是你在神經網路分類器的輸出層輸入邏輯迴歸層的內容。

透過這一層,我們可以設定一個決策閾值,高於該閾值的示例標記為 1,低於該閾值則不標記。你可以根據自己的喜好設定不同的閾值——低閾值會增加誤報的數量。

神經網路與人工智慧

在某些圈子裡,神經網路是人工智慧的同義詞。在另一些情況下,它們被認為是一種“蠻力”技術,其特點是缺乏智慧,因為它們從一張白紙開始,然後透過敲擊獲得準確的模型。透過這種解釋,神經網路是有效的,但其建模方法效率低下,因為它們不對輸出和輸入之間的功能依賴性做出假設。

值得一提的是,最重要的人工智慧研究小組正在透過訓練越來越大的神經網路來推動該學科的發展。蠻力有效。例如 OpenAI 對更通用 AI 的追求強調了一種蠻力方法,這在 GPT-3 等知名模型中已被證明是有效的。

AI開發者指南丨如何正確理解神經網路和深度學習?

像 Hinton 的膠囊網路這樣的演算法需要更少的資料例項來收斂到一個準確的模型;也就是說,目前的研究有可能解決深度學習的蠻力低效問題。

雖然神經網路可用作函式逼近器,在許多感知任務中將輸入對映到輸出,以實現更通用的智慧,但它們可以與其他 AI 方法結合來執行更復雜的任務。例如,深度強化學習將神經網路嵌入強化學習框架中,它們將動作對映到獎勵以實現目標。 Deepmind 在電競和圍棋中的勝利就是很好的例子。

現實場景中的AI應用示例:

人工智慧已經走進我們的生活,並應用於各個領域,它不僅給行業帶來了巨大的經濟效益,也為我們的生活帶來了許多改變和便利。

TSINGSEE青犀影片基於多年影片領域的技術經驗積累,在人工智慧技術+影片領域,也不斷研發,將AI檢測、智慧識別技術融合到各個影片應用場景中,如:安防監控、影片中的人臉檢測、人流量統計、危險行為(攀高、摔倒、推搡等)檢測識別等。典型的示例如EasyCVR影片融合雲服務,具有AI人臉識別、車牌識別、語音對講、雲臺控制、聲光告警、監控影片分析與資料彙總的能力。

AI開發者指南丨如何正確理解神經網路和深度學習?