【教材專區】學習AI有困難? 讓Cupoy助教來幫你!
學習資料科學時遇到問題,希望能有專業人士線上即時為您解答嗎? 想提高模型準確率,卻不知從何問起嗎? 如果您有以上的需求,歡迎來參加我們每週一次的線上助教時間!
內容簡介
作者介紹
適合人群
你將會學到什麼
購買須知
-
2022/05/14(六)20:00-21:00 助教時間
-
【免費直播】學習AI有困難? 讓Cupoy助教來幫你! - 第一堂分享會 - YouTube
筆記連結:https://www.cupoy.com/collection/0000018008CD5D70000000046375706F795F72656C656173654355?layoutType=content提問表單:https://forms.gle/P7XELxgJncn7kL6y6Zoom 會...
-
【QA】有哪些文字表示模型?它們各有什麼優缺點?
文字本身是一種非數值化的資料,無法直接被計算。 我們需要將文字轉換成機器看得懂的形式。我們將文字訊息轉成結構化的電腦可讀資訊,就稱作:單詞表示 (word representation) 。 文字本身是一種非數值化的資料,無法直接被計算。 我們需要將文字轉換成機器看得懂的形式。我們將文字訊息轉成結構化的電腦可讀資訊,就稱作:單詞表示 (word representation) 。 獨熱編碼(One-hot encoding): 整數編碼(Integer encoding) 詞嵌入向量 (Word Embedding) 詞袋 (Bag-of-words) 模型 TF-IDF Word2Vec GloVe
-
【QA】Batch Size 是甚麼?
Batch Size 示意圖:
-
【QA】Cross entropy 作為損失函數帶來哪些好處?
回歸?分類? 分類任務使用的損失函數為錯誤率,Error rate,但這樣使用並不直觀。 因此由熱力學引入,熵(Entropy): 而我們使用交叉熵(cross-entropy)來計算分類任務的LOSS:
-
【QA】常用的激活函數有哪些?
一般機器學習使用之神經元如下圖: 使用的激活函數、激勵函數為下: 常用的激活函數有:
-
【QA】過擬合、欠擬合與誤差之間的關係?
誤差可分作Bias 與 Vaiance: 在機器學習訓練模型的過程中,驗證資料集的誤差曲線如下: 過擬合、欠擬合如下圖:
-
-
2022/05/17(二)20:00-21:00 助教時間
-
【免費直播】學習AI有困難? 讓Cupoy助教來幫你! - 第二堂分享會 - YouTube
筆記連結:https://www.cupoy.com/collection/0000018008CD5D70000000046375706F795F72656C656173654355?layoutType=content 範例程式碼連結:https://drive.google.com/drive/u/2/fol... 備註:影片前三十分鐘為設備測試,學員觀看時可直接跳過測試環節。
-
【QA】什麼是降維(Dimension Reduction)?
https://drive.google.com/drive/folders/1WoTFt_kFeMQN9H0bB-t_FWVTfOXyDnE8?usp=sharing 廣義問題1,2,3 1.什麼是降維? 降維廣義上來說是指通過保留一些比較重要的特徵,去除一些冗餘的特徵,減少數據特徵的維度。 而特徵的重要性取決於該特徵能夠表達多少數據集的資訊,也取決於使用什麼方法進行降維。 一般情況會先使用線性的降維方法再使用非線性的降維方法,通過結果去判斷哪種方法比較合適。 2.甚麼情況下用? 1)特徵維度過大,可能會導致過擬合時 2)某些樣本數據不足的情況(缺失值很多) 3)特徵間的相關性比較大時 3.降維的好處? (1)節省存儲空間; (2)加速計算速度,維度越少,計算量越少,並且能夠使用那些不適合於高維度的演算法; (3)去除一些冗餘的特徵(原數據中既有平方米和平方英里的特徵--即相關性大的特徵) (4)便於觀察和挖掘資訊(如將數據維度降到2維或者3維使之能可視化) (5)特徵太多或者太複雜會使得模型過擬合。 降維方法兩大類: 1.特徵選擇(Feature Selection): Backward Elimination 反向淘汰 Forward Selection 順向選擇 Bidirectional 雙向淘汰 2.特徵提取(Feature Extration): 主成分分析(PCA) 核函數主成分分析 (KernelPCA) LDA Note: 通過提取之後產生的自變量跟原來的自變量完全不一樣了。 主要降低自變量個數 當數據裡面有m個自變量時,主成分分析PCA可以從所有自變量中提取出p個新的自變量(p<=m), 這p個自變量可以較好的解釋數據自變量的差異性(方差),無論因變量是多少。 PCA是一個非監督式學習,因為它的因變量不被考慮在內。 通常在數據預處理當中 PCA:尋找最大方差所屬方向 後來的自變量為原本自變量重組後的結果。 總結一些降維方法
-
【QA】如何使用PCA(主成份分析)做資料降維?
step1 : 將X記做包含了所有m個自變量的矩陣,對X進行特徵縮放 step2 : 計算X的方差矩陣, 並將這個方差矩陣記做A; step3 : 計算矩陣A的特徵值(eigenvalue)和特徵向量(eigenvectors); step4 : 選擇需解釋方差的百分比P, 並選取前p個特徵值使得: stpe5 : 對應前p個特徵值對應的特徵向量就是最終選取的主要成分。 運用投射矩陣(這個矩陣由選取的p個特徵向量組成),最初的m維特徵空間被投射到p維空上。 直接看code! Kernel PCA: 線性不可分--> 透過kernel PCA將資料投射到高維空間。 資料在高維的空間中就變成線性可分, 接著再進行一般的主成分分析PCA,以達到降維效果。
-
【QA】LDA和PCA有什麼相同和相異之處?
先導數學知識準備 在正式深入理解之前還是需要鋪墊一些線性代數的基本概念及其計算公式,以方便大家理解之後的數學符號以及矩陣運算的推導過程。 1.1.1 內積與投影 兩個向量A,B內積的計算公式爲, 1.1.2 方差 用於描述數據的離散程度,計算公式爲, 一般爲了簡便計算,我們會對數值進行去中心化處理,即mu爲0,則此時計算公式可簡便爲, 1.1.3 協方差 用於描述倆個變量之間的相關性,數值去中心化處理以後,其計算公式爲, 利用該公式可以推廣出矩陣X的協方差矩陣的計算公式爲, 1.1.4 矩陣求導的性質 矩陣的求導,有如下性質, 矩陣的跡(即矩陣的對角線元素之和)有如下性質, 1.2 PCA基本概念理解 PCA(Principal Component Analysis),中文名爲“主成成分分析”。顧名思義,其目的就是找到高維數據中的主成分,並利用“主成分”數據,來表示原始數據,從而達到降維的目的。借鑑一個簡單的例子,假設有一組數據存在於三維空間的一個平面上(此時需要3個維度來表徵數據向量),若我們選擇旋轉座標軸使得數據所在平面與x,y平面重合,則此時我們只需要2個緯度即可表徵數據,且沒有丟失任何數據信息,這就是最簡單的數據降維。但是現實生活中的情況,往往數據特徵高達上百甚至上千維,我們很難直觀去找出一組基平面來完成對數據的降維,此時PCA就有其用武之地了。先直接上一張PCA分解後的圖來幫助大家理解。 如圖可見,綠色線爲第一主成成分方向,黑色線爲第二主成成分方向。仔細觀察一下圖,大家是否能得出如下倆個結論: (1) 樣本點在綠色線上的投影其離散程度要大於其在黑色線上的投影程度。(2) 樣本點到綠色線的平均距離都要小於其到黑色線的距離。 (2) 樣本點到綠色線的平均距離都要小於其到黑色線的距離。 兩個結論歸納爲最大可分析性和最近重構性。其中最大可分性可以理解爲我們希望降維過後的數據不影響後續我們對其的分類處理,其數據特徵的差異性仍然足夠強,也即方差最大;最近重構性可以理解爲我們希望降維過後的數據仍然保留有其主要的特徵,也即數據樣本點到這個超平面的距離和最小。 最大可分性理論的目標函數就是最大化數據在主軸上的投影的方差。假設現有一組已去中心化的數據 X 投影后的方差就是協方差矩陣的特徵值,而我們想要的最大方差,顯然就是協方差矩陣最大的特徵值,最佳投影方向就是最大特徵值所對應的特徵向量。 PCA降維的流程,如下: (1)樣本去中心化 (2)計算樣本的協方差矩陣 (3)對協方差矩陣做特徵值分解 (4)取最大的 個特徵值所對應的特徵向量 (5)計算投影矩陣 2.1 LDA基本概念理解 LDA(Linear Discriminant Analysis),中文名爲“線性判別分析”,是目前數據挖掘領域中比較經典且熱門的一種有監督的算法。從降維的層面考慮,其也是在尋找一個投影矩陣,使得投影之後數據樣本,同類的接近,而不同類的遠離。(其作爲分類器的時候,就可以對新的數據也進行投影,依據與哪一個類別接近來確定類別)。 仔細觀察投影後的結果,不難發現,LDA的中心思想就是最大化類間距離以及最小化類內距離。 LDA用於降維的流程,歸納如下, (1)計算每個類別的均值 ,全局樣本均值 (2)計算類內散度矩陣 ,全局散度矩陣 ,類間散度矩陣 (3)對矩陣 做特徵值分解 (4)取最大的 個特徵值所對應的特徵向量 (5)計算投影矩陣 PCA和LDA的相同點和不同點: LDA用於降維,和PCA有很多相同,也有很多不同的地方,因此值得好好的比較一下兩者的降維異同點。 首先我們看看相同點: 1)兩者均可以對數據進行降維。 2)兩者在降維時均使用了矩陣特徵分解的思想。 3)兩者都假設數據符合高斯分佈。 我們接著看看不同點: 1)LDA是有監督的降維方法,而PCA是無監督的降維方法 2)LDA降維最多降到類別數k-1的維數,而PCA沒有這個限制。 3)LDA除了可以用於降維,還可以用於分類。 4)LDA選擇分類性能最好的投影方向,而PCA選擇樣本點投影具有最大方差的方向。
-
【QA】在對資料進行預處理時,應該怎樣處理類別型資料?
-
請問有甚麼圖表可以直接展示出所有特徵值對於y的相關程度呢?
請問有甚麼圖表可以直接展示出所有特徵值對於y的相關程度呢? - Cupoy [特徵選擇]使用皮爾遜積差相關係數來做特徵選擇 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)
-
-
2022/05/28(六)20:00-21:00 助教時間
-
【QA】如何給二分類模型打分數?
給模型打分數為何需要這麼複雜,我們可以知道在學習的過程中不會都順利,不論是訓練的資料或是模型本身,如果評估的方式很簡單,那麼就無法兼顧每個面向,意思就是不能只看到表面的數值。 Part 1 Accuracy 先以大家常見、常用的指標出發,Accuracy中文是準確率,從小到大如何得知準確率,例:考試題目有10題,答對5題,答對率就是50%,文字說明就是正確的比例,那為甚麼不用這個當作評估模型的指標就好,下面舉出另一個例子 今天訓練出兩個動物分類器,分類對象為90隻狗跟10隻貓: 1號分類器: 分類結果為85隻狗、15隻貓,代表有5隻狗和5隻貓被分類錯誤,準確率為90% 2號分類器: 分類結果為100隻狗、0隻貓,代表有10隻貓被分類錯誤,準確率為90% 可以發現兩個分類器的Accuracy都為90%,以數值來看兩者效能相同,但就分類結果來看也知道1號分類器能夠對兩種動物分類,而2號分類器完全無法對2號分類器分類,顯然2號分類器效能更差。 引出了Accuracy指標的問題,當兩個類別數量不平衡時,Accuracy就有可能會無法呈現出真正的意義。 Part 2 Confuse Matrix 為了避免因為類別不平衡導致的衡量問題,下面介紹混淆矩陣,如下表 其中有四種情況,分別是TP、TN、FP和FN,各自代表的意義為 1. TP(True Positive):正確預測成功的正樣本 2. TN(True Negative):正確預測成功的負樣本 3. FP(False Positive):錯誤預測成正樣本,實際為負樣本 4. FN(False Negative):錯誤預測成負樣本,實際為正樣本 舉以下例子,假設有8張圖片,5隻狗跟3隻貓,狗為0(正樣本)貓為1(負樣本),拿一個訓練好的模型對這8張圖預測,實際情況為:[0,0,0,0,0,1,1,1],預測結果為:[1,1,0,0,0,1,0,1],此時將結果放到混淆矩陣內為下表 以左上角TP說明,TP為正樣本被預測為正的數量,正的為前五筆,前五筆被預測結果有三筆一樣為正,因此TP為3,其他TN、FP和FN同理,接著要介紹的評估指標會透過混淆矩陣的這四個指標去計算得出。 Precision Recall F1-score Accuracy Accuracy前面提到,從公式也能看到實際運算,分母為全部要分類的數量,分子為分類正確的,對應剛剛90隻狗跟10隻貓的範例,得到在此指標下會因為類別失衡導致結果沒意義。 看到precision,分母為TP+FP,簡單來說就是預測結果為正標籤的數量,也就是100,分子為TP,也就是原本正,分類完也是正的,有90,結果為90/100=90%。 Recall,分母為TP+FN,為90+0,分子為TP,為90,結果為90/90=100%。 接著看到F1-score,分母為precision+recall=0.9+1,分子為2*precision*recall=2*0.9*1=1.8,結果為1.8/1.9 = 94.73% 當看到F1-score時,就能知道這個分類器不是完全準確,但效果也不差。 狗:50、貓:50,分類結果 狗:100、貓:0 precision=50/100=50% recall=50/50=100% F1-score=50% 如果只顯示出recall就無法真正顯示分類器效能。
-
【QA】正規化(Normalization)為什麼能夠提升機器學習的成效?
連結直接舉例來說明,有兩個物品的資料,分別如下表 用網路流量當範例,平常在傳輸的都是正常流量(Normal),少數時候會遇到攻擊流量(Attack),上表顯示的封包大小和傳輸速度是分別在正常和攻擊下的數值,可以發現第一個現象為封包大小的最大值跟最小值差距較大,而傳輸速度中的最大值和最小值差距較小。 第二個現象為當今天要分辨是否為正常或攻擊時,兩個特徵都是可以觀察的,以封包大小為例,正常流量傳輸時封包都會有一定內容,而攻擊者只是為了傳輸大量封包,因此攻擊的封包大小較小。傳輸速度則是攻擊者希望用越快的速度去傳輸,以癱瘓受害者頻寬。簡單來說就是兩個特徵都是很重要的。 了解以上兩個現象後,從機器學習的角度切入,機器在學習分類正常和攻擊時不是像我們用上述文字來推敲,而是學習上表中的數值,而這些數值也能畫成如下的座標 以最直接的KNN來說,該模型會需要計算每一個點和其他點的距離來做分群,計算距離就會有問題,第一個特徵為封包大小,差距為980,而傳輸速度差距僅有50,看起來就像是這兩筆數據的傳輸速度是接近的,而能真正比較出兩者差距的是封包大小,但事實上兩筆數據的兩個特徵都有很大的差距,只是在於特徵值的大小或標準不同。 如何讓不同的特徵都有相同的標準去給機器學習,就會用到正規化(Normalization),將數值縮放到[0, 1],公式如下列所示,這個方法基本上是所有的數據在訓練前都會經過的預處理,常常看到範例程式碼中會有這個動作就是為了讓後續學習能更好。接著看經過正規化後的數據長怎樣 因為現在每個特徵只有兩個數值,因此最大值會變1,最小值會變0,當每個特徵的數值更多時會看到所有數值在轉換後都介在0~1之間,可以發現兩個特徵的差值都變成1,也代表機器在看這兩個特徵時會是相同的距離,不會像前面一樣A特徵的差值較大因此較能夠分類兩者。 總結 正規化後的數據分布並不會改變, 一樣保持相同的分布,從範例也能看到,因此並不影響機數據間在空間上的分布情況。 能夠有效地讓所有特徵都有相同的單位標準,不會因為數值範圍不同而有所影響。 範例 from sklearn import preprocessing from sklearn.datasets import make_classification import matplotlib.pyplot as plt ## 生成具有兩個特徵,共100筆數據 X, y = make_classification( n_samples=300, n_features=2, n_redundant=0, n_informative=2, random_state=20, n_clusters_per_class=1, scale=100) ## 可視化數據 plt.scatter(X[:,0], X[:,1], c=y) plt.show() #################################### # 將數據標準化 X = preprocessing.minmax_scale(X, feature_range=(0,1)) ## 可視化數據 plt.scatter(X[:,0], X[:,1], c=y) plt.show() https://drive.google.com/drive/folders/1qktFFBon0BzfmNuqIHEVq5V3p9TJR2xp?usp=sharing
-
【QA】為何用CNN來做影像處理?
Part 1 在最開始先提到簡單的深度學習架構-DNN,接著就會介紹耳熟能詳的CNN,讓大家先了解DNN後再去看CNN,就會發現為甚麼CNN為大多數常用的深度學習方法。 DNN的樣子 圖片來源:https://jason-chen-1992.weebly.com/uploads/1/0/8/5/108557741/dnn_orig.png 上圖是一個簡單的DNN架構,分為input layer(輸入層)、hidden layer(隱藏層)和output layer(輸出層),輸入層和輸出層是固定的,隱藏層這東西是包在輸入層以及輸出層中間的,也可以說是隱藏在中間的那幾層就稱為隱藏層。 DNN從字面上來看就是深層神經網路,但要有多少數量的隱藏層才算深沒有明確定義,可以是5層、20層或是說要50層才算,理論上來說整個架構越深可以讓模型學到更多東西,但實際上越深不代表越好,要依實際應用而定。 回到上面的圖,input layer中的每一點都會連接到hidden layer 1的每一個點,像這樣子的話有另一個專有名詞叫做「全連接層, Fully Connected Layer」。這一段記住一個重點,就是**每一點都會連接到下一層的每一點**。這裡所說到的「點」都是指「神經元」,也就是說輸入層有8個神經元,所有的hidden layer和output layer也依此類推。 --- Part 2 剛剛看到input layer的每一個神經元會連接到下一層中的每一個神經元,連接起來是口頭說法,實際上電腦做的事情是將兩個神經元相乘,以下圖舉例,一個簡單的深層網路,特別將輸入層中的一個神經元連接情況用不同顏色標註,紅色線條做的事情就是(2*2),紫色線條為(2*5)而綠色線條則是(2*1),這是一個最簡單的說明,想像一下假如每一層的神經元都幾百幾千個,電腦一次要計算這麼多的數字,想必是要計算的東西越多會讓整體時間越長。 目前了解了每一點都會連接到下一層的每一點以及電腦做的事情是將兩個神經元相乘這兩個重點,就會發現為了讓層數更深,勢必會有更多的神經元,這樣會讓電腦做的事情增加,建構好一個架構後可以計算一下參數量,參數量簡單來講就是指整個網路的複雜度,參數量越多複雜度越大,計算時間也越長。這樣就進一步想到真的有需要在隱藏層用全連接層嗎,以及CNN為甚麼可以達到更好的效果並且參數量比DNN來的更少。 有需要在隱藏層用全連接層嗎: 1. 參數量多 : 全連接層的參數量藉由剛剛的說明了解到,在深層網路裡的參數量只會隨著深度而增加,雖然是為了達到更好的效果,但更大的問題在於計算時間和複雜度很高,這裡可以先想像全連接層能夠讓時間花越多,並且帶來比其它方法還要好的效果。 2. 真正的需求 : 當今來看會用到深度學習的應用有目標檢測、影像辨識等等,舉例來說今天我們要訓練一個能夠分類不同種類的狗狗時,以人來說,人類是靠毛的顏色、狗的外觀(例:鼻子嘴巴眼睛樣貌)或是體型來分辨是哪種狗狗,機器也一樣,只要讓機器學習到每一種狗狗毛的顏色、外觀體型等等的就能讓機器認出不同的品種。 以下圖說明,一張圖為20 * 30個pixel,假設只有一層隱藏層,這樣參數量就有(20*30)*100=60000,另外這600個點就代表圖中的任一點,隱藏層的100個神經元將這輸入的600個點都訓練,這樣對機器來說是多餘的。 圖片來源:https://www.google.com/url?sa=i&url=https://digiphoto.techbang.com/posts/10182-why-do-you-take-black-and-white-photos&psig=AOvVaw35rDiTLhrcPquyGCf7cdxo&ust=1644911180183000&source=images&cd=vfe&ved=0CAsQjRxqFwoTCKCVxufZ_vUCFQAAAAAdAAAAABAD --- Part 3 CNN最重要的精神就是卷積這個東西,為甚麼常常聽到CNN對圖像有很好的分類效果,對應到前面說到的,機器真正要學到的東西就只是一張圖片中關鍵的地方,DNN中隱藏層中每個神經元都會連接輸入的每一點,等於每個神經元都會訓練到完整的圖,是多餘的,另外就是參數量過多的問題。 在CNN裡隱藏層不使用全連接層,而是指在輸出層前才使用,為了避免DNN的問題,使用卷積能夠解決在DNN中參數量過多和不必要的訓練問題,可以把CNN的一個filter想像成DNN中一個神經元,但這裡不同的是filter可以根據設定的大小去抓取一張圖中特定範圍的像素,而filter會對整張圖用「滑動窗口」方式做計算。用下圖進一步說明為甚麼filter可以避免在DNN中有不必要訓練的問題。 圖中有兩個filter,大小為3*3,fulter中每個權重值如圖,並且兩個filter值不同,接著用這兩個filter對同一張圖做卷積,可以發現filter1權重值為1的地方是斜的,代表filter1和其經過的區塊相乘後,只有為1的點會有值,filter2同理,將重點放在filter2,當filter2經過中間樹幹的地方時,跟filter相乘會發現只有樹幹的地方會有值,其他部分相乘後都為0,代表filter是負責樹幹的特徵,而filter1就可能是負責樹葉,因為兩個filter的權重值不同,就算兩個filter都對整張圖處理,但出來的結果會相同。每個filter負責不同部分,避免DNN的不必要訓練問題。
-
【QA】在圖像分類任務中,訓練資料量不足會帶來什麼問題?如何緩解資料量不足帶來的問題?
前述 訓練時會有各種不同應用,而不同的應用中不會是所有數據都很好取得,以要談的圖像分類任務為例,要訓練一個動物分類器需要很多種類的動物,常見的貓咪和狗狗等等的很好蒐集,但如果是獅子、大象等等的相比貓狗而言非常難獲取。 如果這些難取得的動物類別只有少量數據,拿這些少量數據肯定無法讓分類器好的效果,此時需要有補充數據量的方法,藉此緩解資料量不足的問題。 Part 1 訓練資料量不足會帶來甚麼問題? 1、機器和人相似,對一個東西要學習足夠才有相當的能力做分類,因此資料量不足會帶來的最直接問題是模型缺乏訓練,分類效果不佳。 2、假如模型要訓練兩個類別,類別比為1000:1,當模型訓練這兩類後會發現後續對少數的類別分類效能較差,因為模型訓練時會不斷更新權重,而訓練時的損失函數或優化函數都偏向於多數類,等同多數類會將少數類蓋過。 如何緩解資料量不足帶來的問題? 1、第一個問題提到CNN可以有效訓練圖像並分類,因此這裡都用CNN來說明,在圖像分類中無非是要獲得更好的圖像辨識器,第一個解決方法就是「Data Augmentation」,藉由對原始圖像旋轉、裁切、增加噪點、白化等技術,將原本的圖片做了一些「變化」,就能獲得和原先圖像不同的資料。 圖片來源:https://chtseng.files.wordpress.com/2017/11/4674_hxh_mbr4kq.png 2、對圖像進行採樣,這裡介紹SMOTE,是一種採樣方式,透過對需平衡的樣本計算離其最近的數據,並利用自身和最近數據得到新增的數據點。此方法可以得到近似於自身的數據,但又不完全相同,和Data Augmentation生成的也不太相同。 3、抓取原始數據特徵並生成,前面都是利用原始數據本身來生成,但可以利用每個類別都有不同特徵的觀點出發,例如貓跟狗一定有不同特徵,就可以利用抓取特徵的方式來生成,VAE就是一個很好的方法,利用原始數據訓練編碼/解碼器,編碼器能抓取特徵,而解碼器就根據此特徵就能生成想要數量的資料。 Part 2 介紹了三種不同的方法,分別是Data Augmentation、SMOTE和VAE,整理三者的優缺點 Data Augmentation 優點: 透過對原始圖像做翻轉、裁切等等的簡單操作可以很快速的獲得資料量。 缺點: 經由圖像處理後的圖片有可能失去本身擁有的特性,例如模型訓練翻轉後的圖像後,變得無法分類原始圖像。 SMOTE 優點: 能夠生成跟自身較相近的圖像。 缺點: 需大量計算時間、假如周圍鄰居相隔較遠則無法有效生成相近數據。 VAE 優點: 抓取特徵後,透過VAE中的解碼器(生成器),能快速生成所需數量的數據,且一定包含原始圖像所擁有的特徵。 缺點: 假如原始數據量過少,會發生訓練編碼/解碼器時缺乏訓練,後果是編碼或解碼時不會是預想中的數據。
-
-
2022/05/31(二)20:00-21:00 助教時間
-
2022/06/11(六)20:00-21:00 助教時間
-
【QA】集成學習(Ensemble Learning)中的boosting方法是什麼?
Bagging and Boosting 在集成學習中,這兩者是相提並論的主流方法。 Bagging(Bootstrap Aggregation)分成兩個部分,Bootstrap和Aggregation。Bootstrap是基於機率論上的大數法則(Law of large numbers)發展而來,也就是實驗重複越多次,累積結果的統計值越逼近母群體的參數。我們都知道丟骰子任何一面出現的機率都是1/6,但你實際上丟6次的結果又如何呢?這個就是我們實現次數太少導致的結果,依循大數法則,你可以預期當你投600萬次,每一個點數出現的次數應該都是100萬次左右,這就是大數法則的意義。 所以在Bootstrap階段我們會不斷的重複抽樣,並用抽出來的子集合訓練一個弱的模型,然後放回,重複實驗,不斷產出新的弱模型。最後Aggregation的階段就是讓所有弱進行投票,得到預測結果。如果把每個弱模型分開來看可能varience很大,但把不同的varience很大的model集合起來看以後,varience就被縮小了。 使用Bagging的時機 當model的複雜度很高,擔心會過擬合(overfitting)時才做bagging 減低varience Decision tree很容易overfit所以特別需要,用Decision tree做bagging的結果就是Random Forest Boosting方法 A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting, 1997 如剛才所提到,Bagging是用在很強的model,也就是複雜度高的模型,與之相對Boosting是用在很弱的model。 當你有一個很弱的model,你沒辦法讓他充分的fit你的data時,你就會想要用Boosting。 特色 Bossting有一個數學上,很有力的Guarantee(保證) 假設你有一個ML的演算法,它可以給你一個錯誤率略低過50%的分類器。(這樣是一個很爛的模型) Boosting的方法可以保證讓這些錯誤率略低於50%的分類器,最後的錯誤率達到0%。(不過可能是過擬合) Boosting的framework(框架) 找一個f1(x)分類器 找另一個f2(x)來輔助f1(x) 注意: f1和f2不可以相似, 他們的特性需要是互補的 再找一個f3跟f2是互補的, 再一個f4跟f3互補........ 以此類推,找到n個,舉例來說:100個分類器,再把100個集合起來,就可以得到很低的error rate. 就算每一個都很弱也沒關係 要注意的是: Boosting的classifier(分類器)的訓練是有順序性的, 要先找f1, 才有f2, 才有f3...... Bagging的分類器是沒有順序問題的, 100顆決策樹可以平行製作 用AdaBoost產出互補的分類器 互補可以很直觀的理解為「解決你沒能解決的問題」也就是處理殘差,最簡單的方法就是針對前一個模型分類錯誤的資料點進行補償。這裡我們用經典的AdaBoost(Adaptive Boosting)來做簡單說明。 首先,我們還是做Bootstrap進行重複抽樣,設定對所有資料點的抽樣權重是相同的1。 訓練f1(x),並記錄抽樣到的x子集合中包含哪些資料點,在這裡將f1稱為stump1。 評估f1(x),針對分類錯誤的資料點,調整進行抽樣時的抽樣權重,並降低分類正確者的抽樣權重 評估f1(x),計算Total Error,並基於該值計算f1在最後投票時的話語權(最後投票時並不是每一票都等值的) 以此類推訓練f2(也就是stump2),重複執行,直到達到停止條件。 小結 Boosting方法能夠有效率地找到並克服不好訓練的資料點,適用於模型複雜度不高,或者資料點複雜度高的情況。如果覺得AdaBoost不太有效率,你也可以採用Gradient Boosting方法來執行,受限於篇幅這邊就不做太深入的討論,大致上Gradient Boosting是先初始化第一個分類器的目標函數g0(x),第二個分類器的目標函數則是g0(x)+α1f1(x)=g1(x),以此類推,第三個分類器的目標函數就是g0(x)+g1(x)+α2f2(x)=g2(x)。透過不斷迭代來找到優化方向。 以上就是Boosting方法的分享。
-
【QA】甚麼是聯邦式學習(Federated Learning)?
-
【QA】XGBoost 與 GDBT 在演算法與模型成效上有什麼差異?
-
【QA】高維資料的處理
-