人工智能技術(shù)及應(yīng)用 課件 張文安ch1-緒論;ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第1頁
人工智能技術(shù)及應(yīng)用 課件 張文安ch1-緒論;ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第2頁
人工智能技術(shù)及應(yīng)用 課件 張文安ch1-緒論;ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第3頁
人工智能技術(shù)及應(yīng)用 課件 張文安ch1-緒論;ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第4頁
人工智能技術(shù)及應(yīng)用 課件 張文安ch1-緒論;ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1緒論P(yáng)REFACEChapter01本章目錄人工智能01機(jī)器學(xué)習(xí)02深度學(xué)習(xí)03常用語言和深度學(xué)習(xí)框架041.1人工智能1.1.1什么是人工智能百度百科對(duì)人工智能的描述是:它是研究、開發(fā)用于模擬、延伸和擴(kuò)展人的智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學(xué)。人工智能是新一輪科技革命和產(chǎn)業(yè)變革的重要驅(qū)動(dòng)力量。人工智能是智能學(xué)科重要的組成部分,它企圖了解智能的實(shí)質(zhì),并生產(chǎn)出一種新的能以人類智能相似的方式做出反應(yīng)的智能機(jī)器。該領(lǐng)域的研究包括機(jī)器人、語言識(shí)別、圖像識(shí)別、自然語言處理和專家系統(tǒng)等。人工智能從誕生以來,理論和技術(shù)日益成熟,應(yīng)用領(lǐng)域也不斷擴(kuò)大??梢栽O(shè)想,未來人工智能帶來的科技產(chǎn)品,將會(huì)是人類智慧的“容器”。人工智能是對(duì)人的意識(shí)、思維的信息過程的模擬。人工智能不是人的智能,但能像人那樣思考、也可能超過人的智能。維基百科對(duì)人工智能的描述是:它是機(jī)器或軟件的智能,而不是人類或動(dòng)物的智能。它屬于計(jì)算機(jī)科學(xué)中開發(fā)和研究智能機(jī)器的研究領(lǐng)域?!癆I”也可以指機(jī)器本身。人工智能技術(shù)被廣泛應(yīng)用于工業(yè)、政府和科學(xué)領(lǐng)域。一些備受矚目的應(yīng)用程序包括:高級(jí)網(wǎng)絡(luò)搜索引擎(如Google)、推薦系統(tǒng)(YouTube、亞馬遜和Netflix使用)、理解人類語音(如Siri和Alexa)、自動(dòng)駕駛汽車(如Waymo)、生成或創(chuàng)意工具(ChatGPT和AI藝術(shù)),以及在策略游戲(如國際象棋和圍棋)中進(jìn)行最高級(jí)別的競爭。1.1人工智能1.1.1什么是人工智能大英百科全書對(duì)人工智能的描述是:它是指數(shù)字計(jì)算機(jī)或計(jì)算機(jī)控制的機(jī)器人執(zhí)行通常與智能生物相關(guān)的任務(wù)的能力。該術(shù)語經(jīng)常用于開發(fā)具有人類智力過程特征的系統(tǒng)的項(xiàng)目,例如推理、發(fā)現(xiàn)意義、概括或從過去的經(jīng)驗(yàn)中學(xué)習(xí)的能力。自20世紀(jì)40年代數(shù)字計(jì)算機(jī)發(fā)展以來,已經(jīng)證明計(jì)算機(jī)可以被編程來執(zhí)行非常復(fù)雜的任務(wù),例如發(fā)現(xiàn)數(shù)學(xué)定理的證明或下棋。盡管計(jì)算機(jī)處理速度和內(nèi)存容量不斷進(jìn)步,但目前還沒有任何程序能夠在更廣泛的領(lǐng)域或需要大量日常知識(shí)的任務(wù)中與人類的靈活性相匹配。另一方面,一些程序在執(zhí)行某些特定任務(wù)時(shí)已經(jīng)達(dá)到了人類專家和專業(yè)人員的性能水平,因此在醫(yī)學(xué)診斷、計(jì)算機(jī)搜索引擎、語音或手寫識(shí)別以及聊天機(jī)器人等各種應(yīng)用中都可以找到這種有限意義上的人工智能。1.1人工智能1.1.2人工智能的發(fā)展歷史追溯歷史,人類對(duì)人工智能的研究始于古代的哲學(xué)家和數(shù)學(xué)家對(duì)機(jī)械或“形式”推理的研究,其中對(duì)邏輯理論的研究工作直接啟發(fā)了艾倫·圖靈(AlanTuring)的計(jì)算理論。該理論認(rèn)為:機(jī)器通過打亂“0”和“1”這樣簡單的符號(hào),可以模擬數(shù)學(xué)推導(dǎo)和形式推理。隨著計(jì)算理論、控制論和信息論的提出,研究人員開始考慮建立“電子大腦”的可能性。第一篇后來被認(rèn)為是“人工智能”的論文是1943年麥卡魯奇(McCullouch)和皮茨(Pitts)所設(shè)計(jì)的圖靈完整(Turing-complete)的“人工神經(jīng)元”。人工智能發(fā)展的現(xiàn)代歷程可以分為三個(gè)階段,每一個(gè)階段都帶來了重要的理論與技術(shù)突破。第一階段(1940-1980年代):符號(hào)主義第二階段(1990-2000年代):連接主義第三階段(21世紀(jì)初-至今):深度學(xué)習(xí)1.1人工智能1.1.2人工智能的發(fā)展歷史第一階段(1940-1980年代):符號(hào)主義主要事件如下1936年艾倫·圖靈提出了圖靈機(jī)的概念:它是一種理論構(gòu)想,幫助我們理解和研究計(jì)算的本質(zhì)。它也提供了思考和解決各種計(jì)算和智能問題的基礎(chǔ),對(duì)計(jì)算機(jī)和人工智能的發(fā)展產(chǎn)生了深遠(yuǎn)影響。1950年艾倫·圖靈提出了“圖靈測(cè)試”的概念:該測(cè)試可以評(píng)估一臺(tái)計(jì)算機(jī)是否能夠表現(xiàn)出與人類智能相媲美的行為。該測(cè)試的目的是探討計(jì)算機(jī)是否能夠模擬人類的思維過程和行為。圖靈測(cè)試因此成為衡量人工智能研究的重要標(biāo)準(zhǔn)之一。1956年8月,在美國漢諾斯小鎮(zhèn)寧靜的達(dá)特茅斯學(xué)院中,約翰·麥卡錫(JohnMcCarthy)、馬文·閔斯基(MarvinMinsky)、克勞德·香農(nóng)(ClaudeShannon)、艾倫·紐厄爾(AllenNewell)、赫伯特·西蒙(HerbertSimon)等科學(xué)家正聚在一起,討論著一個(gè)完全不食人間煙火的主題:用機(jī)器來模仿人類學(xué)習(xí)以及其他方面的智能。會(huì)議足足開了兩個(gè)月的時(shí)間,雖然大家沒有達(dá)成普遍的共識(shí),但是卻為會(huì)議討論的內(nèi)容起了一個(gè)名字:人工智能。因此,1956年也就成為了人工智能元年。1.1人工智能1.1.2人工智能的發(fā)展歷史第一階段(1940-1980年代):符號(hào)主義1958年弗蘭克·羅森布拉特(FrankRosenblatt)和羅伯特·鮑姆(RobertBaum)提出了“感知器”模型,這是一個(gè)簡單的神經(jīng)網(wǎng)絡(luò)模型。這個(gè)模型具有輸入和輸出層,并通過調(diào)整權(quán)重來學(xué)習(xí)并對(duì)輸入數(shù)據(jù)進(jìn)行分類,為連接主義奠定了基礎(chǔ)。1958年約翰·麥卡錫創(chuàng)造了人工智能程序設(shè)計(jì)語言LISP,是第一個(gè)專門為人工智能開發(fā)設(shè)計(jì)的語言,其靈活性和表達(dá)能力使其在后續(xù)研究中廣泛使用。1966年約瑟夫·維森鮑姆(JosephWeizenbaum)開發(fā)了ELIZA聊天機(jī)器人,是早期人工智能和自然語言處理領(lǐng)域的里程碑產(chǎn)品。它基于模式匹配和簡單的轉(zhuǎn)換規(guī)則,模擬了一個(gè)心理咨詢師的對(duì)話過程,可以與用戶進(jìn)行基于文本的交互。雖然ELIZA并沒有真正的理解或意識(shí),但它能夠以一種似乎具有智能的方式與用戶進(jìn)行會(huì)話。盡管ELIZA的原理相對(duì)簡單,但它展示了如何利用專家知識(shí)和推理規(guī)則來模擬人類對(duì)話的能力,為后來的聊天機(jī)器人和自然語言處理技術(shù)的發(fā)展奠定了基礎(chǔ),并在人工智能研究中具有重要的歷史意義。1.1人工智能1.1.2人工智能的發(fā)展歷史第一階段(1940-1980年代):符號(hào)主義1976年研發(fā)的醫(yī)療診斷系統(tǒng)MYCIN,專門用于對(duì)細(xì)菌感染進(jìn)行診斷和治療建議。它是第一個(gè)在臨床醫(yī)學(xué)中大規(guī)模應(yīng)用的專家系統(tǒng),向世人證明了專家系統(tǒng)在復(fù)雜領(lǐng)域中的潛力和價(jià)值。1980年數(shù)字設(shè)備公司(DigitalEquipmentCorporation)開發(fā)的專家系統(tǒng)XCON,用于配置和定制計(jì)算機(jī)系統(tǒng)。它在企業(yè)級(jí)應(yīng)用中取得了顯著的成功,并推動(dòng)了專家系統(tǒng)的商業(yè)應(yīng)用。1982年出現(xiàn)的一款推理引擎R1,具有規(guī)則解釋、規(guī)則執(zhí)行和規(guī)則維護(hù)等功能。R1的設(shè)計(jì)和實(shí)現(xiàn),為后來的專家系統(tǒng)開發(fā)工具提供了范例和基礎(chǔ)。1983年研發(fā)的PROSPECTOR專家系統(tǒng),專門用于礦產(chǎn)勘探和資源評(píng)估的專家系統(tǒng)。它使用地質(zhì)數(shù)據(jù)和領(lǐng)域?qū)<抑R(shí),能夠預(yù)測(cè)礦藏的位置和價(jià)值。1.1人工智能1.1.2人工智能的發(fā)展歷史第二階段(1990-2000年代):連接主義連接主義階段的主要特征:神經(jīng)網(wǎng)絡(luò):是一種基于生物神經(jīng)元相互連接的學(xué)習(xí)模型,它通過訓(xùn)練和調(diào)整神經(jīng)元之間的連接權(quán)重來模擬信息處理過程。分布式并行處理:通過多個(gè)神經(jīng)元或神經(jīng)網(wǎng)絡(luò)同時(shí)工作來加速機(jī)器學(xué)習(xí)和決策過程。這種分布式并行處理方式有助于處理大量數(shù)據(jù)和復(fù)雜的問題。學(xué)習(xí)和自適應(yīng):神經(jīng)網(wǎng)絡(luò)通過反向傳播等算法進(jìn)行訓(xùn)練,自動(dòng)調(diào)整連接權(quán)重以優(yōu)化模型的性能。這種學(xué)習(xí)機(jī)制使得連接主義AI能夠從大量數(shù)據(jù)中自動(dòng)提取特征和規(guī)律,從而通過訓(xùn)練和學(xué)習(xí)來提高系統(tǒng)的性能和適應(yīng)性。非線性模型:與傳統(tǒng)的符號(hào)推理方法相比,連接主義更傾向于使用非線性模型。神經(jīng)網(wǎng)絡(luò)可以通過堆疊多層神經(jīng)元來實(shí)現(xiàn)復(fù)雜的非線性映射,從而提高對(duì)于真實(shí)世界問題的建模能力。1.1人工智能1.1.2人工智能的發(fā)展歷史第二階段(1990-2000年代):連接主義主要代表性的事件有:1986年大衛(wèi)·鮑斯等人提出了“反向傳播”(Backpropagation)算法,它是連接主義中實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)訓(xùn)練和學(xué)習(xí)的核心算法。這個(gè)算法能夠有效地計(jì)算誤差和調(diào)整神經(jīng)網(wǎng)絡(luò)中的連接權(quán)重,使得神經(jīng)網(wǎng)絡(luò)能夠逐漸優(yōu)化其性能。1989年AndrewNg等人在卡內(nèi)基梅隆大學(xué)開展了“ALVINN”(AutonomousLandVehicleinaNeuralNetwork)項(xiàng)目。該項(xiàng)目使用神經(jīng)網(wǎng)絡(luò)來訓(xùn)練自動(dòng)駕駛汽車,并成功地實(shí)現(xiàn)了道路的識(shí)別和轉(zhuǎn)向控制,標(biāo)志著連接主義在實(shí)際應(yīng)用中的突破。1.1人工智能1.1.2人工智能的發(fā)展歷史第三階段(21世紀(jì)初-至今):深度學(xué)習(xí)這一階段主要是以深度學(xué)習(xí)方法為基礎(chǔ),試圖通過利用大規(guī)模數(shù)據(jù)和強(qiáng)大的計(jì)算能力,從而實(shí)現(xiàn)更為先進(jìn)的人工智能。這一階段的人工智能特點(diǎn)和特征主要包括以下幾個(gè)方面:深度學(xué)習(xí):使用多層次的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行特征提取和表示學(xué)習(xí)。通過大規(guī)模數(shù)據(jù)的訓(xùn)練,深度學(xué)習(xí)模型能夠自動(dòng)發(fā)現(xiàn)數(shù)據(jù)中的模式和規(guī)律,并實(shí)現(xiàn)更復(fù)雜的任務(wù)和功能。大規(guī)模數(shù)據(jù):深度學(xué)習(xí)方法的成功離不開大規(guī)模數(shù)據(jù)的支持。通過海量的數(shù)據(jù)訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),可以提高模型的性能和泛化能力。大規(guī)模數(shù)據(jù)的可用性和存儲(chǔ)技術(shù)的進(jìn)步,為深度學(xué)習(xí)的發(fā)展提供了重要的基礎(chǔ)。強(qiáng)大的計(jì)算能力:深度學(xué)習(xí)方法需要大量的計(jì)算資源來進(jìn)行訓(xùn)練和推理。隨著計(jì)算機(jī)硬件的發(fā)展和云計(jì)算的普及,人們能夠利用分布式計(jì)算和高性能計(jì)算平臺(tái)來加速深度學(xué)習(xí)的訓(xùn)練過程,從而實(shí)現(xiàn)更快速和精確的模型訓(xùn)練。多模態(tài)學(xué)習(xí):深度學(xué)習(xí)方法不僅可以處理傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù),還可以處理多模態(tài)數(shù)據(jù),如圖像、音頻和文本等。通過多模態(tài)學(xué)習(xí),可以將不同類型的數(shù)據(jù)進(jìn)行融合和關(guān)聯(lián),從而實(shí)現(xiàn)更全面和深入的理解和分析。1.1人工智能1.1.2人工智能的發(fā)展歷史第三階段(21世紀(jì)初-至今):深度學(xué)習(xí)這一階段的代表性事件包括:2012年谷歌團(tuán)隊(duì)的AlexKrizhevsky等參與了ImageNet大規(guī)模視覺識(shí)別挑戰(zhàn)賽,利用深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)在圖像分類任務(wù)上取得革命性突破,引領(lǐng)了深度學(xué)習(xí)的發(fā)展潮流。2016年DeepMind的AlphaGo在圍棋比賽中擊敗了世界頂級(jí)選手李世石,引發(fā)了對(duì)人工智能在復(fù)雜決策游戲中的能力和潛力的廣泛關(guān)注。2017年Google機(jī)器學(xué)習(xí)團(tuán)隊(duì)提出了一種名為“AttentionisAllYouNeed”的論文,提出了自注意力機(jī)制的概念,即一種基于自注意力機(jī)制(self-attentionmechanism)的神經(jīng)網(wǎng)絡(luò)模型,其在自然語言處理領(lǐng)域取得了顯著的成果,被廣泛應(yīng)用于機(jī)器翻譯、文本摘要、問答系統(tǒng)等任務(wù)中。自此,GoogleTransformer逐漸成為自然語言處理領(lǐng)域的重要研究方向,后續(xù)提出的BERT、GPT大模型均是基于Transformer模型,這些模型在各種自然語言處理任務(wù)上都取得了非常好的效果。1.1人工智能1.1.2人工智能的發(fā)展歷史第三階段(21世紀(jì)初-至今):深度學(xué)習(xí)2022年11月OpenAI推出了人工智能聊天機(jī)器人程序ChatGPT,其以文字方式交互,可以用人類自然對(duì)話方式進(jìn)行交互,還可以用于復(fù)雜的語言工作,包括自動(dòng)生成文本、自動(dòng)問答、自動(dòng)摘要、代碼編輯和調(diào)試等多種任務(wù)。ChatGPT的出現(xiàn),標(biāo)志著人工智能聊天機(jī)器人技術(shù)的重大進(jìn)展,為人們提供了更加便捷、高效的獲取信息和解決問題的方式。2023年3月OpenAI推出GPT-4人工智能多模態(tài)大模型,其是GPT-3的升級(jí)版,通過增加更多的訓(xùn)練數(shù)據(jù)、改進(jìn)訓(xùn)練算法和調(diào)整模型結(jié)構(gòu)等方式,進(jìn)一步提升了模型的表現(xiàn)力和應(yīng)用能力。與GPT-3相比,GPT-4具有更高的語言理解能力、更好的文本生成能力、更強(qiáng)的語言交互能力、更廣泛的應(yīng)用場(chǎng)景。GPT-4不僅支持更長的上下文、更高的精度和泛化能力,同時(shí)還支持多模態(tài),如語音識(shí)別和圖像理解等等。1.1人工智能1.1.2人工智能的發(fā)展歷史第三階段(21世紀(jì)初-至今):深度學(xué)習(xí)2023年3月百度正式發(fā)布了AI大模型文心一言?;诎俣戎悄茉萍夹g(shù)構(gòu)建的大模型,文心一言被廣泛集成到百度的所有業(yè)務(wù)中。并且推出了文心NLP大模型、文心CV大模型、文心跨模態(tài)大模型、文心生物計(jì)算大模型、文心行業(yè)大模型。且提供了多樣化的大模型API服務(wù),可通過零代碼調(diào)用大模型能力,自由探索大模型技術(shù)如何滿足用戶需求。2023年5月科大訊飛正式發(fā)布了星火認(rèn)知大模型,其具有7大核心能力,即文本生成、語言理解、知識(shí)問答、邏輯推理、數(shù)學(xué)能力、代碼能力、多模態(tài)能力。1.1人工智能1.1.3人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)的關(guān)系為了賦予計(jì)算機(jī)以人類的理解能力與邏輯思維,誕生了人工智能這一學(xué)科。在實(shí)現(xiàn)人工智能的眾多算法中,機(jī)器學(xué)習(xí)是發(fā)展較為快速的一支。機(jī)器學(xué)習(xí)的思想是讓機(jī)器自動(dòng)地從大量的數(shù)據(jù)中學(xué)習(xí)出規(guī)律,并利用該規(guī)律對(duì)未知的數(shù)據(jù)做出預(yù)測(cè)。在機(jī)器學(xué)習(xí)的算法中,深度學(xué)習(xí)是特指利用深度神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)完成訓(xùn)練和預(yù)測(cè)的算法。三者的關(guān)系如圖所示。機(jī)器學(xué)習(xí)是實(shí)現(xiàn)人工智能的途徑之一,而深度學(xué)習(xí)則是機(jī)器學(xué)習(xí)的算法之一。如果把人工智能比喻成人類的大腦,機(jī)器學(xué)習(xí)則是人類通過大量數(shù)據(jù)來認(rèn)知學(xué)習(xí)的過程,而深度學(xué)習(xí)則是學(xué)習(xí)過程中非常高效的一種算法。人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)的關(guān)系(圖片來自于網(wǎng)絡(luò))1.2機(jī)器學(xué)習(xí)1.2.1基本概念百度百科對(duì)人工智能的描述是:機(jī)器學(xué)習(xí)(MachineLearning)是一門多學(xué)科交叉專業(yè),涵蓋概率論知識(shí),統(tǒng)計(jì)學(xué)知識(shí),近似理論知識(shí)和復(fù)雜算法知識(shí),使用計(jì)算機(jī)作為工具并致力于真實(shí)實(shí)時(shí)的模擬人類學(xué)習(xí)方式,并將現(xiàn)有內(nèi)容進(jìn)行知識(shí)結(jié)構(gòu)劃分來有效提高學(xué)習(xí)效率。機(jī)器學(xué)習(xí)有下面幾種定義:機(jī)器學(xué)習(xí)是一門人工智能的科學(xué),該領(lǐng)域的主要研究對(duì)象是人工智能,特別是如何在經(jīng)驗(yàn)學(xué)習(xí)中改善具體算法的性能。機(jī)器學(xué)習(xí)是對(duì)能通過經(jīng)驗(yàn)自動(dòng)改進(jìn)的計(jì)算機(jī)算法的研究。機(jī)器學(xué)習(xí)是用數(shù)據(jù)或以往的經(jīng)驗(yàn),以此優(yōu)化計(jì)算機(jī)程序的性能標(biāo)準(zhǔn)。機(jī)器學(xué)習(xí)目的是讓計(jì)算機(jī)模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取新的知識(shí)或技能,重新組織已有的知識(shí)結(jié)構(gòu)使之不斷完善自身的性能。簡單來講,機(jī)器學(xué)習(xí)就是人們通過提供大量的相關(guān)數(shù)據(jù)來訓(xùn)練機(jī)器。1.2機(jī)器學(xué)習(xí)1.2.1基本概念作為人工智能的一個(gè)研究領(lǐng)域,機(jī)器學(xué)習(xí)主要研究以下三方面問題:學(xué)習(xí)機(jī)理:這是對(duì)人類學(xué)習(xí)機(jī)制的研究,即人類獲取知識(shí)、技能和抽象概念的天賦能力。這一研究將從根本上解決機(jī)器學(xué)習(xí)中的問題。學(xué)習(xí)方法:研究人類的學(xué)習(xí)過程,探索各種可能的學(xué)習(xí)方法,建立起獨(dú)立于具體應(yīng)用領(lǐng)域的學(xué)習(xí)算法。機(jī)器學(xué)習(xí)方法的構(gòu)造是在對(duì)生物學(xué)習(xí)機(jī)理進(jìn)行簡化的基礎(chǔ)上,用計(jì)算的方法進(jìn)行再現(xiàn)。學(xué)習(xí)系統(tǒng):根據(jù)特定任務(wù)的要求,建立相應(yīng)的學(xué)習(xí)系統(tǒng)。1.2機(jī)器學(xué)習(xí)1.2.2分類及常見算法按照學(xué)習(xí)形式的不同可以將機(jī)器學(xué)習(xí)算法分為監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)算法。(1)監(jiān)督學(xué)習(xí)(SupervisedLearning)在監(jiān)督學(xué)習(xí)中,要求用于訓(xùn)練算法的訓(xùn)練集必須包含明確的標(biāo)識(shí)或結(jié)果。在建立預(yù)測(cè)模型的時(shí)候,監(jiān)督式學(xué)習(xí)建立一個(gè)學(xué)習(xí)過程,將預(yù)測(cè)結(jié)果與“訓(xùn)練數(shù)據(jù)”的實(shí)際結(jié)果進(jìn)行比較,不斷的調(diào)整預(yù)測(cè)模型,直到模型的預(yù)測(cè)結(jié)果達(dá)到一個(gè)預(yù)期的準(zhǔn)確率。監(jiān)督式學(xué)習(xí)的常見應(yīng)用場(chǎng)景如分類問題和回歸問題。常見算法有邏輯回歸(LogisticRegression)和BP神經(jīng)網(wǎng)絡(luò)(BackPropagationNeuralNetwork)。(2)非監(jiān)督學(xué)習(xí)(UnsupervisedLearning)在非監(jiān)督式學(xué)習(xí)中,數(shù)據(jù)并不被特別標(biāo)識(shí),學(xué)習(xí)模型是為了推斷出數(shù)據(jù)的一些內(nèi)在結(jié)構(gòu)。常見的應(yīng)用場(chǎng)景包括關(guān)聯(lián)規(guī)則的學(xué)習(xí)以及聚類等。常見算法包括Apriori算法以及k-Means算法。(3)強(qiáng)化學(xué)習(xí)(ReinforcementLearning)在強(qiáng)化學(xué)習(xí)中,輸入數(shù)據(jù)直接反饋到模型,模型必須對(duì)此立刻做出調(diào)整。常見的應(yīng)用場(chǎng)景包括動(dòng)態(tài)系統(tǒng)以及機(jī)器人控制等。常見算法包括Q-Learning以及時(shí)間差學(xué)習(xí)(TemporalDifferenceLearning)。在自動(dòng)駕駛、視頻質(zhì)量評(píng)估、機(jī)器人等領(lǐng)域強(qiáng)化學(xué)習(xí)算法非常流行。1.2機(jī)器學(xué)習(xí)1.2.2分類及常見算法按照任務(wù)目標(biāo)的不同可以將機(jī)器學(xué)習(xí)算法分為回歸算法、分類算法和聚類算法。(1)回歸算法諸事有因,回歸(Regression)算法通過建立變量之間的回歸模型,通過學(xué)習(xí)(訓(xùn)練)過程得到變量與因變量之間的相關(guān)關(guān)系?;貧w分析可以用于預(yù)測(cè)模型或分類模型。常見的回歸算法包括:線性回歸(LinearRegression)、非線性回歸(Non-linearRegression)、邏輯回歸(LogisticRegression)、多項(xiàng)式回歸(PolynomialRegression)、嶺回歸(RidgeRegression)、套索回歸(LassoRegression)和彈性網(wǎng)絡(luò)回歸(ElasticNetRegression)。其中線性回歸、非線性回歸和邏輯回歸最為常用。(2)分類算法機(jī)器學(xué)習(xí)分為監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí)(強(qiáng)化學(xué)習(xí))。無監(jiān)督學(xué)習(xí)最常應(yīng)用的場(chǎng)景是聚類(Clustering)和降維(DimensionReduction)。分類算法和回歸算法都屬于監(jiān)督學(xué)習(xí)算法,其中分類算法的目標(biāo)就是:學(xué)習(xí)數(shù)據(jù)集的數(shù)據(jù)特征,并將原始數(shù)據(jù)特征映射到目標(biāo)的分類類別。分類算法包括:邏輯回歸(LogisticRegression,LR)、K最近鄰(k-NearestNeighbor,KNN)、樸素貝葉斯模型(NaiveBayesianModel,NBM)、隱馬爾科夫模型(HiddenMarkovModel)、支持向量機(jī)(SupportVectorMachine)、決策樹(DecisionTree)、神經(jīng)網(wǎng)絡(luò)(NeuralNetwork)和集成學(xué)習(xí)(Ada-Boost)。1.2機(jī)器學(xué)習(xí)1.2.2分類及常見算法(3)聚類算法機(jī)器學(xué)習(xí)分為監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí)。無監(jiān)督學(xué)習(xí)從無標(biāo)簽的數(shù)據(jù)集中挖掘和發(fā)現(xiàn)數(shù)據(jù)的數(shù)理規(guī)律。有監(jiān)督學(xué)習(xí)從有標(biāo)簽的數(shù)據(jù)集中挖掘和發(fā)現(xiàn)數(shù)據(jù)的數(shù)理規(guī)律。最終機(jī)器學(xué)習(xí)從數(shù)據(jù)集中得到的模型具有相當(dāng)?shù)姆夯芰?,能夠處理新的?shù)據(jù)輸入,并做出合理的預(yù)測(cè)。有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)的最大區(qū)別在于數(shù)據(jù)是否有標(biāo)簽。無監(jiān)督學(xué)習(xí)最常應(yīng)用的場(chǎng)景是聚類和降維。聚類算法包括:K均值聚類(K-Means)、層次聚類(HierarchicalClustering)和混合高斯模型(GaussianMixtureModel)。降維算法包括:主成因分析(PrincipalComponentAnalysis)和線性判別分析(LinearDiscriminantAnalysis)。1.2機(jī)器學(xué)習(xí)1.2.2分類及常見算法按照學(xué)習(xí)策略的不同可以將機(jī)器學(xué)習(xí)算法分為演繹學(xué)習(xí)、歸納學(xué)習(xí)和類比學(xué)習(xí)等。(1)演繹學(xué)習(xí)(LearningbyDeduction)學(xué)生所用的推理形式為演繹推理。推理從公理出發(fā),經(jīng)過邏輯變換推導(dǎo)出結(jié)論。這種推理是“保真”變換和特化(Specialization)的過程,使學(xué)生在推理過程中可以獲取有用的知識(shí)。這種學(xué)習(xí)方法包含宏操作(Macro-Operation)學(xué)習(xí)、知識(shí)編輯和組塊(Chunking)技術(shù)。演繹推理的逆過程是歸納推理。(2)歸納學(xué)習(xí)(LearningfromInduction)歸納學(xué)習(xí)是由教師或環(huán)境提供某概念的一些實(shí)例或反例,讓學(xué)生通過歸納推理得出該概念的一般描述。這種學(xué)習(xí)的推理工作量遠(yuǎn)多于示教學(xué)習(xí)和演繹學(xué)習(xí),因?yàn)榄h(huán)境并不提供一般性概念描述(如公理)。從某種程度上說,歸納學(xué)習(xí)的推理量也比類比學(xué)習(xí)大,因?yàn)闆]有一個(gè)類似的概念可以作為“源概念”加以取用。歸納學(xué)習(xí)是最基本的、發(fā)展也較為成熟的學(xué)習(xí)方法,在人工智能領(lǐng)域已經(jīng)得到廣泛的研究和應(yīng)用。(3)類比學(xué)習(xí)(LearningbyAnalogy)利用兩個(gè)不同領(lǐng)域(源域、目標(biāo)域)中的知識(shí)相似性,可以通過類比,從源域的知識(shí)(包括相似的特征和其它性質(zhì))推導(dǎo)出目標(biāo)域的相應(yīng)知識(shí),從而實(shí)現(xiàn)學(xué)習(xí)。類比學(xué)習(xí)系統(tǒng)可以使一個(gè)已有的計(jì)算機(jī)應(yīng)用系統(tǒng)轉(zhuǎn)變?yōu)檫m應(yīng)于新的領(lǐng)域,來完成原先沒有設(shè)計(jì)的相類似的功能。1.3深度學(xué)習(xí)1.3.1深度學(xué)習(xí)簡介百度百科對(duì)人工智能的描述是:深度學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域中一個(gè)新的研究方向,它被引入機(jī)器學(xué)習(xí)使其更接近于最初的目標(biāo)——人工智能。近年來,深度學(xué)習(xí)在各種應(yīng)用領(lǐng)域取得了巨大成功。機(jī)器學(xué)習(xí)已應(yīng)用于大多數(shù)傳統(tǒng)領(lǐng)域,同時(shí)也為許多新領(lǐng)域帶來新機(jī)會(huì)?;诓煌悇e的學(xué)習(xí),人們提出了不同的方法,包括有監(jiān)督、半監(jiān)督和無監(jiān)督學(xué)習(xí)。實(shí)驗(yàn)結(jié)果表明,在圖像處理、計(jì)算機(jī)視覺、語音識(shí)別、機(jī)器翻譯等領(lǐng)域,與傳統(tǒng)的機(jī)器學(xué)習(xí)方法相比,深度學(xué)習(xí)具有先進(jìn)的性能。深度學(xué)習(xí)是學(xué)習(xí)樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次,這些學(xué)習(xí)過程中獲得的信息對(duì)諸如文字、圖像和聲音等數(shù)據(jù)的解釋有很大的幫助。它的最終目標(biāo)是讓機(jī)器能夠像人一樣具有分析學(xué)習(xí)能力,能夠識(shí)別文字、圖像和聲音等數(shù)據(jù)。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)極其重要的分支,而機(jī)器學(xué)習(xí)是人工智能的一個(gè)分支。深度學(xué)習(xí)的研究從近十年才迎來大幅度的發(fā)展。深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,但是并不完全等于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)。不過在叫法上,很多深度學(xué)習(xí)算法中都會(huì)包含“神經(jīng)網(wǎng)絡(luò)”這個(gè)詞,比如:卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)等。所以,深度學(xué)習(xí)可以說是在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上的升級(jí),約等于神經(jīng)網(wǎng)絡(luò)。1.3深度學(xué)習(xí)1.3.2深度學(xué)習(xí)應(yīng)用計(jì)算機(jī)視覺方面:(1)目標(biāo)檢測(cè)目標(biāo)檢測(cè)(ObjectDetection)是當(dāng)前計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)領(lǐng)域的研究熱點(diǎn)之一,核心任務(wù)是篩選出給定圖像中所有感興趣的目標(biāo),確定其位置和大小。其中難點(diǎn)便是遮擋、光照、姿態(tài)等造成的像素級(jí)誤差,這是目標(biāo)檢測(cè)所要挑戰(zhàn)和避免的問題?,F(xiàn)如今深度學(xué)習(xí)中一般通過搭建DNN提取目標(biāo)特征,利用ROI映射和IOU確定閾值以及區(qū)域建議網(wǎng)絡(luò)RPN統(tǒng)一坐標(biāo)回歸損失和二分類損失來聯(lián)合訓(xùn)練。(2)語義分割語義分割(SemanticSegmentation)旨在將圖像中的物體作為可解釋的語義類別,該類別將是DNN學(xué)習(xí)的特征聚類得到。和目標(biāo)檢測(cè)一樣,在深度學(xué)習(xí)中需要IOU作為評(píng)價(jià)指標(biāo)評(píng)估設(shè)計(jì)的語義分割網(wǎng)絡(luò)。值得注意的是,語義類別對(duì)應(yīng)于不同的顏色,生成的結(jié)果需要和原始的標(biāo)注圖像相比較,較為一致才能算是一個(gè)可分辨不同語義信息的網(wǎng)絡(luò)。1.3深度學(xué)習(xí)1.3.2深度學(xué)習(xí)應(yīng)用(3)超分辨率重建超分辨率重建(SuperResolutionConstruction)的主要任務(wù)是通過軟件和硬件的方法,從觀測(cè)到的低分辨率圖像重建出高分辨率圖像,這樣的技術(shù)在醫(yī)療影像和視頻編碼通信中十分重要。該領(lǐng)域一般分為單圖像超分和視頻超分,一般在視頻序列中通過該技術(shù)解決丟幀,幀圖像模糊等問題,而在單圖像在中主要為了提升細(xì)節(jié)和質(zhì)感。在深度學(xué)習(xí)中一般采用殘差形式網(wǎng)絡(luò)學(xué)習(xí)雙二次或雙三次下采樣帶來的精度損失,以提升大圖細(xì)節(jié)。對(duì)于視頻超分一般采用光流或者運(yùn)動(dòng)補(bǔ)償來解決丟幀圖像的重建任務(wù)。(4)行人重識(shí)別行人重識(shí)別(PersonRe-identification)也稱行人再識(shí)別,是利用計(jì)算機(jī)視覺技術(shù)判斷圖像或者視頻序列中是否存在特定行人的技術(shù)。其廣泛被認(rèn)為是一個(gè)圖像檢索的子問題。核心任務(wù)是給定一個(gè)監(jiān)控行人圖像,檢索跨設(shè)備下的該行人圖像?,F(xiàn)如今一般人臉識(shí)別和該技術(shù)進(jìn)行聯(lián)合,用于在人臉識(shí)別的輔助以及人臉識(shí)別失效(人臉模糊,人臉被遮擋)時(shí)發(fā)揮作用。在深度學(xué)習(xí)中一般通過全局和局部特征提取以及度量學(xué)習(xí)對(duì)多組行人圖片進(jìn)行分類和身份查詢。1.3深度學(xué)習(xí)1.3.2深度學(xué)習(xí)應(yīng)用語音識(shí)別方面:語音識(shí)別(SpeechRecognization)是一門交叉學(xué)科,近十幾年進(jìn)步顯著。它需要用到數(shù)字信號(hào)處理、模式識(shí)別、概率論等理論知識(shí),深度學(xué)習(xí)的發(fā)展也使其有了很大幅度的效果提升。深度學(xué)習(xí)中將聲音轉(zhuǎn)化為比特的目的類似于在計(jì)算機(jī)視覺中處理圖像數(shù)據(jù)一樣,轉(zhuǎn)換為特征向量,與圖像處理不太一樣的是需要對(duì)波(聲音的形式)進(jìn)行采樣,采樣的方式,采樣點(diǎn)的個(gè)數(shù)和坐標(biāo)也是關(guān)鍵信息。然后對(duì)這些數(shù)字信息進(jìn)行處理,輸入到網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,得到一個(gè)可以進(jìn)行語音識(shí)別的模型。語音識(shí)別的難點(diǎn)有很多,例如克服發(fā)音音節(jié)相似度高進(jìn)行精準(zhǔn)識(shí)別,實(shí)時(shí)語音轉(zhuǎn)寫等,這就需要很多不同人樣本的聲音作為數(shù)據(jù)集來讓深度網(wǎng)絡(luò)具有更強(qiáng)的泛化性,以及需要設(shè)計(jì)的網(wǎng)絡(luò)本身的復(fù)雜程度是否得當(dāng)?shù)葪l件。語音助手(圖片來自于網(wǎng)絡(luò))例如,圖1-2是百度的語音助手。百度采用國際領(lǐng)先的流式端到端語音語言一體化建模算法,將語音快速準(zhǔn)確識(shí)別為文字,支持手機(jī)應(yīng)用語音交互、語音內(nèi)容分析、機(jī)器人對(duì)話等多個(gè)場(chǎng)景。1.3深度學(xué)習(xí)1.3.2深度學(xué)習(xí)應(yīng)用自然語言處理方面:自然語言處理(NLP)是計(jì)算機(jī)科學(xué)和人工智能領(lǐng)域的方向之一,研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語言進(jìn)行有效通信的各種理論和方法。深度學(xué)習(xí)由于其非線性的復(fù)雜結(jié)構(gòu),將低維稠密且連續(xù)的向量表示為不同粒度的語言單元,例如詞、短語、句子和文章,讓計(jì)算機(jī)可以理解通過網(wǎng)絡(luò)模型參與編織的語言,進(jìn)而使得人類和計(jì)算機(jī)進(jìn)行溝通。此外深度學(xué)習(xí)領(lǐng)域中研究人員使用循環(huán)、卷積、遞歸等神經(jīng)網(wǎng)絡(luò)模型對(duì)不同的語言單元向量進(jìn)行組合,獲得更大語言單元的表示。不同的向量空間擁有的組合越復(fù)雜,計(jì)算機(jī)越是能處理更加難以理解的語義信息。將人類的文本作為輸入,本身就具有挑戰(zhàn)性,因此得到的自然語言計(jì)算機(jī)如何處理就更難上加難,而這也是NLP不斷探索的領(lǐng)域。通過深度學(xué)習(xí),人們已經(jīng)在AI領(lǐng)域向前邁出一大步,相信人與機(jī)器溝通中“信、達(dá)、雅”這三個(gè)方面終將實(shí)現(xiàn)。1.3深度學(xué)習(xí)1.3.2深度學(xué)習(xí)應(yīng)用例如,ChatGPT是一種由OpenAI開發(fā)的人工智能語言模型,如圖1-3所示,它具有強(qiáng)大的自然語言處理能力。它可以理解人類語言輸入,并以準(zhǔn)確、流暢的方式生成回應(yīng)。它的學(xué)習(xí)基礎(chǔ)涵蓋了廣泛的主題,可以進(jìn)行對(duì)話、回答問題、提供建議、講故事,甚至能夠模仿不同風(fēng)格的寫作。ChatGPT在虛擬對(duì)話中扮演著一個(gè)智能伙伴的角色,能夠與用戶進(jìn)行有意義的交流,為用戶提供信息、娛樂和幫助。無論是進(jìn)行日常聊天、獲取知識(shí),還是探索創(chuàng)造性的想法,ChatGPT都可以成為一個(gè)有用的工具和伙伴。ChatGPT(圖片來自于網(wǎng)絡(luò))1.4常用語言和深度學(xué)習(xí)框架1.4.1Python語言為什么選擇Python?做深度學(xué)習(xí),最重要的是驗(yàn)證想法,需要在短期內(nèi)跑出多次實(shí)驗(yàn)結(jié)果。其中的難點(diǎn)在于快速出結(jié)果,靜態(tài)語言固然省內(nèi)存,性能好,但修改起來確實(shí)不如Python容易,畢竟Python上手門檻很低,十行頂“百行”。Python的深度學(xué)習(xí)框架多且維護(hù)頻繁,方便我們快速入手。大部分深度學(xué)習(xí)框架對(duì)于CPU密集型的功能都做了優(yōu)化,Python的深度學(xué)習(xí)框架可以看作是各種API的接口而已,真正用起來不見得會(huì)慢的讓人難以忍受。況且在性能沒有落下很多的情況下,Python根本不需要考慮垃圾回收,內(nèi)存泄露的情況。Python是膠水語言可以結(jié)合C++,使得寫出來的代碼可以達(dá)到C++的效率。一項(xiàng)人工智能的工程可能涉及到多個(gè)環(huán)節(jié),而如果選擇使用Python,它可以提供一條龍服務(wù)。1.4常用語言和深度學(xué)習(xí)框架1.4.1Python語言Python語言簡介Python語言由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆于1990年代初設(shè)計(jì),Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊獭ython語法和動(dòng)態(tài)類型,以及解釋型語言的本質(zhì),使它成為多數(shù)平臺(tái)上寫腳本和快速開發(fā)應(yīng)用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨(dú)立的、大型項(xiàng)目的開發(fā)。Python解釋器易于擴(kuò)展,可以使用C語言或C++(或者其他可以通過C調(diào)用的語言)擴(kuò)展新的功能和數(shù)據(jù)類型。Python也可用于可定制化軟件中的擴(kuò)展程序語言。Python豐富的標(biāo)準(zhǔn)庫,提供了適用于各個(gè)主要系統(tǒng)平臺(tái)的源碼或機(jī)器碼。由于Python語言的簡潔性、易讀性以及可擴(kuò)展性,在國外用Python做科學(xué)計(jì)算的研究機(jī)構(gòu)日益增多,一些知名大學(xué)已經(jīng)采用Python來教授程序設(shè)計(jì)課程。在2018年3月,該語言作者在郵件列表上宣布Python2.7將于2020年1月1日終止支持。所以本書除了在Caffe環(huán)境搭建時(shí)采用Python2.7版本(因?yàn)镃affe框架與Python3在兼容性上有問題),其余部分基本采用的是Python3.6以上版本。關(guān)于Python語言的學(xué)習(xí),讀者可自行搜索,本書在編程語言的入門使用上不再做詳細(xì)介紹。1.4常用語言和深度學(xué)習(xí)框架1.4.2深度學(xué)習(xí)框架為什么要用深度學(xué)習(xí)框架?深度學(xué)習(xí)框架(DeepLearningFramework)是指一種能夠支持人工神經(jīng)網(wǎng)絡(luò)進(jìn)行搭建、訓(xùn)練、調(diào)試和部署的軟件平臺(tái)。它通過提供高效的算法實(shí)現(xiàn)、方便的數(shù)據(jù)處理工具、數(shù)據(jù)可視化和調(diào)試工具等方式,簡化了深度學(xué)習(xí)任務(wù)的實(shí)現(xiàn)過程,讓深度學(xué)習(xí)應(yīng)用變得更加容易和高效。也就是說,深度學(xué)習(xí)框架為深度學(xué)習(xí)提供了一種快捷、可重復(fù)和可擴(kuò)展的開發(fā)環(huán)境,幫助研究者和工程師們更快地研究和開發(fā)出復(fù)雜的深度學(xué)習(xí)模型。如果已經(jīng)掌握了深度學(xué)習(xí)的核心算法,當(dāng)然可以從頭開始實(shí)現(xiàn)自己的神經(jīng)網(wǎng)絡(luò)模型。但是如果需要實(shí)現(xiàn)更復(fù)雜的模型,如卷積神經(jīng)網(wǎng)絡(luò)(CNN)或循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)時(shí),就會(huì)發(fā)現(xiàn)從頭開始實(shí)現(xiàn)復(fù)雜模型是不切實(shí)際的,因此深度學(xué)習(xí)框架應(yīng)運(yùn)而生,它可以輕松實(shí)現(xiàn)自己的神經(jīng)網(wǎng)絡(luò)。深度學(xué)習(xí)框架可以更輕松地構(gòu)建、訓(xùn)練、測(cè)試和部署深度學(xué)習(xí)模型。使用框架可以使開發(fā)人員專注于模型設(shè)計(jì)和實(shí)現(xiàn),減少了手動(dòng)編寫底層代碼的工作量。此外,框架往往具有一系列已經(jīng)實(shí)現(xiàn)的算法和模型架構(gòu),可以幫助開發(fā)人員更快地實(shí)現(xiàn)模型并進(jìn)行實(shí)驗(yàn)。另外,框架還可以提供分布式訓(xùn)練、自動(dòng)求導(dǎo)、GPU加速等功能,這些功能可以加速訓(xùn)練速度、縮短模型的設(shè)計(jì)和實(shí)現(xiàn)時(shí)間、加快模型迭代的速度。并且,它不需要手寫CUDA代碼就能跑GPU。最后,它還容易構(gòu)建大的計(jì)算圖(ComputationalGraphs)。總之,使用深度學(xué)習(xí)框架可以極大地提高深度學(xué)習(xí)應(yīng)用的開發(fā)效率和模型的準(zhǔn)確率。1.4常用語言和深度學(xué)習(xí)框架1.4.2深度學(xué)習(xí)框架常用的深度學(xué)習(xí)框架(1)PyTorch框架PyTorch是以Torch框架為底層開發(fā)的,其用Python重寫了很多內(nèi)容。使得框架不僅更加靈活,支持動(dòng)態(tài)圖,而且提供了Python接口。它是由Torch7團(tuán)隊(duì)開發(fā),是一個(gè)以Python優(yōu)先的深度學(xué)習(xí)框架,不僅能夠?qū)崿F(xiàn)強(qiáng)大的GPU加速,同時(shí)還支持動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò),這是很多主流深度學(xué)習(xí)框架比如TensorFlow等都不支持的。PyTorch既可以看作加入了GPU支持的NumPy(一種非常有名的Python開源數(shù)值計(jì)算擴(kuò)展庫),同時(shí)也可以看成一個(gè)擁有自動(dòng)求導(dǎo)功能的強(qiáng)大的深度神經(jīng)網(wǎng)絡(luò)。除了Facebook外,它已經(jīng)被Twitter、CMU和Salesforce等機(jī)構(gòu)采用。(2)TensorFlow框架TensorFlow是一款由Google以C++語言開發(fā)的開源數(shù)學(xué)計(jì)算軟件,使用數(shù)據(jù)流圖(DataFlowGraph)的形式進(jìn)行計(jì)算。圖中的節(jié)點(diǎn)代表數(shù)學(xué)運(yùn)算,而圖中的線條表示多維數(shù)據(jù)數(shù)組(Tensor)之間的交互。TensorFlow最初是由研究人員和GoogleBrain團(tuán)隊(duì)針對(duì)機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)進(jìn)行研究而開發(fā),開源之后幾乎可以在各個(gè)領(lǐng)域適用。由于是大公司Google出品,致使TensorFlow迅速成為全世界使用人數(shù)最多的框架,社區(qū)的活躍度極高,維護(hù)與更新比較頻繁。1.4常用語言和深度學(xué)習(xí)框架1.4.2深度學(xué)習(xí)框架(3)Caffe框架Caffe由加州大學(xué)伯克利的Phd賈揚(yáng)清開發(fā),全稱是ConvolutionalArchitectureforFastFeatureEmbedding,是一個(gè)清晰而高效的開源深度學(xué)習(xí)框架,由伯克利視覺中心(BerkeleyVisionandLearningCenter,BVLC)進(jìn)行維護(hù)。(4)其他框架Keras框架:類似接口而非框架,容易上手,研究人員可以在TensorFlow中看到Keras的一些實(shí)現(xiàn),很多初始化方法TensorFlow都可以直接使用Keras函數(shù)接口直接調(diào)用實(shí)現(xiàn)。然而缺點(diǎn)就在于封裝過重,不夠輕盈,許多代碼的bug可能無法顯而易見。Caffe2框架:繼承了Caffe的優(yōu)點(diǎn),速度更快,然而還是編譯困難,研究人員少,值得一提的是已經(jīng)并入了PyTorch,因此我們可以在新版本的PyTorch中體會(huì)到它的存在。MXNet框架:支持語言眾多,例如C++,Python,MATLAB,R等,同樣可以在集群、移動(dòng)設(shè)備、GPU上部署。MXNet集成了Gluon接口,就如同Torchvision對(duì)于PyTorch那樣,而且支持靜態(tài)圖和動(dòng)態(tài)圖。然而由于推廣力度不夠使其并沒有像PyTorch和TensorFlow那樣受關(guān)注,不過其分布式支持卻是非常閃耀的一點(diǎn)。課后習(xí)題1)人工智能是什么?2)什么是機(jī)器學(xué)習(xí)?3)什么是深度學(xué)習(xí)?4)簡述機(jī)器學(xué)習(xí)的分類?5)深度學(xué)習(xí)有哪些方面的應(yīng)用?2神經(jīng)網(wǎng)絡(luò)基礎(chǔ)NEURALNETWORKFUNDAMENTALSChapter02本章目錄生物神經(jīng)網(wǎng)絡(luò)和神經(jīng)元模型01人工神經(jīng)網(wǎng)絡(luò)02卷積神經(jīng)網(wǎng)絡(luò)032.1生物神經(jīng)網(wǎng)絡(luò)和神經(jīng)元模型人工神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的重要基礎(chǔ),人工神經(jīng)網(wǎng)絡(luò)是以人腦神經(jīng)網(wǎng)絡(luò)為原型設(shè)計(jì)出來的。人類的大腦皮層包含大約1011個(gè)神經(jīng)元。每個(gè)神經(jīng)元通過突觸與大約103個(gè)其他神經(jīng)元連接,如圖所示,形成一個(gè)高度復(fù)雜和靈活的動(dòng)態(tài)網(wǎng)絡(luò)?;谶@種想法,1943年,神經(jīng)生理學(xué)和控制論科學(xué)家McCulloch和計(jì)算神經(jīng)學(xué)科學(xué)家Pitts參考了人類神經(jīng)元的結(jié)構(gòu),發(fā)表了抽象的神經(jīng)元模型——MP模型(McCulloch-Pittsmodel)。大腦神經(jīng)突觸2.1生物神經(jīng)網(wǎng)絡(luò)和神經(jīng)元模型神經(jīng)元模型是一個(gè)包含輸入,輸出與計(jì)算功能的模型。輸入可以類比為神經(jīng)元的樹突,而輸出可以類比為神經(jīng)元的軸突,計(jì)算則可以類比為細(xì)胞核。下圖是一個(gè)典型的神經(jīng)元模型:包含有3個(gè)輸入,1個(gè)輸出,以及2個(gè)計(jì)算功能。*代表進(jìn)行乘法運(yùn)算,+代表進(jìn)行加法運(yùn)算。無符號(hào)的則代表進(jìn)行普通連接,即值傳遞。用a來表示輸入,用w來表示權(quán)值。前半部分的有向箭頭可以這樣理解:在初端,傳遞的信號(hào)大小仍然是a,端中間有權(quán)重參數(shù)w,經(jīng)過這個(gè)權(quán)重參數(shù)后的信號(hào)會(huì)變成a*w,因此在連接的末端,信號(hào)的大小就變成了a*w。神經(jīng)元模型計(jì)算公式為:

