文章目錄
- 1. 人工智能(AI)、機器學習(ML)和深度學習(DL)
- 1.1 人工智能
- 1.2 機器學習
- 1.3 深度學習
- 1.4 人工智能、機器學習和深度學習的關系
- 2 監督學習與無監督學習
- 3. 深度神經網路(deep neural networks,DNN)
- 4. 激活函式(activation function)
- 4.1 sigmoid
- 4.2 tanh激活函式
- 4.3 Relu激活函式
- 4.4 Leak Relu 激活函式
- 4.5 Softmax激活函式
- 4.6 激活函式的性質
- 4.7 激活函式的選擇
- 5. 欠擬合與過擬合
- 5.1 欠擬合
- 5.2 過擬合
- 5.3 解決過擬合與欠擬合的方法
- (1)正則化(過擬合)
- (2)資料增強(欠擬合)
- (3)Dropout(過擬合)
- (4)訓練提前停止(過擬合)
- 6. CNN(Convolution Neural Networks)卷積神經網路
- 7. RNN(Recurrent neural network) 遞回神經網路
- 8. 損失函式、代價函式和目標函式
- 9. 目標評價指標
- 9.1 交并率(IoU, Intersection over Union)
- 9.2 查準率和查全率(Precision , Recall)
- 9.3 AP和mAP
1. 人工智能(AI)、機器學習(ML)和深度學習(DL)
1.1 人工智能
人工智能(AI,Artificial Intelligence)是對人類智能在計算機上的復制,人工智能作為一門學科成立于1956年,當時的目標和現在一樣,是讓計算機執行被認為是人類獨有的任務:即需要智力的任務,最初,研究人員研究的問題包括玩跳棋和解決邏輯問題,
1.2 機器學習
機器學習(ML,Machine Learning),指的是機器使用大量資料集而非硬編碼規則來進行學習的能力,
硬編碼演算法或固定的、基于規則的系統在影像識別或從文本中提取含義等方面表現不佳,結果證明,解決方法不僅僅是模仿人類行為(AI),而是模仿人類的學習方式,
1.3 深度學習
深度學習(DL,Deep Learning),簡而言之,深度學習就是使用更多神經元、層次和相互連接的神經網路,我們離模擬人類大腦的復雜性還有很長的路要走,但我們正在朝著這個方向前進,

1.4 人工智能、機器學習和深度學習的關系
隨著人工智能的研究,人工智能的領域也在不斷擴大,下圖展示了人工智能研究的各個分支,包括專家系統、機器學習、進化計算、模糊邏輯、計算機視覺、自然語言處理、推薦系統等,AI、ML和DL的關系如下圖所示,


2 監督學習與無監督學習
- 監督學習
從給定的訓練資料集中學習出一個函式(模型引數),當新的資料到來時,可以根據這個函式預測結果,監督學習的訓練集要求包括輸入輸出,也可以說是特征和目標,
常見的監督學習演算法:感知機、SVM、人工神經網路、決策樹、邏輯回歸
- 無監督學習
我們不知道資料集中資料、特征之間的關系,而是要根據聚類或一定的模型得到資料之間的關系,
非監督學習目標不是告訴計算機怎么做,而是讓它(計算機)自己去學習怎樣做事情,非監督學習有兩種思路,
- 一類為基于
概率密度函式估計的直接方法:指設法找到各類別在特征空間的分布引數,再進行分類,- 另一類是稱為
基于樣本間相似性度量的簡潔聚類方法:其原理是設法定出不同類別的核心或初始內核,然后依據樣本與核心之間的相似性度量將樣本聚集成不同的類別,
如下圖所示,在無監督學習中,我們只是給定了一組資料,我們的目標是發現這組資料中的特殊結構,例如我們使用無監督學習演算法會將這組資料分成兩個不同的簇,,這樣的演算法就叫聚類演算法,

3. 深度神經網路(deep neural networks,DNN)
深度神經網路(deep neural networks,DNN)是深度學習目前幾乎唯一行之有效的實作形式,簡單的說,深度神經網路就是很深的神經網路,我們利用網路中逐層對特征進行加工的特性,逐漸從低級特征提取高級特征,除了深度神經網路之外,有學者在探索其他深度學習的實作形式,比如深度森林,
- 為什么要使用深層網路
- 深度神經網路的學習是特征遞進的,淺層的神經元只能學習一些低層次的簡單特征(如邊緣、紋理),而
深層神經網路可以學到更高級特征,- 深層網路的隱藏單元數目較少,隱藏層數目較多, 若
淺層網路想達到同樣的計算結果須指數級增長單元數量,- 在神經元數量相同的情況下,深層網路具有更大容量,
能構造更復雜的映射關系,
4. 激活函式(activation function)
激活函式是神經網路的必要組成部分,資料經過函式運算后由激活函式映射輸出,如果沒有激活函式,多次線性運算的堆疊仍然是一個線性運算,如下圖,Y的運算式f,就是一個激活函式,也就是說,每一個輸入都有自己的權重,權重和輸入的值相乘,然后加上一個偏置b之后在經過一個函式f得到輸出y,這個f就是激活函式,

Y = f ( w 1 ? x 1 + w 2 ? x 2 + b ) Y = f(w_1*x_1 + w_2*x_2 +b) Y=f(w1??x1?+w2??x2?+b)
- 激活函式的作用
- 可以
引入非線性因素,方便學習復雜資料,- 激活函式可以把當前特征空間通過一定的
線性映射轉換到另一個空間,讓資料能夠更好的被分類,
下面介紹一些常用的激活函式,
4.1 sigmoid
輸入一個實值,輸出一個 0 至 1 間的值,
f
(
x
)
=
1
1
+
e
?
x
f(x)=\frac1{1+e^{-x}}
f(x)=1+e?x1?

其導函式影像如下所示:

4.2 tanh激活函式
其值域范圍為(-1, 1),
f
(
x
)
=
t
a
n
h
(
x
)
=
e
x
??
?
e
?
x
??
e
x
??
+
e
?
x
f(x)=tanh(x)=\frac{e^x\;-e^{-x}\;}{e^x\;+e^{-x}}
f(x)=tanh(x)=ex+e?xex?e?x?

4.3 Relu激活函式
其值域范圍為
[
0
,
∞
)
\lbrack0,\infty)
[0,∞),
f
(
x
)
=
m
a
x
(
0
,
x
)
f(x)=max(0,x)
f(x)=max(0,x)

Relu激活函式的優點:
- 導數為1,解決了梯度消失、梯度爆炸問題,
- 計算方便,加速了網格的訓練,
- 正飽和區的梯度大于0,不會造成梯度彌散,
Relu激活函式的的缺點:
- 由于負數部分恒為0,會導致一些神經元無法激活(可通過設定小學習率部分解決)
- 輸出不是以0為中心的
4.4 Leak Relu 激活函式
其值域范圍為
[
?
∞
,
∞
)
\lbrack-\infty,\infty)
[?∞,∞),
f
(
x
)
=
m
a
x
(
k
x
,
x
)
f(x)=max(kx,x)
f(x)=max(kx,x)
解決了Relu中0區間的影響,k為leak系數,一般選擇0.01或0.02,

4.5 Softmax激活函式
Softmax 多用于多分類神經網路輸出,
4.6 激活函式的性質
- 非線性
- 可導性:梯度計算
- 單調性:當激活函式是單調的時候,單層網路能夠保證是凸函式
- f ( x ) ≈ x f ( x ) ≈ x f(x)≈x:訓練更高效
4.7 激活函式的選擇
- sigmoid 激活函式:僅僅
輸出層為2分類問題時使用, - tanh 激活函式:
tanh 是非常優秀的,幾乎適合所有場合, - 如果在
隱藏層上不確定使用哪個激活函式,那么通常會使用 Relu 激活函式,有時,也會使用 tanh 激活函式, - 如果遇到了一些
死的神經元,我們可以使用 Leaky Relu 函式,
5. 欠擬合與過擬合
5.1 欠擬合
模型不能很好的擬合資料,通常表現在訓練集上準確率不高,
- 判斷方法
每次只訓練相同的資料,若一段時間后準確率很高,則說明網路的擬合能力不足,即當前網路無法擬合全部資料,
- 欠擬合的解決方法
- 增加網路的深度
- 減小正則化引數
5.2 過擬合
模型學的太徹底,把一些噪聲特征也學到了,通常表現在訓練集上表現很好,但在測驗集上準確率不高,
- 判斷方法
模型在驗證集合上和訓練集合上表現都很好,而在測驗集合上變現很差,過擬合即在訓練誤差很小,而泛化誤差很大,因為模型可能過于的復雜.
- 解決方法
- 增加訓練資料量,并對已有資料進行樣本增強,
- 采用正則化(dropout、L1、L2正則)
- 提前終止訓練
下列圖片為欠擬合與過擬合的示例,

