- 細說PyTorch深度學習:理論、算法、模型與編程實現
- 凌峰 丁麒文編著
- 4338字
- 2024-12-28 11:35:07
1.3 PyTorch
本節介紹PyTorch及其應用領域。
1.3.1 PyTorch簡介
PyTorch是一個基于Torch的Python開源機器學習庫,用于自然語言處理等應用程序。它主要由Facebook的人工智能小組開發,不僅能夠實現強大的GPU加速,同時還支持動態神經網絡,這一點是現在很多主流框架(如TensorFlow)都不支持的。
TensorFlow和Caffe都是命令式的編程語言,而且是靜態的,首先必須構建一個神經網絡,然后一次又一次使用相同的結構,如果想要改變網絡的結構,就必須從頭開始。但是對于PyTorch,通過反向求導技術,可以零延遲地任意改變神經網絡的行為,而且實現速度快。正是這一靈活性,是PyTorch對比TensorFlow的最大優勢。
另外,對比TensorFlow,PyTorch的代碼更加簡潔直觀,底層代碼也更容易看懂,這對于使用它的人來說理解底層肯定是一件令人激動的事。
PyTorch主要經歷了以下發展階段:
● 2017年1月正式發布PyTorch。
● 2018年4月更新0.4.0版,支持Windows系統,Caffe 2正式并入PyTorch。
● 2018年11月更新1.0穩定版,是GitHub增長第二快的開源項目。
● 2019年5月更新1.1.0版,支持TensorBoard,增強可視化功能。
● 2019年8月更新1.2.0版,更新torchvision、torchaudio和torchtext,增加了更多功能。
PyTorch具有以下優點:
● PyTorch是相當簡潔且高效快速的框架。
● 設計追求最少的封裝。
● 設計符合人類思維,它讓用戶盡可能地專注于實現自己的想法。
● 與Google的TensorFlow類似,FAIR的支持足以確保PyTorch獲得持續的開發更新。
● PyTorch作者親自維護的論壇供用戶交流和求教問題。
● 討論社區發達,學習材料豐富。
● 學術界和工業界廣泛使用,從而強者愈強。
● 入門簡單。
當然,現今任何一個深度學習框架都有其缺點,PyTorch也不例外,針對移動端、嵌入式部署以及高性能服務器端的部署其性能表現有待提升。
PyTorch現在已經從Meta“獨立”出來了。2022年9月,扎克伯格親自宣布,PyTorch基金會已新鮮成立,并歸入Linux基金會旗下、其管理委員會成員包括Meta、AMD、AWS、谷歌云、微軟和英偉達。
Meta表示:PyTorch成功背后的驅動力是開源社區充滿活力的持續增長,成立基金會將確保在今后的許多年中,社區成員以透明和公開的方式做出決定。
成立PyTorch基金會核心就是兩個字:中立。而其優先任務是確保PyTorch商業化和技術治理之間的相互獨立。
Linux基金會進一步對PyTorch“中立”的重要性進行了解釋:PyTorch最初由Meta的AI團隊孵化,現在已經發展成為一個由貢獻者和用戶組成的龐大社區。在AI/ML(人工智能/機器學習)領域,PyTorch恰如一把瑞士軍刀——AI/ML社區中的大量技術都是基于PyTorch構建的。
截至2022年8月,PyTorch已經和Linux內核、Kubernetes等并列成為世界上增長最快的5個開源社區之一。從2021年8月到2022年8月,PyTorch統計了超過65000次提交,有超過2400個貢獻者參與其中。對于這樣的關鍵技術基礎平臺而言,中立性和真正歸屬于社區的特性將加速其增長,并使之更加成熟。PyTorch基金會加入Linux基金會旗下使社區成員相信,PyTorch是可以永久依賴和信任的公共資源的一部分。
1.3.2 PyTorch的應用領域
PyTorch應用廣泛,無論是在軍事領域還是民用領域,都有PyTorch施展的機會,主要包括以下幾個方面。
1.數據分析與挖掘
數據挖掘和數據分析通常被相提并論,并在許多場合被認為是可以相互替代的術語。關于數據挖掘,已有多種文字不同但含義接近的定義,例如識別出巨量數據中有效的、新穎的、潛在有用的最終可理解的模式的非平凡過程,無論是數據分析還是數據挖掘,都是幫助人們收集、分析數據,使之成為信息,并做出判斷,因此可以將這兩項合稱為數據分析與挖掘。
數據分析與挖掘技術是機器學習算法和數據存取技術的結合,利用機器學習提供的統計分析、知識發現等手段分析海量數據,同時利用數據存取機制實現數據的高效讀寫。機器學習在數據分析與挖掘領域擁有不可取代的地位,2012年Hadoop進軍機器學習領域就是一個很好的例子。
2.模式識別
模式識別起源于工程領域,而機器學習起源于計算機科學,這兩個不同學科的結合帶來了模式識別領域的調整和發展。模式識別研究主要集中在兩個方面:
(1)研究生物體(包括人)是如何感知對象的,屬于認識科學的范疇。
(2)在給定的任務下,如何用計算機實現模式識別的理論和方法,這些是機器學習的長項,也是機器學習研究的內容之一。
模式識別的應用領域廣泛,包括計算機視覺、醫學圖像分析、光學文字識別、自然語言處理、語音識別、手寫識別、生物特征識別、文件分類、搜索引擎等,而這些領域正是機器學習大展身手的舞臺,因此模式識別與機器學習的關系越來越密切。
3.生物信息學
隨著基因組和其他測序項目的不斷發展,生物信息學研究的重點正逐步從積累數據轉移到如何解釋這些數據。機器學習的強大學習能力和推理能力已經被用在生物信息學。在未來,生物學的新發現將極大地依賴于在多個維度和不同尺度下對多樣化的數據進行組合和關聯的分析能力,而不再僅依賴于對傳統領域的繼續關注。
序列數據(Sequence Data)將與生物信息(包括結構和功能數據、基因表達數據、生化反應通路數據、表現型和臨床數據等一系列數據)相互集成。如此龐大的數據量,在生物信息的存儲、獲取、處理、瀏覽和可視化等方面,都對理論算法和軟件的發展提出了迫切的需求。
另外,由于基因組數據本身的復雜性,也對理論算法和軟件的發展提出了迫切的需求。而機器學習方法,如神經網絡、遺傳算法、決策樹和支持向量機等正適合處理這種數據量大、含有噪聲并且缺乏統一理論的領域。例如,目前有大量關于新冠肺炎的機器學習論文發表。
4.其他領域
國內外的IT巨頭正在深入研究和應用機器學習,這些巨頭把目標定位于全面模仿人類大腦,試圖創造出擁有人類智慧的機器大腦。另外,還有一些深入日常生活的具體應用。
(1)虛擬助手。顧名思義,當使用語音發出指令后,它們會協助查找信息。對于回答,虛擬助手會查找信息,回憶相關查詢,或向其他資源(如電話應用程序)發送命令以收集信息,甚至可以指導助手執行某些任務,例如設置7點的鬧鐘等。
(2)交通預測。生活中經常使用GPS導航服務,當這樣做時,當前的位置和速度被保存在中央服務器上進行流量管理,之后使用這些數據用于構建當前流量的映射。通過機器學習可以解決配備GPS的汽車數量較少的問題,在這種情況下,機器學習有助于根據估計找到擁擠的區域。
(3)過濾垃圾郵件和惡意軟件。電子郵件客戶端使用了許多垃圾郵件過濾方法,為了確保這些垃圾郵件過濾器能夠不斷更新,使用了機器學習技術。多層感知器和決策樹歸納等是由機器學習提供支持的一些垃圾郵件過濾技術,每天可檢測到超過400 000個惡意軟件,每個代碼與之前版本有90%~98%相似,由機器學習驅動的系統安全程序理解編碼模式。因此,可以輕松檢測到2%~10%變異的新惡意軟件,并提供針對它們的保護。
(4)快速揭示細胞內部結構。借由高功率顯微鏡和機器學習,科學家們可查看各種新冠肺炎病毒的變種,并使用機器學習方法模擬病毒變異和傳播的規律,為人類健康做出貢獻。
1.3.3 PyTorch的應用前景
值得一提的是,有統計數據顯示,現在NeurIPS、ICML等機器學習頂會中,有超過80%研究人員使用的都是PyTorch。
隨著DeepMind的AlphaGo在2016年戰勝了圍棋世界冠軍李世石,人工智能這個詞開始進入大眾的視野。從那時起,無論是大型互聯網公司還是初創企業都開始大規模招聘機器學習的相關從業者,無論是社招的求職者還是校招的應聘學生都出現了大規模的增長。
1.計算機視覺
計算機視覺(Computer Vision,CV)方向無論是在學校還是在公司,都有著大量的從業者,并且ImageNet項目可以提供上千萬的標注圖片供相關從業者使用。既然ImageNet是開源的數據集,那么無論是學校的教授還是學生,無論是大型互聯網公司還是初創企業,都可以輕易地獲取這些數據集,不僅可以進行CV算法的研究工作,還可以進行相關的工程實踐。
由于計算機視覺方向歷史悠久,計算機系、工程系甚至數學系都有著大量的老師和相應的學生從事該方向的研究工作,因此學校或者研究所對工業界輸出的計算機視覺人才數量也是可觀的。
2.自然語言處理
與計算機視覺相比,自然語言處理(Natural Language Processing,NLP)在自動駕駛的車機系統、自動翻譯系統、人工助手系統等領域都有廣闊的應用前景。
3.推薦系統
機器學習為客戶推薦引擎提供了動力,增強了客戶體驗,并能提供個性化體驗。在這種場景中,算法處理單個客戶的數據點,比如客戶過去的購買記錄、公司當前的庫存、其他客戶的購買歷史等,來確定適合向每個客戶推薦的產品和服務。
大型電子商務公司使用推薦引擎來增強個性化并加強購物體驗,這種機器學習應用程序的另一個常見應用是流媒體娛樂服務,它使用客戶的觀看歷史、具有類似興趣客戶的觀看歷史、有關個人節目的信息和其他數據點,向客戶提供個性化的推薦,在線視頻平臺則使用推薦引擎技術幫助用戶快速找到適合自己的視頻。
4.客戶流失評估
企業使用人工智能和機器學習可以預測客戶關系何時開始惡化,并找到解決辦法。通過這種方式,新型機器學習能幫助公司處理最古老的業務問題:客戶流失。
在這里,算法從大量的歷史、人數統計和銷售數據中找出規律,確定和理解為什么一家公司會失去客戶。然后,公司就可以利用機器學習能力來分析現有客戶的行為,以提醒業務人員哪些客戶面臨著將業務轉移到別處的風險,從而找出這些客戶離開的原因,然后決定公司應該采取什么措施留住客戶。
流失率對于任何企業來說都是一個關鍵的績效指標,對于訂閱型和服務型企業來說尤為重要,例如媒體公司、音樂和電影流媒體公司、軟件即服務公司以及電信公司等技術主要適用行業都面臨著高流失率的壓力。
5.欺詐檢測
機器學習理解模式的能力,以及立即發現模式之外異常情況的能力使它成為檢測欺詐活動的寶貴工具。事實上,金融機構多年來一直在這個領域使用機器學習。
它的工作原理是這樣的:數據科學家利用機器學習來了解單個客戶的典型行為,比如客戶在何時何地使用信用卡。機器學習可以利用這些信息以及其他數據集,在短短幾毫秒內準確判斷哪些交易屬于正常范圍,因此是合法的,而哪些交易超出了預期的規范標準,因此可能是欺詐的。機器學習在各行業中檢測欺詐的應用包括金融服務、旅行、游戲和零售等。
6.自動駕駛
自動駕駛軟件技術主要分為計算機視覺、行為預測以及路徑規劃。很多人誤以為,自動駕駛面臨最難攻克的技術在于計算機視覺,但實際上并非如此。過去數年里,隨著深度學習的廣泛應用,計算機視覺技術發展迅速,只要經過足夠的訓練和提供充足的數據,計算機視覺就可以探測大部分的情景。如今,自動駕駛面臨的難題主要集中在行為預測和路徑規劃方面。
如果回憶小時候是如何學會騎自行車的,會發現其實大人們并不會告訴孩子到底該怎么騎,主要還是靠自己探索,最終習慣了也就熟練了。
近年來,一些自動駕駛公司開始探索這一種方式,通過利用有限的人類提供的數據“主動學習”如何駕駛。這就需要將大量的機器學習運用于行為預測以及路徑規劃。例如特斯拉公司的L2自動駕駛系統、豐田公司的THS L2自動駕駛系統。
目前深度學習已經應用于人們日常生活的各個方面,如智能手機、購物網站、旅游網站、導航地圖、支付系統等,雖然有些人不知道這些領域已經應用了深度學習算法,但是深度學習確實已經深入老百姓的日常生活。學習基于PyTorch的深度學習技術必將有一個廣闊的就業前景。
- Learning Scala Programming
- Learning Python Web Penetration Testing
- Java EE 6 企業級應用開發教程
- INSTANT FreeMarker Starter
- Java 9 Programming Blueprints
- 新編Premiere Pro CC從入門到精通
- 信息安全技術
- Java持續交付
- PhoneGap:Beginner's Guide(Third Edition)
- R Data Analysis Cookbook(Second Edition)
- Python Essentials
- QGIS Python Programming Cookbook(Second Edition)
- Illustrator CC平面設計實戰從入門到精通(視頻自學全彩版)
- Mastering Elixir
- Visual Basic 程序設計實踐教程