通俗易懂神經網絡:從基礎到實現

引言

神經網絡是人工智能和深度學習的核心,它模仿人腦的工作方式,通過數據學習復雜的模式。本文將以通俗易懂的方式講解神經網絡的基礎知識,包括單層神經網絡、多層神經網絡,最后用Python代碼實現一個簡單的神經網絡模型。


1. 神經網絡模型基礎

1.1 什么是神經網絡?

神經網絡是由神經元(Neurons)組成的計算系統,它接收輸入數據,經過一系列計算后輸出預測結果。其核心思想是模仿人腦神經元之間的連接方式

圖表:人工神經元結構示意圖

輸入x1
加權求和
輸入x2
輸入xn
激活函數f
輸出y
偏置b

擴展說明:
每個神經元會對輸入加權求和,加上偏置后通過激活函數,輸出結果。激活函數賦予網絡非線性表達能力。

1.2 神經元的結構

一個神經元的基本計算方式如下:

輸出=f(w1x1+w2x2+?+wnxn+b)?\text{輸出} = f(w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b)\,輸出=f(w1?x1?+w2?x2?+?+wn?xn?+b)

其中:

  • (x1,x2,…,xnx_1, x_2, \dots, x_nx1?,x2?,,xn?) 是輸入數據
  • (w1,w2,…,wnw_1, w_2, \dots, w_nw1?,w2?,,wn?) 是權重(決定輸入的重要性)
  • (bbb) 是偏置(調整輸出的偏移量)
  • (fff) 是激活函數(引入非線性)

1.3 常見的激活函數

函數名稱公式特點
Sigmoidσ(x)=11+e?x?\sigma(x) = \frac{1}{1 + e^{-x}} \,σ(x)=1+e?x1?輸出0~1,適合二分類
ReLUReLU(x)=max?(0,x)?\text{ReLU}(x) = \max(0, x) \,ReLU(x)=max(0,x)計算快,緩解梯度消失
Tanhtanh?(x)=ex?e?xex+e?x? \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \,tanh(x)=ex+e?xex?e?x?輸出-1~1,適合回歸

圖表:常見激活函數對比思維導圖
在這里插入圖片描述

擴展說明:
激活函數的選擇會影響神經網絡的收斂速度和表達能力。ReLU因其高效和緩解梯度消失問題,在深度網絡中應用最廣。


2. 單層神經網絡(感知機)

單層神經網絡(Perceptron)是最簡單的神經網絡,僅包含輸入層和輸出層,沒有隱藏層。

圖表:單層感知機結構圖

輸入x1
Σ
輸入x2
輸入xn
激活函數
輸出y

2.1 數學表示

y=f(wTx+b) y = f(\mathbf{w}^T \mathbf{x} + b) y=f(wTx+b)

  • (x?\mathbf{x}\,x) 是輸入向量
  • (w?\mathbf{w}\,w) 是權重向量
  • (bbb) 是偏置
  • (fff) 是激活函數(如Sigmoid)

2.2 應用場景

  • 線性分類(如邏輯回歸)
  • 簡單二分類問題

擴展說明:
單層感知機只能解決線性可分問題,無法擬合復雜的非線性關系。


3. 多層神經網絡(深度神經網絡)

多層神經網絡(MLP, Multi-Layer Perceptron)包含輸入層、隱藏層、輸出層,能夠學習更復雜的非線性關系。

圖表:多層神經網絡結構圖

輸入x1
隱藏層神經元1
隱藏層神經元2
輸入x2
輸出y

3.1 結構

  • 輸入層:接收原始數據(如像素、文本)
  • 隱藏層:多個非線性變換層(常用ReLU)
  • 輸出層:最終預測(如分類概率)

3.2 前向傳播

數據從輸入層逐層計算到輸出層:
h1=f(W1x+b1)h2=f(W2h1+b2)…y=f(Wnhn?1+bn) \mathbf{h}_1 = f(\mathbf{W}_1 \mathbf{x} + \mathbf{b}_1) \\ \mathbf{h}_2 = f(\mathbf{W}_2 \mathbf{h}_1 + \mathbf{b}_2) \\ \dots \\ \mathbf{y} = f(\mathbf{W}_n \mathbf{h}_{n-1} + \mathbf{b}_n) h1?=f(W1?x+b1?)h2?=f(W2?h1?+b2?)y=f(Wn?hn?1?+bn?)

