(萬字干貨)如何訓練優(yōu)化“AI神經(jīng)網(wǎng)絡”模型?

0 評論 2379 瀏覽 21 收藏 40 分鐘

在上一篇文章中,我們詳細介紹了神經(jīng)網(wǎng)絡的基本概念和原理,神經(jīng)網(wǎng)絡的優(yōu)勢和應用場景,以及神經(jīng)網(wǎng)絡的產(chǎn)品案例:網(wǎng)易有道AI翻譯。如果想了解神經(jīng)網(wǎng)絡的更多詳情,可以翻閱我之前寫的《8000字干貨說清楚AI產(chǎn)品經(jīng)理必修的“神經(jīng)網(wǎng)絡” 》

在了解神經(jīng)網(wǎng)絡的結構和原理后,我產(chǎn)生了進一步的好奇,明明就是一些抽象的數(shù)學模型卻可以實現(xiàn)類似人腦的智慧,神經(jīng)網(wǎng)絡是如何通過數(shù)據(jù)訓練來實現(xiàn)這樣奇妙的效果呢?本篇就以這個問題作為切入點來展開說說。

本篇為大家揭曉,AI如此“神機妙算”的背后,也是需要經(jīng)歷一段訓練過程的,如何訓練AI神經(jīng)網(wǎng)絡?又如何識別訓練過程是有效的?

在這個碎片化學習的環(huán)境中,也許已經(jīng)很少有人可以沉下心來看完一篇長文了,但我還是希望你可以堅持看完,相信會給你帶來不一樣的,更深厚的收獲。
照例,開篇提供本篇文章結構導圖,方便大家在閱讀前總攬全局,有大致的畫面框架。

一、AI神經(jīng)網(wǎng)絡需要被訓練后,才能派上用場

看過上一篇文章的朋友會知道,神經(jīng)網(wǎng)絡中有兩個主要部分,:結構和權重。結構包括神經(jīng)元及其連接, 權重是一些數(shù)字,是連接神經(jīng)元之間的參數(shù)。

它們可以微調神經(jīng)元中的數(shù)學運算方式,從而得到一個輸出。如果神經(jīng)網(wǎng)絡犯了錯誤,也就是說輸出的結果和預期不符,這通常意味著權重沒有正確調整,我們需要更新它們,以便它們下次做出更好的預測。

聽起來是不是覺得很簡單,其實這背后的訓練過程是很復雜的,我這樣說只是為了好理解一些。但我們畢竟是在討論AI領域的知識,內容中無法避免會遇到一些專業(yè)詞匯,于是乎,后面講到了我再逐一解釋吧。

神經(jīng)網(wǎng)絡中的權重決定了不同神經(jīng)元之間的連接強度,為神經(jīng)網(wǎng)絡結構找到最佳權重的過程稱為優(yōu)化。

神經(jīng)網(wǎng)絡作為一種模型,想讓它真正有“神機妙算”的本領,就需要我們用大量的數(shù)據(jù)去訓練它,未被訓練過的模型往往容易給出很多的錯誤答案,這也是為什么市面上那么多AI模型,需要被數(shù)據(jù)大量訓練后才能真正面市了。

接下來,我們可以再追問一步,計算機是如何通過數(shù)據(jù)訓練并優(yōu)化神經(jīng)網(wǎng)絡的呢?

提到訓練神經(jīng)網(wǎng)絡,我們就離不開被數(shù)學支配的現(xiàn)實,神經(jīng)網(wǎng)絡的每一個神經(jīng)元中都裝著數(shù)學模型,若以非線性函數(shù)來舉例解釋神經(jīng)網(wǎng)絡的訓練過程,些許復雜了,也不易理解。

還是以線性回歸為例吧,畢竟本篇的重點不是在數(shù)學模型上,而是說清楚神經(jīng)網(wǎng)絡是如何訓練和優(yōu)化的。

所以,我們以線性回歸為例,來聊聊神經(jīng)網(wǎng)絡的訓練優(yōu)化策略。

二、以線性回歸為例的訓練優(yōu)化策略

線性回歸是一種統(tǒng)計學方法,用于研究兩個或多個變量之間的關系。它基于一個假設,即觀察到的數(shù)據(jù)點可以通過一條直線(在二維空間中)或一個超平面(在多維空間中)進行最佳擬合。

線性回歸的目標是找到這條直線或超平面的參數(shù),使得預測值與實際觀測值之間的誤差最小化。

基于線性回歸的概念和特點,我們可以發(fā)現(xiàn),在機器學習領域,線性回歸可以用來做數(shù)據(jù)預測。通過擬合數(shù)據(jù)點的最佳直線,我們可以預測連續(xù)值的結果。

比如,我們想要知道一家度假村的游客人數(shù)和氣溫之間有什么關系,我們需要知道過去的數(shù)據(jù),根據(jù)歷史數(shù)據(jù)找到和數(shù)據(jù)最擬合的公式,假設這個公式可視化為一條折線圖,可以直觀表示兩個數(shù)據(jù)之間的關系。

得出預測線后,我們就可以據(jù)此來預測未來日子里,不同氣溫下會有多少游客量,幫助預測明年在不同季節(jié)時,提前準備承載游客量的應對方案,從而幫助度假村提高整體運營效益。

我們回想一下,圖中的折線是如何畫出來的?也就是說,計算機是如何知道這條折線可以最佳擬合游客人數(shù)和氣溫之間的關系呢?

這就是線性回歸在背后起到的關鍵作用。

剛開始,計算機畫一條隨機的直線, 這條直線大概率就是不準的。所以計算機就需要計算這條直線和每個數(shù)據(jù)點之間的距離, 全部加起來, 量化直線上的數(shù)據(jù)和真實數(shù)據(jù)之間的差距。

下一步,已知差距就要減少差距,線性回歸的目標是調整直線, 使誤差盡可能小, 我們通過歷史數(shù)據(jù)訓練它,希望這條線符合訓練數(shù)據(jù)。

最后,通過數(shù)據(jù)訓練后,得出的直線被稱為最佳擬合線, 我們可以用這條直線, 預測在任何溫度下都會有多少游客出現(xiàn)。于是,你就看到計算機生成出了一條符合游客人數(shù)和氣溫之間關系的直線圖了。

在現(xiàn)實中,數(shù)據(jù)關系往往沒有那么簡單,游客的人數(shù)并不是只和氣溫有關,為了預測更準確的結果, 我們可能需要考慮兩個以上的特性。

比如說, 加上節(jié)假日特征后,可視化圖表會從2D圖變成3D圖,,我們的最佳擬合線更像是一個最佳擬合平面。如果我們再增加第四個特性, 比如是否下雨, 那么預測模型的圖表將會變得更加復雜,那就難以直觀可視化呈現(xiàn)清楚了。

所以,當我們考慮更多的特性時,需要在圖中添加更多的維度,優(yōu)化問題會變得更復雜,擬合訓練數(shù)據(jù)變得更加困難。

這時候,就是神經(jīng)網(wǎng)絡派上用場的地方了,通過將許多簡單神經(jīng)元和權重連接在一起,神經(jīng)網(wǎng)絡可以學習解決復雜的問題,最佳擬合線變成了一個奇怪的多維函數(shù)。

現(xiàn)實中,當我們面臨復雜預測時,人工智能往往比普通人發(fā)揮得更好。比如,預測天氣。

三、用損失函數(shù)來表示誤差

了解了訓練數(shù)據(jù)的優(yōu)化策略后,不如我們再好奇一點,進一步追問下去,計算機是如何知道自己預測的數(shù)據(jù)和實際數(shù)據(jù)有差距呢?知道差距后又是如何減少差距,讓輸出的預測結果和實際結果最符合呢?

預測值和實際值之間的差距我們可以稱作誤差,計算機要想知道預測值與實際值之間是否產(chǎn)生誤差,還知道誤差有多大,就需要損失函數(shù)派上用場了。

神經(jīng)網(wǎng)絡中的損失函數(shù)是一種衡量模型預測結果與實際結果之間差距的方法。在訓練神經(jīng)網(wǎng)絡時,我們的目標是最小化損失函數(shù)以使模型更好地擬合數(shù)據(jù),從而實現(xiàn)更準確的預期結果。

常見的損失函數(shù)有均方誤差(MSE)、絕對值誤差(MAE)、交叉熵損失(Cross-Entropy Loss)、Hinge損失(Hinge Loss)、對數(shù)損失(Log Loss)、Huber損失(Huber Loss)、平均絕對誤差(Mean Absolute Error,簡稱MAE)等。

