1. 程式人生 > >Neural networks and deep learning 概覽

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在訓練網路、優化的時候很常用,如下所述,(目前還沒整理完各個部分的筆記,而且篇幅長,就分為幾篇部落格來寫,陸續在 [文章連結] 中貼出。):

  1. 比方差代價函式更好的: 交叉熵代價函式   [文章連結]

  2. 四種正則化方法(提高泛化能力,避免overfitting): [文章連結]

    • L1 regularization
    • L2 regularization
    • dropout
    • artificial expansion of the training data
  3. 權重初始化的方法 [文章連結]
  4. 如何選取超引數(學習速率、正則項係數、minibatch size) [文章連結]

4、A visual proof that neural nets can compute any function


轉載請註明出處:http://blog.csdn.net/u012162613/article/details/44220115

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述