6-ma’ruza. Ko’p o’zgaruvchili chiziqli regressiya Reja



Yüklə 1,73 Mb.
səhifə9/12
tarix22.03.2023
ölçüsü1,73 Mb.
#89098
1   ...   4   5   6   7   8   9   10   11   12
6-mavzu(Саид-2-вар-лот)

Python algoritmi
Python-da SGD uchun psevdokod:

Python-da SGD uchun psevdokod
Yo’qotish funksiyasini kamaytirish uchun qiymatlarni olish va ularni har xil parametrlar asosida sozlash sikli backpropagasion deb ataladi.
Bizga stoxastik gradiyent tushish nima uchun kerak?
Keling, gradiyent tushishidan foydalanib, hayotiy misolni ko’rib chiqamiz. Oddiy chiziqli regressiani ko’rib chiqaylik, unda harorat kriketlar chiqaradigan shovqinga qanday ta’sir qilishini ko’raylik. Bizda har xil haroratdagi kriketlarning chaqqonligi haqida ma’lumotlar to’plami mavjud. Birinchidan, biz ma’lumotlar bazasini yaratamiz.

Maqsad bizning ma’lumotlar nuqtalariga mos keladigan $ h _ {\ theta} (x) = \ theta_0 + \ theta_1 x $ eng yaxshi satrini topishdir. Biz kichraytirmoqchi bo’lgan funksiya bu yerda $ J (\ theta_0, \ theta_1) = {1 \ over 2m} \ sum \ limit_ {i = 1} ^ m (h_ \ theta (x_i) -y_i) ² $
Bunday holda, gradiyent ikki o’lchovda aniqlanadi,
$ \ frac {\ qismli} {\ qismli \ theta_0} J (\ theta_0, \ theta_1) = \ frac {1} {m} \ sum \ limit_ {i = 1} ^ m (h_ \ theta (x_i) -y_i )) $
$ \ frac {\ qismli} {\ qismli \ theta_1} J (\ theta_0, \ theta_1) = \ frac {1} {m} \ sum \ limit_ {i = 1} ^ m ((h_ \ theta (x_i) -) $ y_i) \ cdot x_i) $
Quyida biz funksiyamizni h, J va gradiyent uchun to’zdik:



Keyin ma’lumotlarni x va y o’zgaruvchilarga aniqlang va gradiyent tushish algoritmimizni ishga tushiring:

Taqqoslash uchun biz quyidagi koeffitsiyentlarning haqiqiy qiymatlarini olamiz:

Bundan tashqari, eng mos chiziq quyida keltirilgan,

