天天看點

第一次作業:深度學習基礎

林欣蕊:

一、視訊心得及總結

1.總結

随着深度學習的深入,人們探究深度學習從“能做什麼”到深度學習的“不能”:

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

2.模型複雜度高,難以糾錯和調試

3.模型層級複合度高,參數不透明

4.端到端訓練方式對資料依賴性強,模型增量性差

5.專注直覺感覺類問題,對開放性推理問題無能為力

6.人類知識無法有效引入進行監督,機器偏見難以避免

M-P神經元;激活函數;單層感覺器:首個可供學習的人工神經網絡;多層感覺器;萬有逼近定理;誤差反向傳播;梯度消失;局部極小值;逐層預訓練;微調;受限玻爾茲曼機;自編碼器(最小化重構錯誤);深度信念網絡(多個RBM);一般玻爾茲曼機(随即神經網絡和遞歸神經網絡的一種);

2.問題

1.微調的次元是什麼?預先怎麼知道該上調還是下調呢,縮小/增大的範圍咋确定呢?

二、代碼練習:

(1)基礎

(1)定義資料

第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
(2)定義操作
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎

2.螺旋資料分類

(3)

之前的步驟都很順利,直接複制代碼然後運作檢視,但是中途遇到的問題:關于叉乘的乘法這行代碼(如下圖所示)。

