基本上到這邊30天進度已達成,可是我還有東西沒講完,那就以後慢慢補這樣。
同上次跟大家提到的網站,我繼續介紹下面的模型。
基本上就是一個feedforward neural network,不過他只有一層hidden layer算是最簡單的feedforward neural network,基本上用途是用來做資料壓縮的,所以hidden layer的節點數是比較少的,這樣才能做到壓縮資訊的目的。
這個網路模型會做重新編碼,input layer會跟output layer的節點數一致,訓練的時候一樣是用backpropagation,output layer會去計算結果跟input layer的差異。
這個是跟上一個模型作用相反的網路,上一個模型是做壓縮,也就是在資訊量不變的情況下用更少的bits儲存資訊,這個模型反,過來會用更多的bits來儲存資訊。文中提到這樣的網路模型可以用來萃取資料中比較細小的特徵。但是如果用跟autoencoder一樣的訓練方法的話,你會得到一個沒什麼用的模型。不能再把input的資料作為預測的outcome,而是必須設定一個threshold filter,讓他去強化特定的error做學習,其他的error可以視為不相關。
跟autoencoder有相同的架構,但是學不一樣的事情:去近似input data的機率分佈。
這邊就有點像我們先前介紹的Boltzmann machine,比較不一樣的是這邊我們用的是Bayesian inference,速度上會比較快,但是背後的數學也稍複雜。(然後最後一部份我就沒看懂了orz.................)
從字面上就可以看出這個網路模型可以用來做什麼,你給他的input是有noise的,並且要他吐出沒有noise的output,這樣可以訓練模型幫我們去除雜訊。
這個網路模型可以將variational autoencoder或是restricted Boltzmann machine作為一個stack分別去訓練,這樣可以非常有效的訓練網路,每個stack只要encode前面網路的結果即可,這樣的技巧稱為greedy learning,也就是認為大網路的最佳解會是由小網路的最佳解組成,所以可以分別訓練小網路達到local optima,但事實上可能不是如此。訓練方法可以用contrastive divergence或是back-propagation,一旦用unsupervised方法訓練完成,就可以用來產生新的資料,contrastive divergence方法的話就可以用來分類現存的資料。
這個是目前蠻有名的模型,他主要用在影像辨識,當然也可以用於其他資料來源,像是音訊。比較典型的用法是,餵不同的照片給他,訓練他分類不同的照片,那模型會以pixel為輸入單位進入input node,在convolution layer的部份會設定一個filter,filter會取圖片部份區域的值做計算然後進到activation function中,像這樣不斷的convolution下去就可以進一步萃取資訊出來,大家可以看到底下的圖,一開始萃取出來的資訊是辨識邊緣或是尖角,接著會進一步辨識圓形或是方形等等稍微抽象的圖形,最後會辨識整個物體。當網路越深就能辨識愈抽象的事物。
簡直就是CNN的反向版,這個網路模型希望你給他一個字,他會生成相對應的圖片給你。不過目前的技術還無法做到你把字給他,然後他把圖片給你,現在能做到的是你給他分類的向量,像是(1, 0),其中第一個分量代表貓,第二個分量代表狗,所以這表示我希望拿到一張貓的圖。