2.1生物神經(jīng)網(wǎng)絡(luò)和神經(jīng)元模型對(duì)神經(jīng)元模型進(jìn)行一些擴(kuò)展,如右圖所示。首先將sum函數(shù)與sgn函數(shù)合并到一個(gè)計(jì)算模塊內(nèi),代表神經(jīng)元的內(nèi)部計(jì)算。其次,輸出z變?yōu)槎鄠€(gè),以便作為下一層神經(jīng)元的輸入。最后說明,一個(gè)神經(jīng)元可以引出多個(gè)代表輸出的有向箭頭,但值都是一樣的。神經(jīng)元可以看作一個(gè)計(jì)算與存儲(chǔ)單元。計(jì)算是神經(jīng)元對(duì)其的輸入進(jìn)行計(jì)算功能。存儲(chǔ)是神經(jīng)元會(huì)暫存計(jì)算結(jié)果,并傳遞到下一層。當(dāng)我們用“神經(jīng)元”組成網(wǎng)絡(luò)來描述網(wǎng)絡(luò)中的某個(gè)“神經(jīng)元”時(shí),我們更多地會(huì)用“單元”(unit)來指代。同時(shí)由于神經(jīng)網(wǎng)絡(luò)的表現(xiàn)形式是一個(gè)有向圖,有時(shí)也會(huì)用“節(jié)點(diǎn)”(node)來表達(dá)同樣的意思。神經(jīng)元簡化2.2人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)是為模擬人腦神經(jīng)網(wǎng)絡(luò)而設(shè)計(jì)的一種計(jì)算模型,它從結(jié)構(gòu)、實(shí)現(xiàn)機(jī)理和功能上模擬人腦神經(jīng)網(wǎng)絡(luò)。人工神經(jīng)網(wǎng)絡(luò)與生物神經(jīng)元類似,由多個(gè)節(jié)點(diǎn)(人工神經(jīng)元)互相連接而成,可以用來對(duì)數(shù)據(jù)之間的復(fù)雜關(guān)系進(jìn)行建模,不同節(jié)點(diǎn)之間的連接被賦予了不同的權(quán)重,每個(gè)權(quán)重代表了一個(gè)節(jié)點(diǎn)對(duì)另一個(gè)節(jié)點(diǎn)的影響大小。每個(gè)節(jié)點(diǎn)代表一種特定函數(shù),來自其他節(jié)點(diǎn)的信息經(jīng)過其相應(yīng)的權(quán)重綜合計(jì)算,輸入到一個(gè)激活函數(shù)中并得到一個(gè)新的活性值(興奮或抑制)。從系統(tǒng)觀點(diǎn)看,人工神經(jīng)元網(wǎng)絡(luò)是由大量神經(jīng)元通過極其豐富和完善的連接而構(gòu)成的自適應(yīng)非線性動(dòng)態(tài)系統(tǒng)。早期的神經(jīng)網(wǎng)絡(luò)模型并不具備學(xué)習(xí)能力。首個(gè)可學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)是赫布網(wǎng)絡(luò),采用的是一種基于赫布規(guī)則的無監(jiān)督學(xué)習(xí)方法。感知器是最早的具有機(jī)器學(xué)習(xí)思想的神經(jīng)網(wǎng)絡(luò),但其學(xué)習(xí)方法無法擴(kuò)展到多層的神經(jīng)網(wǎng)絡(luò)上。直到1980年左右,反向傳播算法才有效地解決了多層神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)問題,并成為最為流行的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法。20世紀(jì)80年代中期,DavidRunelhart、GeoffreyHinton和RonaldW-llians、DavidParker等人分別獨(dú)立發(fā)現(xiàn)了誤差反向傳播算法(ErrorBackPropagationTraining),簡稱BP,系統(tǒng)解決了多層神經(jīng)網(wǎng)絡(luò)隱含層連接權(quán)的學(xué)習(xí)問題,并在數(shù)學(xué)上給出了完整推導(dǎo)。人們把采用這種算法進(jìn)行誤差校正的多層前饋網(wǎng)絡(luò)稱為BP網(wǎng)。2.2人工神經(jīng)網(wǎng)絡(luò)

