日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大白话5分钟带你走进人工智能-第十节梯度下降之归一化的各种方式和必要性(5)...

發(fā)布時間:2025/5/22 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大白话5分钟带你走进人工智能-第十节梯度下降之归一化的各种方式和必要性(5)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

???????????????????????????????????????????????????????????? 第十節(jié)梯度下降之歸一化的各種方式和必要性(5)

上一節(jié)中我們講解了梯度下降的函數(shù)最優(yōu)化算法和梯度下降代碼過程,了解了梯度下降的代碼實現(xiàn)過程,本節(jié)的話我們講解一個梯度下降之前必要的數(shù)據(jù)準備,歸一化。

先看一個例子,假如你收集到一個數(shù)據(jù)集,一列是年齡,一列是身高(厘米)。比如體重的數(shù)據(jù)都是60,65。身高的數(shù)據(jù)是180,185,你發(fā)現(xiàn)它的量綱遠遠大于age,這樣會導致什么?比如身高是W2,體重是W1,假如要根據(jù)這些數(shù)據(jù)預測壽命,比如結(jié)果是這樣的:

因為最后它們相乘相加等于你預測的年齡,那么對數(shù)據(jù)本身來說量綱比較小的數(shù)字,它會乘的W比較大一些。因為體重乘上比較小的數(shù)字w1+身高乘以比較大的數(shù)字w2,才能等于最后的年齡。這么想好像沒什么問題,相當于程序給我們把數(shù)據(jù)自動修正了,身高數(shù)據(jù)大,我就自動W小點,預測也不會出問題,雖然看起來沒問題,但它在梯度下降的效率上會導致一定的問題。會導致一個什么問題呢? 比如W2小,它越小,是不是越靈敏相當,那么W2動一點就會怎么樣?我們先看下上面數(shù)據(jù)訓練模型時如果不做歸一化的損失函數(shù)的等高線如圖:

?

等高線里面,每一個圓的損失函數(shù)是一樣的。在這個例子里面,你覺得θ1(即w1)和θ2(即w2),誰是age誰是height?實際上θ2是height,θ1是age,為什么?因為W2是不是小,你動一點點,損失函數(shù)會變化的很多,所以圖中θ2一點點變化,損失函數(shù)就會從一個圓變到另一個圓,所以θ2對應著身高前面的參數(shù)。那么這會導致什么問題?我們看下圖中的θ1(即w1)和θ2(即w2)的更新參數(shù):

??????????????????????????????????????????????????????????????? ?

??????????????????????????????????????????????????????????????

無論對于W1來說還是W2來說,前邊部分有區(qū)別嗎? 沒區(qū)別吧?那么體現(xiàn)在更新W1和W2的更新的不同,是Xj不同。在θ2的方向上,因為X2比較大,所以θ2方向每次加的都很大,而θ1方向每次加的又比較小,假如最開始在初始點那塊,θ2距離自己的終點也就是最后的最優(yōu)解的點其實很近,而θ1距離自己的終點很遠,按理說θ1應該趕緊緊跑兩步對不對?而現(xiàn)在變成了θ2在反復的震蕩,而θ1在不著急得一步一步走,這樣的話會導致你的計算效率變得特別慢。梯度下降的過程中,你想讓W2是不是每一步更新更加細致一點,更微小一點,更精準一點,讓W1每一步更大刀闊斧一點?所以如果量綱不一致,會導致本來需要一步一步慢慢走的這個維度W2,反倒震蕩的特別厲害。W1想讓它變化快一點,但X1比較小,會導致它下降的速度反倒慢了,適得其反。講到這里,有的人會說我調(diào)控每一步下降的中的α,也就是我們的λ,是不是可以控制下每次減的幅度?這里想讓大家想一個問題,λ是只有一個數(shù)還是說每個維度各有一個λ?如果每個維度各有一個λ就沒這問題了,你自己單獨的給它們調(diào)一下就行了,但是調(diào)參又變得復雜了,你有一千個維度,難道你還要手工設(shè)一千個λ,還要細致地調(diào)嗎?不現(xiàn)實。這數(shù)根源就是因為只有一個λ管著我所有的W,那么需要大的反倒小了,小的反倒大了。 所以我們怎么辦?

?

我們就需要對數(shù)據(jù)進行一個歸一化。比如我原來原始數(shù)據(jù)身高是180,170,160,150,我做一個最大最小值歸一化,最大最小值歸一化公式是:

??????????????????????????????????????????????????????

我用X減去最小的X,除以(最大的X,減去最小的X),假設(shè)這四個數(shù),180,170,160,150。那么此時180會變成什么?你們根據(jù)這算一下。180變成1了,150變成什么了?0了,中間是0到1的一些數(shù)相當于就把所有列,如果你都執(zhí)行這么一遍的話,是不是就變成了所有數(shù)都在0到1之間了。這樣他們的量綱就一樣了。這樣我們的損失函數(shù)就會從一個橢圓特別橢的圓變成一個比較圓的圓。如下面一樣:

?

