Комментарии 19
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 Вообще ищут и нейроны (отдедбные и группы) по темам и по задачам. Да и в принципе процесс дистилляции изучают и оптимизируют потому что хочется эффективных узконаправленых специалистов получить. А дистиляция по-сути и есть выделение важных для темы нейронов и редукция остальных.
Совершенно излишне говорить, что это полное вранье, а авторы статьи даже не потрудились открыть эту статью, чтобы её прочитать
А вы не потрудились ваши слова подкрепить даже хотя бы какой-нибудь статьей (не вашего авторства).
Все вокруг непонимающие идиоты, кроме, конечно же, вас. А в чем собственно ваше предложение/решение заключается?
Но тогда я спрашиваю: а что дает два, три и больше скрытых слоев?
Насколько я знаю и понимаю наличие больше 1 слоя позволяет аппроксимировать нелинейные функции. И на одном слое, например, не получится решить задачу классификации линейно неразделимых объектов.
перцептрон Розенблатта не позволяет обучать больше одного слоя. Но тогда я спрашиваю: а что дает два, три и больше скрытых слоев?
Срезали контекст и получилась ерунда. Что дает обучение двух, трех и больше скрытых слоев?
Насколько я знаю и понимаю наличие больше 1 слоя позволяет аппроксимировать нелинейные функции. И на одном слое, например, не получится решить задачу классификации линейно неразделимых объектов.
Понимаете вы не верно. Для этого и давал ссылки, которые вы не соизволили даже открыть. Не понравилось авторство? Так откройте оригинал. Окажется, что перцептрон Розенблатта никогда, просто никогда, не был однослойным. В самой его простейшей версии всегда была два слоя весов, один слой выбирался случайным образом, а второй обучался. Зачем обучать оба слоя или тем более три, четыре, или как сейчас в LLM 32 - никто никогда не ответил, опираясь на научные факты.
Это вполне нормальное явление, когда наука не поспевает за практикой. Поэтому отсутствие математически выверенного ответа не делает текущий подход каким-то плохим. Более того человечество видит объективные (для кого-то даже впечатляющие) результаты развития так вами ненавистных моделей с десятками слоев. Однако чем могут похвастаться модели с одним обучающим слоем? Уж вполне достаточно времени прошло, чтобы они могли раскрыть свой потенциал.
Странные у вас формулировки. Вы не знаете, а подаёте это так, будто все немного туповаты. Проверьте гипотезу, может туповаты вы? Теорему Цыбенко вы понимаете?
Факты есть, но вы слишком высокомерны, что бы их узнать.
Сейчас все проще, спросил у DeepSeek, т.к. Вы в своей высокомерности лишь упомянули теорему Цыбенко, вместо того, чтобы объяснить при чем она тут.
Она утверждает, что искусственная нейронная сеть с одним скрытым слоем, содержащим конечное число нейронов, может сколь угодно точно аппроксимировать (приблизить) любую непрерывную функцию многих переменных на компактном множестве.
Вы видимо спутали, мы говорим не о аппроксимации, а о сходимости.
Один скрытый слой достаточно: Не нужны глубокие сети с десятками слоев, чтобы аппроксимировать сложную функцию. Теоретически, хватит и одного, пусть и очень широкого.
Именно это я и сказал. Вы нашли для меня подтверждение мои слов? Спасибо.
Что дает обучение двух, трех и больше скрытых слоев?
Ответ следовательно, в соответствии с упомянутой вами теоремой, - ничего? ! Верно. ч.т.д.
Вы видимо спутали, мы говорим не о аппроксимации, а о сходимости.
Нет, я не спутал. Кроме сходимости вы спросили, зачем используются многослойные сети, теорема была в связи с этим, а не в связи со сходимостью.
Вы нашли для меня подтверждение мои слов? Спасибо.
Вам самому-то как? Нормально?
Ответ следовательно, в соответствии с упомянутой вами теоремой, - ничего? ! Верно. ч.т.д.
Да. Поэтому все, кто делают многослойные сети - тупые. Они ведь не догадались, что достаточно одного слоя. 10-20 лет делают топовые сети, а теорему Цыбенко не знают. Всё так (на самом деле нет)
Сделайте, пожалуйста, следущий шаг. Спросите самого себя. Почему человек, зная, что теория позволяет сделать всё одним слоем, использует несколько. Не используйте ответ "он дурак", придумайте другой. Зачем?
P.S. для других читателей - нагуглить научную работу, почему нужно использовать несколько слоев, хотя казалось бы достаточно одного, не сложно. Но человеку она не нужна, он уже увидел подтверждение своих слов.
что именно для перцептрона Розенблатта существует теорема сходимости. Именно, он позволяет гарантированно найти решение для любой задачи, только если хватит вычислительных мощностей. Для 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, а книгу о перцептроне так никто и не открыл!?