BP神經(jīng)網(wǎng)絡(luò)具有任意復(fù)雜的模式分類能力和優(yōu)良的多維函數(shù)映射能力,解決了簡單感知器不能解決的異或(ExclusiveOR,XOR)和一些其他問題。從結(jié)構(gòu)上講,BP網(wǎng)絡(luò)具有輸入層、隱藏層和輸出層;從本質(zhì)上講,BP算法就是以網(wǎng)絡(luò)誤差平方為目標(biāo)函數(shù),采用梯度下降法來計(jì)算目標(biāo)函數(shù)的最小值。人工神經(jīng)網(wǎng)絡(luò)誕生之初并不是用來解決機(jī)器學(xué)習(xí)問題。由于人工神經(jīng)網(wǎng)絡(luò)可以用作一個(gè)通用的函數(shù)逼近器(一個(gè)兩層的神經(jīng)網(wǎng)絡(luò)可以逼近任意的函數(shù))。因此人工神經(jīng)網(wǎng)絡(luò)可以看作是一個(gè)可學(xué)習(xí)的函數(shù),并將其應(yīng)用到機(jī)器學(xué)習(xí)中。理論上,只要有足夠的訓(xùn)練數(shù)據(jù)和神經(jīng)元數(shù)量,人工神經(jīng)網(wǎng)絡(luò)就可以學(xué)到很多復(fù)雜的函數(shù)。我們可以把一個(gè)人工神經(jīng)網(wǎng)絡(luò)塑造復(fù)雜函數(shù)的能力稱為網(wǎng)絡(luò)容量(NetworkCapacity),這與可以被儲(chǔ)存在網(wǎng)絡(luò)中的信息的復(fù)雜度以及數(shù)量相關(guān)。人工神經(jīng)網(wǎng)絡(luò)的未來和發(fā)展(圖片來自于網(wǎng)絡(luò))2.2人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)具有如下四個(gè)基本特征:非線性:非線性關(guān)系是自然界的普遍特性。大腦的智慧就是一種非線性現(xiàn)象。人工神經(jīng)元處于激活或抑制二種不同的狀態(tài),這種行為在數(shù)學(xué)上表現(xiàn)為一種非線性關(guān)系。具有閾值的神經(jīng)元構(gòu)成的網(wǎng)絡(luò)具有更好的性能,可以提高容錯(cuò)性和存儲(chǔ)容量。非局限性:一個(gè)神經(jīng)網(wǎng)絡(luò)通常由多個(gè)神經(jīng)元廣泛連接而成。一個(gè)系統(tǒng)的整體行為不僅取決于單個(gè)神經(jīng)元的特征,而且可能主要由單元之間的相互作用、相互連接所決定。通過單元之間的大量連接模擬大腦的非局限性。聯(lián)想記憶是非局限性的典型例子。非常定性:人工神經(jīng)網(wǎng)絡(luò)具有自適應(yīng)、自組織、自學(xué)習(xí)能力。神經(jīng)網(wǎng)絡(luò)不但處理的信息可以有各種變化,而且在處理信息的同時(shí),非線性動(dòng)力系統(tǒng)本身也在不斷變化。經(jīng)常采用迭代過程描寫動(dòng)力系統(tǒng)的演化過程。非凸性:一個(gè)系統(tǒng)的演化方向,在一定條件下將取決于某個(gè)特定的狀態(tài)函數(shù)。例如能量函數(shù),它的極值相應(yīng)于系統(tǒng)比較穩(wěn)定的狀態(tài)。非凸性是指這種函數(shù)有多個(gè)極值,故系統(tǒng)具有多個(gè)較穩(wěn)定的平衡態(tài),這將導(dǎo)致系統(tǒng)演化的多樣性。2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層卷積運(yùn)算的含義是卷積核(卷積窗口)在輸入圖像數(shù)據(jù)上滑動(dòng),在相應(yīng)位置上進(jìn)行先乘后加的運(yùn)算。以下圖為例,中間為卷積核,在輸入圖像上進(jìn)行滑動(dòng),當(dāng)滑動(dòng)到當(dāng)前位置時(shí),其卷積運(yùn)算操作是對(duì)卷積核所覆蓋像素進(jìn)行權(quán)值和對(duì)應(yīng)位置處像素的乘加:

神經(jīng)元簡化2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層一般情況下,卷積核在幾個(gè)維度上滑動(dòng),就是幾維卷積,如下圖所示。準(zhǔn)確地說,是1個(gè)卷積核在1個(gè)圖像數(shù)據(jù)上進(jìn)行幾維滑動(dòng),就是幾維卷積。從左至右分別為一維卷積、二維卷積、三維卷積2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層以PyTorch為例#torch.nn.Conv2d()#功能:對(duì)多個(gè)二維信號(hào)進(jìn)行二維卷積torch.nn.Conv2d(in_channels,

out_channels,

kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True,

padding_mode='zeros')2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層以下面代碼為例#導(dǎo)入深度學(xué)習(xí)框架torch包importtorch#導(dǎo)入包含操作算子的nn包fromtorchimportnn#為了使每次生成的隨機(jī)矩陣input元素值均一樣,設(shè)定一個(gè)隨機(jī)種子7torch.manual_seed(7)#設(shè)定一個(gè)卷積操作,其卷積核為2*2的矩形區(qū)域,縱向移動(dòng)步長為1,橫向移動(dòng)步長為1,向下取整,外圍補(bǔ)1圈零,空洞卷積參數(shù)為2c=nn.Conv2d(1,2,(2,2),stride=1,padding=1,bias=False,dilation=2,padding_mode="zeros")#自定義卷積窗口中每個(gè)值均為0.3c.weight.data=torch.ones([2,1,2,2])*0.3#隨機(jī)生成一個(gè)張量,張量的形狀為1*1*3*3,每個(gè)元素取值范圍為[1,10)input=torch.randint(1,10,(1,1,3,3))#轉(zhuǎn)換為float類型input=input.float()#打印輸入print(input)#進(jìn)行卷積操作output=c(input)#打印輸出Print(output)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層填充padding:有、無填充padding對(duì)卷積運(yùn)算輸出特征圖的影響,填充大多數(shù)情況是為了保持輸入輸出圖像尺寸保持不變??斩淳矸edilation:卷積窗口(卷積核)內(nèi)的值代表權(quán)值,dilation不為1時(shí)權(quán)值之間需有間隔,權(quán)值間的“空洞”由“0”填補(bǔ)。這樣的卷積核常用于圖像分割任務(wù),主要目的在于提高感知野。通道數(shù)個(gè)數(shù)out_channel即為卷積核的個(gè)數(shù)。padding的作用空洞卷積的作用2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層如下圖所示,每個(gè)黑塊部分即為卷積核依次掃過的區(qū)域,以第一個(gè)區(qū)域?yàn)槔?,輸出?.7=0*0.3+0*0+0*0.3+0*0+5*0+9*0+0*0.3+2*0+9*0.3。stride=1,卷積核每次平移一格,依次類推,輸出最終結(jié)果。卷積操作得到新張量2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層需要說明的是我們?cè)诖颂幋a中將bias設(shè)置為False,其目的是為了演示時(shí)更簡單易懂。默認(rèn)情況該值為True,會(huì)造成外圍補(bǔ)零后值為非0的情況,因?yàn)榻Y(jié)果需要加上偏置,如右圖所示,我們看到的結(jié)果并非整數(shù),而是帶有小數(shù)。添加偏置后造成輸出帶有偏置項(xiàng)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層分組卷積設(shè)置groups:常用于模型的輕量化。下圖是Alexnet模型結(jié)構(gòu),可以看出,第一次卷積,模型將輸入圖像數(shù)據(jù)分成了上下兩組,然后分別進(jìn)行后續(xù)的池化、卷積操作。在特征提取環(huán)節(jié),上下兩組信號(hào)是完全沒有任何聯(lián)系的。直到達(dá)到全連接層,才將上、下兩組融合起來。這里,第一次的卷積分組設(shè)置可通過groups達(dá)到。Alexnet模型結(jié)構(gòu)

2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層池化(Pooling)是在不同的通道上分開執(zhí)行的,然后根據(jù)窗口大小進(jìn)行相應(yīng)的操作,即池化操作既不改變通道數(shù)也不需要參數(shù)控制。池化操作類型一般有最大池化、平均池化等。池化主要作用有以下幾個(gè):降維。壓縮特征,去除冗余信息,降低網(wǎng)絡(luò)復(fù)雜度,減小計(jì)算量、減少內(nèi)存消耗。實(shí)現(xiàn)了特征的非線性表達(dá)。擴(kuò)大感知野。實(shí)現(xiàn)了特征的平移不變性、旋轉(zhuǎn)不變性和尺度不變性等。2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層最大池化層:最大池化(MaxPooling)操作的含義是選取圖像指定區(qū)域中最大的值作為結(jié)果輸出,以PyTorch為例,調(diào)用模塊nn中的MaxPool2d()可以實(shí)現(xiàn)構(gòu)建最大池化層的操作。#torch.nn.MaxPool2d()#功能:?對(duì)由多個(gè)輸入平面組成的輸入信號(hào)應(yīng)用最大池化。?torch.nn.MaxPool2d(kernel_size,stride=None,padding=0,dilation=1,return_indices=False,ceil_mode=False)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層以下面代碼為例:#導(dǎo)入深度學(xué)習(xí)框架torch包importtorch#為了使每次生成的隨機(jī)矩陣input元素值均一樣,設(shè)定一個(gè)隨機(jī)種子7torch.manual_seed(7)#設(shè)定一個(gè)最大池化操作,該操作的池化窗口為3*2的矩形區(qū)域,縱向移動(dòng)步長為2,橫向移動(dòng)步長為1,向上取整,同時(shí)輸出一個(gè)對(duì)應(yīng)最大值序號(hào)的張量m=torch.nn.MaxPool2d((3,2),stride=(2,1),return_indices=True,ceil_mode=True)#生成一個(gè)隨機(jī)整數(shù)張量,張量的形狀(shape)為2*3*4*4,張量中每個(gè)值的大小范圍[1,10)。input=torch.randint(1,10,(2,3,4,4))#將張量中的值類型從int型轉(zhuǎn)換為float型input=input.float()#進(jìn)行池化,生成池化后的張量output=m(input)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層下圖顯示的是以其中一張圖的一個(gè)通道進(jìn)行最大池化操作的示意圖。黑色區(qū)域部分即為我們所說的池化窗口,看子圖從①到⑥,可發(fā)現(xiàn)池化窗口按照先寬(橫向移動(dòng))后高(縱向移動(dòng))的方式尋取每個(gè)區(qū)域的最大值。橫向步長為1,橫向每次移動(dòng)一格,即一個(gè)像素??v向步長為2,即移動(dòng)兩個(gè)像素位置。由于沒有給出padding的參數(shù),所以不補(bǔ)零。由于開啟了向上取整,所以④到⑥的過程中池化區(qū)域雖然不滿6個(gè)元素,但依然采用剩下的4個(gè)元素為一組進(jìn)行最大池化操作。每個(gè)池化區(qū)域的最大值組成了一個(gè)新的張量。這便是第一個(gè)通道的輸出結(jié)果。最大池化層操作視圖2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層在代碼中我們選擇同時(shí)輸出所在區(qū)域最大值的序號(hào),如下圖所示,PyTorch張量中值的序號(hào)從0開始,第一個(gè)池化窗口中最大值9在整個(gè)張量中的序號(hào)也為“9”,第二個(gè)池化窗口中最大值9在張量中的序號(hào)為“6”,第二個(gè)池化窗口有兩個(gè)“9”,由此可見,PyTorch輸出的是區(qū)域中最大值出現(xiàn)時(shí)的第一個(gè)序號(hào)。輸出所在區(qū)域最大值的序號(hào)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層平均池化層:平均池化(AveragePooling)操作的含義是計(jì)算圖像區(qū)域的平均值作為該區(qū)域池化后的值。以PyTorch為例,調(diào)用模塊nn中的AvgPool2d()實(shí)現(xiàn)構(gòu)建平均池化層的操作。#torch.nn.AvgPool2d()#功能:對(duì)由多個(gè)輸入平面組成的輸入信號(hào)應(yīng)用平均池化。torch.nn.AvgPool2d(kernel_size,stride=None,padding=0,ceil_mode=False,count_include_pad=True,divisor_override=None)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層count_include_pad是指在計(jì)算平均值時(shí),是否把填充值考慮在內(nèi)。如下圖所示,對(duì)實(shí)線區(qū)域高、寬分別補(bǔ)一圈零后平均池化,在不開啟count_include_pad時(shí),黑色塊區(qū)域的池化結(jié)果為1/1=1;在開啟count_include_pad時(shí),黑色塊區(qū)域的池化結(jié)果為1/4=0.25。divisor_override是計(jì)算平均值作為分母的值,默認(rèn)不給出的情況下是除以區(qū)域像素的個(gè)數(shù),給出的情況下就是無視像素個(gè)數(shù)。如下圖所示,對(duì)實(shí)線區(qū)域進(jìn)行高、寬分別補(bǔ)一圈零后平均池化且count_include_pad=True,在不開啟divisor_override時(shí),平均池化結(jié)果為1/4=0.25,開啟時(shí),指定分母為3,平均池化結(jié)果為1/3=0.33。參數(shù)count_include_pad作用參數(shù)divisor_override作用2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層以下面代碼為例:importtorchtorch.manual_seed(7)#設(shè)定一個(gè)平均池化操作,該操作的池化窗口為2*2的矩形區(qū)域,縱向移動(dòng)步長為2,橫向移動(dòng)步長為2,向下取整,不采用除數(shù)因子m=torch.nn.AvgPool2d((2,2),stride=(2,2),padding=(1,1),divisor_override=None)#生成一個(gè)隨機(jī)整數(shù)張量,張量的形狀(shape)為1*1*3*3,張量中每個(gè)值的大小范圍[1,10)input=torch.randint(1,10,(1,1,3,3))#將張量中的值類型從int型轉(zhuǎn)換為float型input=input.float()#進(jìn)行平均池化output=m(input)#打印張量操作前后結(jié)果print(input,output)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層下圖顯示的是3*3張量高、寬補(bǔ)零為1后平均池化操作過程,黑色區(qū)域部分為平均池化窗口,池化窗口按照先寬(橫向移動(dòng))后高(縱向移動(dòng))的方式計(jì)算每個(gè)區(qū)域的平均值。由于采用默認(rèn)的池化窗口向下取整的方式,張量最下面的全零行就不再進(jìn)行平均池化計(jì)算。所以最終輸出的為2*2的張量。平均池化層操作視圖2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.3批量標(biāo)準(zhǔn)層批標(biāo)準(zhǔn)化層(BatchNormalization,BN)操作的含義是對(duì)數(shù)據(jù)進(jìn)行歸一化處理,該層計(jì)算了每個(gè)batch(批次)的均值和方差,并將其拉回到均值為0、方差為1的標(biāo)準(zhǔn)正態(tài)分布。計(jì)算公式如下:

上式中,x為需要?dú)w一化的輸入數(shù)據(jù),E[x]和Var[x]為輸入數(shù)據(jù)的均值和方差,ε為防止分母出現(xiàn)零所增加的變量,γ和β是對(duì)輸入值進(jìn)行仿射操作,即線性變換。γ和β的默認(rèn)值分別為1和0,仿射包含了不進(jìn)行仿射的結(jié)果,使得引入BN至少不降低模型擬合效果,γ和β可以作為模型的學(xué)習(xí)參數(shù)。2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.3批量標(biāo)準(zhǔn)層批標(biāo)準(zhǔn)化層的作用有以下幾個(gè):減輕了模型對(duì)參數(shù)初始化的依賴;加快了模型訓(xùn)練速度,并可以使用更大的學(xué)習(xí)率;一定程度上增加了模型的泛化能力。以PyTorch代碼為例#torch.nn.BatchNorm2d()#功能:將張量的輸出值拉回到均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布torch.nn.BatchNorm2d(num_features,eps=1e-05,momentum=0.1,affine=True,track_running_stats=True,device=None,dtype=None)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.3批量標(biāo)準(zhǔn)層以下面代碼為例importtorchfromtorchimportnntorch.manual_seed(7)bn=nn.BatchNorm2d(2,affine=False)input=torch.randint(1,10,(2,2,3,3))input=input.float()print(input)output

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論