5.3 解決過擬合與欠擬合的方法
(1)正則化(過擬合)
正則化是一種減小測驗誤差的行為,通常用于防止模型的過擬合問題,

理論上,當損失函式為0時,預測結果與實際情況完全一致,但是此時模型的過擬合現象顯然已經發生,模型不再具備任何泛化能力,即對于輸入的新資料,模型將無法做出正確的判斷,既然知道了過擬合發生的數學原因,解決的辦法就是給模型增加一個約束,限制最終引數的取值范圍,讓原有損失函式無法取到0,因此就出現了正則化的方法,即在上述公式的最后人為添加一個約束,

(2)資料增強(欠擬合)
欠擬合的現象也常會發生,這是由于在實際作業當中,獲取訓練資料的成本很高,與海量現實資訊相比,人們掌握的資料量往往少的可憐,為了解決資料量的問題,就出現了資料增強所謂資料增強,就是通過一些技術手段,使原來不那么豐富的資料變得豐富起來,總體來說,資料增強的作用有兩點:
- 增加訓練資料量,提高模型的泛化能力,
- 增加噪聲資料,提升模型的魯棒性,
以影像資料為例,資料增強的方法有如下幾種:
- 影像翻轉:資料翻轉是一種常用的資料增強方法,這種方法也可以看作對資料做鏡像處理,顧名思義這種方法是做一種類似于鏡面的翻折,
- 影像旋轉:旋轉就是順時針或者逆時針的旋轉,旋轉的時候盡量旋轉 90 - 180 度否則會出現尺度的問題,
- 影像縮放:影像可以被放大或縮小,放大時,放大后的影像尺寸會大于原始尺寸,大多數影像處理架構會按照原始尺寸對放大后的影像進行裁切而影像縮小會減小影像尺寸,這使我們不得不對影像邊界之外的東西做出假設,
- 影像剪裁:這種方法也可以叫做裁剪,效果甚至可以看作是區域隨機放大,影像剪裁隨機從影像中選擇一部分,然后將這部分影像裁剪出來,再調整為原影像的大小,
- 像平移:將影像沿著 x 或者 y 方向 (或者兩個方向) 移動,我們在平移的時候需對背景進行假設,這一點類似于影像縮放,
需要對原來沒有的區域進行填充,比如說假設為黑色等等,因為平移的時候有一部分影像是空的,由于圖片中的物體可能出現在任意的位置,所以說平移增強方法十分有用,- 添加噪聲:過擬合通常發生在神經網路學習高頻特征的時候 (因為低頻特征神經網路很容易就可以學到,而高頻特征只有在最后的時候才可以學到) 而這些特征對于神經網路所做的任務可能沒有幫助,而且會對低頻特征產生影響,為了消除高頻特征我們隨機加入噪聲資料來消除這些特征,
(3)Dropout(過擬合)
我們知道,典型的神經網路其訓練流程是將輸入通過網路進行正向傳導,然后將誤差進行反向傳播,Dropout就是針對這一程序之中,隨機地洗掉隱藏層的部分單元,進行上述程序,綜合而言,上述程序可以分步驟為:
隨機洗掉網路中的一些隱藏神經元,保持輸入輸出神經元不變;- 將輸入通過修改后的網路進行前向傳播,然后將誤差通過修改后的網路進行反向傳播;
- 對于另外一批的訓練樣本,重復上述操作.
- 傳統的神經網路

- 引入Dropout之后的計算程序

(4)訓練提前停止(過擬合)
假如我們設定得訓練次數是30次,但是訓練了20次之后,驗證集得損失不再下降,精確度不再上升,所以第20輪之后,模型逐漸開始過擬合,對于這種特殊情況,我們可以通過在二十個左右的時期之后停止訓練來防止過度擬合,
6. CNN(Convolution Neural Networks)卷積神經網路
卷積神經網路(Convolutional Neural Networks, CNN)是一類包含卷積計算且具有深度結構的前饋神經網路(Feedforward Neural Networks),是深度學習(deep learning)的代表演算法之一,基礎的CNN由 卷積(convolution), 激活(activation), and 池化(pooling)三種結構組成,
與常規神經網路不同,卷積神經網路的各層中的神經元是3維排列的:寬度、高度和深度,其中的寬度和高度是很好理解的,因為本身卷積就是一個二維模板,但是在卷積神經網路中的深度指的是激活資料體的第三個維度,而不是整個網路的深度,整個網路的深度指的是網路的層數,舉個例子來理解什么是寬度,高度和深度,假如使用CIFAR-10中的影像是作為卷積神經網路的輸入,該輸入資料體的維度是32x32x3(寬度,高度和深度),我們將看到,層中的神經元將只與前一層中的一小塊區域連接,而不是采取全連接方式,對于用來分類CIFAR-10中的影像的卷積網路,其最后的輸出層的維度是1x1x10,因為在卷積神經網路結構的最后部分將會把全尺寸的影像壓縮為包含分類評分的一個向量,向量是在深度方向排列的,下列是全連接神經網路與卷積神經網路的對比,

7. RNN(Recurrent neural network) 遞回神經網路
樣本出現的時間順序對于自然語言處理、語音識別、手寫體識別等應用非常重要,為了能對時間序列上的變化進行建模, 比如當我們處理視頻的時候,我們也不能只單獨的去分析每一幀,而要分析這些幀連接起來的整個序列,就出現了另一種神經網路結構——回圈神經網路RNN(不知道為什么很多叫回圈的,計算機術語里回圈一般是同一層次的,Recurrent 其實是時間遞回,所以本文叫他遞回神經網路),
在普通的全連接網路或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成為前向神經網路(Feed-forward Neural Networks),而在RNN中,神經元的輸出可以在下一個時間戳直接作用到自身,下圖是一個簡單的回圈神經網路圖:

如果把上面有W的那個帶箭頭的圈去掉,它就變成了最普通的全連接神經網路,x是一個向量,它表示輸入層的值(這里面沒有畫出來表示神經元節點的圓圈);s是一個向量,它表示隱藏層的值(這里隱藏層面畫了一個節點,你也可以想象這一層其實是多個節點,節點數與向量s的維度相同);U是輸入層到隱藏層的權重矩陣,o也是一個向量,它表示輸出層的值;V是隱藏層到輸出層的權重矩陣,回圈神經網路的隱藏層的值s不僅僅取決于當前這次的輸入x,還取決于上一次隱藏層的值s,權重矩陣 W就是隱藏層上一次的值作為這一次的輸入的權重,
我們給出這個抽象圖的具體圖:


8. 損失函式、代價函式和目標函式
- 損失函式(Loss Function )
損失函式是定義在單個樣本上的,算的是一個樣本的誤差,
- 代價函式(Cost Function )
代價函式是定義在整個訓練集上的,是所有樣本誤差的平均,也就是損失函式的平均,
- 目標函式(Object Function)
目標函式是最終需要優化的函式,等于經驗風險+結構風險(也就是Cost Function + 正則化項),
損失函式和代價函式越小越好,目標函式可能是最大值,也可能是最小值,
在線性回歸中,最常用的代價函式是
均方誤差(Mean squared error),在邏輯回歸中,最常用的是代價函式是交叉熵(Cross Entropy)
,
9. 目標評價指標

