多層感知機(MLP)網絡詳解

一、什麼是多層感知機(MLP)

多層感知機(Multi-Layer Perceptron,MLP)是一種前饋人工神經網絡,可以用於分類、回歸、預測等任務。它是一個多層的結構,每一層都由多個神經元組成,前一層的輸出作為下一層的輸入。

MLP可以解決非線性問題,如圖像識別、自然語言處理等。其結構簡單、易於實現,因此被廣泛應用。

二、MLP的結構

如上所述,MLP是一個多層的結構,每一層由多個神經元組成。根據層數不同,可以分為單隱藏層或多隱藏層網絡,本文介紹的是單隱藏層的MLP網絡。

在單隱藏層的MLP中,輸入層的神經元數目為n,隱藏層的神經元數目為h,輸出層的神經元數目為m。其中,n、h、m均為正整數。如下圖所示:

    Input Layer                Hidden Layer               Output Layer
Input 1---------      ------------           ----------------          ------------Output 1
          |                   |                                   |                                  |
Input 2--------       ------------           ----------------          ------------Output 2
         |                    |                                   |                                  |
        …                     …                                   …                                  …
          |                     |                                   |                                  |
Input n ---------     ------------           ----------------          ------------Output m

三、前向傳播

前向傳播是指從輸入層開始,逐層傳遞信號直至輸出層的過程。

在前向傳播中,輸入層的數值被傳遞至隱藏層,隱藏層的數值再被傳遞至輸出層。在傳遞過程中,神經元會對上一層的輸入進行加權求和,並通過激活函數進行非線性變換。如下圖所示:

                         output_j = σ(w_j*x + b_j)
       
                    w_1           w_2          …          w_h
Input_1   ------|           |               |        |------------------Output_1
                    |             |                |
Input_2   ------|           |               |        |------------------Output_2
                    |             |                |
     …            |             |                |                …
                    |             |                |
Input_n   ------|___________|____________|  |------------------Output_m

其中,x為輸入,w為權重,b為偏置,σ為激活函數。在隱藏層和輸出層均為使用相同的激活函數,常見的有sigmoid、ReLU等函數。

四、誤差反向傳播

誤差反向傳播(Backpropagation algorithm)是指從輸出層開始,逐層反向求解誤差、調整權重的過程。

在誤差反向傳播中,首先需要定義一個損失函數,用于衡量預測值和真實值之間的誤差。常見的損失函數有均方誤差(MSE)、交叉熵等。

模型訓練時,誤差會從輸出層傳遞至隱藏層,最終傳遞至輸入層。在傳遞過程中,將誤差按照權重進行分配,並根據分配的誤差來更新權重。

在誤差反向傳播中,每一個神經元都有三個重要的梯度:輸出梯度、權重梯度和偏置梯度。它們分別代表着誤差對輸出值、權重和偏置的影響程度。通過計算梯度可以對模型進行調整,直到損失函數的值達到最小。

五、示例代碼

1. MLP的實現(Python)

import numpy as np

class MLP:
    def __init__(self, input_dim, hidden_dim, output_dim):
        self.input_dim = input_dim
        self.hidden_dim = hidden_dim
        self.output_dim = output_dim
        np.random.seed(42)
        self.weights1 = np.random.randn(input_dim,hidden_dim)
        self.weights2 = np.random.randn(hidden_dim,output_dim)
    
    def forward(self, x):
        self.hidden = np.dot(x, self.weights1)
        self.hidden_activation = self.sigmoid(self.hidden)
        self.output = np.dot(self.hidden_activation, self.weights2)
        return self.output
    
    def sigmoid(self, x):
        return 1/(1 + np.exp(-x))

2. MNIST手寫數字識別(Python)

下面介紹如何使用MLP網絡實現MNIST手寫數字分類。

from keras.datasets import mnist
from sklearn.neural_network import MLPClassifier

# 加載數據
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# 處理數據
X_train = X_train.reshape((60000, 28*28))
X_test = X_test.reshape((10000, 28*28))
X_train = X_train.astype('float32') / 255
X_test = X_test.astype('float32') / 255