這些損失函數(shù)在不同場景下有各自的優(yōu)勢和適用性,選擇合適的損失函數(shù)對于提高模型的性能至關重要。在實際應用中,我們可以根據(jù)數(shù)據(jù)的特點和任務需求來選擇合適的損失函數(shù)。

以均方誤差(MSE)為例,均方誤差是預測值與真實值之間差值的平方和的平均值。具體來說,如果我們有n個預測值和對應的實際值,MSE的計算公式就是:

MSE = (1/n) * Σ(yi – ?i)^2

其中,y_i表示實際值,?_i表示預測值,n表示樣本數(shù)量,Σ表示求和。

在均方誤差(MSE)的結果中,MSE越小,模型擬合效果越好,說明預測模型的準確性越高。相反,如果MSE的值較大,那么預測模型的準確性就相對較低。

因此,在實際應用中,我們通常希望MSE的值盡可能小,以獲得更好的預測效果。

任何一個模型都有其適用的邊界,均方誤差也不例外。均方誤差(MSE)適用于連續(xù)型數(shù)據(jù),尤其是回歸問題。既然知道均方誤差在回歸問題上比較有效,我們也有必要先對回歸問題有個大概的了解。

在統(tǒng)計學和機器學習領域中,回歸問題常用于預測一個連續(xù)變量的值基于其他相關變量的影響,建立一個模型,通過分析已知的自變量和因變量的數(shù)據(jù),來理解它們之間的關系。

本文第二段“以線性回歸為例的訓練優(yōu)化策略”中提到的線性回歸指的就是自變量和因變量之間存在線性關系的情況。

回歸問題在現(xiàn)實生活中有著廣泛的應用,如預測房價,預測股票價格,又或者僅僅預測度假村游客人數(shù)和氣溫高低的關系等。

通過對大量歷史數(shù)據(jù)的分析和建模,我們可以為這些實際問題提供有價值的預測結果。當然,前提是數(shù)據(jù)的質量是優(yōu)質的,模型的選擇是匹配的。

綜上所述,我們通過損失函數(shù)來表示模型預測的誤差,以均方誤差為例,MSE用于表示某個線性回歸模型預測的準確率。

接第二段中度假村的例子,如果首次MSE的值為10,通過多次調整后,最后一次MSE的值為0.1,MSE從10降到了1,則說明調整后的預測模型變得更準確了。

然而,我們不能僅從MSE的值來決定一個模型的好壞。這是因為,在不同的應用場景中,我們對于模型的預測精度要求是不同的。

例如,在某些對預測精度要求極高的場景中,即使MSE的值只有0.01,我們也可能認為這個模型的效果不好,而在一些對預測精度要求較低的場景中,即使MSE的值達到了0.1,我們也可能認為這個模型的效果已經(jīng)足夠好。

值得注意的是:即使是標準化的AI模型,在實際運用中,也需要具體問題具體分析,切不可無腦照搬,采用什么模型,首要的就是先清楚待解決的問題是什么,只用清楚了問題的本質才能找對適合的模型,這節(jié)奏,是不是有點拿著AI方案進行私人訂制那味兒了?

四、用反向傳播來減少誤差

上段說到,損失函數(shù)可以優(yōu)化AI模型預測的準確性,這話不全對。因為,僅僅是損失函數(shù),只是起到了一半的作用,需要完成另外一半,才可以真正達成模型的訓練調優(yōu)。

這另外一半,就是反向傳播(Back Propagation),也被稱為反向訓練或反向學習,是一種重要的機器學習算法。

它的核心思想是通過計算網(wǎng)絡的輸出誤差并將其反向傳播到神經(jīng)網(wǎng)絡之前的每一層,從而更新原神經(jīng)網(wǎng)絡中的權重和偏置,以使得神經(jīng)網(wǎng)絡的預測結果更接近于真實的目標值。

正如我們前幾篇文章中所了解到的,在神經(jīng)網(wǎng)絡中,每一層的神經(jīng)元都會對輸入數(shù)據(jù)進行一系列的處理和變換,然后將處理后的結果傳遞給下一層。

這個過程可以被視為一個信息的傳遞過程,而在這個過程中,網(wǎng)絡的權重和偏置起著關鍵的作用。

