網絡訓練過程中:學習率/lr、損失函數的系數/lossCoeff、訓練代數/epoch,與模型收斂之間的關系


  • 在epoch超過閾值的前提下,\(lr*lossCoeff*epoch\)的值也超過一定的閾值,才能使得訓練結束后模型收斂。
from tqdm import tqdm

data1 = torch.nn.Parameter(torch.randn(3, 2048))
data2 = torch.ones(3, 2048)

epoch = 150
lr = 1
lossCoeff = 10

for i in tqdm(range(epoch)):
    try:
        data1.grad.zero_()
    except:
        pass
    loss = torch.nn.PairwiseDistance(p=2)(data1, data2).mean()*lossCoeff
    loss.backward()
    # print(data1.grad)
    data1 = torch.nn.Parameter(data1 - lr*data1.grad)

print(data1)
print(data2)
  • 在上面這個例子中,滿足\(epoch\geq150\)的前提,\(epoch*lr*lossCoeff=1500\)都可以滿足最終data1的值≈1。
  • 一定范圍內,epoch的值越大,lr和lossCoeff越小,data1的值與1越接近。(比如\(epoch=150000,lr=0.1,lossCoeff=0.1\)
  • 這也揭示了損失函數比較復雜時,為損失函數不同部分添加不同系數的意義:在epoch、lr一定的情況下,不同部分損失函數所對應網絡結構的優化難易程度並不相同(例如體現在反向傳遞過程中梯度數量級的不同);為了保證訓練結束后損失函數的不同部分所對應的網絡結構都達到較為理想的訓練效果,需要為難以優化的部分添加較大的系數以增大梯度,加速收斂(意義就在於控制網絡不同部分的收斂速度,使得各部分能夠分別以最合適的速度優化)
  • 分布差異一般較難優化,並且數據維度越高越難以優化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM