Python機(jī)器學(xué)習(xí)與項(xiàng)目實(shí)踐- 課件 chap4-前饋神經(jīng)網(wǎng)絡(luò)_第1頁(yè)
Python機(jī)器學(xué)習(xí)與項(xiàng)目實(shí)踐- 課件 chap4-前饋神經(jīng)網(wǎng)絡(luò)_第2頁(yè)
Python機(jī)器學(xué)習(xí)與項(xiàng)目實(shí)踐- 課件 chap4-前饋神經(jīng)網(wǎng)絡(luò)_第3頁(yè)
Python機(jī)器學(xué)習(xí)與項(xiàng)目實(shí)踐- 課件 chap4-前饋神經(jīng)網(wǎng)絡(luò)_第4頁(yè)
Python機(jī)器學(xué)習(xí)與項(xiàng)目實(shí)踐- 課件 chap4-前饋神經(jīng)網(wǎng)絡(luò)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

前饋神經(jīng)網(wǎng)絡(luò)《Python機(jī)器學(xué)習(xí)與項(xiàng)目實(shí)踐》XXX大學(xué)教學(xué)內(nèi)容概念基本特征網(wǎng)絡(luò)模型應(yīng)用分析機(jī)器學(xué)習(xí)≈構(gòu)建一個(gè)映射函數(shù)“貓”“你好”“5-5”“今天天氣真不錯(cuò)”“你好”用戶(hù)輸入機(jī)器(落子位置)語(yǔ)音識(shí)別圖像識(shí)別圍棋對(duì)話(huà)系統(tǒng)神經(jīng)元與感知機(jī)一個(gè)生物的神經(jīng)元的結(jié)構(gòu)分為細(xì)胞體和突起兩部分,具有聯(lián)絡(luò)和整合輸入信息并輸出信息的作用。突起包含樹(shù)突和軸突,樹(shù)突用來(lái)接收其他的神經(jīng)元傳遞過(guò)來(lái)的信號(hào),其一端連接軸突用來(lái)給其他的神經(jīng)元傳遞信號(hào),軸突的末端連接到其他神經(jīng)元的樹(shù)突或軸突上。神經(jīng)元結(jié)構(gòu)圖感知機(jī)的工作原理激活函數(shù)激活函數(shù)(ActivationFunction)是在神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元上運(yùn)行的函數(shù),負(fù)責(zé)將神經(jīng)元的輸入映射到輸出端。激活函數(shù)在神經(jīng)元中是非常重要的。為了增強(qiáng)神經(jīng)網(wǎng)絡(luò)的表示能力和學(xué)習(xí)能力,激活函數(shù)需要具備以下幾點(diǎn)性質(zhì)。(1)連續(xù)可導(dǎo)(允許少數(shù)點(diǎn)上不可導(dǎo))的非線性函數(shù)。可導(dǎo)的激活函數(shù)可以直接利用數(shù)值優(yōu)化的方法來(lái)學(xué)習(xí)網(wǎng)絡(luò)參數(shù)。(2)激活函數(shù)及其導(dǎo)數(shù)要盡可能的簡(jiǎn)單,這樣有利于提高網(wǎng)絡(luò)計(jì)算效率。(3)激活函數(shù)的導(dǎo)數(shù)的值域要在一個(gè)合適的區(qū)間內(nèi),不能太大也不能太小,否則會(huì)影響訓(xùn)練的效率和穩(wěn)定性。Sigmoid函數(shù)Sigmoid函數(shù)連續(xù)且光滑,嚴(yán)格單調(diào),關(guān)于(0,0.5)中心對(duì)稱(chēng),可以將變量映射到(0,1)之間,是一個(gè)非常良好的閾值函數(shù)。Sigmoid函數(shù)作為激活函數(shù)有以下優(yōu)缺點(diǎn)。優(yōu)點(diǎn):平滑、易于求導(dǎo)。缺點(diǎn):①Sigmoid函數(shù)極容易導(dǎo)致梯度消失問(wèn)題。假設(shè)神經(jīng)元輸入Sigmoid函數(shù)的值特別大或特別小,那么對(duì)應(yīng)的梯度約等于0,即使從上一步傳導(dǎo)來(lái)的梯度較大,該神經(jīng)元權(quán)重和偏置的梯度也會(huì)趨近0,導(dǎo)致參數(shù)無(wú)法得到有效更新。②計(jì)算費(fèi)時(shí)。在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,常常要計(jì)算Sigmoid函數(shù)的值,進(jìn)行冪計(jì)算會(huì)導(dǎo)致耗時(shí)增加。③Sigmoid函數(shù)不是關(guān)于原點(diǎn)中心對(duì)稱(chēng)的(Zero-centered)。

Tanh函數(shù)Tanh函數(shù)作為激活函數(shù)有以下優(yōu)缺點(diǎn)。優(yōu)點(diǎn):①平滑、易于求導(dǎo)。②解決了Sigmoid函數(shù)收斂變慢的問(wèn)題,相對(duì)于Sigmoid函數(shù)提高了收斂速度。缺點(diǎn):①梯度消失問(wèn)題依然存在。②函數(shù)值的計(jì)算復(fù)雜度高,是指數(shù)級(jí)的。ReLU函數(shù)優(yōu)點(diǎn):①相比于Sigmoid函數(shù)的兩端飽和,ReLU函數(shù)為左飽和函數(shù),且在x>0時(shí)導(dǎo)數(shù)為1,這在一定程度上緩解了神經(jīng)網(wǎng)絡(luò)的梯度消失問(wèn)題。②沒(méi)有復(fù)雜的指數(shù)運(yùn)算,計(jì)算簡(jiǎn)單、效率提高。③收斂速度較快,比Sigmoid函數(shù)和Tanh函數(shù)快很多。④單側(cè)抑制、寬興奮邊界使得ReLU函數(shù)比Sigmoid函數(shù)更符合生物學(xué)神經(jīng)激活機(jī)制。缺點(diǎn):①輸出是非零中心化的,給后一層的神經(jīng)網(wǎng)絡(luò)引入偏置偏移,會(huì)影響梯度下降的效率。②ReLU神經(jīng)元在訓(xùn)練時(shí)比較容易“死亡”。Swish函數(shù)Swish函數(shù)的主要優(yōu)點(diǎn)如下。(1)Swish函數(shù)的無(wú)界性有助于防止在慢速訓(xùn)練期間梯度逐漸接近0并導(dǎo)致飽和。(2)Swish函數(shù)的平滑度在優(yōu)化和泛化中起了重要作用。Softmax函數(shù)Softmax函數(shù)常在神經(jīng)網(wǎng)絡(luò)輸出層中充當(dāng)激活函數(shù),將輸出層的值通過(guò)激活函數(shù)映射到(0,1)區(qū)間,當(dāng)前輸出可以看作屬于各個(gè)分類(lèi)的概率,從而用來(lái)進(jìn)行多分類(lèi)。Softmax函數(shù)的映射值越大,則真實(shí)類(lèi)別的可能性越大。4.3前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)前饋神經(jīng)網(wǎng)絡(luò)也經(jīng)常稱(chēng)為多層感知機(jī)(Multi-LayerPerceptron,MLP),但多層感知機(jī)的叫法并不十分合理。因?yàn)榍梆伾窠?jīng)網(wǎng)絡(luò)其實(shí)是由多層的邏輯回歸模型(連續(xù)的非線性函數(shù))組成的,而不是由多層的感知機(jī)(不連續(xù)的非線性函數(shù))組成的。前饋神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)4.3.1通用近似定理神經(jīng)網(wǎng)絡(luò)最有價(jià)值的地方可能在于,它可以在理論上證明:一個(gè)包含足夠多隱藏層神經(jīng)元的多層前饋神經(jīng)網(wǎng)絡(luò),能以任意精度逼近任意預(yù)定的連續(xù)函數(shù)。這個(gè)定理即通用近似定理(UniversalApproximationTheorem)。這里的Universal也有人將其翻譯成“萬(wàn)能的”。4.3.2應(yīng)用到機(jī)器學(xué)習(xí)根據(jù)通用近似定理,神經(jīng)網(wǎng)絡(luò)在某種程度上可以作為一個(gè)“萬(wàn)能”函數(shù)來(lái)使用,可以用來(lái)進(jìn)行復(fù)雜的特征轉(zhuǎn)換,或者近似一個(gè)復(fù)雜的條件分布。在機(jī)器學(xué)習(xí)中,輸入樣本的特征對(duì)分類(lèi)器的影響很大。以監(jiān)督學(xué)習(xí)為例,好的特征可以極大提高分類(lèi)器的性能。4.3.3參數(shù)學(xué)習(xí)在神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)中,需要尋找最優(yōu)參數(shù)(權(quán)重和偏置),即尋找使損失函數(shù)的值盡可能小的參數(shù)。為了找到使損失函數(shù)的值盡可能小的參數(shù),首先需要計(jì)算參數(shù)的梯度(導(dǎo)數(shù)),然后以這個(gè)導(dǎo)數(shù)為指引,逐步更新參數(shù)的值。4.4反向傳播算法反向傳播(BackPropagation,BP)算法是目前用來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的常用且有效的算法。反向傳播算法的主要思想是:將訓(xùn)練集數(shù)據(jù)輸入神經(jīng)網(wǎng)絡(luò)的輸入層,經(jīng)過(guò)隱藏層,最后到達(dá)輸出層并輸出結(jié)果,這是神經(jīng)網(wǎng)絡(luò)的前向傳播過(guò)程。4.5梯度計(jì)算前面已經(jīng)介紹了神經(jīng)網(wǎng)絡(luò)的最終目標(biāo),即使所定義的損失函數(shù)的值達(dá)到最小。為了使損失函數(shù)的值最小,常使用的核心方法是“梯度法”。復(fù)合函數(shù)的計(jì)算圖

