gibbs採樣代碼python(多維gibbs採樣實例)

本文目錄一覽:

pattern recognition and machine learning這本書怎麼看

作者:Richardmore

這本書可以說是機器學習的經典學習之作。以前在上機器學習這麼課的時候,很多細節還沒聯繫到,結果在讀論文中就顯得捉襟見肘。本文打算理清楚這本書的脈絡,也順便為學習機器學習的人打下一個學習路線圖。

1. 排除兩塊內容

現排除第五章的內容神經網路,之所以把神經網路先單列出來,原因一是一個比較獨立的研究脈絡,二是因為這部分因為深度學習的原因太熱了,所以我認為在學習機器學習中把神經網路單列出來學習,在交大的研究生課程安排中,神經網路是機器學習的後續課程。

對於第6,7章,也不在下面的學習路線中,因為這部分是關於核技巧方面的,主要是就是高斯過程回歸,高斯過程分類以及SVM等內容。

2. 一個概率圖框架為中心視角

排除了上面幾章的內容,PRML書中可以用下面的學習路線圖覆蓋,通過這個圖可以理清楚了各個內容的不同角色。

img src=”” data-rawwidth=”1888″ data-rawheight=”412″ class=”origin_image zh-lightbox-thumb” width=”1888″ data-original=””

說明:

(1)一般模型中都會有隱變數因此,,因此對於P(X)的採用MLE學習的另一個技巧,便是第九章 EM演算法。條件是在M步時,Q要可以被analytically computed。

(2)至於為什麼近似,Exact Inference is hard we resort to approximation

3. 隱變數技巧

下面我們看看另外一個視角:隱變數技巧。隱變數不僅可以使得模型的表達能力豐富起來,而且通常對於隱變數往往富有一定的實際意義。

img src=”” data-rawwidth=”1764″ data-rawheight=”422″ class=”origin_image zh-lightbox-thumb” width=”1764″ data-original=””

說明:

(1)這裡所謂的結合模型中,在PRML中最後一章僅僅提到了以加法的方式進行模型集合,也就是mixture of experts,在論文Hinton G E. Training products of experts by minimizing contrastive divergence[J]. Neural computation, 2002, 14(8): 1771-1800. 提出了product of experts 模型,也就是以乘法的方式進行結合,RBM就是一種特殊的product of experts 模型,而高斯混合模型便是加法模型的代表。

(2)隱變數的技巧是機器學習中一種重要的技巧,隱變數的加入不僅僅增加了模型的表達能力,而且,隱變數還可以被賦予某種特殊的意義,比如RBM模型中隱變數h被當成顯變數v的特徵抽象。這當然歸根結底是因為隱變數模型確實是現實世界真實存在的情況,unobserved but important variables do exist! 當然隱變數的引入也為模型的推斷帶來了新的挑戰,有很多比較好的隱變數模型往往找不到很高效的方法,而被限制著。

4. 例子說明

下面分別從上面兩個視角來分析RBM模型,貝葉斯線性回歸和序列模型。

4.1 RBM模型

RBM模型是一個無向2層對稱的圖模型,從隱變數的視角來看,它是一個以乘法方式結合的distributed models。當然隱變數的引入增加了模型的複雜性和表達能力,但是也為學習,推斷帶來了問題。對於RBM的參數學習,因為是無向圖,所以採用MLE最大化P(X),但是由於此時P(X,Z)難以評估,所以

img src=”” data-rawwidth=”834″ data-rawheight=”94″ class=”origin_image zh-lightbox-thumb” width=”834″ data-original=””

很難計算,沒有在RBM的學習中不能像高斯混合模型那樣可以採取EM演算法。因此只能採取最為標準的做法,求取P(X)的梯度,結果梯度公式如下:

img src=”” data-rawwidth=”800″ data-rawheight=”90″ class=”origin_image zh-lightbox-thumb” width=”800″ data-original=””

然而對於計算後面的model部分的積分需要知道模型的概率分布,評估模型的概率分布需要計算一個標準化的分母,難以計算。因此就需要依賴近似,由於p(v|h),p(h|v)都是可以分析公式表達,因此採用Gibbs sampler來數值逼近積分。當然後來Hinton G E. Training products of experts by minimizing contrastive divergence[J].發現對於這一部分,Gibbs sampler 不需要多部的迭代,一次迭代就可以了,從而使的訓練RBM的時間代價大大降低了,後來(A fast learning algorithm for deep belief nets,2006)提出了貪婪式的訓練多層DBN(stacked RBM),每層都是訓練RBM,從而使的深度學習煥發新的活力(Reducing the dimensionality of data with neural networks,2006)。

4.2 貝葉斯線性回歸Bayesian Linear Regression BLR

這個模型是最為基礎的,這個模型在PRML中,利用直接推斷,變分法推斷,MCMC採樣都是可以做的;因此便於比較不同演算法得到的結果。之前,本來打算在這裡以LDA主題模型來舉例,雖然LDA的EM演算法, 變分法,以及Gibbs sampling 都是可以做的,但是模型太複雜,所以果斷放棄了,以BLR模型作為例子說明。

