用 Excel 就可以做出 CNN 的 AI 影像辨識!手把手教學讓你也可以用 Excel 創造人工智慧

【我們為什麼挑選這篇文章】過去我們總是認為,要做 AI 要用專業的軟體和工具,舉凡 Google 的雲端服務,或是其他種類的相同產品,都在專注於做這件事,用  Excel 就可以做 AI ,是一個很有趣的發現。(責任編輯:林子鈞)

本文經知乎專欄  論智 (公眾號 ID :jqr_AI) 授權轉載

當你入門的時候,可能覺得機器學習很複雜……甚至很可怕。另一方面,電子表格卻很簡單。電子表格並不酷炫,但卻能避免分散你的注意力,同時幫助你以直觀的方式可視化代碼後面發生的事情。

我將循序漸進地通過電子表格(你可以通過下面的鏈接下載)向你展示卷積神經網絡(CNN)是如何應用於計算機視覺任務的。其中包括一些數學,不過電子表格中包含了所有的公式。

下載傳送門

如果無法訪問 Google 雲端,可以在論智公眾號(ID: jqr_AI)後台留言 excel 獲取替代下載地址。

這一電子表格模型查看一幅圖像,分析它的像素,並預測是否是 Elon Musk、Jeff Bezos、Jon Snow……顯然這三位是天網的最大威脅。

終結者視覺——在電子表格中創建卷積神經網絡

本文將介紹上圖中的 9 個步驟,每個步驟都會使用類比的方法給你的直覺增壓。

本文的目標是使用容易操作的電子表格,提供入門機器學習的簡單路徑,並向充滿好奇心的讀者展示尖端 AI 技術的奧秘。如果本文對你有幫助,請註冊我創建的郵件列表,註冊後可以收到更多後續的電子表格,幫助你入門機器學習和創建神經網絡。

Facebook 面部識別系統、某國奧威爾式的大規模監控系統、你的汽車(不久的將來)背後的基礎都是計算機視覺。

CNN 神探

讓我們假裝終結者的頭腦裡住著一個特別的偵探,名叫「夏洛克·卷積·福爾摩斯」。他的工作是仔細查看證據(輸入圖像),使用敏銳的眼神和推理能力(特徵檢測),預測圖像中的人是誰,從而破案(正確分類圖像)。

卷積網絡架構

你將學習:

  1. 輸入:電腦如何看
  2. 特徵檢測:像福爾摩斯一樣思考
  3. 卷積數學:福爾摩斯的偵探工具
  4. ReLU:非線性模式識別
  5. 最大池化:保留最重要的線索
  6. 扁平化:排列所有線索
  7. 全連接:完成案件拼圖
  8. Logit + Softmax:破案
  9. 交叉熵損失:福爾摩斯的「正/誤」
天網的最大威脅——Elon Musk

我從上面的圖像中看到了一個有遠見的人。他一方面不斷改善地球這顆星球,另一方面創建逃離地球的火箭,以防終結者試圖摧毀地球。和計算機不同,我看不到像素值,也無法辨認出一張圖像不過是紅光、綠光、藍光的堆疊:

另一方面,一台電腦(比如天網)是瞎的……它只能看到數字。

想像一下由 3 張電子表格(紅、綠、藍)堆疊構成的電子圖像,每張表格是一個數字矩陣。拍照的時候,相機測量到達每個像素的紅光、綠光、藍光的量。接著它在 0-255 的範圍內評估每個像素,然後將其記錄到電子表格中。

計算機看到電子表格

上為一張 28×28 的圖像,每個像素由三行(紅、藍、綠)表示,取值範圍 0-255. 每個像素的顏色對應其數值。

終結者沒有看到眼睛,他看到的是一串數字

將每種顏色單獨放到一個矩陣中,我們得到了 3 個 28×28 矩陣,也就是我們之後用來訓練神經網絡的輸入:

模型輸入

如果你想知道如何將任意圖像轉換成電子表格,請訪問 這個網址

你將學到如何得到一張「Ex 拍」,你的 Excel 迷朋友們會喜歡的……相信我,在電子表格中找到你的馬克杯(或者他們的)會讓他們捧腹大笑的🤳(小圖效果最佳)。

訓練概覽——像電腦,又像小孩

