Простая нейросеть. Алгоритм обратного распространения ошибки | Нейросеть на пальцах

แชร์
ฝัง
  • เผยแพร่เมื่อ 2 มิ.ย. 2024
  • Здесь подробно расписан алгоритм обратного распространения ошибки (backpropagation) с демонстрацией материала в Excel. Сергей Фриз (Sergey Freeze) на простом примере (функции XOR) разворачивает нейросеть и максимально простым языком объясняет как произвести ее обучение.
    Исходный архив .xlsm можно скачать здесь: disk.yandex.ru/d/2AakqZOzva4QCw пароль: «Домашка» (на латинице - «Ljvfirf»)
    В файле два макроса на VBA: (turbo Ctrl-t и медленный Ctrl-r (ограничен 10 эпохами))
    Предыдущее видео: • Как работает нейросеть...
    Смотреть курс «Python - это просто»: • Python - это просто!
    Смотреть плейлист «Нейросети и искусственный интеллект»: • Нейросети и искусствен...
    Наша группа ВК: domajka
    ✅ Поддержать канал: www.donationalerts.com/r/domajka
    Тайминги видео:
    00:00 intro
    00:46 Постановка задачи
    04:00 Расчет нейросети в Excel
    08:04 Алгоритм обратного распространения ошибки (backpropagation)
    12:46 Создание макросов VBA
    16:03 Проверка обученной нейросети
    16:40 Расчет суммарной ошибки в больших нейросетях
    17:14 Заключительное слово
    #Нейросеть