# 構建模型
mlp = MLPClassifier(hidden_layer_sizes=(100,), max_iter=10, alpha=1e-4,
                    solver='sgd', verbose=10, tol=1e-4, random_state=42,
                    learning_rate_init=.1)

# 訓練模型
mlp.fit(X_train, y_train)

# 評估模型
accuracy = mlp.score(X_test, y_test)
print('Accuracy:', accuracy)

六、總結

在本文中,我們對MLP的原理、結構、前向傳播、誤差反向傳播進行了詳細介紹,並提供了Python代碼示例。MLP是一種前饋人工神經網絡,常用於分類、回歸、預測等任務。它的結構簡單、易於實現,並且可以解決非線性問題。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/187411.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 17:57
下一篇 2024-11-28 06:22

相關推薦

  • 使用Netzob進行網絡協議分析

    Netzob是一款開源的網絡協議分析工具。它提供了一套完整的協議分析框架,可以支持多種數據格式的解析和可視化,方便用戶對協議數據進行分析和定製。本文將從多個方面對Netzob進行詳…

    編程 2025-04-29
  • 微軟發佈的網絡操作系統

    微軟發佈的網絡操作系統指的是Windows Server操作系統及其相關產品,它們被廣泛應用於企業級雲計算、數據庫管理、虛擬化、網絡安全等領域。下面將從多個方面對微軟發佈的網絡操作…

    編程 2025-04-28
  • 蔣介石的人際網絡

    本文將從多個方面對蔣介石的人際網絡進行詳細闡述,包括其對政治局勢的影響、與他人的關係、以及其在歷史上的地位。 一、蔣介石的政治影響 蔣介石是中國現代歷史上最具有政治影響力的人物之一…

    編程 2025-04-28
  • 基於tcifs的網絡文件共享實現

    tcifs是一種基於TCP/IP協議的文件系統,可以被視為是SMB網絡文件共享協議的衍生版本。作為一種開源協議,tcifs在Linux系統中得到廣泛應用,可以實現在不同設備之間的文…

    編程 2025-04-28
  • 如何開發一個網絡監控系統

    網絡監控系統是一種能夠實時監控網絡中各種設備狀態和流量的軟件系統,通過對網絡流量和設備狀態的記錄分析,幫助管理員快速地發現和解決網絡問題,保障整個網絡的穩定性和安全性。開發一套高效…

    編程 2025-04-27
  • Java JSONObject 多層應用技巧用法介紹

    本文將介紹如何在 Java 中使用 JSONObject 來解析和操作多層 JSON 數據,包括嵌套、遍歷、增刪改查等操作。 一、JSONObject 初始化和解析 JSON 數據…

    編程 2025-04-27
  • 用Python爬取網絡女神頭像

    本文將從以下多個方面詳細介紹如何使用Python爬取網絡女神頭像。 一、準備工作 在進行Python爬蟲之前,需要準備以下幾個方面的工作: 1、安裝Python環境。 sudo a…

    編程 2025-04-27
  • 如何使用Charles Proxy Host實現網絡請求截取和模擬

    Charles Proxy Host是一款非常強大的網絡代理工具,它可以幫助我們截取和模擬網絡請求,方便我們進行開發和調試。接下來我們將從多個方面詳細介紹如何使用Charles P…

    編程 2025-04-27
  • 網絡拓撲圖的繪製方法

    在計算機網絡的設計和運維中,網絡拓撲圖是一個非常重要的工具。通過拓撲圖,我們可以清晰地了解網絡結構、設備分佈、鏈路情況等信息,從而方便進行故障排查、優化調整等操作。但是,要繪製一張…

    編程 2025-04-27
  • 網絡爬蟲什麼意思?

    網絡爬蟲(Web Crawler)是一種程序,可以按照制定的規則自動地瀏覽互聯網,並將獲取到的數據存儲到本地或者其他指定的地方。網絡爬蟲通常用於搜索引擎、數據採集、分析和處理等領域…

    編程 2025-04-27

發表回復

登錄後才能評論