做網(wǎng)站得花多錢培訓(xùn)班招生方案
人工神經(jīng)網(wǎng)絡(luò)ANN
- 1、引言
- 2、人工神經(jīng)網(wǎng)絡(luò)(ANN)
- 2.1 定義
- 2.1.1 定義
- 2.1.2 應(yīng)用場景
- 2.2 核心原理
- 2.3 實現(xiàn)方式
- 2.4 算法公式
- 2.5 代碼示例
- 3、總結(jié)
1、引言
小屌絲:魚哥,看新聞沒?
小魚:新聞天天看,啥事大驚小怪的。
小屌絲:就是,YL總統(tǒng)的事情
小魚:…你關(guān)心的可真夠遠(yuǎn)的啊。
小屌絲:這很震驚的啊
小魚:你啊, 先關(guān)心關(guān)心你的深度學(xué)習(xí)領(lǐng)域知識吧。
小屌絲:額… 這…
小魚:ANN 了解嗎?
小屌絲:不了解
小魚:KNN了解嗎?
小屌絲:不了解
小魚:你看,這都不了解, 還不趕緊學(xué)習(xí)學(xué)習(xí)。
小屌絲:哦,好哦。
小屌絲:不對,這總感覺哪里怪怪的。
小魚:沒有,你趕緊學(xué)習(xí)吧
小屌絲:這… 啥情況
2、人工神經(jīng)網(wǎng)絡(luò)(ANN)
2.1 定義
2.1.1 定義
人工神經(jīng)網(wǎng)絡(luò)是由大量的節(jié)點(或稱為“神經(jīng)元”)組成的網(wǎng)絡(luò)結(jié)構(gòu),這些節(jié)點之間通過“突觸”相互連接。
每個神經(jīng)元可以接收輸入,對輸入進行加權(quán)和,然后通過一個非線性激活函數(shù)生成輸出。
通過這種方式,ANN能夠捕捉和表示復(fù)雜的輸入輸出關(guān)系。
2.1.2 應(yīng)用場景
ANN應(yīng)用廣泛,包括但不限于以下幾個領(lǐng)域:
- 圖像識別和處理:如人臉識別、物體檢測。
- 語音識別:如智能助手的語音命令解析。
- 自然語言處理:如機器翻譯、情感分析。
- 預(yù)測模型:如股票市場預(yù)測、天氣預(yù)報。
- 游戲和仿真:如自動駕駛汽車的模擬訓(xùn)練。
2.2 核心原理
ANN的核心原理基于“學(xué)習(xí)”,即通過調(diào)整網(wǎng)絡(luò)中的突觸權(quán)重來最小化模型輸出和實際輸出之間的誤差。
這一過程通常通過一個叫做反向傳播(Backpropagation)的算法來完成,配合梯度下降(Gradient Descent)或其變體進行權(quán)重的優(yōu)化更新
2.3 實現(xiàn)方式
實現(xiàn)ANN通常需要以下幾個步驟:
- 初始化網(wǎng)絡(luò):設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)(輸入層、隱藏層、輸出層的節(jié)點數(shù))并隨機初始化權(quán)重。
- 前向傳播:輸入數(shù)據(jù)在網(wǎng)絡(luò)中前向傳遞,每個節(jié)點計算其輸出。
- 計算損失:根據(jù)網(wǎng)絡(luò)輸出和實際值計算損失函數(shù)。
- 反向傳播:根據(jù)損失函數(shù)計算每個權(quán)重的梯度,并更新權(quán)重。
- 重復(fù)2-4步驟:直到滿足終止條件(如迭代次數(shù)、誤差閾值等)。
2.4 算法公式
一個基本的ANN模型,其輸出 ( y ) (y) (y)可以表示為: [ y = f ( ∑ i = 1 n w i ? x i + b ) ] [y = f(\sum_{i=1}^{n} w_i \cdot x_i + b)] [y=f(i=1∑n?wi??xi?+b)]
其中, ( w i ) (w_i) (wi?)是權(quán)重, ( x i ) (x_i) (xi?)是輸入, ( b ) (b) (b)是偏置項, ( f ) (f) (f)是激活函數(shù)。
2.5 代碼示例
# -*- coding:utf-8 -*-
# @Time : 2024-04-05
# @Author : Carl_DJ# 導(dǎo)入必要的庫
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import to_categorical# 生成模擬數(shù)據(jù)
# 二分類問題
x_train = np.random.random((1000, 20)) # 訓(xùn)練數(shù)據(jù):1000個樣本,每個樣本20個特征
y_train = np.random.randint(2, size=(1000, 1)) # 訓(xùn)練標(biāo)簽:1000個樣本的標(biāo)簽(0或1)
y_train = to_categorical(y_train) # 將標(biāo)簽轉(zhuǎn)換為分類編碼# 定義模型
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=20)) # 第一層密集連接層,有64個神經(jīng)元,激活函數(shù)為ReLU
model.add(Dense(64, activation='relu')) # 第二層密集連接層,有64個神經(jīng)元,激活函數(shù)為ReLU
model.add(Dense(2, activation='softmax')) # 輸出層,有2個神經(jīng)元對應(yīng)兩個類別,使用softmax激活函數(shù)# 編譯模型
model.compile(optimizer='adam', # 優(yōu)化器使用Adamloss='categorical_crossentropy', # 損失函數(shù)使用分類交叉熵metrics=['accuracy']) # 評估模型性能的指標(biāo)使用準(zhǔn)確率# 訓(xùn)練模型
model.fit(x_train, y_train, epochs=10, batch_size=32) # 訓(xùn)練模型,迭代10次,每批次32個樣本# 模型總結(jié)
model.summary()
解析
-
導(dǎo)入庫:首先,我們導(dǎo)入了必要的庫,包括numpy用于數(shù)據(jù)操作,keras中的Sequential模型構(gòu)建ANN,以及Dense用于構(gòu)建密集連接層。
-
生成模擬數(shù)據(jù):為了簡化,這里我們生成了一些隨機數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)和標(biāo)簽。實際應(yīng)用中,這些數(shù)據(jù)將來自于真實的數(shù)據(jù)集。
-
定義模型:使用Sequential模型順序堆疊各層。模型的第一層需要指定input_dim,即輸入數(shù)據(jù)的維度。接下來添加了兩個密集連接層,每層都使用ReLU激活函數(shù)。最后,輸出層的神經(jīng)元數(shù)量應(yīng)與分類任務(wù)的類別數(shù)量相匹配,在本例中為2,使用softmax函數(shù)進行激活以進行分類。
-
編譯模型:在編譯模型時,我們指定優(yōu)化器(adam)、損失函數(shù)(categorical_crossentropy)和評價指標(biāo)(accuracy)。
-
訓(xùn)練模型:使用fit方法訓(xùn)練模型,指定訓(xùn)練數(shù)據(jù)、標(biāo)簽、訓(xùn)練的輪次(epochs)和每批次的樣本數(shù)(batch_size)。
-
模型結(jié)果統(tǒng)計最后,summary方法提供了模型的架構(gòu)概覽,包括每層的名稱、類型、輸出形狀和參數(shù)數(shù)量。
3、總結(jié)
人工神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的基石,其靈活性和強大的表達(dá)能力使其成為解決復(fù)雜非線性問題的有力工具。
通過不斷優(yōu)化和改進,ANN在各個領(lǐng)域的應(yīng)用將更加廣泛,性能也將更加出色。
不過,也需要注意的是,ANN模型的訓(xùn)練需要大量的數(shù)據(jù)和計算資源,并且模型的解釋性相對較差,這些都是目前深度學(xué)習(xí)領(lǐng)域面臨的挑戰(zhàn)。
我是小魚:
- CSDN 博客專家;
- 阿里云 專家博主;
- 51CTO博客專家;
- 企業(yè)認(rèn)證金牌面試官;
- 多個名企認(rèn)證&特邀講師等;
- 名企簽約職場面試培訓(xùn)、職場規(guī)劃師;
- 多個國內(nèi)主流技術(shù)社區(qū)的認(rèn)證專家博主;
- 多款主流產(chǎn)品(阿里云等)評測一等獎獲得者;
關(guān)注小魚,學(xué)習(xí)【機器學(xué)習(xí)】&【深度學(xué)習(xí)】領(lǐng)域的知識。