Chainer - 神經網路
神經網路是一種計算模型,其靈感來自於人腦的結構和功能。它由相互連線的節點層(即神經元)組成,每個節點處理輸入資料並將結果傳遞到下一層。網路透過根據預測誤差調整這些連線的權重來學習執行任務。
這個學習過程通常被稱為訓練,它使神經網路能夠識別模式、分類資料和進行預測。它們廣泛應用於機器學習,用於影像識別、自然語言處理等任務。
神經網路的結構
神經網路是一種模仿人腦中神經元工作方式的計算模型。它由稱為神經元的節點層組成,這些節點透過邊或權重連線。典型的神經網路具有輸入層、一個或多個隱藏層和輸出層。以下是神經網路的詳細結構:
輸入層
輸入層是神經網路的第一層,作為將由網路處理的資料的入口點。它不執行任何計算,而是將資料直接傳遞到網路中的下一層。
以下是輸入層的主要特徵:
- 節點/神經元:輸入層中的每個節點代表輸入資料中的一個特徵。例如,如果我們有一張 28x28 畫素的影像,則輸入層將有 784 個節點,即每個畫素一個。
- 資料表示:輸入資料通常在饋送到輸入層之前進行歸一化或標準化,以確保所有特徵具有相同的比例,這有助於提高神經網路的效能。
- 無啟用函式:與隱藏層和輸出層不同,輸入層不應用啟用函式。它的主要作用是將原始輸入特徵分發到後續層進行進一步處理。
隱藏層
隱藏層位於神經網路的輸入層和輸出層之間。它們被稱為“隱藏”是因為它們的輸出在輸入資料或最終輸出預測中不可見。
這些層的主要作用是透過多個階段處理和轉換資料,使網路能夠學習複雜的模式和特徵。這種轉換是透過加權連線和非線性啟用函式實現的,這使得網路能夠捕捉資料中的複雜關係。
以下是輸入層的主要特徵:
- 節點/神經元:每個隱藏層包含多個神經元,這些神經元將權重應用於它們接收的輸入,並將結果透過啟用函式。神經元和層的數量可以根據任務的複雜性而變化。
- 權重和偏差:隱藏層中的每個神經元都有相關的權重和偏差,這些權重和偏差在訓練過程中會進行調整。這些引數有助於網路學習資料中的關係和模式。
- 啟用函式:隱藏層通常使用啟用函式來向模型引入非線性。常見的啟用函式如下:
- ReLU(修正線性單元):ReLU(𝑥)=max(0,𝑥)
- Sigmoid:𝜎(𝑥)=1/(1+e-x)
- Tanh(雙曲正切):tanh(x) = (ex - e-x)/(ex + e-x)
- Leaky ReLU:Leaky ReLU(x) = max(0.01x,x)
- 學習和特徵提取:隱藏層是大部分學習發生的地方。它們將輸入資料轉換為更適合當前任務的表示。每個後續隱藏層都基於前一層提取的特徵構建,這允許網路學習複雜的模式。
- 深度和複雜性:隱藏層的數量和每層中的神經元數量決定了網路的深度和複雜性。更多的隱藏層和神經元通常允許網路學習更復雜的模式,但也增加了過擬合的風險,並需要更多的計算資源。
輸出層
輸出層是神經網路的最後一層,它產生網路的預測或結果。這一層根據前面隱藏層應用的轉換,直接生成與給定輸入資料相對應的輸出。
輸出層中的神經元數量通常與模型預期預測的類別或連續值的數量相匹配。輸出通常透過啟用函式(例如分類任務中的softmax)傳遞,以提供可能的類別上的機率分佈。
以下是輸出層的主要特徵:
- 節點/神經元:輸出層中神經元的數量對應於問題中的類別或目標變數的數量。例如,在二元分類問題中,將會有一個神經元或在某些設定中會有兩個神經元。在具有 10 個類別的多類別分類問題中,將會有 10 個神經元。
- 啟用函式:輸出層中的啟用函式透過使它們適合特定型別的預測任務(如分類、迴歸等)來發揮作用,塑造神經網路的最終輸出。啟用函式的選擇直接影響對網路預測的解釋。常見的啟用函式如下:
- 分類任務:通常使用softmax啟用函式進行多類分類,它將輸出轉換為類別上的機率分佈;或使用sigmoid進行二元分類。
- 迴歸任務:通常使用線性啟用函式,因為目標是預測連續值而不是類別。
- Tanh(雙曲正切):tanh(x) = (ex - e-x)/(ex + e-x)
- Leaky ReLU:Leaky ReLU(x) = max(0.01x,x)
- 輸出:輸出層提供網路的最終結果,這可能是機率、類別標籤或連續值,具體取決於任務型別。在分類任務中,輸出值最高的神經元通常表示預測的類別。
神經網路的型別
神經網路有多種架構,每種架構都針對特定型別的資料和任務進行定製。以下是主要型別神經網路的詳細概述:
前饋神經網路 (FNNs)
前饋神經網路 (FNNs) 是一類基本的人工神經網路,其特點是資訊單向流動。在這些網路中,資料單向流動,即從輸入層到任何隱藏層,最後到輸出層。這種架構確保節點(神經元)之間的連線中沒有迴圈。
以下是 FNNs 的主要特徵:
- 架構:FNNs 由如下三個主要層組成:
- 輸入層:此層接收初始資料特徵。
- 隱藏層:處理資料並提取相關特徵的中間層。這些層中的神經元將其輸入應用於啟用函式。
- 輸出層:此最終層產生網路的輸出,可以是分類標籤、機率或連續值。
- 前向傳播:資料從輸入層移動到輸出層。每個神經元處理其輸入並將結果傳遞到下一層。
- 啟用函式:這些函式透過允許網路對更復雜的關係進行建模,將非線性引入網路。典型的啟用函式包括 ReLU、sigmoid 和 tanh。
- 訓練:FNNs 使用反向傳播和梯度下降等方法進行訓練。此過程包括更新網路的權重以減少預測結果與實際結果之間的誤差。
- 應用:FNNs 應用於影像識別、語音處理和迴歸分析等各個領域。
卷積神經網路 (CNNs)
卷積神經網路 (CNNs) 是一種專門設計用於處理具有網格拓撲的資料(例如影像)的神經網路。它們對於涉及空間層次結構和模式的任務(例如影像和影片識別)特別有效。
以下是 CNNs 的主要特徵:
- 架構:CNNs 由如下三個主要層組成:
- 卷積層:這些層將卷積濾波器應用於輸入資料。每個濾波器掃描輸入以檢測特定特徵,例如邊緣或紋理。卷積運算產生突出顯示這些特徵存在的特徵圖。
- 池化層:此層也稱為子取樣或下采樣層。池化層減少特徵圖的空間維度,同時保留重要資訊。常見的池化操作包括最大池化(選擇最大值)和平均池化(計算平均值)。
- 全連線層:經過幾個卷積層和池化層後,高階特徵圖被展平成一維向量,並透過全連線層。這些層根據提取的特徵執行最終分類或迴歸。
- 前向傳播:在 CNNs 中,資料透過一系列卷積層、池化層和全連線層移動。每個卷積層檢測特徵,池化層減少維度,全連線層進行最終預測。
- 啟用函式:CNNs 使用 ReLU(修正線性單元)等啟用函式來引入非線性,這有助於網路學習複雜的模式。根據任務的不同,還可以使用 sigmoid 和 tanh 等其他啟用函式。
- 訓練:CNNs 使用反向傳播和隨機梯度下降 (SGD) 等最佳化演算法進行訓練。在訓練過程中,網路學習卷積濾波器和權重的最佳值,以最小化預測結果與實際結果之間的誤差。
- 應用:CNNs 廣泛用於計算機視覺任務,例如影像分類、目標檢測和影像分割。它們也應用於醫學影像分析和自動駕駛等領域,在這些領域中,空間模式和層次結構至關重要。
長短期記憶網路 (LSTMs)
LSTMs 是一種迴圈神經網路 (RNN),旨在解決從順序資料中學習的特定挑戰,特別是長期依賴和梯度消失問題。它們透過引入允許它們在較長時間內保留資訊的專用元件來增強基本 RNN 架構。
以下是 LSTMs 的主要特徵:
- 架構:以下是 LSTMs 網路架構的詳細資訊:
- 細胞狀態:LSTMs 包含一個細胞狀態,它充當記憶單元,透過在不同的時間步長上傳遞資訊來發揮作用。透過允許它保留來自先前輸入的相關資訊,此狀態在網路中得到更新和維護。
- 門:LSTMs 使用門來控制資訊進出細胞狀態的流動。這些門包括:
- 遺忘門:此門決定應從細胞狀態中丟棄哪些資訊。
- 輸入門:這控制向細胞狀態新增新資訊。
- 輸出門:此門調節細胞狀態的哪一部分應輸出並傳遞到下一個時間步長。
- 隱藏狀態:除了細胞狀態外,LSTMs 還維護一個隱藏狀態,該狀態表示網路在每個時間步長的輸出。隱藏狀態根據細胞狀態進行更新,並影響網路做出的預測。
- 前向傳播:在正向傳播過程中,LSTMs逐步處理輸入資料,更新單元狀態和隱藏狀態。門控機制調節資訊流,確保保留相關資訊並過濾掉無關資訊。每個時間步長的最終輸出都來自隱藏狀態,該狀態包含單元狀態的資訊。
- 啟用函式:LSTMs 使用諸如 sigmoid 和 tanh 等啟用函式來管理門控機制並更新單元狀態和隱藏狀態。sigmoid 函式用於計算門控值,而 tanh 用於調節單元狀態內的值。
- 訓練:LSTMs 使用透過時間的反向傳播 (BPTT) 進行訓練,這與其他 RNN 類似。此過程涉及在時間步長上展開網路,並應用反向傳播根據預測輸出和實際輸出之間的誤差來更新權重。LSTMs 透過有效地管理長期依賴關係來減輕梯度消失等問題,使其更適合需要記憶過去輸入的任務。
- 應用:LSTMs 特別適用於涉及複雜序列和長期依賴關係的任務,包括:−
- 自然語言處理 (NLP):用於語言建模、機器翻譯和文字生成等任務,在這些任務中,理解長序列中的上下文至關重要。
- 時間序列預測:預測具有長期趨勢的資料中的未來值,例如股票市場分析或天氣預報。
- 語音識別:透過分析和保留一段時間內音訊序列的資訊,將語音轉換為文字。
迴圈神經網路 (RNNs)
迴圈神經網路 (RNNs) 專門用於處理順序資料,透過隱藏狀態使用內部記憶。此功能使其成為理解序列或上下文必不可少的任務的理想選擇,例如語言建模和時間序列預測。
以下是 RNNs 的主要特徵:−
- 架構:RNNs 主要由以下兩層組成:−
- 迴圈層:RNNs 的特徵在於網路內的迴圈連線,使它們能夠透過隱藏狀態保持和更新過去輸入的記憶。此功能允許網路使用來自先前步驟的資訊來影響當前和未來的預測。
- 隱藏狀態:這是網路的內部儲存器,在每個時間步長都會更新。它保留來自早期輸入的資訊,並影響後續輸入的處理。
- 前向傳播:RNNs 中的資料按順序透過網路傳播。在每個時間步長,網路處理當前輸入,根據之前的輸入更新隱藏狀態,並生成輸出。然後使用更新的隱藏狀態來處理下一個輸入。
- 啟用函式:為了模擬複雜模式並引入非線性,RNNs 使用諸如 tanh 或 ReLU 等啟用函式。高階 RNN 變體,如長短期記憶 (LSTM) 網路和門控迴圈單元 (GRU),包含額外的機制來更好地管理長期依賴關係並解決梯度消失等挑戰。
- 訓練:RNNs 透過一種稱為透過時間的反向傳播 (BPTT) 的方法進行訓練。這涉及在時間步長上展開網路,並應用反向傳播根據預測輸出和實際輸出之間的差異來調整權重。訓練 RNNs 可能很困難,因為存在梯度消失等問題,這通常可以透過使用高階 RNN 架構來緩解。
- 應用:RNNs 特別適用於涉及順序資料,例如:−的任務。
- 自然語言處理 (NLP):例如文字生成、機器翻譯和情感分析。
- 時間序列預測:預測序列中的未來值,例如股價或天氣狀況。
- 語音識別:透過分析音訊資料序列,將語音轉換為文字。
生成對抗網路 (GANs)
生成對抗網路 (GANs) 是一類機器學習框架,旨在生成逼真的資料樣本。GANs 由兩個神經網路組成,一個是生成器,另一個是判別器,它們在一個競爭環境中一起訓練。這種對抗過程允許 GANs 生成與現實世界資料非常相似的資料。
以下是 GANs 的主要特徵:−
- 架構:GANs 的架構主要由兩個網路組成:−
- 生成器:生成器的作用是從隨機噪聲中建立偽造的資料樣本。它學習將這種噪聲對映到類似於真實資料的分佈。生成器的目標是建立在判別器眼中與真實資料無法區分的資料。
- 判別器:判別器的作用是區分真實資料(來自實際資料集)和偽造資料(由生成器產生)。它輸出一個機率,指示給定樣本是真實還是偽造。判別器的目標是正確分類真實和偽造樣本。
- 對抗過程:同時訓練生成器和判別器的過程被稱為對抗過程。讓我們看看 GANs 中的重要過程:−
- 生成器訓練:生成器建立一批偽造的資料樣本並將其傳送給判別器,試圖欺騙它認為它們是真實的。
- 判別器訓練:判別器接收來自生成器的真實資料和偽造資料,並試圖正確識別哪些是偽造資料哪些是真實資料。
- 損失函式:生成器的損失基於它能夠欺騙判別器的程度,而判別器的損失基於它能夠準確區分真實資料和偽造資料的程度。網路交替更新,生成器試圖最小化其損失,判別器試圖最大化其準確性。
- 收斂:訓練過程持續進行,直到生成器產生的資料如此逼真,以至於判別器無法再以高精度區分真實樣本和偽造樣本。此時,生成器已經學會了產生與原始資料分佈非常相似的輸出。
- 應用:GANs 已在多個領域得到廣泛應用,如下所述:−
- 影像生成:生成逼真的影像,例如生成栩栩如生的面孔或創作原創藝術作品。
- 資料增強:增加機器學習模型訓練資料集的多樣性,尤其是在資料有限的情況下非常有用。
- 風格遷移:將一個影像的風格轉換為另一個影像,例如將照片轉換為特定繪畫的風格。
- 超解析度:透過從低解析度輸入生成詳細的高解析度輸出,提高影像解析度。
自編碼器
自編碼器是一種主要用於無監督學習的人工神經網路。它們旨在學習資料的有效表示,通常用於降維或特徵學習。自編碼器由兩個主要部分組成,即編碼器和解碼器。目標是將輸入資料編碼成低維表示(潛在空間),然後從這種壓縮表示中重建原始輸入。
以下是自編碼器的主要特徵:−
- 架構:以下是自編碼器架構中包含的元素:−
- 編碼器:編碼器將輸入資料壓縮成具有潛在表示的較小資料。此過程涉及透過一個或多個隱藏層將輸入資料對映到低維空間。編碼器的層使用諸如 ReLU 或 sigmoid 等啟用函式將輸入轉換為緊湊的表示,該表示捕獲資料的基本特徵。
- 潛在空間(瓶頸):潛在空間是輸入資料的壓縮低維表示。它充當瓶頸,迫使網路關注資料的最重要特徵,過濾掉噪聲和冗餘。潛在空間的大小決定了壓縮的程度。較小的潛在空間會導致更大的壓縮,但可能會丟失一些資訊;而較大的潛在空間則保留更多細節。
- 解碼器:解碼器從潛在表示中重建原始輸入資料。它的結構與編碼器映象,逐漸將壓縮資料擴充套件回其原始大小。解碼器的輸出層通常採用與輸入資料相同的啟用函式來產生最終的重建輸出。
- 訓練:自編碼器使用反向傳播進行訓練,目標是最小化原始輸入和重建輸出之間的差異。根據輸入資料的性質,使用的損失函式通常是均方誤差 (MSE) 或二元交叉熵。網路在訓練過程中調整其權重,以學習一種有效的編碼,該編碼能夠捕獲輸入中最顯著的特徵,同時能夠準確地重建它。
- 應用:自編碼器是機器學習中通用的工具,可應用於各個領域,例如:−
- 降維:它們有助於透過減少特徵數量來壓縮資料,同時保留關鍵資訊。
- 異常檢測:自編碼器可以透過識別與正常資料顯著不同的模式(通常透過重建誤差)來識別異常。
- 資料去噪:它們可以有效地去除影像、訊號或其他資料型別的噪聲。
- 生成模型:特別是對於變分自編碼器 (VAEs),自編碼器可以生成與原始資料集非常相似的新的資料樣本。
圖神經網路 (GNNs)
圖神經網路 (GNNs) 是一種專門設計用於處理以圖形結構組織的資料的神經網路。在圖中,資料表示為由邊(關係)連線的節點(頂點)。
GNNs 利用這種基於圖的結構來學習和進行預測,這使得它們特別適用於資料自然形成圖的任務。透過有效地捕獲節點之間的關係和依賴關係,GNNs 在涉及複雜互連資料方面非常出色。
以下是 GNNs 的主要特徵:−
- 架構:以下是圖神經網路 (GNNs) 中包含的元件:
- 節點表示:圖中的每個節點都有一個初始特徵向量來表示其屬性。這些特徵向量透過網路的層進行更新。
- 訊息傳遞:GNNs 使用訊息傳遞機制,其中每個節點與其相鄰節點交換資訊。此步驟允許網路聚合來自相鄰節點的資訊以更新其自身的表示。
- 聚合函式:聚合函式組合從相鄰節點接收到的訊息。常見的聚合方法包括求和、平均或應用更復雜的運算。
- 更新函式:聚合後,節點的特徵向量使用一個函式進行更新,該函式通常包括神經網路層,例如全連線層或啟用函式。
- 讀出函式:可以透過讀出函式獲得圖或節點的最終表示,該函式可能將節點特徵聚合到全域性圖表示中或計算最終預測。
- 訓練:GNNs 使用以下提到的方法進行訓練:−
- 損失函式:圖神經網路 (GNN) 使用特定於其任務的損失函式進行訓練,例如節點分類、圖分類或連結預測。損失函式量化了預測輸出與實際真實值之間的差異。
- 最佳化:訓練過程涉及使用基於梯度的最佳化演算法來最佳化網路的權重。常見的演算法包括隨機梯度下降 (SGD) 和 Adam。這些方法調整權重以最小化損失,從而提高模型在給定任務上的準確性和效能。
- 應用:以下是 GNN 的應用領域:
- 節點分類:根據節點的特徵和整體圖結構,為單個節點分配標籤或類別。這對於識別網路中實體型別的任務很有用。
- 圖分類:將整個圖分類到不同的類別中。這可以應用於諸如化學中對分子進行分類或對不同型別的社交網路進行分類之類的場景。
- 連結預測:預測節點之間連線或邊的形成可能性。這在推薦系統中非常有價值,例如預測使用者連線或推薦產品。
- 圖生成:根據學習到的模式建立新的圖或結構。這在藥物發現等領域非常有益,其中基於現有資料提出新的分子結構。
- 社交網路分析:評估網路中的社互動動,以識別有影響力的節點、檢測社群或預測社會動態和趨勢。