機器學習相比邏輯推理知識工程等傳統技術,是基於概率論中的模型、策略和演算法發展起來的。在經過演算法和算力等的發展下,深度學習越來越成熟了,在影象識別,語言處理等方面都有著廣泛的應用。
但深度學習也並非無所不能的,它也有一些缺點,如演算法輸出不穩定,容易被攻擊;模型複雜度高,難以糾錯和除錯;模型層級復合程度高,引數不透明;端對端訓練方式對資料依賴性強,模型增量性差;專注直觀感知類問題,對開放性推理問題無能為力;人類知識無法有效引入進行監督,機器偏見難以避免等等。
神經網路學習通過利用矩陣的線性變換加啟用函式的非線性變換,將原始輸入控制項投影到線性可分的空間區分類回歸。神經網路的層數並非越多越好,層數過多可能會產生梯度消失。一般來說,三層神經網路為最優。
知識工程/專家系統:有人工參與,人工定義輔助的這種專家系統的學習結果容易解釋,不過不夠準確,具有一定主觀性,同時需要一定精力去構建所需要的模型,費時費力。
機器學習:機器自動訓練模式,這個模式更加客觀,準確,需要大量資料作為機器學習的支撐。
機器學習的學習過程中需要問題建模,確定目標函式,確定最優模型,求解模型引數。
傳統機器學習:在輸入原始資料之後,進行特徵處理(手動設計特徵),然後進行機器的淺層學習,訓練和測試分類器,然後輸出結果。
深度學習:蒐集大量資料,選擇合適的深度模型,確定模型超引數,之後讓機器進行優化學習找到最有效的結果。
後深度學習:給資料,機器學習給結果。
深度學習應用領域可以在在視覺和語言。
深度學習在探索過程中要發現現在還「不能」解決的問題,以便更好發展。
深度學習的「不能」:
演算法輸出不穩定,容易被「攻擊」。(穩定性低)
模型複雜度高,難以糾錯和除錯。(可除錯性差)
模型層級復合程度高,引數不透明。(引數不透明)
端到端訓練方式對資料依賴性強,模型增量性差。(增量性差)
專注直觀感知類問題,對開放性推理問題無能為力。(推理能力差)
人類知識無法有效引入進行監督,機器偏見難以避免。(機器偏見)
通過啟用函式和線性函式的作用使得整個神經網路獲得非線性擬合能力。
單層感知器是首個可以學習的人工神經網路。在多層感知器中,三層感知器能實現同或門。
萬有逼近定理:
乙個隱層包含足夠多神經元,三層前饋神經網路能以任意精度逼近任意預定的連續函式。
雙隱層感知器逼近非連續函式。
多層神經網路問題:梯度消失。
自編碼器:多層神經網路(三層)
受限玻爾茲曼機(rbm)
深度學習是機器學習的乙個分支,應用了深度神經網路的機器學習稱為深度學習。而二者的區別在於:機器學習主要還是依賴於人工來幫助定義特徵,所有的規則是白盒的,設計者肯定清楚結果的走向。而深度學習有個非常重要的特徵就是「黑盒」,因為它不是按照人為的設計來運作每一步的,只是在乙個建模、評價、優化的模型框架中,而具體的細節是不可知的。演算法輸出不穩定;模型複雜度高,難以糾錯和除錯;模型層級復合程度高,引數不透明;端對端訓練方式對資料依賴性強,模型增量性差;專注直觀感知類問題,對開放性推理問題無能為力;人類知識無法有效引入進行監督,機器偏見難以避免等等。這是很多人所說的缺點,但是我認為正是「細節不可知」,讓深度學習能夠超越人類代替人類做一些事情成為了可能。
啟用函式是如何選擇的?如何去選擇乙個最優的啟用函式?
逐層預訓練解決梯度消失這方面沒有很理解。
三層前饋神經網路的bp演算法詳解。
沒太理解rbm模型求解求解到的結果有什麼作用。
如今有沒有公開的例項**用於學習輕量級的深度學習?
深度學習對於硬體需求特別高,那麼移動端是不是就沒有效率進行深度學習了?
tensor 和之前的 tensor 有何區別?
答: torch.tensor是主要的tensor類,所有的tensor都是torch.tensor的例項。torch.tensor是乙個函式,返回的是乙個tensor. 所以torch.tensor應該說是同時具有torch.tensor和torch.empty的功能,但是使用torch.tensor可能會使你的**confusing,所以最好還是使用torch.tensor和torch.empty,而不是torch.tensor。
這個為什麼會打出個點??
想法和解讀:
pytorch中的tensor(張量)是特有的資料型別,它可以由各種各樣的資料型別建立而成。查閱資料後發現,之所以引入tensor這個資料型別主要是由於深度學習中的訓練的資料集的數量都特別巨大,利用tensor可以將這些資料集放在gpu中加速運算。
想法和解讀:
觀察注釋和**發現,利用訓練模型來資料分類是先將資料輸入到模型中,得到**結果,在將誤差反向傳播優化引數。而構建兩層神經網路分類就是在上述線性模型的兩層中加入啟用函式,實現非線性轉換。
此外,除了relu外,還測試了tanh和sigmiod兩個啟用函式,發現relu和tanh的效果都比較好,而sigmiod的效果不佳,推測是sigmoid函式梯度瀰散的原因造成的,具體原因暫時不知道。
現代軟體工程 第二週部落格作業
作業要求 點遊戲簡單介紹 假設有m個人參與 點遊戲,每輪遊戲每個人提兩個 0,100 間的有理數,共2m個數,求這2m個數的平均數再將這個平均數乘以0.618得到這一輪的 點,提出離 點最近的數的人得2m分 同樣近的人一起得分 離 點最遠的人扣兩分。在本次實驗中,我們需要寫乙個bot來在每輪遊戲中自...
軟體工程第二章作業
1.在軟體開發的早期階段為什麼要進行可行性研究?應該從哪些方面研究目標系統的可行性?答 因為我們需要在軟體開發前確定其是否具有價值,乙個沒有價值的軟體開發出來也沒有意義 五個方面 技術可行性 經濟可行性 操作可行性 執行可行性 法律可行性 2.為方便儲戶,某銀行擬開發計算機儲蓄系統。儲戶填寫的存款單...
軟體工程第二週開篇部落格
第二週開篇部落格 1.介紹自己 我是乙個很平凡的普通人,但是有著不平凡的一顆心。我的性格屬於那種可能初看覺得很高冷,但是慢慢熟悉之後發現原來事實是乙個逗比 玩的不錯的朋友的評價 我可能是屬於那種慢慢熟的一種人。我個人喜歡一些體育專案,我在初中的時候打過桌球,為了能在台上多打一會,努力並且付出實踐了一...