你剛出生的時候知道狗是什麼樣的嗎?當然不知道。但隨著時間的推移,你的父母會給你看書中、動畫片中、真實生活中的狗的圖像,漸漸地,你可以指著那些 4 條腿、毛茸茸的動物說「狗」。你的大腦中數億神經元間的連接變得足夠強,所以你可以識別狗。

終結者以同樣的方式學習識別 Elon。在一個被稱為監督訓練的過程中,人們給終結者看數千張 Elon Musk、Jeff Bezos、Jon Snow 的圖像。剛開始,它只能隨便亂猜(1/3 的機率猜對),漸漸地,就像小孩一樣,隨著它在訓練過程中看到越來越多的圖像,它猜得越來越準。網絡的連接(也就是「權重/偏置」)隨著時間的推移而更新,使得它可以基於像素輸入預測輸出。這是我 上一篇文章 中討論過的學習過程(梯度下降)。

CNN 訓練週期

卷積神經網絡和普通神經網絡的區別何在?

用兩個詞概括:平移不變性。

不知所云?讓我們解構一下:

  • 平移 = 將某物從一個地方移動到另一個地方
  • 不變性 = 沒有改變

在計算機視覺中,這意味著,不管對象移動到圖像中的何處(平移),不會改變對象是什麼(不變性)。

平移不變性(以及縮放不變性)

這需要訓練卷積神經網絡識別 Elon 的特徵,不管 Elon 在圖像中的位置在哪裡(平移),也不管 Elon 在圖像中的大小(縮放不變性)。

在普通神經網絡中,我們本來會將每個像素作為模型的一個輸入(而不是 3 個矩陣),但這忽略了相近的像素具有特別的意義和結構這一事實。在 CNN 中,我們查看像素組,這允許模型學習形狀、線條等局部模式。比方說,如果 CNN 看到許多白像素包圍一個黑圓圈,它會識別出眼睛這一模式。

為了達到平移不變性,CNN 需要依靠它的特徵偵探夏洛克·卷積·福爾摩斯的服務。

類比: 圖像就像由像素組成的電子表格。

尋找特徵的夏洛克

夏洛克住在終結者的頭腦中。他每次使用放大鏡仔細檢查一小片圖像,尋找圖像的重要特徵(「線索」)。在收集到簡單的線條和形狀之類的線索後,他將它們堆疊起來,開始看到眼睛或鼻子之類的面部特徵。

每個卷積層儲存基於另一層構建的一組特徵映射。最後,夏洛克組合所有線索,這樣他就可以破案了(識別目標)。

每個特徵映射就像一條線索

網絡的每個卷積層都包含一組特徵映射,這些映射能夠以下圖所示的層次化的方式識別越來越複雜的模式/形狀。

CNN 基於數字的模式識別找到任意圖像的最重要特徵。隨著 CNN 以更多的網絡層不斷堆疊這些模式,它可以創建非常複雜的特徵映射。

特徵層次

真實生活中的 CNN 和夏洛克做一樣的事情:

CNN 的奇妙之處在於可以自行學習這些特徵……工程師不用編寫尋找一雙眼睛、一個鼻子、一張嘴的集合這樣的代碼。

以這種方式工作的工程師更像架構師,他們告訴夏洛克:「我給你兩疊(卷積層)空白特徵映射(線索),你的工作是分析圖像,找出最重要的線索。第一疊有 16 個特徵映射(線索),第 2 疊有 64 個特徵映射……現在發揮你的偵探技能,解決這個案件!」

類比: 每個特徵映射就像案件中的一條線索。

為了查明案件中的「線索」(即計算特徵映射),夏洛克需要依靠他的偵探工具箱中的一些工具,我們會逐一介紹:

  • 過濾器 —— 夏洛克的放大鏡 🔍
  • 卷積數學 —— 過濾器權重 x 輸入圖像像素
  • 步進 —— 沿著輸入圖像移動過濾器 🔍 ➡️ 🔍 ➡️
  • 補齊 —— 保護線索的犯罪現場隔離膠帶 🚧

夏洛克的放大鏡/過濾器

毫無疑問,夏洛克非常敏銳,具備出色的觀察技能,但是,如果沒有那些特製的放大鏡(過濾器),夏洛克沒法完成他的工作。他使用不同的放大鏡幫助填充每張空白特徵映射的細節。所以,如果他有 16 個特徵映射……他會有 16 塊放大鏡。

每塊放大鏡由多層玻璃組成,而每層玻璃由不同的權重組成。玻璃的層數,也就是過濾器深度,總是等於輸入層的深度。

剛開始,夏洛克看到的輸入圖像有 3 層——紅、綠、藍。所以,放大鏡也有 3 層。

隨著我們進一步創建 CNN,層的深度會增加,相應地,放大鏡也會變厚。

為了創建 1 個特徵映射(一條線索),夏洛克從取出一個放大鏡,並置於輸入圖像的左上角開始。紅層玻璃只能看到紅輸入圖像,綠層玻璃只能看到綠圖,而藍層玻璃只能看到藍圖。

現在是數學部分。

卷積數學

特徵映射中的每個像素是線索的一部分。為了計算每個像素,夏洛克需要進行一些基本的乘法和加法。

在下面的例子中,我們使用 5x5x3 的輸入圖像和 3x3x3 的過濾器,每個像素需要進行以下計算:

  • 3x3x3 過濾器每層的卷積乘法 = 27
  • 將 27 個數字加起來
  • 再加上 1 個數字——偏置

讓我們仔細看下數學。一個像素需要 27 次乘法(3 層,每層 9 次乘法),下面的截圖顯示了 27 次乘法中的 9 次:

分素相乘

至於偏置,你可以把它想像成放大鏡的把手。像權重一樣,它是模型的另一個參數,在訓練過程中自動調整,以提高模型的精確度,並更新特徵映射細節。

過濾器權重——在上面的例子中,我為了簡化數學,將權重的值設為 -1、0、1;然而,一般而言,你需要用較小的值隨機初始化權重……比如 0.01 到 0.1 之間的值,基於鐘形曲線或正態分佈取樣。想要瞭解更多權重初始化的知識,可以看這篇 入門

步進 —— 移動放大鏡

計算特徵映射的第 1 個像素之後,夏洛克將把放大鏡往哪移呢?

步進:每次移動放大鏡 1 像素

答案取決於步進參數。作為架構師/工程師,我們需要告訴夏洛克,他應該將他的放大鏡向右移動(步進)多少像素。實踐中最常見的步長值為 2 或 3,但出於簡單性,這裡我們將步長設為 1. 這意味著夏洛克將放大鏡向右移動 1 像素,然後進行和之前一樣的卷積運算。

當他的放大鏡到達輸入圖像的最右邊時,他將放大鏡移到最左,然後往下移動 1 像素。

步長為何大於 1?

優點:更少運算,內存中儲存的運算結果更少,從而使模型更快。

缺點:由於跳過像素有錯過模式的潛在可能性,損失了關於圖像的數據。

2 或 3 步長通常是合理的,因為緊跟著一個像素的像素通常具有相似的值,而隔著 2-3 個像素的像素,更可能具有不同的值,這樣的值對特徵映射/模式而言可能很重要。

如何預防信息損失(丟失線索)

為了破案,夏洛克剛開始接觸案件的時候需要大量線索。在我們上面的例子中,我們的輸入為一張 5x5x3 的圖像,或者 75 像素信息(75 = 5 x 5 x3),在第一個卷積層後,我們得到了一張 3x3x2 的圖像,或者 18 像素(18 = 3 x 3 x 2)。這意味著我們損失了證據,這讓夏洛克的搭檔約翰·華生非常反感。

在 CNN 的剛開始幾層,夏洛克傾向於查看大量細微模式(更多線索)。在靠後的卷積層中,隨著夏洛克堆疊細微的線索,查看較大的模式,「降採樣」也就是降低像素的總量(更少線索)沒什麼問題。

那麼,在 CNN 剛開始的時候,我們如何預防這樣的信息損失呢?

一、補齊——通過補齊圖像保護犯罪現場

在上面的例子中,我們在撞上右邊緣前,只能移動過濾器 3 次……從上往下同樣如此。這意味著我們所得輸出的高/寬為 3×3,從左往右,損失了 2 像素,而從上往下又損失了 2 像素。
為了預防這種信息損失,常見的做法是用零「補齊」原始圖像(稱為全零補齊(zero padding 或 same padding))……有點類似用犯罪現場隔離膠帶確保沒人破壞證據。

