深度學習概述+Colab配置+pytorch初次使用


深度學習概述+Colab配置+pytorch初次使用

 

1.視頻學習基本知識點總結

 

機器學習使用情況:問題規模大->准則復雜度大->數據集->有意義的模式->沒有解析解

機器學習:模型、策略、算法

 

機器學習模型:

模型分類:(數據標記)

監督學習:輸出空間已知

無監督學習:數據標記未知,目的在於發現數據中有意義信息

半監督學習:部分數據標記已知

強化學習:數據標記未知,但知道與輸出目標相關的反饋(決策類問題)

 

模型分類:(數據分布)

參數模型:對數據分布進行假設,用有固定數目的參數進行解決

非參數模型:不對數據分布進行假設。

 

模型分類:(建模對象)

生成模型:對輸出的聯合分布P(X,Y)建模

判別模型:對條件分布P(Y|X)建模

 

人工智能>機器學習>深度學習

 

深度學習存在問題:

算法輸出不穩定,容易被攻擊

模型復雜度高,難以糾錯和調試

模型層級符合程度高,參數不透明

端到端訓練方式對數據依賴性強,模型增量性差(樣本量小時,無法體現強大的擬合能力

對開放性推理問題無能為力(比如:鸚鵡、烏鴉)

人類知識無法有效引入進行監督,機器偏見難以避免(數據並非中立)

 

 

連接主義:自下而上(模擬人)+符號主義:自上而下 ???

 

神經網絡

多輸入但輸出、空間整合/時間整合、興奮性/抑制性輸入、閾值特性

激活函數

 

萬有逼近定理:

如果一個隱層有足夠多的神經元,三層前饋神經網絡能以任意禁錮逼近任意預定的連續函數

當隱層足夠寬時,雙隱層感知器可以逼近任意非連續函數:可以解決任何復雜分類問題。

 

神經網絡學習如何利用矩陣的線性變換加激活函數的非線性變換,將原始輸入空間投影到線性可分的空間去分類/回歸。

增加節點數:增加維度(增加線性轉換能力)

增加層數:增加激活函數次數(增加非線性轉換次數)

 

在結點數目一定的條件下,瘦高網絡更好一些(深度)(並非越深越好)

 

多層神經網絡可以看成一個復合的非線性多元函數

 

梯度:多元函數f(x,y)在每個點可以有多個方向,每個方向都可以求導,其中導數最大的方向

因此梯度是一個向量

無約束優化方法:梯度下降(沿負梯度方向更新可使函數值下降)

殘差:損失函數在某個結點的偏導(反饋過程)

梯度消失:誤差反向傳播(增加深度會造成梯度消失,誤差無法傳播)

 

 

自編碼器

假設輸入輸出相同沒有額外監督信息將自己輸入當成輸出

一般是多層神經網絡先編碼再解碼

訓練目標使輸出層和輸入層誤差最小

中間隱層代表輸入特征可以最大程度代表原輸入信號

 

受限玻爾茲曼機RBM

特點

只包含兩層神經網絡可見層v輸入層和隱藏層h

不同層全連接二分圖

目的

讓隱藏層得到的可見層v’與原來的可見層v分布一致從而使隱藏層作為可見層輸入的特征

兩個方向權重w共享偏執不同

模型參數wcb

 

假設可見層和隱藏層結點都是01),兩個方向的概率就是sigmoid

 

 

DBN深度信念網絡):由若干RBM堆疊最后加一個監督層

訓練由低到高逐層訓練

 

 

pytorch學習

1.基本定義方法及部分解釋

torch.tensor(  )

參數可以是一個數、向量、矩陣、張量

torch.ones( x,y):張量全為1(同時有torch.float32( ),torch.int64( )等多種定義類型

torch.empty(x,y )、torch.rand(x,y)、torch.zeros( )

x.new_ones(x,y):繼承原有x的dtype和device

torch.randn_like(x,dtype= )保持原有大小,重新定義dtype

torch.arange(1,5,step):[1,2,3,4]

2.基本數學運算

  基本:

  abs/sqrt/div/exp/fmod/pow/cos/sin/asin/atan2/cosh/ceil(向上舍入)/round(四舍五入)/floor/trunc(截斷)

  布爾:

  gt/lt/ge/le/eq/ne/topk/sort/max/min

  線性:

  Trace(對角線元素之和)/diag(對角線元素)/mm/bmm(矩陣乘法)/dot(內積)/cross(外積)/invese/svd

  其它及表示方法:

  numel( ):返回數量

  m[:,x]:表示第x列所有元素

  m@v:求點積

  m.t( )/m.transpose( ):求轉置

  torch.linspase(start,end,step) :返回一個1維張量,包含在區間start和end上均勻間隔                                                                   的step個點

 

總結:

運算在colab上都能運行通過,但應對許多運算尤其是線性代數方面進行復習。

 

螺旋數據分類學習:

 

1.構建模型

 

 

 

2.構建線性模型分類

訓練所用線性模型:

model = nn.Sequential(

    nn.Linear(D, H),

    nn.Linear(H, C)

)

訓練結果:

 

 

 

得到訓練模型:

 

發現線性模型對分類的准確度較低

 

3.構建兩層神經網絡:

訓練所用模型:

model = nn.Sequential(

    nn.Linear(D, H),

    nn.ReLU(),

    nn.Linear(H, C)

)

訓練結果:

 

 

 

訓練模型:

 

 

 

 

發現在使用ReLu( )激活函數后准確率明顯提高。

 

總結

通過本次螺旋模型的訓練,了解了訓練一個基本模型的步驟,將在緒論中學到的知識(比如:激活函數、損失函數、梯度下降優化,反向傳播等)在實戰中加深了理解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM