ЦОС Python #2: Метод градиентного спуска

  Рет қаралды 48,911

selfedu

selfedu

Күн бұрын

Пікірлер: 78
@АлексейТаганрогов
@АлексейТаганрогов 3 жыл бұрын
Отличное объяснение, я кайфанул))) Искренне не понимаю, почему преподы в университете не могут рассказывать так же понятно.
@yaroslavsergeev6737
@yaroslavsergeev6737 2 жыл бұрын
скорее очень наглядно получается, когда демонстрируют работу. Преподам обязательно надо визуально подкреплять работу всего этого. Спасибо за материал)
@Ramozzzz
@Ramozzzz 2 жыл бұрын
Вот такое объяснение я и искал. По-человечески, с примерами и пояснениями, а не сухим ученым языком. Я когда писал курсовые, всегда старался именно так излагать материал. Премного благодарен)
@rustambox
@rustambox 2 жыл бұрын
Разбирался в градиентном спуске, колеблясь "как точка около истины" пока не натолкнулся на это видео. Низкий поклон учителю!
@ВячеславКузнецов-ъ3щ
@ВячеславКузнецов-ъ3щ 3 жыл бұрын
Пожалуй, самое понятное объяснение Градиентного спуска во всем Рунете! Спасибо
@eugeneyuriev9577
@eugeneyuriev9577 4 жыл бұрын
Супер! Четко, ясно, локанично. Редко такое встречается. Спасибо за вашу работу!
@БорисАстафьев-в9ъ
@БорисАстафьев-в9ъ 2 жыл бұрын
лучшее объяснение градиентного спуска, мой лайк стремиться к плюс бесконечности
@escozoonv
@escozoonv 4 жыл бұрын
Блин мне бы такие видео уроки когда я учился... Понятно и главное интересно! Спасибо
@Alex_chist
@Alex_chist 4 жыл бұрын
Превосходно! Спасибо большое! очень крутой стиль изложения!
@данилкоролёв-ж9л
@данилкоролёв-ж9л Жыл бұрын
это первое хорошее объяснение !!!
@Lina_sg
@Lina_sg Жыл бұрын
очень круто и наглядно, спасибо! и отдельно за код на python:)
@NickyBricky373
@NickyBricky373 Жыл бұрын
Потрясающее объяснение, спасибо!
@lordadwond3929
@lordadwond3929 Жыл бұрын
Довольно интересная подача. Благодарю!
@andreishichko7906
@andreishichko7906 11 ай бұрын
Спасибо за внятное объяснение.
@machinelearningpodcast9502
@machinelearningpodcast9502 3 жыл бұрын
Очень крутое объяснение!
@ВасилийЛавский
@ВасилийЛавский 2 жыл бұрын
Спасибо вам за подробнейшее объяснение!!!
@cantwaitforit
@cantwaitforit 4 жыл бұрын
Классное видео, все очень понятно, спасибо!
@sergeyrykunov6737
@sergeyrykunov6737 3 жыл бұрын
Очень доступно и понятно! Спасибо!!!
@vladimirpotapov7050
@vladimirpotapov7050 3 жыл бұрын
Спасибо большое за понятное объяснение!
@_crimson1624
@_crimson1624 3 жыл бұрын
Большое спасибо!
@cpp
@cpp Жыл бұрын
Благодарю, полезно, доступно
@АлексейБаринов-ь5н
@АлексейБаринов-ь5н 2 жыл бұрын
Восхитительно
@ChistoPit
@ChistoPit 4 жыл бұрын
Очень крутые уроки!
@leonidzhezherun2318
@leonidzhezherun2318 Жыл бұрын
Супер!
@hippityhoppityboom
@hippityhoppityboom 4 жыл бұрын
Очень классное видео! Спасибо
@danysprrr
@danysprrr 3 жыл бұрын
Круто! Спасибо!)
@mar_kha
@mar_kha Жыл бұрын
8:30 да это же подойдёт для анимации мяча, который упал в ямку! 😍
@LightningTrooper
@LightningTrooper 2 жыл бұрын
самое интересующее меня было - как найти величину шага. тут это по какой то причине не объяснено, пришлось искать на английские каналы, где всё по полочкам объяснено.
@stephencry
@stephencry 11 ай бұрын
Величина шага сходимости ищется с помощью минимизации функции, мы хотим подобрать такой шаг, чтобы не улететь мимо минимума, а такого результата можно добиться с помощью такой штуки. Например, у меня есть функция x1^2 + x1 + 3x1x2 + 2x2^2 + x2 - 1, надо пройтись по ней методом наискор. спуска. Сначала ищем градиент функционала - это DF = ([2x1 +3x2 + 1], [3x1 +4x2 + 1]), начальное приближение возьмём как x0 = (0, 0). Запишем формулу первой итерации: x1 = x0 + L*DF(x0). Ищем х1: x1 = (0, 0) + L * (1,1) = (L, L), надо найти оптимальный L, это будет argminF(x1) = L^2 + L + 3L^2 + 2L^2 + L -1 = 6L^2 + L - 1. Минимум этой функции - вершина, так как это парабола, а значит её можно найти по формуле L0 = - b/2a = -1/12. Подставим к x1, получим (-1/12, -1/12) - это наша первая точка, дальше вторую итерацию можно записать как х2 = х1 + L*DF(x1) и т.д. В общем виде: xn+1 = xn + L*DF(xn). Вы можете мне возразить, а какого хуя там +, когда в видосе минус. Прикол в том, что с - мы идём вдоль антиградиента, когда с +, мы идём по градиенту.
@stephencry
@stephencry 11 ай бұрын
Если хотите, можете просто в моей формуле поменять + на - и всё будет, как и в видеоролике. Надеюсь, что я нормально объяснил.
@yuraisme
@yuraisme 4 жыл бұрын
оч. круто и понятно
@1233-s3w
@1233-s3w 4 жыл бұрын
Очень годно
@noriodan244
@noriodan244 2 жыл бұрын
А почему не используется библиотека decimal? Ведь она же позволяет убрать погрешность питона в работе с десятичными числами, а это очень важно для таких задач
@impellergimpeller5133
@impellergimpeller5133 2 жыл бұрын
👍👍👍👍👍
@АлексейПетров-з1ф3с
@АлексейПетров-з1ф3с 10 ай бұрын
Здравствуйте, спасибо за видео, вопрос такой зачем нужно вычислять градиент с помощью производной? направление движения мы поймем по разнице между выходным значением и эталоном. далее используем лямбда и все. Не совсем понятно зачем нужна производная. Спасибо
@selfedu_rus
@selfedu_rus 6 ай бұрын
Производная (численно) как раз то, что вы сейчас сказали ))
@JohnWickMovie
@JohnWickMovie Жыл бұрын
Хорошо бы было упомянуть седловые точки
@jamjam3337
@jamjam3337 Жыл бұрын
😎
@efraimfligil3119
@efraimfligil3119 2 жыл бұрын
А как поступать, если вычеслить производную достаточно проблиматично? (комбинация сложных функций типа Гамма функциая или бета и т.д. )
@selfedu_rus
@selfedu_rus 2 жыл бұрын
тогда использовать прилиженное вычисление, которое, в среднем, дает то же направление, что и истинный градиент
@ШамильЗиганшин-й3ю
@ШамильЗиганшин-й3ю 3 жыл бұрын
Здравствуйте, А что если мы изначально, случайным образом, попали в область локального максимума. Как тогда в этом случае поведет себя эта программа.
@selfedu_rus
@selfedu_rus 3 жыл бұрын
будет колебаться вокруг него, если это единственный минимум, либо же может выскочить и перейти в локальный минимум
@ШамильЗиганшин-й3ю
@ШамильЗиганшин-й3ю 3 жыл бұрын
@@selfedu_rus спасибо за ответ
@IlyaAb
@IlyaAb 3 жыл бұрын
реализовать подобную анимацию в юпитере как-то можно? там сразу конечный вариант графика выдаёт
@selfedu_rus
@selfedu_rus 3 жыл бұрын
в юпитере не работал с анимацией не скажу
@dicloniusN35
@dicloniusN35 5 ай бұрын
так только через дикую задницу for i in range(N): xx = xx - lmd*df(xx) # изменение аргумента на текущей итерации по формуле град. спуска point.set_offsets([xx, f(xx)]) # отображение нового положения точки на текущей итерации, которое получили в строке выше # перерисовка графика и задержка на 30 мс ''' не работает в юпитере, только в обычном пайчарме fig.canvas.draw() fig.canvas.flush_events() time.sleep(0.03) ''' #plt.plot(pl.randn(100)) fig, ax = plt.subplots() ax.grid(True) ax.plot(x_plt, f_plt, c='#448800') #point.Draw() plt.scatter(xx, f(xx), c='red'if(i==N-1)else'blue' ) display.clear_output(wait=True) display.display(plt.gcf()) time.sleep(0.03) if i
@СергейКондулуков-з9ч
@СергейКондулуков-з9ч Жыл бұрын
Ничего не понял, но насладился логикой объяснения.
@Верховныйтехножрец
@Верховныйтехножрец 3 жыл бұрын
Обычно же эпсиланд используют для обозначения шага сходимости
@selfedu_rus
@selfedu_rus 3 жыл бұрын
в разной литературе по разному
@user-ev7rm2yp9u
@user-ev7rm2yp9u 4 жыл бұрын
А почему ось x которая вроде как ось абсцисс здесь называют осью ординат?
@selfedu_rus
@selfedu_rus 4 жыл бұрын
не нашел где, но во всех остальных случаях произносится "абсцисс"
@user-ev7rm2yp9u
@user-ev7rm2yp9u 4 жыл бұрын
@@selfedu_rus 4:00-4:10
@selfedu_rus
@selfedu_rus 4 жыл бұрын
да, это оговорка )
@ДимаБарвинский-у6к
@ДимаБарвинский-у6к 3 жыл бұрын
Здравствуйте, попробовал написать такую же программу, но почему то выдает ошибку AttributeError: объект 'FigureCanvasTkAgg' не имеет атрибута 'flush' , подскажите. что делать) За видео респект, интересно, кратко и понятно!
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Первое. По этой ссылке исходники github.com/selfedu-rus/python-algorithms Второе, вместо canvas попробуйте plt.draw() и plt.gcf().canvas.flush_events()
@ДимаБарвинский-у6к
@ДимаБарвинский-у6к 3 жыл бұрын
При запуске программы точка не движется, мб быть я какую-нибудь из библиотек не добавил(
@selfedu_rus
@selfedu_rus 3 жыл бұрын
@@ДимаБарвинский-у6к странно, тогда просто посмотрите в документации по matplotlib - это он все рисует
@savel2work
@savel2work 2 жыл бұрын
А почему нельзя просто посчитать массив точек и выбрать наименьшую?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Во-первых, вы должны так сформировать этот массив, чтобы в нем было наименьшее значение. Если вы знаете, как это сделать, то уже что то знаете о граничных значениях и это можно использовать. Во-вторых, число оптимизируемых параметров часто составляет от нескольких сотен до миллионов (в нейронных сетях) и здесь простой перебор уже не поможет.
@savel2work
@savel2work 2 жыл бұрын
@@selfedu_rus, но ведь у вас в примере двадцать шагов с шагом примерно 0.2 или около того? Ведь алгоритм не с while, а с range(N)
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@savel2work ну это просто пример, в реальных задачах не всегда известен диапазон
@savel2work
@savel2work 2 жыл бұрын
@@selfedu_rus, а как же тогда поступать в реальности?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@savel2work градиентный спуск, ему только начальное приближение нужно (можно взять случайное число и от него уже двигаться к оптимальному значению)
@n_bazarov
@n_bazarov 3 жыл бұрын
Ну я так понял здесь это не разбирается, но типа learning rate можно динамически изменять, типа от 0.9 до 0.01 и так за счет этого можно выйти из локального минимума
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Пока нет алгоритмов, которые бы за приемлемое время (объем вычислений) находили глобальный оптимум. Поэтому классический градиентный спуск пытаются улучшить разными способами. Например, это оптимизация Adagard, Adadelta, Adam, моменты Нестерова и т.п.
@Zelloss67
@Zelloss67 2 жыл бұрын
Это конечно все хорошо, но в Jupiter Notebook именно такой код не работает и никакой анимации вы не увидите
@vrs9106
@vrs9106 Жыл бұрын
в первой ячейке перед импортами напиши %matplotlib
@evgzhu8558
@evgzhu8558 3 жыл бұрын
5+
@torbokovsanat
@torbokovsanat 4 жыл бұрын
+
@Bl4ck_Pyr4t200
@Bl4ck_Pyr4t200 9 ай бұрын
это не наискорейший спуск
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН
Tuna 🍣 ​⁠@patrickzeinali ​⁠@ChefRush
00:48
albert_cancook
Рет қаралды 148 МЛН
Лекция 2.4: Градиентный спуск.
12:01
Deep Learning School
Рет қаралды 21 М.
Разбор реальной data science задачи
38:51
Alexander Ershov
Рет қаралды 204 М.
Алгоритмы на Python 3. Лекция №1
1:20:50
Тимофей Хирьянов
Рет қаралды 5 МЛН