python狄拉克函數,狄拉克函數

本文目錄一覽:

人工智慧一些術語總結

隨著智能時代慢慢的到來,有一些基本概念都不知道真的是要落伍了,作為正在積極學習向上的青年,我想總結一份筆記,此份筆記會記錄眾多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(詞義消歧)

這門學科或將改變物理學研究

計算物理是以計算機為工具,以計算方法和計算軟體為手段,以研究和發現物質結構及其運動規律為目的的一門學科 ,與理論物理和實驗物理並列,是物理學發展的第三支柱。

計算物理的研究範圍包括了物理學下屬的所有子學科,從微觀世界的基本粒子到廣闊無垠的宇宙;從 s的超快事件,到大爆炸以來宇宙的一百多億年的演變過程;從接近絕對零度的超冷原子,到上億度的熱核聚變和超高溫天體。具體而言,包括宇宙學、高能物理、核物理、等離子體物理、凝聚態物理、光學、原子分子物理等二級學科所覆蓋的所有內容。它在物理學的發展中發揮著不可或缺的作用。

計算物理是推動物理學及其應用發展的重要推動力。在過去的50 年裡,計算機的硬體數量遵循摩爾定律發展,同時計算物理方法的研究也呈加速發展的態勢,使得通過數值計算和模擬來 探索 與解決物理問題成為越來越有效的手段,在物理學的研究中發揮了重要作用。特別是近四十年來,計算物理髮展十分迅速,解決了許多解析理論研究無法解決的問題,檢驗有效理論和近似成立的條件,定量比較理論與實驗測量結果。同時,它還可以預測新的物理現象、物理效應、物理規律和新材料,實現複雜數據的可視化、實驗的實時控制與分析。

計算物理在物理學研究中所發揮的作用,歸納起來主要有以下四點。

經過幾百年的發展,物理學建立了非常系統的描述不同尺度下物理現象的理論框架,如描述星際尺度的廣義相對論、描述宏觀尺度下的麥克斯韋方程及牛頓力學、描述微觀量子世界的薛定諤方程和狄拉克方程等,為 探索 和發現新的物理現象與規律奠定了基礎。但是,針對非常複雜的物理系統,特別是量子多體相互作用系統,幾乎不可能嚴格求解這些方程或由這些方程導出的新的方程或公式,並且在大多數情況下,甚至近似解析求解都變得非常困難。通過數值計算和模擬為解決這類問題提供了一個可靠的研究手段,甚至在很多情況下是唯一的手段。同時,通過系統的數值計算和模擬,也可以為檢驗各種近似方法和有效理論的可靠性提供大量有用的數據,改進近似方法,提高理論描述的適用性和準確性。

事實上,現代物理學的研究已經離不開計算機了。例如,在凝聚態物理、核物理和高能物理的多體量子問題研究中,由於系統的眾多自由度之間存在強烈的相互作用,以微擾論為代表的理論方法不再適用,其他理論研究方法也有各種各樣的局限性,如量子場論很難提供定量的結果。數值計算已經成為研究這方面問題的重要手段。通過數值計算,可以幫助我們建立清晰、直觀的物理圖像,定量揭示隱藏在各種物理模型背後的物理效應或規律,解決理論研究中遇到的關鍵問題。

在現代物理學相對成熟的各個分支里,許多理論中預言的物質形態在當前的條件下沒有辦法進行實驗檢驗。人們可以首先構造模型,然後進行大規模計算,得到模型的性質,再與理論預期進行比較和調整,推動理論、計算和實驗實現的共同進步。例如,凝聚態物理學中的拓撲序和任意子激發的材料實現與實驗探測,在量子自旋液體和自旋冰中的分數化、物質場與演生規範場的耦合現象,去禁閉量子臨界點和其與相互作用拓撲相變的對偶關係等問題對應的量子材料本身還處在尋找的階段,而且其實驗的要求也可能比較苛刻(極低溫、高壓、強磁場等)。然而,這些基礎性問題中卻蘊含著量子物質科學新範式的雛形。為了研究它們,計算物理起到配合甚至是引領實驗物理的作用。人們可以在計算中進行可觀測物理量的「測量」,然後告訴實驗物理學家將來在實驗實現時可能得到的實驗結果,尤其是和已有材料的實驗結果區別的地方。

物理學是一門實驗科學,物理學規律是在大量實驗積累的基礎上通過邏輯思維總結髮現的。理論物理獨立於實驗物理,成為物理學的一個分支學科,是物理學發展到相對較成熟階段的產物。根據已有的物理規律,通過理論分析和推演,發現和預測新的物理現象與規律,是理論物理要解決的問題。在這個過程中,有時需要做一些假設或近似。在很多情況下,可能的選擇會比較多,在做假設或近似時通常需要得到實驗的幫助,以減少盲目性。此外,理論研究的結果也需要得到實驗的檢驗。同樣,實驗研究也需要理論的幫助和指導。實驗現象需要從理論上得到理解和解釋,最後總結成規律,成為新的理論和實驗研究的出發點。

毫無疑問,理論物理和實驗物理的研究是密切聯繫在一起的。但要真正將兩者密切聯繫在一起並不是一件容易的事,常常需要做非常複雜的定量計算和分析,離開計算物理是做不到的。計算物理為理論計算與實驗測量結果的定量比較創造了條件,成為聯通理論物理和實驗物理的「橋樑」。一個理論是否正確,可以通過計算機模擬並與實驗結果進行定量比較進行驗證,而實驗中的物理過程也可通過模擬加以理解,並幫助歸納,找出其中的規律。

計算物理方法及其應用具有精確度高、適用性強、可擴展、系統化及可持續性強等重要特點和優勢,尤其適合研究極端條件下的物理問題,成為替代實驗或減少實驗成本的必要手段。其一,對於一些長周期或高成本的實驗研究,通過大規模的科學計算對實驗結果進行模擬,在初步掌握其規律性的基礎上再制定更合理的實驗方案,既可以減少直接進行實驗研究的盲目性,也可以降低實驗成本,縮短實驗周期,增加成功率。其二,在一些極端條件下,如在500 GPa 以上的超高壓、固體系統中1 mK 之下的極低溫、50 T 以上的穩恆強磁場條件下,目前還很難或甚至不可能開展物理實驗研究,用計算模擬代替物理實驗是理解/發現這些極端條件下物理現象/規律的唯一手段。

計算模擬是再現客觀物質世界運動規律的一種手段。由於設備、資源等觀察能力的限制,僅用實驗手段來研究某個物理現象往往不能獲得其完整的信息。計算模擬利用現代計算機的大存儲量和快速計算能力,重現系統內部運動的全過程,可以多考慮一些外部因素和內在因素、模擬動態轉變、保持非線性特性、保留變係數特點、考慮較複雜的邊界條件等,因此能恢復對客觀事物更準確、全面的描述和模擬。同時,計算模擬不存在物理實驗中的測量誤差和系統誤差,沒有測試探頭的干擾問題,可以比較自由地選取參數,構造區分系統不同物理特性的相圖,比物理實驗有更大的自由度和靈活性,並且沒有安全性的限制。

計算物理之所以從理論物理中獨立出來,不僅僅是因為計算物理能夠算得快、算得准,為解決複雜問題提供了一種新的研究手段,更重要的是,它還提供了一種新的思維方式和語言。純粹的理論推演在複雜的研究對象和海量數據面前往往束手無策,由於可能的選擇太多,因此從理論上全面描述一個複雜系統幾乎不可能。因此,對於複雜系統或現象的研究,以及在海量數據中發現新的物理規律和物理效應,計算思維成為一種不可或缺且有效的研究方式,具體表現在以下三個方面:其一,與實驗物理一樣,計算物理可以提供發現新的物理規律的模擬數據,這些模擬的數據雖然最終也需要得到實驗的驗證,但計算模擬由於速度快、準確性高,會大大減少時間成本和研究成本,加速發現新的物理現象和規律。其二,計算物理可以幫助我們分析實驗結果,特別是高能物理等涉及海量數據的物理實驗結果,實現大數據的可視化,並從大數據中找出關鍵的數據點,發現隱藏在數據中的規律,幫助發現新的物理現象和規律,並在此基礎上建立理論框架、預測新的物理現象。其三,一些全新的物理學理論在建立的初期通常沒有合適的實驗系統可用來對其進行檢驗,如凝聚態物理學中的去禁閉量子臨界現象、高能物理格點色動力學中關於新的粒子存在性的預測等,都可以通過設計合適的理論模型,然後進行大規模數值計算得到關於理論正確與否的認識,推動理論、模型甚至實驗的共同發展。

計算模擬在擁有複雜多層次結構的系統的研究中還常常扮演沙盤推演的角色。在這裡,系統的單元及其相互作用具有多個維度和特異性,已有的信息不足以給出完整的微觀描述,特別是像生命體這類經歷了億萬年進化且高度依賴其特定生存環境的體系。目前常用的方法是在現有的數據和知識基礎上搭建簡化模型,通過計算模擬重現系統的時空特性,再與實際觀察相比較,對模型的架構及其參數加以改進,逐步推進對特定現象的認識。近年來,隨著計算機運算速度和內存的大幅增加及Python 語言等面向對象的語言的推廣,計算模擬可以用來搭建由多個過程組成的複合系統,為開展知識和信息量巨大的納米功能器件、細胞內生命過程等挑戰性課題提供了全新的手段,有望在能源材料、藥物設計、人造細胞等領域發揮重要作用。

這些作用說明, 計算物理是一個能夠並且已經在改變物理學研究範式的學科,可以大大縮短研究周期,並有可能在90% 甚至更高程度上取代傳統的實驗物理和理論物理研究。 同時,計算物理還可以降低物理學研究中發現新材料、新器件和新的物理現象的門檻,加快新的物理規律和物理效應發現步伐,推動物理與材料、信息、能源、化學、生命等學科的交叉融合及其應用發展。可以預期,未來計算物理在物理學的核心地位將越來越顯著。

今日好書推薦

本書分析了計算物理學的學科發展任務和戰略地位、學科的發展規律和態勢;提出若干我國計算物理學發展亟待解決的基礎科學問題及優先發展方向;針對制約計算物理學發展的關鍵政策問題,提出相應的資助機制和政策建議。

本書適合高層次的戰略和管理專家、相關領域的高等院校師生、研究機構的研究人員閱讀,是 科技 工作者洞悉學科發展規律、把握前沿領域和重點方向的重要指南,是 科技 管理部門重要的決策參考,同時也是 社會 公眾了解計算物理學研究現狀及趨勢的權威讀本。

Python語言下的機器學習庫

Python語言下的機器學習庫

Python是最好的編程語言之一,在科學計算中用途廣泛:計算機視覺、人工智慧、數學、天文等。它同樣適用於機器學習也是意料之中的事。當然,它也有些缺點;其中一個是工具和庫過於分散。如果你是擁有unix思維(unix-minded)的人,你會覺得每個工具只做一件事並且把它做好是非常方便的。但是你也需要知道不同庫和工具的優缺點,這樣在構建系統時才能做出合理的決策。工具本身不能改善系統或產品,但是使用正確的工具,我們可以工作得更高效,生產率更高。因此了解正確的工具,對你的工作領域是非常重要的。

這篇文章的目的就是列舉並描述Python可用的最有用的機器學習工具和庫。這個列表中,我們不要求這些庫是用Python寫的,只要有Python介面就夠了。我們在最後也有一小節關於深度學習(Deep Learning)的內容,因為它最近也吸引了相當多的關注。

我們的目的不是列出Python中所有機器學習庫(搜索「機器學習」時Python包索引(PyPI)返回了139個結果),而是列出我們所知的有用並且維護良好的那些。另外,儘管有些模塊可以用於多種機器學習任務,我們只列出主要焦點在機器學習的庫。比如,雖然Scipy包含一些聚類演算法,但是它的主焦點不是機器學習而是全面的科學計算工具集。因此我們排除了Scipy(儘管我們也使用它!)。

另一個需要提到的是,我們同樣會根據與其他科學計算庫的集成效果來評估這些庫,因為機器學習(有監督的或者無監督的)也是數據處理系統的一部分。如果你使用的庫與數據處理系統其他的庫不相配,你就要花大量時間創建不同庫之間的中間層。在工具集中有個很棒的庫很重要,但這個庫能與其他庫良好集成也同樣重要。

如果你擅長其他語言,但也想使用Python包,我們也簡單地描述如何與Python進行集成來使用這篇文章列出的庫。

Scikit-LearnScikit Learn是我們在CB Insights選用的機器學習工具。我們用它進行分類、特徵選擇、特徵提取和聚集。我們最愛的一點是它擁有易用的一致性API,並提供了很多開箱可用的求值、診斷和交叉驗證方法(是不是聽起來很熟悉?Python也提供了「電池已備(譯註:指開箱可用)」的方法)。錦上添花的是它底層使用Scipy數據結構,與Python中其餘使用Scipy、Numpy、Pandas和Matplotlib進行科學計算的部分適應地很好。因此,如果你想可視化分類器的性能(比如,使用精確率與反饋率(precision-recall)圖表,或者接收者操作特徵(Receiver Operating Characteristics,ROC)曲線),Matplotlib可以幫助進行快速可視化。考慮到花在清理和構造數據的時間,使用這個庫會非常方便,因為它可以緊密集成到其他科學計算包上。

另外,它還包含有限的自然語言處理特徵提取能力,以及詞袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency演算法)、預處理(停用詞/stop-words,自定義預處理,分析器)。此外,如果你想快速對小數據集(toy dataset)進行不同基準測試的話,它自帶的數據集模塊提供了常見和有用的數據集。你還可以根據這些數據集創建自己的小數據集,這樣在將模型應用到真實世界中之前,你可以按照自己的目的來檢驗模型是否符合期望。對參數最優化和參數調整,它也提供了網格搜索和隨機搜索。如果沒有強大的社區支持,或者維護得不好,這些特性都不可能實現。我們期盼它的第一個穩定發布版。

StatsmodelsStatsmodels是另一個聚焦在統計模型上的強大的庫,主要用於預測性和探索性分析。如果你想擬合線性模型、進行統計分析,或者預測性建模,那麼Statsmodels非常適合。它提供的統計測試相當全面,覆蓋了大部分情況的驗證任務。如果你是R或者S的用戶,它也提供了某些統計模型的R語法。它的模型同時也接受Numpy數組和Pandas數據幀,讓中間數據結構成為過去!

PyMCPyMC是做貝葉斯曲線的工具。它包含貝葉斯模型、統計分布和模型收斂的診斷工具,也包含一些層次模型。如果想進行貝葉斯分析,你應該看看。

ShogunShogun是個聚焦在支持向量機(Support Vector Machines, SVM)上的機器學習工具箱,用C++編寫。它正處於積極開發和維護中,提供了Python介面,也是文檔化最好的介面。但是,相對於Scikit-learn,我們發現它的API比較難用。而且,也沒提供很多開箱可用的診斷和求值演算法。但是,速度是個很大的優勢。

GensimGensim被定義為「人們的主題建模工具(topic modeling for humans)」。它的主頁上描述,其焦點是狄利克雷劃分(Latent Dirichlet Allocation, LDA)及變體。不同於其他包,它支持自然語言處理,能將NLP和其他機器學習演算法更容易組合在一起。如果你的領域在NLP,並想進行聚集和基本的分類,你可以看看。目前,它們引入了Google的基於遞歸神經網路(Recurrent Neural Network)的文本表示法word2vec。這個庫只使用Python編寫。

OrangeOrange是這篇文章列舉的所有庫中唯一帶有圖形用戶界面(Graphical User Interface,GUI)的。對分類、聚集和特徵選擇方法而言,它是相當全面的,還有些交叉驗證的方法。在某些方面比Scikit-learn還要好(分類方法、一些預處理能力),但與其他科學計算系統(Numpy, Scipy, Matplotlib, Pandas)的適配上比不上Scikit-learn。但是,包含GUI是個很重要的優勢。你可以可視化交叉驗證的結果、模型和特徵選擇方法(某些功能需要安裝Graphviz)。對大多數演算法,Orange都有自己的數據結構,所以你需要將數據包裝成Orange兼容的數據結構,這使得其學習曲線更陡。

PyMVPAPyMVPA是另一個統計學習庫,API上與Scikit-learn很像。包含交叉驗證和診斷工具,但是沒有Scikit-learn全面。

深度學習儘管深度學習是機器學習的一個子節,我們在這裡創建單獨一節的原因是,它最新吸引了Google和Facebook人才招聘部門的很多注意。

TheanoTheano是最成熟的深度學習庫。它提供了不錯的數據結構(張量,tensor)來表示神經網路的層,對線性代數來說很高效,與Numpy的數組類似。需要注意的是,它的API可能不是很直觀,用戶的學習曲線會很高。有很多基於Theano的庫都在利用其數據結構。它同時支持開箱可用的GPU編程。

PyLearn2還有另外一個基於Theano的庫,PyLearn2,它給Theano引入了模塊化和可配置性,你可以通過不同的配置文件來創建神經網路,這樣嘗試不同的參數會更容易。可以說,如果分離神經網路的參數和屬性到配置文件,它的模塊化能力更強大。

DecafDecaf是最近由UC Berkeley發布的深度學習庫,在Imagenet分類挑戰中測試發現,其神經網路實現是很先進的(state of art)。

Nolearn如果你想在深度學習中也能使用優秀的Scikit-learn庫API,封裝了Decaf的Nolearn會讓你能夠更輕鬆地使用它。它是對Decaf的包裝,與Scikit-learn兼容(大部分),使得Decaf更不可思議。

OverFeatOverFeat是最近貓vs.狗(kaggle挑戰)的勝利者,它使用C++編寫,也包含一個Python包裝器(還有Matlab和Lua)。通過Torch庫使用GPU,所以速度很快。也贏得了ImageNet分類的檢測和本地化挑戰。如果你的領域是計算機視覺,你可能需要看看。

HebelHebel是另一個帶有GPU支持的神經網路庫,開箱可用。你可以通過YAML文件(與Pylearn2類似)決定神經網路的屬性,提供了將神級網路和代碼友好分離的方式,可以快速地運行模型。由於開發不久,就深度和廣度上說,文檔很匱乏。就神經網路模型來說,也是有局限的,因為只支持一種神經網路模型(正向反饋,feed-forward)。但是,它是用純Python編寫,將會是很友好的庫,因為包含很多實用函數,比如調度器和監視器,其他庫中我們並沒有發現這些功能。

NeurolabNeuroLab是另一個API友好(與Matlabapi類似)的神經網路庫。與其他庫不同,它包含遞歸神經網路(Recurrent Neural Network,RNN)實現的不同變體。如果你想使用RNN,這個庫是同類API中最好的選擇之一。

與其他語言集成你不了解Python但是很擅長其他語言?不要絕望!Python(還有其他)的一個強項就是它是一個完美的膠水語言,你可以使用自己常用的編程語言,通過Python來訪問這些庫。以下適合各種編程語言的包可以用於將其他語言與Python組合到一起:R – RPythonMatlab – matpythonJava – JythonLua – Lunatic PythonJulia – PyCall.jl

不活躍的庫這些庫超過一年沒有發布任何更新,我們列出是因為你有可能會有用,但是這些庫不太可能會進行BUG修復,特別是未來進行增強。MDPMlPyFFnetPyBrain如果我們遺漏了你最愛的Python機器學習包,通過評論讓我們知道。我們很樂意將其添加到文章中。

學Python有前途么?

毋庸置疑,Python前景很廣闊。首先,對應崗位多。Python被稱為編程語言中的萬能膠水,這是一門應用面很廣的語言,被廣泛的用在Web開發、運維自動化、測試自動化、數據挖掘等多個行業和領域。

無論是國內的百度、位元組跳動、阿里巴巴、騰訊、華為還是國外的谷歌、NASA、YouTube、Facebook、工業光魔、紅帽等都在用Python完成各種各樣的任務。其次,市場需求大。從最新Python招聘崗位需求來看,Python工程師的崗位需求量巨大,並且崗位需求量還在呈現上漲的趨勢。全國Python崗位需求量接近10W個。最後,薪資水平。目前初級Python工程師薪資待遇就達10-15K,而隨著開發年限的增加,Python開發者薪資呈直線上升的變化趨勢,工作8年的Python薪資攀升至25K左右。此外,國家也在加大培養Python人才。國務院發布《新一代人工智慧發展規劃》,人工智慧正式納入國家發展戰略,並且已經有數個省份將Python納入到高考體系,國家計算機二級考試新增 「 Python 語言程序設計」科目。總的來說,Python是很有前途的,符合時代發展的大方向,感興趣的小夥伴,可以放心大膽的去嘗試。關於Python培訓的更多相關知識,建議到千鋒教育進行更詳細的了解,目前,千鋒教育已在北京、深圳、上海、廣州、鄭州、大連等20餘個核心城市建立直營校區,等待你的隨聽。

python sympy怎樣把狄克拉函數定義出來

from sympy import DiracDelta

即導入了狄拉克函數,可以送入一個變數求解,如:

DiracDelta(2)

輸出0。

10X單細胞(10X空間轉錄組)降維分析之UMAP

UMAP ,全稱uniform manifold approximation and projection,統一流形逼近與投影,是基於黎曼幾何和代數拓撲的理論框架結構構建的。在處理大數據集時,UMAP優勢明顯,運行速度更快,內存佔用小。Etienne Becht等人2019年在Nature Biotechnology上發表一篇文章將其應用在生物學數據上並闡述了UMAP在處理單細胞數據方面的應用和優勢。

如果你不知道tSNE是什麼,它是如何工作的,也沒有讀過2008年的革命性的van der Maaten Hinton原稿,可以參考我的那文章 10X單細胞(10X空間轉錄組)降維分析之tSNE(演算法基礎知識) 。儘管tSNE對一般的單細胞基因組學和數據科學產生了巨大的影響,但人們普遍認為它有一些缺點,這些缺點很快將得到解決。( tSNE的缺點在上次分享的文章中也做過詳細的介紹 )。

看看上面的圖,我想說的是 t分布應該提供全局距離信息,因為它們將高維空間中相距較遠的點推到低維空間中更遠的點。

然而,這種良好的意願被成本函數(KL-divergence)的選擇所扼殺,我們將在後面看到其原因。

(1),可以顯著降低計算時間高維圖像由於求和或集成是一個代價高昂的計算過程。想想馬爾可夫鏈蒙特卡羅(MCMC)它基本上是試圖近似地計算在貝葉斯規則的分母上的積分(UMAP使用最近鄰居的數量而不是perplexity)

(2)定義perplexity, UMAP則定義了沒有log2函數的最近鄰居k的個數,即:

UMAP使用稍微不同的高維概率對稱

symmterization是必要的因為UMAP融合在一起的點與本地不同的指標(通過參數ρ),它可能發生圖A和B節點之間的重量不等於B之間的權重和節點。為什麼UMAP使用這種對稱而不是tSNE使用的對稱還不清楚。我將在下一篇文章(從頭開始編寫UMAP)中展示我對不同的對稱化規則的實驗,這並沒有使我相信這是如此重要的一步,因為它對最終的低維嵌入式產生了很小的影響。

UMAP使用曲線族1 / (1+a*y^(2b))在低維中建模距離概率,不是完全的學生t分布,但非常非常相似,請注意再次沒有應用標準化:

其中,對於默認UMAP超參數a≈1.93,b≈0.79(實際上,對於min_dist = 0.001)。在實踐中,UMAP從非線性最小二乘擬合到帶有min_dist超參數的分段函數中找到a和b:

為了更好地理解曲線族1 / (1+a*y^(2b))的行為,讓我們畫出不同a和b的曲線:

我們可以看到曲線族對參數b非常敏感,在大的參數b處,在小的參數y處,曲線族形成了一種高峰。這意味著在UMAP超參數min_dist之下,所有的數據點都是同樣緊密相連的。由於Q(Y)函數的行為幾乎像一個Heaviside階躍函數,這意味著UMAP為所有在低維空間中相互靠近的點分配了幾乎相同的低維坐標。min_dist正是導致在UMAP維數降低圖中經常觀察到的超密集集群的原因。

為了演示如何準確地找到a和b參數,讓我們展示一個簡單的分段函數(其中高峰部分是通過min_dist參數定義的),並使用函數族1 / (1+a y^(2b))通過優化來擬合它。curve_fit來自Scipy Python庫。作為擬合的結果,我們得到了函數1 / (1+a y^(2b))的初值a和初值b。

由於我們需要知道交叉熵的梯度,以便以後實現梯度下降,讓我們快速計算它。忽略只包含p(X)的常數項,我們可以將交叉熵重新寫一下,並將其微分如下:

圖拉普拉斯、譜聚類、拉普拉斯Eignemaps、擴散圖、譜嵌入等,實際上是指將矩陣分解和鄰接圖方法結合起來解決降維問題的同一種有趣的方法。在這種方法中,我們首先構造一個圖(或knn圖),然後通過構造拉普拉斯矩陣用矩陣代數(鄰接矩陣和度矩陣)將其形式化,最後分解拉普拉斯矩陣,即求解特徵值分解問題。

我們可以使用scikit-learn Python庫,並使用spectralembedded函數在演示數據集(即與癌症相關的成纖維細胞(CAFs) scRNAseq數據)上輕鬆地顯示初始的低維坐標:

最後,UMAP使用隨機梯度下降(SGD)代替常規梯度下降(GD),如tSNE / FItSNE,這既加快了計算速度,又減少了內存消耗。

現在讓我們簡要地討論一下為什麼他們說tSNE只保留數據的局部結構。可以從不同的角度來理解tSNE的局部性。首先,我們有σ參數Eq。(1)本地數據點集這樣互相「感覺」。因為成對歐幾里得距離衰減指數的概率,在小的σ值,它基本上是零遙遠的點(大型X)和快速增長僅為最近的鄰居(小X)。相比之下,在大的σ,遙遠而近點的概率成為限制可比和σ→∞,概率就等於1為所有任何一對點之間的距離,即成為等距點。

有趣的是,如果我們擴大成對歐幾里得距離的概率高維度成泰勒級數在σ→∞,我們會在第二近似冪律:

關於兩兩歐幾里得距離的冪律類似於多維定標法(MDS)的成本函數,MDS是通過保存每對點之間的距離來保存全局距離,而不管它們是相距很遠還是很近。一個可以解釋這個大的σtSNE遠程數據點之間的相互作用,所以是不完全正確的說tSNE只能處理當地的距離。然而,我們通常會受到perplexity有限值的限制,Laurens van der Maaten建議perplexity的取值範圍在5到50之間,儘管在局部信息和全局信息之間可能會有一個很好的折衷,那就是使用平方根≈N^(1/2)來選擇perplexity,其中N為樣本量。相反的極限,σ→0,我們最終的極端「局部性」高維概率的行為類似於狄拉克δ函數的行為。

另一種理解tSNE「局部性」的方法是考慮KL-divergence函數。假設X是高維空間中點之間的距離Y是低維空間中點之間的距離

根據kl -散度的定義:

方程(9)的第一項對於X的大小都是趨近於0的,對於X的大小也是趨近於0的,因為指數趨近於1,而log(1)=0。對於大X,這一項仍然趨近於0因為指數前因子趨近於0的速度快於對數趨近於負無窮。因此,為了直觀地理解kl散度,只考慮第二項就足夠了:

這是一個看起來很奇怪的函數,讓我們畫出KL(X, Y)

這個函數的形狀非常不對稱。如果點在高維度X之間的距離很小,指數因子變成1和對數項行為日誌(1 + Y ^ 2)這意味著如果Y是在低維空間的距離大,將會有一個大的懲罰,因此tSNE試圖減少Y在小X為了減少罰款。相反,對於高維空間中的長距離X, Y基本上可以是0到∞之間的任何值,因為指數項趨於0,並且總是勝過對數項。因此,在高維空間中相距遙遠的點,在低維空間中可能會相互靠近。因此,換句話說,tSNE並不能保證高維空間中相距較遠的點在低維空間中會保持較遠的距離。然而,它確實保證了在高維空間中相鄰的點在低維空間中保持相鄰。所以tSNE不是很擅長遠距離投射至低維,所以它只保留本地數據結構提供了σ不去∞。

與tSNE不同,UMAP使用交叉熵(CE)作為成本函數,而不是KL-divergence

這導致了地方-全球結構保護平衡的巨大變化。在X的小值處,我們得到了與tSNE相同的極限,因為第二項由於前因子和對數函數比多項式函數慢的事實而消失:

因此,為了使懲罰規則最小化,Y坐標必須非常小,即Y→0。這與tSNE的行為完全一樣。但是,在大X的相反極限,即X→∞時,第一項消失,第二項的前因子為1,得到:

這裡,如果Y很小,我們會得到一個很大的懲罰,因為Y在對數的分母上,因此,我們鼓勵Y很大,這樣,對數下的比率就變成了1,我們得到零懲罰。因此,我們在X→∞處得到Y→∞,所以從高維空間到低維空間的整體距離保持不變,這正是我們想要的。為了說明這一點,讓我們繪製UMAP CE成本函數:

在這裡,我們可以看到圖的「右」部分看起來與上面的kl散度曲面非常相似。這意味著在X低的時候,為了減少損失,我們仍然想要Y低。然而,當X很大時,Y的距離也要很大,因為如果它很小,CE (X, Y)的損失將是巨大的。記住,之前,對於KL (X, Y)曲面,在X很大的情況下,我們在高Y值和低Y值之間沒有差別,這就是為什麼CE (X, Y)代價函數能夠保持全局距離和局部距離。

我們知道UMAP是速度比tSNE擔憂)時大量的數據點,b)嵌入維數大於2或3,c)大量環境維度的數據集。在這裡,讓我們試著了解UMAP要優於tSNE來自於數學和演算法實現。

tSNE和UMAP基本上都包含兩個步驟:

然而,我注意到UMAP的第一步比tSNE快得多。這有兩個原因:

接下來,UMAP實際上在第二步中也變得更快了。這種改善也有幾個原因:

在這篇文章中,我們了解到儘管tSNE多年來一直服務於單細胞研究領域,但它有太多的缺點,如速度快、缺乏全球距離保存。UMAP總體上遵循了tSNE的哲學,但是引入了一些改進,例如另一個成本函數和缺少高維和低維概率的標準化。

除了運行速度快,內存佔用小等特點,UMAP在處理細胞學數據時還有一個大的優勢,就是可以反映細胞群體之間分化的連續性和組織性。下面將通過文獻中的數據【2】來為大家詳細講解。

對同一組數據分別進行tSNE和UMAP降維,該數據為多達30萬個從8種不同組織富集得到的T細胞和NK細胞的樣本,並使用Phenograph聚類把細胞分為6大類,每種顏色代表一種細胞。從圖中可以看出,UMAP和tSNE都可以較好地把不同類別的細胞分開。但tSNE傾向於把相同細胞群劃分為更多的群,如圖顯示,黑色圈中CD8 T細胞,在tSNE結果中,群數更多,距離更遠。

同樣這組數據用組織來源對UMAP和t-SNE圖上細胞的進行顏色區分,可以觀察到一個有意思的現象。與UMAP相比,t-SNE更加傾向於根據它們的來源來分離總體細胞。而 UMAP則會兼顧細胞群的類別和來源來排列,如圖中在CD4 T細胞和CD8 T細胞群內,細胞的排列與來源也會有一定的規律性,都是大致從臍帶血(CB)和外周血單核細胞(PBMC),到肝臟(Liver)和脾臟(Spleen),最後到一端的扁桃或另一端的皮膚(Skin)、腸道(Gut)和肺(Lung)。

通過駐留記憶T細胞標誌物CD69/CD103、記憶T細胞標誌物CD45 RO和naïve T細胞標誌物CCR7表達群的分布,可以觀察到UMAP可以展示出T細胞連續的分化階段。而tSNE結果中,這些群之間也是連續的,但是卻沒有非常明顯的沿軸結構。同樣的現象也在造血細胞系統中被觀察到。由此可見, UMAP在大數據集的處理時可以展現細胞集群的連續性。

對三組數據(Samusik、Wong、Han_400k)分別進行數據隨機降低至100-200,000之間不同的數量級,形成小數據集。縱軸為小數據集與原始數據集的相關性,代表降維方法在不同數據量上的可重複性。UMAP表現最好,數據集越大,優勢越明顯。

下圖是UMAP和t-SNE對一套784維Fashion MNIST高維數據集降維到3維的效果的比較。

雖然這兩種演算法都表現出強大的局部聚類並將相似的類別分組在一起,但UMAP還將這些相似類別的分組彼此分開。另外,UMAP降維用了4分鐘,而多核t-SNE用了27分鐘。

UMAP的兩個最常用的參數:n_neighbors 和 min_dist,它們可有效地用於控制最終結果中局部結構和全局結構之間的平衡。

最重要的參數是 n_neighbors ,近似最近鄰居數。它有效地控制了UMAP局部結構與全局結構的平衡,數據較小時,UMAP會更加關注局部結構,數據較大時,UMAP會趨向於代表大圖結構,丟掉一些細節。

第二個參數是 min_dist,點之間的最小距離。此參數控制UMAP聚集在一起的緊密程度,數據較小時,會更緊密。較大的值會更鬆散,而將重點放在保留廣泛的拓撲結構上。

t-SNE和UMAP大部分的表現非常相似,但以下示例明顯例外:寬而稀疏的cluster中有密集的cluster(如下圖所示)。UMAP無法分離兩個嵌套的群集,尤其是在維數較高時。

UMAP在初始圖形構造中局部距離的使用可以解釋該演算法無法處理情況的原因。由於高維點之間的距離趨於非常相似(維數的詛咒),所以可能會因此將其混合在一起。

演算法很難,所以懂的人才顯得牛

天行健,君子以自強不息

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

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

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

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

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論