機器學(xué)習(xí)模型概念
LR : 事件發(fā)生的對數(shù)幾率是輸入的線性函數(shù)
優(yōu)點:
1)實現(xiàn)簡單,廣泛的應(yīng)用于工業(yè)問題上;
2)計算代價不高,LR在時間和內(nèi)存需求上相當(dāng)高效。?
3)LR對于數(shù)據(jù)中小噪聲的魯棒性很好,并且不會受到輕微的多重共線性的特別影響。(嚴(yán)重的多重共線性則可以使用邏輯回歸結(jié)合L2正則化來解決,但是若要得到一個簡約模型,L2正則化并不是最好的選擇,因為它建立的模型涵蓋了全部的特征。)?
4)LR分類器適用數(shù)據(jù)類型:數(shù)值型和標(biāo)稱型數(shù)據(jù)。??
5)LR能以概率輸出,權(quán)重可解釋性強,越大越重要。
?缺點:1)當(dāng)特征空間很大時,邏輯回歸的性能不是很好;容易欠擬合,分類精度不高。
2)數(shù)據(jù)特征有缺失或者特征空間很大時表現(xiàn)效果并不好。
推廣:多分類,softmax函數(shù)

邏輯回歸(對數(shù)幾率回歸)也被稱為廣義線性回歸模型 。線性回歸做分類考慮了所有樣本點到分類決策面的距離,導(dǎo)致兩類數(shù)據(jù)分布不均勻時將誤差非常大;LR和SVM克服了這個缺點,其中LR將所有數(shù)據(jù)采用sigmod函數(shù)進(jìn)行了非線性映射,使得遠(yuǎn)離分類決策面的數(shù)據(jù)作用減弱;SVM直接去掉了遠(yuǎn)離分類決策面的數(shù)據(jù),只考慮支持向量的影響。? ??
都是線性分類器、監(jiān)督學(xué)習(xí)算法、判別模型。1)思想不同。邏輯回歸基于概率理論,假設(shè)樣本為正樣本的概率可以用sigmoid函數(shù)(S型函數(shù))來表示,然后通過極大似然估計的方法估計出參數(shù)的值。? 支持向量機基于幾何間隔最大化原理,認(rèn)為存在最大幾何間隔的分類面為最優(yōu)分類面。2) 對數(shù)據(jù)和參數(shù)的敏感程度不同。SVM考慮分類邊界線附近的樣本(決定分類超平面的樣本)。在支持向量外添加或減少任何樣本點對分類決策面沒有任何影響;? LR受所有數(shù)據(jù)點的影響。直接依賴數(shù)據(jù)分布,每個樣本點都會影響決策面的結(jié)果。如果訓(xùn)練數(shù)據(jù)不同類別嚴(yán)重不平衡,則一般需要先對數(shù)據(jù)做平衡處理,讓不同類別的樣本盡量平衡。3)數(shù)據(jù)要求不同。SVM依賴數(shù)據(jù)表達(dá)的距離測度,所以需要對數(shù)據(jù)先做 normalization;LR不受其影響。4)細(xì)節(jié)上,SVM自帶L2正則,LR需要手動添加正則項5) 處理非線性問題。SVM通過對少部分支持向量使用核函數(shù)是實現(xiàn),LR也可以利用核函數(shù),但是需要作用在所有數(shù)據(jù)上,計算更復(fù)雜。
為什么選用對數(shù)極大似然函數(shù)作為優(yōu)化目標(biāo),用平方損失有什么問題。
其中最重要的一點就是為什么取-log函數(shù)為損失函數(shù),損失函數(shù)的本質(zhì)就是,如果我們預(yù)測對了,能夠不懲罰,如果預(yù)測錯誤,會導(dǎo)致?lián)p失函數(shù)變得很大,也就是懲罰較大,而-log函數(shù)在【0,1】之間正好符合這一點,另外還有一點需要說明,LR是一種廣義的線性回歸模型,平方損失函數(shù)的話,對于Sigmoid函數(shù)求導(dǎo)計算,無法保證是凸函數(shù),在優(yōu)化的過程中,求得的解有可能是局部最小,不是全局的最優(yōu)值。其二:取完對數(shù)之后,對我們的后續(xù)求導(dǎo)比較方便。如果根據(jù)似然函數(shù),直接計算,有兩點缺點:(1)不利于后續(xù)的求導(dǎo),(2)似然函數(shù)的計算會導(dǎo)致下溢出。
SVM

SVM基于最大間隔法,分為線性可分支持向量機、線性支持向量機、非線性支持向量機。
線性可分支持向量機通過硬間隔最大化,線性支持向量機通過軟間隔最大化,非線性支持向量機通過核技巧和軟間隔最大化。高準(zhǔn)確率,為避免過擬合提供了很好的理論保證,而且就算數(shù)據(jù)在原特征空間線性不可分,只要給個合適的核函數(shù),它就能運行得很好。在動輒超高維的文本分類問題中特別受歡迎??上?nèi)存消耗大,難以解釋,運行和調(diào)參也有些煩人,而隨機森林卻剛好避開了這些缺點,比較實用。
其優(yōu)點:1)可以解決高維問題,即大型特征空間; 2)無需依賴整個數(shù)據(jù),最優(yōu)平面僅依賴支持向量;3)SVM優(yōu)化自帶L2正則項;4)SVM能處理非線性問題,通過核函數(shù)策略。計算量小。
缺點:1)SVM基于數(shù)據(jù)距離,所以需要對數(shù)據(jù)先做 normalization。2)無法給出概率結(jié)果。3)當(dāng)觀測樣本很多時,效率并不是很高;一個可行的解決辦法是模仿隨機森林,對數(shù)據(jù)分解,訓(xùn)練多個模型,然后求平均,時間復(fù)雜度降低p倍,分多少份,降多少倍對非線性問題沒有通用解決方案,有時候很難找到一個合適的核函數(shù);
核技巧:通過將數(shù)據(jù)映射到高維空間,來解決在原始空間中線性不可分的問題。高斯核:會將原始空間映射為無窮維空間,具有相當(dāng)高的靈活性,也是使用最廣泛的核函數(shù)之一。線性核首先文本數(shù)據(jù)。?對缺失數(shù)據(jù)敏感;對于核的選擇也是有技巧的(libsvm中自帶了四種核函數(shù):線性核、多項式核、RBF以及sigmoid核):第一,如果樣本數(shù)量小于特征數(shù),那么就沒必要選擇非線性核,簡單的使用線性核就可以了;第二,如果樣本數(shù)量大于特征數(shù)目,這時可以使用非線性核,將樣本映射到更高維度,一般可以得到更好的結(jié)果;第三,如果樣本數(shù)目和特征數(shù)目相等,該情況可以使用非線性核,原理和第二種一樣。對于第一種情況,也可以先對數(shù)據(jù)進(jìn)行降維,然后使用非線性核,這也是一種方法。
解釋核函數(shù),給了張紙讓畫圖解釋高維映射
- 為什么要把原問題轉(zhuǎn)換為對偶問題?因為原問題是凸二次規(guī)劃問題,轉(zhuǎn)換為對偶問題更加高效。
- 為什么求解對偶問題更加高效?因為只用求解alpha系數(shù),而alpha系數(shù)只有支持向量才非0,其他全部為0.
- alpha系數(shù)有多少個?樣本點的個數(shù)
KNN
KNN即最近鄰算法,其主要過程為:1. 計算訓(xùn)練樣本和測試樣本中每個樣本點的距離(常見的距離度量有歐式距離,馬氏距離等); 2. 對上面所有的距離值進(jìn)行排序; 3. 選前k個最小距離的樣本; 4. 根據(jù)這k個樣本的標(biāo)簽進(jìn)行投票,得到最后的分類類別;?如何選擇一個最佳的K值,這取決于數(shù)據(jù)。一般情況下,在分類時較大的K值能夠減小噪聲的影響。但會使類別之間的界限變得模糊。一個較好的K值可通過各種啟發(fā)式技術(shù)來獲取,比如,交叉驗證。
KNN算法的優(yōu)點:理論成熟,思想簡單,既可以用來做分類也可以用來做回歸;可用于非線性分類;訓(xùn)練時間復(fù)雜度為O(n);對數(shù)據(jù)沒有假設(shè),準(zhǔn)確度高,對outlier不敏感;
缺點:? 1)數(shù)據(jù)儲存量大(需要儲存訓(xùn)練集中所有的樣本);2.在預(yù)測時計算量大(需要計算到所有樣本點的距離)3.容易對維度災(zāi)難敏感
討論有關(guān)維度爆炸的問題
應(yīng)用k-近鄰算法的一個實踐問題是,實例間的距離是根據(jù)實例的所有屬性計算的。這與那些只選擇全部實例屬性的一個子集方法不同,例如決策樹學(xué)習(xí)系統(tǒng)。 如果每個實例由20個屬性描述,但是這些屬性中僅僅2個屬性與它的分類有關(guān),這種情況,兩個相關(guān)屬性一致的實例可能在這個20維空間實例中相距很遠(yuǎn),結(jié)果就是這些不相關(guān)屬性會導(dǎo)致近鄰間距離被支配。這種由于存在很多不相關(guān)屬性所導(dǎo)致的難題,有時被稱為維度災(zāi)難。
解決方法:
比較簡單,就是計算距離的時候,對屬性加權(quán)。這樣就會減小不相關(guān)屬性的影響。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 另一種方法是:從實例空間中完全消除最不相關(guān)屬性,等效認(rèn)為是對某個屬性設(shè)置縮放因子為0。
PCA、LDA
①數(shù)據(jù)在低維下更容易處理、更容易使用;②相關(guān)特征,特別是重要特征更能在數(shù)據(jù)中明確的顯示出來;如果只有兩維或者三維的話,更便于可視化展示;③去除數(shù)據(jù)噪聲④降低算法開銷
標(biāo)準(zhǔn)差和方差一般是用來描述一維數(shù)據(jù)的,協(xié)方差就是一種用來度量兩個隨機變量關(guān)系的統(tǒng)計量。求出協(xié)方差矩陣的特征值及特征向量之后,按照特征值由大到小進(jìn)行排列,這將給出成分的重要性級別。
決策樹決策樹處理連續(xù)值的方法;連續(xù)值處理:二分法(C4.5)ID3和C4.5的優(yōu)缺點,樹的融合(RF和GBDT)?
優(yōu)點:1)決策樹自身的優(yōu)點計算簡單,易于理解,可解釋性強。決策樹模型可以可視化,非常直觀應(yīng)用范圍廣,可用于分類和回歸,而且非常容易做多類別的分類能夠處理數(shù)值型和連續(xù)的樣本特征;2)訓(xùn)練快速并且可調(diào),無須擔(dān)心要像支持向量機那樣調(diào)一大堆參數(shù);
缺點:1)不支持在線學(xué)習(xí),于是在新樣本到來后,決策樹需要全部重建。2)很容易在訓(xùn)練數(shù)據(jù)中生成復(fù)雜的樹結(jié)構(gòu),造成過擬合(overfitting)。剪枝可以緩解過擬合的負(fù)作用,常用方法是限制樹的高度、葉子節(jié)點中的最少樣本數(shù)量。實際中的決策樹是基于啟發(fā)式的貪心算法建立的,這種算法不能保證建立全局最優(yōu)的決策樹。Random Forest 引入隨機能緩解這個問題。3)對于那些各類別樣本數(shù)量不一致的數(shù)據(jù),在決策樹當(dāng)中,信息增益的結(jié)果偏向于那些具有更多數(shù)值的特征(只要是使用了信息增益,都有這個缺點,如RF)。
決策樹算法有哪些
ID3、C4.5、CART。
他們劃分屬性的準(zhǔn)則不同。
ID3以信息增益為準(zhǔn)則;C4.5以增益率為準(zhǔn)則;CART以基尼指數(shù)為準(zhǔn)則
Adaboosting
Adaboost是一種加和模型,每個模型都是基于上一次模型的錯誤率來建立的,過分關(guān)注分錯的樣本,而對正確分類的樣本減少關(guān)注度,逐次迭代之后,可以得到一個相對較好的模型。是一種典型的boosting算法。
優(yōu)點
adaboost是一種有很高精度的分類器。
可以使用各種方法構(gòu)建子分類器,Adaboost算法提供的是框架。
當(dāng)使用簡單分類器時,計算出的結(jié)果是可以理解的,并且弱分類器的構(gòu)造極其簡單。
簡單,不用做特征篩選。
不容易發(fā)生overfitting。
關(guān)于隨機森林和GBDT等組合算法,參考這篇文章:機器學(xué)習(xí)-組合算法總結(jié)
缺點:對outlier比較敏感
?xgboost
這是一個近年來出現(xiàn)在各大比賽的大殺器,奪冠選手很大部分都使用了它。
高準(zhǔn)確率高效率高并發(fā),支持自定義損失函數(shù),既可以用來分類又可以用來回歸
可以像隨機森林一樣輸出特征重要性,因為速度快,適合作為高維特征選擇的一大利器
在目標(biāo)函數(shù)中加入正則項,控制了模型的復(fù)雜程度,可以避免過擬合
支持列抽樣,也就是隨機選擇特征,增強了模型的穩(wěn)定性
對缺失值不敏感,可以學(xué)習(xí)到包含缺失值的特征的分裂方向
另外一個廣受歡迎的原因是支持并行,速度杠杠的
用的好,你會發(fā)現(xiàn)他的全部都是優(yōu)點。
XGBoost的發(fā)起人——陳天奇博士,他并不認(rèn)可將深度學(xué)習(xí)和XGBoost截然對立起來。他談到,這兩種方法在其各自擅長領(lǐng)域的性能表現(xiàn)都非常好:XGBoost專注于模型的可解釋性,而基于人工神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí),則更關(guān)注模型的準(zhǔn)確度。XGBoost更適用于變量數(shù)較少的表格數(shù)據(jù),而深度學(xué)習(xí)則更適用于圖像或其他擁有海量變量的數(shù)據(jù)。不同的機器學(xué)習(xí)模型適用于不同類型的任務(wù)。深度神經(jīng)網(wǎng)絡(luò)通過對時空位置建模,能夠很好地捕獲圖像、語音、文本等高維數(shù)據(jù)。而基于樹模型的XGBoost則能很好地處理表格數(shù)據(jù),同時還擁有一些深度神經(jīng)網(wǎng)絡(luò)所沒有的特性(如:模型的可解釋性、輸入數(shù)據(jù)的不變性、更易于調(diào)參等)。
隨機森林和GBDT的區(qū)別、RF,GBDT 的區(qū)別; GBDT,XgBoost的區(qū)別(爛大街的問題最好從底層原理去分析回答);?
模型組合+決策樹相關(guān)的算法有兩種比較基本的形式 - 隨機森林與GBDT((Gradient Boost Decision Tree),其他的比較新的模型組合+決策樹的算法都是來自這兩種算法的延伸。本文主要側(cè)重于GBDT,對于隨機森林只是大概提提,因為它相對比較簡單。
Bagging,Boosting,隨機森林:集成學(xué)習(xí)通過將多個學(xué)習(xí)器進(jìn)行結(jié)合,??色@得比單一學(xué)習(xí)器顯著優(yōu)越的泛化性能。
根據(jù)個體學(xué)習(xí)器的生成方式,目前的集成學(xué)習(xí)方法大致可分為兩大類:
1)個體學(xué)習(xí)器間存在強大依賴關(guān)系、必須串行生成的序列化方法,代表算法:Boosting;
2)個體學(xué)習(xí)器間不存在依賴關(guān)系、可同時生成的并行化方法,代表算法Bagging和“隨機森林”RF。
K-means 的原理,優(yōu)缺點以及改進(jìn); EM與K-means的關(guān)系;?
關(guān)于K-Means聚類的文章,鏈接:機器學(xué)習(xí)算法-K-means聚類。關(guān)于K-Means的推導(dǎo),里面有著很強大的EM思想。
優(yōu)點
算法簡單,容易實現(xiàn) ;
對處理大數(shù)據(jù)集,該算法是相對可伸縮的和高效率的,因為它的復(fù)雜度大約是O(nkt),其中n是所有對象的數(shù)目,k是簇的數(shù)目,t是迭代的次數(shù)。通常k<
算法嘗試找出使平方誤差函數(shù)值最小的k個劃分。當(dāng)簇是密集的、球狀或團狀的,且簇與簇之間區(qū)別明顯時,聚類效果較好。
缺點
對數(shù)據(jù)類型要求較高,適合數(shù)值型數(shù)據(jù);
可能收斂到局部最小值,在大規(guī)模數(shù)據(jù)上收斂較慢
K值比較難以選??;
對初值的簇心值敏感,對于不同的初始值,可能會導(dǎo)致不同的聚類結(jié)果;
不適合于發(fā)現(xiàn)非凸面形狀的簇,或者大小差別很大的簇。
對于”噪聲”和孤立點數(shù)據(jù)敏感,少量的該類數(shù)據(jù)能夠?qū)ζ骄诞a(chǎn)生極大影響。
算法對比
在統(tǒng)計學(xué)中,一個模型好壞,是根據(jù)偏差和方差來衡量的
偏差:描述的是預(yù)測值(估計值)的期望E’與真實值Y之間的差距。偏差越大,越偏離真實數(shù)據(jù)。
方差:描述的是預(yù)測值的變化范圍,離散程度,也就是離其期望值E的距離。方差越大,數(shù)據(jù)的分布越分散。
在統(tǒng)計學(xué)習(xí)框架下,大家刻畫模型復(fù)雜度的時候,有這么個觀點,認(rèn)為Error = Bias + Variance。這里的Error大概可以理解為模型的預(yù)測錯誤率,是有兩部分組成的,一部分是由于模型太簡單而帶來的估計不準(zhǔn)確的部分(Bias)(欠擬合),另一部分是由于模型太復(fù)雜而帶來的更大的變化空間和不確定性(Variance)(過擬合)。當(dāng)模型復(fù)雜度上升的時候,偏差會逐漸變小,而方差會逐漸變大。
算法選擇參考之前翻譯過一些國外的文章,有一篇文章中給出了一個簡單的算法選擇技巧:首當(dāng)其沖應(yīng)該選擇的就是邏輯回歸,如果它的效果不怎么樣,那么可以將它的結(jié)果作為基準(zhǔn)來參考,在基礎(chǔ)上與其他算法進(jìn)行比較;然后試試決策樹(隨機森林)看看是否可以大幅度提升你的模型性能。即便最后你并沒有把它當(dāng)做為最終模型,你也可以使用隨機森林來移除噪聲變量,做特征選擇;如果特征的數(shù)量和觀測樣本特別多,那么當(dāng)資源和時間充足時(這個前提很重要),使用SVM不失為一種選擇。通常情況下:【XGBOOST>=GBDT>=SVM>=RF>=Adaboost>=Other…】,現(xiàn)在深度學(xué)習(xí)很熱門,很多領(lǐng)域都用到,它是以神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的,目前我自己也在學(xué)習(xí),只是理論知識不是很厚實,理解的不夠深,這里就不做介紹了。算法固然重要,但好的數(shù)據(jù)卻要優(yōu)于好的算法,設(shè)計優(yōu)良特征是大有裨益的。假如你有一個超大數(shù)據(jù)集,那么無論你使用哪種算法可能對分類性能都沒太大影響(此時就可以根據(jù)速度和易用性來進(jìn)行抉擇)。
神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)的優(yōu)點:分類的準(zhǔn)確度高;并行分布處理能力強,分布存儲及學(xué)習(xí)能力強,對噪聲神經(jīng)有較強的魯棒性和容錯能力,能充分逼近復(fù)雜的非線性關(guān)系;具備聯(lián)想記憶的功能。
人工神經(jīng)網(wǎng)絡(luò)的缺點:神經(jīng)網(wǎng)絡(luò)需要大量的參數(shù),如網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、權(quán)值和閾值的初始值;不能觀察之間的學(xué)習(xí)過程,輸出結(jié)果難以解釋,會影響到結(jié)果的可信度和可接受程度;學(xué)習(xí)時間過長,甚至可能達(dá)不到學(xué)習(xí)的目的。
BP神經(jīng)網(wǎng)絡(luò)。反向傳播的細(xì)節(jié).梯度彌散問題。
sigmoid函數(shù)的應(yīng)用有哪些,為什么?
作為激活函數(shù),增加非線性能力。
Sigmoid函數(shù)的值域范圍限制在(0,1)之間,我們知道[0,1]與概率值的范圍是相對應(yīng)的,這樣sigmoid函數(shù)就能與一個概率分布聯(lián)系起來了。
Sigmoid函數(shù)的導(dǎo)數(shù)是其本身的函數(shù),即f′(x)=f(x)(1?f(x))f′(x)=f(x)(1?f(x)),計算非常方便,也非常節(jié)省計算時間。
列舉十種常用的神經(jīng)網(wǎng)絡(luò)模型
受限玻爾茲曼機(RBM:Restricted Boltzmann machines)、自編碼機(AE)、稀疏自編碼機(SAE)、深度信念網(wǎng)絡(luò)(DBN)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、生成式對抗網(wǎng)絡(luò)(GAN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長短期記憶(LSTM)、深度殘差網(wǎng)絡(luò)(DRN)、門循環(huán)單元(GRU)
卷積神經(jīng)網(wǎng)絡(luò)中卷積如何實現(xiàn),激活函數(shù)的意義,損失函數(shù)有哪些,初始化參數(shù)如何選擇
在生物意義上的神經(jīng)元中,只有前面的樹突傳遞的信號的加權(quán)和值大于某一個特定的閾值的時候,后面的神經(jīng)元才會被激活。簡單的說激活函數(shù)的意義在于判定每個神經(jīng)元的輸出 。
sigmoid的問題:
1.Sigmoid 容易飽和,并且當(dāng)輸入非常大或者非常小的時候,神經(jīng)元的梯度就接近于0了,從圖中可以看出梯度的趨勢。這就使得我們在反向傳播算法中反向傳播接近于0的梯度,導(dǎo)致最終權(quán)重基本沒什么更新**,我們就無法遞歸地學(xué)習(xí)到輸入數(shù)據(jù)了。另外,你需要尤其注意參數(shù)的初始值來盡量避免這一情況。如果你的初始值很大的話,大部分神經(jīng)元可能都會處在飽和的狀態(tài)而把梯度kill掉,這會導(dǎo)致網(wǎng)絡(luò)變的很難學(xué)習(xí)。對于這一點,我個人的理解就是對于數(shù)據(jù)特別小的時候,梯度確實應(yīng)該接近0(等于0就不好了),理由如上所述,數(shù)據(jù)特別大的時候,梯度不應(yīng)該接近0。就像Relu函數(shù)做的那樣。
2.Sigmoid?的輸出不是0均值的,這是我們不希望的,因為這會導(dǎo)致后層的神經(jīng)元的輸入是非0均值的信號,這會對梯度產(chǎn)生影響:假設(shè)后層神經(jīng)元的輸入都為正(e.g. x>0 elementwise in f=wTx+b),那么對w求局部梯度則都為正,這樣在反向傳播的過程中w要么都往正方向更新,要么都往負(fù)方向更新,導(dǎo)致有一種捆綁的效果,使得收斂緩慢。(如果你是按batch去訓(xùn)練,那么每個batch可能得到不同的符號(正或負(fù)),那么相加一下這個問題還是可以緩解。)
使用 ReLU 得到的SGD的收斂速度會比 sigmoid/tanh 快很多(如上圖右)。有人說這是因為它是linear,而且梯度不會飽和。ReLU在訓(xùn)練的時候很”脆弱”,一不小心有可能導(dǎo)致神經(jīng)元”壞死”。舉個例子:由于ReLU在x<0時梯度為0,這樣就導(dǎo)致負(fù)的梯度在這個ReLU被置零,而且這個神經(jīng)元有可能再也不會被任何數(shù)據(jù)激活。
7.2隨機初始化仍然希望參數(shù)期望接近1隨機參數(shù)服從高斯分布或均勻分布進(jìn)行初始化
TensorFlow中的session是什么,session和interactivesession的區(qū)別
graph只是定義了計算,他本身不計算任何東西,他不保存任何值,他只是定義了你用代碼所規(guī)定的操作? ? ? ? ? ? ? session允許計算圖或者圖的一部分,他為這個分配資源并且保存中間結(jié)果的值和變量
tf.InteractiveSession():它能讓你在運行圖的時候,插入一些計算圖,這些計算圖是由某些操作(operations)構(gòu)成的。這對于工作在交互式環(huán)境中的人們來說非常便利,比如使用IPython。tf.Session():需要在啟動session之前構(gòu)建整個計算圖,然后啟動該計算圖。意思就是在我們使用tf.InteractiveSession()來構(gòu)建會話的時候,我們可以先構(gòu)建一個session然后再定義操作(operation),如果我們使用tf.Session()來構(gòu)建會話我們需要在會話構(gòu)建之前定義好全部的操作(operation)然后再構(gòu)建會話。
Python的數(shù)據(jù)結(jié)構(gòu)有哪些
list tuple dict set
問了loss優(yōu)化方法,說了BGD,SGD,各自優(yōu)缺點,優(yōu)化方向(Adam之類的)
BGD(batch gradient descent):優(yōu)點:?由于每一步都利用了訓(xùn)練集中的所有數(shù)據(jù),因此當(dāng)損失函數(shù)達(dá)到最小值以后,能夠保證此時計算出的梯度為0,換句話說,就是能夠收斂.因此,使用BGD時不需要逐漸減小學(xué)習(xí)速率缺點:?由于每一步都要使用所有數(shù)據(jù),因此隨著數(shù)據(jù)集的增大,運行速度會越來越慢.
SGD(Stochastic Gradient Descent )?:訓(xùn)練速度快,對于很大的數(shù)據(jù)集,也能夠以較快的速度收斂.缺點:?由于是抽取,因此不可避免的,得到的梯度肯定有誤差.因此學(xué)習(xí)速率需要逐漸減小.否則模型無法收斂?因為誤差,所以每一次迭代的梯度受抽樣的影響比較大,也就是說梯度含有比較大的噪聲,不能很好的反映真實梯度.
mini-batch Gradient Descent:雖然相較于批量梯度下降和隨機梯度下降方法效果有所改善但是任然存在許多挑戰(zhàn):?1. 難以選擇合適的學(xué)習(xí)速率:如果學(xué)習(xí)速率選擇過小會造成網(wǎng)絡(luò)收斂太慢,但是設(shè)得太大可能使得損失函數(shù)在最小點周圍不斷搖擺而永遠(yuǎn)達(dá)不到最小點;?2. 可以在訓(xùn)練開始時設(shè)置一個較大地學(xué)習(xí)率然后每訓(xùn)練若干個周期后按比例降低學(xué)習(xí)率,雖然這個方法有一些作用,但是由于降低學(xué)習(xí)率的周期是人為事先設(shè)定的,所以它不能很好地適應(yīng)數(shù)據(jù)內(nèi)在的規(guī)律;?3. 另一方面,我們對特征向量中的所有的特征都采用了相同的學(xué)習(xí)率,如果訓(xùn)練數(shù)據(jù)十分稀疏并且不同特征的變化頻率差別很大,這時候?qū)ψ兓l率慢得特征采用大的學(xué)習(xí)率而對變化頻率快的特征采用小的學(xué)習(xí)率是更好的選擇。?4. 這些梯度下降方法難以逃脫”鞍點”, 如下圖所示,鞍點既不是最大點也不是最小點,在這個點附近,所有方向上的梯度都接近于0,這些梯度下降算法很難逃離它。
?交叉驗證問題?
什么是交叉驗證法?
它的基本思想就是將原始數(shù)據(jù)(dataset)進(jìn)行分組,一部分做為訓(xùn)練集來訓(xùn)練模型,另一部分做為測試集來評價模型。為什么用交叉驗證法?
交叉驗證用于評估模型的預(yù)測性能,尤其是訓(xùn)練好的模型在新數(shù)據(jù)上的表現(xiàn),可以在一定程度上減小過擬合。還可以從有限的數(shù)據(jù)中獲取盡可能多的有效信息。k 折交叉驗證(k-fold cross validation)通過對 k 個不同分組訓(xùn)練的結(jié)果進(jìn)行平均來減少方差,因此模型的性能對數(shù)據(jù)的劃分就不那么敏感。第一步,不重復(fù)抽樣將原始數(shù)據(jù)隨機分為 k 份。第二步,每一次挑選其中 1 份作為測試集,剩余 k-1 份作為訓(xùn)練集用于模型訓(xùn)練。第三步,重復(fù)第二步 k 次,這樣每個子集都有一次機會作為測試集,其余機會作為訓(xùn)練集。在每個訓(xùn)練集上訓(xùn)練后得到一個模型,用這個模型在相應(yīng)的測試集上測試,計算并保存模型的評估指標(biāo),第四步,計算 k 組測試結(jié)果的平均值作為模型精度的估計,并作為當(dāng)前 k 折交叉驗證下模型的性能指標(biāo)。
L1與L2的作用,區(qū)別以及如何解決L1求導(dǎo)困難;L1為什么能讓參數(shù)稀疏,L2為什么會讓參數(shù)趨于較小值,L1優(yōu)化方法
當(dāng)你想從一個手頭的數(shù)據(jù)集中學(xué)習(xí)出一套規(guī)則時,貝葉斯學(xué)派認(rèn)為僅僅使用這些數(shù)據(jù)是不夠的,還需要加入先驗知識。如果你在損失函數(shù)中使用了L1正則項,那么其實質(zhì)就是加入了拉普拉斯先驗分布,即認(rèn)為數(shù)據(jù)是符合拉普拉斯分布的;如果你使用了L2正則項,那么就是加入了高斯先驗分布,即認(rèn)為數(shù)據(jù)是符合高斯分布的。
如何用盡可能少的樣本訓(xùn)練模型同時又保證模型的性能;?
fine-tune
機器學(xué)習(xí)性能評價,準(zhǔn)確率,召回率,ROC?
判別模型與生成模型的本質(zhì)區(qū)別是什么
交叉熵loss推到