《人工智能基礎(chǔ)及應(yīng)用》 習(xí)題及參考答案 王方石 第1-9章_第1頁
《人工智能基礎(chǔ)及應(yīng)用》 習(xí)題及參考答案 王方石 第1-9章_第2頁
《人工智能基礎(chǔ)及應(yīng)用》 習(xí)題及參考答案 王方石 第1-9章_第3頁
《人工智能基礎(chǔ)及應(yīng)用》 習(xí)題及參考答案 王方石 第1-9章_第4頁
《人工智能基礎(chǔ)及應(yīng)用》 習(xí)題及參考答案 王方石 第1-9章_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章習(xí)題1.1956年達(dá)特茅斯會議上,學(xué)者們首次提出“ArtificialIntelligence”(人工智能)這個概念時,所確定的人工智能研究方向不包括()。A.研究人類大腦結(jié)構(gòu)和智能起源B.研究如何用計算機(jī)表示人類知識C.研究如何用計算機(jī)來模擬人類智能D.研究智能學(xué)習(xí)的機(jī)制在現(xiàn)階段,下列哪項(xiàng)尚未成為人工智能研究的主要方向和目標(biāo)?()A.研究如何用計算機(jī)模擬人類智能的若干功能,如會聽、會看、會說研究如何用計算機(jī)延伸和擴(kuò)展人類智能C.研究機(jī)器智能與人類智能的本質(zhì)差別D.研究如何用計算機(jī)模擬人類大腦的網(wǎng)絡(luò)結(jié)構(gòu)和部分功能3.下列關(guān)于人工智能的說法中不正確的是()。A.人工智能是關(guān)于知識的學(xué)科--怎樣表示知識以及怎樣獲得知識并使用知識的學(xué)科B.人工智能研究如何使計算機(jī)去做過去只有人才能做的智能工作C.自1956年人工智能學(xué)科誕生以來,經(jīng)過多年的發(fā)展,它的理論已趨于成熟,得到了充分應(yīng)用。D.人工智能不是人的智能,但能像人那樣思考。甚至也可能超過人的智能4.強(qiáng)人工智能強(qiáng)調(diào)人工智能的完整性。以下哪個不屬于強(qiáng)人工智能?()A.類人機(jī)器的思考和推理就像人的思維一樣B.非類人機(jī)器產(chǎn)生了和人完全不一樣的知覺和意識C.智能機(jī)器看起來像是智能的,其實(shí)并不真正擁有智能,也不會有自主意識D.有可能制造出真正能推理和解決問題的智能機(jī)器5.從人工智能研究流派來看,西蒙和紐厄爾提出的“邏輯理論家”方法,應(yīng)該屬于()。A.行為主義B.符號主義C.連接主義D.理性主義6.從人工智能研究流派來看,麥卡錫提出的“狀態(tài)空間搜索法”,應(yīng)該屬于()。A.行為主義B.符號主義C.連接主義D.理性主義7.下列關(guān)于人工智能未來發(fā)展趨勢的描述,哪些是錯誤的?()A.人工智能目前僅適用于特定的、專用的問題B.人工智能受到越來越多的關(guān)注,許多國家出臺了支持人工智能發(fā)展的戰(zhàn)略計劃C.通用人工智能的發(fā)展正處于起步階段D.人工智能將脫離人類控制,并最終毀滅人類8.考察人工智能的一些應(yīng)用,目前()任務(wù)可以通過人工智能來解決。A.在市場上購買一周的食品雜貨B.以競技水平玩德州撲克游戲C.在Web上購買一周的食品雜貨D.將英文口語實(shí)時翻譯為中文口語9.()的本質(zhì)就是用符號體系來描述知識,再對所得到的符號表示進(jìn)行計算,從而求解問題。A.行為主義B.符號主義C.連接主義D.主觀主義10.以下說法中,錯誤的是()。A.智能,是“智慧”和“能力”的綜合表現(xiàn)B.人工智能學(xué)科誕生于1956年的達(dá)特茅斯會議C.目前的人工智能研究是在有限條件下對人類智能的某種能力在某些具體問題上的模擬D.人工智能最開始的定義是研究或制造人類的智能11.下列()屬于人工智能的研究領(lǐng)域。A.圖像理解B.人臉識別C.專家系統(tǒng)D.機(jī)器學(xué)習(xí)E.以上都是在達(dá)特茅斯會議上,提出了人工智能研究的主要方法,包括()。西蒙和紐維爾的邏輯理論家麥卡錫的狀態(tài)空間搜索法明斯基的人工神經(jīng)網(wǎng)絡(luò)以上三種答案:題號123456789101112答案ACCCBBDBCDBDED第2章習(xí)題什么是知識?它有哪些特性?有哪幾類知識表示方法?答:知識是人類在長期的生活、社會實(shí)踐及科學(xué)實(shí)驗(yàn)中經(jīng)過總結(jié)、提升與凝練的對客觀世界(包括人類自身)的認(rèn)識和經(jīng)驗(yàn),也包括對事實(shí)和信息的描述或在教育和實(shí)踐中獲得的技能。知識具有相對正確性和不確定性。知識表示方法分為兩類:陳述式知識表示法和過程式知識表示法。用產(chǎn)生式表示:如果一種微生物的染色斑是革蘭氏陰性,其形狀呈桿狀,病人是中間宿主,那么該生物是綠桿菌的可能性有6成。答:IF本微生物的染色斑是革蘭氏陰性∧本微生物的形狀呈桿狀∧病人是中間宿主THEN該生物是綠桿菌(0.6)3.請用狀態(tài)空間表示法描述下列問題:有5個傳教士和5個野人來到河邊,準(zhǔn)備從左岸渡河到右岸,河岸有一條船,每次至多可供3人乘渡,所有人都會劃船。為安全起見,在河的兩岸以及船上的野人數(shù)目總是不可以超過傳教士的數(shù)目(但允許在河的某一岸只有野人而沒有傳教士)。答:(1)設(shè)計狀態(tài)空間表示,令未過河的修道士數(shù)量為m未過河的野人數(shù)量為c,未過河的船的數(shù)量為b(=1表示船未過河,=0表示船已過河)。則狀態(tài)空間可以用向量:S={m,c,b}表示。理論上,過河的所有狀態(tài)數(shù)量為:6*6*2=72個初始狀態(tài)為(5,5,1),目標(biāo)狀態(tài)為(0,0,0)。(2)設(shè)計狀態(tài)轉(zhuǎn)移形式狀態(tài)轉(zhuǎn)移即過河操作。用P代表船從左岸到右岸;用Q代表船從右岸到左岸。船上:修道士人數(shù)為i,野人人數(shù)為j,滿足:1≦i+j≦3;2)i≠0時,i≧j根據(jù)以上限制,可能的操作共有16種:船從左岸到右岸:P01;P02;P03;P10;P11;P20;P21;P30;(不能有P12)船從右岸到左岸:Q01;Q02;Q03;Q10;Q11;Q20;Q21;Q30;4.使用RDF三元組表示事實(shí)知識:葡萄牙籍的C羅效力于西班牙皇家馬德里足球隊(duì)。答:(皇家馬德里足球隊(duì),屬于,西班牙)(C羅,效力,皇家馬德里足球隊(duì))(C羅,國籍,葡萄牙)產(chǎn)生式系統(tǒng)哪幾部分組成?分別簡述各部分的用途,其中知識庫是指什么?答:一個產(chǎn)生式系統(tǒng)由規(guī)則庫、綜合數(shù)據(jù)庫、控制系統(tǒng)3部分組成。(1)規(guī)則庫:用于描述相應(yīng)領(lǐng)域內(nèi)知識的產(chǎn)生式集合稱為規(guī)則庫。(1分)(2)綜合數(shù)據(jù)庫又稱為事實(shí)庫,它是用于存放問題求解過程中各種當(dāng)前信息(例如問題的初始狀態(tài)、原始證據(jù)、推理中得到的中間結(jié)論及最終結(jié)論)的數(shù)據(jù)結(jié)構(gòu)。(3)控制系統(tǒng)又稱為推理機(jī),包括控制程序和推理程序兩部分,負(fù)責(zé)整個產(chǎn)生式系統(tǒng)的運(yùn)行,實(shí)現(xiàn)對問題的求解。知識庫是是指由綜合數(shù)據(jù)庫和規(guī)則庫共同組成的數(shù)據(jù)庫。第3章習(xí)題1名詞解釋搜索策略、盲目搜索策略、啟發(fā)式搜索策略、啟發(fā)信息、最優(yōu)解、算法的完備性、算法的最優(yōu)性答:略2盲目搜索策略和啟發(fā)式搜索策略的區(qū)別是什么?有哪幾種常用的盲目搜索算法?有哪幾種常用的啟發(fā)式搜索算法?答:盲目搜索策略和啟發(fā)式搜索策略的區(qū)別是:盲目搜索策略是在不具備給定問題的特定知識的情況下,系統(tǒng)按照某種固定的規(guī)則,依次或隨機(jī)地調(diào)用操作算子;啟發(fā)式搜索策略是考慮給定問題領(lǐng)域的可應(yīng)用知識,動態(tài)地確定調(diào)用操作算子的順序,優(yōu)先選擇當(dāng)前最合適的操作算子,利用啟發(fā)式信息來進(jìn)行搜索,盡量減少試探的次數(shù),提高搜索效率。常用的盲目搜索策略有:深度優(yōu)先搜索和寬度優(yōu)先搜索。常用的啟發(fā)式搜索策略有:A搜索和A*搜索。3深度優(yōu)先搜索與寬度優(yōu)先搜索的區(qū)別是什么?分析兩個算法的優(yōu)缺點(diǎn)。答:深度優(yōu)先搜索和寬度優(yōu)先搜索都是常用的盲目搜索算法,其區(qū)別是:節(jié)點(diǎn)在OPEN表中的排列順序是不同的,即擴(kuò)展節(jié)點(diǎn)的順序不同。深度優(yōu)先搜索總是選擇深度最深的節(jié)點(diǎn)進(jìn)行擴(kuò)展,若有多個相同深度的節(jié)點(diǎn),則按照指定的規(guī)則從中選擇一個。若該節(jié)點(diǎn)沒有子節(jié)點(diǎn),則選擇一個其他深度最深的節(jié)點(diǎn)進(jìn)行擴(kuò)展。依次類推,直到找到問題的解為止;或直到找不到可擴(kuò)展的節(jié)點(diǎn),結(jié)束。寬度優(yōu)先搜索總是優(yōu)先擴(kuò)展深度最淺的節(jié)點(diǎn)。先擴(kuò)展根節(jié)點(diǎn),再擴(kuò)展根節(jié)點(diǎn)的所有后繼,然后再擴(kuò)展它們的后繼,以此類推。如果有多個節(jié)點(diǎn)深度是相同的,則按照事先約定的規(guī)則,從深度最淺的幾個節(jié)點(diǎn)中選擇一個。優(yōu)缺點(diǎn):(1)深度優(yōu)先搜索算法的優(yōu)點(diǎn):比寬度優(yōu)先搜索節(jié)省大量時間和空間。缺點(diǎn):深度優(yōu)先搜索不具有最優(yōu)性,且不一定完備。對于狀態(tài)空間有限的問題,深度優(yōu)先搜索是完備的;但在無限狀態(tài)空間中,若沿著一個“錯誤”的路徑搜索下去而陷入“深淵”,則會導(dǎo)致無法到達(dá)目標(biāo)節(jié)點(diǎn),深度優(yōu)先搜索是不完備的。(2)寬度優(yōu)先搜索算法的優(yōu)點(diǎn):是完備的。若路徑代價是節(jié)點(diǎn)深度的非遞減函數(shù),或者每步代價都相等,寬度優(yōu)先搜索還具有最優(yōu)性。缺點(diǎn):需占用較大的存儲空間。4A搜索與A*搜索的區(qū)別是什么?答:A算法對啟發(fā)函數(shù)未做出任何限制,A搜索是不完備,也不具有最優(yōu)性。而A*搜索算法則對啟發(fā)函數(shù)h(n)加以限制,要求h(n)滿足如下條件:h(n)≤h*(n)。A*算法是完備的,且具有最優(yōu)解。5請用A*算法求解圖3.18中的八數(shù)碼問題:(1)說明所采用的啟發(fā)函數(shù),并證明其滿足A*算法的條件;(2)給出移動數(shù)碼牌的過程,并在每一步都標(biāo)出此狀態(tài)的f、g、h值。圖3.18八數(shù)碼問題答:令啟發(fā)函數(shù)h=錯位將牌數(shù)證明其滿足A*算法的條件:令d(n)=已移動將牌的步數(shù),即結(jié)點(diǎn)n在搜索樹中的深度w(n)=結(jié)點(diǎn)n所表示的狀態(tài)中“錯位”的將牌數(shù)將w(n)個“不在位”的將牌放在其各自的目標(biāo)位置上,至少需要移動w(n)步。h*(n)是結(jié)點(diǎn)n從當(dāng)前位置移動到目標(biāo)結(jié)點(diǎn)的最少實(shí)際步數(shù),顯然w(n)≤h*(n).以w(n)作為啟發(fā)式函數(shù)h(n),可以滿足對h(n)的下界的要求,即有h(n)=w(n)≤h*(n).因此,當(dāng)選擇w(n)作為啟發(fā)式函數(shù)解決8數(shù)碼問題時,A算法就是A*算法。6.針對同一待求解問題,我們可以定義不同的啟發(fā)函數(shù)。例如,在八數(shù)碼問題中,還可以選擇啟發(fā)函數(shù)為:h2(n)=所有錯位數(shù)碼牌與其目標(biāo)位置的距離之和此處的距離采用曼哈頓距離,曼哈頓距離就是計算兩點(diǎn)之間橫縱坐標(biāo)的距離之和。在此定義下,圖3.6所示初始狀態(tài)中h=5,則f=5。讀者可以自己證明:采用h2(n)作為啟發(fā)函數(shù),仍滿足A*算法的要求,并用它解決八數(shù)碼問題。答:h2(n)=所有錯位數(shù)碼牌與其目標(biāo)位置的距離之和證明其滿足A*算法的條件:令d(n)=已移動將牌的步數(shù),即結(jié)點(diǎn)n在搜索樹中的深度w(n)=結(jié)點(diǎn)n所表示的狀態(tài)中“錯位”的將牌數(shù)M(n)=結(jié)點(diǎn)n所表示的狀態(tài)中錯位將牌與其目標(biāo)位置之間的曼哈頓距離之和將w(n)個“錯位”的將牌放在其各自的目標(biāo)位置上,至少需要移動M(n)步。h*(n)是結(jié)點(diǎn)n從當(dāng)前位置移動到目標(biāo)結(jié)點(diǎn)的最少實(shí)際步數(shù),顯然M(n)≤h*(n).以M(n)作為啟發(fā)式函數(shù)h2(n),可以滿足對h2(n)的下界的要求,即有h2(n)=M(n)≤h*(n).因此,當(dāng)選擇M(n)作為啟發(fā)式函數(shù)解決8數(shù)碼問題時,A算法就是A*算法。7.爬山法的基本思路和主要特點(diǎn)是什么?有哪些變種的爬山法?其特點(diǎn)是什么?答:爬山法的基本思路:在每個狀態(tài),都是不斷地向啟發(fā)函數(shù)值增加最快的方向持續(xù)移動,即登高。爬山法的主要特點(diǎn):不完備、不具有最優(yōu)性。變種的爬山法有:隨機(jī)爬山法、隨機(jī)重啟爬山法。隨機(jī)爬山法、隨機(jī)重啟爬山法均不完備,但隨機(jī)重啟爬山法能以逼近1的概率接近完備。8.模擬退火法的基本思路和主要特點(diǎn)是什么?答:模擬退火法是一種逼近全局最優(yōu)解的概率方法,它是允許“下山”的隨機(jī)爬山法。模擬退火法的基本思路是:在退火初期,“下山”(即“變壞”)移動容易被采納,以便擺脫局部極值;但隨著時間的推移,“下山”的次數(shù)越來越少,即逐漸減少向“壞”的方向移動的頻率。模擬退火法的特點(diǎn):可能會讓算法跳出局部最優(yōu)解,最終找到全局最優(yōu)解。9.遺傳算法的基本思路和主要特點(diǎn)是什么?答:遺傳算法的基本思路:通過模仿自然進(jìn)化過程來搜索復(fù)雜問題的最優(yōu)解。特點(diǎn):在求解較為復(fù)雜的組合優(yōu)化問題時,遺傳算法通常能比一些常規(guī)優(yōu)化算法更快地獲得較好的優(yōu)化結(jié)果。在遺傳算法中,后繼節(jié)點(diǎn)是由兩個父輩狀態(tài)組合生成的,而不是對單一狀態(tài)修改而得到的。其處理過程是有性繁殖,而不是無性繁殖。10.適應(yīng)度函數(shù)在遺傳算法中的作用是什么?試舉例說明如何設(shè)計適應(yīng)度函數(shù)。答:適應(yīng)度函數(shù)是遺傳算法實(shí)現(xiàn)優(yōu)勝劣汰的主要依據(jù)。個體適應(yīng)度的值越大,說明該個體的狀態(tài)越好,競爭能力越強(qiáng),被選擇參與遺傳操作來產(chǎn)生新個體的可能性就越大,以此體現(xiàn)生物遺傳中適者生存的原理。例如,在八皇后問題中,采用“不相互攻擊的皇后對的數(shù)目”作為適應(yīng)度函數(shù)。11.說明選擇、交叉、變異操作的作用是什么。答:(1)選擇操作是從當(dāng)前種群中按照一定概率選出的優(yōu)良個體,使它們有機(jī)會作為父代繁殖下一代。其作用是使種群優(yōu)勝劣汰、不斷進(jìn)化,并且提高種群的收斂速度和搜索效率。交叉操作是遺傳算法中的核心操作。交叉的作用是:獲得比父代更優(yōu)秀的個體。變異的作用:保持種群的多樣性,對選擇、交叉過程中可能丟失的某些遺傳基因進(jìn)行修復(fù)和補(bǔ)充。當(dāng)發(fā)生早熟收斂時,變異還能跳出局部最優(yōu)解的陷阱。變異操作不僅可以保證實(shí)現(xiàn)搜索的目標(biāo),而且可以提高搜索的效率。12.遺傳算法中避免局部最優(yōu)解的關(guān)鍵技術(shù)是什么?答:變異操作。第4章習(xí)題什么是機(jī)器學(xué)習(xí)?人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)之間的關(guān)系是什么?答:機(jī)器學(xué)習(xí)是研究如何使機(jī)器模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取知識和技能,并不斷改善系統(tǒng)自身性能的學(xué)科。人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)之間的關(guān)系是人工智能包含機(jī)器學(xué)習(xí),而機(jī)器學(xué)習(xí)又包含深度學(xué)習(xí)。機(jī)器學(xué)習(xí)的任務(wù)有哪些?應(yīng)該分別采用哪類學(xué)習(xí)范式去解決?答:機(jī)器學(xué)習(xí)中的典型任務(wù)包括分類、回歸、聚類、排名、降維等。分類、回歸、排名采用監(jiān)督學(xué)習(xí)方法解決。聚類、降維采用無監(jiān)督學(xué)習(xí)方法解決。聚類與分類的區(qū)別是什么?有什么相似性?答:聚類與分類的相似性是:均把樣本分成若干組或若干簇;區(qū)別是:聚類是無監(jiān)督學(xué)習(xí),分類是有監(jiān)督學(xué)習(xí)。聚類是事先不知道多少類,也不知道組的名稱。分類是給定輸入,將樣本分成事先定義好名稱的類別。邏輯回歸與線性回歸有什么區(qū)別?答:區(qū)別:線性回歸用于預(yù)測連續(xù)值,其輸出的值域是實(shí)數(shù)集,其模型是線性的;邏輯回歸主要用于解決分類問題,其輸出的值域?yàn)閇0,1],其模型是非線性的。KNN算法和K-Means算法的區(qū)別是什么?各有什么局限性?答:區(qū)別:KNN用于解決分類或回歸問題,屬于監(jiān)督學(xué)習(xí);K-means用于解決聚類問題,屬于非監(jiān)督學(xué)習(xí)。共同的局限性為:需要確定k值。若k值不合適,兩個算法的效果不好。強(qiáng)化學(xué)習(xí)與監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)的區(qū)別是什么?答:(1)強(qiáng)化學(xué)習(xí)與監(jiān)督學(xué)習(xí)的不同之處在于:①監(jiān)督學(xué)習(xí)輸入的訓(xùn)練數(shù)據(jù)是包含樣本及其標(biāo)簽的強(qiáng)監(jiān)督信息,而強(qiáng)化學(xué)習(xí)從外部環(huán)境接收的反饋信息是一種弱監(jiān)督信息;②監(jiān)督學(xué)習(xí)是采用正確答案來訓(xùn)練模型,給予的指導(dǎo)是即時的;而強(qiáng)化學(xué)習(xí)是采用“試錯”的方式來訓(xùn)練模型,外部環(huán)境給予它的指導(dǎo)有時是延遲的。(2)強(qiáng)化學(xué)習(xí)與無監(jiān)督學(xué)習(xí)的不同之處在于:無監(jiān)督學(xué)習(xí)輸入的是沒有任何監(jiān)督信息的無標(biāo)注數(shù)據(jù),而強(qiáng)化學(xué)習(xí)從環(huán)境獲得的評價信息(不是正確答案)是一種弱監(jiān)督信息,盡管監(jiān)督信息很弱,但總比沒有要好。主動學(xué)習(xí)與強(qiáng)化學(xué)習(xí)的區(qū)別是什么?答:雖然強(qiáng)化學(xué)習(xí)和主動學(xué)習(xí)都可以減少模型所需的標(biāo)注數(shù)據(jù)量,但它們是非常不同的概念。主動學(xué)習(xí)側(cè)重于主動選擇最具信息量的樣本進(jìn)行標(biāo)注,以提高模型性能。強(qiáng)化學(xué)習(xí)通過與環(huán)境的交互學(xué)習(xí),通過觀察環(huán)境的反饋(獎勵或懲罰)來調(diào)整行為,以達(dá)到最大化長期獎勵的目標(biāo)。主動學(xué)習(xí)注重數(shù)據(jù)選擇和標(biāo)注,需要人類的參與;而強(qiáng)化學(xué)習(xí)注重決策和行為優(yōu)化,未必需要人的參與。主動學(xué)習(xí)與半監(jiān)督學(xué)習(xí)的區(qū)別是什么?答:主動學(xué)習(xí)需要人參與,半監(jiān)督學(xué)習(xí)不需要人參與。分別在什么場景需要采用不完全監(jiān)督學(xué)習(xí)、不確切監(jiān)督學(xué)習(xí)、不準(zhǔn)確監(jiān)督學(xué)習(xí)?答:不完全監(jiān)督學(xué)習(xí)適用于在訓(xùn)練數(shù)據(jù)中只有一小部分樣本被標(biāo)注,而大多數(shù)樣本是未標(biāo)注的情況。例如:在圖像分類任務(wù)中,可能只有少數(shù)圖像被手工標(biāo)注,而大量圖像沒有標(biāo)注。不完全監(jiān)督學(xué)習(xí)可用于有效地使用未標(biāo)注圖像提高分類性能。不確切監(jiān)督學(xué)習(xí)適用于只有粗粒度標(biāo)簽的情況。例如,在圖像處理中,可能只有圖像級別的標(biāo)簽,而沒有像素級別的準(zhǔn)確標(biāo)注。不準(zhǔn)確監(jiān)督學(xué)習(xí)適用于標(biāo)注數(shù)據(jù)標(biāo)簽可能存在噪聲或錯誤的情況。例如,圖像的標(biāo)簽是錯的。舉例說明遷移學(xué)習(xí)可以應(yīng)用于哪些任務(wù)?答:圖像分類、機(jī)器翻譯、生成不同風(fēng)格的繪畫等。針對表1,試編程實(shí)現(xiàn)KNN算法,令k=3,預(yù)測一個新樣本點(diǎn)(3,4)的類別。表4-1個樣本的坐標(biāo)與類別點(diǎn)的編號x坐標(biāo)y坐標(biāo)類別111C3253C1344C2435C2545C2647C1732C1821C3900C31064C1答:將新樣本點(diǎn)(3,4)記為T,分別計算T與10個已知樣本P的歐氏距離平方:|T-P1|2=(3-1)2+(4-1)2=13;|T-P2|2=(3-5)2+(4-3)2=5;|T-P3|2=(3-4)2+(4-4)2=1;|T-P4|2=(3-3)2+(4-5)2=1;|T-P5|2=(3-4)2+(4-5)2=2;|T-P6|2=(3-4)2+(4-7)2=10;|T-P7|2=(3-3)2+(4-2)2=4;|T-P8|2=(3-2)2+(4-1)2=10;|T-P3|2=(3-0)2+(4-0)2=25;|T-P4|2=(3-6)2+(4-4)2=9;找出其中距離T最小的3個樣本,分別是P3,P4,P5,其中類別為C2的最多。給T標(biāo)記為C2類別。第5章習(xí)題請簡述Sigmoid函數(shù)的優(yōu)缺點(diǎn)。答:sigmoid函數(shù)的優(yōu)點(diǎn):平滑、易于求導(dǎo),其導(dǎo)數(shù)可直接用函數(shù)的輸出計算,簡單高效。sigmoid函數(shù)很好地解釋了神經(jīng)元在受到刺激的情況下是否被激活和向后傳遞的情景。當(dāng)取值接近0時,幾乎沒有被激活;當(dāng)取值接近1時,幾乎完全被激活。sigmoid函數(shù)的缺點(diǎn):當(dāng)輸入的絕對值大于某個閾值時,會快速進(jìn)入飽和狀態(tài)(即函數(shù)值趨于1或-1,不再有顯著的變化,梯度趨于0),會出現(xiàn)梯度消失的情況,權(quán)重?zé)o法再更新,會導(dǎo)致算法收斂緩慢,甚至無法完成深層網(wǎng)絡(luò)的訓(xùn)練。因此在一些現(xiàn)代的神經(jīng)網(wǎng)絡(luò)中,sigmoid函數(shù)逐漸被ReLU激活函數(shù)取代。(2)sigmoid函數(shù)公式中有冪函數(shù),計算耗時長,在反向傳播誤差梯度時,求導(dǎo)運(yùn)算涉及除法。(3)sigmoid函數(shù)的輸出恒大于0,非零中心化,在多層神經(jīng)網(wǎng)絡(luò)中,可能會造成后面層神經(jīng)元的輸入發(fā)生偏置偏移,導(dǎo)致梯度下降變慢。請簡述BP學(xué)習(xí)算法的不足之處。答:(1)BP學(xué)習(xí)算法是有監(jiān)督學(xué)習(xí),需要大量帶標(biāo)簽的訓(xùn)練數(shù)據(jù)。(2)BP神經(jīng)網(wǎng)絡(luò)中的參數(shù)量大,收斂速度慢,需要較長的訓(xùn)練時間,學(xué)習(xí)效率低。(3)BP學(xué)習(xí)算法采用梯度下降法更新學(xué)習(xí)參數(shù),容易陷入局部極值,從而找不到全局最優(yōu)解。(4)尚無理論指導(dǎo)如何選擇網(wǎng)絡(luò)隱藏層的層數(shù)和神經(jīng)元的個數(shù),一般是根據(jù)經(jīng)驗(yàn)或通過反復(fù)實(shí)驗(yàn)確定。因此,網(wǎng)絡(luò)往往存在很大的冗余性,在一定程度上也增加了網(wǎng)絡(luò)學(xué)習(xí)的負(fù)擔(dān)。請簡述卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。答:一個卷積神經(jīng)網(wǎng)絡(luò)可以包含多個網(wǎng)絡(luò)層,每層網(wǎng)絡(luò)由多個獨(dú)立的神經(jīng)元組成。卷積神經(jīng)網(wǎng)絡(luò)中的網(wǎng)絡(luò)層主要分為3種類型:卷積層、池化層和全連接層。通常,每個卷積層與最后一個全連接層之后都會采用激活函數(shù)。卷積神經(jīng)網(wǎng)絡(luò)可以像搭積木一樣,通過疊加多個網(wǎng)絡(luò)層來組裝。按照神經(jīng)元之間的連接范圍進(jìn)行劃分,神經(jīng)網(wǎng)絡(luò)可以分為哪兩大類?答:全連接神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)按照網(wǎng)絡(luò)層之間的連接方式,神經(jīng)網(wǎng)絡(luò)可以分為哪兩大類?答:前饋神經(jīng)網(wǎng)絡(luò)和反饋神經(jīng)網(wǎng)絡(luò)。假設(shè)有一個3層的前饋全連接神經(jīng)網(wǎng)絡(luò),其輸入層有5個神經(jīng)元,第一個隱層有10個神經(jīng)元,第二個隱層有10個神經(jīng)元,輸出層有2個神經(jīng)元,請計算神經(jīng)網(wǎng)絡(luò)中的連接總數(shù)。答:170請寫出Sigmoid函數(shù)σx=1答:(σSigmoid函數(shù)與Softmax函數(shù)是否有關(guān)聯(lián)?若有,請說明兩者的關(guān)聯(lián)。答:Sigmoid是Softmax的特例。當(dāng)類別數(shù)為2時,Sigmoid就是Softmax。Sigmoid用于隱層,Softmax用于輸出層。若輸入數(shù)據(jù)的大小為240×240×3,對其采用大小為4×4、不重疊的池化操作,則池化操作的步長以及池化操作后特征圖的大小分別是多少?答:4,60*60*3請指出人工神經(jīng)網(wǎng)絡(luò)中的超參數(shù)。答:網(wǎng)絡(luò)層數(shù);每個隱藏層中濾波器的尺寸、步長、個數(shù);學(xué)習(xí)率;第6章習(xí)題說明CNN結(jié)構(gòu)中1×1卷積的作用,哪個網(wǎng)絡(luò)率先使用了1×1卷積?答:(1)1×1卷積的作用是放縮特征圖的通道數(shù),若是降維,可同時減少參數(shù)量和計算量。(2)Inception結(jié)構(gòu)試計算AlexNet的總參數(shù)量,給出詳細(xì)的計算過程。答:8層參數(shù)共計60965224個(1)第一個卷積層的參數(shù)量=11*11*3*96+96(偏置)=34944(2)第二個卷積層的96個特征圖分為兩組,各自在一個獨(dú)立的GPU上進(jìn)行運(yùn)算的參數(shù)量=(5×5×48×128+128)×2=307456(3)第三個卷積層的參數(shù)數(shù)量:3×3×256×384+384(偏置)=885120(4)第四個卷積層的參數(shù)數(shù)量:(3×3×192×192+192)×2=663936(5)第五個卷積層的參數(shù)數(shù)量:(3×3×192×128+128)×2=442624(6)第1個全連接層的參數(shù)量=(6×6×256)×4096+4096(偏置)=37752832(7)第2個全連接層的參數(shù)量=4096×4096+4096=16781312(8)第3個全連接層的參數(shù)量=4096×1000+1000=4097000請說明InceptionV1模塊中的分支MaxPool3×3+1(S)表示什么操作,為什么1×1卷積要放在MaxPool3×3+1(S)之后執(zhí)行?答:(1)InceptionV1模塊中的分支MaxPool3×3+1(S)表示:采用3×3的重疊最大池化,步長為1,padding=same(pad=1),保證輸出與輸入的特征圖尺寸相同。Inception模塊中所有的池化操作并非都為了下采樣,分支MaxPool3×3+1(S)只是為了能提取最大特征且無需學(xué)習(xí)卷積中的參數(shù)。(2)MaxPool3×3+1(S)沒有參數(shù),故1×1卷積放在其前與放在其后的參數(shù)量是一樣的。之所以放在其后,是要在不增加參數(shù)量的前提下,盡可能保留最顯著(最大值)特征,先做1×1卷積,會損失特征圖的深度信息(變薄了)。請說明BatchNormalization(BN)的作用。答:在使用梯度下降法求最優(yōu)解時,防止梯度爆炸或彌散,加快收斂速度;可以提高訓(xùn)練時模型對于不同超參(學(xué)習(xí)率、初始化)的魯棒性;可以使大部分激活函數(shù)能夠遠(yuǎn)離其飽和區(qū)域。請描述Inception(4b)模塊的結(jié)構(gòu)細(xì)節(jié)。答:Inception(4b)模塊分為四個分支,采用不同尺度的卷積核來進(jìn)行處理1)第1個分支Conv1×1+1(s)表示:160個1×1×512的卷積核,步長為1,padding=same(pad=0),采用ReLU激活函數(shù),輸出14×14×160。2)第2個分支Conv1×1+1(s)表示:112個1×1×512的卷積核(reductionlayers),作為3×3卷積核之前的降維,步長為1,padding=same(pad=0),ReLU計算,變成14×14×112;然后,Conv3×3+1(s)表示:224個3×3×112的卷積,步長為1,padding=same(pad=1),ReLU計算后,輸出14×14×224。3)第3個分支Conv1×1+1(s)表示:24個1×1×512的卷積核(reductionlayers),作為5×5卷積核之前的降維,步長為1,padding=same(pad=0),ReLU計算,變成14×14×24;然后,Conv5×5+1(s)表示:64個5×5×24的卷積,步長為1,padding=same(pad=2),ReLU計算后,輸出14×14×64。4)第4個分支MaxPool3×3+1(S)表示:采用3×3的重疊最大池化,步長為1,padding=same(pad=1),輸出14×14×512;然后,Conv1×1+1(s)表示:64個1×1×512的卷積(projectionlayer),步長為1,padding=same(pad=0),ReLU計算,輸出14×14×64。DepthContat表示將四個分支的特征圖層依次拼接起來,通道數(shù)為160+224+64+64=512,形成14×14×512的特征圖層。請說明ResNet和DenseNet中短路連接機(jī)制的不同之處。答:(1)兩個網(wǎng)絡(luò)中短路連接的密集程度不同。由于ResNet的一個殘差模塊一般只包含2~3個卷積層,所以,每層只跨越2~3層與其前面的某一層直接連接,形成短路(或捷徑)。而DenseNet的一個DenseBlock模塊一般包含6~64個卷積層,同一模塊中的所有層均互相連接。顯然,DenseNet網(wǎng)絡(luò)中的短路連接比ResNet中的更為密集,更好地實(shí)現(xiàn)了特征重用,增強(qiáng)了特征在各個層之間的傳播。(2)兩個網(wǎng)絡(luò)中短路連接的方式不同。在ResNet網(wǎng)絡(luò)的同一殘差模塊中,對于殘差映射特征圖與恒等映射特征圖,執(zhí)行對應(yīng)位置上的元素級相加(element-wiseaddition)操作。而在DenseNet網(wǎng)絡(luò)的同一DenseBlock模塊中,每層都會與其前面所有層在通道維度上作拼接(channel-wiseconcatenation)操作,并作為下一層的輸入。假設(shè)輸入圖像為W×W×3,要求輸出大小為W×W×256的特征圖,請給出兩種升維的方法,并分別計算兩種方法的參數(shù)量。答:第一種方法:直接用256個3×3×3的濾波器,padding=same參數(shù)量為:3×3×3(深度)×256=6,912第二種方法,分兩步完成:第1步:先用1個3×3×3濾波器做卷積操作,padding=same得到W×W×1。參數(shù)量=3×3×3=27.第2步:用256個1×1×1濾波器做卷積操作,得到W×W×256總參數(shù)量為:3×3×3+3×1×1×256=795,是6912的1/9!假設(shè)上一網(wǎng)絡(luò)層的輸出為100×100×128,要求得到100×100×256的特征圖,請給出兩種方法,并分別計算兩種方法的參數(shù)量和計算量。答:第一種方法:經(jīng)過具有256個通道的5×5卷積層之后(stride=1,pad=2),輸出數(shù)據(jù)為100×100×256,其中,參數(shù)量為128×5×5×256=819200。第二種方法:上一層輸出先經(jīng)過32個1x1×128濾波器,得到100×100×32特征圖;再經(jīng)過256個5×5×32(stride=1,pad=2)濾波器,那么輸出數(shù)據(jù)仍為100×100×256,但參數(shù)量已經(jīng)減少為1x1x128x32+5x5x32x256=204800。參數(shù)量大約減少了4倍。第7章習(xí)題1.請簡述數(shù)字圖像的定義,并說明常用的數(shù)字圖像類型。答:數(shù)字圖像是指用數(shù)字?jǐn)z像機(jī)、掃描儀等成像設(shè)備經(jīng)過采樣和數(shù)字化得到的一個二維數(shù)組或矩陣,該數(shù)組或矩陣的元素稱為像素(pixel),像素值均為整數(shù),稱為灰度值。常用的數(shù)字圖像有二值圖像、灰度圖像、彩色圖像、RGBD圖像等。2.請簡要描述圖像處理的任務(wù)。答:圖像處理的任務(wù)包括:圖像采集與獲取、圖像變換、圖像去噪、圖像增強(qiáng)、圖像復(fù)原、圖像重建、圖像編解碼、圖像壓縮、圖像邊緣檢測、圖像分割、圖像表示與描述、圖像特征提取與分析、圖像質(zhì)量評價、圖像目標(biāo)檢測、圖像分類、圖像識別、圖像理解等。3.請簡述HOG圖像特征提取的過程。答:HOG圖像特征提取主要分為5個環(huán)節(jié):彩色圖像的灰度化、灰度值的Gamma校正、梯度計算、細(xì)胞單元的梯度直方圖繪制、塊特征向量表示。第一步:利用加權(quán)平均或其他方式將彩色的RGB圖像轉(zhuǎn)化為灰度圖像;第二步:通過對像素值進(jìn)行歸一化、預(yù)補(bǔ)償和反歸一化完成圖像的Gamma校正;第三步:使用差分方式計算每個像素點(diǎn)的水平和垂直梯度,綜合得像素點(diǎn)的梯度;第四步:將圖像劃分為一個個細(xì)胞單元后,梯度按照角度不同分為K個組,據(jù)此細(xì)胞單元內(nèi)的像素點(diǎn)歸入不同的梯度組,并累計像素點(diǎn)的梯度幅值作為該組權(quán)重,最終統(tǒng)計得細(xì)胞單元得梯度直方圖,作為細(xì)胞單元的K維特征向量;第五步:將相鄰的m×m細(xì)胞單元組合為塊,隨之,K維特征向量組合為m×m×K維特征向量,并將各維除以特征長度完成歸一化。通過塊在圖上的范圍移動可以計算出所有的塊特征向量,組合即得此圖的HOG特征表示。4.請簡述傳統(tǒng)圖像目標(biāo)檢測的流程,并給出目標(biāo)檢測的評價指標(biāo)。答:傳統(tǒng)圖像目標(biāo)檢測的流程一般分為4個階段:預(yù)處理圖像、生成目標(biāo)候選區(qū)域、提取目標(biāo)候選區(qū)域的特征、訓(xùn)練目標(biāo)分類器。第一步:首先對圖像執(zhí)行降噪、增強(qiáng)等預(yù)處理操作,提高圖像信息的有效性;之后按需要將數(shù)據(jù)劃分為訓(xùn)練集、測試集、驗(yàn)證集;第二步:通過滑動窗口遍歷的方式獲取目標(biāo)候選區(qū)域;第三步:利用HOG、SIFT等特征表示方法描述各目標(biāo)候選區(qū)域;第四步:首先選擇適配的分類器和訓(xùn)練算法,然后將訓(xùn)練集圖像中各候選區(qū)域的特征向量和對應(yīng)標(biāo)簽匹配,并輸入分類器按優(yōu)化算法訓(xùn)練模型。新圖像在獲取候選區(qū)域后便可利用所得模型進(jìn)行目標(biāo)檢測。目標(biāo)檢測的評價指標(biāo)有交并比、精確度和召回率、AP、MAP等。5.圖像分割包含哪幾種?請簡述它們之間的區(qū)別和聯(lián)系。答:圖像分割包括:語義分割、實(shí)例分割和全景分割。語義分割是指對圖像進(jìn)行像素級分類,將同類像素點(diǎn)合并成一個區(qū)域,以實(shí)現(xiàn)對圖像的分割;實(shí)例分割比語義分割要求高,除了需要完成語義分割任務(wù)之外,還需要識別圖像中每個目標(biāo)實(shí)例對應(yīng)的像素區(qū)域,獲得每個目標(biāo)的輪廓;全景分割則是結(jié)合了語義分割和實(shí)例分割,不僅要對所有像素點(diǎn)進(jìn)行分類,還應(yīng)識別出圖像中存在的所有目標(biāo)實(shí)例。6.請簡述遷移學(xué)習(xí)的定義,并說明在圖像分類中是如何應(yīng)用遷移學(xué)習(xí)的。答:遷移學(xué)習(xí)是將在一個領(lǐng)域(稱為源領(lǐng)域)的知識遷移到另外一個領(lǐng)域(稱為目標(biāo)領(lǐng)域),使得在目標(biāo)領(lǐng)域能夠取得更好的學(xué)習(xí)效果。遷移學(xué)習(xí)是模仿人類“舉一反三”的能力。一般是基于模型進(jìn)行遷移,即在已用其他圖像數(shù)據(jù)訓(xùn)練好的分類模型上利用新的圖像數(shù)據(jù)進(jìn)行微調(diào),而不是從零開始訓(xùn)練深度學(xué)習(xí)圖像分類模型。7.請簡述圖像分類的評價指標(biāo)。答:圖像分類評價指標(biāo):Precision、Recall、Specificity、Accuracy、F-measure、AUC、AP、以及MAP等。8.請分別列舉幾個典型的圖像分類、圖像目標(biāo)檢測和圖像分割常用的深度學(xué)習(xí)模型。答:圖像分類常用的深度學(xué)習(xí)模型:AlexNet、VGGNet、GoogLeNet和ResNet等;圖像目標(biāo)檢測常用的深度學(xué)習(xí)模型:R-CNN、FastR-CNN、FasterR-CNN、YOLO、SSD等。圖像分割常用的深度學(xué)習(xí)模型:FCN、U-Net、

