Сложно следить за околонаучными темами, и понимать, что ветка эволюции научного направления пошла не туда. Сейчас случился некий бум псевдонаучного взлета LLM, и я приведу в качестве современной статьи на хабре лишь одну, но это по прежнему массовое явление. Например, в статье компании Friflex за 2024 год История LLM-агентов: 10 ярких моментов по прежнему утверждается "На смену однослойному перцептрону Розэнблатта пришел многослойный. В статье Learning representations by back-propagating errors («Обучение представлений с помощью обратного распространения ошибки») Румельхарт и Хинтон показали, что многослойный перцептрон справляется с задачами, которые были не под силу его однослойному предшественнику. Например, с XOR. ". Совершенно излишне говорить, что это полное вранье, а авторы статьи даже не потрудились открыть эту статью, чтобы её прочитать. Это стало массовым явлением, и я его наблюдаю как минимум 20 лет, я когда то написал тут на хабре цикл статей объясняющих детали, лучше всего посмотреть эту Какова роль первого «случайного» слоя в перцептроне Розенблатта. Поэтому к этому возвращаться не будем. Я не знаю почему, может это массовая культура так влияет на людей, а порог вхождения в тематику ИИ слишком сложный? Не знаю, но не важно. Чтобы продемонстрировать скорость обучения перцептрона я написал несколько реализаций перцептрона Розенблатта и выложил их на гитхабе. А затем мы коснемся LLM.


Реализация перцептрона Розенблатта и почему я о нём вспомнил

Когда то давно я уже писал статью, поэтому ограничусь ссылкой на гитхаб реализации перцептрона Розенблатта, там код на C# и он прокомментирован. Было бы желательно, чтобы вы с ним ознакомились.

Там вы найдете:
1. Классическую версию перцептрона Розенблатта (NeironNetR)
2. Оптимизированную, сохраняющую активность среднего слоя для каждого примера, она быстрее обучается но требует больше памяти (NeironNetA)
3. Блочную версию, которая пытается обучить перцептрон показывая примеры блоками (NeironNetB)

А так же там есть реализация перцептрона на Cuda. Её я выполнял ориентируясь на советы DeepSeek, поэтому если кто-то поможет оптимизировать буду благодарен.

Тестовая задача классическая - это четность (обобщение XOR), сама по себе она не интересна и нам интересно лишь производительность, которое заставляет желать лучшего. Собственно, почему я стал скептиком нейросетей вообще.

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

Причем тут LLM?

Хорошо, скажите вы, а причем тут вообще перцептрон Розенблатта, если LLM основаны на другом алгоритме backpropagation?

Важно подчеркнуть, что в этой статье мы не будем касаться задачи обобщения, когда то я об этом уже писал Понятие о структурной адаптации и введение в «чистое обобщение». А просто вернемся к вопросу, которым я задавался с начала статьи: почему ветка эволюции научного направления пошла не туда, а именно почему LLM основываются на backpropagation, а не на перцептроне Розенблатта. Я часто задаю этот провокационный вопрос, и почти никто не отвечает правильно.

А ответ простой: перцептрон Розенблатта не позволяет обучать больше одного слоя. Но тогда я спрашиваю: а что дает два, три и больше скрытых слоев? Опять же единственно правильный ответ был бы: каждый следующий слой дает иерархическое выделение признаков. Но это общие слова, а кто-то когда то показал это в научной статье? Подскажите если знаете, я лично таких статей не знаю. Вот и DeepSeek отмораживается от такого вопроса.

Но кто не знает, давайте вспомним [смешная фраза получилась, пожалуй оставлю], что именно для перцептрона Розенблатта существует теорема сходимости. Именно, он позволяет гарантированно найти решение для любой задачи, только если хватит вычислительных мощностей. Для backpropagation - это не так, наоборот маркетологи придумали смешной термин "переобучение сети", попробуете это объяснить? Backpropagation не гарантирует схождения. Тогда почему в основу LLM положен backpropagation ?

Не ужели для перцептрона Розенблатта нельзя придумать альтернативный метод обучения нескольким слоям, если вдруг оказалось бы, что backpropagation действительно осуществляет иерархическое выделение признаков?

В итоге, для backpropagation вообще сложно говорить о каких то метриках:

  1. Он не обучается всему, что ему показываешь

  2. LLM скачек "интеллекта" появляется только на огромных вычислительных мощностях, не меньше 1000 современных видео карт, по сути "вычислительный завод", т.е. отдельный человек уже не может проводить эксперименты

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

  4. Обучающая выборка - это, якобы коммерческая тайна

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

Комментарии (26)


  1. kipar
    28.08.2025 18:22

    LLM хорошо ложаться на ГПУ, поэтому в них можно вбухать "1000 современных видеокарт" и получить подобие интеллекта.
    Есть предположение, что любая другая архитектура которая будет также хорошо масштабироваться тоже получит хорошие результаты. Но в случае перцептрона теорема сходимости доказана только для классического случая (когда обучаем один слой), так что преимуществ у него не видно.


    1. JBFW
      28.08.2025 18:22

      Кто его знает...

      Что-то вспомнились споры времён начала 90-х, какая технология победит, FrameRelay или TCP/IP ? FrameRelay широко известна и активно используется, а TCP/IP сложна и избыточна, значит не нужна никому...


      1. E2a
        28.08.2025 18:22

        У них там в Америках при наличии сетевых карт FrameRelay прямо внутри AS/400 и других железок типа банкоматов эти споры были актуальны. У нас же FR пришел как замена X.25, чтобы можно было и голос передавать, и как услуга взамен аренды прямых цифровых каналов у операторов (была, но не взлетела, теперь это L2VPN). Затем FR был заменён MPLS. TCP/IP при этом передавался или поверх X.25, или поверх инкапсуляций X.25 типа HDLC, или поверх FR, или поверх инкапсуляций PPP, SLIP, multilink PPP, а теперь он передаётся поверх MPLS.

        Сам по себе IP не может передвигаться по проводам, он 3-го уровня модели OSI. FR - может, он 2-го уровня. Поэтому сравнивать что победит немного некорректно технически, но корректно в плане бизнеса и рынка. По факту MPLS победил и вытеснил FR, в том числе за счёт опережающего роста доступной пропускной способности. FR выше полосы E3 уже не изготавливался, он интересен для узких каналов. В 2003-м на FR по выделенным ТЧ каналам 24000-33600 запускали 2 VoFR голоса одновременно и данные, и оно успешно работало (на 21000 пролезал уже только один голос). C IP такого просто не получится, оверхед инкапсуляций не позволит даже при ровно том же сжатии голоса, нужно ещё компрессию заголовков пакетов наворачивать, и вот уже тогда может быть...

        В мотороловских презентациях тех лет двигали фирменную технологию видео через ТЧ-модемы коммутируемого доступа, где через 33600 пропускали охранное Ч/Б телевидение 5 кадров в секунду, и оно работало, стоило правда дорого очень. Никакое IP конечно там не участвовало и близко.


        1. JBFW
          28.08.2025 18:22

          Ну просто в итоге сейчас "победил" TCP, прежде всего как универсальный транспорт. По физическим проводам, и не только проводам, он прекрасно передается через тот же PPP - тоже универсальный транспорт.

          А тогда это было очень не очевидно и не оптимально


    1. tac Автор
      28.08.2025 18:22

      //теорема сходимости доказана только для классического случая (когда обучаем один слой)

      и что это означает? решатся любое отображение input -> output ... а у backpropa и этого нет


      1. Kreastr
        28.08.2025 18:22

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

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

        Что касается послойного выделения фич в целом, то есть работы которые косвенно, но убедительно эту гипотезу подтверждают. Вот тут, например, в цитируемых работах раздолье по этому поводу https://arxiv.org/html/2406.10868v2 Вообще ищут и нейроны (отдедбные и группы) по темам и по задачам. Да и в принципе процесс дистилляции изучают и оптимизируют потому что хочется эффективных узконаправленых специалистов получить. А дистиляция по-сути и есть выделение важных для темы нейронов и редукция остальных.


  1. kulity
    28.08.2025 18:22

    Совершенно излишне говорить, что это полное вранье, а авторы статьи даже не потрудились открыть эту статью, чтобы её прочитать

    А вы не потрудились ваши слова подкрепить даже хотя бы какой-нибудь статьей (не вашего авторства).

    Все вокруг непонимающие идиоты, кроме, конечно же, вас. А в чем собственно ваше предложение/решение заключается?

    Но тогда я спрашиваю: а что дает два, три и больше скрытых слоев?

    Насколько я знаю и понимаю наличие больше 1 слоя позволяет аппроксимировать нелинейные функции. И на одном слое, например, не получится решить задачу классификации линейно неразделимых объектов.


    1. tac Автор
      28.08.2025 18:22

      перцептрон Розенблатта не позволяет обучать больше одного слоя. Но тогда я спрашиваю: а что дает два, три и больше скрытых слоев?

      Срезали контекст и получилась ерунда. Что дает обучение двух, трех и больше скрытых слоев?

      Насколько я знаю и понимаю наличие больше 1 слоя позволяет аппроксимировать нелинейные функции. И на одном слое, например, не получится решить задачу классификации линейно неразделимых объектов.

      Понимаете вы не верно. Для этого и давал ссылки, которые вы не соизволили даже открыть. Не понравилось авторство? Так откройте оригинал. Окажется, что перцептрон Розенблатта никогда, просто никогда, не был однослойным. В самой его простейшей версии всегда была два слоя весов, один слой выбирался случайным образом, а второй обучался. Зачем обучать оба слоя или тем более три, четыре, или как сейчас в LLM 32 - никто никогда не ответил, опираясь на научные факты.


      1. kulity
        28.08.2025 18:22

        Это вполне нормальное явление, когда наука не поспевает за практикой. Поэтому отсутствие математически выверенного ответа не делает текущий подход каким-то плохим. Более того человечество видит объективные (для кого-то даже впечатляющие) результаты развития так вами ненавистных моделей с десятками слоев. Однако чем могут похвастаться модели с одним обучающим слоем? Уж вполне достаточно времени прошло, чтобы они могли раскрыть свой потенциал.


      1. Hardcoin
        28.08.2025 18:22

        Странные у вас формулировки. Вы не знаете, а подаёте это так, будто все немного туповаты. Проверьте гипотезу, может туповаты вы? Теорему Цыбенко вы понимаете?

        Факты есть, но вы слишком высокомерны, что бы их узнать.


        1. tac Автор
          28.08.2025 18:22

          Сейчас все проще, спросил у DeepSeek, т.к. Вы в своей высокомерности лишь упомянули теорему Цыбенко, вместо того, чтобы объяснить при чем она тут.

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

          Вы видимо спутали, мы говорим не о аппроксимации, а о сходимости.

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

          Именно это я и сказал. Вы нашли для меня подтверждение мои слов? Спасибо.

          Что дает обучение двух, трех и больше скрытых слоев?

          Ответ следовательно, в соответствии с упомянутой вами теоремой, - ничего? ! Верно. ч.т.д.


          1. Hardcoin
            28.08.2025 18:22

            Вы видимо спутали, мы говорим не о аппроксимации, а о сходимости.

            Нет, я не спутал. Кроме сходимости вы спросили, зачем используются многослойные сети, теорема была в связи с этим, а не в связи со сходимостью.

            Вы нашли для меня подтверждение мои слов? Спасибо.

            Вам самому-то как? Нормально?

            Ответ следовательно, в соответствии с упомянутой вами теоремой, - ничего? ! Верно. ч.т.д.

            Да. Поэтому все, кто делают многослойные сети - тупые. Они ведь не догадались, что достаточно одного слоя. 10-20 лет делают топовые сети, а теорему Цыбенко не знают. Всё так (на самом деле нет)

            Сделайте, пожалуйста, следущий шаг. Спросите самого себя. Почему человек, зная, что теория позволяет сделать всё одним слоем, использует несколько. Не используйте ответ "он дурак", придумайте другой. Зачем?

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


            1. tac Автор
              28.08.2025 18:22

              Вы хоть сами заметили, как приписали мне "агрессивные вопли" и прочие ad hominem. Это неконструктивное общение продолжать не имею желания.


              1. Hardcoin
                28.08.2025 18:22

                Агрессивные вопли? Я про это не писал, что вы имеете ввиду, не ясно.


                1. tac Автор
                  28.08.2025 18:22

                  "Вы не знаете", "подаёте будто все туповаты", "может туповаты вы", "вы слишком высокомерны", "все - тупые",  "он дурак"

                  Не пытайтесь приписать мне того, чего вы не знаете или интерпретировать мои слова в своем таком свете - это исключительно ваши комплексы.


                  1. Hardcoin
                    28.08.2025 18:22

                    Разве слово «вопли» здесь уместно?

                    «Подаете, будто все туповаты» - это не значит, что я вам приписываю. Это значит, что это так выглядит. Возможно, вы считаете исследователей умными и хотите им помочь. Но внешне ваш текст выглядит иначе - «Книгу никто не открыл?!» - разве это выглядит так, будто вы считаете топовых исследователей умными? Нет, не выглядит. Как вы сами считаете, я не знаю. Но как вы написали - я вижу.

                    «Вы высокомерны» - да, это ad hominem. И в содержательной дискуссии по нейросетям мне было бы стыдно за него. И если бы кто-то спросил, в чём [фундаментальные] проблемы нейросети с одним слоем, я был бы рад ответить (с двумя, тремя, ответ есть).

                    Но вы пишете иначе. «Зачем обучать два слоя, так никто и не ответил». Однако мы-то знаем зачем! И ответ есть. Но вы утверждаете, будто никто не ответил (может быть вы его искали и не нашли, не знаю). Сама эта форма ломает всю содержательность беседы.

                    А наличие моих комплексов не опровергает факта, что например, в сверточных сетях прорыв наступил именно когда добавили количество слоев. И объяснение, почему так, в целом строгое. Может вы его знаете и нашли ошибки? Да вроде даже не упомянули. Вот именно это лично я и считаю высокомерием.

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


                    1. tac Автор
                      28.08.2025 18:22

                      Так может быть вместо того, чтобы строить свои догадки обо мне и том как я якобы отношусь к исследователям (хотя я нигде про это не написал, а вы сделали выводы на голом месте; к исследователям у меня претензий нет, т.к. они в отличии от тех о которых я писал в статье, таких глупостей про перцептрон не пишут, разве что один - Ф. Уосермен) - лучше привести те аргументы, которые вы знаете? И заметить другие мои слова в статье и прочитать их буквально, а не придумывать за меня?

                      Но это общие слова, а кто-то когда то показал это в научной статье? Подскажите если знаете, я лично таких статей не знаю.

                      "И если бы кто-то спросил, в чём [фундаментальные] проблемы нейросети с одним слоем, я был бы рад ответить "

                      Пока не вижу вашего желания, вижу лишь то, что Вы начали с позерства.

                      И нет о сверточных сетях я не знаю, было бы интересно узнать, что именно вы имеете введу. Вы или оппонируйте, приводя аргументы, или не позёрствуйте, пока выглядит совсем наоборот, что вы цепляетесь за какие то поверхностные представления. А то что вы считаете якобы строгим, на проверку оказывается простым балабольством? Может говоря о сверточных сетях вы имеете введу ровно то ,что я и написал: "каждый следующий слой дает иерархическое выделение признаков"? Ну тогда внимательнее читайте и если отвечаете, то по сути.

                      P.S. И да - это вопли, перестаньте вопить.


                      1. Hardcoin
                        28.08.2025 18:22

                        лучше привести те аргументы, которые вы знаете

                        Вы их не спрашивали. (Не обязательно у меня, но вы вообще не проявляете сомнений в своих словах. Солнце крутится вокруг Земли и точка)

                        заметить другие мои слова

                        Почему вы решили, что я не заметил?

                        Может говоря о сверточных сетях вы имеете введу ровно то ,что я и написал: "каждый следующий слой дает иерархическое выделение признаков"?

                        Нет, не может, что бы я имел это ввиду. Это не является в строгом смысле обязательным и в такой форме не являлось бы подтверждением.

                        Ну тогда внимательнее читайте и если отвечаете, то по сути.

                        Как только вы по сути напишете, я вам по сути отвечу.

                        пока выглядит совсем наоборот, что вы цепляетесь за какие то поверхностные представления

                        Да, я понимаю это. Вы очень поверхностно написали статью, я очень поверхностно обсудил. Но я честно признаю, что я не дал вам возражений (кроме одного), а лишь усомнился в ваших словах. И можете сделать вывод, что я не разбираюсь, потому что содержательных аргументов я избегал и это выглядит, будто их нет (вдруг их и правда нет, а я запутался? Такой вывод сделать можно).

                        P.S. И да - это вопли, перестаньте вопить.

                        Уважаю ваше право иметь любое самое странное субъективное мнение.


                      1. tac Автор
                        28.08.2025 18:22

                        Вы их не спрашивали ... Почему вы решили, что я не заметил?

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

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

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


  1. kuza2000
    28.08.2025 18:22

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

    Я вообще это не понимаю.

    Перцептрон - это архитектура НС, backpropagation - это метод обучения. Почему вы сравнивает архитектуру с методом обучения? Тот же перцептрон можно обучать с помощью backpropagation.

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

    Причем тут маркетологи, тоже не понимаю, этот термин рожден десятки лет назад.


  1. kuza2000
    28.08.2025 18:22

    Прочитал ваши статьи. Что могу сказать.

    1. Перцептон Розенблата, это обычный перцептрон с одним скрытым слоем и зафиксированными весами первого слоя. Инициализируются случайно. backpropagation для его обучения использовать можно, такая архитектура реализуется в любой развитой библиотеке ML за 20 минут. Он будет делать то же самое, что и код из ваших статей - увеличивать "хорошие" связи, уменьшать "плохие". Да, можно тут же реализовать и оригинальный алгоритм, это тоже просто. И сравнить. Сильно сомневаюсь, что оригинальный алгоритм будет работать лучше.

    2. У вас почему-то посыл, что backpropagation - это плохо, так как сходимость не доказана, а вот Перцептон Розенблата - это круто, сходимость доказана. На самом деле все обстоит по другому. backpropagation - это дальнейшее развитие того метода, который предложил Розенблат. Некст левел, обобщение с гораздо большими возможностями.

    3. Перцептон Розенблата может переобучаться - только в путь. Возьмите, к примеру по несколько десятков цифр из набор данных MNIST, обучите на них перцептон Розенблатта и постройте кривые обучения. В качестве теста используйте оставшуюся часть набора. Средний слой должен быть достаточно большим, попробуйте начать с 500. Красивые кривые переобучения вас удивят :)


    1. tac Автор
      28.08.2025 18:22

      Прочитал ваши статьи.

      Спасибо, это уже хорошие начало :)

      У вас почему-то посыл, что backpropagation - это плохо

      Нет, это ваше восприятие. Я лишь указал на то, что всякие околонаучные деятели (на примере  компании Friflex  ) пишут о том, чего не знают, и не смотрят в оригиналы.

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

      Не совсем так, и скорее совсем не так. backpropagation действительно обладает некоторыми интересными свойствами, но в то же время имеет множество проблем. Как и наоборот. Они достаточно разные если сравнивать. Восприятие "некст левел" в совокупности с массовым враньем создает неверное впечатление о подходе Розенблатта в целом.

      Перцептон Розенблата может переобучаться

      Сформулируйте, пожалуйста, что означает этот термин вообще? Я не могу найти ни одного научно определения. Точнее, нужно спросить себя "Как определить математически когда наступает переобучение" - и в ответ получить "никак, никак, никак"?


  1. kuza2000
    28.08.2025 18:22

    Сформулируйте, пожалуйста, что означает этот термин вообще? Я не могу найти ни одного научно определения. Точнее, нужно спросить себя "Как определить математически когда наступает переобучение" - и в ответ получить "никак, никак, никак"?

    Научного определения я действительно не знаю. Возможно, оно есть, просто не знаю.

    Как это выглядит на практике, достаточно хорошо известно. Есть задача обучения с учителем, задача классификации. То есть, у нас есть входные вектора, и для каждого определен класс. Во входных данные всегда есть шум, лишние данные. Допустим, мы тренируем сеть распознавать цифры. Все данные, которые не относятся к тем, что нужны для распознавания - это шум. Например, изменение толщины линий, позиция символа, его размеры, варианты написания, и т.д. Все эти данные есть во входном векторе, но они не нужны. Отделить их мы не можем. Если бы могли - нам не понадобилась бы НС. Когда мы учим сеть, ей нужно выделить полезные признаки и игнорировать шум. Но, на самом деле, сеть не может решить эту задачу - для нее шум и полезные признаки не отличимы.

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

    Обучающую выборку делят на два набора - один для обучения, другой - для тестирования.

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

    Для иллюстрации могу вспомнить байку, когда сеть учили узнавать танки. Выучили, получили очень хороший результат, скажем 99% точность. Потом взяли еще набор фото. И на нем вдруг полная ерунда, показываешь авто или человека - она говорит "танк" с полной уверенностью! Наконец один товарищ заметил, что на все фото с пасмурной погодой сеть говорит "танк!". Посмотрели обучающий набор - а там все танки сняты в пасмурную погоду, а в качестве "не танк" добавили множество случайных фото, где уже погода разная:) Это пример, конечно, плохих данных, и даже не про переобучение. Но он показывает то, что сеть совершенно не знает, какие признаки важны, а какие - нет. Какие шум, а какие - полезны.


    1. tac Автор
      28.08.2025 18:22

      Научного определения я действительно не знаю. Возможно, оно есть, просто не знаю.

      Отлично. Поэтому, возможно, я зря ассоциировал этот термин с маркетологами (как вы верно заметили), просто хотел смягчить, так как это чистой воды шарлатанство. А ваше объяснение хорошо тем, что рассказывает доступным языком. Но это я поискал и нашел в научной литературе, ничего более точного, чем ваши рассуждения.

      Во входных данные всегда есть шум, лишние данные.

      Это мягко говоря не так. Например, в задаче четность (о которой я говорю в своей статье) таких данных нет, да и вообще, в классической литературе, например, у Минского не рассматриваются задачи, в которых по определению во входных данных есть шум. Наоборот, считается что обучающая выборка уже заранее очищена от шума. И это понятно, потому, что нейронные сети действительно не могут за ВАС решить, что шум, а что нет. Может быть это не шум, а просто нестандартное изображение.

      Это, кажется, как раз Вы предлагали решить задачу MNIST. Так вот, это как посмотреть - там дается набор обучающих данных. Там не сказано, что какие то из них шум. И если присмотреться, там все рукописные изображения цифр человек воспринимает. Просто некоторые из них уж очень криво написаны, что ЛЮБЫМ алгоритмом не воспринимаются. Считать их шумом - это мягко говоря странное решение. Но следите за руками дальше.

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

      С backpropagation как раз то "до упора" сеть НИКОГДА не обучишь, он не сходится. Ученные уже даже перестали замерять реальное количество ошибок на обучающей выборке. Вам подсовывают какие то статистические показатели, которые ничего не говорят сколько ошибок допустила сеть на обучающей выборке. Более того, часто это и оправдывают тем, что дальше произойдет якобы переобучение, хотя на самом деле, алгоритм этого не может.

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

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

      Отделить их мы не можем. Если бы могли - нам не понадобилась бы НС. Когда мы учим сеть, ей нужно выделить полезные признаки и игнорировать шум.

      Почему же не можем. Возьмите например алгоритм ID3, и отделите.

      Поэтому в процессе обучения контролируют ошибку как на обучающем наборе, так и на тестовом. На обучающем ошибка будет падать всегда. А вот на тестовом она будет падать, достигнет минимума, а потом начнет расти - это и есть переобучение

      Это называется подгонка научных результатов. Разделение на обучающую и тестовую выборку имеет совсем другое назначение. Это для того, чтобы проверить как ваша обучающая выборка помогает решить примеры, которые сети не показывали. Вы же (не вы лично, а засилье моды на это) подгоняете результаты, пытаетесь игнорировать ряд данных из обучающей выборки, чтобы на тесте - это было выгоднее. Т.е. то, что по условию вы должны использовать только для теста, вы используете в эксперименте. Тогда уже честнее сразу объединить обучающую выборку с тестовой и играться сколько хотите. А уже затем проверить в независимом исследовании.


  1. kuza2000
    28.08.2025 18:22

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

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

    С backpropagation как раз то "до упора" сеть НИКОГДА не обучишь, он не сходится. 

    Стоп-стоп-стоп, откуда вы это взяли? :)) Можете дать мне ЛЮБЫЕ данные, и я обучу на них сеть, сведя ошибку в ноль! Совершенно ЛЮБЫЕ. Просто увеличу мощность сети до необходимой величины - и все. С backpropagation сеть сходится очень хорошо, и на любых данных. Конечная ошибка определяется только соотношением мощности сети и энтропией во входных данных.

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

    Почему же не можем. Возьмите например алгоритм ID3, и отделите.

    Сможет этот алгоритм удалить с изображения информацию о цвете глаз человека? )
    Цвет глаз - это шум, по отношению к задаче определения пола.

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

    Да, часто именно так и делают. Данные для обучения делят не на две, а три части. Первая используется для обучения, вторая - для контроля обучения. А третью никому не показывают до окончательного, финального тестирования, которое проводится один раз. Еще более продвинутый метод, это использовать кроссвалидацию (ну и финальное тестирование, конечно).

    Я ценю ваши теоретические исследования. Но, если честно, я не очень понимаю, ваши цели. Что вы хотите сказать/доказать? Что нужно использовать не backpropagation, а что-то другое? Ну так сделайте реальный алгоритм на ваших идеях. Протестируйте его на том же MNIST, это очень простой тест. Это уже будет интересно. Сейчас же я вижу, что вашим исследованиям сильно не хватает практики)


    1. tac Автор
      28.08.2025 18:22

      если честно, я не очень понимаю, ваши цели

      Моя цель очень проста, найти таких как вы адекватных оппонентов и обсудить, а еще лучше показать на практике некоторые вещи. Поэтому я написал вам в личку, если на простой задаче вы покажите как вы сводите ошибку в нуль на бэкпропе, то я хотел бы обратится к вам и с более серьезной задачей. Небольшая LLM для перевода с нуля. Только давайте договоримся? - вы не будете делать выводы о оппоненте и том, чего вы не знаете (я о том, что мне не хватает практики :) ).