国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

深度學(xué)習(xí)斯坦福cs231n 課程筆記

2019-11-08 01:51:04
字體:
供稿:網(wǎng)友

前言

對于深度學(xué)習(xí),新手我推薦先看UFLDL,不做assignment的話,一兩個晚上就可以看完。畢竟卷積、池化啥的并不是什么特別玄的東西。課程簡明扼要,一針見血,把最基礎(chǔ)、最重要的點都點出來 了。 cs231n這個是一個完整的課程,內(nèi)容就多了點,雖然說課程是computer vision的,但80%還是深度學(xué)習(xí)的內(nèi)容。圖像的工作暫時用不上,我就先略過了。 突然發(fā)現(xiàn)這兩個課程都是斯坦福的,牛校就是牛。

課程主頁 http://vision.stanford.edu/teaching/cs231n/syllabus.html百度云的視頻存檔&課件。youtube的視頻被舉報下架了,不知為毛。 http://pan.baidu.com/s/1pKsTivp

lecture 1

歷史課,吹吹水,當(dāng)作練聽力,跳過問題也不大。華裔語速還是慢,后面lecture2別人講的時候語速快得一下子懵逼了。

貌似是Fei-Fei Li唯一一次出現(xiàn)。不過人家確實是大牛,所以名字還是排在PPT前面。

lecture 2-4

機(jī)器學(xué)習(xí)的復(fù)習(xí)。當(dāng)練聽力好了。我以前寫過一篇博客,可以對照看看:[kaggle實戰(zhàn)] Digit Recognizer – 從KNN,LR,SVM,RF到深度學(xué)習(xí)。

KNN對比較復(fù)雜的圖像,增大k應(yīng)該是有效的。

svm這個hinge loss應(yīng)該看明白吧Li=∑i≠yimax(0,sj?syi+1) 不明白的自己回去復(fù)習(xí)svm了。

計算拆解到activation gate,back PRopagation物理解釋。以前就覺得是個鏈?zhǔn)角髮?dǎo)沒啥特別。 image

下面這個圖不錯, mark一下。 image

這幾節(jié)課,復(fù)習(xí)之余,主要還可以gain some image intuition

lecture 5

提醒可以利用pre training好的模型,比如Caffe Model Zoo的。再finetune自己的own data。看了下,貌似都是圖像的。估計其他的太domain specific了。畢竟圖像問題挺棘手的,目前深度學(xué)習(xí)確實帶來不少突破,其他領(lǐng)域要用深度學(xué)習(xí)的話,感覺有點玄。 image

activation functions

以前看keras的文檔提到ReLu,還以為很復(fù)雜,其實式子很簡單,簡單就是好啊。 image

重要的是理解背后的原因 * sigmoid sigmoid各種不好,然后就開始改進(jìn)了。 image 這里寫圖片描述 TLDR是too long; doesn’t read

Data Preprocessing

UFLDL里面的zca白化啥的。 image

weight Initialization

就是告訴你一個結(jié)論,weight沒初始化好的話,會影響后面的training。導(dǎo)致train出來的weight分布很不好。根據(jù)對稱性,初始化的時候如果weight不隨機(jī)那訓(xùn)練出來的weight就都一毛一樣了。bias倒是直接0就可以了。

用的時候倒是直接用現(xiàn)成的結(jié)論就好。但如果你要搞特殊的activation function,那就得注意初始化的問題了。 image relu的除以2 image

Batch Normalization

剛開始還不太明白跟preprocessing的區(qū)別,好像就是分batch做而已。聽課聽著聽著也走神了。

image

看了assignment才知道,這個是插入在網(wǎng)絡(luò)中間的layer。

However even if we preprocess the input data, the activations at deeper layers of the network will likely no longer be decorrelated and will no longer have zero mean or unit variance since they are output from earlier layers in the network. Even worse, during the training process the distribution of features at each layer of the network will shift as the weights of each layer are updated. …… To overcome this problem, [3] proposes to insert batch normalization layers into the network.

總之,是一個有點偏工程實現(xiàn)的優(yōu)化,貌似還挺有用。2015,挺新的,所以UFLDL沒有。

summary

image


http://lossfunctions.tumblr.com 居然有這個網(wǎng)站,有空可以去看看。loss算是模型直觀可視化的一個重要部分。


lecture 6

前幾頁是復(fù)習(xí)的,可以mark一下。

貌似因為DL的loss是高度非凸,所以需要下面這些優(yōu)化。LR啥的沒聽說過要用adam啥的。估計sgd就很好了。

sgd最慢momentum 動量,通俗一點貌似就是慣性的意思?

Nesterov Momentum “l(fā)ookahead” gradient, 就是先用更新后的位置的梯度。代碼實現(xiàn)的時候稍微變形了下。 image

adaGrad 梯度大的抑制一下步長。

RMSProp優(yōu)化上面的

Adam: momentum + RMSProp

image

L-BFLS好像是LR用的吧。

L-BFGS does not transfer very well to mini-batch setting.

上代碼

# 可以發(fā)現(xiàn)用alpha和1-alpha來trade-off兩個變量很常見啊。。# Momentum v = mu * v - learning_rate * dxx += v# Nesterov Momentum v_prev = vv = mu * v - learning_rate * dxx += -mu * v_prev + (1 + mu) * v# Adagrad cache += dx ** 2x += -learning_rate * dx /(np.sqrt(cache) + 1e-7)# RMSPropcache = decay_rate * cache + (1 - decay_rate) * dx ** 2x += -learning_rate * dx /(np.sqrt(cache) + 1e-7)# Adamm = beta1*m + (1-beta1)*dxv = beta2*v + (1-beta2)*(dx**2)x += - learning_rate * m / (np.sqrt(v) + 1e-7)12345678910111213141516171819202122231234567891011121314151617181920212223

Regularization: Dropout

2014,也是挺新的。注意效果是regularization。

Forces the network to have a redundant representation。簡直就是為圖像設(shè)計的,因為物體換不同角度,或者只出現(xiàn)局部啥的,并不影響人類識別物體。test的時候可以多次dropout采樣求平均。 Monte Carlo approximation: do many forward passes with different dropout masks, average all redictions;或者直接不dropout,那就注意數(shù)值要scaling一下,不然值肯定比原來drop的時候偏大啊。一般選不dropout吧,練習(xí)里用這種。

lecture 7

cnn時候的stride,padding等概念。挺簡單,但肯定要弄清楚,調(diào)參俠調(diào)參肯定碰到。多層conv之后,一個點能看到的原始圖像范圍會變大,所以conv有點像在層層抽象特征,從點到線到面的感覺。conv圖像上是解釋得通,其他領(lǐng)域就不知道了。當(dāng)然這門課就是圖像的。pooling直觀上看數(shù)據(jù)會被降維。當(dāng)然對于圖像,冗余信息很多。看到的max pooling居多,average pooling其實就是圖像尺寸的縮放,大圖生成縮略圖。所以pooling在圖像上也是有物理含義的。relu之前在另外地方看到,可以用區(qū)分信號、噪聲來解釋。

有沒感覺到,DL簡直就是為圖像問題定制的?

image

最后截個圖。smaller filter對計算有利,后面有課程講到。

lecture 8

圖像相關(guān)的。先略吧。Fast R-CNN,F(xiàn)aster R-CNN啥的,名字這么屌。YOLO最快,后面有時間直接玩玩這個吧。

lecture 9

告訴你怎么可視化和fool CNN。剩下一些圖像的東西。DeepDream啥的。

lecture 10

RNN(Recurrent Neural Networks,不會翻譯的就直接用英文吧,貌似有人翻譯錯了),LSTM(Long short term memory)。也沒有很神的東西,就是改變一下網(wǎng)絡(luò)結(jié)構(gòu)。所以不要害怕。可以看看 min-char-rnn 的代碼作為切入點。

RNN

image

其實就是多加上h(t-1)這玩意,activation function用的是tanh,不知為毛。

image

RNN有多種結(jié)構(gòu),最簡單是Vanilla RNN。assignment就用這種。

image

Image Captioning 這個例子挺有意思的,就是通過CNN提取圖像特征h0給RNN,然后RNN的輸入就是一串Word id,中間傳遞的h(t)就是夾雜圖像feature和word id的東西。很難想象這樣居然work。細(xì)節(jié)自己做assignment吧。

LSTM

感覺講得不怎么好,不如看這篇http://colah.github.io/posts/2015-08-Understanding-LSTMs/, 現(xiàn)在google LSTM,這篇已經(jīng)排第一了,果然群眾的眼睛是雪亮的。

lecture 12

學(xué)習(xí)caffe、theano、lasagne、keras等的讀音。每個庫的pros / cons總結(jié)。不過最好還是得自己動動手,才能加深理解。先簡單過一遍把,實踐過后再來仔細(xì)看看第二遍,有些事情你沒經(jīng)歷過不會明白的。

image


Assignment

年紀(jì)大了,挑了一些做,沒完全做完。

assignment 1