如上圖所示,綠顏色的為GT Box(ground truth box),紅顏色的Predict Box,如果要正確檢測出圖中的貓和狗,那怎么才能算是正確的檢測呢?下邊的這三個標準是都需要看的:
- GT與預測框IoU是否大于閾值
- 預測的類別是否正確?
- 置信度是否大于閾值?
9.1 交并率(IoU, Intersection over Union)
IoU的作用是評價兩個矩形框之間的相似性,在目標檢測中是度量兩個檢測框的交疊程度,計算公式如下:
a
r
e
a
(
B
g
t
∩
B
p
)
a
r
e
a
(
B
g
t
∪
B
p
)
\frac{area(B_{gt}\cap B_p)}{area(B_{gt}\cup B_p)}
area(Bgt?∪Bp?)area(Bgt?∩Bp?)?
其中 B g t B_{gt} Bgt?表示GT Box, B p {B_p} Bp?表示Predict Box,

9.2 查準率和查全率(Precision , Recall)
下列Positive和Negative表示模型對樣本預測的結果是正樣本(正列)還是負樣本(負例),True和False表示預測的結果和真實結果是否相同,
| 概念 | 解釋 | 備注 |
|---|---|---|
| True positives(TP) | 被正確地劃分為正例的個數,即實際為正例且被分類器劃分為正例的實體數, | IoU>IOU,IOU一般取0.5 |
| False positives(FP) | 被錯誤地劃分為正例的個數,即實際為負例但被分類器劃分為正例的實體數, | IoU<=IOU |
| False negatives(FN) | 被錯誤地劃分為負例的個數,即實際為正例但被分類器劃分為負例的實體數, | 沒有檢測到GT的數量 |
| True negatives(TN) | 被正確地劃分為負例的個數,即實際為負例且被分類器劃分為負例的實體數, | 一般不會使用 |
如果假設IoU閾值為0.5的話,那在目標檢測中:
- TP:表示IoU>0.5的檢測框的數量,也就是檢測正確的數量,
- FP:表示IoU≤0.5的檢測框數量(或者是檢測到同一GT的多余的檢測框的數量),屬于誤檢一類了,
- FN:表示沒有檢測到的GT數量,即漏檢的數量,
- 查準率(Precision)
被預測為正樣本的檢測框中預測正確的占比,其中
a
l
l
d
e
t
c
t
i
o
n
s
all \ detctions
all detctions 代表所有預測框的數量,
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
=
T
P
a
l
l
d
e
t
e
c
t
i
o
n
s
Precision = \frac{TP}{TP + FP}= \frac{TP}{all\ detections}
Precision=TP+FPTP?=all detectionsTP?

如上圖所示,圖中GT共有5只貓待檢測,但實際上只檢測出來了一只,而且這個檢測是正確的,那這種情況下的查準率就是:
P
r
e
c
i
s
i
o
n
=
1
1
=
100
%
Precision = \frac{1}{1}= 100\%
Precision=11?=100%
- 查全率(Recall)
被正確檢測出來的真實框占所有真實框的比例,
a
l
l
g
r
o
u
n
d
t
r
u
t
h
s
all \ ground \ truths
all ground truths 代表所有 GT 的數量,
R
e
c
a
l
l
=
T
P
T
P
+
F
N
=
T
P
a
l
l
g
r
o
u
n
d
t
r
u
t
h
s
Recall = \frac{TP}{TP + FN}= \frac{TP}{all\ ground \ truths }
Recall=TP+FNTP?=all ground truthsTP?

同樣是上邊有5個待檢測的GT,這次得到了50個預測框,其中5個全部預測正確,這種情況下TP=5,漏檢FN=0最終的查全率為:
R e c a l l = 5 5 + 0 = 100 % Recall = \frac{5}{5+0}=100\% Recall=5+05?=100%
9.3 AP和mAP
AP 是計算某一類 P-R 曲線下的面積,mAP 則是計算所有類別 P-R 曲線下面積的平均值,其中P是查準率Precision,R是查全率Recall,PR曲線如下所示:

下面以3張圖片為例,說明AP和mAP的計算程序:

在所有的圖片中(當前只有上圖一張),待檢測的目標的數量
n
u
m
o
b
=
2
num_{ob}=2
numob?=2,上圖中的檢測情況如下表所示:
| GT id | Confidence | OB(IoU=0.5) |
|---|---|---|
| 1 | 0.98 | True |
| 1 | 0.61 | False |
該表中的順序是按Confidence從高到低排序的,對于一個GT來說,只能有一個檢測框為正確的檢測,

加入第二張圖片,此時待檢測的目標數量
n
u
m
o
b
=
3
num_{ob}=3
numob?=3,檢測情況如下表所示
| GT id | Confidence | OB(IoU=0.5) |
|---|---|---|
| 1 | 0.98 | True |
| 3 | 0.89 | True |
| 3 | 0.66 | False |
| 1 | 0.61 | False |
加入第三張圖片,加上前兩張中的待檢測目標,共有
n
u
m
o
b
=
7
num_{ob}=7
numob?=7個目標需要檢測,檢測情況如下表所示:

| GT id | Confidence | OB(IoU=0.5) |
|---|---|---|
| 1 | 0.98 | True |
| 3 | 0.89 | True |
| 6 | 0.88 | True |
| 7 | 0.78 | True |
| 3 | 0.66 | False |
| 1 | 0.61 | False |
| 4 | 0.52 | True |
依次取Confidence的閾值為[0.98, 0.89, 0.88, 0.78, 0.66, 0.61, 0.52],計算對應的查準率和查全率如下表所示:
| Rank | Precision | Recall | Confidence thread |
|---|---|---|---|
| 1 | 1.0 | 0.14 | 0.98 |
| 2 | 1.0 | 0.28 | 0.89 |
| 3 | 1.0 | 0.42 | 0.88 |
| 4 | 1.0 | 0.57 | 0.78 |
| 5 | 0.80 | 0.57 | 0.66 |
| 6 | 0.66 | 0.57 | 0.61 |
| 7 | 0.71 | 0.71 | 0.52 |
以Confidence thread=0.52為例:
此時的TP=5,誤檢FP=2,第一張和第三張兩張圖片共漏檢FN=2,所以
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
=
5
5
+
2
=
0.71
Precision=\frac{TP}{TP+FP}=\frac5{5+2}=0.71
Precision=TP+FPTP?=5+25?=0.71
R
e
c
a
l
l
=
T
P
T
P
+
F
N
=
5
5
+
2
=
0.71
Recall=\frac{TP}{TP+FN}=\frac5{5+2}=0.71
Recall=TP+FNTP?=5+25?=0.71
繪制出對應的P-R曲線圖:

計算曲線下方的面積,也就是貓這一類別的AP:
(
0.14
?
0
)
×
1.0
+
(
0.28
?
0.14
)
×
1.0
+
(
0.42
?
0.28
)
×
1.0
+
(
0.57
?
0.42
)
×
1.0
+
(
0.71
?
0.57
)
×
0.71
=
0.6694
(0.14?0)×1.0+(0.28?0.14)×1.0+(0.42?0.28)×1.0+(0.57?0.42)×1.0+(0.71?0.57)×0.71=0.6694
(0.14?0)×1.0+(0.28?0.14)×1.0+(0.42?0.28)×1.0+(0.57?0.42)×1.0+(0.71?0.57)×0.71=0.6694
對于表格中Recall相同的,只保留Precision最高的值進行計算,最終得到貓這一類的AP=0.6694,如果要計算mAP則需要計算出其他類別的AP,并取平均值,
參考串列:
- https://www.zhihu.com/question/57770020
- https://blog.csdn.net/u010947534/article/details/82025794
- https://blog.csdn.net/weixin_42454048/article/details/99939086?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1.no_search_link&spm=1001.2101.3001.4242.1
- https://www.cnblogs.com/sykline/p/15120002.html
- https://blog.csdn.net/LEEANG121/article/details/102710769
- https://blog.csdn.net/abc200941410128/article/details/79269386?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.no_search_link#t14
- https://zhuanlan.zhihu.com/p/30844905
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336161.html
標籤:AI
上一篇:R語言計算F1評估指標實戰:F1 score、使用R中caret包中的confusionMatrix()函式為給定的logistic回歸模型計算F1得分(和其他指標)