SegNet、DeepLab、MaskR-CNN等。第8章習(xí)題1.請簡述利用Scikit-learn庫進(jìn)行模型超參數(shù)選擇的過程。答:可先預(yù)設(shè)需要優(yōu)化的超參數(shù)候選數(shù)值集合,以及模型性能比較的指標(biāo),然后構(gòu)建model_selection模塊中的GridSearchCV對象進(jìn)行模型篩選,最后訪問best_params_屬性獲取最佳的超參數(shù)組合。2.對于二分類的機(jī)器學(xué)習(xí)任務(wù),請簡述利用ROC曲線選擇合適分類閾值的過程。答:ROC曲線顯示了不同分類閾值下模型的真正例率(TPR)和假正例率(FPR),可以通過觀察約登指數(shù)(Youdenindex)的大小來選擇合適的分類閾值,利用敏感度和特異度之和減去1:Youdenindex=TPR+(1-FPR)–1,約登指數(shù)范圍在0-1之間,越接近1表示分類效果很好。最佳閾值就是使得約登指數(shù)最大的那個點(diǎn)。3.請簡述自動求導(dǎo)機(jī)制。答:自動求導(dǎo)機(jī)制是一種在神經(jīng)網(wǎng)絡(luò)計算框架中實(shí)現(xiàn)梯度計算的技術(shù),它可以根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)構(gòu)建動態(tài)計算圖,然后再通過反向傳播進(jìn)行梯度計算,從而實(shí)現(xiàn)參數(shù)的更新。4.請簡述PyTorch與Scikit-learn之間的差異。答:PyTorch是一個深度學(xué)習(xí)框架,主要用于構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)。而Scikit-learn是一個通用的機(jī)器學(xué)習(xí)庫,提供了很多常用的機(jī)器學(xué)習(xí)算法和數(shù)據(jù)處理方法。兩者有時也可以結(jié)合使用,例如在使用PyTorch框架之前,可以用Scikit-learn對數(shù)據(jù)進(jìn)行預(yù)處理。5.請簡述PyTorch中Tensor和Function的關(guān)系。答:PyTorch中的Tensor是一種類似于Numpy的多維數(shù)組,可以用于存儲和操作數(shù)據(jù)。Function是一種用于定義Tensor之間的運(yùn)算和變換的對象,可以實(shí)現(xiàn)自動求導(dǎo)功能。兩者的關(guān)系通過一個屬性grad_fn來體現(xiàn),grad_fn表示了當(dāng)前Tensor是如何從其他Tensor計算得到的。這樣在我們需要計算梯度時,PyTorch可以通過反向追蹤grad_fn來構(gòu)建動態(tài)計算圖,并使用鏈?zhǔn)椒▌t來自動求導(dǎo)。6.請簡述PyTorch中如何利用動態(tài)計算圖實(shí)現(xiàn)自動求導(dǎo)。答:可分為以下四步:(1)在我們創(chuàng)建一個Tensor時,可以設(shè)置它的requires_grad屬性為True,表示我們需要對它進(jìn)行求導(dǎo)。(2)當(dāng)我們對Tensor進(jìn)行各種運(yùn)算和變換時,PyTorch會自動記錄這些操作,并構(gòu)建一個由Function對象組成的有向無環(huán)圖(DAG),表示Tensor之間的關(guān)系。(3)當(dāng)我們調(diào)用Tensor的backward()方法時,PyTorch會從當(dāng)前Tensor開始。沿著動態(tài)計算圖反向傳播,根據(jù)鏈?zhǔn)椒▌t計算每個Tensor的梯度,并將結(jié)果保存在它們的grad屬性中。(4)通過訪問Tensor的grad屬性即可獲取梯度值。7.請描述PyTorch中model.train()和model.eval()的作用。答:model.train()的作用是啟用BatchNormalization和Dropout,在訓(xùn)練時有助于防止過擬合,但在測試時會影響模型的輸出。model.eval()的作用是不啟用BatchNormalization和Dropout,這樣可以保證模型在測試時的輸出是確定的,不受隨機(jī)因素的影響。一般來說,在訓(xùn)練時我們需要調(diào)用model.train(),在測試或預(yù)測時我們需要調(diào)用model.eval()。8.請描述PyTorch中選擇深度學(xué)習(xí)模型的超參數(shù)的過程。答:可以分為以下幾步進(jìn)行:(1)定義一個超參數(shù)空間,即需要調(diào)整的超參數(shù)的范圍和分布,例如學(xué)習(xí)率、批量大小等。(2)定義一個目標(biāo)函數(shù),即需要優(yōu)化的指標(biāo),例如準(zhǔn)確率、損失函數(shù)等。(3)選擇一個搜索算法,即用于探索超參數(shù)空間的方法,例如網(wǎng)格搜索、隨即搜索、貝葉斯優(yōu)化等。(4)運(yùn)行多次實(shí)驗(yàn),每次實(shí)驗(yàn)根據(jù)搜索算法從超參數(shù)空間采樣一組超參數(shù),并使用PyTorch構(gòu)建和訓(xùn)練模型,記錄目標(biāo)函數(shù)的值。(5)分析實(shí)驗(yàn)結(jié)果,找出最優(yōu)的一組超參數(shù)。9.請簡述如何使用PyTorch構(gòu)建和加載自定義數(shù)據(jù)集。答:(1)定義一個繼承自torch.utils.data.Dataset的類,并實(shí)現(xiàn)三個方法:__init__,__len__和__getitem__。在__init__函數(shù)中,需要加載所有樣本和標(biāo)簽數(shù)據(jù);在__len__函數(shù)中需要返回樣本的數(shù)量;在__getitem__函數(shù)中,需要根據(jù)輸入的樣本索引返回對應(yīng)的樣本特征張量和對應(yīng)的標(biāo)簽。(2)創(chuàng)建一個torch.utils.data.DataLoader對象,傳入數(shù)據(jù)集對象和其他參數(shù),如batch_size,shuffle等。(3)迭代DataLoader對象來獲取批量的樣本和標(biāo)簽。10.請簡述Scikit-learn模型訓(xùn)練過程。答:Scikit-learn模型訓(xùn)練過程大致分為以下幾個步驟:(1)導(dǎo)入Scikit-learn模塊和所需的算法,如fromsklearnimportlinear_model。(2)準(zhǔn)備數(shù)據(jù)集,將特征和標(biāo)簽分開,如X=mnist.data,y=mnist.target。(3)劃分訓(xùn)練集和測試集,如fromsklearn.model_selectionimporttrain_test_split,X_train,X_test,y_train,y_test=train_test_split(X,y)。(4)創(chuàng)建模型,如model=linear_model.LinearRegression()。(5)訓(xùn)練模型,使用fit方法,如model.fit(X_train,y_train)。(6)評估模型,使用score或predict方法,如model.score(X_test,y_test),y_pred=model.predict(X_test)。第9章習(xí)題1.請簡述構(gòu)建機(jī)器學(xué)習(xí)模型的基本步驟。答:(1)數(shù)據(jù)預(yù)處理:對原始數(shù)據(jù)進(jìn)行清洗、數(shù)學(xué)表示、數(shù)學(xué)變換、數(shù)據(jù)整合和特征選擇等操作,使其符合模型輸入的要求。(2)數(shù)據(jù)集構(gòu)建:根據(jù)根據(jù)數(shù)據(jù)分布規(guī)律和任務(wù)特點(diǎn)設(shè)計合理的樣本選擇和劃分策略,以特定比例將樣本分為訓(xùn)練集、驗(yàn)證集或測試集。(3)模型構(gòu)建:根據(jù)目標(biāo)和數(shù)據(jù)選擇合適的機(jī)器學(xué)習(xí)算法(如決策樹、支持向量機(jī)等),并設(shè)置相關(guān)的超參數(shù)(如學(xué)習(xí)率、正則化系數(shù)等)。(4)模型訓(xùn)練:使用訓(xùn)練集數(shù)據(jù)對模型進(jìn)行擬合,優(yōu)化模型參數(shù),提高模型性能。(5)模型性能評估及測試:根據(jù)機(jī)器學(xué)習(xí)任務(wù)類型和目標(biāo)選擇合適的單個或多個性能評價指標(biāo)(AUC、敏感度、特異度、精度及F1等),并且通過比較模型在訓(xùn)練集和驗(yàn)證或測試集上性能的差別評估是否存在過擬合問題。根據(jù)模型性能評估結(jié)果可對預(yù)測誤差較大的樣本進(jìn)行分析,尋找模型改進(jìn)策略。(6)模型超參數(shù)優(yōu)化:當(dāng)模型存在多個超參數(shù)時,可以基于搭建的模型訓(xùn)練和評估流程,通過枚舉或搜索等方式比較不同超參數(shù)組合下模型訓(xùn)練和評估的性能指標(biāo)差異,尋找最佳的超參數(shù)組合。2.請簡述paddle.nn.Sequential類和paddle.nn.Layer類的作用與區(qū)別。答:paddle.nn.Sequential類是一個順序容器,它可以將多個子Layer按照構(gòu)造函數(shù)參數(shù)的順序添加到容器中,并按照順序依次執(zhí)行。paddle.nn.Layer類是所有神經(jīng)網(wǎng)絡(luò)層的基類,它定義了一些通用的屬性和方法,例如name_scope、parameters、sublayers等,用戶可以通過繼承Layer類來自定義自己的神經(jīng)網(wǎng)絡(luò)層。3.請簡述百度飛槳框架中Model.fit方法的作用及其對應(yīng)的運(yùn)算過程。答:Model.fit方法是百度飛槳框架中的一個高層API,用于完成模型的訓(xùn)練和保存。它的運(yùn)算過程大致如下:(1)將模型封裝為paddle.Model對象,并指定優(yōu)化器、損失函數(shù)和評估指標(biāo)。(2)調(diào)用Model.fit方法,傳入訓(xùn)練數(shù)據(jù)、訓(xùn)練輪數(shù)、批次大小、保存路徑等參數(shù)。(3)Model.fit方法在每個批次上執(zhí)行前向傳播、反向傳播和參數(shù)更新,并在每個輪數(shù)結(jié)束時計算評估指標(biāo)。(4)Model.fit方法在指定的保存路徑下保存模型的參數(shù)和優(yōu)化器狀態(tài),并輸出訓(xùn)練日志。4.請采用非線性擬合的LSTM模型(paddle.nn.LSTM)完成波士頓房價預(yù)測任務(wù)。答:importpaddle

paddle.device.set_device("gpu")

#設(shè)置默認(rèn)的全局dtype為float64

paddle.set_default_dtype("float64")

#下載數(shù)據(jù)

train_dataset=paddle.text.datasets.UCIHousing(mode='train')

test_dataset=paddle.text.datasets.UCIHousing(mode='test')

#定義LSTM網(wǎng)絡(luò)結(jié)構(gòu)

classLSTM(paddle.nn.Layer):

def__init__(self):

super(LSTM,self).__init__()

self.lstm=paddle.nn.LSTM(input_size=13,hidden_size=32,num_layers=1)

self.linear=paddle.nn.Linear(in_features=32,out_features=1)

defforward(self,x):

x=paddle.unsqueeze(x,axis=1)#在中間維度上增加一個維度,變成三維張量

x,_=self.lstm(x)#x.shape:(batch_size,seq_len,hidden_size)

x=x[:,-1,:]#取最后一個時刻的輸出作為全連接層的輸入,x.shape:(batch_size,hidden_size)

x=self.linear(x)#x.shape:(batch_size,output_size)

returnx

#模型訓(xùn)練配置

model=paddle.Model(LSTM())

model.prepare(optimizer=paddle.optimizer.Adam(learning_rate=0.001,parameters=model.parameters()),loss=paddle.nn.MSELoss())