補齊之後,如果夏洛克再次使用相同的放大鏡,他的兩個特徵映射的大小會是 5×5 而不是 3×3.

這意味著我們最終得到了 50 像素的信息(5x5x2=50)。

50 像素比 18 要好。不過別忘了……我們剛開始有 75 像素,所以我們仍然錯過了一些線索。

所以我們還能做什麼讓夏洛克和約翰·華生滿意?

二、更多過濾器——至少在我們的卷積層中加上一個特徵映射,給夏洛克更多線索

模型對特徵映射(線索)的數量並沒有限制……這是我們可以控制的超參數。

如果我們至少將特徵映射從 2 增加到 3(5x5x2 到 5x5x3),那麼總輸出像素(75)就和輸入像素(75)相等了。如果我們將映射增加到 10,那麼我們會有更多信息供夏洛克探究(5x5x10 = 250)。

總結一下,剛開始幾層的信息像素總數一般高於輸入圖像,因為我們想要給夏洛克儘可能多的細微模式/線索。在網絡的最後幾層,我們常常進行降採樣,信息像素變少,這是因為這些層識別圖像中較大的模式。

類比: 過濾器就像放大鏡,而補齊就像犯罪現場隔離膠帶。

非線性模式識別——ReLU

給夏洛克足夠的案件信息很重要,但現在到了進行真正的偵探工作的時候了——非線性模式識別!比如耳廓和鼻洞。

到目前為止,夏洛克進行了大量數學運算以構建特徵映射,但所有運算都是線性的(在每個輸入像素上進行一些乘法和加法操作),因此,他只能識別像素的線性模式。

為了給 CNN 引入非線性,我們將使用一種稱為修正線性單元(Rectified Linear Unit)的激活函數,簡稱 ReLU。在我們初次進行卷積運算得出特徵映射後,每個值都通過這一函數,看看是否點亮/激活。

如果輸入值是負數,那麼輸出將為零。如果輸入值是正數,那麼輸出將和輸入一樣。 ReLU 就像一個開關,讓特徵映射的每個值通過 ReLU 之後,就創建了非線性模式識別。

回到我們原本的 CNN 例子,我們在卷積之後馬上應用 ReLU:

儘管有許多非線性激活函數可以為神經網絡引入非線性(Sigmoid、Tanh、Leaky  ReLU 等),ReLU 是 CNN 中目前最流行的激活函數,因為 ReLU 在算力上很高效,能加快訓練。你可以參閱 Andrej Karpathy 的 overview on non-linear activation functions 瞭解每種函數的優劣(譯者註:也可以參考 理解神經網絡的激活函數 ,同樣比較了不同激活函數的優劣)。

類比: ReLU 就像開關。

最大池化——在大腦閣樓中保留關鍵的少量信息

現在夏洛克有一些特徵映射(線索)要查看,如何確定哪些信息是關鍵的,哪些信息是無關的細節?最大池化。

夏洛克認為人類的大腦就像一個空閣樓。傻瓜會在裡面存放各種各樣的家具和物品,讓有用的信息在一堆雜物中不知所蹤。而智者僅僅儲存最重要的信息,從而在需要的時候可以快速做出決定。從這個意義上說,最大池化是夏洛克版的大腦閣樓。為了更快地做出決定,他只保留最重要的信息。

最大池化——在大腦閣樓中保留關鍵的少量信息

現在夏洛克有一些特徵映射(線索)要查看,如何確定哪些信息是關鍵的,哪些信息是無關的細節?最大池化。

夏洛克認為人類的大腦就像一個空閣樓。傻瓜會在裡面存放各種各樣的家具和物品,讓有用的信息在一堆雜物中不知所蹤。而智者僅僅儲存最重要的信息,從而在需要的時候可以快速做出決定。從這個意義上說,最大池化是夏洛克版的大腦閣樓。為了更快地做出決定,他只保留最重要的信息。

最大池化之後,我們完成了 1 回合卷積/ ReLU /最大池化。

典型的 CNN 在分類器之前會有若干回合卷積/ ReLU /池化。在每一回合中,我們將在增加深度的同時擠壓高/寬,這樣我們不會在此過程中遺失證據。

第一步至第五步,我們專注於收集證據,現在是時候讓夏洛克查看所有線索,偵破案件了

現在我們已經有了證據,讓我們開始挖掘證據的意義……

類比: 最大池化就像夏洛克的閣樓理論,保留關鍵信息,拋棄駁雜無用的信息。

在訓練週期的末尾,夏洛克得到了堆積如山的線索,需要找到一下子查看所有線索的方式。每條線索不過是一個 2 維矩陣,但我們有堆疊在一起的數以千計的矩陣。

作為一名私家偵探,夏洛克很擅長應付這樣的混沌,但他需要將證據呈上法庭,整理證據以供陪審團查看。

扁平化之前的特徵映射

他通過一種簡單的轉換技術(稱為扁平化)做到了這一點:

  1. 將每個由像素組成的 2 維矩陣轉換為一列像素
  2. 將原本的二維矩陣(現在的一列像素)一個接一個地排列起來

在人類的眼睛看來,變換是這樣的:

而在計算機看來,是這樣的:

現在夏洛克已經整理好證據了,是時候說服陪審團證據清楚地指向一個嫌疑人。

類比:扁平化就像把證據呈上法庭。

在全連接層中,我們將方方面面的證據連接起來。某種意義上,我們完成案件的拼圖,向評審團表明證據和每個嫌疑人之間的聯繫:

在計算機看來,全連接層是這樣的:

在扁平層的每份證據和 3 個輸出之前是一組權重和偏置。類似網絡中的其他權重,這些值會在剛開始訓練 CNN 的時候隨機初始化,而隨著時間的推移,CNN 將「學習」如何調整這些權重/偏置以得到更精確的預測。

現在,到了夏洛克揭曉謎底的時間了!

類比:全連接層就像說服陪審團下決定。

在 CNN 的圖像分類器階段,模型的預測為得分最高的輸出。模型的目標是讓正確的輸出得分最高,而讓錯誤的輸出得分較低。

評分分為兩部分:

  1. Logit 分數——原始得分
  2. Softmax ——每個輸出的概率(0-1 之間)。所有輸出得分之和等於 1.

1. Logit——邏輯得分

每個輸出的 Logit 得分是一個基本的線性函數:

Logit 得分 = (證據 x 權重) + 偏置

每片證據乘以連接證據至輸出的權重。所有乘積相加,最後加上偏置項,得分最高的為模型的猜測。

所以,為什麼不到此為止?直觀地說,有兩個原因:

  1. 夏洛克的置信度 ——我們想要知道夏洛克對結果有多自信,這樣,當夏洛克的置信度很高同時他是正確的時候,我們會獎勵他,而在夏洛克的置信度很高同時他是錯誤的時候,我們會懲罰他。我們在下一部分計算損失(“夏洛克的精確度”)時會具體討論獎勵/懲罰。
  2. 夏洛克的置信度加權概率 ——我們想要能夠方便地解釋這些 0 到 1 之間的概率,並且我們想要預測得分和實際輸出(0 或 1)處於同一尺度。實際正確的結果(Elon)的概率為 1,其他錯誤的結果(Jeff 和 Jon)的概率為 0. 將正確輸出轉為一,錯誤輸出轉為零的過程稱為 獨熱編碼

夏洛克的目標是讓他對正確輸出的預測儘可能接近 1.

2. Softmax——夏洛克的置信度加權概率得分

2.1 夏洛克的置信度

為了得出夏洛克的置信度,我們以 e(等於 2.71828…)為底數,以 logit 得分為指數。這樣,一個較高的得分將變為非常高的置信度,而一個較低的得分將變為非常低的置信度。

這番指數運算同時也確保了我們不會有任何負分(logit 得分「可能」是負數)。

2.2 夏洛克置信度加權概率

為了得出置信度加權概率,我們將每個輸出置信度除以所有置信度得分之和,這就確保了所有概率之和為 1.

softmax 分類器很直觀。夏洛克認為有 97%(置信度加權)的幾率終結者查看的圖像是 Elon Musk。

模型的最後一步是計算損失。損失告訴我們偵探夏洛克到底有多棒(或者到底有多糟)。