圖表:前向傳播流程圖

輸入層
隱藏層1
隱藏層2
輸出層

3.3 反向傳播(Backpropagation)

通過計算損失函數的梯度,調整權重和偏置:
w←w?η?L?w \mathbf{w} \leftarrow \mathbf{w} - \eta \frac{\partial L}{\partial \mathbf{w}} ww?η?w?L?
其中:

  • (LLL) 是損失函數(如交叉熵、MSE)
  • (η?\eta\,η) 是學習率

圖表:反向傳播流程圖

計算損失
計算梯度
計算梯度
計算梯度
輸出層
隱藏層2
隱藏層1
輸入層
損失函數

擴展說明:
前向傳播負責計算輸出,反向傳播則根據損失調整參數,是神經網絡學習的核心機制。


4. 神經網絡代碼簡單實現(Python)

使用 numpysklearn 實現一個簡單的多層神經網絡(MLP)進行二分類。

4.1 數據準備

import numpy as np
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split# 生成非線性數據集
X, y = make_moons(n_samples=1000, noise=0.2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

4.2 定義神經網絡

class NeuralNetwork:def __init__(self, input_size, hidden_size, output_size):# 初始化權重self.W1 = np.random.randn(input_size, hidden_size) * 0.01self.b1 = np.zeros(hidden_size)self.W2 = np.random.randn(hidden_size, output_size) * 0.01self.b2 = np.zeros(output_size)def relu(self, x):return np.maximum(0, x)def sigmoid(self, x):return 1 / (1 + np.exp(-x))def forward(self, X):# 前向傳播self.z1 = np.dot(X, self.W1) + self.b1self.a1 = self.relu(self.z1)self.z2 = np.dot(self.a1, self.W2) + self.b2self.y_pred = self.sigmoid(self.z2)return self.y_preddef backward(self, X, y, lr=0.01):# 反向傳播m = X.shape[0]# 計算梯度d_z2 = self.y_pred - y.reshape(-1, 1)d_W2 = np.dot(self.a1.T, d_z2) / md_b2 = np.sum(d_z2, axis=0) / md_a1 = np.dot(d_z2, self.W2.T)d_z1 = d_a1 * (self.a1 > 0)  # ReLU的導數d_W1 = np.dot(X.T, d_z1) / md_b1 = np.sum(d_z1, axis=0) / m# 更新權重self.W1 -= lr * d_W1self.b1 -= lr * d_b1self.W2 -= lr * d_W2self.b2 -= lr * d_b2def train(self, X, y, epochs=1000, lr=0.01):for epoch in range(epochs):y_pred = self.forward(X)loss = -np.mean(y * np.log(y_pred) + (1 - y) * np.log(1 - y_pred))self.backward(X, y, lr)if epoch % 100 == 0:print(f"Epoch {epoch}, Loss: {loss:.4f}")

4.3 訓練與測試

# 初始化網絡
nn = NeuralNetwork(input_size=2, hidden_size=4, output_size=1)# 訓練
nn.train(X_train, y_train, epochs=1000, lr=0.1)# 測試
y_pred = (nn.forward(X_test) > 0.5).astype(int)
accuracy = np.mean(y_pred.flatten() == y_test)
print(f"Test Accuracy: {accuracy * 100:.2f}%")

輸出示例

Epoch 0, Loss: 0.6931
Epoch 100, Loss: 0.3521
Epoch 200, Loss: 0.2104
...
Test Accuracy: 93.33%

5. 神經網絡的應用場景

圖表:神經網絡應用場景思維導圖

在這里插入圖片描述

擴展說明:
神經網絡廣泛應用于圖像、語音、文本等多種領域,是現代人工智能的基石。


總結

  • 單層神經網絡:適合簡單線性問題(如邏輯回歸)。
  • 多層神經網絡(MLP):能學習復雜非線性關系,是深度學習的基礎。
  • 代碼實現:使用 numpy 手動實現前向傳播、反向傳播,訓練一個簡單的分類模型。

希望這篇博客能幫助你理解神經網絡的基本原理!🚀 如果有問題,歡迎留言討論!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915345.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915345.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915345.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux】基本指令詳解(三) 指令本質、三個查找指令、打包壓縮、重要熱鍵、linux體系結構、命令行解釋器

文章目錄date指令cal指令find指令(指令本質也是文件)which指令file指令whereis指令alias指令grep指令top指令打包和壓縮指令zip/unzip指令關于rzsz(linux與windows互傳 )tar指令linux機器之間互傳bc指令uname指令(查看linux機器體系結構)幾個重要的熱鍵[Tab]按鍵[Ctrl]c按鍵[Ct…

MSTP 多生成樹協議

MSTP 多生成樹協議 STP/RSTP 的局限性 所有 vlan 共享一顆生成樹無法實現不同 vlan 在多條 Trunk 鏈路上的分擔 二層鏈路負載均衡STP/RSTP 的局限——次優二層路徑**次優二層路徑(Suboptimal Layer 2 Path) 是指: ** 數據幀在交換網絡中傳輸時…

Shell腳本-tee工具

一、前言在 Linux/Unix 系統中,tee 是一個非常實用的命令行工具,它可以幫助我們 同時將命令的輸出打印到終端,并寫入文件。這種“雙路輸出”機制在腳本調試、日志記錄、自動化任務中非常有用。無論是做日志分析、腳本調試,還是編寫…

走進Linux的世界:Linux基本指令(三)

嘿,各位技術潮人!好久不見甚是想念。生活就像一場奇妙冒險,而編程就是那把超酷的萬能鑰匙。此刻,陽光灑在鍵盤上,靈感在指尖跳躍,讓我們拋開一切束縛,給平淡日子加點料,注入滿滿的pa…

跨域詳解與解決方案:從理論到實踐的全面指南

目錄 1. 跨域是什么?為什么它讓人頭禿? 為什么跨域問題讓人抓狂? 跨域的本質 2. 跨域的罪魁禍首:同源策略與CORS 同源策略的來龍去脈 CORS:跨域的“通行證” 3. JSONP:古老但依然有用的跨域“黑科技” JSONP的原理 JSONP的優缺點 4. 代理服務器:跨域的“中間人…

深入詳解:決策樹在輔助診斷系統與臨床決策支持中的應用及實現細節

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#,Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

【詳細筆記】兩類曲線積分轉換

文章目錄參考教程一兩類曲線積分的聯系參數方程曲線的切線方向余弦參考教程2兩類曲線積分之間的關系物理意義解釋證明思路參考教程一 3分鐘幫你搞定兩類曲線積分之間的聯系(弧長和坐標) 兩類曲線積分的聯系 設平面曲線LLL上的第二類曲線積分∫LPdxQdy…

【成品設計】基于STM32F429的云端電子相冊

V1《基于STM32F429的云端電子相冊》 V1硬件框圖:V1功能說明: 支持 softAP 配網。支持 HTTPS 客戶端的 GET\POST 請求支持文件系統用于圖片的存儲。支持 LVGL 自定義 GUI。日歷功能。STM32F429文件系統LVGLRGB LCD屏幕。屏幕尺寸480*480. 首次開機交互&am…

網絡安全隔離技術解析:從網閘到光閘的進化之路

目錄 一、網絡安全隔離技術體系 1.1 網絡安全隔離技術發展歷程 1.2 隔離技術分類矩陣 1.3 核心隔離原理對比 二、網閘技術深度解析 2.1 GAP架構剖析(Guarded Access Point System 安全隔離與信息交換系統) 2.2 技術演進路線 三、光閘技術突破創新…

初識 二叉樹

目錄樹什么是二叉樹二叉樹的五種狀態滿二叉樹完全二叉樹二叉排序樹平衡二叉樹二叉樹的遍歷B3642 二叉樹的遍歷P1305 新二叉樹二叉樹的深度P4913 【深基16.例3】二叉樹深度相關例題訓練:二叉樹問題樹 這是樹(拍攝于鄭州輕工業大學,第一次鄭州輕…

(1)Windows環境下安裝Oracle

概述:Oracle數據庫是一種網絡上的數據庫, 它在網絡上支持多用戶, 支持服務器/客戶機等部署(或配置)。服務器與客戶機是軟件概念:它們與計算機硬件不存在一一對應的關系. 即:同一臺計算機既可以充當服務器又可以充當客戶機,或者一臺計算機只充當服務器或只…

工業數據集成中間件工具OPC Router詳細介紹

一、產品概述 OPC Router 是 Software Toolbox 旗下的一款面向工業數據集成與自動化的數據中間件工具,專注于實現各類工業系統之間的數據交互和自動化流程編排。它通過模塊化的插件機制,打通 PLC、ERP、MES、數據庫、MQTT、REST API 等不同系統之間的數…

消息隊列 2.RabbitMQ的基本概念與使用

RabbitMQ 是一款基于 AMQP(Advanced Message Queuing Protocol)協議的開源消息中間件,主要用于實現分布式系統中的消息傳遞,支持異步通信、系統解耦、流量削峰等場景。在 Java 生態中,RabbitMQ 被廣泛應用,…

【web安全】SQL注入與認證繞過

目錄 一、SQL注入漏洞 1.1 基礎注入原理 1.2 實用注入Payload分類 邏輯繞過型 注釋截斷型 聯合查詢型 常見的萬能密碼-CSDN博客 二、登錄繞過實戰技巧 2.1 基礎繞過手法 2.2 高級繞過技巧 編碼繞過 多重注釋 參數污染 三、密碼重置漏洞利用 3.1 常見漏洞模式 3…

Python適配器模式詳解:讓不兼容的接口協同工作

一、模式定義與核心思想 適配器模式(Adapter Pattern) 是一種結構型設計模式,它通過創建一個中間層(適配器),將不兼容的接口轉換為客戶端期望的接口。就像現實中的電源適配器,讓不同國家的插頭…

微信小程序列表數據上拉加載,下拉刷新

1.上拉加載數據,數據 下一頁數據 前面的數據([...this.data.list, ...data.records)2.當用戶上拉加載過快時,會不停的調用接口,需要節流閥isLoading3.上拉加載到最后一頁的判斷,isFinish// pages/list.js…

【樹上倍增 LCA DFS 前綴和】P10391 [藍橋杯 2024 省 A] 零食采購|普及+

本文涉及知識點 C算法:前綴和、前綴乘積、前綴異或的原理、源碼及測試用例 包括課程視頻 CDFS 樹上倍增 LCA P10391 [藍橋杯 2024 省 A] 零食采購 題目描述 小藍準備去星際旅行,出發前想在本星系采購一些零食,星系內有 nnn 顆星球&#x…

PDF發票批量打印工具哪個好?高效打印發票的實用工具推薦

開小超市這幾年,每月要打幾十張進貨發票做賬,以前打印時總犯愁:有的發票 PDF 太大,打出來字小得看不清;有的又太窄,白白浪費半張紙。試過手動調整,每張都要改縮放比例,累不說&#x…

4G模塊 A7680通過MQTT協議連接到華為云

命令說明 基礎AT指令 ATi顯示產品的標志信息 ATCIMI查詢IMSI ATCICCID從SIM卡讀取ICCID ATCGSN查詢產品序列號 ATCPIN查詢卡狀態 ATCSQ查詢信號強度 ATCGATT查詢當前PS域狀態 ATCREG查詢GPRS注冊狀態 ATCEREG查詢4G注冊狀態 ATCGPADDR查詢PDP地址 ATCMGF選擇短信格式 ATCMGS發…

大模型詞表設計與作用解析

幾乎所有大型語言模型(LLM)都有自己獨立的詞表(Vocabulary)。這是模型設計和訓練過程中的核心組件之一。以下是關于詞表的關鍵點: 1. 詞表的作用 分詞基礎:詞表定義了模型如何將輸入文本拆分成基本單元&…