#訓(xùn)練并驗(yàn)證模型

model.fit(train_data=train_dataset,eval_data=test_dataset,epochs=10,batch_size=8,verbose=1)5.請采用LeNet模型完成手寫體數(shù)字識別任務(wù),實(shí)現(xiàn)完整的模型訓(xùn)練和預(yù)測過程。答:frompaddle.metricimportAccuracy

frompaddle.vision.transformsimportCompose,Normalize

importnumpyasnp

importpaddle

importmatplotlib.pyplotasplt

paddle.device.set_device("gpu")

transform=Compose([Normalize(mean=[127.5],std=[127.5],data_format='CHW')])

#使用transform對數(shù)據(jù)集做歸一化

train_dataset=paddle.vision.datasets.MNIST(mode='train',transform=transform)

test_dataset=paddle.vision.datasets.MNIST(mode='test',transform=transform)

#定義模型,使用paddle里自帶的LeNet函數(shù)

LeNet=paddle.vision.models.LeNet(num_classes=10)

#用Model封裝模型

model=paddle.Model(LeNet)

optimizer=paddle.optimizer.Adam(learning_rate=0.001,parameters=model.parameters())

#配置模型

model.prepare(optimizer,paddle.nn.CrossEntropyLoss(),Accuracy())

#模型訓(xùn)練

#model.fit(train_dataset,test_dataset,epochs=2,batch_size=64,save_dir='multilayer_perceptron',verbose=1)

model.fit(train_dataset,test_dataset,epochs=2,batch_size=64,verbose=1)

#獲取測試集的第一個圖片

test_data0,test_label_0=test_dataset[0][0],test_dataset[0][1]

test_data0=test_data0.reshape([28,28])

plt.figure(figsize=(2,2))

#展示測試集中的第一個圖片

print(plt.imshow(test_data0,cmap=plt.cm.binary))

plt.show()

print('test_data0的標(biāo)簽為:'+str(test_label_0))

#模型預(yù)測

result=model.predict(test_dataset,batch_size=1)

print('test_data0預(yù)測的數(shù)值為:%d'%np.argsort(result[0][0])[0][-1])6.請采用飛槳框架構(gòu)建多層卷積神經(jīng)網(wǎng)絡(luò),完成鳶尾花分類任務(wù)。答:importnumpyasnp

importpaddle.nn.functionalasF

importpaddle

fromsklearnimportmodel_selection

paddle.device.set_device("gpu")

#設(shè)置默認(rèn)的全局dtype為float64

paddle.set_default_dtype("float64")

#類別標(biāo)簽轉(zhuǎn)化

defIris_type(s):

