ЦОС Python #3: Метод градиентного спуска для двух параметров

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

Комментарии • 24

  • @firi4737
    @firi4737 3 года назад +27

    Наконец нашел канал, на котором автор не пишет сразу какой-то код из гугла, а объясняет математику происходящего, это и есть самое увлекательное

  • @СанжарСовет-ъ5ц
    @СанжарСовет-ъ5ц 5 месяцев назад +2

    Я тебе очень благодарен за твой объяснения и то с каким трудом подходишь к подаче материала, после долгих скитаний от статей к статьи и курсов к курсу, твой канал как свежий воздух где понимаешь сложные вещи без проблем, СПАСИБО!!!!

  • @Zerg13
    @Zerg13 4 года назад +9

    Что же я раньше не обнаружил-то этот материал! Большая человеческая благодарность!!!!

  • @ЕвгенийГр-ш2я
    @ЕвгенийГр-ш2я 3 года назад +5

    Наконец-то хоть кто-то человеческим языком объяснил работу градиентного спуска)👍

  • @bigal1174
    @bigal1174 4 года назад +2

    спасибо большое, как раз именно то, что мне нужно было!

  • @vadim.gerasimenko
    @vadim.gerasimenko 4 года назад +2

    Материал просто топчик!

  • @nicko6815
    @nicko6815 4 года назад +2

    Круть, как всегда!!!

  • @Mikemacintosh-j4t
    @Mikemacintosh-j4t 3 года назад +1

    Очень доступно и интересно, спасибо

  • @ageofenigma
    @ageofenigma 4 года назад +2

    Шикарно!

  • @vlagavulvin3847
    @vlagavulvin3847 4 года назад +1

    Записывайте еще, док! ;)

  • @KAndrusyak
    @KAndrusyak 3 года назад +3

    aa и bb нужно расчитывать независимо. У вас при расчете bb используется уже новое значение aa

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      Да, согласен!

    • @partizanlt-bp1gv
      @partizanlt-bp1gv 3 года назад +2

      Как полезно читать комментарии

    • @stephencry
      @stephencry 8 месяцев назад

      aa1 = 0
      bb1 = 0
      for n in range(Niter):
      aa1 = aa - lmb1 * Eda(y, aa, bb)
      bb1 = bb - lmb2 * Edb(y, aa, bb)
      ax.scatter(aa1, bb1, E(y, aa, bb), color='y')
      fig.canvas.draw()
      fig.canvas.flush_events()
      time.sleep(0.01)
      print(aa1, bb1)
      aa = aa1
      bb = bb1
      типа так? Вроде, они независимо вычисляются

  • @jamjam3337
    @jamjam3337 10 месяцев назад +1

    😎

  • @impellergimpeller5133
    @impellergimpeller5133 2 года назад +1

    👍👍👍👍👍

  • @andrewkruchini8614
    @andrewkruchini8614 Год назад +1

    Не очень понял на 1:38, почему "шаги лямбда один и лямбда два, НЕЗАВИСИМЫЕ для параметра a и для параметра b". Лямбда определяет длину шага в направлении, обратном градиенту. Лямбда - это скаляр, на который умножается градиент, поэтому она может меняться от шага к шагу, но на каждом шаге должна быть одинакова для a и для b, иначе теряется смысл "градиентного спуска".

    • @selfedu_rus
      @selfedu_rus  Год назад

      Мы независимо двигаемся по антиградиенту для параметров a и b. Можно попробовать учитывать зависимости, тогда у нас в формуле будут смешанные производные по a и b.

    • @andrewkruchini8614
      @andrewkruchini8614 Год назад

      @@selfedu_rus извините, все равно не понял, откуда в формуле появятся смешанные производные, имхо, там останутся только частные производные E по a и b. Вообще зачем нам двигаться независимо по антиградиентам для a и b, когда по методу градиентного спуска нам нужно двигаться по антиградиенту E(a, b) (двух переменных, результат - двумерный вектор):
      - lambda * grad E = - lambda * (dE/da, dE/db) (производные - частные), поэтому
      a(n+1) = a(n) - lambda * dE/da
      b(n+1) = b(n) - lambda * dE/db
      lambda - одна в обоих выражениях.
      Или я совсем не понимаю метод градиентного спуска, или здесь используется не он. Поправьте меня, пожалуйста, если не прав.

  • @ВладимирПопов-ь5у
    @ВладимирПопов-ь5у 3 года назад

    Не совсем понял почему при использовании функции dEda транспонировали матрицу. Можете пожалуйста подсказать?

  • @evgzhu8558
    @evgzhu8558 3 года назад +1

    5+

  • @yulyagreengl3486
    @yulyagreengl3486 3 года назад

    Извините за вопрос, но почему у нас итераций 50, а не 100?

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      число итераций мы выбираем сами, я решил взять 50