Градиент - направление наискорейшего возрастания функции. Мы же хотим минимизировать значение функции ошибки. Поэтому двигаться при градиентном спуске будем не по градиенту, а по антиградиенту (т.е. в противоположном направлении).
Андрей, скажите пожалуйста, уместна ли аналогия: Часто большой путь в разработку ЯП, вплоть до своей VM, начинается с Hello World средствами API одного из высокоуровневых языков. Также и в машинном обучении: сначала бы научиться пользоваться уже готовыми открытыми библиотеками а уже потом, по мере необходимости, писать свою "уникальную" реализацию. p.s. Не устаю благодарить вас за ваши Труды.
Вопрос очень интересный. Если вкратце, есть два подхода к образованию: - Подход классических университетов, когда нужно сначала изучить основы и только потом переходить к практике. Нельзя ничего использовать, если ты не знаешь, как это работает. Такой подход наиболее предпочтителен, если хотим обучать ученых или прикладных исследователей. - Подход технических университетов, когда на первом месте стоит решение прикладных задач. приветствуется использование готовых инструментов, из которых собирается решение как из кирпичей. Если что-то не работает, тогда залезаем внутрь "кирпичей" и разбираемся, как они устроены. Можно и написать свою уникальную реализацию, если это нужно для решения прикладной проблемы, и стандартные инструменты не позволяют. У вас аналогия второго пути. Мне лично такой путь больше нравится, возможно, потому что у меня инженерное образование. Но первый путь нисколько не хуже второго, есть много людей, которые предпочитают именно его.
Обучение нейронных сетей - это подбор весов. Замечательно. Ни тебе ЧТО ТАКОЕ нейронные сети, ни ЗАЧЕМ их нужно обучать, ни ЧТО такое веса и для чего они нужны. Всё просто, разведка боем, очень удобно, рекомендую!
Андрей, добрый день. Очень интересный курс. Скажите, есть ли готовые обученные модели (аналоги распознавания лиц) по распознаванию других объектов. Например - есть сто тысяч изображений произведений искусства. И по произвольной фотографии одного из них - определить какое из фото в базе данных максимально соответствует этому произвольному . И скажите как можно связаться с Вами в telegram например. Спасибо
Количество скрытых слоев мы задаем при создании сети. Как его определять, это отдельный вопрос, на который нет конструктивного ответа. Нужно попробовать несколько вариантов и посмотреть, какой будет лучше работать. Ошибка между слоями должна распределяться пропорционально вкладу каждого слоя, каждого нейрона, и каждой связи между ними в значения на выходе сети. Но на практике часто возникает проблема исчезающего градиента, когда ошибка быстро убывает.
Изучаю нейронки 2 день, и возник вопрос. Результат на новых данных, обученной сетки зависит же только от настроенных весов? К примеру мы натренировали сеть на 3 выборках задачи XOR, и теперь при подачи новой выборки будем надеяться, что веса подойдут и под эту выборку и мы получим то что хотим. В некоторых статьях пишут, что сеть сама определяет сходство новых данных и старых и определяет, что мы хотим на выходе, но это же невозможно в прямом смысле?
В прямом смысле это невозможно. Сеть не определяет сходство новых и старых данных, а сравнивает выходное значение сети с правильным результатом. В зависимости от того, насколько сильное отличие, изменяются веса входов в нейроны. Затем процесс обучения повторяется, пока выходное значение сети не будет хорошо совпадать с правильными ответами. Главное, чтобы хватило данных для обучения.
Спасибо вам за лекции, очень хорошо объясняете, единственное не поняла для чего применяется градиент? и как он работает? можете объяснить доступным языком пожалуйста
@@AndreySozykin Возможно, когда досмотрю станет понятнее. Просто везде идут разговоры о необходимости ферм из видеокарт, для решения простейших задач. Если бы были какие-то заранее ориентиры, для какого рода задач какие вычислительные мощности требуются - было бы понятнее. Но курс Ваш, а не мой. У Вас уже и опыт огромный и талант лектора. Так что не смею критиковать. Прослушаю, почитаю литературу, будет ясно. Благодарю за Ваши Старания!!!
Действительно, у нейрона один выход и несколько входов. Но при расчете ошибки сеть работает в обратном направлении, и входы и выходы меняются местами. Один выход нейрона подключается к входам нескольких нейронов следующего слоя. При обратном распространении ошибки мы должны учесть ошибку, которая приходит от каждого нейрона следующего слоя на один выход нашего нейрона. После этого мы рассчитываем значение ошибки на входе в нейрон, которое будет одно. И затем передаем это значение ошибки всем нейронам предыдущего слоя, которые подключены к каждому входу.
а если пойти в сторону максимилизации ошибки,будет ли ответ обратным?(допустим у меня такая задача чтобы сеть выбрала из двух противоположных вариантов) .если да ,то это может сократить обучение,т.к. максимум ошибки может достигаться быстрее.
+Рустам Абасов, если ошибка будет большая, то это не значит, что ответ будет прямо противоположным. Ответ никак не будет зависеть от результатов обучения. Сеть будет иногда выдавать правильные ответы, а иногда нет. Не будет корреляции между входными и выходными данными.
Огромное спасибо за труд!!!Скажите,а планируется ли материал по "обучению с подкреплением"?Очень интересно именно эту сферу освоить.И если нет, то не могли бы вы посоветовать материал по этой теме?Просто в инете много теории,а практического материала по "обучению с подкреплением" практически нету. 😢 За ранее спасибо! 😁
В видео рассказывается о математических основах обучения нейронных сетей, без привязки к инструментам. Эти основы не поменялись, так что видео актуально. Обновленная версия курса есть на платформе открытого образования - openedu.ru/course/urfu/PYDNN/. Пока курс закрыт, но запись на него начнется в феврале.
вот интересно, если в сети имеется множество весов, подбор их будет однозначный для какого то количества шаблонов или же возможна какая то коррелированная дифференциация весов для заданной ошибки?
Подбор будет не однозначный. Главное, чтобы ошибка была меньше, а каким образом это обеспечивается, не важно. Поэтому значения весов могут отличаться, причем очень сильно.
Некоторые всю математическую теорию уже проходили в университете, так что для них ничего нового. Но если с начала разбираться, то это действительно непросто. Можно и несколько раз пересмотреть :-)
А зачем все эти формулы, если вы их не можете нормально объяснить? Я могу также взять и учебник по нейросетям прочитать. Вы с книги это надиктовываете? Урок ничем от тысячи других таких же "уроков" не отличается. Статьи на хабре и то лучше
Согласен, но автор на сайте указал, что курс рассчитан на практическое использование нейронных сетей. А до того момента пока перейдешь на сайт и прочитаешь об этом, потратишь кучу времени. Видимо стоит в названии видео указывать о чем курс. А так, реально, тысяча "учителей" которые показывают одни и те же картинки и схемы, но толка нет. Чтобы понять как работает вещь нужно ее разобрать.
+Дюдя Усовский, не согласен, что нужно разбирать вещь. Вы автомобиль сначала разбирать и собирать научились, перед тем, как на нем ездить? То же самое с компьютером и смартфоном. Есть много вещей, которые мы используем без детального понимания их внутреннего устройства. Сейчас техника стала настолько сложной, что просто необходимы уровни абстракции, скрывающие эту сложность. Поэтому есть разные подходы к обучению: начинаем с основ и через 3-5 лет будем способны самостоятельно написать программу, которая распознает рукописные цифры. Или наоборот, берем готовые решения, применяем их для своих задач, и постепенно разбираемся во внутреннем устройстве. Мне больше нравится второй вариант. Но оба варианта жизнеспособны и подходят разным людям. Так что выбирайте сами, что вам нравится. В интернете есть много материалов, построенных совершенно по разному. Те же статьи на хабре с объяснением теории.
Andrey Sozykin я в детстве очень много разобрал часов, самые простые - ходики, и механические. За всю жизнь ни разу так и не собрал, но привычка разбирать осталась) Конечно, если я хочу научится ездить на автомобиле мне не надо его разбирать, достаточно знать базовые знания о двигателе, коробке передач, пдд и т.д.(хотя отсутствие таковых знаний не мешает ездить многим личностям). Но если я захочу собрать свой, даже простой автомобиль, то придеться лезть под капот. Вот у меня с нейросетями так, уже как год пытаюсь понять и создать свое, но пока, что недавно, появился крохотный свет в конце тоннеля. С основами разобрался, у меня закипает на сверточных сетях, а они мне прям, ой как интересны. Был бы благодарен, если вы б ответили на пару вопросов
Наоборот шикарно объясняет. Если не можешь умножить два числа и сложить - то возвращайся в школу. Или хотя бы почитай учебник амосова "численные методы для инженеров".
@@DentArturDent , это в каких школах нынче высшую математику преподают? Раньше матанализ и линейную алгебру только в универах преподавали. Впрочем, немного гугления и пара лекций на ютубе могут прояснить все непонятные моменты. Но смотреть нужно вдумчиво.
Интересные темы, блоггер не глуп, но рекомендую ему рожу лица убирать с заставок к видео. Его сельская физио не внушает оптимизма... да и вообще -- что это за культ личности? Кому надо, тот найдёт тебя, автор. А кому не надо -- видеть это не надо, т.к. заставляет проходить мимо. Ставь лучше сиськи (не свои)
К этому уроку надо 100% возвращаться после практики. Спасибо большое. Вашим студентам повезло. У Вас талант, к преподаванию, а это очень сложно!
Спасибо за приятный отзыв!
@@AndreySozykin Да это правда. Спасибо Вам.
Градиент - направление наискорейшего возрастания функции. Мы же хотим минимизировать значение функции ошибки. Поэтому двигаться при градиентном спуске будем не по градиенту, а по антиградиенту (т.е. в противоположном направлении).
Да, именно так. В лекции ошибка. Скоро перезапишу.
градиентный спуск предполагает движение вдоль градиента а в какую именно сторону решать вам, так что ошибки нет
градиенту всё равно, функция возрастает или убывает
Афигенский курс!! За 8 минут объяснил то, что я 10 лет не понимал. Андрей, обязательно продолжайте!!!
Спасибо за приятный отзыв! Буду продолжать обязательно!
Спасибо вам за этот превосходный урок! Это великолепно!)
Так доходчиво и понятно объяснили достаточно сложные для понимания темы)
Пожалуйста!
Спасибо Андрей. Благодаря вам и моему преподу по системному программированию стал интересоватся этой темой.
Отличная новость, спасибо!
Спасибо вам за курс, все ясно и доходчиво)
Пожалуйста!
Хорошо бы дублировать термины по-английски. Всё равно же придётся читать англичскую лит-ру, чтобы ориентироваться.
Да, это полезно. Я стараюсь делать, но, видимо, не всегда получается.
на русском литературы (+видео) нынче стало много, + оффлайн-курсов
Очень крутые видео! Большое вам спасибо. И за обзор кагл, который еще предстоит рассмотреть.
Спасибо!
Андрей, скажите пожалуйста, уместна ли аналогия:
Часто большой путь в разработку ЯП, вплоть до своей VM, начинается с Hello World средствами API одного из высокоуровневых языков.
Также и в машинном обучении: сначала бы научиться пользоваться уже готовыми открытыми библиотеками а уже потом, по мере необходимости, писать свою "уникальную" реализацию.
p.s. Не устаю благодарить вас за ваши Труды.
Вопрос очень интересный. Если вкратце, есть два подхода к образованию:
- Подход классических университетов, когда нужно сначала изучить основы и только потом переходить к практике. Нельзя ничего использовать, если ты не знаешь, как это работает. Такой подход наиболее предпочтителен, если хотим обучать ученых или прикладных исследователей.
- Подход технических университетов, когда на первом месте стоит решение прикладных задач. приветствуется использование готовых инструментов, из которых собирается решение как из кирпичей. Если что-то не работает, тогда залезаем внутрь "кирпичей" и разбираемся, как они устроены. Можно и написать свою уникальную реализацию, если это нужно для решения прикладной проблемы, и стандартные инструменты не позволяют.
У вас аналогия второго пути. Мне лично такой путь больше нравится, возможно, потому что у меня инженерное образование. Но первый путь нисколько не хуже второго, есть много людей, которые предпочитают именно его.
@@AndreySozykin Спасибо
Обучение нейронных сетей - это подбор весов. Замечательно. Ни тебе ЧТО ТАКОЕ нейронные сети, ни ЗАЧЕМ их нужно обучать, ни ЧТО такое веса и для чего они нужны. Всё просто, разведка боем, очень удобно, рекомендую!
Это ведь не первое видео в курсе. Вот плей-лист, там в начале есть, что такое нейронные сети - ruclips.net/video/GX7qxV5nh5o/видео.html
@@AndreySozykin да понял я уже понял всë, спасибо!
Андрей, добрый день. Очень интересный курс. Скажите, есть ли готовые обученные модели (аналоги распознавания лиц) по распознаванию других объектов. Например - есть сто тысяч изображений произведений искусства. И по произвольной фотографии одного из них - определить какое из фото в базе данных максимально соответствует этому произвольному . И скажите как можно связаться с Вами в telegram например. Спасибо
Спасибо Андрюха!
+Vasya Pupkin, пожалуйста!
о красавчик элез, не всю жизнь ведь игры стримить
+I TT игры я, кстати, никогда не стримил :-)
Просто вы на этого персонажа похожи (или он на вас) ruclips.net/user/ElezWarfacevideos
А как вычислять количество скрытых слоёв? И как между ними распределяется ошибка?
Количество скрытых слоев мы задаем при создании сети. Как его определять, это отдельный вопрос, на который нет конструктивного ответа. Нужно попробовать несколько вариантов и посмотреть, какой будет лучше работать.
Ошибка между слоями должна распределяться пропорционально вкладу каждого слоя, каждого нейрона, и каждой связи между ними в значения на выходе сети. Но на практике часто возникает проблема исчезающего градиента, когда ошибка быстро убывает.
Изучаю нейронки 2 день, и возник вопрос. Результат на новых данных, обученной сетки зависит же только от настроенных весов? К примеру мы натренировали сеть на 3 выборках задачи XOR, и теперь при подачи новой выборки будем надеяться, что веса подойдут и под эту выборку и мы получим то что хотим. В некоторых статьях пишут, что сеть сама определяет сходство новых данных и старых и определяет, что мы хотим на выходе, но это же невозможно в прямом смысле?
В прямом смысле это невозможно. Сеть не определяет сходство новых и старых данных, а сравнивает выходное значение сети с правильным результатом. В зависимости от того, насколько сильное отличие, изменяются веса входов в нейроны. Затем процесс обучения повторяется, пока выходное значение сети не будет хорошо совпадать с правильными ответами. Главное, чтобы хватило данных для обучения.
@@AndreySozykin да, но я имел ввиду когда мы обучили сеть с учителем, а после мы не знаем что должно получится.
Да, в процессе работы сеть не знает, что получится. Ей без разницы.
@@AndreySozykin Спасибо за ответ)
Просто супер!
Очень доходчиво.
Спасибо!
Спасибо вам за лекции, очень хорошо объясняете, единственное не поняла для чего применяется градиент? и как он работает? можете объяснить доступным языком пожалуйста
ruclips.net/video/HA-F6cZPvrg/видео.html
ruclips.net/video/AZG0j0pNY-4/видео.html это первое видео. Выше продолжение. Очень понятно про градиент.
Сложновато. Видимо надо доказывать сходимость метода для разных типов сигнала. Ну и стоимость алгоритма непонятно какая. Буду дальше смотреть))
Можно и нужно доказывать и стоимость оценивать. Но мой курс не об этом, а о практическом применении.
@@AndreySozykin Возможно, когда досмотрю станет понятнее. Просто везде идут разговоры о необходимости ферм из видеокарт, для решения простейших задач. Если бы были какие-то заранее ориентиры, для какого рода задач какие вычислительные мощности требуются - было бы понятнее. Но курс Ваш, а не мой. У Вас уже и опыт огромный и талант лектора. Так что не смею критиковать. Прослушаю, почитаю литературу, будет ясно. Благодарю за Ваши Старания!!!
Вы в конце лекции говорите об ошибках на выходах нейрона и рассчёте ошибки на входе. А разве не наоборот, у нейрона же один выход, а входов много?
Действительно, у нейрона один выход и несколько входов. Но при расчете ошибки сеть работает в обратном направлении, и входы и выходы меняются местами.
Один выход нейрона подключается к входам нескольких нейронов следующего слоя. При обратном распространении ошибки мы должны учесть ошибку, которая приходит от каждого нейрона следующего слоя на один выход нашего нейрона.
После этого мы рассчитываем значение ошибки на входе в нейрон, которое будет одно. И затем передаем это значение ошибки всем нейронам предыдущего слоя, которые подключены к каждому входу.
хорошо, понял, спасибо
а если пойти в сторону максимилизации ошибки,будет ли ответ обратным?(допустим у меня такая задача чтобы сеть выбрала из двух противоположных вариантов) .если да ,то это может сократить обучение,т.к. максимум ошибки может достигаться быстрее.
+Рустам Абасов, ошибка может уходить в бесконечность, так что ответ обратным не будет.
а если остановится на большом значении ошибки,то может можно найти ту величину ошибки ,когда ответ всегда обратен?
+Рустам Абасов, если ошибка будет большая, то это не значит, что ответ будет прямо противоположным. Ответ никак не будет зависеть от результатов обучения. Сеть будет иногда выдавать правильные ответы, а иногда нет. Не будет корреляции между входными и выходными данными.
хорошо .это идея просто возникла при просмотре,а так у меня много других идеи есть,более продуманных)
Спасибо!
Пожалуйста!
Огромное спасибо за труд!!!Скажите,а планируется ли материал по "обучению с подкреплением"?Очень интересно именно эту сферу освоить.И если нет, то не могли бы вы посоветовать материал по этой теме?Просто в инете много теории,а практического материала по "обучению с подкреплением" практически нету. 😢 За ранее спасибо! 😁
+Sergey Radimashvili, к сожалению, в обучении с подкреплением я не разбираюсь. Поэтому лекцию сделать не смогу. Готовых материалов тоже не знаю.
Хотел спросить на сколько это информация актуальна в 2021?
В видео рассказывается о математических основах обучения нейронных сетей, без привязки к инструментам. Эти основы не поменялись, так что видео актуально.
Обновленная версия курса есть на платформе открытого образования - openedu.ru/course/urfu/PYDNN/. Пока курс закрыт, но запись на него начнется в феврале.
вот интересно, если в сети имеется множество весов, подбор их будет однозначный для какого то количества шаблонов или же возможна какая то коррелированная дифференциация весов для заданной ошибки?
Подбор будет не однозначный. Главное, чтобы ошибка была меньше, а каким образом это обеспечивается, не важно. Поэтому значения весов могут отличаться, причем очень сильно.
А есть информация, как природа подбирает эти коэффициенты?
У меня точно нет.
Почитай про мемристоры. Синапсы автоматически подбирают эти веса, так же как и мемристоры.
смотрю на 2х скорости
Хорошо, что youtube позволяет смотреть на комфортной скорости.
Похоже ты робот, если воспринимаешь смысл формул на двойной скорости!
Некоторые всю математическую теорию уже проходили в университете, так что для них ничего нового. Но если с начала разбираться, то это действительно непросто. Можно и несколько раз пересмотреть :-)
1.25-1.50 и норм
Заболел мозг...
Теория без практики полная хрень.
А зачем все эти формулы, если вы их не можете нормально объяснить? Я могу также взять и учебник по нейросетям прочитать. Вы с книги это надиктовываете? Урок ничем от тысячи других таких же "уроков" не отличается. Статьи на хабре и то лучше
Согласен, но автор на сайте указал, что курс рассчитан на практическое использование нейронных сетей. А до того момента пока перейдешь на сайт и прочитаешь об этом, потратишь кучу времени. Видимо стоит в названии видео указывать о чем курс. А так, реально, тысяча "учителей" которые показывают одни и те же картинки и схемы, но толка нет. Чтобы понять как работает вещь нужно ее разобрать.
+Дюдя Усовский, не согласен, что нужно разбирать вещь. Вы автомобиль сначала разбирать и собирать научились, перед тем, как на нем ездить? То же самое с компьютером и смартфоном. Есть много вещей, которые мы используем без детального понимания их внутреннего устройства. Сейчас техника стала настолько сложной, что просто необходимы уровни абстракции, скрывающие эту сложность.
Поэтому есть разные подходы к обучению: начинаем с основ и через 3-5 лет будем способны самостоятельно написать программу, которая распознает рукописные цифры. Или наоборот, берем готовые решения, применяем их для своих задач, и постепенно разбираемся во внутреннем устройстве. Мне больше нравится второй вариант. Но оба варианта жизнеспособны и подходят разным людям. Так что выбирайте сами, что вам нравится. В интернете есть много материалов, построенных совершенно по разному. Те же статьи на хабре с объяснением теории.
Andrey Sozykin я в детстве очень много разобрал часов, самые простые - ходики, и механические. За всю жизнь ни разу так и не собрал, но привычка разбирать осталась)
Конечно, если я хочу научится ездить на автомобиле мне не надо его разбирать, достаточно знать базовые знания о двигателе, коробке передач, пдд и т.д.(хотя отсутствие таковых знаний не мешает ездить многим личностям). Но если я захочу собрать свой, даже простой автомобиль, то придеться лезть под капот.
Вот у меня с нейросетями так, уже как год пытаюсь понять и создать свое, но пока, что недавно, появился крохотный свет в конце тоннеля. С основами разобрался, у меня закипает на сверточных сетях, а они мне прям, ой как интересны. Был бы благодарен, если вы б ответили на пару вопросов
Отвратительное объяснение
Я кто ? Профессор математики ?
Вы людям объясняете , а не Перельману
Lucky_irishman _ школьных знаний математики для понимания того, о чем говориться в ролике, вполне достаточно
Наоборот шикарно объясняет. Если не можешь умножить два числа и сложить - то возвращайся в школу. Или хотя бы почитай учебник амосова "численные методы для инженеров".
@@DentArturDent , это в каких школах нынче высшую математику преподают? Раньше матанализ и линейную алгебру только в универах преподавали.
Впрочем, немного гугления и пара лекций на ютубе могут прояснить все непонятные моменты. Но смотреть нужно вдумчиво.
Интересные темы, блоггер не глуп, но рекомендую ему рожу лица убирать с заставок к видео. Его сельская физио не внушает оптимизма... да и вообще -- что это за культ личности? Кому надо, тот найдёт тебя, автор. А кому не надо -- видеть это не надо, т.к. заставляет проходить мимо. Ставь лучше сиськи (не свои)