it={b'Iris-setosa':0,b'Iris-versicolor':1,b'Iris-virginica':2}

returnit[s]

#數(shù)據(jù)準(zhǔn)備

#加載數(shù)據(jù),本地若沒有鳶尾花數(shù)據(jù)集需下載到本地

data=np.loadtxt('./datasets/Iris.data',#數(shù)據(jù)文件路徑

dtype=float,#數(shù)據(jù)類型

delimiter=',',#數(shù)據(jù)分割符

converters={4:Iris_type})#將第五列使用函數(shù)Iris_type進(jìn)行轉(zhuǎn)換

#數(shù)據(jù)分割

x,y=np.split(data,(4,),axis=1)#數(shù)據(jù)分組第五列開始往后為y代表縱向分割按列分割

x_train,x_test,y_train,y_test=model_selection.train_test_split(x,y,random_state=1,test_size=0.2)

x_train=paddle.to_tensor(x_train)

x_test=paddle.to_tensor(x_test)

y_train=paddle.to_tensor(y_train)

y_test=paddle.to_tensor(y_test)

classMyDataset(paddle.io.Dataset):

def__init__(self,feature,label):

#初始化數(shù)據(jù)集

self.data=feature

self.label=label

def__getitem__(self,index):

#根據(jù)索引返回樣本和標(biāo)簽

