Neural networks and deep learning 概覽
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
最近閱讀了《Neural networks and deep learning》這本書(online book,還沒出版),算是讀得比較仔細,前面幾章涉及的內容比較簡單,我著重看了第三章《Improving the way neural networks learn》,涉及深度神經網路優化和訓練的各種技術,對第三章做了詳細的筆記(同時參考了其他資料,以後讀到其他相關的論文資料也會補充或更改),歡迎有閱讀這本書的同學一起交流。以下屬個人理解,如有錯誤請指正。
What this book is about?
這本書中的程式碼基於Python實現,從MNIST這個例子出發,講人工神經網路(Neural networks),逐步深入到深度學習(Deep Learning),以及程式碼實現,一些優化方法。適合作為入門書。
1、 Using neural nets to recognize handwritten digits
文章概要
用人工神經網路來識別MNIST資料集,Python實現,僅依賴NumPy庫。
2、 How the backpropagation algorithm works
文章概要
上一章沒有討論怎麼優化NN,當時並沒有討論怎麼計算損失函式的梯度,沒有討論優化過程,這就是這一章要講的BP演算法。
BP演算法在1970s出現,但直到1986年Hinton的paper發表之後它才火起來。
BP實現程式碼
the code was contained in the update_ mini _ batch and backprop methods of the Network class.In particular, the update_mini_batch method updates the Network’s weights and biases by computing the gradient for the current mini_batch of training examples:
Fully matrix-based approach to backpropagation over a mini-batch
Our implementation of stochastic gradient descent loops over training examples in a mini-batch. It’s possible to modify the backpropagation algorithm so that it computes the gradients for all training examples in a mini-batch simultaneously. The idea is that instead of beginning with a single input vector, x, we can begin with a matrix X=[x1x2…xm] whose columns are the vectors in the mini-batch.
將mini batch裡的所有樣本組合成一個大矩陣,然後計算梯度,這樣可以利用線性代數庫,大大地減少執行時間。
BP演算法有多快?
BP演算法剛發明的時候,計算機計算能力極其有限。現在BP在深度學習演算法中廣泛應用,得益於計算能力的大躍升,以及很多有用的trick。
what’s the algorithm really doing?
這部分對BP演算法深入討論,是個證明過程。網路前面某個節點發生的改變,會一層一層往後傳遞,導致代價函式發生改變,這兩個改變之間的關係可以表示為:
一層一層地推導,又可以表示為:
後面還有一堆……
關於BP的原理,建議看看Andrew NG的UFLDL,也可以看一些相應的博文。
3、Improving the way neural networks learn
這一章討論一些加速BP演算法、提高NN效能的技術。這些技術/trick在訓練網路、優化的時候很常用,如下所述,(目前還沒整理完各個部分的筆記,而且篇幅長,就分為幾篇部落格來寫,陸續在 [文章連結] 中貼出。):
比方差代價函式更好的: 交叉熵代價函式 [文章連結]
四種正則化方法(提高泛化能力,避免overfitting): [文章連結]
- L1 regularization
- L2 regularization
- dropout
- artificial expansion of the training data
- 權重初始化的方法 [文章連結]
- 如何選取超引數(學習速率、正則項係數、minibatch size) [文章連結]
4、A visual proof that neural nets can compute any function
轉載請註明出處:http://blog.csdn.net/u012162613/article/details/44220115