第一次作業:深度學習基礎
開始懷疑是不支援這個運算,但是帶入其他代碼又是可以用的(如下圖找到的例子成功運作@)。
第一次作業:深度學習基礎
最後通過這篇文章(​​https://discuss.pytorch.org/t/runtimeerror-expected-scalar-type-int-but-found-float/102140​​ )找到解決辦法,運作成功(猜測是@運算時并不能智能轉換成float類型,需要人工操作?)。
第一次作業:深度學習基礎
(2)螺旋資料分類
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
準确率很低很低,隻有一半。
第一次作業:深度學習基礎
加了relu函數後,準确率大大提高,因為好奇為啥relu函數就能提高這麼大精确度,去網上查了相關文章,感受就是在某一個科學領域,從0開始拓荒,然後後來者對其不斷深入研究開發,直到成熟,就像為了提高準确率,先是出現了sigmoid和雙曲正弦函數,再就是這個relu函數(由于效果突出,之後發展出Leaky ReLU,Elu, PReLu等),我真的難以想象人腦怎麼想出這麼多東西。再就是:學好數學真的太重要了,不然看公示的時候還得查符号的代表含義以及來源過程。
第一次作業:深度學習基礎
 崔王仙子:

  1. 總結

(1)單層感覺器解決不了異或問題

(2)relu比較牛逼

(3)多層神經網絡存在梯度消失的問題

(4)受限玻爾茲曼是來自能量分布所提出的

  1. 問題

(1)神經網絡為什麼要有這麼多層?

(2)為什麼所有的機器學習基本上都要從二分類開始解決?

(3)為什麼神經網絡層數越多越好?

遇到的問題:

(1)xxx is not defined

第一次作業:深度學習基礎

錯因:我早上打了一部分代碼因為有事情就儲存然後把電腦關機了,我第二次打開直接加代碼進行運作發現很多東西報錯“未定義”,需要全部重新挨着運作下來才行....無語

(2)Expected scalar type Float but found Long

第一次作業:深度學習基礎

錯因:v是預設了long型的,但是m是float型的,需要在定義v的時候把向量的資料類型加上依據dtype=torch.float,如圖,則可以正常運作了

第一次作業:深度學習基礎
  1. 基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎

黃可: 

一、視訊學習

問題:

  1. 從前深度學習時代到後深度學習時代,我們還需要做什麼?
  2. 我還是沒能了解機器是如何學習樣本資料的内在規律的。
  3. 人工智能如何與心理學和哲學相聯系,想不明白。

總結:

人工智能>機器學習>深度學習。人工智能是一個宏大的命題,通過與各個領域相結合,惠及生活。機器學習需要對問題模組化,确定目标函數,繼而求解模型參數。機器學習根據有無監督分為全監督學習、無監督學習和半監督學習,又根據是否應用了神經網絡分為深度學習和傳統機器學習,在前深度學習時代我們需要采集大量資料進行分析,而在後深度學習時代我們隻需要少量資料就可以交給機器進行深度學習。

二、代碼練習

2.1 pytorch基礎

第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎

感想:一般定義資料使用torch.Tensor,可以定義一個數、一個數組、矩陣、任意次元的數組,在輸入老師給的代碼中的m @ v時,出現了報錯,顯示我使用了錯誤的類型的變量,有點迷茫,查了一下百度,試着加了兩個輸出變量類型的代碼,檢視之後,我把這兩行代碼去掉,使用tensor.type方法修改變量類型,程式正常執行。

2.2 螺旋資料分類

第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎

 趙梓奧:

【第一部分】視訊學習心得及問題總結

  1. 緒論

(1)現狀:我國人工智能供給不足問題嚴重  

(2)教育部措施:加快培養人工智能高端性人才

(3)人工智能定義的關鍵點:感覺、認知、決策、執行

(4)人工智能之父:麥卡錫、明斯基(1956年組織達特矛斯會議,AI誕生)

(5)圖靈與人工智能(驗證碼系統;模仿遊戲,二戰期間破解Enigma系統)

(6)人工智能高速發展期:2006年->2010年->2012年

(7)人工智能三個層面:計算智能、感覺智能、認知智能

(8)人工智能>機器學習>深度學習(範圍上)

(9)機器學習:機器自動訓練資料

過程:模組化(問題模組化,确定假設空間) 政策(确定目标函數) 算法(求解模型參數)

監督學習:樣本有标記         無監督學習:樣本沒有标記   

半監督學習:部分有标記,部分沒有

強化學習:樣本沒有标記,但知道與輸出目标相關的回報

參數模型:對資料分布進行假設(待求解的資料映射用一組參數刻畫)  

非參數模型:不對資料分布進行假設(資料所有統計特性來源于本身)

生成模型:對聯合分布P(X,Y)模組化

判别模型:對條件分布P(Y|X)模組化

(10)深度學習:錯誤率低于人類(2015年ResNet) 應用:Google無人自行車

  1. 深度學習概述

深度學習的“不能”

(1)算法輸出不穩定,容易被“攻擊”

(2)模型複雜度高,難以糾錯和調試

(3)模型層次複合程度高,參數不透明

(4)端對端訓練方式對資料依賴性強,模型增量性差

(5)專注直覺感覺類問題,對開放性推理問題無能為力

(6)人類知識無法有效引入監督,機器偏見難以避免

總結:穩定性差。可調試性差、參數不透明、機器偏見、增量性差、推理能力差

從專家學習、統計機器學習、到機率圖模型再到深度學習,模型準确率不斷提高,解釋性卻沒有提高

神經網絡

激活函數

(1)S性函數:容易飽和,輸出不對稱(沒有負值)

(2)雙極S性函數:解決輸出不對稱問題

(3)ReLU修正線性單元:解決飽和區問題

(4)Leaky ReLU

非線性激活函數(以S性函數為例):近似實作邏輯非、邏輯與、邏輯或  

單層感覺器(缺點:無法實作異或、同或)

例:三層感覺器實作同或門,組合單層感覺器,解決非線性問題

萬有逼近定理:如果一個隐層包含足夠多的神經元,三層前饋神經網絡(輸入-隐層-輸出)能以任意精度逼近任意預定的連續函數

雙隐層感覺器逼近非連續函數(輸入-隐層1-隐層2-輸出)

神經網絡将原始輸入空間投影到線性可分的空間去分類/回歸

(1)增加節點數:增加次元,即增加線性變換能力

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

增加網絡深度比增加寬度帶來更強的網絡能力,深度對函數複雜度的貢獻高

深層神經網絡的問題:梯度消失、局部極小值。是以,很長一段時間,三層神經網絡是主流

解決方法:逐層預訓練(相對更加收斂,訓練更快)

疑問:什麼樣的資料集适合節點數多的模型,什麼樣的資料集适合層數多的模型,模型具體是怎麼訓練的,為什麼加了ReLU激活函數之後,準确率大大提高

【第二部分】代碼練習

2.1 pytorch基礎練習

第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎

編寫時出現的問題

​​當使用這個@運算符時,報錯提示資料類型有問題,于是通過百度,更改了一下類型,使用了.float()這個方法,運作成功,問題解決​​。

第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎

 陳轶鑫:

1.視訊學習

1.1緒論

人工智能:使一部機器像人一樣 感覺、認知、決策、執行的人工程式或系統。

人工智能三個層面

1 計算智能: 快速計算、記憶存儲

2 感覺智能:能聽會說、能看會認

3 認知智能:能了解、思考、決策

人工智能可結合用于多領域:金融:芝麻信用;内容創作;機器人

人工智能 包含 機器學習 包含 深度學習

第一次作業:深度學習基礎

邏輯演繹vs歸納總結

第一次作業:深度學習基礎

知識工程vs機器學習

第一次作業:深度學習基礎

機器學習:從資料中自動提取知識

1.計算機視覺:人臉識别、圖像分類、目标檢測、圖像搜尋、圖像分割、視訊監控

2.語音技術:語音識别、語音合成、聲紋識别

3.自然語言處理:文本分類、機器翻譯、知識圖譜、自動問答、資訊檢索、文本生成

機器學習的方法:(主要前兩個)

1.模型:問題模組化,确定假設空間

2.政策:确定目标函數

3.算法:求解模型參數

模型:

1.資料标記:監督VS無監督學習模型

無監督學習:從資料中學習模式,用于描述資料。目的:發現資料中模式、有意義資訊

監督學習:從資料中學習标記分界面,用于預測資料标記。目的:學習輸入

半監督學習:部分資料标記已知

強化學習:資料标記未知,但知道與輸出目标相關的回報。決策類問題。

2.資料分布:參數VS無參數模型(指資料分布的參數,是否假設資料分布)

參數模型模型參數固定,非參數模型自适應資料,模型參數随樣本變化。

參數模型:假設,待求解的資料模式、映射可用一組有限、固定數量的參數刻畫(線性回歸、邏輯回歸、感覺機、k均值聚類) 

優點:資料需求少、訓練快速;缺點:模型複雜性有限,與真實目标函數拟合度小。

非參數模型:不假設,資料所有統計特性來源于資料本身(k近鄰、svm、決策樹、随機森林)

優點:對資料适應性強,可拟合不同函數形式;缺點:資料需求大、容易過拟合

3.模組化對象:判别vs生成模型

生成模型:對輸入x與輸出y的聯合分布模組化

優點:提供更多資訊;樣本量大時,更快收斂到真實分布;支援複雜訓練情況

缺點:資料需求大;預測類問題準确率較低

判别模型:對已知輸入x條件下輸出y的條件分布模組化

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

深度學習:分層

深度學習三個助推劑:大資料、計算力、算法

深度學習應用研究:視覺+語言

深度學習理論研究:從能到不能

深度學習的不能

2.模型複雜度高,難以糾錯與調試

3.模型層級複合程度高,參數不透明?

4.人類知識無法有效引入進行監督,機器偏見難以避免(算法依賴于資料,資料不是中立的,從真實社會抽取必然帶有不平等)

5.端對端訓練方式對資料依賴性強,模型增量性差(樣本資料量小時,深度學習無法展現強大拟合能力)

6.專注直覺感覺類問題,對開放性推理問題無能為力

解釋性vs泛化性

深度學習泛化性很強,解釋性很弱

連接配接主義+符号主義

第一次作業:深度學習基礎

1.2神經網絡基礎

2.1淺層神經網絡

M-P神經元

沒有激活函數相當于矩陣相乘:多層和一層一樣;隻能拟合線性函數

激活函數例子?

單層感覺器:最早的神經網絡的模型

通過激活函數(隻)能夠劃分線性問題

多層感覺器:可解決非線性問題

單隐層神經網絡:單層感覺器對于非線性問題,訓練無效果;增加隐層後,訓練效果顯著

第一層感覺器進行了空間變換,第二層感覺器處理變換後的函數(線性)

隐層可完成:

第一次作業:深度學習基礎

萬有逼近定理:若一個隐層包含足夠多的神經元,三層前饋神經網絡(輸入-隐層-輸出)能以任意精度逼近任意預定的連續函數。

雙隐層感覺器可逼近任意函數(包含非連續函數)。

第一次作業:深度學習基礎

神經網絡層數越多越好?

訓練資料的作用,讓神經網絡選擇非線性、線性的變換

第一次作業:深度學習基礎

多層神經網絡的問題:梯度消失

神經網絡的參數學習:誤差反向傳播。前饋與回報

1.層數多時,會使得局部極小值增多,更可能收斂到不好的局部極小值

2.層數多時,隻能更新後面的層參數,前面層的參數無法更新

第一次作業:深度學習基礎
第一次作業:深度學習基礎

2.2從神經網絡到深度學習

逐層預訓練

權重初始化

1.不同初始值會收斂到不同極值點

2.逐層預訓練後會降低收斂到差的局部極小值,且訓練效率更高

兩種方法:

1.自編碼器:沒有額外監督資訊

是一個多層神經網絡;

目的是減少誤差;

中間隐層是代表輸入的特征,可最大程度代表原輸入信号

将多個自編碼器得到的隐層串聯;所有層預訓練完成後,進行基于監督學習的全網絡微調

2.受限玻爾茲曼機(RBM)

是兩層神經網絡,包含可見層(輸入層)與隐藏層;

不同層間全連接配接,層内無連接配接;

沒有顯式的重構過程

第一次作業:深度學習基礎
第一次作業:深度學習基礎

自編碼器vsRBM

第一次作業:深度學習基礎

由于判别式模型更泛用,自編碼器更多地被運用。現在都不常用了。

第一次作業:深度學習基礎

人工智能>機器學習>神經網絡>深度學習。深度學習有其局限性。無隐層的神經網絡無法解決非線性問題。隐層越多并不意味着越好,即神經網絡的層數不是越多越好。三層就可以逼近任意函數。為了避免收斂誤差過大,梯度消失問題,三層神經網絡是主流。曾用過逐層預訓練來改善訓練效果,現在基本被淘汰了。

1.不了解:模型層級複合程度高,參數不透明。

2.不了解激活函數來源、哪裡用、怎麼用

3.人工智能解決模型增量差、開放性推理問題的思路。

2.代碼練習

1.

第一次作業:深度學習基礎

提示出錯,根據提示将v改為float型後成功運作。

第一次作業:深度學習基礎

之前用c語言沒做過這種可視化的圖表,感覺很有意思,很厲害。

2.

2.1

第一次作業:深度學習基礎

1.不改動

訓練模型一:8s

第一次作業:深度學習基礎

訓練模型二:9s

第一次作業:深度學習基礎

用了 Rule函數的模型訓練效果顯著提升。

2.樣本改為10000

訓練模型一:11s

第一次作業:深度學習基礎

訓練模型二:12s

第一次作業:深度學習基礎

樣本點增加,訓練結果差别不大。

3.隐層節點改為1000

訓練模型一:9s

第一次作業:深度學習基礎

訓練模型二:10s

第一次作業:深度學習基礎

隐層節點增加,用了激活函數的模型效果顯著提升;而模型一基本不變。

總結:使用合适的激活函數、增加隐層節點可以提高訓練效果。同時會一定程度上增加訓練時間。

//樣本類别改為7還挺好看的

第一次作業:深度學習基礎

 2.2

第一次作業:深度學習基礎
第一次作業:深度學習基礎

 查了nn.linear()參數的意義,還是不了解函數做了什麼。

第一次作業:深度學習基礎

Relu激活函數對訓練模型的改善極大。

激活函數Rule的作用是什麼,參數的意義是什麼?

 王鑫堯:

第一部分 視訊學習

1.1學習心得

01緒論

相關運用不斷突破,促進各國不斷部署人工智能發展戰略,這是人工智能領域人才供需失衡的主要原因。得益于資料、算力和算法的集中突破,人工智能近年來開始進入落地實踐階段。以深度學習為主要代表的人工智能技術正在語音識别、資料挖掘、自然語言處理等領域展露強勁發展勢頭,相關應用突破還可能給醫療、交通、制造、金融、教育等領域帶來巨變。

第一次作業:深度學習基礎

02深度學習概述

生物神經網絡是人工神經網絡的起源。然而,人工神經網絡(ANNs)的工作機制與大腦的工作機制并不是十分的相似。

神經元通過樹突從其他神經元中接受信号。樹突的信号強度稱為突觸權值,用于與傳入信号相乘。樹突傳出的信号在細胞體中累積,如果最後的信号強度超過了某個門檻值,神經元就會允許軸突中的資訊繼續傳遞。否則,信号就會被阻止而得不到進一步的傳播。激活函數決定了信号是否能夠被通過。

1.2問題總結

01 網絡是怎麼學習的 訓練過程中的最小權值和偏置怎麼找

02 不同類型激活函數分别解決什麼類型的問題?

03 為什麼線性函數組合可以解決非線性問題

04 為什麼需要需要非線性激活函數

第二部分 代碼練習

2.1 pytorch基礎練習

第一次作業:深度學習基礎

出錯!将v改為float型後運作成功。

第一次作業:深度學習基礎
第一次作業:深度學習基礎
第一次作業:深度學習基礎

1.激活函數相當于對原資料空間進行了一次空間變換?為什麼這樣的空間變換能夠保證得到的結果一定線性可分?

2.Relu激活函數的作用?

繼續閱讀