人工智能基礎(chǔ) 課件 5.2 使用深度學(xué)習(xí)實(shí)現(xiàn)手寫數(shù)字識(shí)別_第1頁(yè)
人工智能基礎(chǔ) 課件 5.2 使用深度學(xué)習(xí)實(shí)現(xiàn)手寫數(shù)字識(shí)別_第2頁(yè)
人工智能基礎(chǔ) 課件 5.2 使用深度學(xué)習(xí)實(shí)現(xiàn)手寫數(shù)字識(shí)別_第3頁(yè)
人工智能基礎(chǔ) 課件 5.2 使用深度學(xué)習(xí)實(shí)現(xiàn)手寫數(shù)字識(shí)別_第4頁(yè)
人工智能基礎(chǔ) 課件 5.2 使用深度學(xué)習(xí)實(shí)現(xiàn)手寫數(shù)字識(shí)別_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章機(jī)器學(xué)習(xí)與深度學(xué)習(xí)任務(wù)1:使用機(jī)器學(xué)習(xí)實(shí)現(xiàn)鳶尾花分類任務(wù)2:使用深度學(xué)習(xí)實(shí)現(xiàn)手寫數(shù)字識(shí)別機(jī)器學(xué)習(xí)的概念機(jī)器學(xué)習(xí)分類機(jī)器學(xué)習(xí)的流程機(jī)器學(xué)習(xí)的應(yīng)用場(chǎng)景深度學(xué)習(xí)概述感知機(jī)深度神經(jīng)網(wǎng)絡(luò)2任務(wù)2:使用深度學(xué)習(xí)實(shí)現(xiàn)手寫數(shù)字識(shí)別深度學(xué)習(xí)概述感知機(jī)深度神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)概述1深度學(xué)習(xí)定義深度學(xué)習(xí)(DeepLearning)是機(jī)器學(xué)習(xí)領(lǐng)域中一個(gè)新的研究方向,它被引入機(jī)器學(xué)習(xí)使其更接近于最初的目標(biāo)——人工智能。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一種,它特指使用深度神經(jīng)網(wǎng)絡(luò)(DeepNeuralNetworks,DNNs)來(lái)學(xué)習(xí)數(shù)據(jù)的表示和提取特征的一種算法。這種算法通過(guò)構(gòu)建多層網(wǎng)絡(luò)結(jié)構(gòu),對(duì)目標(biāo)進(jìn)行多層表示,以期通過(guò)多層的高層次特征來(lái)表示數(shù)據(jù)的抽象語(yǔ)義信息,獲得更好的特征魯棒性。深度學(xué)習(xí)中的“深度”一詞表示用于識(shí)別數(shù)據(jù)模式的多層算法或神經(jīng)網(wǎng)絡(luò)。深度學(xué)習(xí)概述2機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和人工智能之間的關(guān)系人工智能是一個(gè)最寬泛的概念,是一個(gè)研究領(lǐng)域,同時(shí)也是一個(gè)實(shí)現(xiàn)目標(biāo),而機(jī)器學(xué)習(xí)則是實(shí)現(xiàn)這一目標(biāo)的一類方法,深度學(xué)習(xí)只是機(jī)器學(xué)習(xí)這一類方法中的一種。人工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)關(guān)系圖深度學(xué)習(xí)概述3深度學(xué)習(xí)與機(jī)器學(xué)習(xí)特征提取區(qū)別(1)機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)通常需要人工進(jìn)行特征提取,即將原始數(shù)據(jù)轉(zhuǎn)換為算法可以理解的格式。這個(gè)過(guò)程需要領(lǐng)域知識(shí)和經(jīng)驗(yàn),且對(duì)于不同的數(shù)據(jù)集和任務(wù),特征提取的方式可能不同。(2)深度學(xué)習(xí)深度學(xué)習(xí)能夠自動(dòng)從原始數(shù)據(jù)中提取特征,無(wú)需或僅需少量的人工干預(yù)。深度學(xué)習(xí)模型通過(guò)多層網(wǎng)絡(luò)結(jié)構(gòu),逐步將低層次的特征抽象為高層次的特征表示,這一過(guò)程是自動(dòng)完成的,且能夠?qū)W習(xí)到更為復(fù)雜和抽象的特征。機(jī)器學(xué)習(xí)和深度學(xué)習(xí)特征提取區(qū)別感知機(jī)1單層感知機(jī)及其基本原理單層感知機(jī)模型是由科學(xué)家弗蘭克·羅森布拉特在1957年提出的,它的基本結(jié)構(gòu)如圖5-14所示,簡(jiǎn)單來(lái)說(shuō),感知機(jī)(Perceptron)就是一個(gè)由兩層神經(jīng)元構(gòu)成的網(wǎng)絡(luò)結(jié)構(gòu):輸入層接收外界的輸入信號(hào),通過(guò)激活函數(shù)變換(閾值),把信號(hào)傳送至輸出層,因此它也被稱為“閾值邏輯單元”;輸出層(也被稱為是感知機(jī)的功能層)就是M-P神經(jīng)元。單層感知機(jī)基本結(jié)構(gòu)左圖輸出y的數(shù)學(xué)表達(dá)式為:感知機(jī)下面我們通過(guò)一個(gè)區(qū)分香蕉和西瓜的經(jīng)典案例來(lái)看看感知機(jī)是如何工作的。為了簡(jiǎn)單起見(jiàn),我們假設(shè)西瓜和香蕉有且僅有兩個(gè)特征:形狀和顏色,其他特征暫不考慮。這兩個(gè)特征都是基于視覺(jué)刺激而最易得到的。假設(shè)特征x1代表輸入顏色,特征x2代表形狀,權(quán)重w1和w2的默認(rèn)值暫且都設(shè)為1。為了進(jìn)一步簡(jiǎn)化,我們把閾值θ(也稱為偏置—bias)設(shè)置為0。為了標(biāo)識(shí)方便,我們將感知機(jī)輸出數(shù)字化,若輸出為“1”,代表判定為“西瓜”;若輸出為“0”,代表判定為“香蕉”。感知機(jī)學(xué)習(xí)算法感知機(jī)為了方便機(jī)器計(jì)算,我們對(duì)顏色和形狀這兩個(gè)特征給予不同的值,以示區(qū)別。比如,顏色這個(gè)特征為綠色時(shí),x取值為1,而當(dāng)顏色為黃色時(shí),x取值為-1。類似地,如果形狀這個(gè)特征為圓形,x取值為1,形狀為月牙形狀時(shí),x取值為-1,如下表所示。西瓜和香蕉的特征值表這樣一來(lái),可以很容易根據(jù)感知機(jī)輸出y數(shù)學(xué)表達(dá)式,如下式所示,對(duì)西瓜和香蕉做出鑒定:西瓜:y=f(w1x1+w2x2-θ)=f(1×1+1×1-0)=f(2)=1香蕉:y=f(w1x1+w2x2-θ)=f(1×(-1)+1×(-1)-0)=f(-2)=0感知機(jī)這里,我們使用了最簡(jiǎn)單的階躍函數(shù)作為激活函數(shù)。在階躍函數(shù)中,輸出規(guī)則非常簡(jiǎn)單:當(dāng)f(x)中x>0時(shí),f(x)輸出為1,否則輸出為0。通過(guò)激活函數(shù)的“潤(rùn)滑”之后,結(jié)果就變成我們想要的樣子,這樣就實(shí)現(xiàn)了西瓜和香蕉的判定。

