Comments 37
LLM хорошо ложаться на ГПУ, поэтому в них можно вбухать "1000 современных видеокарт" и получить подобие интеллекта.
Есть предположение, что любая другая архитектура которая будет также хорошо масштабироваться тоже получит хорошие результаты. Но в случае перцептрона теорема сходимости доказана только для классического случая (когда обучаем один слой), так что преимуществ у него не видно.
Кто его знает...
Что-то вспомнились споры времён начала 90-х, какая технология победит, FrameRelay или TCP/IP ? FrameRelay широко известна и активно используется, а TCP/IP сложна и избыточна, значит не нужна никому...
У них там в Америках при наличии сетевых карт 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 конечно там не участвовало и близко.
//теорема сходимости доказана только для классического случая (когда обучаем один слой)
и что это означает? решатся любое отображение input -> output ... а у backpropa и этого нет
Ну по большому счету гарантированая сходимость не нужна. Скорее она даже будет мешать, потому что гарантировать она будет минимум по обучающей выборке, а нужен совместный "минимум" по обучающей и контрольной для того чтобы обеспечииь хороший уровень обобщения.
Проблема LLM КМК все же не в бакпропе а в том, что есть в общем-то случайное деление на обучающую и контрольную выборки и от того как поделить + начальных значений бэкпропа очень сильно меняется результат. Поэтому просто глядя на сеть никто не может гарантировать как она работает. Но это только в отдельном кейсе без направленного изучения.
Что касается послойного выделения фич в целом, то есть работы которые косвенно, но убедительно эту гипотезу подтверждают. Вот тут, например, в цитируемых работах раздолье по этому поводу https://arxiv.org/html/2406.10868v2 Вообще ищут и нейроны (отдедбные и группы) по темам и по задачам. Да и в принципе процесс дистилляции изучают и оптимизируют потому что хочется эффективных узконаправленых специалистов получить. А дистиляция по-сути и есть выделение важных для темы нейронов и редукция остальных.
Беда что большинство реально хороших архитектур плохо ложаться на цифровые вычислители. Есть отличные самообучающиеся сети, которые вроде и круче, но требуют х10 времени на обучение/ответ. Есть хорошие архитектуры которые позволяют упорядочивать образы как вектора в пространстве, но на фактических данных разницы ReLu DeepL, той же вычислительной сложности, - нет. (Они есть но только в пипец шумных данных)
И в итоге нахерачить ReLu + фигануть матрицу и сделать так 32B параметров выгоднее, чем пилить что-то "математически/семантически правильное". Обучать большие сети уже умеют, просто пилим пока пилиться а там посмотрим.
ЗЫ. Есть ещё направление спайковых сетей, но там сами не понимают что они делают и как это в железе реализовать, как обучать и всё такое. Но если найти как правильно сделать под конкретную задачу то результаты впечатляющие...
Совершенно излишне говорить, что это полное вранье, а авторы статьи даже не потрудились открыть эту статью, чтобы её прочитать
А вы не потрудились ваши слова подкрепить даже хотя бы какой-нибудь статьей (не вашего авторства).
Все вокруг непонимающие идиоты, кроме, конечно же, вас. А в чем собственно ваше предложение/решение заключается?
Но тогда я спрашиваю: а что дает два, три и больше скрытых слоев?
Насколько я знаю и понимаю наличие больше 1 слоя позволяет аппроксимировать нелинейные функции. И на одном слое, например, не получится решить задачу классификации линейно неразделимых объектов.
перцептрон Розенблатта не позволяет обучать больше одного слоя. Но тогда я спрашиваю: а что дает два, три и больше скрытых слоев?
Срезали контекст и получилась ерунда. Что дает обучение двух, трех и больше скрытых слоев?
Насколько я знаю и понимаю наличие больше 1 слоя позволяет аппроксимировать нелинейные функции. И на одном слое, например, не получится решить задачу классификации линейно неразделимых объектов.
Понимаете вы не верно. Для этого и давал ссылки, которые вы не соизволили даже открыть. Не понравилось авторство? Так откройте оригинал. Окажется, что перцептрон Розенблатта никогда, просто никогда, не был однослойным. В самой его простейшей версии всегда была два слоя весов, один слой выбирался случайным образом, а второй обучался. Зачем обучать оба слоя или тем более три, четыре, или как сейчас в LLM 32 - никто никогда не ответил, опираясь на научные факты.
Это вполне нормальное явление, когда наука не поспевает за практикой. Поэтому отсутствие математически выверенного ответа не делает текущий подход каким-то плохим. Более того человечество видит объективные (для кого-то даже впечатляющие) результаты развития так вами ненавистных моделей с десятками слоев. Однако чем могут похвастаться модели с одним обучающим слоем? Уж вполне достаточно времени прошло, чтобы они могли раскрыть свой потенциал.
Странные у вас формулировки. Вы не знаете, а подаёте это так, будто все немного туповаты. Проверьте гипотезу, может туповаты вы? Теорему Цыбенко вы понимаете?
Факты есть, но вы слишком высокомерны, что бы их узнать.
Сейчас все проще, спросил у DeepSeek, т.к. Вы в своей высокомерности лишь упомянули теорему Цыбенко, вместо того, чтобы объяснить при чем она тут.
Она утверждает, что искусственная нейронная сеть с одним скрытым слоем, содержащим конечное число нейронов, может сколь угодно точно аппроксимировать (приблизить) любую непрерывную функцию многих переменных на компактном множестве.
Вы видимо спутали, мы говорим не о аппроксимации, а о сходимости.
Один скрытый слой достаточно: Не нужны глубокие сети с десятками слоев, чтобы аппроксимировать сложную функцию. Теоретически, хватит и одного, пусть и очень широкого.
Именно это я и сказал. Вы нашли для меня подтверждение мои слов? Спасибо.
Что дает обучение двух, трех и больше скрытых слоев?
Ответ следовательно, в соответствии с упомянутой вами теоремой, - ничего? ! Верно. ч.т.д.
Вы видимо спутали, мы говорим не о аппроксимации, а о сходимости.
Нет, я не спутал. Кроме сходимости вы спросили, зачем используются многослойные сети, теорема была в связи с этим, а не в связи со сходимостью.
Вы нашли для меня подтверждение мои слов? Спасибо.
Вам самому-то как? Нормально?
Ответ следовательно, в соответствии с упомянутой вами теоремой, - ничего? ! Верно. ч.т.д.
Да. Поэтому все, кто делают многослойные сети - тупые. Они ведь не догадались, что достаточно одного слоя. 10-20 лет делают топовые сети, а теорему Цыбенко не знают. Всё так (на самом деле нет)
Сделайте, пожалуйста, следущий шаг. Спросите самого себя. Почему человек, зная, что теория позволяет сделать всё одним слоем, использует несколько. Не используйте ответ "он дурак", придумайте другой. Зачем?
P.S. для других читателей - нагуглить научную работу, почему нужно использовать несколько слоев, хотя казалось бы достаточно одного, не сложно. Но человеку она не нужна, он уже увидел подтверждение своих слов.
Вы хоть сами заметили, как приписали мне "агрессивные вопли" и прочие ad hominem. Это неконструктивное общение продолжать не имею желания.
Агрессивные вопли? Я про это не писал, что вы имеете ввиду, не ясно.
"Вы не знаете", "подаёте будто все туповаты", "может туповаты вы", "вы слишком высокомерны", "все - тупые", "он дурак"
Не пытайтесь приписать мне того, чего вы не знаете или интерпретировать мои слова в своем таком свете - это исключительно ваши комплексы.
Разве слово «вопли» здесь уместно?
«Подаете, будто все туповаты» - это не значит, что я вам приписываю. Это значит, что это так выглядит. Возможно, вы считаете исследователей умными и хотите им помочь. Но внешне ваш текст выглядит иначе - «Книгу никто не открыл?!» - разве это выглядит так, будто вы считаете топовых исследователей умными? Нет, не выглядит. Как вы сами считаете, я не знаю. Но как вы написали - я вижу.
«Вы высокомерны» - да, это ad hominem. И в содержательной дискуссии по нейросетям мне было бы стыдно за него. И если бы кто-то спросил, в чём [фундаментальные] проблемы нейросети с одним слоем, я был бы рад ответить (с двумя, тремя, ответ есть).
Но вы пишете иначе. «Зачем обучать два слоя, так никто и не ответил». Однако мы-то знаем зачем! И ответ есть. Но вы утверждаете, будто никто не ответил (может быть вы его искали и не нашли, не знаю). Сама эта форма ломает всю содержательность беседы.
А наличие моих комплексов не опровергает факта, что например, в сверточных сетях прорыв наступил именно когда добавили количество слоев. И объяснение, почему так, в целом строгое. Может вы его знаете и нашли ошибки? Да вроде даже не упомянули. Вот именно это лично я и считаю высокомерием.
Снаружи выглядит так, что вы не прогрузились в тему достаточно глубоко (это очень тяжело) и поэтому сказали, будто никто не ответил. Какие эмоции вы испытываете на самом деле, я не знаю.
Так может быть вместо того, чтобы строить свои догадки обо мне и том как я якобы отношусь к исследователям (хотя я нигде про это не написал, а вы сделали выводы на голом месте; к исследователям у меня претензий нет, т.к. они в отличии от тех о которых я писал в статье, таких глупостей про перцептрон не пишут, разве что один - Ф. Уосермен) - лучше привести те аргументы, которые вы знаете? И заметить другие мои слова в статье и прочитать их буквально, а не придумывать за меня?
Но это общие слова, а кто-то когда то показал это в научной статье? Подскажите если знаете, я лично таких статей не знаю.
"И если бы кто-то спросил, в чём [фундаментальные] проблемы нейросети с одним слоем, я был бы рад ответить "
Пока не вижу вашего желания, вижу лишь то, что Вы начали с позерства.
И нет о сверточных сетях я не знаю, было бы интересно узнать, что именно вы имеете введу. Вы или оппонируйте, приводя аргументы, или не позёрствуйте, пока выглядит совсем наоборот, что вы цепляетесь за какие то поверхностные представления. А то что вы считаете якобы строгим, на проверку оказывается простым балабольством? Может говоря о сверточных сетях вы имеете введу ровно то ,что я и написал: "каждый следующий слой дает иерархическое выделение признаков"? Ну тогда внимательнее читайте и если отвечаете, то по сути.
P.S. И да - это вопли, перестаньте вопить.
лучше привести те аргументы, которые вы знаете
Вы их не спрашивали. (Не обязательно у меня, но вы вообще не проявляете сомнений в своих словах. Солнце крутится вокруг Земли и точка)
заметить другие мои слова
Почему вы решили, что я не заметил?
Может говоря о сверточных сетях вы имеете введу ровно то ,что я и написал: "каждый следующий слой дает иерархическое выделение признаков"?
Нет, не может, что бы я имел это ввиду. Это не является в строгом смысле обязательным и в такой форме не являлось бы подтверждением.
Ну тогда внимательнее читайте и если отвечаете, то по сути.
Как только вы по сути напишете, я вам по сути отвечу.
пока выглядит совсем наоборот, что вы цепляетесь за какие то поверхностные представления
Да, я понимаю это. Вы очень поверхностно написали статью, я очень поверхностно обсудил. Но я честно признаю, что я не дал вам возражений (кроме одного), а лишь усомнился в ваших словах. И можете сделать вывод, что я не разбираюсь, потому что содержательных аргументов я избегал и это выглядит, будто их нет (вдруг их и правда нет, а я запутался? Такой вывод сделать можно).
P.S. И да - это вопли, перестаньте вопить.
Уважаю ваше право иметь любое самое странное субъективное мнение.
Вы их не спрашивали ... Почему вы решили, что я не заметил?
Вы уж выберите или не заметили, или нет аргументов. Потому что ровно в этой фразе я их и спрашиваю. Ну и потом вы вроде претендуете на научный диалог, а там ничего кроме аргументов и быть не может, поэтому "спрашивать аргументов" - это нонсенс, они или у вас есть или нет? Видимо, все же нет. Мне было на секунду, показалось, что вы сможете родить мышь, но нет даже этого.
И можете сделать вывод, что я не разбираюсь, потому что содержательных аргументов я избегал и это выглядит, будто их нет
Пожалуй я так и сделаю. Хорошо, что признались в намеренном позерстве.
И нет о сверточных сетях я не знаю, было бы интересно узнать, что именно вы имеете введу.
Что ж, в середине диалога интерес действительно есть, вы правы, в общем фоне комментария не обратил внимания, т.к. начал читать по диагонали (и кажется, вы изменили комментарий)
Давайте сошлюсь на Johan Hastad, старая работа, где доказывается, что нам потребуется экспоненциально больше ресурсов, если глубина мала. То есть мы можем, в математическом смысле обойтись одним слоем, но мы так же знаем, что обойдётся нам это настолько «дорого», что делать так нет смысла.
https://dspace.mit.edu/handle/1721.1/150504
Более свежая, относящаяся непосредственно к глубоким сетям, это работа Telgasky
https://arxiv.org/abs/1602.04485
Буду рад, если вы сможете показать, почему их результаты незначимы, т.к. пока выглядит, что заниматься однослойной сетью (хорошо, двух) не нужно, это гарантировано не сработает с точки зрения объема вычислений.
Мне было на секунду, показалось, что вы сможете родить мышь, но нет даже этого.
Я? Нет. Я лишь понимаю иногда работы других, но написать свою не могу.
Пожалуй я так и сделаю. Хорошо, что признались в намеренном позерстве.
А вот это неразумно. Я вам прямо сказал - у вас нет глубины, а фразы выглядят так, будто вы уверены, что разобрались в ситуации (разобрались ли на самом деле, я не знаю). Хотите хотя бы кусок научной дискуссии, смотрите выше. Да, мы можем что угодно* сделать однослойной сетью при наличии бесконечных ресурсов. Если ресурсы конечны, мы всегда хотим использовать многослойную, это гарантировано лучше (в теории, если мы можем решить все проблемы, связанные с обучением). Не чуть-чуть лучше, а экспоненциально лучше. Существенная разница.
С работами выше я ознакомлюсь, не скажу, что быстро, но посмотрю. Но сразу могу ответить на это
Да, мы можем что угодно* сделать однослойной сетью при наличии бесконечных ресурсов. Если ресурсы конечны, мы всегда хотим использовать многослойную, это гарантировано лучше (в теории, если мы можем решить все проблемы, связанные с обучением). Не чуть-чуть лучше, а экспоненциально лучше. Существенная разница.
Это не соответствует фактам. Про экспоненциально лучше это просто глупость, если вам не нравится мое авторство (да, в отличии от вашего признания, я пишу научные статьи), то могу сослаться и на других:
Дальше зависит от задач, где то чуть-чуть лучше, где то чуть-чуть хуже, но всегда существенно быстрее, естественно, для перцептрона. И с kuza2000 началось конструктивное обсуждение в личке и мы это в очередной раз проверяем. Но т.к. для kuza2000 неизвестна другая сторона - перцептрон, нужно время. (да, наоборот, опыта с бэкпропом у меня меньше, т.к. он теоретически не перспективен, и я на нем поставил крест (научными работами) еще во время магистратуры). Поэтому да, спустя 20 лет я уверен в том, что говорю. И ничего, не изменилось бы, если бы не LLM. Но как и написал тут в статье на хабре, а она имеет статус "мнение", если бы не массовые фейк ньюс о LLM (это послужило даже поводом, дать нобелевку за бэкпроп), то это не стоило бы моего внимания. Но тем не менее допускаю, что какие то тонкости с бэкпропом не знаю.
Это не соответствует фактам.
Я ведь рассказал, упрощено, о чем статьи. Вы их не читали (ещё), но уже уверены, что они противоречат фактам. Не странно ли так утверждать?
Ах, да, есть вариант, что это я их неверно понял. Что ж, у вас есть возможность понять лучше.
Давайте попробуем понять ваш довод. «Всегда экспоненциально лучше» легко опровергнуть одним контрпримером и вы его привели. Отлично, разумно, но не верно. И вот почему.
Всегда лучше - это моё упрощение. Из статей это явно видно, там не доказывается всеобщность. И вы смогли бы сказать (после чтения статей) - ну вот, это же не всегда экспоненциально сложнее. Для MNIST не сложнее. И я дал бы следующую работу от Poggio, например. О том, что в нужных нам случаях всё-таки сложнее.
Но вы попали в локальный минимум (MNIST) и там вроде как не экспонента. Но вы лишь опровергли всеобщность (которая и так не утверждалась), не более того.
я на нем поставил крест (научными работами)
Разве?
Для MNIST не сложнее. И я дал бы следующую работу от Poggio, например.
Уже похоже на аргумент, поэтому уточните, что именно за работа Poggio. И какую тогда задачу, для которой может быть эффект "экспоненциально сложнее" вы или как я понял, с ваших слов, вы ссылаясь на Poggio имеете введу?
Я же тоже не исключительно MNIST имею введу, или для вас задача четности, о которой тут шла речь, тоже частный случай? Если так, то назовите эту задачу, она классическая? Имеется введу задача на которой хорошо видно, что бэкпроп экспоненциально лучше перцептрона Розенблатта? Пойдем от обратного теперь, хоть одну? (только не нужно ссылок на Минского :) - бэкпроп ничего не сделал лучше по отношению к критике Минского, который конечно же был во всем прав - поэтому мы можем лишь обсуждать лишь сравнимые вещи, скажем так в области возможного, что оставил нам Минский)
Вы их не читали (ещё), но уже уверены, что они противоречат фактам. Не странно ли так утверждать?
Они противоречат фактам, которые мне известны, но раз мы наконец то перестали утверждать о всеобщности (с обоих сторон, как я теперь полагаю?), то найти область применения одного и другого (без вот таких вот выпадов, что бэкпро это некст левел, экспоненциально лучше всегда и т.п.) уже похоже на конструктив и я готов продолжать такого рода дискуссию.
Разве?
Конечно, нет. Потому что один глас в пустыне не слышен, да и он не уровня Исуса )
Но вы ещё не углубились в прошлые две, зачем ещё одна?
https://arxiv.org/abs/1608.03287
Это всё ищется за пару минут (конечно я знал, что искать, но всё же). А вот читается и понимается намного дольше.
Спасибо. Я предпочитаю читать с конца )), дайте мне недельку - две :)
Опять же единственно правильный ответ был бы: каждый следующий слой дает иерархическое выделение признаков. Но это общие слова, а кто-то когда то показал это в научной статье?
Благодаря Вашей ссылке, этот вопрос частично снят. И мне теперь нужно изменить формулировку на "делались попытки это показать" (если дойдет дело в Introduction я эту статью в своей статье так и упомяну). Ответ же в статье именно такой же, но якобы строже. Но авторы заблуждаются. Учитывая, что я не математик, а статья исключительно математическая, я пролистал мат. часть ... но честно говоря мне этого и не нужно, они строят отдельно математическую теорию оторванную от практики и говорят "Finally, we make some concluding remarks in Section 6, pointing out a quantitative measurement for three notions of sparsity which we feel may be underlying the superior performance
of deep networks."
т.е. они предложили теорию, и она может объяснять, а может не объяснять. Реальный пример, который демонстрировал бы их математические выкладки - они не представили.
Поэтому я с уверенностью, могу их послать бороться и опровергать других математиков, которые работали с Розенблаттом, которые тоже математически доказывали, что использование нелинейной функции активации не дает ничего особенного.
Что же касается сути - в чем они заблуждаются - тут нужно много букв. Это нужно объяснять не в комментариях, и нужно подумать как, т.к. такие детали вряд ли будут интересны "жителям хабра". Но если вкратце заблуждение в том, что они не знают как правильно интерпретировать работы сети, и что нейронные сети совсем не подчиняются правилам деревьев, на основе которых они строят свою теорию. Бинарные деревья любой вложенности возникают в одном слое, и для этого совсем не нужны несколько слоев.
Единственно, вопрос в инвариантности - это интересно, но так как другое смазано не верным посылом, эффект распыляется ... нужно подумать, где там есть рациональное зерно.
Но в целом вот этот посыл "Проклятие размерности", на который вы видимо пытались все время указать - ведет к заблуждениям, это фиктивная проблема.
Опять же единственно правильный ответ был бы
Это не верно. Зачем вы на этом настаивали, мне было не ясно, но
математически доказывали, что использование нелинейной функции активации не дает ничего особенного
Откуда вы это взяли?
бэкпроп экспоненциально лучше перцептрона Розенблатта
Зелёное лучше апельсина? Вы продолжаете настаивать на заблуждении, вам на него указывали в комментариях.
Впрочем, я посмотрел упомянутую вами статью про MNIST. Странно, что вы не увидели там экспоненту (500 тыс нейронов), но это многое объясняет. Вы глухи к аргументам, потому что не понимаете их. Сожалею, но ничего страшного. Желаю вам не разочароваться из-за того, что услышаны вы не будете (а вы не будете, конечно).
Впрочем, я посмотрел упомянутую вами статью про MNIST. Странно, что вы не увидели там экспоненту (500 тыс нейронов)
Видимо не дальше аннотации? Иначе бы увидели, что 1000 A элементов ничем принципиально не отличается от 500 000 A элементов.
Это не верно. Зачем вы на этом настаивали, мне было не ясно, но
Неверно, что? Вы или говорите или молчите, отгадывать ваши ребусы у меня нет времени. работа от Poggio именно этот тезис и обосновывает, если вы этого не понимаете прочитайте еще раз, или скажите на чем еще вы акцентируете свое внимание в этой статье, что это перестаете видеть
Откуда вы это взяли?
Из оригинала, книги Розенблатта "Перцептроны"
Могу даже уточнить
Откуда вы это взяли?
Из оригинала, книги Розенблатта "Перцептроны", раздел 10.3, и следующий 10.4. , Перцептроны с нелинейными передающими функциями
Видимо вы боретесь с ветряными мельницами - никакой экспоненциальной проблемы в перцептронах нет и никогда не было, в отличии от поделок для аппроксимации. Да, и нелинейность - это не ответ на несуществующий вызов. Поэтому это дискуссия дважды пустая ..
что именно для перцептрона Розенблатта существует теорема сходимости. Именно, он позволяет гарантированно найти решение для любой задачи, только если хватит вычислительных мощностей. Для backpropagation - это не так, наоборот маркетологи придумали смешной термин "переобучение сети", попробуете это объяснить?
Я вообще это не понимаю.
Перцептрон - это архитектура НС, backpropagation - это метод обучения. Почему вы сравнивает архитектуру с методом обучения? Тот же перцептрон можно обучать с помощью backpropagation.
А переобучение - это совсем другое. При переобучение сеть замечательно сходится. Просто она сходится не туда, куда нужно экспериментатору. И это не проблема алгоритма, просто сеть начинает запоминать примеры. Даже человек делает точно так же в похожих ситуациях.
Причем тут маркетологи, тоже не понимаю, этот термин рожден десятки лет назад.
Прочитал ваши статьи. Что могу сказать.
Перцептон Розенблата, это обычный перцептрон с одним скрытым слоем и зафиксированными весами первого слоя. Инициализируются случайно. backpropagation для его обучения использовать можно, такая архитектура реализуется в любой развитой библиотеке ML за 20 минут. Он будет делать то же самое, что и код из ваших статей - увеличивать "хорошие" связи, уменьшать "плохие". Да, можно тут же реализовать и оригинальный алгоритм, это тоже просто. И сравнить. Сильно сомневаюсь, что оригинальный алгоритм будет работать лучше.
У вас почему-то посыл, что backpropagation - это плохо, так как сходимость не доказана, а вот Перцептон Розенблата - это круто, сходимость доказана. На самом деле все обстоит по другому. backpropagation - это дальнейшее развитие того метода, который предложил Розенблат. Некст левел, обобщение с гораздо большими возможностями.
Перцептон Розенблата может переобучаться - только в путь. Возьмите, к примеру по несколько десятков цифр из набор данных MNIST, обучите на них перцептон Розенблатта и постройте кривые обучения. В качестве теста используйте оставшуюся часть набора. Средний слой должен быть достаточно большим, попробуйте начать с 500. Красивые кривые переобучения вас удивят :)
Прочитал ваши статьи.
Спасибо, это уже хорошие начало :)
У вас почему-то посыл, что backpropagation - это плохо
Нет, это ваше восприятие. Я лишь указал на то, что всякие околонаучные деятели (на примере компании Friflex ) пишут о том, чего не знают, и не смотрят в оригиналы.
На самом деле все обстоит по другому. backpropagation - это дальнейшее развитие того метода, который предложил Розенблат. Некст левел, обобщение с гораздо большими возможностями.
Не совсем так, и скорее совсем не так. backpropagation действительно обладает некоторыми интересными свойствами, но в то же время имеет множество проблем. Как и наоборот. Они достаточно разные если сравнивать. Восприятие "некст левел" в совокупности с массовым враньем создает неверное впечатление о подходе Розенблатта в целом.
Перцептон Розенблата может переобучаться
Сформулируйте, пожалуйста, что означает этот термин вообще? Я не могу найти ни одного научно определения. Точнее, нужно спросить себя "Как определить математически когда наступает переобучение" - и в ответ получить "никак, никак, никак"?
Сформулируйте, пожалуйста, что означает этот термин вообще? Я не могу найти ни одного научно определения. Точнее, нужно спросить себя "Как определить математически когда наступает переобучение" - и в ответ получить "никак, никак, никак"?
Научного определения я действительно не знаю. Возможно, оно есть, просто не знаю.
Как это выглядит на практике, достаточно хорошо известно. Есть задача обучения с учителем, задача классификации. То есть, у нас есть входные вектора, и для каждого определен класс. Во входных данные всегда есть шум, лишние данные. Допустим, мы тренируем сеть распознавать цифры. Все данные, которые не относятся к тем, что нужны для распознавания - это шум. Например, изменение толщины линий, позиция символа, его размеры, варианты написания, и т.д. Все эти данные есть во входном векторе, но они не нужны. Отделить их мы не можем. Если бы могли - нам не понадобилась бы НС. Когда мы учим сеть, ей нужно выделить полезные признаки и игнорировать шум. Но, на самом деле, сеть не может решить эту задачу - для нее шум и полезные признаки не отличимы.
Но есть спасение. Полезные признаки повторяются для одинаковых классов, а шум более уникален. Но четкого разделения нет. Для части одного класса может быть один набор полезных признаков, для другой части этого же класса - другой. И шум может повторяться.
Обучающую выборку делят на два набора - один для обучения, другой - для тестирования.
Когда сеть обучается, то она начинает запоминать наиболее частые признаки, которые отличают один класс от другого. Затем менее частые, и т.д. Если продолжать процесс "до упора", а сеть имеет достаточную мощность, то она запомнит все признаки, в том числе шум. Про такой вариант говорят "запомнила примеры". На обучающей выборке будет великолепный результат, на тесте - полная ерунда. Поэтому в процессе обучения контролируют ошибку как на обучающем наборе, так и на тестовом. На обучающем ошибка будет падать всегда. А вот на тестовом она будет падать, достигнет минимума, а потом начнет расти - это и есть переобучение, когда сеть начала "изучать" больше шум, чем полезные данные.
Для иллюстрации могу вспомнить байку, когда сеть учили узнавать танки. Выучили, получили очень хороший результат, скажем 99% точность. Потом взяли еще набор фото. И на нем вдруг полная ерунда, показываешь авто или человека - она говорит "танк" с полной уверенностью! Наконец один товарищ заметил, что на все фото с пасмурной погодой сеть говорит "танк!". Посмотрели обучающий набор - а там все танки сняты в пасмурную погоду, а в качестве "не танк" добавили множество случайных фото, где уже погода разная:) Это пример, конечно, плохих данных, и даже не про переобучение. Но он показывает то, что сеть совершенно не знает, какие признаки важны, а какие - нет. Какие шум, а какие - полезны.
Научного определения я действительно не знаю. Возможно, оно есть, просто не знаю.
Отлично. Поэтому, возможно, я зря ассоциировал этот термин с маркетологами (как вы верно заметили), просто хотел смягчить, так как это чистой воды шарлатанство. А ваше объяснение хорошо тем, что рассказывает доступным языком. Но это я поискал и нашел в научной литературе, ничего более точного, чем ваши рассуждения.
Во входных данные всегда есть шум, лишние данные.
Это мягко говоря не так. Например, в задаче четность (о которой я говорю в своей статье) таких данных нет, да и вообще, в классической литературе, например, у Минского не рассматриваются задачи, в которых по определению во входных данных есть шум. Наоборот, считается что обучающая выборка уже заранее очищена от шума. И это понятно, потому, что нейронные сети действительно не могут за ВАС решить, что шум, а что нет. Может быть это не шум, а просто нестандартное изображение.
Это, кажется, как раз Вы предлагали решить задачу MNIST. Так вот, это как посмотреть - там дается набор обучающих данных. Там не сказано, что какие то из них шум. И если присмотреться, там все рукописные изображения цифр человек воспринимает. Просто некоторые из них уж очень криво написаны, что ЛЮБЫМ алгоритмом не воспринимаются. Считать их шумом - это мягко говоря странное решение. Но следите за руками дальше.
Если продолжать процесс "до упора", а сеть имеет достаточную мощность, то она запомнит все признаки, в том числе шум. Про такой вариант говорят "запомнила примеры". На обучающей выборке будет великолепный результат, на тесте - полная ерунда.
С backpropagation как раз то "до упора" сеть НИКОГДА не обучишь, он не сходится. Ученные уже даже перестали замерять реальное количество ошибок на обучающей выборке. Вам подсовывают какие то статистические показатели, которые ничего не говорят сколько ошибок допустила сеть на обучающей выборке. Более того, часто это и оправдывают тем, что дальше произойдет якобы переобучение, хотя на самом деле, алгоритм этого не может.
Но есть спасение. Полезные признаки повторяются для одинаковых классов, а шум более уникален. Но четкого разделения нет. Для части одного класса может быть один набор полезных признаков, для другой части этого же класса - другой. И шум может повторяться.
Если все же так случилось, что ваша задача достаточно уникальная и у вас плохая обучающая выборка, то логично вначале очистить обучающую выборку. Но тут идут ваши рассуждения как это делает НС
Отделить их мы не можем. Если бы могли - нам не понадобилась бы НС. Когда мы учим сеть, ей нужно выделить полезные признаки и игнорировать шум.
Почему же не можем. Возьмите например алгоритм ID3, и отделите.
Поэтому в процессе обучения контролируют ошибку как на обучающем наборе, так и на тестовом. На обучающем ошибка будет падать всегда. А вот на тестовом она будет падать, достигнет минимума, а потом начнет расти - это и есть переобучение
Это называется подгонка научных результатов. Разделение на обучающую и тестовую выборку имеет совсем другое назначение. Это для того, чтобы проверить как ваша обучающая выборка помогает решить примеры, которые сети не показывали. Вы же (не вы лично, а засилье моды на это) подгоняете результаты, пытаетесь игнорировать ряд данных из обучающей выборки, чтобы на тесте - это было выгоднее. Т.е. то, что по условию вы должны использовать только для теста, вы используете в эксперименте. Тогда уже честнее сразу объединить обучающую выборку с тестовой и играться сколько хотите. А уже затем проверить в независимом исследовании.
Наоборот, считается что обучающая выборка уже заранее очищена от шума. И это понятно, потому, что нейронные сети действительно не могут за ВАС решить, что шум, а что нет. Может быть это не шум, а просто нестандартное изображение.
Под шумом я имею ввиду не плохие примеры, а лишнюю информацию. Например, учим отличать мужчин и женщин. В обучающей выборке есть карие, голубоглазые, блондины, брюнеты. Вот все эти перечисленные признаки - шум. Но сеть этого не знает и может в процессе обучения к ним привязываться. Например, в выборке будут большинство мужчин - блондины, а женщины - брюнетки. Если после этого показать сети блондинку, он может сказать на нее "мужчина") А если мы полностью очистим входные данные от шума, то на выходе останется один бит информации, и это будет решение)
С backpropagation как раз то "до упора" сеть НИКОГДА не обучишь, он не сходится.
Стоп-стоп-стоп, откуда вы это взяли? :)) Можете дать мне ЛЮБЫЕ данные, и я обучу на них сеть, сведя ошибку в ноль! Совершенно ЛЮБЫЕ. Просто увеличу мощность сети до необходимой величины - и все. С backpropagation сеть сходится очень хорошо, и на любых данных. Конечная ошибка определяется только соотношением мощности сети и энтропией во входных данных.
Я очень много игрался с НС лично, своими руками. И первым делом, для проверки, что код написан верно, я обычно увеличиваю мощность НС и смотрю как сеть сходится в очень маленькую ошибку. Если этот тест пройден - начинаю уже смотреть ошибку на тестовых данных.
Почему же не можем. Возьмите например алгоритм ID3, и отделите.
Сможет этот алгоритм удалить с изображения информацию о цвете глаз человека? )
Цвет глаз - это шум, по отношению к задаче определения пола.
Тогда уже честнее сразу объединить обучающую выборку с тестовой и играться сколько хотите. А уже затем проверить в независимом исследовании.
Да, часто именно так и делают. Данные для обучения делят не на две, а три части. Первая используется для обучения, вторая - для контроля обучения. А третью никому не показывают до окончательного, финального тестирования, которое проводится один раз. Еще более продвинутый метод, это использовать кроссвалидацию (ну и финальное тестирование, конечно).
Я ценю ваши теоретические исследования. Но, если честно, я не очень понимаю, ваши цели. Что вы хотите сказать/доказать? Что нужно использовать не backpropagation, а что-то другое? Ну так сделайте реальный алгоритм на ваших идеях. Протестируйте его на том же MNIST, это очень простой тест. Это уже будет интересно. Сейчас же я вижу, что вашим исследованиям сильно не хватает практики)
если честно, я не очень понимаю, ваши цели
Моя цель очень проста, найти таких как вы адекватных оппонентов и обсудить, а еще лучше показать на практике некоторые вещи. Поэтому я написал вам в личку, если на простой задаче вы покажите как вы сводите ошибку в нуль на бэкпропе, то я хотел бы обратится к вам и с более серьезной задачей. Небольшая LLM для перевода с нуля. Только давайте договоримся? - вы не будете делать выводы о оппоненте и том, чего вы не знаете (я о том, что мне не хватает практики :) ).
На дворе LLM, а книгу о перцептроне так никто и не открыл!?