![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Gradient descent бол машин сургалтын (ML) загварчлалын хамгийн түгээмэл оновчлолын арга юм. Алгоритм нь урьдчилан таамагласан утгууд болон үндсэн үнэний хоорондох алдааг багасгадаг. Техник нь алдааг ойлгож, багасгахын тулд өгөгдлийн цэг бүрийг авч үздэг тул түүний гүйцэтгэл нь сургалтын өгөгдлийн хэмжээнээс хамаарна. Stochastic Gradient Descent (SGD) гэх мэт аргууд нь тооцооллын гүйцэтгэлийг сайжруулахад зориулагдсан боловч нягт нямбай байдлын үнээр юм.
Стохастик дундаж градиент нь Full Gradient Descent болон SGD гэгддэг сонгодог аргыг тэнцвэржүүлж, хоёр давуу талыг санал болгодог. Гэхдээ бид алгоритмыг ашиглахаасаа өмнө загварыг оновчтой болгоход түүний ач холбогдлыг ойлгох хэрэгтэй.
ML алгоритм бүр нь загварын гүйцэтгэлийг багасгах эсвэл сайжруулах зорилготой холбоотой алдагдлын функцтэй байдаг. Математикийн хувьд алдагдлыг дараахь байдлаар тодорхойлж болно.
Энэ нь зүгээр л бодит болон таамагласан гаралтын хоорондох ялгаа бөгөөд энэ ялгааг багасгах нь бидний загвар үндсэн үнэний үнэ цэнэд ойртож байна гэсэн үг юм.
Багасгах алгоритм нь алдагдлын функцийг давж, дэлхийн хамгийн бага утгыг олохын тулд градиент уналтыг ашигладаг. Дамжуулах алхам бүр нь гаралтыг оновчтой болгохын тулд алгоритмын жинг шинэчлэх явдал юм.
Уламжлалт градиент буурах алгоритм нь бүх өгөгдлийн багцад тооцоолсон бүх градиентуудын дундажийг ашигладаг. Нэг сургалтын жишээний амьдралын мөчлөг дараах байдалтай байна.
Жин шинэчлэх тэгшитгэл дараах байдалтай байна.
W
загварын жинг илэрхийлэх ба dJ/dW
нь загварын жингийн алдагдлын функцийн дериватив юм. Уламжлалт арга нь нийлэх хурд өндөртэй боловч сая сая өгөгдлийн цэгээс бүрдсэн том өгөгдлийн багцтай ажиллахад тооцоолоход үнэтэй болдог.
SGD аргачлал нь энгийн GD-тэй ижил хэвээр байгаа боловч градиентийг тооцоолохдоо бүх өгөгдлийн багцыг ашиглахын оронд оролтын жижиг багцыг ашигладаг. Энэ арга нь илүү үр дүнтэй боловч давталт бүр нь суралцахын тулд өгөгдлийн зөвхөн нэг хэсгийг ашигладаг тул дэлхийн минимумыг хэт их давж магадгүй юм.
Стохастик дундаж градиент (SAG) арга нь GD болон SGD-ийн хоорондох дундаж суурь болгон нэвтрүүлсэн. Энэ нь санамсаргүй өгөгдлийн цэгийг сонгож, тухайн цэгийн градиент болон тухайн өгөгдлийн цэгт хадгалагдсан өнгөрсөн градиентуудын жигнэсэн дундаж дээр үндэслэн түүний утгыг шинэчилдэг.
SGD-тэй адил SAG нь бодлого бүрийг гүдгэр, дифференциалагдах функцүүдийн хязгаарлагдмал нийлбэр хэлбэрээр загварчилдаг. Аливаа давталт дээр жинг шинэчлэхийн тулд одоогийн градиент болон өмнөх градиентуудын дундажийг ашигладаг. Тэгшитгэл нь дараах хэлбэрийг авна.
Бүрэн градиент (FG) ба стохастик градиентийн уналт (SGD) гэсэн хоёр алдартай алгоритмын хооронд FG алгоритм нь давталт бүрийн явцад бүх өгөгдлийн багцыг ашигладаг тул илүү сайн нэгдэх хурдтай байдаг.
Хэдийгээр SAG нь SGD-тэй төстэй бүтэцтэй боловч түүний нэгдэх хурд нь бүрэн градиент хандлагатай харьцуулах боломжтой бөгөөд заримдаа илүү сайн байдаг. Доорх Хүснэгт 1-д хийсэн туршилтын үр дүнг нэгтгэн харуулав
Гайхалтай гүйцэтгэлтэй хэдий ч анхны SGD алгоритмд гүйцэтгэлийг сайжруулахад туслах хэд хэдэн өөрчлөлтийг санал болгосон.
Градиент уналт нь өгөгдсөн зорилгын функцүүдийн дэлхийн минимумыг олоход хэрэглэгддэг түгээмэл оновчлол юм. Алгоритм нь функцийн налууг хамгийн доод цэгт хүрэх хүртэл зорилгын функцийн градиентыг ашиглана.
Full Gradient Descent (FG) болон Stochastic Gradient Descent (SGD) нь алгоритмын түгээмэл хоёр хувилбар юм. FG нь давталт бүрийн явцад өгөгдлийн багцыг бүхэлд нь ашигладаг бөгөөд өндөр тооцооллын зардлаар нэгдэх хурдыг өгдөг. Давталт бүрт SGD нь алгоритмыг ажиллуулахын тулд мэдээллийн дэд багцыг ашигладаг. Энэ нь хамаагүй илүү үр дүнтэй боловч тодорхойгүй нийлдэг.
Стохастик дундаж градиент (SAG) нь өмнөх хоёр алгоритмын ашиг тусыг өгдөг өөр нэг хувилбар юм. Энэ нь өнгөрсөн градиентуудын дундаж болон өгөгдлийн багцын дэд багцыг ашиглан бага тооцоололтой өндөр нэгдэх хурдыг хангадаг. Алгоритмыг векторжуулалт болон мини багц ашиглан үр ашгийг нь дээшлүүлэхийн тулд цаашид өөрчилж болно.