کتابخانه‌ی استاندارد · یادگیری ماشین

بهینه‌سازی optim

بهینه‌سازهای شبکه‌ی عصبی: SGD، آدام، RMSProp و زمان‌بندی نرخ یادگیری.

واردسازی بهینه‌سازی
در این صفحه
  1. گونه‌ها
  2. روال‌ها

بهینه‌ساز پارامترهای مدل را با گرادیان‌ها به‌روز می‌کند. حلقه‌ی آموزش همیشه این شکل را دارد: نوار مشتق‌گیری خودکار را بازنشانی کنید، گرادیان‌های مخزن پارامتر را صفر کنید، زیان را حساب کنید، پس‌انتشار را صدا بزنید و سپس گام بهینه‌ساز را.

روال‌های نرخ ... نرخ یادگیری را برای هر گام حساب می‌کنند؛ آن را پیش از گام در فیلد lr بهینه‌ساز بگذارید.

گونه‌ها

آدام Adam

ساختار آدام
بهینه‌ساز آدام؛ برای بیشتر شبکه‌ها انتخاب پیش‌فرض خوبی است.
نامانگلیسیگونهتوضیح
lrlrاعشار۶۴ = 0.001نرخ یادگیری.
beta1beta1اعشار۶۴ = 0.9ضریب میانگین گرادیان.
beta2beta2اعشار۶۴ = 0.999ضریب میانگین مربع گرادیان.
epsepsاعشار۶۴ = 1e-08عدد کوچک برای جلوگیری از تقسیم بر صفر.
weight_decayweight_decayاعشار۶۴ = 0کاهش وزن.
decoupleddecoupledمنطقی = نادرستکاهش وزن جدا از گرادیان اعمال شود، یعنی AdamW.
optim-Train.salam
واردسازی بهینه‌سازی
واردسازی شبکه عصبی
واردسازی مشتق‌گیری خودکار
واردسازی تانسور

روال آموزش(روش: صحیح، گام‌ها: صحیح، هدف &: تانسور.تانسور): اعشار۶۴:
    ناپایا مخزن := شبکه عصبی.مخزن پارامتر {}
    دستگیره := مخزن.افزودن("w"، تانسور.صفرها یک(۴))
    ناپایا آدام := بهینه‌سازی.آدام { lr = ۰.۱ }
    ناپایا آدام دبلیو := بهینه‌سازی.آدام دابلیو جدید(۰.۱، ۰.۰۱)
    ناپایا آر ام اس := بهینه‌سازی.آر ام اس پراپ { lr = ۰.۰۵ }
    ناپایا اس جی دی := بهینه‌سازی.گرادیان کاهشی تصادفی { lr = ۰.۰۵، momentum = ۰.۹ }
    ناپایا نوار := مشتق‌گیری خودکار.نوار جدید(۱)
    تکرار گام‌ها:
        نوار.بازنشانی()
        مخزن.صفر کردن گرادیان()
        و۱ := شبکه عصبی.پیوند(نوار، مخزن، دستگیره)
        ه := مشتق‌گیری خودکار.ورودی(نوار، هدف)
        زیان := مشتق‌گیری خودکار.مجموع(نوار، مشتق‌گیری خودکار.مربع(نوار، مشتق‌گیری خودکار.تفریق(نوار، و۱، ه)))
        مشتق‌گیری خودکار.پس‌انتشار(نوار، زیان)
        _ := بهینه‌سازی.برش نُرم گرادیان(مخزن، ۱۰.۰)
        بهینه‌سازی.برش مقدار گرادیان(مخزن، ۵.۰)
        اگر روش == ۰:
            آدام.گام(مخزن)
        وگرنه روش == ۱:
            آدام دبلیو.گام(مخزن)
        وگرنه روش == ۲:
            آر ام اس.گام(مخزن)
        وگرنه:
            اس جی دی.گام(مخزن)
        پایان
    پایان
    ناپایا پ := مخزن.عنصر(دستگیره)
    نتیجه := پ.value.عنصر(۳)
    نوار.آزادسازی()
    آدام.آزادسازی()
    آدام دبلیو.آزادسازی()
    آر ام اس.آزادسازی()
    اس جی دی.آزادسازی()
    مخزن.آزادسازی()
    برگشت نتیجه
پایان

روال ریشه:
    ناپایا هدف := تانسور.بازه گام(۴)
    هر روش در [۰، ۱، ۲، ۳]:
        گرد := (آموزش(روش، ۴۰۰، هدف) * ۱۰۰.۰ + ۰.۵) برگردان صحیح
        سرچاپ روش، گرد
    پایان
    تانسور.آزادسازی(هدف)
    سرچاپ بهینه‌سازی.نرخ پله‌ای(۱.۰، ۲۵، ۱۰، ۰.۵)، بهینه‌سازی.نرخ کسینوسی(۱.۰، ۵۰، ۱۰۰، ۰.۰)، بهینه‌سازی.گرمایش سپس کسینوس(۱.۰، ۰، ۱۰، ۱۱۰، ۰.۰)
پایان
خروجی0 300 1 299 2 300 3 300 0.25 0.5 0.1

گام step

روال گام(ps &: nn.ParamStore)
یک گام به‌روزرسانی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

آزادسازی free

روال آزادسازی()
حالت داخلی را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

آر ام اس پراپ RMSProp

ساختار آر ام اس پراپ
بهینه‌ساز RMSProp.
نامانگلیسیگونهتوضیح
lrlrاعشار۶۴ = 0.01نرخ یادگیری.
alphaalphaاعشار۶۴ = 0.99ضریب میانگین مربع گرادیان.
epsepsاعشار۶۴ = 1e-08عدد کوچک برای جلوگیری از تقسیم بر صفر.
weight_decayweight_decayاعشار۶۴ = 0کاهش وزن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

گام step

روال گام(ps &: nn.ParamStore)
یک گام به‌روزرسانی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

آزادسازی free

روال آزادسازی()
حالت داخلی را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

گرادیان کاهشی تصادفی SGD

ساختار گرادیان کاهشی تصادفی
گرادیان کاهشی تصادفی، با تکانه و نستروف اختیاری.
نامانگلیسیگونهتوضیح
lrlrاعشار۶۴ = 0.01نرخ یادگیری.
momentummomentumاعشار۶۴ = 0تکانه؛ صفر یعنی بدون تکانه.
weight_decayweight_decayاعشار۶۴ = 0کاهش وزن، یعنی جریمه‌ی L2.
nesterovnesterovمنطقی = نادرستتکانه‌ی نستروف.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

گام step

روال گام(ps &: nn.ParamStore)
یک گام به‌روزرسانی روی همه‌ی پارامترهای مخزن با گرادیان‌های جاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

آزادسازی free

روال آزادسازی()
حالت داخلی را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

روال‌ها

آدام دابلیو جدید NewAdamW

روال آدام دابلیو جدید(lr: اعشار۶۴، weight_decay: اعشار۶۴): آدام
آدام با کاهش وزن جدا، یعنی AdamW.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

برش نُرم گرادیان ClipGradNorm

روال برش نُرم گرادیان(ps &: nn.ParamStore، max_norm: اعشار۶۴): اعشار۶۴
گرادیان‌ها را طوری کوچک می‌کند که نرم کل از حد بیشتر نشود و نرم پیش از برش را برمی‌گرداند؛ جلوی انفجار گرادیان را می‌گیرد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

برش مقدار گرادیان ClipGradValue

روال برش مقدار گرادیان(ps &: nn.ParamStore، limit: اعشار۶۴)
هر گرادیان را به بازه‌ی منفی حد تا حد محدود می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

نرخ پله‌ای StepLR

روال نرخ پله‌ای(base: اعشار۶۴، step: صحیح۶۴، every: صحیح۶۴، gamma: اعشار۶۴): اعشار۶۴
نرخ یادگیری پله‌ای: هر چند گام در ضریب gamma ضرب می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

نرخ کسینوسی CosineLR

روال نرخ کسینوسی(base: اعشار۶۴، step: صحیح۶۴، total: صحیح۶۴، min_lr: اعشار۶۴): اعشار۶۴
نرخ یادگیری کسینوسی: از نرخ پایه تا کمینه به شکل نیم‌موج کسینوس کم می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam

گرمایش سپس کسینوس WarmupCosine

روال گرمایش سپس کسینوس(base: اعشار۶۴، step: صحیح۶۴، warmup: صحیح۶۴، total: صحیح۶۴، min_lr: اعشار۶۴): اعشار۶۴
گرمایش خطی در گام‌های نخست، سپس کاهش کسینوسی؛ برای آموزش ترنسفورمرها رایج است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam