J(V,b)=[1mm∑i=1J(V,b;x(i),y(i))]+l2nl−1∑l=1sl∑i=1sl+1∑j=1(V(l)ji)2=[1mm∑i=1(12‖hV,b(x(i))−y(i)‖2)]+l2nl−1∑l=1sl∑i=1sl+1∑j=1(V(l)ji)2
ning ta'rifidagi birinchi atamaJ(V,b)oʻrtacha kvadratlar yigʻindisi xato atamasi. Ikkinchi atama - tartibga solish atamasi ( vaznni pasaytirish atamasi deb ham ataladi) og'irliklar hajmini kamaytirishga intiladi va ortiqcha moslashishning oldini olishga yordam beradi.
(Eslatma: Odatda vaznning pasayishi noto'g'ri atamalarga qo'llanilmaydi
b(l)iuchun ta'rifimizda aks ettirilgan J(V,b).
Og'irlikni pasaytirishni tarafkashlik birliklariga qo'llash odatda yakuniy tarmoqqa ozgina farq qiladi. Agar siz Stenfordda CS229 (Machine Learning) dasturini olgan bo'lsangiz yoki YouTube'da kurs videolarini tomosha qilgan bo'lsangiz, siz ushbu vaznning pasayishini o'zingiz ko'rgan Bayes regulizatsiya usulining bir varianti sifatida ham tan olishingiz mumkin, bu erda biz parametrlar va parametrlarga Gaussni qo'yganmiz. MAP (maksimal ehtimollik o'rniga) taxmin qildi.)
Og'irlikni pasaytirish parametri ikki atamaning nisbiy ahamiyatini nazorat qiladi. Bir oz ortiqcha yuklangan belgiga ham e'tibor bering: J(V,b;x,y)bitta misolga nisbatan xatoning kvadrat qiymati; J(V,b)umumiy xarajat funktsiyasi bo'lib, u vaznning yemirilish muddatini o'z ichiga oladi.
Yuqoridagi ushbu xarajat funktsiyasi ko'pincha tasniflash uchun ham, regressiya muammolari uchun ham qo'llaniladi. Tasniflash uchun biz ruxsat beramiz y=0 yoki 1 ikkita sinf yorlig'ini ifodalaydi (esda tutingki, sigmasimon faollashtirish funktsiyasi qiymatlarni chiqaradi[0,1]; Agar biz tanhni faollashtirish funksiyasidan foydalansak, biz teglarni belgilash uchun -1 va +1 dan foydalanamiz). Regressiya bilan bog'liq muammolar uchun biz birinchi navbatda natijalarimizni ularning ichida bo'lishini ta'minlash uchun kengaytiramiz[0,1]diapazon (yoki agar biz tanh faollashtirish funksiyasidan foydalanayotgan bo'lsak, u holda[−1,1]diapazon).
Bizning maqsadimiz minimallashtirishdir J(V,b) funktsiyasi sifatida V va b.
Neyron tarmog'imizni o'rgatish uchun biz har bir parametrni ishga tushiramizV(l)ijva har birib(l)inolga yaqin kichik tasodifiy qiymatga (aytaylik, aNormal(0,s2)ba'zi kichiklar uchun tarqatishs, demoq0,01), so'ngra ommaviy gradient tushishi kabi optimallashtirish algoritmini qo'llang. beriJ(V,b)qavariq bo'lmagan funksiya bo'lib, gradient tushishi mahalliy optimaga sezgir; ammo, amalda gradient tushish odatda juda yaxshi ishlaydi. Nihoyat, barcha 0 larga emas, balki parametrlarni tasodifiy boshlash muhimligini unutmang. Agar barcha parametrlar bir xil qiymatlarda boshlangan bo'lsa, unda barcha yashirin qatlam birliklari kirishning bir xil funktsiyasini o'rganishni tugatadi (aniqroq qilib aytganda,V(1)ijning barcha qiymatlari uchun bir xil bo'ladii, Shuning uchun; ... uchun; ... natijasidaa(2)1=a(2)2=a(2)3=…har qanday kirish uchunx). Tasodifiy ishga tushirish simmetriyani buzish maqsadiga xizmat qiladi .
Gradient tushishning bir iteratsiyasi parametrlarni yangilaydiV,bquyida bayon qilinganidek:
V(l)ij=V(l)ij−a∂∂V(l)ijJ(V,b)b(l)i=b(l)i−a∂∂b(l)iJ(V,b)
qayerdaao'rganish darajasi hisoblanadi. Asosiy qadam yuqoridagi qisman hosilalarni hisoblashdir. Endi biz bu qisman hosilalarni hisoblashning samarali usulini beradigan orqaga tarqalish algoritmini tasvirlaymiz .
Biz birinchi navbatda hisoblash uchun orqaga tarqalishdan qanday foydalanish mumkinligini tasvirlaymiz∂∂V(l)ijJ(V,b;x,y)va∂∂b(l)iJ(V,b;x,y), xarajat funktsiyasining qisman hosilalariJ(V,b;x,y)bitta misol bo'yicha aniqlanadi(x,y). Bularni hisoblab chiqqandan so'ng, biz umumiy xarajatlarning hosilasi funktsiyasini ko'ramizJ(V,b)quyidagicha hisoblash mumkin:
∂∂V(l)ijJ(V,b)=[1mm∑i=1∂∂V(l)ijJ(V,b;x(i),y(i))]+lV(l)ij∂∂b(l)iJ(V,b)=1mm∑i=1∂∂b(l)iJ(V,b;x(i),y(i))
Yuqoridagi ikkita chiziq biroz farq qiladi, chunki vaznning parchalanishi qo'llaniladiVlekin emasb.
Orqaga tarqalish algoritmi ortidagi sezgi quyidagicha. Trening misoli keltirilgan(x,y), biz birinchi navbatda tarmoqdagi barcha faollashtirishlarni, shu jumladan gipotezaning chiqish qiymatini hisoblash uchun "oldinga o'tish" ni ishga tushiramiz.hV,b(x). Keyin, har bir tugun uchuniqatlamdal, biz “xato atamasi”ni hisoblamoqchimizd(l)ibu tugun bizning chiqishimizdagi har qanday xatolar uchun qanchalik "javobgar"ligini o'lchaydi. Chiqish tugunlari uchun biz tarmoq faollashuvi va haqiqiy maqsad qiymati o'rtasidagi farqni to'g'ridan-to'g'ri o'lchashimiz va undan foydalanishimiz mumkin.d(nl)i(qaerda qatlamnlchiqish qatlami). Yashirin birliklar haqida nima deyish mumkin? Ular uchun biz hisoblaymizd(l)ifoydalanadigan tugunlarning xato shartlarining o'rtacha og'irligiga asoslangana(l)ikirish sifatida. Batafsil, bu erda orqaga tarqalish algoritmi:
Qatlamlar uchun faollashtirishni hisoblab, oldinga uzatishni amalga oshiringL2,L3, va hokazo chiqish qatlamigachaLnl.
Har bir chiqish birligi uchuniqatlamdanl(chiqish qatlami), o'rnating
d(nl)i=∂∂z(nl)i12‖y−hV,b(x)‖2=−(yi−a(nl)i)⋅f'(z(nl)i)
Uchunl=nl−1,nl−2,nl−3,…,2
Har bir tugun uchuniqatlamdal, oʻrnating
d(l)i=(∑sl+1j=1V(l)jid(l+1)j)f'(z(l)i)
Istalgan qisman hosilalarni hisoblang, ular quyidagicha berilgan:
∂∂V(l)ijJ(V,b;x,y)=a(l)jd(l+1)i∂∂b(l)iJ(V,b;x,y)=d(l+1)i.
Nihoyat, matritsa-vektorli yozuvdan foydalanib, algoritmni qayta yozishimiz ham mumkin. foydalanamiz”∙” elementi mahsulot operatorini belgilash uchun ( .*Matlab yoki Oktavada belgilanadi va Hadamard mahsuloti deb ham ataladi), shuning uchun agara=b∙c, keyinai=bici. Ta'rifni qanday kengaytirganimizga o'xshashf(⋅)vektorlarga element bo'yicha qo'llash uchun biz ham xuddi shunday qilamizf'(⋅)(Shuning uchun; ... uchun; ... natijasidaf'([z1,z2,z3])=[f'(z1),f'(z2),f'(z3)]).
Keyin algoritm yozilishi mumkin:
Qatlamlar uchun faollashtirishni hisoblab, oldinga uzatishni amalga oshiringL2,L3, chiqish qatlamigachaLnl, oldinga tarqalish bosqichlarini belgilovchi tenglamalardan foydalanish
Chiqish qatlami uchun (qatlamnl), o'rnating
d(nl)=−(y−a(nl))∙f'(z(nl))
Uchunl=nl−1,nl−2,nl−3,…,2, oʻrnating
d(l)=((V(l))Td(l+1))∙f'(z(l))
Kerakli qisman hosilalarni hisoblang:
∇V(l)J(V,b;x,y)=d(l+1)(a(l))T,∇b(l)J(V,b;x,y)=d(l+1).
Do'stlaringiz bilan baham: |