因為各個維度的數(shù)值通過最大最小值歸一化之后會讓它兩邊的步伐速度是一致的,不會存在誰等誰的情況,所以損失函數(shù)等高線的圖就近似一個相對比較圓的圓。這樣會帶來更快的收斂步數(shù)和更快的收斂速度。除此之外,歸一化還有什么好處?對one-hot編碼來說,有的維度轉(zhuǎn)變成one-hot編碼,比如性別轉(zhuǎn)成one-hot之后男的是0-1 女的是1-0兩個維度標識性別,這樣相對公平,不至于男的性別是1 ,女的性別是0,這樣會給機器學習一種錯誤的輸入,男的比女的大的錯誤信息,因此需要轉(zhuǎn)成one-hot編碼。但假如有的沒轉(zhuǎn)成one-hot編碼,比如身高,沒轉(zhuǎn)one_hot編碼的這些維度如果經(jīng)過最大最小值歸一化都給它縮放到零和一之間后,這樣跟經(jīng)過one-hot編碼的那些維度的量綱也都一致了,在訓練模型的時候,經(jīng)過處理過的訓練集就是一堆你看不懂的數(shù)了,比如身高它就不再代表實際物理意義上的高度有多高了,但它是一個高度的評分,越近越1越代表你在這里邊越高。例如170和160,經(jīng)過最大值最小值歸一化之后,肯定170更接近數(shù)值1。

那么當預測一條新數(shù)據(jù)的時候,怎么預測? 你還能把原始數(shù)據(jù)直接丟進去算嗎?你是不是需要對新的數(shù)據(jù)要做最大最小值歸一化,用誰的最大值?誰的最小值?用你的訓練集中的最大值和訓練集中的最小值做歸一化,我們稱它為經(jīng)驗最大值和經(jīng)驗最小值。好在這些事情不需要你來手工處理,只要你把normalize=true,就可以了。

lin_reg = LinearRegression(normalize=True)

這一切的一切底層就幫你做好了。它做的不光是最大最小值歸一化,它還要做零均值化,它要把每一個X都減去這一列的平均值。為什么要這么做?比如看下面的例子:

?

假如你隨機到圖中這個點了,再接著往下,θ1需要增大減小?增大,對吧?θ2需要增大還是減小?減小。所以θ1需要增大,θ2需要減小,但θ1和θ2怎么算的?咱們看隨機梯度下降,對于θ1也好,θ2也好,,這一項都一樣,能影響它到底增大還是減小,是不是取決于它Xj? 所以對于θ1就把X1帶進去,對于θ2就把X2代進去。通常訓練集里的數(shù)據(jù)是不是都是正數(shù)?如果你不做零均值化的話,所有X都是正數(shù),是不是所有的θ要增都增要減都減。對于這個例子,要想走到最優(yōu)解,應該這樣走,如圖:

?

如果不去處理歸一化的話,這會只能θ1也增θ2也增,第一步θ2先少增一點,盡量等一下θ1,θ1多走點, 甚至走過θ1的最優(yōu)值,然后,θ1減,θ2也減才能走到最后最優(yōu)解的那個點,它不具備同時一個參數(shù)增另一個參數(shù)減的這么一個功能。但假如你對它做一個零均值化,比如第二列X2,1.8米,1.7米,1.6米,1.5米,都減去均值后,這就變成了+1.5,+0.5,-0.5,-1.5,這會X是不是就有正有負了?有正有負了之后,是不是它就有可能進行這種有的增有的減的這種下降?所以說normalize里面至少會同時做最大最小值歸一化來保證量綱一樣和零均值化讓所有的維度數(shù)值有大有小,這樣才能獲得更好的梯度下降效率。 如果你不做這些也能得到最優(yōu)解,就是人家走10步你可能走15步這么一個概念,它效率更低,做了這個能夠幫助你下降的更快,更好的找到這個結(jié)果。那么來一條新數(shù)據(jù),是不是也得減去平均值,減誰的平均值?減你訓練集里邊的算出來平均值,能理解嗎?這個也叫經(jīng)驗平均值。 經(jīng)驗平均值這個東西在深度學習里面一樣要這么處理。只要用到梯度下降,就都需要這么處理。只要有梯度下降,均值歸一化是必須的,沒有均值歸一化的話,它下降速率一定會慢好多,因為它老要走曲折的彎路。

對于有些算法,還會使用方差均值標準化來調(diào)整數(shù)據(jù)使模型訓練擁有更好的性能。即:

??????????????????????????????????????????????????????????????????????????????

所以歸一化方式是進行模型訓練前的必要步驟,也是數(shù)據(jù)處理的關(guān)鍵步驟。聊了這么多梯度下降的邏輯和過程,有沒有對其底層原理感興趣,所以下一節(jié)我們將講解梯度下降的底層原理。

轉(zhuǎn)載于:https://www.cnblogs.com/LHWorldBlog/p/10694479.html

總結(jié)

以上是生活随笔為你收集整理的大白话5分钟带你走进人工智能-第十节梯度下降之归一化的各种方式和必要性(5)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。