returnself.data[index],self.label[index]

def__len__(self):

#返回數(shù)據(jù)集大小

returnlen(self.data)

train_dataset=MyDataset(feature=x_train,label=y_train)

test_dataset=MyDataset(feature=x_test,label=y_test)

#構(gòu)建多層卷積神經(jīng)網(wǎng)絡(luò)

classCNN(paddle.nn.Layer):

def__init__(self):

super(CNN,self).__init__()

#創(chuàng)建卷積和池化層塊,每個卷積層后面接著2x2的池化層

#卷積層L1

self.conv1=paddle.nn.Conv1D(in_channels=1,

out_channels=16,

kernel_size=2)

#池化層L2

self.pool1=paddle.nn.MaxPool1D(kernel_size=2)

#卷積層L3

self.conv2=paddle.nn.Conv1D(in_channels=16,

out_channels=32,

kernel_size=2)

#池化層L4

self.pool2=paddle.nn.MaxPool1D(kernel_size=4)

#線性層L5

self.fc=paddle.nn.Linear(64,3)

#正向傳播過程

defforward(self,x):

x=paddle.unsqueeze(x,axis=1)#在最后一個維度上增加一個維度,變成三維張量

x=self.conv1(x)

x=F.relu(x)

x=self.pool1(x)

x=F.relu(x)