接下來(lái)我們假定w1還是等于1,而w2等于-1,閾值θ還是等于0。然后我們對(duì)于西瓜的特征:綠色圓形通過(guò)加權(quán)求和再經(jīng)過(guò)階躍激活函數(shù)后輸出如下式所示:

西瓜:y=y=f(w1x1+w2x2-θ)=f(1×1+1×(-1)-0)=f(-2)=f(0)=0

輸出為0,而我們假設(shè)的輸出值0為香蕉,顯然判斷錯(cuò)了。對(duì)于香蕉的特征我們加權(quán)求和經(jīng)過(guò)階躍激活函數(shù)得到輸出值為0,對(duì)應(yīng)香蕉,判斷正確。由此可之,我們判斷的正確與否和我們的權(quán)值w1、w2和閾值相關(guān)。

那么怎么選擇權(quán)值和閾值呢?事實(shí)上,我們并不能一開始就知道這幾個(gè)參數(shù)的取值,而是通過(guò)一點(diǎn)點(diǎn)地“試錯(cuò)”(Try-Error),而這里的“試錯(cuò)”其實(shí)就是感知機(jī)的學(xué)習(xí)過(guò)程。感知機(jī)2感知機(jī)的學(xué)習(xí)過(guò)程在學(xué)習(xí)之前我們會(huì)對(duì)權(quán)重和閾值進(jìn)行隨機(jī)初始化,如果初始化的值能判斷出是西瓜還是香蕉,則我們無(wú)需學(xué)習(xí)。但如果判斷錯(cuò)了那么就會(huì)根據(jù)感知機(jī)的學(xué)習(xí)規(guī)則,來(lái)調(diào)整權(quán)值和閾值。學(xué)習(xí)訓(xùn)練過(guò)程通常包括以下幾個(gè)步驟:1.初始化:隨機(jī)初始化權(quán)重和偏置。2.迭代訓(xùn)練:對(duì)于訓(xùn)練數(shù)據(jù)集中的每個(gè)樣本,執(zhí)行以下步驟:(1)計(jì)算當(dāng)前樣本的加權(quán)和。(2)使用激活函數(shù)計(jì)算輸出類別。(3)如果輸出類別與實(shí)際類別不一致(即發(fā)生誤分類),則根據(jù)誤分類情況調(diào)整權(quán)重和偏置,以減少損失函數(shù)的值。3.重復(fù)迭代:重復(fù)上述步驟,直到滿足停止條件(如所有樣本都正確分類,或達(dá)到預(yù)設(shè)的迭代次數(shù))。感知機(jī)2感知機(jī)的學(xué)習(xí)過(guò)程通過(guò)這個(gè)過(guò)程,感知機(jī)能夠?qū)W習(xí)到一組合適的權(quán)重和偏置,使得模型能夠?qū)π碌奈粗獦颖具M(jìn)行準(zhǔn)確的分類。感知機(jī)完整工作流程深度神經(jīng)網(wǎng)絡(luò)3深度神經(jīng)網(wǎng)絡(luò)1.神經(jīng)網(wǎng)絡(luò)模型感知機(jī),也叫單層神經(jīng)網(wǎng)絡(luò),是最基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)。神經(jīng)網(wǎng)絡(luò)模型由生物神經(jīng)中得到啟發(fā)。在生物神經(jīng)元細(xì)胞中,神經(jīng)突觸接收到信號(hào),經(jīng)過(guò)接收并處理信號(hào)后判斷信號(hào)的信息強(qiáng)弱,來(lái)做出不同神經(jīng)電位變化反應(yīng)。神經(jīng)元結(jié)構(gòu)深度神經(jīng)網(wǎng)絡(luò)其實(shí)解決“異或”問(wèn)題的關(guān)鍵在于能否解決非線性可分問(wèn)題,而要解決非線性問(wèn)題就需要提高網(wǎng)絡(luò)的表征能力,也就是需要使用更加復(fù)雜的網(wǎng)絡(luò)。按照這個(gè)思路,可以考慮在輸入層和輸出層之間添加一層神經(jīng)元,將其稱之為隱藏層(HiddenLayer)。增加了一層隱藏層的多層感知機(jī)模型深度神經(jīng)網(wǎng)絡(luò)雖然多層感知機(jī)模型較M-P神經(jīng)元而言已經(jīng)有了很大進(jìn)步,但這一類模型仍然無(wú)法很好地解決比較復(fù)雜的非線性問(wèn)題。因此,在多層感知機(jī)模型的基礎(chǔ)上,研究出了如圖所示的神經(jīng)網(wǎng)絡(luò)模型。神經(jīng)網(wǎng)絡(luò)模型深度神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)模型具有如下特點(diǎn):(1)由輸入層、隱藏層和輸出層組成,根據(jù)問(wèn)題的需要,結(jié)構(gòu)中可能含有更多隱藏層;(2)每層神經(jīng)元與下一層神經(jīng)元兩兩之間建立連接;(3)神經(jīng)元之間不存在同層連接,也不存在跨層連接;(4)輸入層僅僅起到接收輸入的作用,不進(jìn)行函數(shù)處理;(5)而隱藏層與輸出層的神經(jīng)元都具有激活函數(shù),是功能神經(jīng)元。圖為具備單個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)。此外,針對(duì)以上的第(1)條中,對(duì)于神經(jīng)網(wǎng)絡(luò)模型,當(dāng)隱藏層如下圖5-20所示大于兩層時(shí),就稱之為深度神經(jīng)網(wǎng)絡(luò)(DeepNeuralNetwork,DNN)。深度神經(jīng)網(wǎng)絡(luò)模型深度神經(jīng)網(wǎng)絡(luò)2.深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程是一個(gè)復(fù)雜但系統(tǒng)化的流程,主要包括以下幾個(gè)關(guān)鍵步驟:(1)準(zhǔn)備數(shù)據(jù)收集:找到和任務(wù)相關(guān)的數(shù)據(jù),比如圖片、文本等。處理:清洗數(shù)據(jù),比如去掉錯(cuò)誤或重復(fù)的部分,然后調(diào)整數(shù)據(jù)格式以便模型可以讀取。(2)設(shè)計(jì)網(wǎng)絡(luò)架構(gòu):決定網(wǎng)絡(luò)的樣子,比如它有多少層,每層有多少節(jié)點(diǎn)等。初始化:給網(wǎng)絡(luò)的參數(shù)(比如每個(gè)節(jié)點(diǎn)的權(quán)重和偏置)隨機(jī)賦值,這是訓(xùn)練的起點(diǎn)。(3)預(yù)測(cè)與反饋預(yù)測(cè):用網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行預(yù)測(cè),看它能得到什么結(jié)果。計(jì)算誤差:比較預(yù)測(cè)結(jié)果和真實(shí)結(jié)果,看看差了多少,這個(gè)差就是誤差。深度神經(jīng)網(wǎng)絡(luò)2.深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程4)調(diào)整參數(shù)反向傳播:基于誤差,反向計(jì)算每個(gè)參數(shù)應(yīng)該調(diào)整多少,以便減少誤差。更新:按照計(jì)算出的調(diào)整量,更新網(wǎng)絡(luò)的參數(shù)。(5)重復(fù)訓(xùn)練迭代:重復(fù)上面的預(yù)測(cè)、計(jì)算誤差、調(diào)整參數(shù)的過(guò)程,直到誤差減小到滿意的程度或者達(dá)到了預(yù)設(shè)的訓(xùn)練次數(shù)。(6)測(cè)試模型評(píng)估:用之前沒(méi)見(jiàn)過(guò)的數(shù)據(jù)來(lái)測(cè)試訓(xùn)練好的模型,看它在新的數(shù)據(jù)上表現(xiàn)如何。任務(wù)實(shí)施任務(wù)目標(biāo):實(shí)現(xiàn)手寫數(shù)字(MNIST)識(shí)別任務(wù)描述:在百度AIStudio平臺(tái),對(duì)深度學(xué)習(xí)框架PaddlePaddle內(nèi)置數(shù)據(jù)集手寫數(shù)字(MNIST)實(shí)現(xiàn)分類預(yù)測(cè)。本任務(wù)的內(nèi)容就是搭建神經(jīng)網(wǎng)絡(luò)模型,對(duì)手寫數(shù)字?jǐn)?shù)據(jù)集進(jìn)行學(xué)習(xí)訓(xùn)練,最后抽取幾張圖片查看模型預(yù)測(cè)效果。1.創(chuàng)建項(xiàng)目和環(huán)境(1)登錄百度AIStudio平臺(tái),創(chuàng)建“手寫數(shù)字識(shí)別”項(xiàng)目。(2)啟動(dòng)環(huán)境任務(wù)實(shí)施2.編寫代碼在項(xiàng)目的Notebook編輯器里,點(diǎn)擊編輯器上方的“+”插入代碼單元格,并編寫下面的代碼。importpaddlefrompaddleimportnnfrompaddle.vision.datasetsimportMNISTfrompaddle.vision.transformsimportCompose,Normalize,ToTensorfrompaddle.ioimportDataLoaderimportmatplotlib.pyplotasplt