BLR是一個有向圖模型,是一個典型的貝葉斯網路(雖然簡單一點)。如果以一個貝葉斯的視角來看,其中的隱變數便是線性參數w,以及各種超參數α,β…..,在貝葉斯的處理視角之下,這些都會賦予一個先驗分布。當然,有些模型書中也提到,有不同層次上的貝葉斯網路。有的是僅僅對參數w賦予一個先驗分布,而對於其他的參數(hyperparameter)僅僅是作為模型參數,就是假設是一個渡固定的數值,然後再通過learn evidence function,其實說白了就是MLE,來尋找最佳的超參數α,β….。相比於把線性參數w,以及各種超參數α,β…..全部作為放入到貝葉斯網路中,這樣的做法顯然簡化了模型,降低了貝葉斯網路的複雜性。這個技巧也在多處的論文中出現。

從隱變數的角度來看,由於BLR模型相對簡單,其中並沒有隨機隱變數,僅僅是一些參數w,以及各種超參數α,β..的環境隱變數。

4.3 序列模型:隱馬爾可夫鏈HMM與條件隨機CRF

隱馬爾可夫鏈HMM這個模型是一個有向圖模型,典型的貝葉斯網路,只不過這個網路是一個線性鏈(linear chains),因此可以進行分析上推斷,要知道對於一般網路,並不存在通用的實用的inference演算法。因為HMM是一個有向圖模型。但是(1)在PRML書中,以及李航《統計學習》中並沒有把其當作一個貝葉斯網路來進行處理,對所有的參數比如發射概率,轉移矩陣概率都是模型的參數,而不是通過賦予一個先驗分布,從而納入到貝葉斯網路框架之中。因此對於模型而言,關鍵的便是通過MLE最大化P(X)來學習模型的參數,因為這裡的有隱變數,因此在PRML,以及《統計學習》中都是通過EM演算法做的。(2)其實,HMM是一個典型的線性鏈式的貝葉斯網路,因此對於通過對其參數賦予先驗分布,進而從貝葉斯的角度,來對模型進行推斷是一個非常自然的想法。我在論文Sharon Goldwater, Thomas L Griffiths 論文 A Fully Bayesian Approach to Unsupervised Part-of-Speech Tagging,中作者採用了Bayesian HMM 重新做了POS任務。作者在文中還詳細羅列了Bayesian HMM 相比普通的HMM的優點:(a)可以使用先驗知識,例如在POS中語言的認知可以加入到先驗分布之中,而且(b)貝葉斯的推斷,是通過一個後驗分布推斷參數,相比MLE點估計,會更加準確。對於貝葉斯的推斷,作者在文中使用了Gibbs sample抽樣實現了數值採樣推斷模型。最後作者比較了Gibbs sample+Bayesian HMM和普通的HMM +EM,在POS任務效果更加好。另外,對於本論文的作者Thomas L Griffiths,第一次接觸這個學者,是在讀Gibbs sample in LDA這篇文章,作者推導了LDA的各種的條件分布,然後基於Gibbs sample 進行採樣,記得Github上有Java版的實現代碼,其推導十分嚴謹,並且有代碼輔助,是學習LDA的一個捷徑。在近似推斷方面可以看出Thomas L Griffiths是一個堅定的數值採樣學派,而LDA的開山之作《Latent Dirichlet Allocation 》的作者David M. Blei,看了作者部分文章以後,發現這個人是在近似推斷方面是一個變分法的堅定學派,在《Latent Dirichlet Allocation 》之中,便是通過變分法進行推斷了,David M. Blei還寫了一個關於變分法的入門講義pdf,網上可以搜到。所以回看我們概率圖視角,做機器學習推斷是不可避免的,有的是變分法近似,有的是數值採樣近似,也有的是EM演算法試一試。至於選擇哪一種,就看你的問題哪一個比較簡單了。但是好像有的人對這些方面各有偏愛。

再說一下條件隨機場CRF,相比與HMM,這也是一個序列模型,在很多的NLP任務中,CRF都是state of art 的演算法,畢竟人家可以方便的特徵工程嘛。但是這種日子被深度學習取代了,在NLP方面,RNN(遞歸神經網路)要比CRF表現更好,見我之前博文基於RNN做語義理解和詞向量。先不說這麼遠,CRF的模型架構上是一個典型的無向的鏈式概率圖模型,因此,(回看我們概率圖的視角),CRF的關鍵問題便是如何進行學習了P(X),好在求其該模型直接求其梯度並沒有太大的困難,具體可以參見李航的《統計學習》。

5 結束語

這篇文章,從概率圖,隱變數兩個視角對PRML中各個章節進行了串聯,並以RBM,BLR,序列模型(HMMCRF)具體說明這種串聯。

gibbs圖用什麼軟體出圖

CAM系統軟體。

