




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1緒論PREFACEChapter01本章目錄人工智能01機器學習02深度學習03常用語言和深度學習框架041.1人工智能1.1.1什么是人工智能百度百科對人工智能的描述是:它是研究、開發用于模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。人工智能是新一輪科技革命和產業變革的重要驅動力量。人工智能是智能學科重要的組成部分,它企圖了解智能的實質,并生產出一種新的能以人類智能相似的方式做出反應的智能機器。該領域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。人工智能從誕生以來,理論和技術日益成熟,應用領域也不斷擴大。可以設想,未來人工智能帶來的科技產品,將會是人類智慧的“容器”。人工智能是對人的意識、思維的信息過程的模擬。人工智能不是人的智能,但能像人那樣思考、也可能超過人的智能。維基百科對人工智能的描述是:它是機器或軟件的智能,而不是人類或動物的智能。它屬于計算機科學中開發和研究智能機器的研究領域。“AI”也可以指機器本身。人工智能技術被廣泛應用于工業、政府和科學領域。一些備受矚目的應用程序包括:高級網絡搜索引擎(如Google)、推薦系統(YouTube、亞馬遜和Netflix使用)、理解人類語音(如Siri和Alexa)、自動駕駛汽車(如Waymo)、生成或創意工具(ChatGPT和AI藝術),以及在策略游戲(如國際象棋和圍棋)中進行最高級別的競爭。1.1人工智能1.1.1什么是人工智能大英百科全書對人工智能的描述是:它是指數字計算機或計算機控制的機器人執行通常與智能生物相關的任務的能力。該術語經常用于開發具有人類智力過程特征的系統的項目,例如推理、發現意義、概括或從過去的經驗中學習的能力。自20世紀40年代數字計算機發展以來,已經證明計算機可以被編程來執行非常復雜的任務,例如發現數學定理的證明或下棋。盡管計算機處理速度和內存容量不斷進步,但目前還沒有任何程序能夠在更廣泛的領域或需要大量日常知識的任務中與人類的靈活性相匹配。另一方面,一些程序在執行某些特定任務時已經達到了人類專家和專業人員的性能水平,因此在醫學診斷、計算機搜索引擎、語音或手寫識別以及聊天機器人等各種應用中都可以找到這種有限意義上的人工智能。1.1人工智能1.1.2人工智能的發展歷史追溯歷史,人類對人工智能的研究始于古代的哲學家和數學家對機械或“形式”推理的研究,其中對邏輯理論的研究工作直接啟發了艾倫·圖靈(AlanTuring)的計算理論。該理論認為:機器通過打亂“0”和“1”這樣簡單的符號,可以模擬數學推導和形式推理。隨著計算理論、控制論和信息論的提出,研究人員開始考慮建立“電子大腦”的可能性。第一篇后來被認為是“人工智能”的論文是1943年麥卡魯奇(McCullouch)和皮茨(Pitts)所設計的圖靈完整(Turing-complete)的“人工神經元”。人工智能發展的現代歷程可以分為三個階段,每一個階段都帶來了重要的理論與技術突破。第一階段(1940-1980年代):符號主義第二階段(1990-2000年代):連接主義第三階段(21世紀初-至今):深度學習1.1人工智能1.1.2人工智能的發展歷史第一階段(1940-1980年代):符號主義主要事件如下1936年艾倫·圖靈提出了圖靈機的概念:它是一種理論構想,幫助我們理解和研究計算的本質。它也提供了思考和解決各種計算和智能問題的基礎,對計算機和人工智能的發展產生了深遠影響。1950年艾倫·圖靈提出了“圖靈測試”的概念:該測試可以評估一臺計算機是否能夠表現出與人類智能相媲美的行為。該測試的目的是探討計算機是否能夠模擬人類的思維過程和行為。圖靈測試因此成為衡量人工智能研究的重要標準之一。1956年8月,在美國漢諾斯小鎮寧靜的達特茅斯學院中,約翰·麥卡錫(JohnMcCarthy)、馬文·閔斯基(MarvinMinsky)、克勞德·香農(ClaudeShannon)、艾倫·紐厄爾(AllenNewell)、赫伯特·西蒙(HerbertSimon)等科學家正聚在一起,討論著一個完全不食人間煙火的主題:用機器來模仿人類學習以及其他方面的智能。會議足足開了兩個月的時間,雖然大家沒有達成普遍的共識,但是卻為會議討論的內容起了一個名字:人工智能。因此,1956年也就成為了人工智能元年。1.1人工智能1.1.2人工智能的發展歷史第一階段(1940-1980年代):符號主義1958年弗蘭克·羅森布拉特(FrankRosenblatt)和羅伯特·鮑姆(RobertBaum)提出了“感知器”模型,這是一個簡單的神經網絡模型。這個模型具有輸入和輸出層,并通過調整權重來學習并對輸入數據進行分類,為連接主義奠定了基礎。1958年約翰·麥卡錫創造了人工智能程序設計語言LISP,是第一個專門為人工智能開發設計的語言,其靈活性和表達能力使其在后續研究中廣泛使用。1966年約瑟夫·維森鮑姆(JosephWeizenbaum)開發了ELIZA聊天機器人,是早期人工智能和自然語言處理領域的里程碑產品。它基于模式匹配和簡單的轉換規則,模擬了一個心理咨詢師的對話過程,可以與用戶進行基于文本的交互。雖然ELIZA并沒有真正的理解或意識,但它能夠以一種似乎具有智能的方式與用戶進行會話。盡管ELIZA的原理相對簡單,但它展示了如何利用專家知識和推理規則來模擬人類對話的能力,為后來的聊天機器人和自然語言處理技術的發展奠定了基礎,并在人工智能研究中具有重要的歷史意義。1.1人工智能1.1.2人工智能的發展歷史第一階段(1940-1980年代):符號主義1976年研發的醫療診斷系統MYCIN,專門用于對細菌感染進行診斷和治療建議。它是第一個在臨床醫學中大規模應用的專家系統,向世人證明了專家系統在復雜領域中的潛力和價值。1980年數字設備公司(DigitalEquipmentCorporation)開發的專家系統XCON,用于配置和定制計算機系統。它在企業級應用中取得了顯著的成功,并推動了專家系統的商業應用。1982年出現的一款推理引擎R1,具有規則解釋、規則執行和規則維護等功能。R1的設計和實現,為后來的專家系統開發工具提供了范例和基礎。1983年研發的PROSPECTOR專家系統,專門用于礦產勘探和資源評估的專家系統。它使用地質數據和領域專家知識,能夠預測礦藏的位置和價值。1.1人工智能1.1.2人工智能的發展歷史第二階段(1990-2000年代):連接主義連接主義階段的主要特征:神經網絡:是一種基于生物神經元相互連接的學習模型,它通過訓練和調整神經元之間的連接權重來模擬信息處理過程。分布式并行處理:通過多個神經元或神經網絡同時工作來加速機器學習和決策過程。這種分布式并行處理方式有助于處理大量數據和復雜的問題。學習和自適應:神經網絡通過反向傳播等算法進行訓練,自動調整連接權重以優化模型的性能。這種學習機制使得連接主義AI能夠從大量數據中自動提取特征和規律,從而通過訓練和學習來提高系統的性能和適應性。非線性模型:與傳統的符號推理方法相比,連接主義更傾向于使用非線性模型。神經網絡可以通過堆疊多層神經元來實現復雜的非線性映射,從而提高對于真實世界問題的建模能力。1.1人工智能1.1.2人工智能的發展歷史第二階段(1990-2000年代):連接主義主要代表性的事件有:1986年大衛·鮑斯等人提出了“反向傳播”(Backpropagation)算法,它是連接主義中實現神經網絡訓練和學習的核心算法。這個算法能夠有效地計算誤差和調整神經網絡中的連接權重,使得神經網絡能夠逐漸優化其性能。1989年AndrewNg等人在卡內基梅隆大學開展了“ALVINN”(AutonomousLandVehicleinaNeuralNetwork)項目。該項目使用神經網絡來訓練自動駕駛汽車,并成功地實現了道路的識別和轉向控制,標志著連接主義在實際應用中的突破。1.1人工智能1.1.2人工智能的發展歷史第三階段(21世紀初-至今):深度學習這一階段主要是以深度學習方法為基礎,試圖通過利用大規模數據和強大的計算能力,從而實現更為先進的人工智能。這一階段的人工智能特點和特征主要包括以下幾個方面:深度學習:使用多層次的神經網絡結構進行特征提取和表示學習。通過大規模數據的訓練,深度學習模型能夠自動發現數據中的模式和規律,并實現更復雜的任務和功能。大規模數據:深度學習方法的成功離不開大規模數據的支持。通過海量的數據訓練深度神經網絡,可以提高模型的性能和泛化能力。大規模數據的可用性和存儲技術的進步,為深度學習的發展提供了重要的基礎。強大的計算能力:深度學習方法需要大量的計算資源來進行訓練和推理。隨著計算機硬件的發展和云計算的普及,人們能夠利用分布式計算和高性能計算平臺來加速深度學習的訓練過程,從而實現更快速和精確的模型訓練。多模態學習:深度學習方法不僅可以處理傳統的結構化數據,還可以處理多模態數據,如圖像、音頻和文本等。通過多模態學習,可以將不同類型的數據進行融合和關聯,從而實現更全面和深入的理解和分析。1.1人工智能1.1.2人工智能的發展歷史第三階段(21世紀初-至今):深度學習這一階段的代表性事件包括:2012年谷歌團隊的AlexKrizhevsky等參與了ImageNet大規模視覺識別挑戰賽,利用深度卷積神經網絡(CNN)在圖像分類任務上取得革命性突破,引領了深度學習的發展潮流。2016年DeepMind的AlphaGo在圍棋比賽中擊敗了世界頂級選手李世石,引發了對人工智能在復雜決策游戲中的能力和潛力的廣泛關注。2017年Google機器學習團隊提出了一種名為“AttentionisAllYouNeed”的論文,提出了自注意力機制的概念,即一種基于自注意力機制(self-attentionmechanism)的神經網絡模型,其在自然語言處理領域取得了顯著的成果,被廣泛應用于機器翻譯、文本摘要、問答系統等任務中。自此,GoogleTransformer逐漸成為自然語言處理領域的重要研究方向,后續提出的BERT、GPT大模型均是基于Transformer模型,這些模型在各種自然語言處理任務上都取得了非常好的效果。1.1人工智能1.1.2人工智能的發展歷史第三階段(21世紀初-至今):深度學習2022年11月OpenAI推出了人工智能聊天機器人程序ChatGPT,其以文字方式交互,可以用人類自然對話方式進行交互,還可以用于復雜的語言工作,包括自動生成文本、自動問答、自動摘要、代碼編輯和調試等多種任務。ChatGPT的出現,標志著人工智能聊天機器人技術的重大進展,為人們提供了更加便捷、高效的獲取信息和解決問題的方式。2023年3月OpenAI推出GPT-4人工智能多模態大模型,其是GPT-3的升級版,通過增加更多的訓練數據、改進訓練算法和調整模型結構等方式,進一步提升了模型的表現力和應用能力。與GPT-3相比,GPT-4具有更高的語言理解能力、更好的文本生成能力、更強的語言交互能力、更廣泛的應用場景。GPT-4不僅支持更長的上下文、更高的精度和泛化能力,同時還支持多模態,如語音識別和圖像理解等等。1.1人工智能1.1.2人工智能的發展歷史第三階段(21世紀初-至今):深度學習2023年3月百度正式發布了AI大模型文心一言。基于百度智能云技術構建的大模型,文心一言被廣泛集成到百度的所有業務中。并且推出了文心NLP大模型、文心CV大模型、文心跨模態大模型、文心生物計算大模型、文心行業大模型。且提供了多樣化的大模型API服務,可通過零代碼調用大模型能力,自由探索大模型技術如何滿足用戶需求。2023年5月科大訊飛正式發布了星火認知大模型,其具有7大核心能力,即文本生成、語言理解、知識問答、邏輯推理、數學能力、代碼能力、多模態能力。1.1人工智能1.1.3人工智能、機器學習、深度學習的關系為了賦予計算機以人類的理解能力與邏輯思維,誕生了人工智能這一學科。在實現人工智能的眾多算法中,機器學習是發展較為快速的一支。機器學習的思想是讓機器自動地從大量的數據中學習出規律,并利用該規律對未知的數據做出預測。在機器學習的算法中,深度學習是特指利用深度神經網絡的結構完成訓練和預測的算法。三者的關系如圖所示。機器學習是實現人工智能的途徑之一,而深度學習則是機器學習的算法之一。如果把人工智能比喻成人類的大腦,機器學習則是人類通過大量數據來認知學習的過程,而深度學習則是學習過程中非常高效的一種算法。人工智能、機器學習、深度學習的關系(圖片來自于網絡)1.2機器學習1.2.1基本概念百度百科對人工智能的描述是:機器學習(MachineLearning)是一門多學科交叉專業,涵蓋概率論知識,統計學知識,近似理論知識和復雜算法知識,使用計算機作為工具并致力于真實實時的模擬人類學習方式,并將現有內容進行知識結構劃分來有效提高學習效率。機器學習有下面幾種定義:機器學習是一門人工智能的科學,該領域的主要研究對象是人工智能,特別是如何在經驗學習中改善具體算法的性能。機器學習是對能通過經驗自動改進的計算機算法的研究。機器學習是用數據或以往的經驗,以此優化計算機程序的性能標準。機器學習目的是讓計算機模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷完善自身的性能。簡單來講,機器學習就是人們通過提供大量的相關數據來訓練機器。1.2機器學習1.2.1基本概念作為人工智能的一個研究領域,機器學習主要研究以下三方面問題:學習機理:這是對人類學習機制的研究,即人類獲取知識、技能和抽象概念的天賦能力。這一研究將從根本上解決機器學習中的問題。學習方法:研究人類的學習過程,探索各種可能的學習方法,建立起獨立于具體應用領域的學習算法。機器學習方法的構造是在對生物學習機理進行簡化的基礎上,用計算的方法進行再現。學習系統:根據特定任務的要求,建立相應的學習系統。1.2機器學習1.2.2分類及常見算法按照學習形式的不同可以將機器學習算法分為監督學習、非監督學習和強化學習算法。(1)監督學習(SupervisedLearning)在監督學習中,要求用于訓練算法的訓練集必須包含明確的標識或結果。在建立預測模型的時候,監督式學習建立一個學習過程,將預測結果與“訓練數據”的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。監督式學習的常見應用場景如分類問題和回歸問題。常見算法有邏輯回歸(LogisticRegression)和BP神經網絡(BackPropagationNeuralNetwork)。(2)非監督學習(UnsupervisedLearning)在非監督式學習中,數據并不被特別標識,學習模型是為了推斷出數據的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見算法包括Apriori算法以及k-Means算法。(3)強化學習(ReinforcementLearning)在強化學習中,輸入數據直接反饋到模型,模型必須對此立刻做出調整。常見的應用場景包括動態系統以及機器人控制等。常見算法包括Q-Learning以及時間差學習(TemporalDifferenceLearning)。在自動駕駛、視頻質量評估、機器人等領域強化學習算法非常流行。1.2機器學習1.2.2分類及常見算法按照任務目標的不同可以將機器學習算法分為回歸算法、分類算法和聚類算法。(1)回歸算法諸事有因,回歸(Regression)算法通過建立變量之間的回歸模型,通過學習(訓練)過程得到變量與因變量之間的相關關系。回歸分析可以用于預測模型或分類模型。常見的回歸算法包括:線性回歸(LinearRegression)、非線性回歸(Non-linearRegression)、邏輯回歸(LogisticRegression)、多項式回歸(PolynomialRegression)、嶺回歸(RidgeRegression)、套索回歸(LassoRegression)和彈性網絡回歸(ElasticNetRegression)。其中線性回歸、非線性回歸和邏輯回歸最為常用。(2)分類算法機器學習分為監督學習、無監督學習和半監督學習(強化學習)。無監督學習最常應用的場景是聚類(Clustering)和降維(DimensionReduction)。分類算法和回歸算法都屬于監督學習算法,其中分類算法的目標就是:學習數據集的數據特征,并將原始數據特征映射到目標的分類類別。分類算法包括:邏輯回歸(LogisticRegression,LR)、K最近鄰(k-NearestNeighbor,KNN)、樸素貝葉斯模型(NaiveBayesianModel,NBM)、隱馬爾科夫模型(HiddenMarkovModel)、支持向量機(SupportVectorMachine)、決策樹(DecisionTree)、神經網絡(NeuralNetwork)和集成學習(Ada-Boost)。1.2機器學習1.2.2分類及常見算法(3)聚類算法機器學習分為監督學習、無監督學習和半監督學習。無監督學習從無標簽的數據集中挖掘和發現數據的數理規律。有監督學習從有標簽的數據集中挖掘和發現數據的數理規律。最終機器學習從數據集中得到的模型具有相當的泛化能力,能夠處理新的數據輸入,并做出合理的預測。有監督學習和無監督學習的最大區別在于數據是否有標簽。無監督學習最常應用的場景是聚類和降維。聚類算法包括:K均值聚類(K-Means)、層次聚類(HierarchicalClustering)和混合高斯模型(GaussianMixtureModel)。降維算法包括:主成因分析(PrincipalComponentAnalysis)和線性判別分析(LinearDiscriminantAnalysis)。1.2機器學習1.2.2分類及常見算法按照學習策略的不同可以將機器學習算法分為演繹學習、歸納學習和類比學習等。(1)演繹學習(LearningbyDeduction)學生所用的推理形式為演繹推理。推理從公理出發,經過邏輯變換推導出結論。這種推理是“保真”變換和特化(Specialization)的過程,使學生在推理過程中可以獲取有用的知識。這種學習方法包含宏操作(Macro-Operation)學習、知識編輯和組塊(Chunking)技術。演繹推理的逆過程是歸納推理。(2)歸納學習(LearningfromInduction)歸納學習是由教師或環境提供某概念的一些實例或反例,讓學生通過歸納推理得出該概念的一般描述。這種學習的推理工作量遠多于示教學習和演繹學習,因為環境并不提供一般性概念描述(如公理)。從某種程度上說,歸納學習的推理量也比類比學習大,因為沒有一個類似的概念可以作為“源概念”加以取用。歸納學習是最基本的、發展也較為成熟的學習方法,在人工智能領域已經得到廣泛的研究和應用。(3)類比學習(LearningbyAnalogy)利用兩個不同領域(源域、目標域)中的知識相似性,可以通過類比,從源域的知識(包括相似的特征和其它性質)推導出目標域的相應知識,從而實現學習。類比學習系統可以使一個已有的計算機應用系統轉變為適應于新的領域,來完成原先沒有設計的相類似的功能。1.3深度學習1.3.1深度學習簡介百度百科對人工智能的描述是:深度學習是機器學習領域中一個新的研究方向,它被引入機器學習使其更接近于最初的目標——人工智能。近年來,深度學習在各種應用領域取得了巨大成功。機器學習已應用于大多數傳統領域,同時也為許多新領域帶來新機會。基于不同類別的學習,人們提出了不同的方法,包括有監督、半監督和無監督學習。實驗結果表明,在圖像處理、計算機視覺、語音識別、機器翻譯等領域,與傳統的機器學習方法相比,深度學習具有先進的性能。深度學習是學習樣本數據的內在規律和表示層次,這些學習過程中獲得的信息對諸如文字、圖像和聲音等數據的解釋有很大的幫助。它的最終目標是讓機器能夠像人一樣具有分析學習能力,能夠識別文字、圖像和聲音等數據。深度學習是機器學習的一個極其重要的分支,而機器學習是人工智能的一個分支。深度學習的研究從近十年才迎來大幅度的發展。深度學習的概念源于人工神經網絡的研究,但是并不完全等于傳統神經網絡。不過在叫法上,很多深度學習算法中都會包含“神經網絡”這個詞,比如:卷積神經網絡、循環神經網絡等。所以,深度學習可以說是在傳統神經網絡基礎上的升級,約等于神經網絡。1.3深度學習1.3.2深度學習應用計算機視覺方面:(1)目標檢測目標檢測(ObjectDetection)是當前計算機視覺和機器學習領域的研究熱點之一,核心任務是篩選出給定圖像中所有感興趣的目標,確定其位置和大小。其中難點便是遮擋、光照、姿態等造成的像素級誤差,這是目標檢測所要挑戰和避免的問題。現如今深度學習中一般通過搭建DNN提取目標特征,利用ROI映射和IOU確定閾值以及區域建議網絡RPN統一坐標回歸損失和二分類損失來聯合訓練。(2)語義分割語義分割(SemanticSegmentation)旨在將圖像中的物體作為可解釋的語義類別,該類別將是DNN學習的特征聚類得到。和目標檢測一樣,在深度學習中需要IOU作為評價指標評估設計的語義分割網絡。值得注意的是,語義類別對應于不同的顏色,生成的結果需要和原始的標注圖像相比較,較為一致才能算是一個可分辨不同語義信息的網絡。1.3深度學習1.3.2深度學習應用(3)超分辨率重建超分辨率重建(SuperResolutionConstruction)的主要任務是通過軟件和硬件的方法,從觀測到的低分辨率圖像重建出高分辨率圖像,這樣的技術在醫療影像和視頻編碼通信中十分重要。該領域一般分為單圖像超分和視頻超分,一般在視頻序列中通過該技術解決丟幀,幀圖像模糊等問題,而在單圖像在中主要為了提升細節和質感。在深度學習中一般采用殘差形式網絡學習雙二次或雙三次下采樣帶來的精度損失,以提升大圖細節。對于視頻超分一般采用光流或者運動補償來解決丟幀圖像的重建任務。(4)行人重識別行人重識別(PersonRe-identification)也稱行人再識別,是利用計算機視覺技術判斷圖像或者視頻序列中是否存在特定行人的技術。其廣泛被認為是一個圖像檢索的子問題。核心任務是給定一個監控行人圖像,檢索跨設備下的該行人圖像。現如今一般人臉識別和該技術進行聯合,用于在人臉識別的輔助以及人臉識別失效(人臉模糊,人臉被遮擋)時發揮作用。在深度學習中一般通過全局和局部特征提取以及度量學習對多組行人圖片進行分類和身份查詢。1.3深度學習1.3.2深度學習應用語音識別方面:語音識別(SpeechRecognization)是一門交叉學科,近十幾年進步顯著。它需要用到數字信號處理、模式識別、概率論等理論知識,深度學習的發展也使其有了很大幅度的效果提升。深度學習中將聲音轉化為比特的目的類似于在計算機視覺中處理圖像數據一樣,轉換為特征向量,與圖像處理不太一樣的是需要對波(聲音的形式)進行采樣,采樣的方式,采樣點的個數和坐標也是關鍵信息。然后對這些數字信息進行處理,輸入到網絡中進行訓練,得到一個可以進行語音識別的模型。語音識別的難點有很多,例如克服發音音節相似度高進行精準識別,實時語音轉寫等,這就需要很多不同人樣本的聲音作為數據集來讓深度網絡具有更強的泛化性,以及需要設計的網絡本身的復雜程度是否得當等條件。語音助手(圖片來自于網絡)例如,圖1-2是百度的語音助手。百度采用國際領先的流式端到端語音語言一體化建模算法,將語音快速準確識別為文字,支持手機應用語音交互、語音內容分析、機器人對話等多個場景。1.3深度學習1.3.2深度學習應用自然語言處理方面:自然語言處理(NLP)是計算機科學和人工智能領域的方向之一,研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。深度學習由于其非線性的復雜結構,將低維稠密且連續的向量表示為不同粒度的語言單元,例如詞、短語、句子和文章,讓計算機可以理解通過網絡模型參與編織的語言,進而使得人類和計算機進行溝通。此外深度學習領域中研究人員使用循環、卷積、遞歸等神經網絡模型對不同的語言單元向量進行組合,獲得更大語言單元的表示。不同的向量空間擁有的組合越復雜,計算機越是能處理更加難以理解的語義信息。將人類的文本作為輸入,本身就具有挑戰性,因此得到的自然語言計算機如何處理就更難上加難,而這也是NLP不斷探索的領域。通過深度學習,人們已經在AI領域向前邁出一大步,相信人與機器溝通中“信、達、雅”這三個方面終將實現。1.3深度學習1.3.2深度學習應用例如,ChatGPT是一種由OpenAI開發的人工智能語言模型,如圖1-3所示,它具有強大的自然語言處理能力。它可以理解人類語言輸入,并以準確、流暢的方式生成回應。它的學習基礎涵蓋了廣泛的主題,可以進行對話、回答問題、提供建議、講故事,甚至能夠模仿不同風格的寫作。ChatGPT在虛擬對話中扮演著一個智能伙伴的角色,能夠與用戶進行有意義的交流,為用戶提供信息、娛樂和幫助。無論是進行日常聊天、獲取知識,還是探索創造性的想法,ChatGPT都可以成為一個有用的工具和伙伴。ChatGPT(圖片來自于網絡)1.4常用語言和深度學習框架1.4.1Python語言為什么選擇Python?做深度學習,最重要的是驗證想法,需要在短期內跑出多次實驗結果。其中的難點在于快速出結果,靜態語言固然省內存,性能好,但修改起來確實不如Python容易,畢竟Python上手門檻很低,十行頂“百行”。Python的深度學習框架多且維護頻繁,方便我們快速入手。大部分深度學習框架對于CPU密集型的功能都做了優化,Python的深度學習框架可以看作是各種API的接口而已,真正用起來不見得會慢的讓人難以忍受。況且在性能沒有落下很多的情況下,Python根本不需要考慮垃圾回收,內存泄露的情況。Python是膠水語言可以結合C++,使得寫出來的代碼可以達到C++的效率。一項人工智能的工程可能涉及到多個環節,而如果選擇使用Python,它可以提供一條龍服務。1.4常用語言和深度學習框架1.4.1Python語言Python語言簡介Python語言由荷蘭數學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設計,Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平臺上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨立的、大型項目的開發。Python解釋器易于擴展,可以使用C語言或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。Python也可用于可定制化軟件中的擴展程序語言。Python豐富的標準庫,提供了適用于各個主要系統平臺的源碼或機器碼。由于Python語言的簡潔性、易讀性以及可擴展性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經采用Python來教授程序設計課程。在2018年3月,該語言作者在郵件列表上宣布Python2.7將于2020年1月1日終止支持。所以本書除了在Caffe環境搭建時采用Python2.7版本(因為Caffe框架與Python3在兼容性上有問題),其余部分基本采用的是Python3.6以上版本。關于Python語言的學習,讀者可自行搜索,本書在編程語言的入門使用上不再做詳細介紹。1.4常用語言和深度學習框架1.4.2深度學習框架為什么要用深度學習框架?深度學習框架(DeepLearningFramework)是指一種能夠支持人工神經網絡進行搭建、訓練、調試和部署的軟件平臺。它通過提供高效的算法實現、方便的數據處理工具、數據可視化和調試工具等方式,簡化了深度學習任務的實現過程,讓深度學習應用變得更加容易和高效。也就是說,深度學習框架為深度學習提供了一種快捷、可重復和可擴展的開發環境,幫助研究者和工程師們更快地研究和開發出復雜的深度學習模型。如果已經掌握了深度學習的核心算法,當然可以從頭開始實現自己的神經網絡模型。但是如果需要實現更復雜的模型,如卷積神經網絡(CNN)或循環神經網絡(RNN)時,就會發現從頭開始實現復雜模型是不切實際的,因此深度學習框架應運而生,它可以輕松實現自己的神經網絡。深度學習框架可以更輕松地構建、訓練、測試和部署深度學習模型。使用框架可以使開發人員專注于模型設計和實現,減少了手動編寫底層代碼的工作量。此外,框架往往具有一系列已經實現的算法和模型架構,可以幫助開發人員更快地實現模型并進行實驗。另外,框架還可以提供分布式訓練、自動求導、GPU加速等功能,這些功能可以加速訓練速度、縮短模型的設計和實現時間、加快模型迭代的速度。并且,它不需要手寫CUDA代碼就能跑GPU。最后,它還容易構建大的計算圖(ComputationalGraphs)。總之,使用深度學習框架可以極大地提高深度學習應用的開發效率和模型的準確率。1.4常用語言和深度學習框架1.4.2深度學習框架常用的深度學習框架(1)PyTorch框架PyTorch是以Torch框架為底層開發的,其用Python重寫了很多內容。使得框架不僅更加靈活,支持動態圖,而且提供了Python接口。它是由Torch7團隊開發,是一個以Python優先的深度學習框架,不僅能夠實現強大的GPU加速,同時還支持動態神經網絡,這是很多主流深度學習框架比如TensorFlow等都不支持的。PyTorch既可以看作加入了GPU支持的NumPy(一種非常有名的Python開源數值計算擴展庫),同時也可以看成一個擁有自動求導功能的強大的深度神經網絡。除了Facebook外,它已經被Twitter、CMU和Salesforce等機構采用。(2)TensorFlow框架TensorFlow是一款由Google以C++語言開發的開源數學計算軟件,使用數據流圖(DataFlowGraph)的形式進行計算。圖中的節點代表數學運算,而圖中的線條表示多維數據數組(Tensor)之間的交互。TensorFlow最初是由研究人員和GoogleBrain團隊針對機器學習和深度神經網絡進行研究而開發,開源之后幾乎可以在各個領域適用。由于是大公司Google出品,致使TensorFlow迅速成為全世界使用人數最多的框架,社區的活躍度極高,維護與更新比較頻繁。1.4常用語言和深度學習框架1.4.2深度學習框架(3)Caffe框架Caffe由加州大學伯克利的Phd賈揚清開發,全稱是ConvolutionalArchitectureforFastFeatureEmbedding,是一個清晰而高效的開源深度學習框架,由伯克利視覺中心(BerkeleyVisionandLearningCenter,BVLC)進行維護。(4)其他框架Keras框架:類似接口而非框架,容易上手,研究人員可以在TensorFlow中看到Keras的一些實現,很多初始化方法TensorFlow都可以直接使用Keras函數接口直接調用實現。然而缺點就在于封裝過重,不夠輕盈,許多代碼的bug可能無法顯而易見。Caffe2框架:繼承了Caffe的優點,速度更快,然而還是編譯困難,研究人員少,值得一提的是已經并入了PyTorch,因此我們可以在新版本的PyTorch中體會到它的存在。MXNet框架:支持語言眾多,例如C++,Python,MATLAB,R等,同樣可以在集群、移動設備、GPU上部署。MXNet集成了Gluon接口,就如同Torchvision對于PyTorch那樣,而且支持靜態圖和動態圖。然而由于推廣力度不夠使其并沒有像PyTorch和TensorFlow那樣受關注,不過其分布式支持卻是非常閃耀的一點。課后習題1)人工智能是什么?2)什么是機器學習?3)什么是深度學習?4)簡述機器學習的分類?5)深度學習有哪些方面的應用?2神經網絡基礎NEURALNETWORKFUNDAMENTALSChapter02本章目錄生物神經網絡和神經元模型01人工神經網絡02卷積神經網絡032.1生物神經網絡和神經元模型人工神經網絡是深度學習的重要基礎,人工神經網絡是以人腦神經網絡為原型設計出來的。人類的大腦皮層包含大約1011個神經元。每個神經元通過突觸與大約103個其他神經元連接,如圖所示,形成一個高度復雜和靈活的動態網絡。基于這種想法,1943年,神經生理學和控制論科學家McCulloch和計算神經學科學家Pitts參考了人類神經元的結構,發表了抽象的神經元模型——MP模型(McCulloch-Pittsmodel)。大腦神經突觸2.1生物神經網絡和神經元模型神經元模型是一個包含輸入,輸出與計算功能的模型。輸入可以類比為神經元的樹突,而輸出可以類比為神經元的軸突,計算則可以類比為細胞核。下圖是一個典型的神經元模型:包含有3個輸入,1個輸出,以及2個計算功能。*代表進行乘法運算,+代表進行加法運算。無符號的則代表進行普通連接,即值傳遞。用a來表示輸入,用w來表示權值。前半部分的有向箭頭可以這樣理解:在初端,傳遞的信號大小仍然是a,端中間有權重參數w,經過這個權重參數后的信號會變成a*w,因此在連接的末端,信號的大小就變成了a*w。神經元模型計算公式為:
2.1生物神經網絡和神經元模型對神經元模型進行一些擴展,如右圖所示。首先將sum函數與sgn函數合并到一個計算模塊內,代表神經元的內部計算。其次,輸出z變為多個,以便作為下一層神經元的輸入。最后說明,一個神經元可以引出多個代表輸出的有向箭頭,但值都是一樣的。神經元可以看作一個計算與存儲單元。計算是神經元對其的輸入進行計算功能。存儲是神經元會暫存計算結果,并傳遞到下一層。當我們用“神經元”組成網絡來描述網絡中的某個“神經元”時,我們更多地會用“單元”(unit)來指代。同時由于神經網絡的表現形式是一個有向圖,有時也會用“節點”(node)來表達同樣的意思。神經元簡化2.2人工神經網絡人工神經網絡是為模擬人腦神經網絡而設計的一種計算模型,它從結構、實現機理和功能上模擬人腦神經網絡。人工神經網絡與生物神經元類似,由多個節點(人工神經元)互相連接而成,可以用來對數據之間的復雜關系進行建模,不同節點之間的連接被賦予了不同的權重,每個權重代表了一個節點對另一個節點的影響大小。每個節點代表一種特定函數,來自其他節點的信息經過其相應的權重綜合計算,輸入到一個激活函數中并得到一個新的活性值(興奮或抑制)。從系統觀點看,人工神經元網絡是由大量神經元通過極其豐富和完善的連接而構成的自適應非線性動態系統。早期的神經網絡模型并不具備學習能力。首個可學習的人工神經網絡是赫布網絡,采用的是一種基于赫布規則的無監督學習方法。感知器是最早的具有機器學習思想的神經網絡,但其學習方法無法擴展到多層的神經網絡上。直到1980年左右,反向傳播算法才有效地解決了多層神經網絡的學習問題,并成為最為流行的神經網絡學習算法。20世紀80年代中期,DavidRunelhart、GeoffreyHinton和RonaldW-llians、DavidParker等人分別獨立發現了誤差反向傳播算法(ErrorBackPropagationTraining),簡稱BP,系統解決了多層神經網絡隱含層連接權的學習問題,并在數學上給出了完整推導。人們把采用這種算法進行誤差校正的多層前饋網絡稱為BP網。2.2人工神經網絡
BP神經網絡具有任意復雜的模式分類能力和優良的多維函數映射能力,解決了簡單感知器不能解決的異或(ExclusiveOR,XOR)和一些其他問題。從結構上講,BP網絡具有輸入層、隱藏層和輸出層;從本質上講,BP算法就是以網絡誤差平方為目標函數,采用梯度下降法來計算目標函數的最小值。人工神經網絡誕生之初并不是用來解決機器學習問題。由于人工神經網絡可以用作一個通用的函數逼近器(一個兩層的神經網絡可以逼近任意的函數)。因此人工神經網絡可以看作是一個可學習的函數,并將其應用到機器學習中。理論上,只要有足夠的訓練數據和神經元數量,人工神經網絡就可以學到很多復雜的函數。我們可以把一個人工神經網絡塑造復雜函數的能力稱為網絡容量(NetworkCapacity),這與可以被儲存在網絡中的信息的復雜度以及數量相關。人工神經網絡的未來和發展(圖片來自于網絡)2.2人工神經網絡人工神經網絡具有如下四個基本特征:非線性:非線性關系是自然界的普遍特性。大腦的智慧就是一種非線性現象。人工神經元處于激活或抑制二種不同的狀態,這種行為在數學上表現為一種非線性關系。具有閾值的神經元構成的網絡具有更好的性能,可以提高容錯性和存儲容量。非局限性:一個神經網絡通常由多個神經元廣泛連接而成。一個系統的整體行為不僅取決于單個神經元的特征,而且可能主要由單元之間的相互作用、相互連接所決定。通過單元之間的大量連接模擬大腦的非局限性。聯想記憶是非局限性的典型例子。非常定性:人工神經網絡具有自適應、自組織、自學習能力。神經網絡不但處理的信息可以有各種變化,而且在處理信息的同時,非線性動力系統本身也在不斷變化。經常采用迭代過程描寫動力系統的演化過程。非凸性:一個系統的演化方向,在一定條件下將取決于某個特定的狀態函數。例如能量函數,它的極值相應于系統比較穩定的狀態。非凸性是指這種函數有多個極值,故系統具有多個較穩定的平衡態,這將導致系統演化的多樣性。2.3卷積神經網絡2.3.1卷積層卷積運算的含義是卷積核(卷積窗口)在輸入圖像數據上滑動,在相應位置上進行先乘后加的運算。以下圖為例,中間為卷積核,在輸入圖像上進行滑動,當滑動到當前位置時,其卷積運算操作是對卷積核所覆蓋像素進行權值和對應位置處像素的乘加:
神經元簡化2.3卷積神經網絡2.3.1卷積層一般情況下,卷積核在幾個維度上滑動,就是幾維卷積,如下圖所示。準確地說,是1個卷積核在1個圖像數據上進行幾維滑動,就是幾維卷積。從左至右分別為一維卷積、二維卷積、三維卷積2.3卷積神經網絡2.3.1卷積層以PyTorch為例#torch.nn.Conv2d()#功能:對多個二維信號進行二維卷積torch.nn.Conv2d(in_channels,
out_channels,
kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True,
padding_mode='zeros')2.3卷積神經網絡2.3.1卷積層以下面代碼為例#導入深度學習框架torch包importtorch#導入包含操作算子的nn包fromtorchimportnn#為了使每次生成的隨機矩陣input元素值均一樣,設定一個隨機種子7torch.manual_seed(7)#設定一個卷積操作,其卷積核為2*2的矩形區域,縱向移動步長為1,橫向移動步長為1,向下取整,外圍補1圈零,空洞卷積參數為2c=nn.Conv2d(1,2,(2,2),stride=1,padding=1,bias=False,dilation=2,padding_mode="zeros")#自定義卷積窗口中每個值均為0.3c.weight.data=torch.ones([2,1,2,2])*0.3#隨機生成一個張量,張量的形狀為1*1*3*3,每個元素取值范圍為[1,10)input=torch.randint(1,10,(1,1,3,3))#轉換為float類型input=input.float()#打印輸入print(input)#進行卷積操作output=c(input)#打印輸出Print(output)2.3卷積神經網絡2.3.1卷積層填充padding:有、無填充padding對卷積運算輸出特征圖的影響,填充大多數情況是為了保持輸入輸出圖像尺寸保持不變。空洞卷積dilation:卷積窗口(卷積核)內的值代表權值,dilation不為1時權值之間需有間隔,權值間的“空洞”由“0”填補。這樣的卷積核常用于圖像分割任務,主要目的在于提高感知野。通道數個數out_channel即為卷積核的個數。padding的作用空洞卷積的作用2.3卷積神經網絡2.3.1卷積層如下圖所示,每個黑塊部分即為卷積核依次掃過的區域,以第一個區域為例,輸出值2.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,卷積核每次平移一格,依次類推,輸出最終結果。卷積操作得到新張量2.3卷積神經網絡2.3.1卷積層需要說明的是我們在此處代碼中將bias設置為False,其目的是為了演示時更簡單易懂。默認情況該值為True,會造成外圍補零后值為非0的情況,因為結果需要加上偏置,如右圖所示,我們看到的結果并非整數,而是帶有小數。添加偏置后造成輸出帶有偏置項2.3卷積神經網絡2.3.1卷積層分組卷積設置groups:常用于模型的輕量化。下圖是Alexnet模型結構,可以看出,第一次卷積,模型將輸入圖像數據分成了上下兩組,然后分別進行后續的池化、卷積操作。在特征提取環節,上下兩組信號是完全沒有任何聯系的。直到達到全連接層,才將上、下兩組融合起來。這里,第一次的卷積分組設置可通過groups達到。Alexnet模型結構
2.3卷積神經網絡2.3.2池化層池化(Pooling)是在不同的通道上分開執行的,然后根據窗口大小進行相應的操作,即池化操作既不改變通道數也不需要參數控制。池化操作類型一般有最大池化、平均池化等。池化主要作用有以下幾個:降維。壓縮特征,去除冗余信息,降低網絡復雜度,減小計算量、減少內存消耗。實現了特征的非線性表達。擴大感知野。實現了特征的平移不變性、旋轉不變性和尺度不變性等。2.3卷積神經網絡2.3.2池化層最大池化層:最大池化(MaxPooling)操作的含義是選取圖像指定區域中最大的值作為結果輸出,以PyTorch為例,調用模塊nn中的MaxPool2d()可以實現構建最大池化層的操作。#torch.nn.MaxPool2d()#功能:?對由多個輸入平面組成的輸入信號應用最大池化。?torch.nn.MaxPool2d(kernel_size,stride=None,padding=0,dilation=1,return_indices=False,ceil_mode=False)2.3卷積神經網絡2.3.2池化層以下面代碼為例:#導入深度學習框架torch包importtorch#為了使每次生成的隨機矩陣input元素值均一樣,設定一個隨機種子7torch.manual_seed(7)#設定一個最大池化操作,該操作的池化窗口為3*2的矩形區域,縱向移動步長為2,橫向移動步長為1,向上取整,同時輸出一個對應最大值序號的張量m=torch.nn.MaxPool2d((3,2),stride=(2,1),return_indices=True,ceil_mode=True)#生成一個隨機整數張量,張量的形狀(shape)為2*3*4*4,張量中每個值的大小范圍[1,10)。input=torch.randint(1,10,(2,3,4,4))#將張量中的值類型從int型轉換為float型input=input.float()#進行池化,生成池化后的張量output=m(input)2.3卷積神經網絡2.3.2池化層下圖顯示的是以其中一張圖的一個通道進行最大池化操作的示意圖。黑色區域部分即為我們所說的池化窗口,看子圖從①到⑥,可發現池化窗口按照先寬(橫向移動)后高(縱向移動)的方式尋取每個區域的最大值。橫向步長為1,橫向每次移動一格,即一個像素。縱向步長為2,即移動兩個像素位置。由于沒有給出padding的參數,所以不補零。由于開啟了向上取整,所以④到⑥的過程中池化區域雖然不滿6個元素,但依然采用剩下的4個元素為一組進行最大池化操作。每個池化區域的最大值組成了一個新的張量。這便是第一個通道的輸出結果。最大池化層操作視圖2.3卷積神經網絡2.3.2池化層在代碼中我們選擇同時輸出所在區域最大值的序號,如下圖所示,PyTorch張量中值的序號從0開始,第一個池化窗口中最大值9在整個張量中的序號也為“9”,第二個池化窗口中最大值9在張量中的序號為“6”,第二個池化窗口有兩個“9”,由此可見,PyTorch輸出的是區域中最大值出現時的第一個序號。輸出所在區域最大值的序號2.3卷積神經網絡2.3.2池化層平均池化層:平均池化(AveragePooling)操作的含義是計算圖像區域的平均值作為該區域池化后的值。以PyTorch為例,調用模塊nn中的AvgPool2d()實現構建平均池化層的操作。#torch.nn.AvgPool2d()#功能:對由多個輸入平面組成的輸入信號應用平均池化。torch.nn.AvgPool2d(kernel_size,stride=None,padding=0,ceil_mode=False,count_include_pad=True,divisor_override=None)2.3卷積神經網絡2.3.2池化層count_include_pad是指在計算平均值時,是否把填充值考慮在內。如下圖所示,對實線區域高、寬分別補一圈零后平均池化,在不開啟count_include_pad時,黑色塊區域的池化結果為1/1=1;在開啟count_include_pad時,黑色塊區域的池化結果為1/4=0.25。divisor_override是計算平均值作為分母的值,默認不給出的情況下是除以區域像素的個數,給出的情況下就是無視像素個數。如下圖所示,對實線區域進行高、寬分別補一圈零后平均池化且count_include_pad=True,在不開啟divisor_override時,平均池化結果為1/4=0.25,開啟時,指定分母為3,平均池化結果為1/3=0.33。參數count_include_pad作用參數divisor_override作用2.3卷積神經網絡2.3.2池化層以下面代碼為例:importtorchtorch.manual_seed(7)#設定一個平均池化操作,該操作的池化窗口為2*2的矩形區域,縱向移動步長為2,橫向移動步長為2,向下取整,不采用除數因子m=torch.nn.AvgPool2d((2,2),stride=(2,2),padding=(1,1),divisor_override=None)#生成一個隨機整數張量,張量的形狀(shape)為1*1*3*3,張量中每個值的大小范圍[1,10)input=torch.randint(1,10,(1,1,3,3))#將張量中的值類型從int型轉換為float型input=input.float()#進行平均池化output=m(input)#打印張量操作前后結果print(input,output)2.3卷積神經網絡2.3.2池化層下圖顯示的是3*3張量高、寬補零為1后平均池化操作過程,黑色區域部分為平均池化窗口,池化窗口按照先寬(橫向移動)后高(縱向移動)的方式計算每個區域的平均值。由于采用默認的池化窗口向下取整的方式,張量最下面的全零行就不再進行平均池化計算。所以最終輸出的為2*2的張量。平均池化層操作視圖2.3卷積神經網絡2.3.3批量標準層批標準化層(BatchNormalization,BN)操作的含義是對數據進行歸一化處理,該層計算了每個batch(批次)的均值和方差,并將其拉回到均值為0、方差為1的標準正態分布。計算公式如下:
上式中,x為需要歸一化的輸入數據,E[x]和Var[x]為輸入數據的均值和方差,ε為防止分母出現零所增加的變量,γ和β是對輸入值進行仿射操作,即線性變換。γ和β的默認值分別為1和0,仿射包含了不進行仿射的結果,使得引入BN至少不降低模型擬合效果,γ和β可以作為模型的學習參數。2.3卷積神經網絡2.3.3批量標準層批標準化層的作用有以下幾個:減輕了模型對參數初始化的依賴;加快了模型訓練速度,并可以使用更大的學習率;一定程度上增加了模型的泛化能力。以PyTorch代碼為例#torch.nn.BatchNorm2d()#功能:將張量的輸出值拉回到均值為0,方差為1的標準正態分布torch.nn.BatchNorm2d(num_features,eps=1e-05,momentum=0.1,affine=True,track_running_stats=True,device=None,dtype=None)2.3卷積神經網絡2.3.3批量標準層以下面代碼為例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=bn(input)print(output)第一個通道經過BN層的操作2.3卷積神經網絡2.3.4激活層激活層是指激活函數層,其作用是對特征進行非線性變換,賦予多層神經網絡具有深度的意義。幾種常見的激活函數:
sigmoid激活函數表達式圖
ReLU激活函數表達式圖2.3卷積神經網絡2.3.5全連接層全連接層又稱為線性層(Linear),其中每個神經元與上一層所有神經元相連,實現對前一層的線性組合或線性變換,如下圖所示。全連接層2.3卷積神經網絡2.3.5全連接層以PyTorch為例importtorchinputs=torch.tensor([[1.,2,3]])linear_layer=nn.Linear(3,4)linear_layer.weight.data=torch.tensor([[1.,1.,1.],[2.,2.,2.],[3.,3.,3.],[4.,4.,4.]])linear_layer.bias.data.fill_(0.5)output=linear_layer(inputs)print(inputs,inputs.shape)print(linear_layer.weight.data,linear_layer.weight.data.shape)print(output,output.shape)最終輸出結果為tensor([[1.,2.,3.]])torch.Size([1,3])tensor([[1.,1.,1.],[2.,2.,2.],[3.,3.,3.],[4.,4.,4.]])torch.Size([4,3])tensor([[6.5000,12.5000,18.5000,24.5000]],grad_fn=<AddmmBackward>)torch.Size([1,4])2.3卷積神經網絡2.3.6訓練與反饋若干個卷積層、池化層、激活層、全連接層等結構組成了卷積神經網絡,組合卷積神經網絡的第一個卷積層的卷積核用來檢測低階特征,比如邊、角、曲線等。隨著卷積層的增加,對應卷積核檢測的特征就更加復雜(理性情況下,也是我們想要的情況)。比如第二個卷積層的輸入實際上是第一層的輸出(卷積核激活圖),這一層的卷積核便是用來檢測低價特征的組合等情況(半圓、四邊形等),如此累積,以檢測越來越復雜的特征。實際上,我們的人類大腦的視覺信息處理也遵循這樣的低階特征到高階特征的模式。最后一層的卷積核按照訓練CNN目的的不同,可能是在檢測到人臉、手寫字體等時候激活。所以,在相當程度上,構建卷積神經網絡的任務就在于構建這些卷積核。也就是,將這些卷積核變成這樣改變卷積核矩陣的值,也就是權重能識別特定的特征。這個過程叫做訓練。在訓練開始之時,卷積層的卷積核是完全隨機的,它們不會對任何特征激活(不能檢測任何特征)。這就像剛出生的孩子,TA不知道什么是人臉、什么是狗、什么是上下左右。TA需要學習才知道這些概念,也就是通過接觸人臉、狗、上下左右,并被告知這些東西分別是人臉、狗、上下左右。然后TA才能在頭腦中記住這些概念,并在之后的某一次見到之后能準確的給出結果。2.3卷積神經網絡2.3.6訓練與反饋把一個空白的卷積核,修改其權重以使它能檢測特定的模式,整個過程就如工程里面的反饋。想象一下,如果有一只無意識的猴子,完全隨機的修改一個5×5卷積核矩陣的25個值,那完全可能經過一定的輪次之后,這個卷積核能夠檢測棱角等特征。這是一種無反饋的訓練情況。對神經網絡的訓練當然不能如此,我們不可能靠運氣去做這件事情。反饋過程2.3卷積神經網絡2.3.6訓練與反饋假如要訓練一個用于分類的神經網絡,讓它能判定輸入圖像中的物體最可能是十個類別的哪一類。那么,訓練過程就是這樣的:第一次訓練,輸入一張圖像,這個圖像通過各層卷積處理輸出一組向量[1,1,1,1,1,1,1,1,1,1],也就是對于完全由隨機卷積核構建的網絡,其輸出認為這張圖等概率的是十個類別中的某一種。但是對于訓練,我們有一個真實標注(GoundTruth,GT),也就是這張圖中物體所屬的類別:[0,0,1,0,0,0,0,0,0,0],也就是屬于第三類。這時候我們可以定義一個損失函數,比如常見的MSE(MeanSquaredError)。我們假定L(Loss)是這個損失函數的輸出。這時候我們的目的就是,讓L反饋(即反向傳輸,BackPropagation)給整個卷積神經網絡,以修改各個卷積核的權重,使得損失值L最小。優化迭代Loss的下降往往是震蕩的這是一個典型的最優化問題。當然在工程上我們幾乎不可能一次就把卷積核的權重修改W到使L最小的情況,而是需要多次訓練和多次修改。如果情況理想的話,權重修改的方向是使得L的變化是收斂的。這也就是說很可能達到了我們訓練這個神經網絡的目的——讓各個卷積層的卷積核能夠組合起來最優化檢測特定的模式。課后習題1)深度學習的本質和目的是什么?2)激活層的作用是什么?3)批標準化層的作用是什么?4)空洞卷積和分組卷積的作用是什么?5)池化層的作用是什么?6)試分析卷積神經網絡中用1×1的卷積核的作用。7)如何提高卷積神經網絡的泛化能力?8)試分析增大BatchSize有何好處?3硬件部署與工具介紹IntroductiontoHardwareDeploymentandToolsChapter03學習目標硬件介紹01工具介紹02模型量化和推理03課后習題043.1硬件介紹
3.1.1主機AIBOX是一款為加速視頻AI(ArtificialIntelligence,人工智能)處理能力設計的硬件(如圖3-1所示),內置高能效NPU(Neural-networkProcessingUnits,嵌入式神經網絡處理器),適用于各類深度學習模型的加速推理。雙核Cortex-A35,最高頻率1.6GHz,峰值NPU算力高達3.0TOPs(TeraOperationsPerSecond,每秒鐘能處理的萬億次數,1TOPs代表處理器每秒鐘可進行一萬億次),支持OpenCL/OpenVX,支持INT8/INT16/FP16支持TensorFlow、Caffe、ONNX、Darknet模型。2GBDDR3內存,8GB高速eMMC4.51存儲器。AIBOX主機外觀圖3.1硬件介紹
3.1.2RK1808K芯片簡介AIBOX主要的模塊是瑞芯微公司出的RK1808K:CPU:雙核Cortex-A35,最高頻率1.6GHzNPC:3TOPsforINT8/300GOPsforINT16/100GFLOPsforFP16支持OpenCL/OpenVX支持INT8/INT16/FP16支持TensorFlow、Caffe、ONNX、Darknet模型存儲:800MHz32-bitLPDDR2/LPDDR3/DDR3/DDR3L/DDR4支持SerialSPINOR/NANDFlash,EMMC視頻處理器:1080p@60FPSH.264解碼1080p@30FPSH.264編碼3.1硬件介紹
3.1.2RK1808K芯片簡介圖像處理器:支持2MP,AE/AWB/AF視頻輸入:4-lane,MIPI-CSI,支持VirtualChannel支持BT.601/BT.656/BT.1120顯示:4-lane,MIPI-DSI,最大到1920*1080bitParallelRGBpanel,最大到1280*720其他接口:支持USB3.0/PCIe2.1內置2-ch&8-chI2S&8-chPDM,內置VAD支持千兆以太網8xUART/3xSPI/6xI2C/11xPWM/4xSARADC封裝:BGA14*14,FCCSP420LDRK1808系列BlockDiagram3.1硬件介紹
3.1.3接口1)線束接口攝像頭接口:3路AHD視頻,支持1080p、720p分辨率。以太網接口:2路Eth網絡接口,支持100Mbps傳輸速度。其中ETH1網線
接口用ssh訪問,用ssh訪問時需要一個航空轉網線的接口。
顯示屏接口:1路HDMI輸出。線束接口顯示屏及其接口2)USB接口:1路USB調試口,支持ADB調試。3)SD卡接口:1路SD卡接口,支持Fat、vFat、Ext2、
Ext3、Ext4文件系統。3.1硬件介紹
3.1.4電源連接1)電源24V供電
下圖是AIBox的電源線,電源線是改造之后的電源線,兩者都可使用。2)5VUSB供電,但USB供電帶不動AHD攝像頭,需要接AHD攝像頭使用時用
電源供電。3.2工具介紹
3.2.1MobaXtermMobaxterm是一款遠程管理工具,可以讓用戶在Windows操作系統中使用多個實用工具和遠程連接功能,它結合了許多其他的網絡工具,以幫助用戶輕松管理遠程計算機。這款軟件簡單易用,速度快,支持SSH、Telnet、SFTP、RDP和VNC等多種遠程協議,同時還支持MSWindows系統本地X11映射。在MobaXterm官網:/下載自己所需要的版本。MobaXterm提供了兩個版本,一個是HomeEdition(家庭版),另一個是ProfessionalEdition(專業版)。家庭版是免費的,而專業版需要購買。如果你只需要基本的連接功能,那么家庭版足以滿足需求。3.2工具介紹
3.2.1MobaXterm選擇右邊的家庭版安裝即可3.2工具介紹
3.2.1MobaXterm下載好Mobaxterm軟件后雙擊打開,點擊Session選項,如左圖所示。然后選擇ssh連接,輸入主機IP地址,用戶名,端口等信息,即可建立起連接,如右圖所示。MobaXterm設置ssh連接3.2工具介紹
3.2.1MobaXterm創建好session后,輸入密碼(輸入密碼時并不會顯示,只管輸入后按確定即可,第一次登陸成功后會提示保存密碼,一般選擇同意),就可以連接上虛擬機了。而且連上虛擬機之后,它會自動通過FTP也連接到虛擬機,直接拖拽就可以進行文件復制了。登陸后界面主要分兩塊,左邊的是主機的文件,右邊是終端,如圖所示。勾選左下角的“Followterminalfolder”可以讓兩個的工作路徑保持一致。終端界面介紹3.2工具介紹
3.2.1MobaXterm創建一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國數碼3c涂料行業需求分析及投資發展前景調研報告
- 傳熱學考試模擬題(附答案)
- 臨床診斷學考試模擬題含答案
- 2025年陜西省漢中市寧強縣中考一模語文試題(原卷版+解析版)
- 聚丙烯腈纖維單體合成考核試卷
- 自然災害的風險評估與防范考核試卷
- 橡膠材料性質與應用考核試卷
- 石墨在新能源儲存系統材料的選擇考核試卷
- 海洋石油鉆探的深海鉆探事故案例分析考核試卷
- 搬運設備負載能力分析考核試卷
- 氣管切開非機械通氣患者氣道護理團體標準課件
- 《空氣動力學與飛行原理》空氣動力學-課件
- 營業執照地址變更申請書
- 生物制藥無菌技術進展-深度研究
- 大米生產與食品安全
- 2025年中國氫氣傳感器行業市場深度分析及投資策略研究報告
- 2025年全球及中國依西美坦片行業頭部企業市場占有率及排名調研報告
- 某院護理人員對常用中醫護理技術知信行現狀研究【復制】
- 專題18-地質地貌形成過程(原卷版)
- 綜合管理部門車輛安全生產職責模版(2篇)
- 《西游記》講解學習
評論
0/150
提交評論