4.5梯度計(jì)算4.6網(wǎng)絡(luò)優(yōu)化神經(jīng)網(wǎng)絡(luò)的參數(shù)學(xué)習(xí)比線性模型更加困難,當(dāng)前神經(jīng)網(wǎng)絡(luò)模型的難點(diǎn)主要如下。(1)優(yōu)化問(wèn)題。神經(jīng)網(wǎng)絡(luò)模型是一個(gè)非凸函數(shù),再加上在深度神經(jīng)網(wǎng)絡(luò)中的梯度消失問(wèn)題,很難進(jìn)行優(yōu)化。另外,深層神經(jīng)網(wǎng)絡(luò)一般參數(shù)比較多,訓(xùn)練數(shù)據(jù)也比較多,這會(huì)導(dǎo)致訓(xùn)練的效率比較低。(2)泛化問(wèn)題。因?yàn)樯窠?jīng)網(wǎng)絡(luò)的擬合能力強(qiáng),反而容易在訓(xùn)練集上產(chǎn)生過(guò)擬合。因此在訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)時(shí),需要通過(guò)一定的正則化方法來(lái)改善網(wǎng)絡(luò)的泛化能力。優(yōu)化算法1.批量梯度下降(BatchGradientDescent,BGD)2.隨機(jī)梯度下降(SGD)3.小批量梯度下降4.7應(yīng)用實(shí)例向讀者介紹前饋神經(jīng)網(wǎng)絡(luò)模型在PyTorch中的簡(jiǎn)單構(gòu)建。關(guān)于數(shù)據(jù)集的準(zhǔn)備,本節(jié)的示例中使用手寫(xiě)數(shù)字的MINIST數(shù)據(jù)集。該數(shù)據(jù)集包含60000個(gè)用于訓(xùn)練的示例和10000個(gè)用于測(cè)試的示例。這些數(shù)字已經(jīng)過(guò)尺寸標(biāo)準(zhǔn)化并位于圖像中心,圖像是固定大小的(28像素×28像素),其值為0~10。為簡(jiǎn)單起見(jiàn),每個(gè)圖像都被展平并轉(zhuǎn)換為784(28×28)個(gè)特征的一維NumPy數(shù)組4.7應(yīng)用實(shí)例代碼實(shí)現(xiàn)如下。1.import

torch

2.import

torch.nn

as

nn

3.import

torchvision

4.import

torchvision.transforms

as

transforms

5.#

配置

6.device=torch.device('cuda'

if

torch.cuda.is_available()

else

'cpu')

7.#

超參數(shù)

8.input_size=784

9.hidden_size=500

10.num_classes=10

11.num_epochs=5

12.batch_size=100

13.learning_rate=0.001

14.

15.#

數(shù)據(jù)集

16.train_dataset=torchvision.datasets.MNIST(root='../../data',

17.

train=True,

18.

transform=transforms.ToTensor(),

19.

download=True)

20.

21.test_dataset=torchvision.datasets.MNIST(root='../../data',

4.7應(yīng)用實(shí)例22.

train=False,

23.

transform=transforms.ToTensor())

24.

25.#

引入數(shù)據(jù)集26.train_loader=torch.utils.data.DataLoader(dataset=train_dataset,

27.

batch_size=batch_size,

28.

shuffle=True)

29.

30.test_loader=torch.utils.data.DataLoader(dataset=test_dataset,

31.

batch_size=batch_size,

32.

shuffle=False)

33.

34.#

全連接層35.class

NeuralNet(nn.Module):

36.

def

__init__(self,input_size,hidden_size,num_classes):

37.

super(NeuralNet,self).__init__()

38.

self.fc1=nn.Linear(input_size,hidden_size)

39.

self.relu=nn.ReLU()

40.

self.fc2=nn.Linear(hidden_size,num_classes)

4.7應(yīng)用實(shí)例41.

42.

def

forward(self,x):

43.

out=self.fc1(x)

44.

out=self.relu(out)

45.

out=self.fc2(out)

46.

return

out

47.

48.model=NeuralNet(input_size,hidden_size,num_classes).to(device)

49.

50.#

損失與優(yōu)化51.criterion=nn.CrossEntropyLoss()

52.optimizer=torch.optim.Adam(model.parameters(),lr=learning_rate)

53.

54.#

訓(xùn)練模型55.total_step=len(train_loader)

56.for

epoch

in

range(num_epochs):

57.

for

i,(images,labels)

in

enumerate(train_loader):

58.

#

Move

tensors

to

the

configured

device

59.

images=images.reshape(-1,28

*

28).to(device)

60.

labels=labels.to(device)

4.7應(yīng)用實(shí)例61.

62.

#

前向傳播和計(jì)算損失63.

outputs=model(images)

64.

loss=criterion(outputs,labels)

65.

66.

#

反向優(yōu)化67.

optimizer.zero_grad()

68.

loss.backward()

69.

optimizer.step()

70.

71.

if

(i

+

1)

%

100

==

0:

72.

print('Epoch

[{}/{}],Step

[{}/{}],Loss:

{:.4f}'

73.

.format(epoch

+

1,num_epochs,i

+

1,total_step,loss.item()))

74.

4.7應(yīng)用實(shí)例75.#

測(cè)試76.#

In

test

phase,we

don't

need

to

compu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論