神經網路聽起來很奇特。 神經讓你想到大腦。 哪些很複雜。 但如果您熟悉線性迴歸,您就擁有理解神經網路功能所需的構建塊。
神經網路(NN)通常分為以下幾類:監督機器學習(儘管有些類型的神經網路在沒有標記資料的情況下也可以做出驚人的事情#AutoEncoders)。 它們採用一組輸入(一組要用來預測某些內容的變數)並預測結果。
這...聽起來很像線性迴歸。
在線性迴歸中,我們採用一個或多個輸入,並使用以下公式預測連續輸出
其中 Y 是您想要預測的內容,而
是你的輸入。 例如,我們可能希望根據您的年齡、性別、薪水和租金來預測您每年在視訊遊戲上花費的金額。

然後我們讓回歸學習係數的值(這似乎是一種愚蠢的說法,但請堅持我的觀點)。
我們不告訴迴歸係數是什麼,而是我們告訴它如何學習他們。 在簡單的情況下,我們經常要求迴歸使用最小平方法來學習最佳係數是多少。
本質上,我們給回歸一個結構對於模型,以及方法用於學習模型中的值。 然後,我們就讓它走上學習的道路。
當我們建構神經網路時,我們也會選擇一個結構和一個方法用於學習,但它們通常看起來與我們用於回歸的結構和方法略有不同。
回歸範例
結構
節點。 神經網路的使用節點作為保存值的容器。 這些節點有連接它們之間。 當它們以圖形方式繪製時,它們看起來有點像一堆並排放置的棒棒糖。
連接表示數學計算,當一個節點使用連接移動到下一個節點時,這些計算將應用於一個節點的值。
如果我們想將視頻遊戲回歸構建為神經網絡,我們完全可以! 它的結構如下所示:
層數。 我們的電玩神經網路有兩層:輸入我們向神經網路提供預測變數年齡、性別、薪資和租金的層,以及輸出我們從神經網路中得到預測的層。
兩層之間的連接包含權重,我們可以稱它們為米, n、p和k ,我們將其應用於從輸入層到輸出層的每個變數。 所以年齡會乘以米, 性別n ,依此類推,所有這些乘積將在輸出節點中相加。
神經網路還增加了一個偏見(二)到輸出節點中的值。 偏差只是一個標量(常規數字,如 1、-7 或 42)。
根據我們建構的神經網路結構,輸出節點將根據以下公式給出結果:
這與我們上面看到的迴歸公式相同。
學習方法
當我們進行線性迴歸時,我們必須找到/計算係數的值(b,m,n,p,和k )在我們指定模型結構之後。 我們經常使用最小平方法來找出係數。
簡而言之,最小平方法找到使模型預測與實際資料之間的誤差平方和最小化的係數。
用數學術語來說,我們最小化這個函數:
在哪裡
是數據點的實際值,且
是模型對此資料點的預測。
損失。 如果我們願意,我們可以將此函數稱為我們的函數損失函數。 這正是使用神經網路時所說的。 損失函數為我們提供如何進行數值測量出色地我們的模型正在做。 如果損失很小,則預測相當準確。 如果它很大,它就不會那麼熱。 我們建立良好模型的目標始終是最小化損失函數(從而最大化模型效能)。
而均方誤差(前任)來自最小二乘)對於許多模型來說是一個不錯的選擇,還有許多其他選擇。 神經網路可以具有各種結構,不同的資料/結構可能受益於其他類型的損失函數。
“學習。”我們知道我們想要最小化我們的損失函數,並且我們擁有用於構建神經網路的數據和結構,但我們實際上需要「執行」最小化。 這是我們的神經網路開始偏離迴歸模型的地方。
在更簡單的迴歸中,有一個非常簡單快速的數學方法可以使用線性代數、幾何和正規代數來求解我們的精確係數。 但神經網路採取了略有不同的方法。 神經網路經常使用迭代方法來尋找最小化損失函數的值(並優化我們的模型)。 本質上,我們嘗試在迭代的每一步中更接近“最佳”答案。
許多工具和教程都使用某種形式梯度下降。 我不會花大量時間討論傳統梯度下降的技術細節,因為它不是 JMP 使用的,但總體思路是有一個坡度損失函數(想像一張有山脈和山谷的地圖),其中較高的點代表較差的模型性能,較低的點代表良好的甚至最佳的模型性能。
您可以將梯度下降想像為在這張地圖上嘗試到達最低點的徒步旅行者。 他們每踏出一步,都會環顧四周,找出下降最陡的方向,然後朝該方向邁出一步。 最終,他們陷入了低谷。 從我們的遠足類比中回來,低點代表一組參數(例如我們的係數和偏差),其中損失函數最小化,因此我們的模型表現得非常好!
在聯合管理計劃,使用稍微不同的技術來優化神經網路。 而不是使用典型的梯度下降方法,JMP 使用稱為BFGS演算法(不代表乙IG F友善地G伊安特S ,對羅爾德·達爾的粉絲們表示歉意)。 BFGS 演算法有助於迭代地採取步驟來優化模型,類似於梯度下降,但使用不同的數學來實現。
JMP 不會等到演算法找到最終低點(梯度中的山谷之一),而是透過查看驗證集來決定模型的最佳化(這就是為什麼 JMP 需要一個驗證集,或保留驗證集的一部分)在建立神經網絡時自動驗證您的資料)。 驗證集包含不用於最佳化模型的資料。
JMP 將在驗證集上測試目前模型。 一旦朝著低點採取更多「步驟」並不能顯著提高模型在驗證集上的效能,JMP 就會認為模型已最佳化。 在未用於創建模型的新數據上測試模型有助於我們了解我們正在創建的模型在未來數據上的表現。 這種方法被稱為“提前停止”,因為它可以讓我們提前停止邁向低點的步驟。 這通常可以讓我們快速優化我們的模型。
無論使用哪種方法,一旦模型被認為是充分優化的,我們現在就擁有了神經網路中參數的所有估計值! 我們終於有了一個可以用來預測某些事情的工作模型。
更複雜的結構
現在您了解了神經網路的基礎知識結構化的,以及他們如何學習。 但並非所有神經網路都必須看起來像我們上面所做的回歸網路。 神經網路使我們在構建其結構時更加靈活。
多層。 我們可以用神經網路做的一件事就是增加更多層。 在我們的迴歸範例中,我們有一個直接連接到輸出層的輸入層。 但我們可以在它們之間插入一個額外的層,並將每一層連接到下一層。
這意味著輸入資料在到達輸出層之前將經過更多連接(因此也有更多計算)。 層數和連接越多,可以近似的函數就越複雜。
當我們建立模型時,我們這樣做本質上是因為我們相信我們的輸入和輸出之間存在某種關係。 有一些數學函數,這可以解釋如何將所有輸入值轉換為輸出值。 就像根據年齡、性別、薪水和租金來猜測在視頻遊戲上花費的金額一樣。
我們希望我們所建構的模型(我們稱之為f*(x) )非常接近(或近似) f(x) 。 但f(x)可能是個相當複雜的模型。 它甚至可能不是線性的*喘息*! 額外的層(以及我們稍後將討論的一些其他技巧)使我們創建的模型更加複雜。 如果f*(x)也很複雜,那麼我們就有更好的機會創造一個接近於f(x) 。
輸入層和輸出層中的節點數量是預先決定的。 輸入層為每個變數(或特徵,我們在機器學習中經常這麼稱呼它們)都有一個節點,而輸出層為您想要預測的每個數字都有一個節點。 但是,當您開始新增更多層(稱為隱藏層)時,您可以選擇任意數量的節點。 在神經網路歷史的這一點上,它更像是一門藝術而不是一門科學。 對於每個隱藏層選擇多少節點(例如慢慢減少每層中的節點數量)有很好的經驗規則,但沒有確切的答案。
激活函數。 好的,回到我關於某些模型如何非線性的評論(*再次喘氣*)。 神經網路也採用激活函數在每個節點中,以便我們創建的模型是非線性的。
JMP專業版提供三種激活函數選項:TanH、線性和高斯。 在我們的迴歸模型中,我們「秘密」使用線性激活函數。 激活函數將輸入輸入到節點中,並在將其傳遞到下一層之前對其執行某種轉換。 A線性激活(紅色)接受一個值並返回不變,這正是我們在上面簡單的回歸神經網路中所做的。
但我們不必保持它不變。 這正切值活化(藍色)是 Sigmoid 活化的一種(意味著它的函數看起來像一個拉伸的 S)。 它很有用,因為它接受任何輸入並將其映射到 -1 和 1 之間的值。 大的負值將轉換為接近 -1 的值,大的正值將轉換為接近 1。 當您的模型預測類別(例如某人是否會拖欠貸款)而不是連續輸出時,它通常非常有用。
A高斯激活函數(綠色)採用極值(高或低)並傳回接近 0 的值。 對於不太極端的值,它將傳回接近 1 的值。
如果我們只使用線性激活,我們創建的模型只能是線性的。 但是,如果我們使用任何非線性激活函數,我們現在可以創建非線性模型!
JMP Pro 可讓您建立最多 2 層的神經網絡,並允許您為每層選擇不同的激活函數。 使用不同數量的層、節點和不同的激活函數,我們可以為神經網路創建大量結構。 您甚至可以使用神經網路來預測類別而不是一個連續值。
聯合管理計劃
要在 JMP 中建立神經網絡,請轉至分析>預測建模>神經。 神經平台開啟後,您可以透過將輸入和輸出分別拖曳到 X 和 Y 方塊來選擇輸入和輸出。
這將開啟模型啟動窗口,您可以在其中指定兩個隱藏層中想要的節點數量,以及您想要使用的啟動函數類型。
一旦你點擊去,JMP 將建立您的神經網路並創建模型性能度量表(例如連續輸出的 R^2 或 RMSE)。 您也可以透過點擊紅色三角形並選擇預測值來繪製實際值按預測繪製實際情況。 同樣,我們可以透過點擊紅色三角形並選擇來繪製殘差值按預測繪製殘差圖。 您也可以轉到紅色小三角選單並選擇分析器取得預測刻畫器,它將向您展示有關神經網路中實際發生的情況的更多資訊。 黑盒子不再存在!

結論
神經網路很有趣,告訴人們你正在使用神經網路聽起來很酷。 但當你觀察他們的真實本性時,你會發現他們並不是所以與簡單線性迴歸不同。 在這兩種情況下,我們都必須指定一個結構和一個學習方法為了獲得一個有效的、最佳化的模型。 神經網路做讓我們對比簡單線性迴歸更複雜的結構進行建模,因此當我們認為輸入和輸出之間的關係很複雜時,它們通常很有用。
額外的層和激活函數使我們能夠嘗試網路的結構,而它們只是開始! 我們可以預測分類結果、多個連續結果,我們可以有五層,或十層! 我們還可以將更多很酷的功能應用於神經網路(例如,Dropout 或我們此處未介紹的其他激活函數),但現在您已經了解了基礎知識,您可以更加自信地探索所有這些東西。