#設(shè)置設(shè)備paddle.set_device('gpu'ifpaddle.is_compiled_with_cuda()andpaddle.get_cuda_device_count()>0else'cpu')

#數(shù)據(jù)預(yù)處理transform=Compose([ToTensor(),Normalize(mean=[0.5],std=[0.5])])

#加載數(shù)據(jù)集train_dataset=MNIST(mode='train',transform=transform)test_dataset=MNIST(mode='test',transform=transform)任務(wù)實(shí)施2.編寫代碼#數(shù)據(jù)加載器train_loader=DataLoader(train_dataset,batch_size=64,shuffle=True)test_loader=DataLoader(test_dataset,batch_size=64,shuffle=False)

#定義多層神經(jīng)網(wǎng)絡(luò)模型classMLP(nn.Layer):def__init__(self):super(MLP,self).__init__()self.fc1=nn.Linear(in_features=784,out_features=512)self.relu=nn.ReLU()self.fc2=nn.Linear(in_features=512,out_features=10)

defforward(self,x):x=paddle.reshape(x,[x.shape[0],-1])#展平輸入x=self.relu(self.fc1(x))x=self.fc2(x)returnx

#實(shí)例化模型model=MLP()

#設(shè)置損失函數(shù)和優(yōu)化器loss_fn=nn.CrossEntropyLoss()optimizer=paddle.optimizer.Adam(learning_rate=0.001,parameters=model.parameters())任務(wù)實(shí)施2.編寫代碼#訓(xùn)練模型epochs=5forepochinrange(epochs):forbatch_id,(images,labels)inenumerate(train_loader):preds=model(images)loss=loss_fn(preds,labels)loss.backward()optimizer.step()optimizer.clear_grad()ifbatch_id%100==0:print(f"Epoch[{epoch+1}/{epochs}],Batch[{batch_id+1}],Loss:{loss.numpy()}")

#評(píng)估模型model.eval()wit

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論