然而,由于神經(jīng)網(wǎng)絡的復雜性,我們很難直接通過數(shù)學公式計算出神經(jīng)網(wǎng)絡的最優(yōu)權重和偏置。因此,我們需要使用一種迭代的方法來逐步優(yōu)化這些參數(shù),這就是反向傳播算法的思想起源。

所以說,為了訓練優(yōu)化神經(jīng)網(wǎng)絡,在損失函數(shù)得出誤差值后,反向傳播算法會將結果反饋給神經(jīng)網(wǎng)絡前幾層的神經(jīng)元并促其調整,一些神經(jīng)元的計算可能比其他神經(jīng)元的計算更容易造成錯誤,,權重會調整得多一些,錯誤少的就調整得少一些,層層幾次反饋和調整后,就可以讓計算機得出比之前更準確的預測結果,神經(jīng)網(wǎng)絡模型也因此得到訓練和優(yōu)化。

以上,就是反向傳播工作的基本原理了。不如,我們再往下追問一步,反向傳播算法是如何改變原神經(jīng)網(wǎng)絡的權重和偏置呢?

我們已知,反向傳播的基本思想是從輸出層開始,逐層向前計算每個神經(jīng)元對損失函數(shù)的負貢獻(即梯度),這其中的“梯度”,便可以更新神經(jīng)網(wǎng)絡的權重和偏置,從而獲得較低的損失函數(shù)值。

所以,我們還需要弄清楚兩個問題:1.梯度是什么?2.梯度是如何更新權重和偏置的?

簡而言之,梯度就是一個函數(shù)在某一點上的斜率或變化率。更具體地說,它表示的是函數(shù)輸出值關于輸入值的變化情況。這個梯度告訴我們,如果我們想減小損失函數(shù)的值,應該如何調整網(wǎng)絡的權重。所以,我們需要先計算梯度,再更新網(wǎng)絡的權重。

在反向傳播算法中,梯度的計算分為前向傳播和反向傳播兩個階段。

在前向傳播階段,網(wǎng)絡首先將輸入數(shù)據(jù)傳遞到輸出層,然后逐層向前計算每一層的輸出和損失函數(shù)的值。

在這個過程中,每個神經(jīng)元都會根據(jù)其前一層的輸出和激活函數(shù)來計算自己的輸出,并將這個輸出傳遞給下一層。同時,每個神經(jīng)元還會計算其輸入與輸出之間的誤差,這個誤差會隨著數(shù)據(jù)在網(wǎng)絡中的傳播而被累積起來。

在前向傳播完成后,反向傳播階段開始計算梯度。

從輸出層開始,每個神經(jīng)元都會根據(jù)其輸出誤差和激活函數(shù)的導數(shù)來計算其在反向傳播過程中對損失函數(shù)的貢獻。

然后,這些梯度信息會逐層向后傳播,直到傳回輸入層。這樣,我們就可以得到每個參數(shù)對于損失函數(shù)的貢獻,即參數(shù)的梯度。

為了計算梯度,我們需要用到鏈式法則(Chain Rule)。

鏈式法則是微積分中的一個基本法則,它描述了復合函數(shù)的導數(shù)是如何分解為簡單函數(shù)的導數(shù)之積的。

在反向傳播中,我們可以將整個神經(jīng)網(wǎng)絡看作是一個復合函數(shù),其中每個神經(jīng)元都是一個簡單函數(shù)。

通過鏈式法則,我們可以計算出損失函數(shù)關于每個權重的偏導數(shù)(即梯度),然后用這些梯度去更新網(wǎng)絡的權重。

得出了梯度后,計算機又是如何借助梯度來更新權重和偏置的呢?

俗話說,用魔法打敗魔法,算法應對算法,所以我們需要借助一些優(yōu)化算法來更新梯度,從而實現(xiàn)權重和偏置的有效優(yōu)化。

常見的優(yōu)化算法有梯度下降法、隨機梯度下降法(SGD)、Adam這三種。

以梯度下降法為例,展開說一下其實現(xiàn)原理。

梯度下降法是一種在機器學習和深度學習中常用的優(yōu)化算法。它的核心思想是沿著目標函數(shù)的梯度負方向進行迭代,從而找到使目標函數(shù)取得最小值的點。

為了形象地解釋這一過程,我們可以將其比喻為一個登山者在攀登一座陡峭的山峰。