x=self.conv2(x)

x=self.pool2(x)

x=paddle.flatten(x,start_axis=1,stop_axis=-1)

out=self.fc(x)

returnout

model=paddle.Model(CNN())

model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),

paddle.nn.CrossEntropyLoss(),

paddle.metric.Accuracy())

model.fit(train_dataset,

epochs=5,

batch_size=10,

verbose=1)

model.evaluate(x_test,y_test,verbose=1)7.請在9.3節(jié)手寫體數(shù)字識別的模型訓(xùn)練和測試過程中,增加其他性能指標(biāo)的計算和比較(如AUC、敏感度、特異度等)。答:frompaddle.metricimportAccuracy

frompaddle.vision.transformsimportCompose,Normalize

fromsklearn.metricsimportroc_curve,auc,confusion_matrix

fromsklearn.preprocessingimportOneHotEncoder

importnumpyasnp

importpaddle.nn.functionalasF

importpaddle.nnasnn

importpaddleaspaddle

importmatplotlib.pyplotasplt

paddle.device.set_device("gpu")

transform=Compose([Normalize(mean=[127.5],std=[127.5],data_format='CHW')])

#使用transform對數(shù)據(jù)集做歸一化

train_dataset=paddle.vision.datasets.MNIST(mode='train',transform=transform)

test_dataset=paddle.vision.datasets.MNIST(mode='test',transform=transform)

test_loader=paddle.io.DataLoader(test_dataset,batch_size=100)

classmnist(paddle.nn.Layer):

def__init__(self):

super(mnist,self).__init__()

self.fc1=nn.Linear(in_features=28*28,out_features=100)

self.fc2=nn.Linear(in_features=100,out_features=100)

self.fc3=nn.Linear(in_features=100,out_features=10)

defforward(self,input_):

x=paddle.reshape(input_,[input_.shape[0],-1])

x=self.fc1(x)

x=F.relu(x)

x=self.fc2(x)

x=F.relu(x)

x=self.fc3(x)

y=F.softmax(x)

returny

#用Model封裝模型

model=paddle.Model(mnist())

optimizer=paddle.optimizer.Adam(learning_rate=0.001,parameters=model.parameters())

#配置模型

model.prepare(optimizer,paddle.nn.CrossEntropyLoss(),Accuracy())

#模型訓(xùn)練

model.fit(train_dataset,test_dataset,epochs=2,batch_size=64,verbose=1)

y_true=[]#真實(shí)標(biāo)簽列表

y_score=[]#預(yù)測得分列表

fpr=[]

tpr=[]

roc_auc=[]#auc值列表

fordataintest_loader:

x,y=data#x是輸入,y是真實(shí)標(biāo)簽

out=model.predict(x)#out是輸出,包含預(yù)測得分

y_true.extend(y.numpy().tolist())#將真實(shí)標(biāo)簽添加到列表中

y_score.extend(out)#將預(yù)測得分添加到列表中

#創(chuàng)建一個one-hot編碼器實(shí)例

encoder=OneHotEncoder()

#對真實(shí)標(biāo)簽進(jìn)行one-hot編碼

y=encoder.fit_transform(y_true).toarray()

y_true=y.reshape(-1,10)

y_score=np.array(y_score)

y_score=y_score.reshape(-1,10)

#單獨(dú)計算每一類對應(yīng)的AUC值

foriinrange(10):

FPR,TPR,_=roc_curve(y_true[:,i],y_score[:,i])

fpr.append(FPR)

tpr.append(TPR)

Roc_auc=auc(fpr[i],tpr[i])

roc_auc.append(Roc_auc)

#plotROCcurvesforeachclass

colors=['blue','red','green','black','gray','gold','yellow','orange','pink','teal']

foriinrange(10):

plt.plot(fpr[i],tpr[i],color=colors[i],

label='ROCcurveofclass{0}(area={1:0.2f})'

''.format(i+1,roc_auc[i]))

print('AUC值:{}'.format(roc_auc))

#計算分類閾值為0.5時模型的敏感度特異度

y_predict=[]

foriinrange(10):

row=[]

forjinrange(len(y_score)):

ify_score[j,i]>0.5:

row.append(1)

else:

row.append(0)

y_predict.append(row)

#使用混淆矩陣計算敏感度、特異度

y_predict=np.array(y_predict)

y_predict=y_predict.reshape(-1,10)

foriinrange(10):

tn,fp,fn,tp=confusion_matrix(y_true[:,i],y_predict[:,i]).ravel()

TPR=tp/(tp+fn)

FPR=fp/(tn+fp)

print('數(shù)字{}對應(yīng)的敏感度特異度分別為:{}{}'.format(i,TPR,1-FPR))

#獲取測試集的第一個圖片

test_data0,test_label_0=test_dataset[0][0],test_dataset[0][1]

test_data0=test_data0.reshape([28,28])

plt.figure(figsize=(2,2))

#展示測試集中的第一個圖片

print(plt.imshow(test_data0,cmap=plt.cm.binary))

plt.show()

print('test_data0的標(biāo)簽為:'+str(test_label_0))

#模型預(yù)測

result=model.predict(test_dataset,batch_size=1)

print('test_data0預(yù)測的數(shù)值為:%d'%np.argsort(result[0][0])[0][-1])8.請在9.3節(jié)手寫體數(shù)字識別程序中增加模型超參數(shù)選擇的過程,尋找最優(yōu)的模型學(xué)習(xí)率和全連接層層數(shù)。答:frompaddle.metricimportAccuracy

frompaddle.vision.transformsimportCompose,Normalize

importnumpyasnp

importpaddle.nn.functionalasF

importpaddle.nnasnn

importpaddleaspaddle

importmatplotlib.pyplotasplt

paddle.device.set_device("gpu")

transform=Compose([Normalize(mean=[127.5],std=[127.5],data_format='CHW')])

#使用transform對數(shù)據(jù)集做歸一化

train_dataset=paddle.vision.datasets.MNIST(mode='train',transform=transform)

test_dataset=paddle.vision.datasets.MNIST(mode='test',transform=transform)

test_loader=paddle.io.DataLoader(test_dataset,batch_size=100)

#先列出幾種模型超參數(shù)對應(yīng)的集合,為方便只列出幾種

learningrates=[0.001,0.005,0.01]

FC1=[200,100]

FC2=[100,50]

classmnist(paddle.nn.Layer):

def__init__(self):

super(mnist,self).__init__()

self.fc1=nn.Linear(in_features=28*28,out_features=m)

self.fc2=nn.Linear(in_features=m,out_features=n)

self.fc3=nn.Linear(in_features=n,out_features=10)

defforward(self,input_):

x=paddle.reshape(input_,[input_.shape[0],-1])

x=self.fc1(x)

x=F.relu(x)

x=self.fc2(x)

x=F.relu(x)

x=self.fc3(x)

y=F.softmax(x)

returny

#從所列超參數(shù)集合中選取參數(shù),觀察每次組合對應(yīng)在測試數(shù)據(jù)集上的準(zhǔn)確率以此選取最優(yōu)超參數(shù)

foriinlearningrates:

forminFC1:

forninFC2:

#用Model封裝模型

model=paddle.Model(mnist())

optimizer=paddle.optimizer.Adam(learning_rate=i,parameters=model.parameters())

#配置模型

model.prepare(optimizer,paddle.nn.CrossEntropyLoss(),Accuracy())

#返回模型預(yù)測值對應(yīng)的標(biāo)簽

predict=paddle.to_tensor(model.predict(test_dataset))

predict=paddle.reshape(predict,(-1,10))

label=paddle.argmax(predict,axis=1)

#print(label)

labels=paddle.to_tensor(test_dataset.labels)

#模型訓(xùn)練

model.fit(train_dataset,epochs=2,batch_size=64,verbose=1)

acc=paddle.fluid.layers.accuracy(predict,labels)

print('學(xué)習(xí)率為{},全連接層第一層數(shù)為{},第二層為{}時,模型在測試集上的準(zhǔn)確率為:{}'.format(i,m,n,acc))

#獲取測試集的第一個圖片

tes

溫馨提示

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

最新文檔

評論

0/150

提交評論