Gradient Descent Optimizer խորը ուսուցման մեջ

Այսպիսով, սա ամեն ինչ վերաբերում է գրադիենտ իջնելուն պարզ բառերով, առանց որևէ լրացուցիչ թույլտվության խորանալու Գրադիենտ ծագում հասկացության մեջ:

Ի՞նչ է գրադիենտ ծագումը:

Gradient Descent-ը օպտիմիզացնող տեխնիկա է, որն օգտագործվում է նվազագույնի հասցնելու կորստի գործառույթը

Հիմնականում և՛ մեքենայական ուսուցման, և՛ խորը ուսուցման մեջ մենք փորձում ենք ինչ-որ բան կանխատեսել, և ակնհայտ է, որ մենք որոշակի սխալ կունենանք, մինչ մենք կանխատեսում ենք: Gradient Descent-ը մեթոդ է, որն օգնում է մեզ նվազեցնել այդ սխալը խորը ուսուցման կշիռները թարմացնելու կամ ասենք մեքենայական ուսուցման գործակիցի արժեքը թարմացնելու միջոցով:

Վերոնշյալ պատկերում մենք տեսնում ենք, որ քաշի թարմացումը կօգնի մեզ նվազեցնել կորուստը: Այսպիսով, այս պատմության մեջ ես կենտրոնանում եմ Gradient decent-ի թեման հասկանալու վրա, այնքան շատ պատմություններ կան, որոնք մատչելի են մեքենայական ուսուցման համար գրադիենտ պարկեշտության համար: Մեկի համար ստորև հղում եմ թողնում:



Բայց այստեղ ես փորձում եմ դա բացատրել Deep Learning-ում: Այո, ճիշտ է, Deep Learning-ում կա պարամետր, որը կոչվում է օպտիմիզատոր, մինչդեռ մենք կազմում ենք մեր մոդելը, որը ոչ այլ ինչ է, քան այն պարամետրը, որն օգնում է մեզ նվազեցնել սխալը կամ ասել Loss:

Խորը ուսուցման մեջ հասանելի են օպտիմիզատորների ցանկը, և, որպես կանոն, ամենից հաճախ օգտագործվող օպտիմիզատորը «adam»-ն է, որը նույնպես առաջացել է գրադիենտից: այնպես որ, գրադիենտ պարամետրը այնքան էլ չի օգտագործվում որպես պարամետր, փոխարենը այն հիմնականն է մյուս բոլորը հասկանալու համար:

Այժմ, սկսած օպտիմիզատորներից, երբ մեր կանխատեսված արժեքը հավասար չէ իրական արժեքին, դա այն սխալն է, որն օգտագործում է օպտիմիզատորը՝ անցնելու հետին տարածման մաս՝ թարմացնելու ցանցի յուրաքանչյուր շերտում մուտքային արժեքների կշիռները՝ նվազեցնելու համար: այն սխալը, որը մենք ստացել ենք ավելի վաղ յուրաքանչյուր դարաշրջանում կամ ասում ենք, մինչև կանխատեսված արժեքը հավասարվի իրական արժեքին կամ ասենք սխալ = 0:

Տեսնենք օրինակով..

Ենթադրենք, որ մենք ունենք տվյալների 1000 տող, և դրանք որպես մուտքագրվում են մուտքային շերտում, որը շարժվում է դեպի ցանցի թաքնված շերտերը և վերջապես մեզ տալիս է այն ելքը, որի միջոցով մենք հաշվարկում ենք կորուստը կամ սխալը՝ օգտագործելով կորստի ֆունկցիան, որը հավասար չի լինի: մինչև զրոյի: Այժմ այստեղ է գալիս Gradient Descent-ը, Gradient Descent-ը հաշվարկում է կորուստը բոլոր 1000 գրառումների համար և թարմացնում կշիռները՝ օգտագործելով Backpropagation-ը և նորից կրկնում է բոլոր քայլերը, մինչև կորուստը կամ սխալը հավասարվի զրոյի:

Եվ Gradient Descent-ի, Stochastic Gradient Descent-ի և Mini Batch Gradient Descent-ի միջև հիմնական տարբերությունն այն գրառումների չափն է, որով նա հաշվարկում է կորուստը և սկսում է կատարել օպտիմալացում և հետտարածում այդ գրառումների համար:

Օրինակ, մեր դեպքում, երբ Gradient Descent-ը օգտագործում է բոլոր 1000 գրառումների (տողերի) գումարումը կորուստը հաշվարկելու համար: որտեղ, ինչպես SGD-ում, այն օգտագործում է մեկ և մյուս ռեկորդը և հասնում է 1000-ի, իսկ մինի խմբաքանակում օգտագործում է Batch Size, ասենք 100, նախ հաշվարկում է կորուստը, կատարում է օպտիմալացման և ետ տարածման մասը և թարմացնում է կշիռները այս 100-ի համար և անցնում հաջորդ խմբաքանակին: 100-ից։

Այսպիսով, վերը նշվածից մենք կունենանք այնպիսի հարց, ինչպիսին է, թե ինչպես են թարմացվում կշիռները:

Դա արվում է օգտագործելով տեխնիկան, որը կոչվում է Backpropagation, և որը պրակտիկանտն օգտագործում է շղթայի կանոն՝ հաշվարկելու կորստի ածանցյալները Քաշի նկատմամբ:

Ինչպես նշվեց վերևում, մենք կարող ենք հաշվել նոր քաշը հետտարածման մեջ՝ բազմապատկելով Ուսուցման արագությունը, որը հիպերպարամետր է Loss-ի ածանցյալների հետ՝ հարգելով հին քաշը: Եվ այսպես Gradient Descent-ը օգտագործեց Deep Learning-ում սխալը նվազագույնի հասցնելու համար: