Deep Learning UB 2021 — summer school : Day#4
2B | +1% better 2day | ai.008
За өнөөдөр бол кодтой зууралдлаа. Семинар #2-г Аддайс-н Технологи Хариуцсан Захирал Амгалан, өмнөх Лекц #1-н Оно хамтран хийсэн.
Өмнөх хичээл дээр ярьсан Шугаман регрессийг бататгаж яриад, шууд кодруугаа орсон байгаа. (Өмнөх хичээлийн товчлол👇👇👇)
- Датаг гоёор тайлбарладаг функцыг ол!
f:R → R
- Ер нь аягүй олон янзын функц байж болохын биш үү!?
- Юм энгийн нь сайхан, хамгийн ЗОХИМЖТОЙ шулууны функцыг (x -> y) олж үзье л дээ. (оршин байхгүй)
- ЗОХИМЖТОЙ /оптимал/ гэдгийг юугаар тодорхойлох вэ?
- Зохимжтой w, b -г яаж олох вэ?
(y=wx+b)
— Уламжлал ашигласан бодолт
— Вектор, матриц ашигласан бодолт
— Бас өөр нэг арга..! = Gradient descent — Хамгийн их буурах чиглэл
За тэгээд энэ өөр нэг аргыг өнөөдөр кодчилох байгаа.
Дээрх зургийн дагуу, дараах зүйлсийг кодчилно.
1. Өгөгдөл бэлдэх
Х болон y-н хувьд numpy санг ашиглан санамсаргүй тоонууд гаргаж авсан. y=wx+b
дээр нэмэлтээр бас санамсаргүй тоо нэмж шулуун тархалт үүсгэв.
2. Загвар кодчилох
Эхний алхам дээр класс үүсгээд init, forward, get_params 3 метод нэмье. Дараа нь тэр класс-н instance үүсгэж, методуудыг нь дуудаж үзнэ ээ.
За дараагийн алхам дээр Алдааны функц (get_loss), Оптимизацын алгоритмаа (get_grad, backward) нэмнэ ээ.
Дараа нь шинэ методуудаа ашиглаад загвараа сургаад үзье. 1000 алхам, gradient-ээ бодож оптимизац хийх үйлдлийг давтана.
— Эхний удаа get_grad хэрэгтэй
— Дараа нь backward ашиглан оптимизац хийнэ
— get_loss-оор алдааг бодно
За тэр доор гарсан тоог анзаарвал алдаа нь анх 260 байснаа 8.9 болж буурчээ. Гэхдээ яг хүн ойлгомжтой байлгах үүднээс зураг болговол илүү ойлгомжтой болно. plot_model метод нэмээд тэрийгээ ажиллуулж харцгаая.
Дараа нь сургалт эхлэхийн өмнө болон яг сургаж байх үедээ 100 алхам тутамд алдааг болон дүрслэлийг харуулна аа.
plot_model-н 0, 100, 400, 500, 800, 900 дэх алхам дээрх дүрслэл. Мөн алдаа нь анх 0 дээр 10.61 байсан бол 100 дээр 9.31, 500 дээр 9.11, 900 дээр 9.11 байсан байна. (Сүүлийн 500 epoch нээх шаардлагагүй байсан уу?)
За тэгээд семинар маань их сонирхолтой байлаа. :) Гараар код бичих нь яалт ч үгүй сонссон зүйлээ хэрэгжүүлэх боломж олгож байгаагаараа илүү юмаа.
- Learning Rate → их бага байх. Мэдээж тухайн тохиолдлоос хамаарах ч хэт их байх нь гол олох зүйлээ алгасаад явчих аюултай, хэт бага бол бас epoch дотроо амжиж юмаа олохгүй ч байж болно.
- Epoch → хэдэн удаа давтахаа хэлдэг. Өнөөдрийн жишээ дээр 1000 биш 500 байсан ч болохоор юм шиг. Гэхдээ мэдээж learning_rate энэ 2 хоорондоо хамааралтай
За тэгээд өнөөдөртөө дуусгая. Хүсвэл энэ GitHub дээрх notebook нь