ความคิดเห็น • 57

  • @user-xz4ps5nh2c
    @user-xz4ps5nh2c 2 ปีที่แล้ว +9

    Всё гениальное просто, непонятно, почему так мало просмотров!? Автору спасибо за доступность изложения и качественно смонтированный ролик.

  • @user-uc1do9ch7c
    @user-uc1do9ch7c 3 หลายเดือนก่อน +1

    Это действительно самый понятный гайд на всем Ютубе. Большое спасибо автору!

  • @kataeff
    @kataeff ปีที่แล้ว +2

    Спасибо! Видео ОФИГЕННО полезно! Подобных видео на Ютуб полно, но все они копируют друг друга, при этом объясняют там так, что мои собственные нейроны сворачиваются в клубок. У Вас же всё понятно и доступно.

  • @skachat9000
    @skachat9000 หลายเดือนก่อน

    Я был на конференции математиков, и пытался им объяснить, что такое нейросеть, и как раз таки backprogation. Занял 5 место, потому что люди зацепились за слова по типу градиента, ФУНКЦИИ активации, доказывали что ЭТО НЕ ФОРМУЛА ГРАДИЕНТА, хотя все было разжевано, но был допущен к участию в более крупной конференции. Смотря ваше видео, у меня сложилось ощущение, что на этот раз я буду им рассказывать как на пальцах считать... Потому что буду объяснять как вы на видео...

  • @cherkasA
    @cherkasA 2 ปีที่แล้ว +4

    не знаю сработает ли, но такого подробного объяснения я еще не находил
    спасибо!

  • @andreiragozin103
    @andreiragozin103 6 หลายเดือนก่อน +2

    Проходной выключатель решается только с помощью проводов, но мы не ищем легких путей🤣

  • @flamehowk
    @flamehowk ปีที่แล้ว +8

    Ну вот я "хотя бы немного разбираюсь в электротехнике" и прекрасно понимаю, что такую задачу как раз элементарно решить с помощью только проводов - два дублирующих контура, которые на выключателях подключены в асимметричной логике. И не нужно никакого хитроумного устройства на микроконтроллерах.

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว +1

      Согласен, нужно было в условиях задачи отметить, что в примере используются обычные выключатели.

    • @johnpolak229
      @johnpolak229 18 วันที่ผ่านมา

      Тоже ожидал, что автор скажет, что это типовая схема проходного выключателя.

  • @user-mr1dy1go8i
    @user-mr1dy1go8i 3 หลายเดือนก่อน

    Самое понятное объяснение

  • @KlinovAS
    @KlinovAS ปีที่แล้ว +6

    Самое самое толковое, подробное и понятно обьяснение, которое можно не только послушать и забыть а реально сделать любую свою конфигурацию и все будет работать. Большое спасибо. Я годами слушаю про эту нейросеть и меня волновал всегда вопрос. А как именно веса подбираются? Кто первый, кто второй? Как понять что поднимать или опускать и где именно, ведь есть много скрытых слоев... Также от себя отмечу (меня никто не понимает с моих знакомых), я считаю, что нейросеть вот эта "математическая" требует современной оптимизации. Здесь нет логики бинарной вообще. А должна быть логика как в шахматах, как в японской головоломке (с рисунком и цифрами). Я делал распознавание символов вообще по своему алгоритму не зная что придумали нейросеть. У меня работает обучение на много быстрей (за один проход выучил и применяем). И другой плюс в том, что я могу расширять аргументы, а нейросеть требует уже изменение в архитектуры (даже если один нейрон добавить), что приведет к полному длинному переобучению. Также моя модель если нет правильного результата то так и покажет что нет. А нейросеть угадывает дальше... Но у меня хуже обстановка если мы работаем с градиентом. Тут нейросеть покажет себя НАВЕРНОЕ лучше. Также свою модель я не усовершествовал. Сохраненные данные обучения занимают реально копейки и работает очень быстро. Другая моя программа распознает дубликаты музыки. Можна по разному поизвращаться - программа находит дубликат. Не может найти только если изменить темп. Третяя програмка должна была искать изображение, но я забросил. Единственное, что я искал по радиусу соседний пиксель, который отличался по контрасту и отрисововал грань. Тоже саме делает и нейросеть. В том отличии лишь, что ей нужно учиться, а у меня это уже фундамент. Вот по этому я уверен, что нейросеть та которая есть сейчас, это хайп из изобретения 80их годов. А реально никто ничего не хочет думать. По бинарным принятиям решения типа XOR/OR/AND... считаю что, легко можно было бы придумать специализируванную бинарнуйю "нейросеть", которая бы быстренько подобрала логику (не веса, а логику). Так как скрытый слой должен играет роль высшего приоритета. По вашему видео, я хоть понял что к чему в сети. Короче, если рандом на вход не подавать, то она не будет учиться. Раздолбит миллион машин сперва, а потом только научится рулить правильно влево/вправо. Считаю это абсурдно. Но если в симуляции, то пусть. Для кого-то главное результат. А из того что есть, результат впечетляет (в некоторых направлениях даже очень). НО, УВЕРЕН, могло бы быть в сотни раз лучше

  • @vladlmlrzadorozhnyy3164
    @vladlmlrzadorozhnyy3164 2 ปีที่แล้ว +4

    Хорошее видео, продолжай, все понятно как и надо и без фраз типа ну дальше все ясно без объяснений. Попробу переложить на Си, почему то на Python у меня не все получается

  • @velteck
    @velteck ปีที่แล้ว

    Очень долго искал нормальное объяснение обратного распространения и нашёл это видео. Незнаю почему другие не могут также понятно объяснять.

  • @IncoStar
    @IncoStar ปีที่แล้ว +1

    Очень интересно!!! Так же было бы очень интересно как реализован многослойный перцептрон с двумя выходами и несколькими слоями. Очень признателен за проделанную работу.

  • @metomarphoz
    @metomarphoz ปีที่แล้ว +1

    Лучшее объяснения я считаю.

  • @atosvanner4900
    @atosvanner4900 ปีที่แล้ว +1

    Интересные и понятные видео, отличная работа!!! Почему не продолжаете?

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว

      К сожалению нет пока времени(((

  • @Kkkooottt88
    @Kkkooottt88 ปีที่แล้ว

    Боже мой это наверное уже десятый "о ну вот этот мужик вроде понятно обьясняет" но только наконец-то благодаря этому видео у меня все получилось! Спасибо огромное! Просто хотел реализацию на Golang сделать гибкую. Спасибо огромное!

  • @oivanov520
    @oivanov520 8 หลายเดือนก่อน

    Спасибо за ваш труд!!! Отличная подача материала!

  • @RunBull
    @RunBull ปีที่แล้ว

    самый понятный гайд на всем ютубе

  • @user-kz7jc2pf2f
    @user-kz7jc2pf2f ปีที่แล้ว +3

    Первый раз вижу такой сложный проходной выключатель )))

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว +1

      Простых путей не ищем)))

  • @duri7954
    @duri7954 ปีที่แล้ว

    Долго интересовала тема нейросетей, но проблема заключалась в том что мой мозг ни в никакую не воспринимал объяснения на более популярных видеорядах, казалось что эта тема - что то недостижимое для меня. После просмотра вашего видео я моментально смог понять что из себя представляет нейросеть и с чем ее едят (грубо говоря я искал любой простой и наглядный пример). Пример нейросети что был показан просто шикарно подходит для введения и начального понимания, благодаря нему я смог сделать свой первый и самый сложный шаг - понять механизм на самом примитивном уровне. Благодаря этому меньше чем за день после просмотра видеоряда у меня уже получилось реализовать свою собственную нейросеть без библиотек с нуля. Хоть она и до жути примитивна (определение циферки нарисованной на холсте 3x5), это все равно огромный прорыв. Первый шаг пройден, теперь дальнейшее развитие зависит только от меня, выражаю огромную благодарность автору за такую возможность.

  • @ssaidahmed
    @ssaidahmed 5 หลายเดือนก่อน

    супер!

  • @makishimu25050
    @makishimu25050 ปีที่แล้ว

    Почему "с помощью проводов не решается" (01:45)?) Нужно лишь два 3 контактных выключателя. Это, по сути, исключающая или))
    Спасибо за видео, было очень интересно!)

  • @limonello1964
    @limonello1964 ปีที่แล้ว

    Спасибо

  • @rollocks9138
    @rollocks9138 ปีที่แล้ว

    Если кто-то делал нейросеть для распознавания рукописных цифр, то напишите, пожалуйста, ваши гиперпараметры (батчи и мини-батчи тоже), метод активации нейрона и количество эпох, через которое вы получили более менее обученную нейросеть. Я для диплома делаю почти такую же нейросеть (там ещё латинские буквы) с нуля на C#, и мне бы хотелось с чем-то сравнить результаты обучения, что бы понять - обучение сделано правильно или нет.

  • @user-sx3ji1eg5i
    @user-sx3ji1eg5i ปีที่แล้ว

    Полезно

  • @olegzorin3911
    @olegzorin3911 ปีที่แล้ว

    На подумать. Задача с выключателями решается только с помощью проводов. Схема очень простая.

  • @defix_gamedev
    @defix_gamedev 3 หลายเดือนก่อน

    лучший, у других слишком много вышмата

  • @L_A_B_
    @L_A_B_ ปีที่แล้ว

    Отличное объяснение принципа работы нейронных сетей!!! Спасибо за видео. Подскажите что за программа нейросимулятор и где её можно найти?

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว +1

      Это неросимулятор Ясницкого Л.Н и Черепанова Ф.М. Попробуйте поискать на www.lbai.ru/ в лабораторном практикуме Nsim5sc.zip

    • @L_A_B_
      @L_A_B_ ปีที่แล้ว

      @@user-lc9jk4ww8o Благодарю!

    • @peters6007
      @peters6007 8 หลายเดือนก่อน

      Спасибо большое!@@user-lc9jk4ww8o

  • @zloibot3899
    @zloibot3899 ปีที่แล้ว

    Это же проходной выключатель. Легко решается посредством проводов) логика простая

  • @flamehowk
    @flamehowk ปีที่แล้ว +1

    И второе - эту задачу как раз элементарно можно решить не просто однослойным перцептроном, но даже всего ОДНИМ нейроном. Для этого достаточно в качестве функции активации поставить пороговую функцию с диапазоном, где 0 < x < 2.

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว +1

      Да можно, но такой нейрон будет служить для узкоспециализированных задач, а ведь видео не об этом, а об алгоритме обратного распространения ошибки.

    • @flamehowk
      @flamehowk ปีที่แล้ว

      @@user-lc9jk4ww8o Я постоянно встречаю это утверждение, а значит, люди просто не понимают, что можно и по-другому. А то, что люди не понимают как это все работает, создает огромное количество трудностей. Но они и не пытаются понять - просто рисуют нейросети пошире, а в фермы для расчетов вкладывают побольше.
      Это не разумный путь...
      Вот Вы пытаетесь другим объяснить обратное распространение ошибки, а сами то до сих пор не знаете - почему же нейронная сеть работает и какие механизмы к этому приводят. Для Вас это до сих пор черный ящик.
      Так мы ни к чему не придем...
      А было бы неплохо, чтобы люди еще и старались понять - что они делают и почему.

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว

      @@flamehowk Ну в одном же видео все не расскажешь! Этому видео так-то предшествовали ещё два других. А поскольку у людей нет особого интереса по данной теме, по крайней мере на моем канале, то пока взял паузу.

    • @flamehowk
      @flamehowk ปีที่แล้ว +1

      @@user-lc9jk4ww8o Да никто этих знаний и не имеет. Все только копируют друг у друга структуру перцептрона и классический набор функций активации. Никому и в голову не приходит, что функция может быть пороговой, а не активирующей.
      Поэтому-то для мира глубокого обучения было открытием, что замена сигмоиды на ReLu, а вернее - просто удаление функции активации и добавление примитивного порога на нулевом значении, вдруг несказанно улучшило не только обучаемость нейронной сети, но и ее работу.
      Это называется - метод научного тыка. А понимания до сих пор ни у кого нет. Так что - было бы что рассказывать, давно бы рассказали.
      А что касается интереса к этой теме... дак что ж Вы удивляетесь, в нашем мире единицы думают, процента 2-3 тех, кто думает, что они думают, а в се остальные 97% - лучше умрут, чем будут думать. А Вы хотите у них вызвать интерес тонкостями обучения нейронных сетей.
      Вот слепить фигу из козьих отходов пищеварения или облить помоями какую-нибудь известную личность - вот это им зайдет... сотни тысяч просмотров гарантированы. А если сделать это еще и с талантом - то и миллионы.
      Так что если Вам нужна популярность или заработок, то Вы явно не о том снимаете ролики.

    • @alex_step_
      @alex_step_ ปีที่แล้ว +2

      @@user-lc9jk4ww8o
      Интерес у людей есть. А вот то, что людей таких не много с этим, конечно не поспоришь.
      Ты конечно, можешь считать, что это обычный ролик каких тысячи в сети. Но нет. У тебя всё доходчиво.
      Лайк. Подписка.

  • @GennadiyBunin
    @GennadiyBunin ปีที่แล้ว

    Здравствуйте видео огонь, но есть один вопрос как рассчитать сумму ошибок на выходном нейроне, если их три на выходе?

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว

      Так на выходных нейронах не надо считать сумму ошибок! Ошибка e = y - d, где y - это то что выдал нейрон, а d - то что на нем ожидалось. Сумма ошибок считается только на скрытых слоях.

    • @GennadiyBunin
      @GennadiyBunin ปีที่แล้ว

      @@user-lc9jk4ww8o Получается на этих трех выходных будет своя ошибка?

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว

      @@GennadiyBunin ну да, см. 10:04

  • @likey_dikey235
    @likey_dikey235 2 ปีที่แล้ว +1

    Понятно, вот только загвостка у меня долгое время с пониманием логики 3-х формул обратного распространения. Как их вообще получили?

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  2 ปีที่แล้ว +1

      Локальный градиент - это ошибка умноженная на производную от той или иной функции (f`(x)=f(x)*(1-f(x)) - производная сигмоидной функции). На этот счет очень много скучного материала в интернете... Я специально не стал его приводить. Советую посмотреть книги: Тарик Рашид "Создаем нейронную сеть" и Л.Н. Ясницкий "Искусственный интеллект", в них доступно объясняется как была получена формула обратного распространения ошибки.

    • @user-oh9uf3ht3o
      @user-oh9uf3ht3o ปีที่แล้ว

      @@user-lc9jk4ww8o а как реализовать нейронную сеть для прогнозирования временных рядов в Excel, например температуру окружающей среды на завтра?

  • @IncoStar
    @IncoStar ปีที่แล้ว

    Будет продолжение?

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว +1

      Хотелось бы надеется, что да, но очень сильно занят(((

  • @nighthunter28
    @nighthunter28 8 หลายเดือนก่อน

    2-1 нейросеткой решается XOR

  • @user-zs4kv4ii7d
    @user-zs4kv4ii7d 5 หลายเดือนก่อน

    Материал хороший, качество видео ужасное, жаль.

  • @user-sd3fk3fj2i
    @user-sd3fk3fj2i ปีที่แล้ว

    Ниуя не какого устройства не надо нужен 5жильный кабель и два выключателя на два положения№

  • @romanpopov8836
    @romanpopov8836 ปีที่แล้ว

    Вероятно автор не внимательно изучил источники, многие из которых сообщают что проходной выключатель это очень простая схема состоящая только из одних проводов - stroisovety.org/wp-content/uploads/2014/07/proxodnoj-vyklyuchatel-03.jpg 🙂

    • @user-lc9jk4ww8o
      @user-lc9jk4ww8o  ปีที่แล้ว +2

      Мое упущение, нужно было в условиях задачи отметить, что в примере используются обычные выключатели.

    • @user-oh9uf3ht3o
      @user-oh9uf3ht3o ปีที่แล้ว +1

      @@user-lc9jk4ww8o а как реализовать нейронную сеть для прогнозирования временных рядов в Excel, например температуру окружающей среды на завтра?