Deep Learning UB 2021 — summer school : Day#4

2B | +1% better 2day | ai.008

--

За өнөөдөр бол кодтой зууралдлаа. Семинар #2-г Аддайс-н Технологи Хариуцсан Захирал Амгалан, өмнөх Лекц #1-н Оно хамтран хийсэн.

Өмнөх хичээл дээр ярьсан Шугаман регрессийг бататгаж яриад, шууд кодруугаа орсон байгаа. (Өмнөх хичээлийн товчлол👇👇👇)

  1. Датаг гоёор тайлбарладаг функцыг ол! f:R → R
  2. Ер нь аягүй олон янзын функц байж болохын биш үү!?
  3. Юм энгийн нь сайхан, хамгийн ЗОХИМЖТОЙ шулууны функцыг (x -> y) олж үзье л дээ. (оршин байхгүй)
  4. ЗОХИМЖТОЙ /оптимал/ гэдгийг юугаар тодорхойлох вэ?
  5. Зохимжтой 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) нэмнэ ээ.

LinearRegress класс дотроо үргэлжлүүлэн бичнэ

Дараа нь шинэ методуудаа ашиглаад загвараа сургаад үзье. 1000 алхам, gradient-ээ бодож оптимизац хийх үйлдлийг давтана.
— Эхний удаа get_grad хэрэгтэй
— Дараа нь backward ашиглан оптимизац хийнэ
get_loss-оор алдааг бодно

За тэр доор гарсан тоог анзаарвал алдаа нь анх 260 байснаа 8.9 болж буурчээ. Гэхдээ яг хүн ойлгомжтой байлгах үүднээс зураг болговол илүү ойлгомжтой болно. plot_model метод нэмээд тэрийгээ ажиллуулж харцгаая.

LinearRegress класс дотроо үргэлжлүүлэн бичнэ

Дараа нь сургалт эхлэхийн өмнө болон яг сургаж байх үедээ 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 нь

--

--

Билигүн.Б (Програмч аав)
2B +1% better 2day

I am who I am... || өөрийнхөөрөө байхаас ичихгүй