類比:Logit + Softmax 就像查看一排嫌疑人,並指出罪犯。

所有神經網絡都有一個損失函數,用來比較預測和實際值。在 CNN 訓練的過程中,隨著網絡權重/偏置的調整,預測改進了(夏洛克的偵探技能變得更厲害了)。

CNN 最常用的損失函數是交叉熵。用 Google 搜索交叉熵出現的一些解釋都涉及大量希臘字母,很容易讓人困惑。儘管這些描述各不相同,在機器學習的語境下它們都意味著一樣東西,我們下面將介紹最常見的 3 種解釋,便於你理解。

在描述每種公式變體之前,先概括一下它們的共同點:

  • 比較正確分類的概率(Elon,1.00)和 CNN 的預測(Elon 的 softmax 得分,0.97)。
  • 當夏洛克對正確分類的預測接近 1 時(低損失),獎勵他👏
  • 當夏洛克對正確分類的預測接近 0 時(高損失),懲罰他👎

1 號解釋——衡量實際概率和預測概率的距離

距離捕捉了以下直覺:如果對正確標籤的預測接近 1,那麼損失接近 0. 如果對正確標籤的預測接近 0,那麼將受到嚴厲的懲罰。目標是最小化正確分類的預測(Elon,0.97)和正確分類的實際概率(1.00)的距離。

賞罰「對數」公式背後的直覺將在 2 號解釋中討論。

2 號解釋——最大化 log 似然或最小化負 log 似然

在 CNN 中,「對數」實際上指「自然對數(ln)」,它是 softmax 中以自然對數為底的指數的逆運算。

對夏洛克遠離 1.00 的預測而言,相比直接從實際概率(1.00)中減去預測概率(0.97)來計算損失,對數運算將懲罰以指數級別加重了。

最小化負對數似然和最大化對數似然均導向 softmax 預測趨向 1.0,損失趨向 0.0 的結果。

3 號解釋——KL 散度

KL(Kullback-Leibler)散度衡量預測概率(softmax 得分)和實際概率的差異。

KL 散度的公式包括兩部分:

  1. 實際概率的不確定性。
  2. 使用預測概率損失的信息量。

在監督學習分類問題的模型訓練中,實際概率的不確定性總是等於 0. 我們百分之百確定訓練圖像的分類無誤。此時,最小化預測概率分佈和實際概率分佈之間的 KL 散度等價於最小化交叉熵。

類比:交叉熵損失就像評估夏洛克的偵探技能。

總結

在夏洛克·卷積·福爾摩斯這位特別的偵探的幫助下,終結者有了一對能夠搜索並摧毀自由世界的保護者 Elon Musk 的眼睛(對不住了,Elon!)。

雖然我們僅僅訓練了終結者識別 Elon、Jeff、Jon……天網有無窮多的資源,可以隨意訓練圖像,因此天網可以利用我們創建的模型訓練終結者識別任何人類和物體。

訂閱郵件列表和分享

如果你喜歡本文,並想收到更多通過 Excel 進行機器學習的內容,可以訪問 excelwithml.com 免費訂閱郵件列表。

你也可以在 Twitter 上關注 ExcelwithML。

Excel 還可以這樣用

15 歲神童很會用 Excel! 不但拿冠軍還拿 20 萬獎金

9 個達人才懂的 Excel 快捷鍵,早點下班就靠這幾招!

論智(公眾號 ID :jqr_AI) 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 使用 Excel 實現卷積網絡 〉)

 


【徵求產業線編輯 3 名】

工作內容與需求:

1. 高度關注國際科技趨勢、台灣產業新聞
2. 根據月度編輯台企劃,執行編輯、採訪與撰稿工作
3. 進行線上、線下媒體策展
4. 根據不同策展專案進行跨部門溝通
5. 針對網站數據做解讀與優化分析
6. 具有 2~3 年工作經驗的媒體工作者
7. 習慣閱讀《彭博社》、《財富雜誌》、《金融時報》、《Fast Company》者更佳
8. 目標導向思考,對準目標、彈性工作

【應徵方式】

意者請提供履歷自傳以及「相關文字作品」,寄至 [email protected]。來信主旨請註明:【應徵】TechOrange 社群編輯:您的大名

點關鍵字看更多相關文章: