【任務一】視頻學習心得及問題總結
根據下面三個視頻的學習內容,寫一個總結,最后列出沒有學明白的問題,
【任務二】代碼練習
在谷歌 Colab 上完成代碼練習中的 2.1、2.2、2.3、2.4 節,關鍵步驟截圖,并附一些自己的想法和解讀,
【任務三】進階練習
在谷歌 Colab 上完成貓狗大戰的VGG模型的遷移學習,關鍵步驟截圖,并附一些自己想法和解讀,
在該代碼的基礎上,下載AI研習社“貓狗大戰”比賽的測驗集,利用fine-tune的VGG模型進行測驗,按照比賽規定的格式輸出,上傳結果在線評測,將在線評測結果截圖,及實作代碼發在博客,同時,分析使用哪些技術可以進一步提高分類準確率,
1. 視頻學習
視頻學習包括兩章內容:
緒論
(下載地址:https://www.jianguoyun.com/p/DVJarjYQrKKIBhi8la0D)
- 從專家系統到機器學習
- 從傳統機器學習到深度學習
- 深度學習的能與不能
深度學習概述
(下載地址:https://www.jianguoyun.com/p/DVlvT3cQrKKIBhi_la0D)
- 淺層神經網路:生物神經元到單層感知器,多層感知器,反向傳播和梯度消失
- 神經網路到深度學習:逐層預訓練,自編碼器和受限玻爾茲曼機
pytorch 基礎
(下載地址:https://www.jianguoyun.com/p/DYkxgJcQrKKIBhi5lq0D)
所有視頻下載鏈接2020年7月25日自動過期,請抓緊時間下載,
【任務一解答】視頻學習心得及問題總結
視頻學習心得:
緒論
1.1緒論-人工智能和機器學習概述
(1)人工智能(Artificial Intelligence)
使一部機器像人一樣進行感知、認知、決策、執行的人工程式或系統,
(2)圖靈測驗
假設在一個封閉的空間里一個機器做了一個任務,在封閉空間之外有一個人,如果這個人判斷不了在封閉空間里的任務是由一個人還是一個機器完成的,那就說這個機器通過了圖靈測驗,
(3)人工智能的三個層面
計算智能(能存會算)
感知智能(能聽會說、能看會認)
認知智能(能理解,會思考)
(4)實作人工智能需要模仿人的智能方式,人的智能方式大概有兩種:邏輯演繹和歸納總結

(5)知識工程/專家系統
根據專家定義的知識和經驗,進行推理和判斷,從而模擬人類專家的決策程序來解決問題,

(6)機器學習的應用技術領域
計算機視覺,語音,自然語言處理
(7)機器學習的定義

(8)機器學習方法都可以從以下三個要素去理解:

(9)模型分類

(10)模型分類之根據資料標記分類:監督學習、無監督學習、半監督學習、強化學習


(11)模型分類之根據資料分布分類:引數模型,非引數模型

(12)模型分類之根據建模物件分類:判別模型,生成模型

(13)標記資料不夠用時,可采用兩種模型:半監督模型(部分標記),生成模型(生成一些資料)
1.2緒論-深度學習概述
(1)人工智能>機器學習>深度學習

(2)傳統機器學習:人工設計特征

(3)深度學習又稱為表示學習
(4)深度學習的發展有三個要素:演算法(學術界),算力(工業界),資料(工業界)
(5)神經網路結構的發展

(6)深度學習的“不能”
a.演算法輸出不穩定,容易被“攻擊”
b.模型復雜度高,難以糾錯和除錯
c.模型層級復合程度高,引數不透明
d.端到端訓練方式對資料依賴性強,模型增量性差
e.專注直觀感知類問題,對開放性推理問題無能為力
f.人類知識無法有效引入進行監督,機器偏見難以避免
深度學習概述
2.1 神經網路基礎 - 淺層神經網路
(1)為什么需要激活函式?
激活函式很多情況下我們需要非線性函式,從而讓整個神經網路具有非線性的擬合能力,
(2)激活函式舉例

(3)萬有逼近定理
a.單隱層感知器逼近連續函式,如果一個隱層包含足夠多的神經元,三層前饋神經網路(輸入-隱層-輸出)能以任意精度逼近任意預定的連續函式,
b.雙隱層感知器逼近非連續函式,當隱層足夠寬時,雙隱層感知器(輸入-隱層1-隱層2-輸出)可以逼近任意非連續函式:可以解決任何復雜的分類問題,

(4)神經網路每一層的作用

(4)梯度

(5)殘差
損失函式在某個結點的偏導,
(6)深層神經網路的問題:梯度消失、區域極小值

2.2 神經網路基礎 - 從神經網路到深度學習
(1)解決梯度消失和區域極小值的辦法:逐層預訓練(layer-wise pre-training)
逐層預訓練作用:使網路有一個還不錯的初始值,
(2)一般逐層預訓練有兩種方式:受限玻爾茲曼機、自編碼器
(3)自編碼器
- 輸入與輸出相同,
- 將input輸入一個encoder編碼器,就會得到一個code;加一個decoder解碼器,輸出資訊,
- 通過調整encoder和decoder的引數,使得重構誤差最小,
- 沒有額外監督資訊:無標簽資料,誤差的來源是直接重構后信號與原輸入相比得到,

- 自編碼器一般是一個多層神經網路,最簡單是三層,中間隱層是代表輸入的特征,可以最大程度上代表原輸入信號,
- 一般編碼層每層結點數遞減,解碼層每層的節點數在遞增(可用于降維),
- 自編碼器是一種網路結構,可配合其他結構搭建深度網路(如卷積、池化等),
(4)受限玻爾茲曼機(RBM)
- RBM是兩層神經網路,包含可見層v(輸入層)和隱藏層h,
- 不同層之間全連接,層內無連接 → 二分圖,
- 輸入v,通過p(h|v)得到隱藏層h;輸入h,通過p(v|h)得到v,

- 目的是讓隱藏層得到的可見層v'與原來的可見層v分布一致,從而使隱藏層作為可見層輸入的特征,
- 兩個方向權重w共享,偏置不同,
(4)一般玻爾茲曼機(BM)
可見層和隱層內部結點之間可連接,
(5)自編碼器 VS 受限玻爾茲曼機

(6)深度神經網路(DNN)

(7)解決梯度消失問題的探索

(8)自編碼器變種
- 去噪自編碼器(Denoising AE)

- 變分自編碼器(variational AE)
原理:基于隱層特征表達空間Z,通過解碼層,生成樣本,
非監督生成模型,與對抗式生成網路GAN關系密切,是深度學習-概率圖模型橋梁,
個人理解:輸入原始資料,編碼得到隱含層特征,此時的隱含層即可表示原始資料,然后改變隱含層特征,解碼生成新的資料,
(9)鞍點
該點在某個維度上是區域極小值,在另一個維度上是區域極大值,

pytorch 基礎
一、PyTorch簡介
1.什么是PyTorch
PyTorch是一個Python庫,它主要提供了以下兩個高級功能:
- GPU加速的張量計算(Tensor Computation)功能
- 構建在反向自動求導系統上的深度神經網路功能
2.PyTorch的基礎概念
(1)張量 Tensor
- data屬性,用來存資料
- grad屬性,用來存梯度
- grad_fn,用來指向創造自己的Function
二、如何用PyTorch完成實驗?
1.常見的Research Workflow

2.常見的代碼實作流程

(1)加載,預處理資料集
一旦選定了資料集,就要寫一些函式去load資料集,然后preprocess資料集,normalize資料集,可以說這是一個實驗中占比重最多的部分,因為:
- 每個資料集的格式都不太一樣
- 需要高速feed data
- 預處理和正則化的方式多種多樣
(2)構建模型
需要快速自由地實作你想要的模型,如果你是CV方向的你可能想實作一個ResNet,如果你是NLP相關的你可能想實作一個Seq2Seq,不僅需要宏觀粒度的模塊級別的構建,還需要非常細粒度的動態的甚至分支回圈的情況,
(3)定義損失函式
很多深度學習框架提供了常見的損失函式(e.g.,MSE,CrossEntropy),但大部分時間,損失函式都要和具體任務結合起來,跟據實際情況自定義,比如時下Retina Net的Focus Loss等,
(4)實作優化演算法
使用優化方法(Adam、SGD),優化構建的模型,
(5)迭代訓練
迭代訓練時,為了提高計算速度和精度,需要資料切片分batch,隨機shuffle資料,迭代epoch,還要動態調整學習率,
(6)加速計算(GPU)
神經網路實驗,需要訓練的引數動輒百萬級,千萬級,需要代碼能夠充分利用機器的硬體資源,使用GPU加速,CUDA來減少訓練時間,
(7)存盤和加載模型
在若干輪的訓練后,總要checkpoint一下,將此時模型的引數和狀態存盤下來,可以防止程式突然終止,也方便后期對模型各個階段的分析,
(8)構建baseline
你還需要構建一些baseline,以驗證自己idea的有效性,
2. 代碼練習
代碼練習需要使用谷歌的 Colab,它是一個 Jupyter 筆記本環境,已經默認安裝好 pytorch,不需要進行任何設定就可以使用,并且完全在云端運行,使用方法可以參考 Rogan 的博客:https://www.cnblogs.com/lfri/p/10471852.html 國內目前無法訪問 colab,可以安裝 Ghelper: http://googlehelper.net/
2.1 影像處理基本練習
這部分內容包括:理解影像型別,進行一些基本的影像分割操作,代碼我都寫在了一個 JupyterNotebook 里面,地址為:https://github.com/OUCTheoryGroup/colab_demo/blob/master/01_Image_Processing.ipynb
要求: 把代碼輸入 colab,在線運行觀察效果,
2.2 pytorch 基礎練習
基礎練習部分包括 pytorch 基礎操作,鏈接:https://github.com/OUCTheoryGroup/colab_demo/blob/master/02_Pytorch_Basic.ipynb
要求: 把代碼輸入 colab,在線運行觀察效果,
2.3 螺旋資料分類

代碼鏈接:https://github.com/OUCTheoryGroup/colab_demo/blob/master/03_Spiral_Classification.ipynb
要求: 把代碼輸入 colab,在線運行觀察效果
備注:詳細說明可參考 https://atcold.github.io/pytorch-Deep-Learning/zh/week02/02-3/ 中英文字幕的視頻講解在B站:https://www.bilibili.com/video/BV1gV411o7AD?p=4 有精力的同學可以看看
2.4 回歸分析

代碼鏈接:https://github.com/OUCTheoryGroup/colab_demo/blob/master/04_Regression.ipynb
要求: 把代碼輸入 colab,在線運行觀察效果
備注: 詳細說明可參考 https://atcold.github.io/pytorch-Deep-Learning/zh/week02/02-3/ 中英文字幕的視頻講解在B站:https://www.bilibili.com/video/BV1gV411o7AD?p=4 有精力的同學可以看看
3. 進階練習
主要內容包括: 遷移學習、影像分類、VGG模型
notebook鏈接:https://github.com/OUCTheoryGroup/colab_demo/blob/master/05_04_Transfer_VGG_for_dogs_vs_cats.ipynb

這部分為 Kaggle 于 2013 年舉辦的貓狗大戰競賽,使用在 ImageNet 上預訓練的 VGG 網路進行測驗,因為原網路的分類結果是1000類,所以這里進行遷移學習,對原網路進行 fine-tune (即固定前面若干層,作為特征提取器,只重新訓練最后兩層),
仔細研讀AI研習社貓狗大戰賽題的要求:https://god.yanxishe.com/41 (目前比賽已經結束,但仍可做為練習賽每天提交測驗結果)
下載比賽的測驗集(包含2000張圖片),利用fine-tune的VGG模型進行測驗,按照比賽規定的格式輸出,上傳結果評測(練習賽每天僅可評測5次),我已進行測驗,VGG模型訓練 1 個 epoch 的準確率約為 96.1 %,

大家可以思考,如何改進當前模型,可以進一步提高分類準確率,有了這些技識訓累,可以較好的應對未來的 kaggle 競賽,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/175754.html
標籤:其他
上一篇:吳恩達EX4
下一篇:kicad 基本操作
