第1章 PyTorch與深度學習
深度學習的應用
- 接近人類水平的圖像分類
- 接近人類水平的語音識別
- 機器翻譯
- 自動駕駛汽車
- Siri、Google語音和Alexa在最近幾年更加准確
- 日本農民的黃瓜智能分揀
- 肺癌檢測
- 准確度高於人類的語言翻譯
- 讀懂圖片中的圖像含義
現今深度學習應用中最受歡迎的技術和出現的時間點
技術 | 年份 |
---|---|
神經網絡 | 1943 |
反向傳播 | 20世紀60年代初期 |
卷積神經網絡 | 1979 |
循環神經網絡 | 1980 |
長短期記憶網絡 | 1997 |
深度學習過去的叫法
20世紀70年代叫控制論(cybernetics),20世紀80年代稱之為聯結主義(connectionism),現在稱為深度學習或者神經網絡
深度學習現在流行起來的原因
- 硬件可用性
- 數據和算法
- 深度學習框架
硬件可用性
圖形處理單元(Graphic Processing Unit,GPU)在完成數百萬甚至數十億的參數上的大規模數學運算(如矩陣乘法)時可以搞出幾個數量級。
GPU內存,NVIDIA的1080ti大概有11GB的內存,價格在700美元左右
各種雲服務,如AWS,Google Cloud,Floyd(這家公司提供轉為深度學習優化的GPU機器)
數據和算法
文本、圖片、視頻和音頻數據
在計算機視覺領域,ImageNet競賽在提供1000種類別中的140萬圖片的數據集方面發揮了巨大作用
過去比賽中一些成功的算法有VGG、ResNet、Inception、DenseNet,現在這些算法已在行業中得到應用,用於解決各種計算機視覺問題
其他一些流行的數據集:
- MNIST
- COCO數據集
- CIFAR
- The Street View House Numbers
- PASCAL VOC
- Wikipedia dump
- 20 Newsgroups
- Penn Treebank
- Kaggle
各種不同算法的發展:
批規一化、激活函數、跳躍式連接(skip connection)、長短期記憶網絡(LSTM)、dropout等
深度學習框架
早期,需要具備C++和CUDA的專業知識來實現深度學習算法
現在,隨着深度學習框架的開源,只需具備腳本語言知識(如Python)即可
行業中流行的深度學習框架有:TensorFlow、Caffe2、Keras、Theano、PyTorch、Chainer、DyNet、MXNet和CNTK
PyTorch以及其他大多數深度學習框架,主要用於兩個方面:
- 用GPU加速過的運算替代與NumPy類似的運算;
- 構建深度神經網絡
PyTorch易用簡單,不同於其他大多數流行的使用靜態計算圖的深度學習礦機,PyTorch使用動態計算,因此在構建復雜架構時可以有更高的靈活性。
PyTorch大量使用了Python概念,例如類、結構和條件循環,允許用戶以純面向對象的方式構建深度學習算法。
由於PyTorch最初主要為研究目的而構建,因此不建議用於哪些對延遲要求非常高的生產環境。然而,隨着名為Open Neural NetWork Exchange(ONNX)的新項目的出現,這種情況正在發生改變,該項目重點是將在PyTorch上開發的模型部署到適用於生產的Caffe2這樣的平台上。該項目得到了Facebook和微軟的支持。