年紀(jì)大了,原本不想做。但是得熟悉一下numpy,不然后面assignment的有點吃力。熟悉octave的話,也不會太吃力。

knn讓你感受一下vectorized方式代碼速度快多少。因為可以底層代碼可以針對矩陣計算專門優(yōu)化。linear_svm的vectorized實現(xiàn)費了不少腦子。直接從naive實現(xiàn)去推,或者自己畫了個矩陣的示意圖推吧,一步步來也不難,空想有點繞的。Hinge loss 是一個凸函數(shù),不過它有些點不可微的,只是有subgradient。之前學(xué)svm都是用對偶、smo啥的來解,為什么?(這里有篇Quora大概意思就是說能方便使用kernel,處理原始線性不可分的情況,優(yōu)化的參數(shù)少了,跟數(shù)據(jù)維度無關(guān)了)。 sgd并不stable,多跑幾次結(jié)果可能不一樣。這里已經(jīng)開始灌輸調(diào)參俠的思想了,挺好。linear_classifiers random choice的時候忘記X和y要用同一個采樣下標(biāo)啊。坑爹。softmax的score居然不用exp再normalize,害我查半天。現(xiàn)在腦子轉(zhuǎn)得快,直接用vectorized方式實現(xiàn)了。naive方式反而覺得得翻譯回去,年紀(jì)大就不寫了,代碼里直接調(diào)用vectorized方式的。two_layer_net 調(diào)參調(diào)參features 圖像相關(guān),HOG和color histogram都幫你寫好了。其他領(lǐng)域看看提取特征方面有沒可以借鑒的,color histogram就是一種統(tǒng)計特征。HOG看上去也是統(tǒng)計類的特征,統(tǒng)計各方向的梯度得到邊緣,沒細(xì)看,大概是這樣吧。HOG=Histogram of oriented gradient,哦,最后才反應(yīng)過來看英文全稱就好。

注意除法的時候,int可能需要轉(zhuǎn)成float。忘記在哪碰到過了。

assignment 2

雖然看內(nèi)容沒啥意思,原本也不想做。但其實是幫你熟悉modular approach,對后面看caffe、torch等源碼還是有幫助的。assignment設(shè)計得還是很高明啊。relu雖然可以看做layer上的activation function,但實現(xiàn)的時候當(dāng)作layer統(tǒng)一處理更方便。之前看keras例子的時候就有點困惑,不知道為啥代碼里FC跟activation function分開了。這樣代碼看上去并不是我想象中的一層層。之前在UFLDL里都是FC+sigmoid作一個layer。

notebook里面幫你寫好“單元測試”了,挺好的,這樣每一步都有checkpoint知道自己對了沒。

numpy默認(rèn)是傳引用,記得用xx.copy()方法返回深拷貝。

assignment 3

傳送一個tanh導(dǎo)數(shù)Dtanh

rnn_layers.py h(t)在BP的時候除了自己節(jié)點輸出,t+1節(jié)點也有g(shù)radient傳遞過來的。說多了都是淚,查半天。

小結(jié)

基本把課程學(xué)完了,感覺課程設(shè)計得相當(dāng)贊,內(nèi)容也很新。把相應(yīng)的知識都整理到一起,免得自己零零散散地找論文、找資料,還是推薦大家都系統(tǒng)地學(xué)一下比較好。課程的Materials也很棒,不要忘記看。編程的assignment就更不用說了,老老實實做下去確實能學(xué)到不少東西,加深課程的理解。講師karpathy我挺喜歡的,可以上他的博客去看看 http://karpathy.github.io/。深度學(xué)習(xí)還有另外一門cs224d,是關(guān)于nlp的 ,感覺現(xiàn)在深度學(xué)習(xí)就是圖像和nlp比較合適。公司現(xiàn)在為了DL而DL,我也不知能搞出什么東西。

轉(zhuǎn)載:http://blog.csdn.net/dinosoft/article/details/51813615


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 时尚| 九江县| 潮安县| 南平市| 黔西县| 石家庄市| 呈贡县| 延吉市| 石狮市| 青岛市| 五寨县| 囊谦县| 衡东县| 长宁区| 台中市| 自贡市| 象山县| 景泰县| 牡丹江市| 洞头县| 崇阳县| 麻栗坡县| 兴化市| 长葛市| 仁布县| 昆明市| 平南县| 依安县| 瑞昌市| 通化市| 连云港市| 林甸县| 安宁市| 东山县| 星座| 泸水县| 井陉县| 海丰县| 正镶白旗| 酒泉市| 安徽省|