假設這座山峰就是我們的目標函數(shù),我們希望找到一個最低的位置(即目標函數(shù)的最小值)。然而,這座山是如此陡峭,以至于我們無法一眼就看到最低點在哪里。因此,我們需要借助一些工具來幫助我們找到這個位置。

最開始,我們需要確定一個初始位置,這個初始位置可以是一個隨機選擇的值,也可以是之前的迭代結果。然后,我們需要開始攀登。在每一步攀登中,我們都會測量當前的海拔高度,這就是我們計算目標函數(shù)值的過程。

接下來,我們需要判斷當前的位置是否已經(jīng)足夠接近最低點。為了實現(xiàn)這一點,我們需要觀察并測量當前位置附近的地形變化。在這座山的腳下到最高點之間,地形變化是逐漸減小的。

我們可以將這種地形變化稱為梯度。梯度的方向就是山坡最陡峭的地方,也就是我們下一步需要前進的方向。通過不斷地測量梯度并朝相反的方向前進,我們可以逐漸降低海拔高度,從而更接近最低點。

在爬山過程中,我們還需要考慮一個重要的因素:步長。

步長過大可能導致我們跳過最低點,步長過小則可能導致我們陷入局部最低點而無法到達全局最低點。

因此,在梯度下降法中,我們需要根據(jù)實際情況調整步長大小,以便更快地找到目標函數(shù)的最小值。

以登山為例,梯度下降法就像是一場尋找最低點的攀登之旅。通過測量梯度并沿著梯度的負方向前進,我們可以逐步降低目標函數(shù)值,最終找到全局最優(yōu)解。

此刻,我們再來試著回答這個問題:梯度是如何更新權重和偏置的?

我們可以先定義一個損失函數(shù),這個函數(shù)用于衡量神經(jīng)網(wǎng)絡預測結果與真實結果之間的差距,就像剛開始找山峰的初始點。然后,我們通過反向傳播算法計算出損失函數(shù)對每個權重和偏置的梯度。

接下來,需要設定一個學習率,這個學習率決定了我們每次更新參數(shù)時移動的步長。一般來說,學習率不能設置得太大,否則可能會導致算法在最小值點附近震蕩不前;也不能設置得太小,否則算法收斂速度會非常慢。

最后,我們就可以根據(jù)計算出的梯度和學習率來更新神經(jīng)網(wǎng)絡的權重和偏置了。

具體來說,對于每個權重和偏置,我們將其當前值減去學習率乘以對應的梯度,得到新的值。這樣,通過多次迭代,我們就能逐步找到使損失函數(shù)最小的參數(shù)值。

在這一系列的過程中,梯度便實現(xiàn)了對神經(jīng)網(wǎng)絡權重和偏置的優(yōu)化。而反向傳播算法也因借助梯度的幫助,減少了神經(jīng)網(wǎng)絡模型對預測結果的誤差。

最終,我們從表象結果看來,AI的模型經(jīng)過訓練優(yōu)化后,預測的準確率變得越來越高。

五、神經(jīng)網(wǎng)絡的數(shù)據(jù)擬合問題

有時, 反向傳播在使神經(jīng)網(wǎng)絡適合于某些數(shù)據(jù)方面做得太好了, 在大數(shù)據(jù)集中產(chǎn)生了很多巧合的關系,這些關系可能并不是真實世界中的因果關系,而是由于數(shù)據(jù)集的特點或者訓練過程中的隨機性所導致的。

比如,“香蕉和火災”。根據(jù)數(shù)據(jù)顯示,當香蕉價格上漲時,火災的發(fā)生率也會隨之上升。

然而,這并不意味著香蕉和火災之間存在因果關系。實際上,這兩個事件之間并沒有必然的聯(lián)系。這就是一個典型的大數(shù)據(jù)中無因果關系但是數(shù)據(jù)顯示有關系的巧合例子。

所以,即使我們訓練出了AI模型,但結果并不一定如你所愿,搞不好還會鬧出笑話,我們還需要關注AI中的數(shù)據(jù)擬合問題。

數(shù)據(jù)擬合問題可以分為過擬合與欠擬合,每個問題的發(fā)生背后都有著不同的原因,也需要不同的解決方法。

當然,關于數(shù)據(jù)擬合問題也可以有其他不同的分類,本文主要還是就過擬合與欠擬合展開介紹。

1. 過擬合(Overfitting)

過擬合是指模型在訓練數(shù)據(jù)上表現(xiàn)得非常好,但是在新的、未見過的數(shù)據(jù)上表現(xiàn)不佳。

這通常是因為模型過于復雜,學習到了訓練數(shù)據(jù)中的噪聲和不具代表性的特征,過于依賴訓練數(shù)據(jù)中的細節(jié),忽略了數(shù)據(jù)的一般規(guī)律。

為了更好理解過擬合問題在實際應用中的影響,假設我們用一個數(shù)學模型來預測學生的成績。

在數(shù)據(jù)訓練中,我們可以從歷史數(shù)據(jù)中發(fā)現(xiàn),學生的身高和成績之間存在一定的正相關關系。于是我們訓練了一個簡單的線性回歸模型,將身高作為自變量,成績作為因變量。經(jīng)過訓練,我們發(fā)現(xiàn)這個模型在訓練集上的表現(xiàn)非常出色,預測成績與實際成績高度一致。

但有基本常識的我們即使不預測數(shù)據(jù)都會知道,學生的成績和身高之間并不會產(chǎn)生直接的相關關系。所以,當我們將這個模型應用到新的學生數(shù)據(jù)上時,會發(fā)現(xiàn)預測的準確性大幅下降,甚至可能出現(xiàn)完全錯誤的預測。

在這個例子中,我們的線性回歸模型可能過于復雜,過分強調了身高對學生成績的影響,而忽略了其他潛在的影響因素,如學習態(tài)度、努力程度等。

因此,當面對新的學生數(shù)據(jù)時,由于這些數(shù)據(jù)中可能包含與訓練數(shù)據(jù)不同的特征分布,模型的預測性能就大打折扣。所以,我們在數(shù)據(jù)訓練的過程中,需要識別數(shù)據(jù)是否過擬合,來避免后續(xù)問題。

為了識別過擬合現(xiàn)象,我們通常會將數(shù)據(jù)集分為訓練集、驗證集和測試集。

訓練集用于訓練模型,驗證集用于調整模型參數(shù)以獲得最佳的性能,而測試集則用于評估模型在未知數(shù)據(jù)上的表現(xiàn)。通過對比模型在這三個數(shù)據(jù)集上的表現(xiàn),我們可以判斷模型是否存在過擬合問題。

那么,出現(xiàn)了過擬合問題時,我們該如何解決呢?

為了解決過擬合問題,我們可以增加數(shù)據(jù)量、簡化模型、正則化或交叉驗證等方法來解決。

【增加數(shù)據(jù)量】

顧名思義就是引入更多的數(shù)據(jù),幫助模型更好地捕捉到潛在的模式,從而減少過擬合的風險。然而,在實際應用中,獲取大量高質量數(shù)據(jù)可能會有一些不現(xiàn)實。

【簡化模型】

就是選擇較少的參數(shù)或者較簡單的模型結構來減小模型復雜度,例如減少神經(jīng)網(wǎng)絡中的隱藏層的數(shù)量或節(jié)點數(shù)。這個辦法可以降低模型對訓練數(shù)據(jù)的依賴,從而減少過擬合的風險。但是,過于簡化的模型可能會損失一些有用的信息,影響模型的性能。

【正則化】

正則化是通過向模型的損失函數(shù)添加額外的項,來限制模型參數(shù)的大小,防止其過度膨脹。常用的正則化技術包括L1正則化和L2正則化。L1正則化傾向于使一些參數(shù)變?yōu)榱?,從而實現(xiàn)特征選擇。而L2正則化通過懲罰參數(shù)的平方值,使得參數(shù)變得更為均勻。正則化可以幫助我們在保持模型性能的同時,降低過擬合的風險。

【交叉驗證】

交叉驗證是一種評估模型泛化能力的有效方法。它將數(shù)據(jù)集劃分為多個子集,然后使用不同的子集進行訓練和驗證,最后將各個子集的結果綜合起來得到最終的評估指標。交叉驗證可以幫助我們發(fā)現(xiàn)過擬合問題,并選擇合適的模型參數(shù)。

2.欠擬合(Underfitting)

欠擬合是指神經(jīng)網(wǎng)絡在訓練數(shù)據(jù)和新數(shù)據(jù)上都表現(xiàn)不佳的現(xiàn)象。這通常是因為模型過于簡單,無法捕捉到數(shù)據(jù)中的關鍵特征和規(guī)律。

例如,如果我們使用一個只有一層的神經(jīng)網(wǎng)絡來擬合復雜的非線性關系,那么模型很可能無法準確地捕捉到數(shù)據(jù)中的模式,導致訓練和測試效果都不理想。就像一個小學生去解大學微積分的題目,大概率是給不出正確答案的。

我們繼續(xù)以預測學生成績?yōu)槔?,來具體解釋一下欠擬合現(xiàn)象。

假設我們有一份學生的成績數(shù)據(jù)集,但是這次我們的模型過于簡單,只考慮了學習時間,而沒有考慮其他可能影響成績的因素,例如學生的先前知識水平、家庭背景、課程難度、考試形式等。

那么我們的模型就可能會出現(xiàn)數(shù)據(jù)欠擬合的問題,那么我們就無法僅僅通過學習時間,來準確預測學生成績。

我們在數(shù)據(jù)訓練的過程中,又該如何識別數(shù)據(jù)欠擬合?其實,欠擬合的主要表現(xiàn)包括高偏差和低方差。

【高偏差】

欠擬合模型的預測結果與真實值之間存在較大的差距,即模型無法準確地估計出數(shù)據(jù)的均值。這通常是由于模型過于簡單,無法捕捉到數(shù)據(jù)中的復雜關系所導致的。

例如,在回歸問題中,如果采用線性回歸模型來處理非線性關系的數(shù)據(jù),那么模型就無法準確地描述這種關系,從而導致預測結果偏離實際值。

【低方差】

欠擬合模型對訓練數(shù)據(jù)的誤差較小,但在測試數(shù)據(jù)上的誤差較大。這是因為欠擬合模型過于簡單,不能很好地泛化到新的數(shù)據(jù)上。換句話說,雖然欠擬合模型在訓練數(shù)據(jù)上的表現(xiàn)不錯,但在未知數(shù)據(jù)上可能表現(xiàn)得非常糟糕。

我們再深挖一點,為什么會出現(xiàn)欠擬合問題?

欠擬合問題產(chǎn)生的原因也有多種,通常發(fā)生在以下情況:

  • 模型復雜度不足: 使用過于簡單的模型,例如線性模型去擬合非線性關系的數(shù)據(jù)。
  • 特征不足: 數(shù)據(jù)中的重要特征未被考慮,導致模型無法準確地預測目標變量。
  • 訓練不足:模型在訓練集上沒有足夠的迭代學習,未能很好地適應數(shù)據(jù)。
  • 噪聲干擾: 數(shù)據(jù)中的噪聲干擾過大,模型過于敏感,難以區(qū)分真實信號和噪聲。
  • 樣本量不足: 訓練數(shù)據(jù)量過小,難以捕捉整體數(shù)據(jù)分布。

欠擬合是我們在訓練數(shù)據(jù)時,必須要關注的問題,因為它可能導致模型在實際應用中的性能不佳,到最后讓團隊之前的努力付諸東流。

那么,出現(xiàn)了欠擬合問題時,我們該如何解決呢?

當我們知道欠擬合問題的原因之后,解決該問題的關鍵是增加模型的復雜性,以便計算機更好地捕捉數(shù)據(jù)中的關系和特征。同時,還需要注意避免過擬合,以免過度復雜導致泛化性能下降。

為了解決欠擬合問題,我們可以通過增加模型復雜度、增加更多的特征、降低正則化參數(shù)或增加訓練數(shù)據(jù)等方法來解決。

【增加模型復雜度】

如果模型過于簡單,無法捕捉數(shù)據(jù)中的復雜模式,可以考慮使用更復雜的模型,如增加更多的層或節(jié)點,引入更多的特征或改變模型的結構,使其能夠更好地捕捉數(shù)據(jù)中的復雜關系。例如,可以嘗試使用多項式回歸、支持向量機等更復雜的模型來解決非線性問題,或者在神經(jīng)網(wǎng)絡中,增加隱藏層的數(shù)量或節(jié)點的數(shù)量。

【增加更多的特征】

我們可以通過增加更多的特征來使模型變得更加復雜,從而更好地擬合數(shù)據(jù)。這些特征可以是現(xiàn)有的特征的線性或非線性組合,也可以是新的、從其他數(shù)據(jù)源得到的特征。在學生考試成績的例子中,可以考慮加入更多可能影響成績的因素,如家庭背景、學生興趣等。

【降低正則化參數(shù)】

正則化是一種防止過擬合的方法,但在某些情況下,過度的正則化可能導致欠擬合。因此,可以適當降低正則化參數(shù),以允許模型更靈活地適應訓練數(shù)據(jù)。

【增加訓練數(shù)據(jù)】

欠擬合通常與訓練數(shù)據(jù)量不足有關。通過收集更多的訓練數(shù)據(jù),可以提高模型的學習能力和泛化能力,從而減輕欠擬合現(xiàn)象。

所以,當我們知道了如何通過數(shù)據(jù)來訓練神經(jīng)網(wǎng)絡之后,還需要關注在訓練過程中出現(xiàn)的數(shù)據(jù)擬合問題,也可以理解成AI訓練中也需要過程監(jiān)督吧。

當我們發(fā)現(xiàn)數(shù)據(jù)過擬合時,需要借助增加數(shù)據(jù)量、簡化模型、正則化或交叉驗證等方法來解決。當我們發(fā)現(xiàn)數(shù)據(jù)欠擬合時,可以借助增加模型復雜度、增加更多的特征、降低正則化參數(shù)或增加訓練數(shù)據(jù)等方法來解決。

六、全文總結

如果你看到此處,足以說明你對AI也有著非一般的興趣和熱情,我在此送上真誠的感謝。如果你和我一樣,也對AI模型是如何訓練優(yōu)化的背后原理感興趣,相信這篇文章會給你帶來幫助。

在最后,我就本文做一個簡單的總結,如果你沒有第一時間全部理解,根據(jù)總結也可以帶走一些收獲。

神經(jīng)網(wǎng)絡是AI的核心,其真正發(fā)揮作用之前需要經(jīng)過充分的訓練。本文討論了對神經(jīng)網(wǎng)絡的訓練過程及相關優(yōu)化策略,并深入探討神經(jīng)網(wǎng)絡中的數(shù)據(jù)擬合問題。

與人類學習一樣,神經(jīng)網(wǎng)絡需要通過大量的數(shù)據(jù)輸入進行學習,以適應特定任務。在訓練的過程中,我們以線性回歸為例,通過優(yōu)化策略來提高模型的性能。

在訓練優(yōu)化過程中,我們使用損失函數(shù)來表示模型的預測與實際結果之間的誤差。這個誤差越小,模型的性能就越好。通過調整模型的參數(shù),我們試圖最小化損失函數(shù),使得模型的預測更加準確。

損失函數(shù)的引入使得我們能夠量化模型的誤差,從而為優(yōu)化提供方向。通過梯度下降等方法,我們可以找到使損失函數(shù)最小化的參數(shù)值,進而提高模型的準確性。這一過程中,反向傳播起到了關鍵作用。

反向傳播通過計算損失函數(shù)對模型參數(shù)的梯度,實現(xiàn)了誤差的反向傳遞。這意味著我們可以根據(jù)誤差的方向來更新模型的參數(shù),使得模型逐漸趨向最優(yōu)。

然而,即使經(jīng)過精心的訓練,神經(jīng)網(wǎng)絡在處理數(shù)據(jù)時仍然可能面臨擬合問題。數(shù)據(jù)擬合問題表現(xiàn)為過擬合和欠擬合,面對不同的問題,我們也需要有不同的解決方法。

神經(jīng)網(wǎng)絡的訓練過程是一個復雜而精細的過程,通過本篇,希望各位看官可以理解和巧妙運用這些概念和方法,也可以更好地利用神經(jīng)網(wǎng)絡來解決實際問題。

《孫子·謀攻篇》有云,“知彼知己,百戰(zhàn)不殆;不知彼而知己,一勝一負;不知彼不知己,每戰(zhàn)必殆?!?/p>

知是成事的前提。在此引用,不是要把AI當作敵人,而是要知AI,懂AI,而后才能有效和AI共處,在AI的助力下做出更有價值的事情。

我們都是浩瀚星河中的一粒,在AI的浪潮中簇擁著前行。AI到底是什么,是我們必須要弄清楚的課題。

本文由 @果釀 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉載。

題圖來自 Unsplash,基于CC0協(xié)議。

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!