自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

什么是超參數(shù)?大模型的超參數(shù)是做什么用的?超參數(shù)和大模型參數(shù)有什么關(guān)系? 原創(chuàng)

發(fā)布于 2024-7-3 06:01
瀏覽
0收藏

“ 超參數(shù)是指由開發(fā)者設(shè)置的參數(shù),而不是由模型訓練得到的參數(shù)”

對了解過機器學習模型的人來說,應該都知道模型訓練的過程就是不斷調(diào)整模型參數(shù)的過程。調(diào)整方式就是通過正反向傳播以及損失差的計算和優(yōu)化器對參數(shù)進行調(diào)整,不懂得可以看一下文章大模型的參數(shù)什么。

而超參數(shù)又是什么呢?今天就來介紹一下超參數(shù)。

01、什么是超參數(shù)?

用一句話來說,超參數(shù)就是模型開發(fā)者設(shè)置的參數(shù),而不是由模型通過訓練學習到的參數(shù)。

怎么理解這句話呢?

先來說一下模型的參數(shù),現(xiàn)在說大模型都是有多少多少參數(shù),比如chatGLM-6B就是具有六十多億參數(shù)的模型,而chatGPT4傳說有一百多萬億個參數(shù)。

而我們平常說的大模型的大就是指參數(shù)量大,從實驗結(jié)果來看參數(shù)量越大效果越好。因此,現(xiàn)在很多大企業(yè)開發(fā)大模型都在追求大參數(shù)量模型。比如,openAI,谷歌,meta和國內(nèi)的阿里,百度等企業(yè)。

什么是超參數(shù)?大模型的超參數(shù)是做什么用的?超參數(shù)和大模型參數(shù)有什么關(guān)系? -AI.x社區(qū)

而模型參數(shù)指的是神經(jīng)網(wǎng)絡的參數(shù),是可以通過訓練數(shù)據(jù)訓練調(diào)整的參數(shù),最典型的兩個就是權(quán)重(W)和偏置(B),這些參數(shù)值剛開始是隨機初始化,然后通過訓練數(shù)據(jù)不斷的調(diào)整,最后獲得一個最優(yōu)解。

那超參數(shù)又是什么?

現(xiàn)在再來看開頭那句話應該就明白了,模型參數(shù)是可以訓練得到的;但有些參數(shù)是需要開發(fā)者設(shè)定的,然后又不能通過訓練獲得,這部分參數(shù)就是超參數(shù),超也可以理解為人為設(shè)置的意思。

什么是超參數(shù)?大模型的超參數(shù)是做什么用的?超參數(shù)和大模型參數(shù)有什么關(guān)系? -AI.x社區(qū)

超參數(shù)有哪些?

超參數(shù)其實也有很多,根據(jù)不同的模型架構(gòu)設(shè)計,超參數(shù)也會有所不同;但常見的超參數(shù)有訓練次數(shù)(epochs),批次大小(batch_size),學習率(lr),隱藏層數(shù)量和大小(隱藏層數(shù)量是指神經(jīng)網(wǎng)絡的層數(shù),大小是指每層神經(jīng)網(wǎng)絡的神經(jīng)元數(shù)量,具體可以看神經(jīng)網(wǎng)絡內(nèi)部原理解析),損失函數(shù),優(yōu)化器,以及正則化參數(shù),丟棄率等都屬于超參數(shù)。

02、超參數(shù)的作用是什么?

前面介紹了超參數(shù)以及常見的超參數(shù),這里就來介紹一下超參數(shù)的作用。

簡單來說,超參數(shù)的作用就是怎么訓練模型,以及怎么把模型訓練的更好,具體來說就是模型的性能和泛化能力。

什么是超參數(shù)?大模型的超參數(shù)是做什么用的?超參數(shù)和大模型參數(shù)有什么關(guān)系? -AI.x社區(qū)

就拿訓練次數(shù)——epochs來說,這個參數(shù)的作用是模型在當前數(shù)據(jù)集上訓練多少次。

舉例來說,我們上學時一章新內(nèi)容或題目,老師基本上都會講好幾遍,這個好幾遍就是epochs。epochs具體的值根據(jù)不同的網(wǎng)絡模型,以及訓練數(shù)據(jù)會有所不同,大部分都是在10到幾百之間。

而批次大小參數(shù)——batch_size的作用就是,訓練時每次加載多少數(shù)據(jù),一般是8的倍數(shù)。batch_size值越大,訓練的批次數(shù)越少,梯度下降越快,但對硬件要求會更高,誤差也可能會更大。

模型訓練代碼,超參數(shù)設(shè)置簡略代碼

# 設(shè)置訓練網(wǎng)絡的參數(shù)

# 記錄訓練次數(shù)
total_train_step = 0

# 記錄測試次數(shù)
total_test_step = 0

# 訓練的輪數(shù)
epoch = 10

for i in range(epoch):
    print("第{}輪訓練開始".format(i+1))
    for data in train_dataloader:
        # 獲取訓練數(shù)據(jù)和標簽
        imgs, targets = data

        # 神經(jīng)網(wǎng)絡對數(shù)據(jù)進行處理
        outputs = myNn(imgs)

        # 計算損失值 監(jiān)督學習 使用神經(jīng)網(wǎng)絡處理結(jié)果與標簽做對比,計算損失差
        loss = loss_fn(outputs, targets)

        optimizer.zero_grad()

        # 反向傳播
        loss.backward()
        # 優(yōu)化器優(yōu)化
        optimizer.step()

        total_train_step = total_train_step + 1
        print("訓練次數(shù): {}, Loss: {}".format(total_train_step, loss))

學習率——lr是更新權(quán)重時的步長,它影響著目標函數(shù)是否能收斂到局部最小;學習率大可能會導致?lián)p失震蕩,甚至是無法擬合。

而學習率太小又可能會導致過擬合,收斂速度過慢的問題。所謂的震蕩就是損失函數(shù)的值可能不是慢慢減小,而是一會大一會小。

假如你在訓練的時候發(fā)現(xiàn)損失值出現(xiàn)這種現(xiàn)象,那么就是學習率設(shè)置有問題。

一般情況下,學習率都是設(shè)置一個動態(tài)值,比如訓練開始時學習率比較大,隨著訓練慢慢減小。

而隱藏層的數(shù)量和大小,代表著神經(jīng)網(wǎng)絡的抽象能力,越多的層數(shù)和神經(jīng)元就能表征更復雜的場景,但過多的隱藏層也會導致神經(jīng)元過于復雜以及過擬合的問題。

損失函數(shù)和優(yōu)化器又會影響到模型訓練的結(jié)果以及優(yōu)化效果。

因此,超參數(shù)也需要根據(jù)不同的模型架構(gòu)設(shè)計一個合理的參數(shù)值,并且在合適的時機進行適當?shù)恼{(diào)整。


本文轉(zhuǎn)載自公眾號AI探索時代 作者:DFires

原文鏈接:??https://mp.weixin.qq.com/s/EqmK4cxR76dkVm3xGPOg_g??



?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關(guān)推薦