Gibbs是一種基於微機平台並居於技術發展前沿的CAM系統軟體。擁有機械專家專為機械行業用戶所設計的圖形用戶界面,使得軟體的應用既親近熟悉,又快捷高效。

在許多論文中,都通過對Gibbs分布採樣來得到一幅合成圖像,將這幅合成圖像作為我們前面所指的「標準」。

人工智慧一些術語總結

隨著智能時代慢慢的到來,有一些基本概念都不知道真的是要落伍了,作為正在積極學習向上的青年,我想總結一份筆記,此份筆記會記錄眾多AI領域的術語和概念,當然,學一部分記錄一部分,並且可能會夾雜著自己的一些理解,由於能力有限,有問題希望大家多多賜教。當然,由於內容太多,僅僅只是記錄了中英名對照,有的加上了簡單的解釋,沒加的後續大家有需求,我會慢慢完善~~。目錄暫定以首字母的字典序排序。可以當作目錄方便以後查閱~~建議收藏加點贊哈哈哈

————————————————這裡是分割線————————————————–

A

準確率(accuracy)

分類模型預測準確的比例。

二分類問題中,準確率定義為:accuracy = (true positives +true negatives)/all samples

多分類問題中,準確率定義為:accuracy = correctpredictions/all samples

激活函數(activation function)

一種函數,將前一層所有神經元激活值的加權和 輸入到一個非線性函數中,然後作為下一層神經元的輸入,例如 ReLU 或 Sigmoid

AdaGrad

一種複雜的梯度下降演算法,重新調節每個參數的梯度,高效地給每個參數一個單獨的學習率。

AUC(曲線下面積)

一種考慮到所有可能的分類閾值的評估標準。ROC 曲線下面積代表分類器隨機預測真正類(Ture Positives)要比假正類(False Positives)概率大的確信度。

Adversarial example(對抗樣本)

Adversarial Networks(對抗網路)

Artificial General Intelligence/AGI(通用人工智慧)

Attention mechanism(注意力機制)

Autoencoder(自編碼器)

Automatic summarization(自動摘要)

Average gradient(平均梯度)

Average-Pooling(平均池化)

B

反向傳播(Backpropagation/BP)

神經網路中完成梯度下降的重要演算法。首先,在前向傳播的過程中計算每個節點的輸出值。然後,在反向傳播的過程中計算與每個參數對應的誤差的偏導數。

基線(Baseline)

被用為對比模型表現參考的簡單模型。

批量(Batch)

模型訓練中一個迭代(指一次梯度更新)使用的樣本集。

批量大小(Batch size)

一個批量中樣本的數量。例如,SGD 的批量大小為 1,而 mini-batch 的批量大小通常在 10-1000 之間。

偏置(Bias)

與原點的截距或偏移量。

二元分類器(Binary classification)

一類分類任務,輸出兩個互斥類別中的一個。比如垃圾郵件檢測。

詞袋(Bag of words/Bow)

基學習器(Base learner)

基學習演算法(Base learning algorithm)

貝葉斯網路(Bayesian network)

基準(Bechmark)

信念網路(Belief network)

二項分布(Binomial distribution)

玻爾茲曼機(Boltzmann machine)

自助採樣法/可重複採樣/有放回採樣(Bootstrap sampling)

廣播(Broadcasting)

C

類別(Class)

所有同類屬性的目標值作為一個標籤。

分類模型(classification)

機器學習模型的一種,將數據分離為兩個或多個離散類別。

收斂(convergence)

訓練過程達到的某種狀態,其中訓練損失和驗證損失在經過了確定的迭代次數後,在每一次迭代中,改變很小或完全不變。

凸函數(concex function)

一種形狀大致呈字母 U 形或碗形的函數。然而,在退化情形中,凸函數的形狀就像一條線。

成本(cost)

loss 的同義詞。深度學習模型一般都會定義自己的loss函數。

交叉熵(cross-entropy)

多類別分類問題中對 Log 損失函數的推廣。交叉熵量化兩個概率分布之間的區別。

條件熵(Conditional entropy)

條件隨機場(Conditional random field/CRF)

置信度(Confidence)

共軛方向(Conjugate directions)

共軛分布(Conjugate distribution)

共軛梯度(Conjugate gradient)

卷積神經網路(Convolutional neural network/CNN)

餘弦相似度(Cosine similarity)

成本函數(Cost Function)

曲線擬合(Curve-fitting)

D

數據集(data set)

樣本的集合

深度模型(deep model)

一種包含多個隱藏層的神經網路。深度模型依賴於其可訓練的非線性性質。和寬度模型對照(widemodel)。

dropout 正則化(dropoutregularization)

訓練神經網路時一種有用的正則化方法。dropout 正則化的過程是在單次梯度計算中刪去一層網路中隨機選取的固定數量的單元。刪去的單元越多,正則化越強。

數據挖掘(Data mining)

決策樹/判定樹(Decisiontree)

深度神經網路(Deep neural network/DNN)

狄利克雷分布(Dirichlet distribution)

判別模型(Discriminative model)

下採樣(Down sampling)

動態規劃(Dynamic programming)

E

早期停止法(early stopping)

一種正則化方法,在訓練損失完成下降之前停止模型訓練過程。當驗證數據集(validationdata set)的損失開始上升的時候,即泛化表現變差的時候,就該使用早期停止法了。

嵌入(embeddings)

一類表示為連續值特徵的明確的特徵。嵌入通常指將高維向量轉換到低維空間中。

經驗風險最小化(empirical risk minimization,ERM)

選擇能使得訓練數據的損失函數最小化的模型的過程。和結構風險最小化(structualrisk minimization)對照。

集成(ensemble)

多個模型預測的綜合考慮。可以通過以下一種或幾種方法創建一個集成方法:

設置不同的初始化;

設置不同的超參量;

設置不同的總體結構。

深度和廣度模型是一種集成。

樣本(example)

一個數據集的一行內容。一個樣本包含了一個或多個特徵,也可能是一個標籤。參見標註樣本(labeledexample)和無標註樣本(unlabeled example)。

F

假負類(false negative,FN)

被模型錯誤的預測為負類的樣本。例如,模型推斷一封郵件為非垃圾郵件(負類),但實際上這封郵件是垃圾郵件。

假正類(false positive,FP)

被模型錯誤的預測為正類的樣本。例如,模型推斷一封郵件為垃圾郵件(正類),但實際上這封郵件是非垃圾郵件。

假正類率(false positive rate,FP rate)

ROC 曲線(ROC curve)中的 x 軸。FP 率的定義是:假正率=假正類數/(假正類數+真負類數)

特徵工程(feature engineering)

在訓練模型的時候,挖掘對模型效果有利的特徵。

前饋神經網路(Feedforward Neural Networks/FNN )

G

泛化(generalization)

指模型利用新的沒見過的數據而不是用於訓練的數據作出正確的預測的能力。

廣義線性模型(generalized linear model)

最小二乘回歸模型的推廣/泛化,基於高斯雜訊,相對於其它類型的模型(基於其它類型的雜訊,比如泊松雜訊,或類別雜訊)。廣義線性模型的例子包括:

logistic 回歸

多分類回歸

最小二乘回歸

梯度(gradient)

所有變數的偏導數的向量。在機器學習中,梯度是模型函數的偏導數向量。梯度指向最陡峭的上升路線。

梯度截斷(gradient clipping)

在應用梯度之前先修飾數值,梯度截斷有助於確保數值穩定性,防止梯度爆炸出現。

梯度下降(gradient descent)

通過計算模型的相關參量和損失函數的梯度最小化損失函數,值取決於訓練數據。梯度下降迭代地調整參量,逐漸靠近權重和偏置的最佳組合,從而最小化損失函數。

圖(graph)

在 TensorFlow 中的一種計算過程展示。圖中的節點表示操作。節點的連線是有指向性的,表示傳遞一個操作(一個張量)的結果(作為一個操作數)給另一個操作。使用 TensorBoard 能可視化計算圖。

高斯核函數(Gaussian kernel function)

高斯混合模型(Gaussian Mixture Model)

高斯過程(Gaussian Process)

泛化誤差(Generalization error)

生成模型(Generative Model)

遺傳演算法(Genetic Algorithm/GA)

吉布斯採樣(Gibbs sampling)

基尼指數(Gini index)

梯度下降(Gradient Descent)

H

啟發式(heuristic)

一個問題的實際的和非最優的解,但能從學習經驗中獲得足夠多的進步。

隱藏層(hidden layer)

神經網路中位於輸入層(即特徵)和輸出層(即預測)之間的合成層。一個神經網路包含一個或多個隱藏層。

超參數(hyperparameter)

連續訓練模型的過程中可以擰動的「旋鈕」。例如,相對於模型自動更新的參數,學習率(learningrate)是一個超參數。和參量對照。

硬間隔(Hard margin)

隱馬爾可夫模型(Hidden Markov Model/HMM)

層次聚類(Hierarchical clustering)

假設檢驗(Hypothesis test)

I

獨立同分布(independently and identicallydistributed,i.i.d)

從不會改變的分布中獲取的數據,且獲取的每個值不依賴於之前獲取的值。i.i.d. 是機器學習的理想情況——一種有用但在現實世界中幾乎找不到的數學構建。

推斷(inference)

在機器學習中,通常指將訓練模型應用到無標註樣本來進行預測的過程。在統計學中,推斷指在觀察到的數據的基礎上擬合分布參數的過程。

輸入層(input layer)

神經網路的第一層(接收輸入數據)。

評分者間一致性(inter-rater agreement)

用來衡量一項任務中人類評分者意見一致的指標。如果意見不一致,則任務說明可能需要改進。有時也叫標註者間信度(inter-annotator agreement)或評分者間信度(inter-raterreliability)。

增量學習(Incremental learning)

獨立成分分析(Independent Component Analysis/ICA)

獨立子空間分析(Independent subspace analysis)

信息熵(Information entropy)

信息增益(Information gain)

J

JS 散度(Jensen-ShannonDivergence/JSD)

K

Kernel 支持向量機(KernelSupport Vector Machines/KSVM)

一種分類演算法,旨在通過將輸入數據向量映射到更高維度的空間使正類和負類之間的邊際最大化。例如,考慮一個輸入數據集包含一百個特徵的分類問題。為了使正類和負類之間的間隔最大化,KSVM 從內部將特徵映射到百萬維度的空間。KSVM 使用的損失函數叫作 hinge 損失。

核方法(Kernel method)

核技巧(Kernel trick)

k 折交叉驗證/k 倍交叉驗證(K-fold cross validation)

K – 均值聚類(K-MeansClustering)

K近鄰演算法(K-Nearest NeighboursAlgorithm/KNN)

知識圖譜(Knowledge graph)

知識庫(Knowledge base)

知識表徵(Knowledge Representation)

L

L1 損失函數(L1 loss)

損失函數基於模型對標籤的預測值和真實值的差的絕對值而定義。L1 損失函數比起 L2 損失函數對異常值的敏感度更小。

L1 正則化(L1regularization)

一種正則化,按照權重絕對值總和的比例進行懲罰。在依賴稀疏特徵的模型中,L1 正則化幫助促使(幾乎)不相關的特徵的權重趨近於 0,從而從模型中移除這些特徵。

L2 損失(L2 loss)

參見平方損失。

L2 正則化(L2regularization)

一種正則化,按照權重平方的總和的比例進行懲罰。L2 正則化幫助促使異常值權重更接近 0 而不趨近於 0。(可與 L1 正則化對照閱讀。)L2 正則化通常改善線性模型的泛化效果。

標籤(label)

在監督式學習中,樣本的「答案」或「結果」。標註數據集中的每個樣本包含一或多個特徵和一個標籤。在垃圾郵件檢測數據集中,特徵可能包括主題、發出者何郵件本身,而標籤可能是「垃圾郵件」或「非垃圾郵件」。

標註樣本(labeled example)

包含特徵和標籤的樣本。在監督式訓練中,模型從標註樣本中進行學習。

學習率(learning rate)

通過梯度下降訓練模型時使用的一個標量。每次迭代中,梯度下降演算法使學習率乘以梯度,乘積叫作 gradient step。學習率是一個重要的超參數。

最小二乘回歸(least squares regression)

通過 L2 損失最小化進行訓練的線性回歸模型。

線性回歸(linear regression)

對輸入特徵的線性連接輸出連續值的一種回歸模型。

logistic 回歸(logisticregression)

將 sigmoid 函數應用於線性預測,在分類問題中為每個可能的離散標籤值生成概率的模型。儘管 logistic 回歸常用於二元分類問題,但它也用於多類別分類問題(這種情況下,logistic回歸叫作「多類別 logistic 回歸」或「多項式 回歸」。

對數損失函數(Log Loss)

二元 logistic 回歸模型中使用的損失函數。

損失(Loss)

度量模型預測與標籤距離的指標,它是度量一個模型有多糟糕的指標。為了確定損失值,模型必須定義損失函數。例如,線性回歸模型通常使用均方差作為損失函數,而 logistic 回歸模型使用對數損失函數。

隱狄利克雷分布(Latent Dirichlet Allocation/LDA)

潛在語義分析(Latent semantic analysis)

線性判別(Linear Discriminant Analysis/LDA)

長短期記憶(Long-Short Term Memory/LSTM)

M

機器學習(machine learning)

利用輸入數據構建(訓練)預測模型的項目或系統。該系統使用學習的模型對與訓練數據相同分布的新數據進行有用的預測。機器學習還指與這些項目或系統相關的研究領域。

均方誤差(Mean Squared Error/MSE)

每個樣本的平均平方損失。MSE 可以通過平方損失除以樣本數量來計算。

小批量(mini-batch)

在訓練或推斷的一個迭代中運行的整批樣本的一個小的隨機選擇的子集。小批量的大小通常在10 到 1000 之間。在小批量數據上計算損失比在全部訓練數據上計算損失要高效的多。

機器翻譯(Machine translation/MT)

馬爾可夫鏈蒙特卡羅方法(Markov Chain Monte Carlo/MCMC)

馬爾可夫隨機場(Markov Random Field)

多文檔摘要(Multi-document summarization)

多層感知器(Multilayer Perceptron/MLP)

多層前饋神經網路(Multi-layer feedforward neuralnetworks)

N

NaN trap

訓練過程中,如果模型中的一個數字變成了 NaN,則模型中的很多或所有其他數字最終都變成 NaN。NaN 是「Not aNumber」的縮寫。

神經網路(neural network)

該模型從大腦中獲取靈感,由多個層組成(其中至少有一個是隱藏層),每個層包含簡單的連接單元或神經元,其後是非線性。

神經元(neuron)

神經網路中的節點,通常輸入多個值,生成一個輸出值。神經元通過將激活函數(非線性轉換)應用到輸入值的加權和來計算輸出值。

歸一化(normalization)

將值的實際區間轉化為標準區間的過程,標準區間通常是-1 到+1 或 0 到 1。例如,假設某個特徵的自然區間是 800 到 6000。通過減法和分割,你可以把那些值標準化到區間-1 到+1。參見縮放。

Numpy

Python 中提供高效數組運算的開源數學庫。pandas 基於 numpy 構建。

Naive bayes(樸素貝葉斯)

Naive Bayes Classifier(樸素貝葉斯分類器)

Named entity recognition(命名實體識別)

Natural language generation/NLG(自然語言生成)

Natural language processing(自然語言處理)

Norm(範數)

O

目標(objective)

演算法嘗試優化的目標函數。

one-hot 編碼(獨熱編碼)(one-hotencoding)

一個稀疏向量,其中:一個元素設置為 1,所有其他的元素設置為 0。。

一對多(one-vs.-all)

給出一個有 N 個可能解決方案的分類問題,一對多解決方案包括 N 個獨立的二元分類器——每個可能的結果都有一個二元分類器。例如,一個模型將樣本分為動物、蔬菜或礦物,則一對多的解決方案將提供以下三種獨立的二元分類器:

動物和非動物

蔬菜和非蔬菜

礦物和非礦物

過擬合(overfitting)

創建的模型與訓練數據非常匹配,以至於模型無法對新數據進行正確的預測

Oversampling(過採樣)

P

pandas

一種基於列的數據分析 API。很多機器學習框架,包括 TensorFlow,支持 pandas 數據結構作為輸入。參見 pandas 文檔。

參數(parameter)

機器學習系統自行訓練的模型的變數。例如,權重是參數,它的值是機器學習系統通過連續的訓練迭代逐漸學習到的。注意與超參數的區別。

性能(performance)

在軟體工程中的傳統含義:軟體運行速度有多快/高效?

在機器學習中的含義:模型的準確率如何?即,模型的預測結果有多好?

困惑度(perplexity)

對模型完成任務的程度的一種度量指標。例如,假設你的任務是閱讀用戶在智能手機上輸入的單詞的頭幾個字母,並提供可能的完整單詞列表。該任務的困惑度(perplexity,P)是為了列出包含用戶實際想輸入單詞的列表你需要進行的猜測數量。

流程(pipeline)

機器學習演算法的基礎架構。管道包括收集數據、將數據放入訓練數據文件中、訓練一或多個模型,以及最終輸出模型。

Principal component analysis/PCA(主成分分析)

Precision(查准率/準確率)

Prior knowledge(先驗知識)

Q

Quasi Newton method(擬牛頓法)

R

召回率(recall)

回歸模型(regression model)

一種輸出持續值(通常是浮點數)的模型。而分類模型輸出的是離散值。

正則化(regularization)

對模型複雜度的懲罰。正則化幫助防止過擬合。正則化包括不同種類:

L1 正則化

L2 正則化

dropout 正則化

early stopping(這不是正式的正則化方法,但可以高效限制過擬合)

正則化率(regularization rate)

一種標量級,用 lambda 來表示,指正則函數的相對重要性。從下面這個簡化的損失公式可以看出正則化率的作用:

minimize(loss function + λ(regularization function))

提高正則化率能夠降低過擬合,但可能會使模型準確率降低。

表徵(represention)

將數據映射到有用特徵的過程。

受試者工作特徵曲線(receiver operatingcharacteristic/ROC Curve)

反映在不同的分類閾值上,真正類率和假正類率的比值的曲線。參見 AUC。

Recurrent Neural Network(循環神經網路)

Recursive neural network(遞歸神經網路)

Reinforcement learning/RL(強化學習)

Re-sampling(重採樣法)

Representation learning(表徵學習)

Random Forest Algorithm(隨機森林演算法)

S

縮放(scaling)

特徵工程中常用的操作,用於控制特徵值區間,使之與數據集中其他特徵的區間匹配。例如,假設你想使數據集中所有的浮點特徵的區間為 0 到 1。給定一個特徵區間是 0 到 500,那麼你可以通過將每個值除以 500,縮放特徵值區間。還可參見正則化。

scikit-learn

一種流行的開源機器學習平台。網址:。

序列模型(sequence model)

輸入具有序列依賴性的模型。例如,根據之前觀看過的視頻序列對下一個視頻進行預測。

Sigmoid 函數(sigmoid function)

softmax

為多類別分類模型中每個可能的類提供概率的函數。概率加起來的總和是 1.0。例如,softmax 可能檢測到某個圖像是一隻狗的概率為 0.9,是一隻貓的概率為 0.08,是一匹馬的概率為 0.02。(也叫作 full softmax)。

結構風險最小化(structural risk minimization/SRM)

這種演算法平衡兩個目標:

構建預測性最強的模型(如最低損失)。

使模型盡量保持簡單(如強正則化)。

比如,在訓練集上的損失最小化 + 正則化的模型函數就是結構風險最小化演算法。更多信息,參見 。可與經驗風險最小化對照閱讀。

監督式機器學習(supervised machine learning)

利用輸入數據及其對應標籤來訓練模型。監督式機器學習類似學生通過研究問題和對應答案進行學習。在掌握問題和答案之間的映射之後,學生就可以提供同樣主題的新問題的答案了。可與非監督機器學習對照閱讀。

Similarity measure(相似度度量)

Singular Value Decomposition(奇異值分解)

Soft margin(軟間隔)

Soft margin maximization(軟間隔最大化)

Support Vector Machine/SVM(支持向量機)

T

張量(tensor)

TensorFlow 項目的主要數據結構。張量是 N 維數據結構(N 的值很大),經常是標量、向量或矩陣。張量可以包括整數、浮點或字元串值。

Transfer learning(遷移學習)

U

無標籤樣本(unlabeled example)

包含特徵但沒有標籤的樣本。無標籤樣本是推斷的輸入。在半監督學習和無監督學習的訓練過程中,通常使用無標籤樣本。

無監督機器學習(unsupervised machine learning)

訓練一個模型尋找數據集(通常是無標籤數據集)中的模式。無監督機器學習最常用於將數據分成幾組類似的樣本。無監督機器學習的另一個例子是主成分分析(principal componentanalysis,PCA)

W

Word embedding(詞嵌入)

Word sense disambiguation(詞義消歧)

LDA漫遊系列(四)-Gibbs Sampling

隨機模擬方法有一個很酷的別名是蒙特卡羅方法。這個方法的發展始於20世紀40年代。

統計模擬中有一個很重要的問題就是給定一個概率分布p(x),我們如何在計算機中生成它的樣本,一般而言均勻分布的樣本是相對容易生成的,通過線性同餘發生器可以生成偽隨機數,我們用確定性演算法生成[0,1]之間的偽隨機數序列後,這些序列的各種統計指標和均勻分布Uniform(0,1)的理論計算結果非常接近,這樣的偽隨機序列就有比較好的統計性質,可以被當成真實的隨機數使用。

而我們常見的概率分布,無論是連續的還是離散的分布,都可以基於Uniform(0, 1) 的樣本生成,比如正態分布可以通過著名的 Box-Muller變換得到。其他幾個著名的連續分布,包括指數分布,Gamma分布,t分布等,都可以通過類似的數學變換得到,不過我們並不是總這麼幸運的,當p(x)的形式很複雜,或者p(x)是個高維分布的時候,樣本的生成就可能很困難了,此時需要一些更加複雜的隨機模擬方法來生成樣本,比如MCMC方法和Gibbs採樣方法,不過在了解這些方法之前,我們需要首先了解一下馬爾可夫鏈及其平穩分布。

馬爾可夫鏈通俗說就是根據一個轉移概率矩陣去轉移的隨機過程(馬爾可夫過程),該隨機過程在PageRank演算法中也有使用,如下圖所示:

通俗解釋的話,這裡的每個圓環代表一個島嶼,比如i到j的概率是pij,每個節點的出度概率之和=1,現在假設要根據這個圖去轉移,首先我們要把這個圖翻譯成如下的矩陣:

上面的矩陣就是狀態轉移矩陣,我身處的位置用一個向量表示π=(i,k,j,l)假設我第一次的位置位於i島嶼,即π0=(1,0,0,0),第一次轉移,我們用π0乘上狀態轉移矩陣P,也就是π1 = π0 * P = [pii,pij,pik,pil],也就是說,我們有pii的可能性留在原來的島嶼i,有pij的可能性到達島嶼j…第二次轉移是,以第一次的位置為基礎的到π2 = π1 * P,依次類推下去。

有那麼一種情況,我的位置向量在若干次轉移後達到了一個穩定的狀態,再轉移π向量也不變化了,這個狀態稱之為平穩分布狀態π*(stationary distribution),這個情況需要滿足一個重要的條件,就是 Detailed Balance 。

那麼什麼是 Detailed Balance 呢?

假設我們構造如下的轉移矩陣:

再假設我們的初始向量為π0=(1,0,0),轉移1000次以後達到了平穩狀態(0.625,0.3125,0.0625)。

所謂的 Detailed Balance 就是,在平穩狀態中:

為什麼滿足了Detailed Balance條件之後,我們的馬爾可夫鏈就會收斂呢?下面的式子給出了答案:

下一個狀態是j的概率,等於從各個狀態轉移到j的概率之和,在經過Detailed Balance條件變換之後,我們發現下一個狀態是j剛好等於當前狀態是j的概率,所以馬爾可夫鏈就收斂了。

對於給定的概率分布p(x),我們希望能有便捷的方式生成它對應的樣本,由於馬爾可夫鏈能夠收斂到平穩分布,於是一個很漂亮的想法是:如果我們能構造一個轉移矩陣偽P的馬爾可夫鏈,使得該馬爾可夫鏈的平穩分布恰好是p(x),那麼我們從任何一個初始狀態x0出發沿著馬爾可夫鏈轉移,得到一個轉移序列x0,x1,x2,….xn,xn+1,如果馬爾可夫鏈在第n步已經收斂了,於是我們就得到了p(x)的樣本xn,xn+1….

好了,有了這樣的思想,我們怎麼才能構造一個轉移矩陣,使得馬爾可夫鏈最終能收斂即平穩分布恰好是我們想要的分布p(x)呢?我們主要使用的還是我們的細緻平穩條件(Detailed Balance),再來回顧一下:

假設我們已經又一個轉移矩陣為Q的馬爾可夫鏈(q(i,j)表示從狀態i轉移到狀態j的概率),顯然通常情況下:

也就是細緻平穩條件不成立,所以p(x)不太可能是這個馬爾可夫鏈的平穩分布,我們可否對馬爾可夫鏈做一個改造,使得細緻平穩條件成立呢?比如我們引入一個α(i,j),從而使得:

那麼問題又來了,取什麼樣的α(i,j)可以使上等式成立呢?最簡單的,按照對稱性:

在改造Q的過程中引入的α(i,j)稱為接受率,物理意義可以理解為在原來的馬爾可夫鏈上,從狀態i以q(i,j)的概率跳轉到狀態j的時候,我們以α(i,j)的概率接受這個轉移,於是得到新的馬爾可夫鏈Q’的轉移概率q(i,j)α(i,j)。

假設我們已經又一個轉移矩陣Q,對應的元素為q(i,j),把上面的過程整理一下,我們就得到了如下的用於採樣概率分布p(x)的演算法:

以上的MCMC演算法已經做了很漂亮的工作了,不過它有一個小問題,馬爾可夫鏈Q在轉移的過程中接受率α(i,j)可能偏小,這樣採樣的話容易在原地踏步,拒絕大量的跳轉,這是的馬爾可夫鏈便利所有的狀態空間要花費太長的時間,收斂到平穩分布p(x)的速度太慢,有沒有辦法提升一些接受率呢?當然有辦法,把α(i,j)和α(j,i)同比例放大,不打破細緻平穩條件就好了呀,但是我們又不能無限的放大,我們可以使得上面兩個數中最大的一個放大到1,這樣我們就提高了採樣中的跳轉接受率,我們取:

於是經過這麼微小的改造,我們就得到了Metropolis-Hastings演算法,該演算法的步驟如下:

對於高維的情形,由於接受率的存在,Metropolis-Hastings演算法的效率不夠高,能否找到一個轉移矩陣Q使得接受率α=1呢?我們從二維的情形入手,假設有一個概率分布p(x,y),考察x坐標相同的兩個點A(x1,y1) ,B(x1,y2),我們發現:

基於以上等式,我們發現,在x=x1這條平行於y軸的直線上,如果使用條件分布p(y|x1)作為任何兩個點之間的轉移概率,那麼任何兩個點之間的轉移滿足細緻平穩條件,同樣的,在y=y1這條平行於x軸的直線上,如果使用條件分布p(x|y1) 作為,那麼任何兩個點之間的轉移也滿足細緻平穩條件。於是我們可以構造平面上任意兩點之間的轉移概率矩陣Q:

有了上面的轉移矩陣Q,我們很容易驗證對平面上任意兩點X,Y,滿足細緻平穩條件:

由二維的情形我們很容易推廣到高維的情形:

所以高維空間中的GIbbs 採樣演算法如下:

Lotka-Volterra模型

種間競爭是指具有相似要求的物種,為了爭奪空間和資源,而產生的一種直接或間接抑制對方的現象。

Lotka-Volterrra的種間競爭模型:

K是環境容納量

N則是物種的種群數量

兩者穩定共存的基本條件就是dN1/dt=0和dN2/dt=0

若dN1/dt=0,則K1-N1-αN2=0——①

若dN2/dt=0,則K2-N2-βN1=0——②

當環境全被N1佔領則由②式得出N1=K2/β

當環境全被N2佔領則由①式得出N2=K1/α

四種情況如圖所示

吉布斯抽樣是什麼

吉布斯採樣是生成馬爾科夫鏈的一種方法,生成的馬爾科夫鏈可以用來做蒙特卡洛模擬,從而求得一個較複雜的多元分布。

吉布斯採樣的具體做法:假設有一個k維的隨機向量,現想要構造一條有n個樣本的k維向量(n樣本馬爾科夫序列),那麼(隨機)初始化一個k維向量,然後固定這個向量其中的k-1個元素,抽取剩下的那個元素(生成給定後驗的隨機數),這樣循環k次,就把整個向量更新了一遍,也就是生成了一個新的樣本,把這個整體重複n次就得到了一條馬爾科夫鏈。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/270042.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 13:35
下一篇 2024-12-16 13:35

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29

發表回復

登錄後才能評論