也沒啥原創,就是在學習深度學習的過程當中豐富一下個人博客,嘿嘿。 git
不喜勿噴! 算法
Hinton是深度學習方面的大牛,跟着大牛走通常不會錯吧…… 網絡
來源:A fast learning algorithm for deep belief nets 性能
看着引用次數,何時我也能來一篇(不要笑我這個學渣)。 學習
摘要中出現的幾個詞就讓我有點茫然: ui
complementary priors,這是一個啓發規則仍是什麼鬼的 spa
explaining away effects,沒據說過這個效應捏 3d
聽說他的這種快速的貪心算法(fast, greedy algorithm)可以一次訓練一層的深度直接信任網絡(deep, directed belief networks) rest
而這種快速的貪心算法是爲了給後面的利用較慢的wake-sleep algorithm精細調節權重的過程進行初始化。最後獲得一個具備很 code
好泛化性能的網絡,並且效果還要比最好的分類學習算法(the best discriminative learning algorithms)還好。(反正我用神經網
絡都是單隱層的,通常說法是多隱層具備很好的擬合效果,可是會形成過擬合,即over fitting,可是這裏又能快速訓練,並且文
中也說多層的效果也很好)。文中也是主要利用這個deep belief nets來作圖片的分類。
首先Hinton是創建了一個模型,這個模型以下圖所示,我也要好好看看這個模型:
這個模型的有三個隱含層,最上面兩個隱含層造成了一個undirected associative memory(沒有直接相關聯的記憶?),剩下的隱含層
則造成了一個directed acyclic graph將相關記憶(associative memory)轉化爲可觀測的變量,例如圖片的像素。接着談到了創建一個
這樣的混合的模型的好處(反正我是沒有很好的理解這個模型的):
1)即便對於有上百萬個參數和不少隱含層的深度網絡中,對於這樣的模型也存在着很快的貪心算法,找到至關好的參數;
2)這個模型的訓練算法是unsupervised,可是又能夠用於labeled data,是由於該訓練算法能夠訓練模型生成label和data(第2點的
意思是否是,這個模型不只能產生label,還能反推會data);
3)有精細的訓練算法能調節參數的模型使得模型具備很好的泛化性能,並且分類能力要比通常的分類方法強;
4)訓練好的模型可以很好的解釋深度隱含層的分佈表示(distributed representations);
5)The inference required for forming a percept is both fast and accurate(目前還不知道這個該怎麼理解);
6)該學習算法是局部的,也就是說調節參數只會根據前驅突觸和後繼神經元突觸的強度;
7)(神經元之間的)交流也特別簡單,神經元之間只須要交流它們隨機的二進制狀態。
第2部分介紹了消除explaining away現象的方法,即complementary prior。
第3部分說明restricted Boltzmann machines和infinite directed networks with tied weights之間是等價的。
第4部分介紹了那個快速的貪心算法(一次訓練一層數據,這樣來看是否是就訓練一層就完了,不會從頭訓練吧),隨着新的隱含層加入,
模型總體的泛化能力提升了。The greedy algorithm bears some resemblance to boosting in its repeated use of the same weak learner, but
instead of reweighting each data-vector to ensure that the next step learns something new, it represents it(這裏他不是每次都從新調整權重,
而是從新表示,是這個意思嗎?)。
第5部分介紹了通過快速貪心算法初始化以後的權重,怎麼利用wake-sleep算法進行fine-tune。
第6部分展現了包含3個隱層1.7 million個權重的網絡對MNIST set of handwriting digits模式識別性能(我擦,這麼多參數)。沒有提供這
些手寫體的任何幾何信息,也沒有通過任何的預處理,所創建網絡的識別偏差是1.25%,比最好的back-propagation的網絡的1.5%要好,同
時也比支持向量機的1.4%的偏差稍好。
第7部分咱們要看看這個網絡是在想什麼,若是沒有對可視輸入進行約束。從這個網絡的高層表示生成一張圖片(我感受這個牛叉,就像人眼
看到一幅圖片,而後通過大腦的抽象以後,刻在腦子裏,也就是突觸之間的權重會保存信息,而後咱們在根據這些信息重構一張圖麼?)。
講到這裏,首先是一個具備不少特性的網絡結構提出來了,它有不少的隱含層,並且這些變量的值都是二進制(也能夠說是二元的,binary),
而後咱們得對模型提出某個訓練算法,讓它可以學習,訓練的過程大致上分爲兩個階段,第一個階段是fast greedy algorithm來對每一層的參數
進行訓練,這個過程很快。第二階段就是一個fine-tune的wake-sleep算法,因爲沒有具體的去看算法,目前也就只能從總體上把握這個過程,
如今就具體的去看看怎麼實現的吧!(啓發:一直以來的印象就是多隱層的泛化效果很差,恰恰就有人反其道而行之,要多整幾層;網絡結構上
也有改變,算法上也有新的)。
2 Complementary priors
explaining away現象是什麼?