前言
「人工智慧」(Artificial Intelligence,簡稱AI)一詞在很久以前就有了,被大眾津津樂道卻是近幾年的事,這和機器學習(Machine Learning)、深度學習(Deep Learning)等技術的崛起具有千絲萬縷的聯繫,而這一切又得益於大數據的發展和電腦處理效能的不斷提升。
本書將帶領讀者了解人工智慧的相關技術和發展近況,透過一些實例來掌握必備的技能,並能夠獨立使用相關技術完成對電腦視覺問題的分析和處理。本書各個章節的重點如下。
第1 章主要介紹人工智慧、神經網路和電腦視覺的發展歷史,讓讀者對這一領域有一個全面的認識。
第2 章主要介紹在了解和掌握後面章節的內容時需要用到的數學知識,以及在實戰操作的過程中進行環境架設及安裝相關軟體的方法。本書中數學相關的大部分知識都集中在本章中,主要目的是讓讀者先對這個領域的知識產生興趣,這樣才能更進一步地深入學習和研究。在本章中不會插入大量的數學公式,避免讓初學者望而卻步,在不斷消化公式的過程中喪失學習興趣和動力。透過不斷實戰來學習,可以累積成就感,這種由上向下的方式不失為一種更好的學習方法。
第3 章主要介紹在學習神經網路過程中會經常遇到的一些概念和定義。例如反向傳播(Back Propagation)、啟動函數(Activation Function)、監督學習(Supervised Learning)、無監督學習(Unsupervised Learning),等等,這也是為之後學習深度神經網路做準備。在架設一個完整的深度神經網路模型時,就需要不斷地用到本章的內容了。
第4 章主要介紹深度神經網路中的旋積神經網路(Convolutional Neural Network,簡稱CNN)。首先介紹旋積層、全連接層、池化層等相關內容,之後又列舉目前主流的一些旋積神經網路架構,並比較它們之間的相同點和不同點,以便於掌握不同的旋積神經網路的結構和技術細節。
第5 章主要介紹Python 程式語言的相關知識,目的是讓讀者掌握Python 語言的語法定義和使用方式,並使用Python 語言進行功能程式的撰寫;還會介紹在處理電腦視覺問題時需要用到的兩個重要的Python 套件:NumPy 和Matplotlib。本章內容豐富,而且Python 語言本身就很簡單且易上手,讀者很快就能掌握Python 這門程式語言。
第6 章主要介紹如何使用PyTorch 深度學習架構。PyTorch 非常簡單好用,能夠根據我們的需求快速架設出我們想要的深度神經網路模型,這要歸功於PyTorch 以動態圖型計算為基礎的特性,它與以靜態圖型計算為基礎的深度學習架構相比,有更多的優勢,例如PyTorch 不僅速度快,還有許多功能強大的套件可供呼叫。本章先介紹PyTorch 中常用的套件和類別的使用方法;然後介紹如何使用PyTorch中的一些自動化方法來提升程式的執行效率和簡潔度;最後會透過一個綜合實例,使用本章的內容解決一個實際的電腦視覺問題。
第7 章一開始就是一個關於電腦視覺問題的實作,介紹了一種非常實用的深度神經網路重複使用方法,即遷移學習(Transfer Learning)。在掌握遷移學習的原理之後,會基於PyTorch 對遷移學習進行實戰,並解決比之前更複雜的電腦視覺問題。對實戰程式的解析會貫穿本章,讓讀者更深刻地了解程式。
第8 章說明如何基於PyTorch 實戰影像風格移轉(Neural Style)。透過對本章的學習,讀者會發現,利用旋積神經網路不僅能處理圖片分類問題,只要有想法和創意,還能做更多、更有趣的事情。
第9 章介紹一種多模型融合方法,在現有的模型遭遇效能提升瓶頸時,可透過架設一種經過科學融合的新模型達到超過預期的泛化能力。本章會基於PyTorch對多模型融合方法進行實戰。
第10 章介紹一種區別於旋積神經網路的新神經網路結構, 即循環神經網路(Recurrent Neural Network,簡稱RNN)。不同於旋積神經網路強大的影像特徵分析能力,循環神經網路主要用於處理有序輸入的資料。為了方便讀者了解模型如何對有序數據進行處理,本章會基於PyTorch 使用循環神經網路來處理一個電腦視覺問題。
第 11 章說明自動編碼器,它是一種使用非監督學習方法的神經網路。自動編碼器能夠實現很多功能,本章會選取一個影像去噪問題來進行自動編碼器實作。
本書前6 章的內容可作為後5 章的準備,前6 章的知識偏向基礎和理論, 只有掌握了這些內容,才能從容應對後5 章的實作。這個循序漸進的過程會讓讀者對知識的了解更深刻,技能提升更迅速。
人工智慧在近幾年大熱,網路上的相關資料良莠不齊且沒有系統,即使有優秀的參考資料,對基礎薄弱的初學者來說也有點難。本書即是出於對這一現狀的考慮,透過從基礎到實戰、由淺入深的過程,讓讀者基於PyTorch 來使用深度學習方法實際解決一些電腦視覺相關的問題,這樣,讀者在取得知識的過程中會更有成就感,學起來也會更積極、主動。
感謝家人的鼓勵和支援,也感謝張國霞編輯的幫助和付出,筆者才能以更好的方式將本書呈現在讀者的面前。希望讀者能遵從敏捷學習的想法,多實作、多思考並不斷進步。在本書中會有很多實例,讀者可以舉一反三、不斷實作,在發現問題時要多思考,畢竟本書內容有限,若想讓能力獲得更高層次的提升,則需要取得更多的資料來充實自己。
唐進民