Gradiyent tushish algoritmi yordamida olingan qiymatlar haqiqiyga ancha yaqin ekanligini ko’rishimiz mumkin.
Ammo bu yerda haqiqiy muammo paydo bo’ladi: biz ishlaydigan ma’lumotlar to’plami atigi 15 punktdan iborat kichik ma’lumotlar to’plamidir. Va biz algoritmimizning har bir bosqichida gradiyentni hisoblashimiz kerak, bu misolda bu juda muhim emas, ammo agar bizda millionlab ma’lumotlar nuqtalarini o’z ichiga olgan ma’lumotlar to’plami bo’lsa, bu usul unchalik samarasiz bo’ladi. Bu yerda stoxastik gradiyent tushish yordamga keladi !
Yuqoridagi misolda bo’lgani kabi, har bir qadamda har bir to’plamdagi barcha misollarni ko’rib chiqishimiz kerak. Stoxastik gradiyent tushishda biz mavjud to’plamidagi har bir elementni ko’rib chiqqandan so’ng o’z qadriyatlarimizni yangilaymiz, shuning uchun biz darhol rivojlanishni boshlaymiz. Yuqoridagi regressiya misolini eslang, biz ikkita teta qiymatining har biri uchun gradiyentni quyidagicha hisoblaymiz:
$ \ frac {\ qismli} {\ qismli \ theta_0} J (\ theta_0, \ theta_1) = \ frac {1} {m} \ sum \ limit_ {i = 1} ^ m (h_ \ theta (x_i) -y_i )) $
$ \ frac {\ qismli} {\ qismli \ theta_1} J (\ theta_0, \ theta_1) = \ frac {1} {m} \ sum \ limit_ {i = 1} ^ m ((h_ \ theta (x_i) -) $ y_i) \ cdot x_i) $
Bu yerda $ h_ \ theta = \ theta_0 + \ theta_1 x $.
Keyin qo’yidagi algoritmga rioya qilamiz (bu yerda a \ alfa moslashuvchan bo’lmagan qadam kattaligi):
1. $ x_0 $ dastlabki taxminni tanlang.
2. k = 0, 1, 2,… uchun
$ S_k = - \ nabla f (x_k) $
$ x_ {k + 1} = x_k + \ alfa s_k $
uchun tugatish.
Namunaviy ma’lumotlar kichik bo’lganda, yuqorida ko’rsatilganidek, gradiyentni hisoblash juda qimmat bo’lmaydi. Ammo bu katta ma’lumotlar to’plamlari uchun emas. Shuning uchun, buning o’rniga biz oddiy chiziqli regressiya uchun stoxastik gradiyent tushish algoritmini ko’rib chiqamiz, bu yerda m - ma’lumotlar to’plamining o’lchami:
1. Ma’lumotlar to’plamini tasodifiy tartibda aralashtiring.
2. k = 0, 1, 2,… uchun
I = uchun 1 dan m gacha
$ \ begin {pmatrix} \ theta_1 \\ \ theta_2 \ end {pmatrix} $ = $ \ begin {pmatrix} \ theta_1 \\ \ theta_2 \ end {pmatrix} $ $ - \ alpha \ begin {pmatrix} 2 (h_ {) \ theta} (x_i) - y_i) \\ 2x_i (h _ {\ theta} (x_i) - y_i) \ end {pmatrix} $
uchun tugatish.
Odatda stoxastik gradiyent tushish bilan ma’lumotlar to’plamining qanchalik tez birlashishiga va ma’lumotlar to’plamining qanchalik katta bo’lishiga qarab siz butun ma’lumotlar to’plamini 1 dan 10 martagacha bosib o’tiladi (yuqoridagi psevdokodning 2-qatoridagi k qiymatiga qarang).
Gradiyent tushishdan farqli o’laroq, stoxastik gradiyent tushish doimiy ravishda yaqinlashgandan ko’raminimal qiymat atrofida o’zgarib turadi . Biroq, bu hyech qachon minimal darajaga tushmasligi mumkin. Buni aylanib o’tishning bir usuli - algoritm ishlayotganda qadam hajmini asta-sekin kamaytirish. Biroq, bu holatlar kamroq uchraydi.
Chiziqli regressiya uchun stoxastik gradiyent tushishidan foydalanishni tasvirlaydigan yana bir misolni ko’rib chiqamiz. Quyidagi misolda biz 0 dan 100 gacha bo’lgan x qiymatlari uchun chiziq atrofida 500000 punktlar to’plamini yaratamiz:

Birinchi qadam ma’lumotlar to’plamini tasodifiy aralashtirish va keyin h funksiyasi va xarajat funksiyasini sozlashdir:


Keyin uning rivojlanishini ko’rish uchun biz stoxastik gradiyent tushish algoritmimizni ishga tushiramiz, har bir qadamda narxni o’lchaymiz va har 10000 qadamda biz o’rtacha 10 000 qadamdan o’rtacha narxni olamiz va keyin cost_list o’zgaruvchimizga qo’shamiz. Bu erda to’liq ro’yxatni 10 marta bajaring.

Shubhasiz, olingan qiymatlar ularning haqiqiy qiymatlariga yaqin 17 va 2. Narxlarning takrorlanishlar soniga bog’liqligini belgilang. Dastlab narx tezda pasayadi, yangi takrorlanishlar boshlanganda pasayish sekin boshlaydi.



Yüklə 1,73 Mb.

Dostları ilə paylaş:
1   ...   4   5   6   7   8   9   10   11   12




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin