從零開始用Python構(gòu)建神經(jīng)網(wǎng)絡

公司主營業(yè)務:成都做網(wǎng)站、網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出淇濱免費做網(wǎng)站回饋大家。
動機:為了更加深入的理解深度學習,我們將使用 python 語言從頭搭建一個神經(jīng)網(wǎng)絡,而不是使用像 Tensorflow 那樣的封裝好的框架。我認為理解神經(jīng)網(wǎng)絡的內(nèi)部工作原理,對數(shù)據(jù)科學家來說至關(guān)重要。
這篇文章的內(nèi)容是我的所學,希望也能對你有所幫助。
神經(jīng)網(wǎng)絡是什么?
介紹神經(jīng)網(wǎng)絡的文章大多數(shù)都會將它和大腦進行類比。如果你沒有深入研究過大腦與神經(jīng)網(wǎng)絡的類比,那么將神經(jīng)網(wǎng)絡解釋為一種將給定輸入映射為期望輸出的數(shù)學關(guān)系會更容易理解。
神經(jīng)網(wǎng)絡包括以下組成部分
? 一個輸入層,x
? 任意數(shù)量的隱藏層
? 一個輸出層,?
? 每層之間有一組權(quán)值和偏置,W and b
? 為隱藏層選擇一種激活函數(shù),σ。在教程中我們使用 Sigmoid 激活函數(shù)
下圖展示了 2 層神經(jīng)網(wǎng)絡的結(jié)構(gòu)(注意:我們在計算網(wǎng)絡層數(shù)時通常排除輸入層)
2 層神經(jīng)網(wǎng)絡的結(jié)構(gòu)
用 Python 可以很容易的構(gòu)建神經(jīng)網(wǎng)絡類
訓練神經(jīng)網(wǎng)絡
這個網(wǎng)絡的輸出 ? 為:
你可能會注意到,在上面的等式中,輸出 ? 是 W 和 b 函數(shù)。
因此 W 和 b 的值影響預測的準確率. 所以根據(jù)輸入數(shù)據(jù)對 W 和 b 調(diào)優(yōu)的過程就被成為訓練神經(jīng)網(wǎng)絡。
每步訓練迭代包含以下兩個部分:
? 計算預測結(jié)果 ?,這一步稱為前向傳播
? 更新 W 和 b,,這一步成為反向傳播
下面的順序圖展示了這個過程:
前向傳播
正如我們在上圖中看到的,前向傳播只是簡單的計算。對于一個基本的 2 層網(wǎng)絡來說,它的輸出是這樣的:
我們在 NeuralNetwork 類中增加一個計算前向傳播的函數(shù)。為了簡單起見我們假設偏置 b 為0:
但是我們還需要一個方法來評估預測結(jié)果的好壞(即預測值和真實值的誤差)。這就要用到損失函數(shù)。
損失函數(shù)
常用的損失函數(shù)有很多種,根據(jù)模型的需求來選擇。在本教程中,我們使用誤差平方和作為損失函數(shù)。
誤差平方和是求每個預測值和真實值之間的誤差再求和,這個誤差是他們的差值求平方以便我們觀察誤差的絕對值。
訓練的目標是找到一組 W 和 b,使得損失函數(shù)最好小,也即預測值和真實值之間的距離最小。
反向傳播
我們已經(jīng)度量出了預測的誤差(損失),現(xiàn)在需要找到一種方法來傳播誤差,并以此更新權(quán)值和偏置。
為了知道如何適當?shù)恼{(diào)整權(quán)值和偏置,我們需要知道損失函數(shù)對權(quán)值 W 和偏置 b 的導數(shù)。
回想微積分中的概念,函數(shù)的導數(shù)就是函數(shù)的斜率。
梯度下降法
如果我們已經(jīng)求出了導數(shù),我們就可以通過增加或減少導數(shù)值來更新權(quán)值 W 和偏置 b(參考上圖)。這種方式被稱為梯度下降法。
但是我們不能直接計算損失函數(shù)對權(quán)值和偏置的導數(shù),因為在損失函數(shù)的等式中并沒有顯式的包含他們。因此,我們需要運用鏈式求導發(fā)在來幫助計算導數(shù)。
鏈式法則用于計算損失函數(shù)對 W 和 b 的導數(shù)。注意,為了簡單起見。我們只展示了假設網(wǎng)絡只有 1 層的偏導數(shù)。
這雖然很簡陋,但是我們依然能得到想要的結(jié)果—損失函數(shù)對權(quán)值 W 的導數(shù)(斜率),因此我們可以相應的調(diào)整權(quán)值。
現(xiàn)在我們將反向傳播算法的函數(shù)添加到 Python 代碼中
為了更深入的理解微積分原理和反向傳播中的鏈式求導法則,我強烈推薦 3Blue1Brown 的如下教程:
Youtube:
整合并完成一個實例
既然我們已經(jīng)有了包括前向傳播和反向傳播的完整 Python 代碼,那么就將其應用到一個例子上看看它是如何工作的吧。
神經(jīng)網(wǎng)絡可以通過學習得到函數(shù)的權(quán)重。而我們僅靠觀察是不太可能得到函數(shù)的權(quán)重的。
讓我們訓練神經(jīng)網(wǎng)絡進行 1500 次迭代,看看會發(fā)生什么。 注意觀察下面每次迭代的損失函數(shù),我們可以清楚地看到損失函數(shù)單調(diào)遞減到最小值。這與我們之前介紹的梯度下降法一致。
讓我們看看經(jīng)過 1500 次迭代后的神經(jīng)網(wǎng)絡的最終預測結(jié)果:
經(jīng)過 1500 次迭代訓練后的預測結(jié)果
我們成功了!我們應用前向和方向傳播算法成功的訓練了神經(jīng)網(wǎng)絡并且預測結(jié)果收斂于真實值。
注意預測值和真實值之間存在細微的誤差是允許的。這樣可以防止模型過擬合并且使得神經(jīng)網(wǎng)絡對于未知數(shù)據(jù)有著更強的泛化能力。
下一步是什么?
幸運的是我們的學習之旅還沒有結(jié)束,仍然有很多關(guān)于神經(jīng)網(wǎng)絡和深度學習的內(nèi)容需要學習。例如:
? 除了 Sigmoid 以外,還可以用哪些激活函數(shù)
? 在訓練網(wǎng)絡的時候應用學習率
? 在面對圖像分類任務的時候使用卷積神經(jīng)網(wǎng)絡
我很快會寫更多關(guān)于這個主題的內(nèi)容,敬請期待!
最后的想法
我自己也從零開始寫了很多神經(jīng)網(wǎng)絡的代碼
雖然可以使用諸如 Tensorflow 和 Keras 這樣的深度學習框架方便的搭建深層網(wǎng)絡而不需要完全理解其內(nèi)部工作原理。但是我覺得對于有追求的數(shù)據(jù)科學家來說,理解內(nèi)部原理是非常有益的。
這種練習對我自己來說已成成為重要的時間投入,希望也能對你有所幫助
隨著智能時代慢慢的到來,有一些基本概念都不知道真的是要落伍了,作為正在積極學習向上的青年,我想總結(jié)一份筆記,此份筆記會記錄眾多AI領(lǐng)域的術(shù)語和概念,當然,學一部分記錄一部分,并且可能會夾雜著自己的一些理解,由于能力有限,有問題希望大家多多賜教。當然,由于內(nèi)容太多,僅僅只是記錄了中英名對照,有的加上了簡單的解釋,沒加的后續(xù)大家有需求,我會慢慢完善~~。目錄暫定以首字母的字典序排序。可以當作目錄方便以后查閱~~建議收藏加點贊哈哈哈
------------------------------------------------這里是分割線--------------------------------------------------
A
準確率(accuracy)
分類模型預測準確的比例。
二分類問題中,準確率定義為:accuracy = (true positives +true negatives)/all samples
多分類問題中,準確率定義為:accuracy = correctpredictions/all samples
激活函數(shù)(activation function)
一種函數(shù),將前一層所有神經(jīng)元激活值的加權(quán)和 輸入到一個非線性函數(shù)中,然后作為下一層神經(jīng)元的輸入,例如 ReLU 或 Sigmoid
AdaGrad
一種復雜的梯度下降算法,重新調(diào)節(jié)每個參數(shù)的梯度,高效地給每個參數(shù)一個單獨的學習率。
AUC(曲線下面積)
一種考慮到所有可能的分類閾值的評估標準。ROC 曲線下面積代表分類器隨機預測真正類(Ture Positives)要比假正類(False Positives)概率大的確信度。
Adversarial example(對抗樣本)
Adversarial Networks(對抗網(wǎng)絡)
Artificial General Intelligence/AGI(通用人工智能)
Attention mechanism(注意力機制)
Autoencoder(自編碼器)
Automatic summarization(自動摘要)
Average gradient(平均梯度)
Average-Pooling(平均池化)
B
反向傳播(Backpropagation/BP)
神經(jīng)網(wǎng)絡中完成梯度下降的重要算法。首先,在前向傳播的過程中計算每個節(jié)點的輸出值。然后,在反向傳播的過程中計算與每個參數(shù)對應的誤差的偏導數(shù)。
基線(Baseline)
被用為對比模型表現(xiàn)參考的簡單模型。
批量(Batch)
模型訓練中一個迭代(指一次梯度更新)使用的樣本集。
批量大小(Batch size)
一個批量中樣本的數(shù)量。例如,SGD 的批量大小為 1,而 mini-batch 的批量大小通常在 10-1000 之間。
偏置(Bias)
與原點的截距或偏移量。
二元分類器(Binary classification)
一類分類任務,輸出兩個互斥類別中的一個。比如垃圾郵件檢測。
詞袋(Bag of words/Bow)
基學習器(Base learner)
基學習算法(Base learning algorithm)
貝葉斯網(wǎng)絡(Bayesian network)
基準(Bechmark)
信念網(wǎng)絡(Belief network)
二項分布(Binomial distribution)
玻爾茲曼機(Boltzmann machine)
自助采樣法/可重復采樣/有放回采樣(Bootstrap sampling)
廣播(Broadcasting)
C
類別(Class)
所有同類屬性的目標值作為一個標簽。
分類模型(classification)
機器學習模型的一種,將數(shù)據(jù)分離為兩個或多個離散類別。
收斂(convergence)
訓練過程達到的某種狀態(tài),其中訓練損失和驗證損失在經(jīng)過了確定的迭代次數(shù)后,在每一次迭代中,改變很小或完全不變。
凸函數(shù)(concex function)
一種形狀大致呈字母 U 形或碗形的函數(shù)。然而,在退化情形中,凸函數(shù)的形狀就像一條線。
成本(cost)
loss 的同義詞。深度學習模型一般都會定義自己的loss函數(shù)。
交叉熵(cross-entropy)
多類別分類問題中對 Log 損失函數(shù)的推廣。交叉熵量化兩個概率分布之間的區(qū)別。
條件熵(Conditional entropy)
條件隨機場(Conditional random field/CRF)
置信度(Confidence)
共軛方向(Conjugate directions)
共軛分布(Conjugate distribution)
共軛梯度(Conjugate gradient)
卷積神經(jīng)網(wǎng)絡(Convolutional neural network/CNN)
余弦相似度(Cosine similarity)
成本函數(shù)(Cost Function)
曲線擬合(Curve-fitting)
D
數(shù)據(jù)集(data set)
樣本的集合
深度模型(deep model)
一種包含多個隱藏層的神經(jīng)網(wǎng)絡。深度模型依賴于其可訓練的非線性性質(zhì)。和寬度模型對照(widemodel)。
dropout 正則化(dropoutregularization)
訓練神經(jīng)網(wǎng)絡時一種有用的正則化方法。dropout 正則化的過程是在單次梯度計算中刪去一層網(wǎng)絡中隨機選取的固定數(shù)量的單元。刪去的單元越多,正則化越強。
數(shù)據(jù)挖掘(Data mining)
決策樹/判定樹(Decisiontree)
深度神經(jīng)網(wǎng)絡(Deep neural network/DNN)
狄利克雷分布(Dirichlet distribution)
判別模型(Discriminative model)
下采樣(Down sampling)
動態(tài)規(guī)劃(Dynamic programming)
E
早期停止法(early stopping)
一種正則化方法,在訓練損失完成下降之前停止模型訓練過程。當驗證數(shù)據(jù)集(validationdata set)的損失開始上升的時候,即泛化表現(xiàn)變差的時候,就該使用早期停止法了。
嵌入(embeddings)
一類表示為連續(xù)值特征的明確的特征。嵌入通常指將高維向量轉(zhuǎn)換到低維空間中。
經(jīng)驗風險最小化(empirical risk minimization,ERM)
選擇能使得訓練數(shù)據(jù)的損失函數(shù)最小化的模型的過程。和結(jié)構(gòu)風險最小化(structualrisk minimization)對照。
集成(ensemble)
多個模型預測的綜合考慮。可以通過以下一種或幾種方法創(chuàng)建一個集成方法:
設置不同的初始化;
設置不同的超參量;
設置不同的總體結(jié)構(gòu)。
深度和廣度模型是一種集成。
樣本(example)
一個數(shù)據(jù)集的一行內(nèi)容。一個樣本包含了一個或多個特征,也可能是一個標簽。參見標注樣本(labeledexample)和無標注樣本(unlabeled example)。
F
假負類(false negative,F(xiàn)N)
被模型錯誤的預測為負類的樣本。例如,模型推斷一封郵件為非垃圾郵件(負類),但實際上這封郵件是垃圾郵件。
假正類(false positive,F(xiàn)P)
被模型錯誤的預測為正類的樣本。例如,模型推斷一封郵件為垃圾郵件(正類),但實際上這封郵件是非垃圾郵件。
假正類率(false positive rate,F(xiàn)P rate)
ROC 曲線(ROC curve)中的 x 軸。FP 率的定義是:假正率=假正類數(shù)/(假正類數(shù)+真負類數(shù))
特征工程(feature engineering)
在訓練模型的時候,挖掘?qū)δP托Ч欣奶卣鳌?/p>
前饋神經(jīng)網(wǎng)絡(Feedforward Neural Networks/FNN )
G
泛化(generalization)
指模型利用新的沒見過的數(shù)據(jù)而不是用于訓練的數(shù)據(jù)作出正確的預測的能力。
廣義線性模型(generalized linear model)
最小二乘回歸模型的推廣/泛化,基于高斯噪聲,相對于其它類型的模型(基于其它類型的噪聲,比如泊松噪聲,或類別噪聲)。廣義線性模型的例子包括:
logistic 回歸
多分類回歸
最小二乘回歸
梯度(gradient)
所有變量的偏導數(shù)的向量。在機器學習中,梯度是模型函數(shù)的偏導數(shù)向量。梯度指向最陡峭的上升路線。
梯度截斷(gradient clipping)
在應用梯度之前先修飾數(shù)值,梯度截斷有助于確保數(shù)值穩(wěn)定性,防止梯度爆炸出現(xiàn)。
梯度下降(gradient descent)
通過計算模型的相關(guān)參量和損失函數(shù)的梯度最小化損失函數(shù),值取決于訓練數(shù)據(jù)。梯度下降迭代地調(diào)整參量,逐漸靠近權(quán)重和偏置的最佳組合,從而最小化損失函數(shù)。
圖(graph)
在 TensorFlow 中的一種計算過程展示。圖中的節(jié)點表示操作。節(jié)點的連線是有指向性的,表示傳遞一個操作(一個張量)的結(jié)果(作為一個操作數(shù))給另一個操作。使用 TensorBoard 能可視化計算圖。
高斯核函數(shù)(Gaussian kernel function)
高斯混合模型(Gaussian Mixture Model)
高斯過程(Gaussian Process)
泛化誤差(Generalization error)
生成模型(Generative Model)
遺傳算法(Genetic Algorithm/GA)
吉布斯采樣(Gibbs sampling)
基尼指數(shù)(Gini index)
梯度下降(Gradient Descent)
H
啟發(fā)式(heuristic)
一個問題的實際的和非最優(yōu)的解,但能從學習經(jīng)驗中獲得足夠多的進步。
隱藏層(hidden layer)
神經(jīng)網(wǎng)絡中位于輸入層(即特征)和輸出層(即預測)之間的合成層。一個神經(jīng)網(wǎng)絡包含一個或多個隱藏層。
超參數(shù)(hyperparameter)
連續(xù)訓練模型的過程中可以擰動的「旋鈕」。例如,相對于模型自動更新的參數(shù),學習率(learningrate)是一個超參數(shù)。和參量對照。
硬間隔(Hard?margin)
隱馬爾可夫模型(Hidden Markov Model/HMM)
層次聚類(Hierarchical clustering)
假設檢驗(Hypothesis test)
I
獨立同分布(independently and identicallydistributed,i.i.d)
從不會改變的分布中獲取的數(shù)據(jù),且獲取的每個值不依賴于之前獲取的值。i.i.d. 是機器學習的理想情況——一種有用但在現(xiàn)實世界中幾乎找不到的數(shù)學構(gòu)建。
推斷(inference)
在機器學習中,通常指將訓練模型應用到無標注樣本來進行預測的過程。在統(tǒng)計學中,推斷指在觀察到的數(shù)據(jù)的基礎上擬合分布參數(shù)的過程。
輸入層(input layer)
神經(jīng)網(wǎng)絡的第一層(接收輸入數(shù)據(jù))。
評分者間一致性(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)
一種分類算法,旨在通過將輸入數(shù)據(jù)向量映射到更高維度的空間使正類和負類之間的邊際最大化。例如,考慮一個輸入數(shù)據(jù)集包含一百個特征的分類問題。為了使正類和負類之間的間隔最大化,KSVM 從內(nèi)部將特征映射到百萬維度的空間。KSVM 使用的損失函數(shù)叫作 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 損失函數(shù)(L1 loss)
損失函數(shù)基于模型對標簽的預測值和真實值的差的絕對值而定義。L1 損失函數(shù)比起 L2 損失函數(shù)對異常值的敏感度更小。
L1 正則化(L1regularization)
一種正則化,按照權(quán)重絕對值總和的比例進行懲罰。在依賴稀疏特征的模型中,L1 正則化幫助促使(幾乎)不相關(guān)的特征的權(quán)重趨近于 0,從而從模型中移除這些特征。
L2 損失(L2 loss)
參見平方損失。
L2 正則化(L2regularization)
一種正則化,按照權(quán)重平方的總和的比例進行懲罰。L2 正則化幫助促使異常值權(quán)重更接近 0 而不趨近于 0。(可與 L1 正則化對照閱讀。)L2 正則化通常改善線性模型的泛化效果。
標簽(label)
在監(jiān)督式學習中,樣本的「答案」或「結(jié)果」。標注數(shù)據(jù)集中的每個樣本包含一或多個特征和一個標簽。在垃圾郵件檢測數(shù)據(jù)集中,特征可能包括主題、發(fā)出者何郵件本身,而標簽可能是「垃圾郵件」或「非垃圾郵件」。
標注樣本(labeled example)
包含特征和標簽的樣本。在監(jiān)督式訓練中,模型從標注樣本中進行學習。
學習率(learning rate)
通過梯度下降訓練模型時使用的一個標量。每次迭代中,梯度下降算法使學習率乘以梯度,乘積叫作 gradient step。學習率是一個重要的超參數(shù)。
最小二乘回歸(least squares regression)
通過 L2 損失最小化進行訓練的線性回歸模型。
線性回歸(linear regression)
對輸入特征的線性連接輸出連續(xù)值的一種回歸模型。
logistic 回歸(logisticregression)
將 sigmoid 函數(shù)應用于線性預測,在分類問題中為每個可能的離散標簽值生成概率的模型。盡管 logistic 回歸常用于二元分類問題,但它也用于多類別分類問題(這種情況下,logistic回歸叫作「多類別 logistic 回歸」或「多項式 回歸」。
對數(shù)損失函數(shù)(Log Loss)
二元 logistic 回歸模型中使用的損失函數(shù)。
損失(Loss)
度量模型預測與標簽距離的指標,它是度量一個模型有多糟糕的指標。為了確定損失值,模型必須定義損失函數(shù)。例如,線性回歸模型通常使用均方差作為損失函數(shù),而 logistic 回歸模型使用對數(shù)損失函數(shù)。
隱狄利克雷分布(Latent Dirichlet Allocation/LDA)
潛在語義分析(Latent semantic analysis)
線性判別(Linear Discriminant Analysis/LDA)
長短期記憶(Long-Short Term Memory/LSTM)
M
機器學習(machine learning)
利用輸入數(shù)據(jù)構(gòu)建(訓練)預測模型的項目或系統(tǒng)。該系統(tǒng)使用學習的模型對與訓練數(shù)據(jù)相同分布的新數(shù)據(jù)進行有用的預測。機器學習還指與這些項目或系統(tǒng)相關(guān)的研究領(lǐng)域。
均方誤差(Mean Squared Error/MSE)
每個樣本的平均平方損失。MSE 可以通過平方損失除以樣本數(shù)量來計算。
小批量(mini-batch)
在訓練或推斷的一個迭代中運行的整批樣本的一個小的隨機選擇的子集。小批量的大小通常在10 到 1000 之間。在小批量數(shù)據(jù)上計算損失比在全部訓練數(shù)據(jù)上計算損失要高效的多。
機器翻譯(Machine translation/MT)
馬爾可夫鏈蒙特卡羅方法(Markov Chain Monte Carlo/MCMC)
馬爾可夫隨機場(Markov Random Field)
多文檔摘要(Multi-document summarization)
多層感知器(Multilayer Perceptron/MLP)
多層前饋神經(jīng)網(wǎng)絡(Multi-layer feedforward neuralnetworks)
N
NaN trap
訓練過程中,如果模型中的一個數(shù)字變成了 NaN,則模型中的很多或所有其他數(shù)字最終都變成 NaN。NaN 是「Not aNumber」的縮寫。
神經(jīng)網(wǎng)絡(neural network)
該模型從大腦中獲取靈感,由多個層組成(其中至少有一個是隱藏層),每個層包含簡單的連接單元或神經(jīng)元,其后是非線性。
神經(jīng)元(neuron)
神經(jīng)網(wǎng)絡中的節(jié)點,通常輸入多個值,生成一個輸出值。神經(jīng)元通過將激活函數(shù)(非線性轉(zhuǎn)換)應用到輸入值的加權(quán)和來計算輸出值。
歸一化(normalization)
將值的實際區(qū)間轉(zhuǎn)化為標準區(qū)間的過程,標準區(qū)間通常是-1 到+1 或 0 到 1。例如,假設某個特征的自然區(qū)間是 800 到 6000。通過減法和分割,你可以把那些值標準化到區(qū)間-1 到+1。參見縮放。
Numpy
Python 中提供高效數(shù)組運算的開源數(shù)學庫。pandas 基于 numpy 構(gòu)建。
Naive bayes(樸素貝葉斯)
Naive Bayes Classifier(樸素貝葉斯分類器)
Named entity recognition(命名實體識別)
Natural language generation/NLG(自然語言生成)
Natural language processing(自然語言處理)
Norm(范數(shù))
O
目標(objective)
算法嘗試優(yōu)化的目標函數(shù)。
one-hot 編碼(獨熱編碼)(one-hotencoding)
一個稀疏向量,其中:一個元素設置為 1,所有其他的元素設置為 0。。
一對多(one-vs.-all)
給出一個有 N 個可能解決方案的分類問題,一對多解決方案包括 N 個獨立的二元分類器——每個可能的結(jié)果都有一個二元分類器。例如,一個模型將樣本分為動物、蔬菜或礦物,則一對多的解決方案將提供以下三種獨立的二元分類器:
動物和非動物
蔬菜和非蔬菜
礦物和非礦物
過擬合(overfitting)
創(chuàng)建的模型與訓練數(shù)據(jù)非常匹配,以至于模型無法對新數(shù)據(jù)進行正確的預測
Oversampling(過采樣)
P
pandas
一種基于列的數(shù)據(jù)分析 API。很多機器學習框架,包括 TensorFlow,支持 pandas 數(shù)據(jù)結(jié)構(gòu)作為輸入。參見 pandas 文檔。
參數(shù)(parameter)
機器學習系統(tǒng)自行訓練的模型的變量。例如,權(quán)重是參數(shù),它的值是機器學習系統(tǒng)通過連續(xù)的訓練迭代逐漸學習到的。注意與超參數(shù)的區(qū)別。
性能(performance)
在軟件工程中的傳統(tǒng)含義:軟件運行速度有多快/高效?
在機器學習中的含義:模型的準確率如何?即,模型的預測結(jié)果有多好?
困惑度(perplexity)
對模型完成任務的程度的一種度量指標。例如,假設你的任務是閱讀用戶在智能手機上輸入的單詞的頭幾個字母,并提供可能的完整單詞列表。該任務的困惑度(perplexity,P)是為了列出包含用戶實際想輸入單詞的列表你需要進行的猜測數(shù)量。
流程(pipeline)
機器學習算法的基礎架構(gòu)。管道包括收集數(shù)據(jù)、將數(shù)據(jù)放入訓練數(shù)據(jù)文件中、訓練一或多個模型,以及最終輸出模型。
Principal component analysis/PCA(主成分分析)
Precision(查準率/準確率)
Prior knowledge(先驗知識)
Q
Quasi Newton method(擬牛頓法)
R
召回率(recall)
回歸模型(regression model)
一種輸出持續(xù)值(通常是浮點數(shù))的模型。而分類模型輸出的是離散值。
正則化(regularization)
對模型復雜度的懲罰。正則化幫助防止過擬合。正則化包括不同種類:
L1 正則化
L2 正則化
dropout 正則化
early stopping(這不是正式的正則化方法,但可以高效限制過擬合)
正則化率(regularization rate)
一種標量級,用 lambda 來表示,指正則函數(shù)的相對重要性。從下面這個簡化的損失公式可以看出正則化率的作用:
minimize(loss function + λ(regularization function))
提高正則化率能夠降低過擬合,但可能會使模型準確率降低。
表征(represention)
將數(shù)據(jù)映射到有用特征的過程。
受試者工作特征曲線(receiver operatingcharacteristic/ROC Curve)
反映在不同的分類閾值上,真正類率和假正類率的比值的曲線。參見 AUC。
Recurrent Neural Network(循環(huán)神經(jīng)網(wǎng)絡)
Recursive neural network(遞歸神經(jīng)網(wǎng)絡)
Reinforcement learning/RL(強化學習)
Re-sampling(重采樣法)
Representation learning(表征學習)
Random Forest Algorithm(隨機森林算法)
S
縮放(scaling)
特征工程中常用的操作,用于控制特征值區(qū)間,使之與數(shù)據(jù)集中其他特征的區(qū)間匹配。例如,假設你想使數(shù)據(jù)集中所有的浮點特征的區(qū)間為 0 到 1。給定一個特征區(qū)間是 0 到 500,那么你可以通過將每個值除以 500,縮放特征值區(qū)間。還可參見正則化。
scikit-learn
一種流行的開源機器學習平臺。網(wǎng)址:。
序列模型(sequence model)
輸入具有序列依賴性的模型。例如,根據(jù)之前觀看過的視頻序列對下一個視頻進行預測。
Sigmoid 函數(shù)(sigmoid function)
softmax
為多類別分類模型中每個可能的類提供概率的函數(shù)。概率加起來的總和是 1.0。例如,softmax 可能檢測到某個圖像是一只狗的概率為 0.9,是一只貓的概率為 0.08,是一匹馬的概率為 0.02。(也叫作 full softmax)。
結(jié)構(gòu)風險最小化(structural risk minimization/SRM)
這種算法平衡兩個目標:
構(gòu)建預測性最強的模型(如最低損失)。
使模型盡量保持簡單(如強正則化)。
比如,在訓練集上的損失最小化 + 正則化的模型函數(shù)就是結(jié)構(gòu)風險最小化算法。更多信息,參見 。可與經(jīng)驗風險最小化對照閱讀。
監(jiān)督式機器學習(supervised machine learning)
利用輸入數(shù)據(jù)及其對應標簽來訓練模型。監(jiān)督式機器學習類似學生通過研究問題和對應答案進行學習。在掌握問題和答案之間的映射之后,學生就可以提供同樣主題的新問題的答案了。可與非監(jiān)督機器學習對照閱讀。
Similarity measure(相似度度量)
Singular Value Decomposition(奇異值分解)
Soft margin(軟間隔)
Soft margin maximization(軟間隔最大化)
Support Vector Machine/SVM(支持向量機)
T
張量(tensor)
TensorFlow 項目的主要數(shù)據(jù)結(jié)構(gòu)。張量是 N 維數(shù)據(jù)結(jié)構(gòu)(N 的值很大),經(jīng)常是標量、向量或矩陣。張量可以包括整數(shù)、浮點或字符串值。
Transfer learning(遷移學習)
U
無標簽樣本(unlabeled example)
包含特征但沒有標簽的樣本。無標簽樣本是推斷的輸入。在半監(jiān)督學習和無監(jiān)督學習的訓練過程中,通常使用無標簽樣本。
無監(jiān)督機器學習(unsupervised machine learning)
訓練一個模型尋找數(shù)據(jù)集(通常是無標簽數(shù)據(jù)集)中的模式。無監(jiān)督機器學習最常用于將數(shù)據(jù)分成幾組類似的樣本。無監(jiān)督機器學習的另一個例子是主成分分析(principal componentanalysis,PCA)
W
Word embedding(詞嵌入)
Word sense disambiguation(詞義消歧)
樸素貝葉斯法是基于貝葉斯定理與特征條件獨立假設的分類方法。訓練的時候,學習輸入輸出的聯(lián)合概率分布;分類的時候,利用貝葉斯定理計算后驗概率最大的輸出。
={c 1 ……c k }。輸入特征向量x和輸出類標記y分屬于這兩個集合。X是輸入空間上的隨機變量,Y是輸出空間上的隨機變量。P(X,Y)是X和Y的聯(lián)合概率分布,訓練數(shù)據(jù)集
由P(X,Y)獨立同分布產(chǎn)生。
樸素貝葉斯法通過T學習聯(lián)合概率分布P(X,Y)。具體來講,學習以下先驗概率:
以及條件概率分布:
于是根據(jù)聯(lián)合概率分布密度函數(shù):
學習到聯(lián)合概率分布P(X,Y)。
的參數(shù)數(shù)量是指數(shù)級的,也就是X和Y的組合很多,假設x j 可能取值S j 個,Y可能取值有K個,那么參數(shù)的個數(shù)是
。特別地,取xj=S,那么參數(shù)個數(shù)為KS n ,當維數(shù)n很大的時候,就會發(fā)生維數(shù)災難。
一維空間中,把一個單位空間(退化為區(qū)間)以每個點距離不超過0.01采樣,需要10 2 個平均分布的采樣點,而在10維度空間中,需要10 20 個點才行。計算方式用Python描述如下:
可視化圖像:
這種指數(shù)級的復雜度增長被稱為維數(shù)災難。
無法計算了。
為了計算它,樸素貝葉斯法對它做了條件獨立性的假設:
也就是各個維度的特征在類確定的情況下都是獨立分布的。這一假設簡化了計算,也犧牲了一定的分類準確率。
基于此假設,以及 貝葉斯定理 ,后驗概率為:
拆開,等于上式分母。
將獨立性假設代入上式,得到
樸素貝葉斯分類器可以表示為:
也就是給定參數(shù),找一個概率最大的c k 出來。注意到上式分母其實就是P(X=x),x給定了就固定了,跟c k 一點關(guān)系都沒有,所以分母可以去掉,得到:
選擇0-1損失函數(shù):
f(X)就是分類器的決策函數(shù),損失函數(shù)的參數(shù)其實是一個聯(lián)合分布。
此時期望風險函數(shù)為:
上面說過,這是一個聯(lián)合分布P(X,Y),是一個and(連乘)的形式,由此取條件期望為風險函數(shù):
所謂條件期望,就是指X=x時,Y的期望。上式其實可以這么推回去:
E x ∑[L()]P(c k |X)=∑P(X)∑[L()]P(X,c k )/P(X)=∑[L()]P(X,c k )=E[L()]
格式比較亂,但愿意思到了。
為了最小化上式,只需對每個X=x執(zhí)行最小化,那么加起來肯定是極小化的,由此有:
其實不用這么一堆公式,光靠感覺也很好理解,給了一些證據(jù)后,不挑后驗概率最大的,還能挑啥呢?
前面說過,樸素貝葉斯法要學習的東西就是P(Y=c k )和P(X=x|Y=c k ),這兩個概率的估計用極大似然估計法(簡單講,就是用樣本猜測模型參數(shù),或者說使得似然函數(shù)最大的參數(shù))進行:
也就是用樣本中c k 的出現(xiàn)次數(shù)除以樣本容量。
分子是樣本中變量組合的出現(xiàn)次數(shù),分母是上面說過的樣本中c k 的出現(xiàn)次數(shù)。
于是就有樸素貝葉斯算法,先從訓練數(shù)據(jù)中計算先驗概率和條件概率,然后對于給定的實例計算最大的條件概率,輸出該條件對應的類別。形式化的描述如下:
例子
給定訓練數(shù)據(jù):
這個太簡單了,利用(3)中的式子就行了。
貝葉斯估計
最大似然估計有個隱患,假設訓練數(shù)據(jù)中沒有出現(xiàn)某種參數(shù)和類別的組合怎么辦?此時估計的概率值為0,但是這不代表真實數(shù)據(jù)中就沒有這樣的組合。解決辦法是采用貝葉斯估計
1、條件概率的貝葉斯估計:
,S j 表示x j 可能取值的種數(shù)。分子和分母分別比最大似然估計多了一點東西,其意義是在隨機變量每個取值的頻數(shù)上加一個常量
。當此常量取0時,就是最大似然估計,當此常量取1時,稱為拉普拉斯平滑。
2、先驗概率的貝葉斯估計:
貝葉斯情感極性分析器
書中例題太簡單,不過癮。這里分析一個基于貝葉斯文本分類器實現(xiàn)的簡單情感極性分析器。
調(diào)用實例:
# - - coding:utf-8 - -
# Filename: Bayes.py
# Author:hankcs
# Date: 2015/2/6 22:25
from math import log, exp
輸出
(u'pos', 0.6666666666666665)
說明“好優(yōu)秀”這句話具有正能量的概率是66%,雖然“好”這個詞語也存在于負極性的語句中,但是分類器還是準確地區(qū)分了它。
上面的貝葉斯分類器使用了拉布拉斯平滑處理策略,在進行條件概率的時候,不是連乘,而是取對數(shù)相加,最后逐差取指數(shù),這個過程會發(fā)生歸一化,得出一個概率出來。
情感極性分析器主要參考了snownlp的實現(xiàn)。
python中l(wèi)og_inner是log表示以e為底數(shù)的對數(shù)函數(shù)符號。
在數(shù)學運算中,如果沒有計算器,對于很大的數(shù)字相乘,我們花費大量的時間計算,而且一旦出錯,就要重新計算,很是麻煩。其實對于數(shù)字相乘,不依靠靠計算器,想要準確簡單的運算的方法不是沒有,那就是對數(shù)和指數(shù),他們解決了大數(shù)或非常的小的數(shù)相乘的繁瑣計算。而在python中,也有計算對數(shù)的方法,那就是對數(shù)函數(shù)log函數(shù)。本文將向大家介紹log函數(shù)的表述語句、參數(shù)和返回值,并以實例演示用log函數(shù)計算對數(shù)的過程。log()函數(shù):返回 x 的自然對數(shù)。即返回以 2 為基數(shù)的 x 的對數(shù)。
Python由荷蘭數(shù)學和計算機科學研究學會的吉多·范羅蘇姆 于1990 年代初設計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊獭ython語法和動態(tài)類型,以及解釋型語言的本質(zhì),使它成為多數(shù)平臺上寫腳本和快速開發(fā)應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨立的、大型項目的開發(fā)。Python解釋器易于擴展,可以使用C語言或C++(或者其他可以通過C調(diào)用的語言)擴展新的功能和數(shù)據(jù)類型。Python 也可用于可定制化軟件中的擴展程序語言。Python豐富的標準庫,提供了適用于各個主要系統(tǒng)平臺的源碼或機器碼。
分享題目:關(guān)于python對數(shù)損失函數(shù)的信息
轉(zhuǎn)載源于:http://chinadenli.net/article0/dojiooo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、網(wǎng)頁設計公司、標簽優(yōu)化、動態(tài)網(wǎng)站、全網(wǎng)營銷推廣、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)