###### tags: `誠實面對自己` # ML學習進度 ###### tags: `deep learning` ## [CNN, RNN, DNN的差別](https://bit.ly/3i7UM2c) [Deep learning](https://zhuanlan.zhihu.com/p/25794795) - ML的主要分成 - supervised semi-supervised、 transfer、 unsupervised、 reinforcement learning - 步驟分為: - Training - 訂 function set (Model) - 將Data丟入Model裡,評估是否為好的function - 選一個好的去自動挑選function - Testing - 將training的結果拿其他的Data做測試,看成效如何 - 名詞 - Lose function - underfitting - overfitting - 方法:gradient descent - learning rate * 分類問題的解法,使用**Genreative Model**的方法,利用機率高or低做分類,並假設sample出來的Data是Gaussian Distribution,對這些Data試圖去找最接近的Gaussian Distribution的 mean和 variance(使用Likelihood)。 * 若低維度的分類不夠準,可以**考慮更多的feature**,提高維度,再對每個類別做Likelihood,可能可以得到更準的結果。 ### **更簡易求得機率(只需知道w和b)做分類->logistic regression** - logistic regression+square err無法對learning rate做有效更新。 ![](https://i.imgur.com/XwdBQ2E.png) ![](https://i.imgur.com/Rxnc7Ob.jpg) - **語音辨識**,是神經網路,disciminative方法,但整個語音辨識系統是**generative**方法,DNN只是其中一塊而已。 - generative方法的優點是可以把prior和class dependent拆開考慮,prior只需要文字的Data再去爬網路上出現某段文字的機率,class才需要語音和文字配合,會把prior計算的更精確。 - 多類別的分類 - ![](https://i.imgur.com/fpc2Brf.jpg) - 由於用 logistic regression 不能總是有效的做好分類,可使用**feature transformation**,但也很難簡單的找到好的轉換,所以用**cascade logistic regression models** 的方式: - 先將input做feature trans.用一條直線把兩個類別分開 - 再將其output使用另一個logistic regression model做分類。如此稱為一個Neuron,由多個 Neuron串起來稱為 Neuron Netwok(Deep learning)。 ![](https://i.imgur.com/CPm10dv.jpg) - 核心概念 : gradient descent - 決定sturcture的意義就是決定了function set - 用於影像辨識的loss function是用NN的output去和target做cross entropy的總和,再挑一個最小的network 參數 - **[softmax]()** 為一種loss function,特點為其向量裡面每個dimension數值介於0~1之間,且所有dimension加起來的值為1. - **[keras]()**:為Tensorflow or theano的API,優點是彈性、方便上手 - [Data來源](http://yann.lecun.com/exdb/mnist/) - 訓練步驟: - 1.建network ![](https://i.imgur.com/gkKhLmh.jpg =300x200) - 2.選定loss function and optimizer (決定learning rate.的方法) ![](https://i.imgur.com/NPspTvA.jpg =300x200) - 3.設定epoch and batch size後開始訓練 ![](https://i.imgur.com/xiGEAsn.jpg =300x200) ![](https://i.imgur.com/0MZp1Kj.jpg =300x200) ### **min-batch** - 一個epoch有數個batch,每看一次batch就更新一次參數,有別於stochastic gradient desccent的地方為,雖然batch size大,更新次數較少,但將不同的向量放在同個矩陣,可以讓GPU對其運算加速,使得速度更快。 - ![](https://i.imgur.com/Dd2BpV1.jpg =300x200) ps:要隨機分batch >8/18 >進度到:https://youtu.be/xki61j7z-30?t=3461 # [CNN的演化史](https://bit.ly/32alstD) - [CNN的精神與運作](https://bit.ly/35e7HMa) ## VGG - i.e 很多層(about16-19)的convolution layer 這篇論文在探討網路深度與正確率之間的關係,論文採固定參數的方法去增加網路深度,使用一個3X3 convolution filter的架構來對整個網路做評估. - 為提升ConvNet效能: - smaller recptive window size - smaller stride of first convolutional layer. ## [**ResNet**](https://bit.ly/3iUEBWc) - ![](https://i.imgur.com/KVzpgP7.jpg =350x500) - 有152層,為VGG的八倍. 但還是擁有比較低的複雜度 - ResNet的精神為:參考input層,reformulate the layers 為 learning residual functions 根據作者經驗,residual netwrk容易優化,可避免**vanishing gradient desecent**,且可以由增加深度來得到良好的準確度。 ## [R-CNN](https://bit.ly/2GC4OdQ) (for obj detection & semantic segmentation) ![](https://i.imgur.com/VXdWfgk.png =500x200) - 論文的摘要: - 用high-capacity的CNN去建構 [region proposal](https://bit.ly/3hl5wco) 以達成區域化及切割物件 - 當labeled trainging data稀疏時,對一個輔助的task做pre-train(圖像分類),再對稀疏資料的目標task微調網路(偵測) - 流程 - **Selective Search**產生2000(Region proposal) - 將每個region proposal經過Crop後丟入訓練完成的CNN得到固定維度的輸出(CNN feature) - 用SVM分類器區分類別 - 經由線性回歸模型校正bounding box position ![](https://i.imgur.com/9lYg1j3.png =300x200) ### [selective search](https://bit.ly/3bz9YCY) - segmentation -->執行[**Hierarchical grouping algorithm**](https://i.imgur.com/I3iv9gT.png) -->產生object proposal -->SVM辨識物體 - 衍生出multi-scale的區分 - 作者推測 - 監督式pre-train微調paradigm,對不同的資料稀疏視覺問題非常有效。 - [R-CNN問題](https://i.imgur.com/vD2lxHd.png) ## Fast R-CNN - train 比R-CNN快九倍的 deep VGG16,且在PASCAL VOC2012有很高的mAP - 再使用 **RoIpooling** 將取出的region對應到feature map輸出後,各自接上FC去做softmax分類及bbox regressor。 - **[RoIpooling](https://bit.ly/3iqIUZn)** : 是一個使用CNN且廣泛應用在物件偵測的operation。目的是對不均勻size的輸入執行max-pooling以獲得固定 size 的feature map。 - 後來演進成 **[RoIAlign](https://bit.ly/2R9E06S)** ![](https://i.imgur.com/0w6zzpk.png =500x400) - sparse object proposal可以改是detector的質量,但這問題花太多時間 - 尚有未發現的方法允許 dense boxes 表現的和 sparse proposal 一樣好,可以加快object detection的速度。 ## faster R-CNN: Toward real-time obj detection with regional proposal networks - [好文推薦](https://zhuanlan.zhihu.com/p/31426458) ![](https://i.imgur.com/DqKDIW8.jpg ) - 通过multi-task loss解决Classification(分类)和Localization(定位)的问题的 - 依靠 **regional proposal alogrithm.** 的算法,做物件偵測,去假設物件位置。 - 像**SPPNet、fast R-CNN**的進步減少了detection network的執行時間,顯示了regional proposal計算的瓶頸。 - 引入**RPN**(fully convolutional network) ![](https://i.imgur.com/7Jjg2CC.jpg =400x400) - 它和detection network共享full-image捲積特徵,實現近乎零成本的regional proposal。 - 被fast R-CNN用來做偵測 - 可以在每個位置同時1.預測object bound 2.物件分數。 - 以end-to-end的方式訓練,以產生好的regional proposal - merge RPN and fast R-CNN - 使用machanism技術,共享捲積特徵。 - RPN component 會告訴合併網路在哪看 - 對於很深的VGG-16 model,此論文的偵測系統採frame rate **5fps** - 使得在PASCAL, MS COCO的每張圖片只用了300 proposal