Бид функцын хамгийн бага эсвэл дээд хэмжээг тодорхойлох шаардлагатай олон бодит нөхцөл байдалд оновчлолын асуудалтай тулгардаг.
Функцийг системийн математик дүрслэл гэж үзэх ба түүний хамгийн бага эсвэл дээд хэмжээг тодорхойлох нь машин сургалт, инженерчлэл, санхүү болон бусад олон төрлийн хэрэглээнд чухал ач холбогдолтой байж болно.
Уул толгод, хөндий бүхий ландшафтыг авч үзье, бидний зорилго бол зорьсон газартаа аль болох хурдан хүрэх хамгийн доод цэгийг (хамгийн бага) олох явдал юм.
Бид ийм оновчлолын сорилтуудыг шийдвэрлэхийн тулд градиент өгөгдлийн алгоритмуудыг байнга ашигладаг. Эдгээр алгоритмууд нь хамгийн эгц уруудах (сөрөг градиент) чиглэлд алхам хийх замаар функцийг багасгахад чиглэсэн давталттай оновчлолын аргууд юм.
Градиент нь функцийн хамгийн огцом өсөлттэй чиглэлийг тусгадаг бөгөөд эсрэг чиглэлд явах нь биднийг хамгийн бага хэмжээнд хүргэдэг.
Gradient Descent Algorithm гэж яг юу вэ?
Градиент уналт нь функцийн хамгийн бага (эсвэл хамгийн их)-ийг тодорхойлох түгээмэл давталттай оновчлолын арга юм.
Энэ нь хэд хэдэн салбарт, тэр дундаа маш чухал хэрэгсэл юм машин суралцах, гүнзгий суралцах, хиймэл оюун ухаан, инженерчлэл, санхүү.
Алгоритмын үндсэн зарчим нь функцийн утгын хамгийн огцом өсөлтийн чиглэлийг харуулсан градиентыг ашиглахад суурилдаг.
Алгоритм нь градиент шиг эсрэг чиглэлд удаа дараа алхмуудыг хийснээр функцийн ландшафтыг хамгийн бага руу үр ашигтайгаар чиглүүлж, нийлэх хүртэл шийдлийг давтах байдлаар сайжруулдаг.
Бид яагаад градиент буурах алгоритмыг ашигладаг вэ?
Эхлэгчдэд эдгээрийг өндөр хэмжээст орон зай, нарийн төвөгтэй функц бүхий олон төрлийн оновчлолын асуудлыг шийдвэрлэхэд ашиглаж болно.
Хоёрдугаарт, тэд оновчтой шийдлийг хурдан олох боломжтой, ялангуяа аналитик шийдэл байхгүй эсвэл тооцооллын хувьд өндөр өртөгтэй үед.
Gradient descent техник нь маш том хэмжээтэй бөгөөд асар их өгөгдлийн багцыг амжилттай зохицуулж чаддаг.
Үүний үр дүнд тэдгээрийг өргөнөөр ашигладаг машин сурах алгоритм өгөгдлөөс суралцаж, таамаглалын алдааг багасгахын тулд тэдгээрийн параметрүүдийг өөрчлөхийн тулд мэдрэлийн сүлжээг сургах гэх мэт.
Градиент уруудах алхмуудын дэлгэрэнгүй жишээ
Градиент буух техникийг илүү сайн ойлгохын тулд илүү нарийвчилсан жишээг харцгаая.
Хамгийн багадаа (2) үндсэн параболын муруй үүсгэдэг f(x) = x2 0,0D функцийг авч үзье. Энэ хамгийн бага цэгийг тодорхойлохын тулд градиент буурах алгоритмыг ашиглана.
Алхам 1: Эхлүүлэх
Градиент буурах алгоритм нь x0-ээр илэрхийлэгдсэн x хувьсагчийн утгыг эхлүүлэх замаар эхэлдэг.
Анхны утга нь алгоритмын гүйцэтгэлд ихээхэн нөлөөлдөг.
Санамсаргүй эхлүүлэх эсвэл асуудлын талаархи өмнөх мэдлэгийг ашиглах нь нийтлэг хоёр арга юм. Манай хэргийн эхэнд x₀ = 3 байна гэж бодъё.
Алхам 2: Градиентыг тооцоол
Одоогийн x₀ байрлал дахь f(x) функцийн градиент. дараа нь тооцоолох ёстой.
Градиент нь тухайн байрлал дахь функцийн өөрчлөлтийн хурд эсвэл налууг заана.
Бид f(x) = x2 функцийн хувьд x-тэй холбоотой деривативыг тооцдог бөгөөд энэ нь f'(x) = 2x-ийг өгдөг. Градиентын тооцоонд x₀ = 0-ыг орлуулснаар бид x2 дээрх градиентийг 3 * 6 = 3 гэж авна.
Алхам 3: Параметрүүдийг шинэчлэх
Градиент мэдээллийг ашиглан бид x-ийн утгыг дараах байдлаар шинэчилнэ: x = x₀ – α * f'(x₀), энд α (альфа) нь суралцах хурдыг илэрхийлнэ.
Сурах хурд нь шинэчлэлтийн үе шат бүрийн хэмжээг тодорхойлдог гиперпараметр юм. Суралцах хурд нь удаашралд хүргэж болзошгүй тул сургалтын зохих түвшинг тогтоох нь маш чухал юм алгоритм хамгийн багадаа хүрэхийн тулд хэт олон давталт хийх.
Нөгөөтэйгүүр, суралцах өндөр түвшин нь алгоритмыг эргэлдэж эсвэл нэгтгэж чадахгүйд хүргэдэг. Энэ жишээний хувьд суралцах хурдыг α = 0.1 гэж үзье.
Алхам 4: Давталт
Бид x-ийн шинэчлэгдсэн утгыг авсны дараа бид 2 ба 3-р алхмуудыг урьдчилан тодорхойлсон тооны давталтаар эсвэл x-ийн өөрчлөлт хамгийн бага болох хүртэл давтан хийнэ, энэ нь нийлэхийг илтгэнэ.
Энэ арга нь градиентыг тооцоолж, x-ийн утгыг шинэчилж, давталт бүрт процедурыг үргэлжлүүлж, хамгийн багадаа ойртох боломжийг олгодог.
Алхам 5: Конвергенц
Техник нь хэд хэдэн давталтын дараа нийлдэг бөгөөд цаашдын шинэчлэлтүүд нь функцийн үнэ цэнэд мэдэгдэхүйц нөлөө үзүүлэхгүй.
Манай тохиолдолд давталт үргэлжлэх тусам x нь 0-д ойртох бөгөөд энэ нь f(x) = x^2-ийн хамгийн бага утга юм. Конвергенцэд шаардлагатай давталтын тоог сонгосон сургалтын хурд, оновчтой болгож буй функцийн нарийн төвөгтэй байдал зэрэг хүчин зүйлээр тодорхойлно.
Сурах түвшинг сонгох ()
Зөвшөөрөгдөхүйц суралцах хурдыг () сонгох нь градиент буурах алгоритмын үр дүнтэй байдалд чухал ач холбогдолтой. Өмнө дурьдсанчлан, суралцах хурд бага байх нь удаан нийлэлтийг өдөөж, харин суралцах өндөр хувь нь хэт давж, нэгдэх боломжгүй болоход хүргэдэг.
Тохиромжтой тэнцвэрийг олох нь алгоритмыг төлөвлөсөн хамгийн багадаа аль болох үр ашигтайгаар нэгтгэхэд маш чухал юм.
Сургалтын хурдыг тохируулах нь практикт ихэвчлэн туршилт, алдааны процедур юм. Судлаачид болон дадлагажигчид өөр өөр сургалтын хурдыг өөрсдийн сорилтод алгоритмын нэгдэлд хэрхэн нөлөөлж байгааг олж мэдэхийн тулд тогтмол туршилт хийдэг.
Гүдгэр бус функцуудтай ажиллах
Өмнөх жишээ нь энгийн гүдгэр функцтэй байсан бол бодит оновчлолын олон асуудал нь олон орон нутгийн минимум бүхий гүдгэр бус функцуудыг агуулдаг.
Ийм тохиолдолд градиент уналтыг ашиглах үед энэ арга нь дэлхийн хамгийн багадаа биш орон нутгийн хамгийн багадаа нийлж болно.
Энэ асуудлыг даван туулахын тулд градиент удмын хэд хэдэн дэвшилтэт хэлбэрийг боловсруулсан. Стохастик градиентийн уналт (SGD) нь давталт бүрт градиентийг тооцоолохын тулд өгөгдлийн цэгүүдийн санамсаргүй дэд багцыг (мини багц гэж нэрлэдэг) сонгох замаар санамсаргүй байдлыг нэвтрүүлдэг ийм аргуудын нэг юм.
Энэхүү санамсаргүй түүвэрлэлт нь алгоритмд орон нутгийн минимумаас зайлсхийж, функцын газрын шинэ хэсгүүдийг судлах боломжийг олгодог бөгөөд ингэснээр илүү сайн минимумыг олох боломжийг нэмэгдүүлдэг.
Адам (Дасан зохицох моментийн тооцоо) нь RMSprop болон импульсийн ашиг тусыг агуулсан дасан зохицох сургалтын хурдыг оновчтой болгох өөр нэг алдартай хувилбар юм.
Адам өмнөх градиент мэдээлэл дээр үндэслэн параметр бүрийн суралцах хурдыг динамикаар өөрчилдөг бөгөөд энэ нь гүдгэр бус функцууд дээр илүү сайн нийлэхэд хүргэж болзошгүй юм.
Эдгээр боловсронгуй градиент удмын хувилбарууд нь улам бүр төвөгтэй болж буй функцуудыг шийдвэрлэхэд үр дүнтэй болох нь нотлогдсон бөгөөд гүдгэр бус оновчлолын асуудал нийтлэг байдаг машин сургалтын болон гүнзгий сургалтын стандарт хэрэгсэл болсон.
Алхам 6: Өөрийн ахиц дэвшлийг төсөөл
Давтагдах үйл явцыг илүү сайн ойлгохын тулд градиент буурах алгоритмын явцыг харцгаая. Давталтыг илэрхийлэх x тэнхлэг, f(x) функцийн утгыг илэрхийлэх у тэнхлэгтэй графикийг авч үзье.
Алгоритм давтагдах тусам x-ийн утга тэг рүү ойртож, үүний үр дүнд алхам бүрээр функцийн утга буурдаг. График дээр зурвал энэ нь тодорхой буурах хандлагыг харуулах бөгөөд энэ нь алгоритмын хамгийн багадаа хүрэх ахиц дэвшлийг тусгана.
Алхам 7: Сурах хурдыг нарийн тохируулах
Сурах хурд () нь алгоритмын гүйцэтгэлд чухал хүчин зүйл болдог. Практикт суралцах хамгийн тохиромжтой хурдыг тодорхойлох нь ихэвчлэн туршилт, алдаа шаарддаг.
Сургалтын хурдны хуваарь гэх мэт зарим оновчлолын аргууд нь сургалтын явцад сургалтын хурдыг динамикаар өөрчилж, илүү өндөр үнэлэмжээс эхэлж алгоритм ойртох тусам аажмаар бууруулж болно.
Энэ арга нь оновчтой болгох үйл явцын эхэн үеийн хурдацтай хөгжил ба төгсгөлийн тогтвортой байдлын хоорондох тэнцвэрийг бий болгоход тусалдаг.
Өөр нэг жишээ: Квадрат функцийг багасгах
Градиент удмын талаар илүү сайн ойлголттой болохын тулд өөр жишээг харцгаая.
g(x) = (x – 5)^2 гэсэн хоёр хэмжээст квадрат функцийг авч үзье. x = 5 үед энэ функц мөн адил хамгийн багатай байна. Энэ хамгийн бага хэмжээг олохын тулд бид градиент уналтыг хэрэглэнэ.
1. Эхлүүлэх: Эхлэх цэгээ x0 = 8 гэж эхэлцгээе.
2. g(x)-ийн градиентийг тооцоол: g'(x) = 2(x – 5). Бид x0 = 8-ийг орлуулахад x0 дээрх градиент 2 * (8 – 5) = 6 байна.
3. Сурах хурдаа = 0.2 байхад бид x-г дараах байдлаар шинэчилнэ: x = x₀ – α * g'(x₀) = 8 – 0.2 * 6 = 6.8.
4. Дахин давтах: Бид 2, 3-р алхмуудыг нэгдэх хүртэл шаардлагатай бол олон удаа давтана. Цикл бүр нь x-ийг 5-д ойртуулдаг бөгөөд хамгийн бага утга g(x) = (x – 5)2.
5. Нэгдсэн байдал: Арга нь эцэстээ g(x) = (x – 5)5-ийн хамгийн бага утга болох x = 2 болж нийлнэ.
Сурах ханшийн харьцуулалт
Шинэ жишээн дээр α = 0.1, α = 0.2, α = 0.5 гэх мэт өөр өөр сургалтын хурдуудын хувьд градиент буурах хурдыг харьцуулж үзье. Сурах түвшин бага байх нь (жишээ нь, = 0.1) илүү урт нийлэлтийг бий болгоно, гэхдээ илүү нарийвчлалтай хамгийн бага байна.
Илүү өндөр суралцах түвшин (жишээ нь = 0.5) илүү хурдан нийлэх боловч хамгийн багадаа давж эсвэл хэлбэлзэж, нарийвчлал мууддаг.
Гүдгэр бус функцийг зохицуулах олон загварт жишээ
h(x) = sin(x) + 0.5x, гүдгэр бус функцийг авч үзье.
Энэ функцэд хэд хэдэн орон нутгийн минимум, максимум байдаг. Эхлэх байрлал болон суралцах хурдаас хамааран бид стандарт градиент уналтыг ашиглан орон нутгийн аль нэг минимумд нэгдэж болно.
Бид Адам эсвэл стохастик градиент удам (SGD) гэх мэт илүү дэвшилтэт оновчлолын техникийг ашиглан үүнийг шийдэж чадна. Эдгээр аргууд нь дасан зохицох сургалтын хурд эсвэл санамсаргүй түүврийг ашиглан функцын ландшафтын янз бүрийн бүс нутгийг судлахад илүү сайн доод хэмжээнд хүрэх магадлалыг нэмэгдүүлдэг.
Дүгнэлт
Gradient descent алгоритмууд нь өргөн хүрээний салбарт өргөн хэрэглэгддэг оновчлолын хүчирхэг хэрэгсэл юм. Тэд градиентийн чиглэлд тулгуурлан параметрүүдийг дахин шинэчлэх замаар функцийн хамгийн бага (эсвэл хамгийн их)-ийг олж илрүүлдэг.
Алгоритм нь давтагдах шинж чанартай тул өндөр хэмжээст орон зай, нарийн төвөгтэй функцуудыг зохицуулж чаддаг тул үүнийг машин сурах болон өгөгдөл боловсруулахад зайлшгүй шаардлагатай болгодог.
Градиент уруул нь бодит ертөнцийн бэрхшээлийг амархан даван туулж, суралцах хурдыг анхааралтай сонгож, стохастик градиент удам, Адам зэрэг дэвшилтэт хувилбаруудыг ашигласнаар технологийн өсөлт, өгөгдөлд тулгуурласан шийдвэр гаргахад ихээхэн хувь нэмэр оруулж чадна.
хариу үлдээх