2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1 ... 5, 6, 7, 8, 9
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 11:16 
mihaild в сообщении #1707774 писал(а):
Не опровергается. Поскольку для любой модели $A$, $\operatorname{Acc}(A, Y) + \operatorname{Acc}(A, \overline Y) = 1/2$. Соответственно если $\operatorname{Acc}(A, Y) > \operatorname{Acc}(A', Y)$, то $\operatorname{Acc}(A, Y) < \operatorname{Acc}(A', Y)$


Уж и не знаю, где в ваших рассуждениях логическая ошибка, но готов проверить на практике. Вот только я в толк не возьму, как мне изменить метки MNIST, чтобы выполнить ваше преобразование? У меня 10 выходов, которые дают 1 если выход соответствует цифре, и 0 если не соответствует. Вы мне предлагаете просто инвертировать выходы 0->1 , 1->0 ... но это банально, процесс обучение будет аналогичным, тут даже проверять нечего.

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

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 12:58 
SergeyGubanov в сообщении #1707714 писал(а):
this в сообщении #1707557 писал(а):
Изображение

Иногда красную линию удаётся склонить к затуханию второй раз (double descent).

https://en.wikipedia.org/wiki/Double_descent
What the Books Get Wrong about AI [Double Descent]
https://mlu-explain.github.io/double-descent/

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

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 13:07 
Аватара пользователя
tac в сообщении #1707780 писал(а):
Как я понимаю - это дополнение к чему то, а какая была базовая модель?
Деревья. Градиентный бустинг по умолчанию на них (я даже не уверен, что xgboost поддерживает его поверх чего-то ещё).
tac в сообщении #1707780 писал(а):
я не понял о чем речь?
Об устройстве предлагаемой Вами модели.
tac в сообщении #1707780 писал(а):
Мы видимо говорим о разного рода "противоречивости", было бы интересно понять, что вы понимаете под "противоречивыми примерами"
Давайте сначала Вы.
tac в сообщении #1707780 писал(а):
и что все таки значит для вас "интересные на практике" ?
За которые платят деньги или результаты на которых можно опубликовать.
tac в сообщении #1707780 писал(а):
если вы и до этого знали, что существуют методы, которые не дают "переобучения"
Существуют методы, которые не дают переобучения на некоторых конкретных датасетах.
mihaild в сообщении #1707751 писал(а):
При этом я легко предоставлю Вам алгоритм, который учится на MNIST на 0 примерах и имеет 100% точность на тесте.
То, что конкретно xgboost там на сплите 60к/10к не переобучается (с параметрами по умолчанию) - я не знал.
tac в сообщении #1707780 писал(а):
а теперь, спустя 50 лет, вы переоткрыли свойства перцептрона
Это не свойства перцептрона или другого алгоритма. Это свойства датасета.
tac в сообщении #1707780 писал(а):
а в машинном обучение метод, который свободен от переобучения, как раз строит бинарные деревья решений
Не свободен он. Вот простейший пример. Выборка сгенерирована так: 1000 объектов класса 0 с одним признаком, распределенным по $\mathcal N(0, 1)$, 1000 объектов класса 1 с одним признаком, распределенным по $\mathcal N(1, 1)$. Оптимальный классификатор тут - просто по порогу 0.5, имеет ошибку 0.309. Получается вот такая картинка (на 1м дереве находится оптимальное на тестовой выборке решение, дальше немного топчется на месте, потом становится хуже).
Вложение:
download.png

tac в сообщении #1707793 писал(а):
Вот только я в толк не возьму, как мне изменить метки MNIST, чтобы выполнить ваше преобразование?
Это было утверждение для бинарной классификации.
Для мультикласса - ну например замените в тестовой выборке все метки 0 на 1, 1 на 2, ..., 9 на 0.


У вас нет доступа для просмотра вложений в этом сообщении.

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 13:18 
mihaild в сообщении #1707804 писал(а):
То, что конкретно xgboost там на сплите 60к/10к не переобучается (с параметрами по умолчанию) - я не знал.

Да, деревянные ансамбли меньше переобучаются, но конкретно про МНИСТ, там шума мало, потому эффект не заметен. Если данные вообще без шума, то переобучения не будет, хотя тут как посмотреть, сложность модели увеличивается, то есть её цена, а качество нет, всё равно нужно ловить момент оптимума.

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 15:48 
mihaild в сообщении #1707804 писал(а):
Для мультикласса - ну например замените в тестовой выборке все метки 0 на 1, 1 на 2, ..., 9 на 0.

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

-- Пт окт 31, 2025 16:51:46 --

-- Пт окт 31, 2025 17:04:22 --

mihaild в сообщении #1707804 писал(а):
Выборка сгенерирована так: 1000 объектов класса 0 с одним признаком, распределенным по $\mathcal N(0, 1)$, 1000 объектов класса 1 с одним признаком, распределенным по $\mathcal N(1, 1)$.


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

код: [ скачать ] [ спрятать ]
Используется синтаксис C#

public class DataGenerator
{
    private readonly Random _random;
   
    public DataGenerator(int? seed = null)
    {
        _random = seed.HasValue ? new Random(seed.Value) : new Random();
    }
   
    // Основной метод для генерации данных
    public (double[] trainX, int[] trainY, double[] testX, int[] testY) GenerateDataset(
        int samplesPerClass = 1000,
        double trainRatio = 0.7)
    {
        // Генерация данных для класса 0: N(0, 1)
        double[] class0 = GenerateNormalDistribution(samplesPerClass, mean: 0.0, stdDev: 1.0);
       
        // Генерация данных для класса 1: N(1, 1)
        double[] class1 = GenerateNormalDistribution(samplesPerClass, mean: 1.0, stdDev: 1.0);
       
        // Разделение на обучающую и тестовую выборки
        int trainSamplesPerClass = (int)(samplesPerClass * trainRatio);
        int testSamplesPerClass = samplesPerClass - trainSamplesPerClass;
       
        // Обучающая выборка
        double[] trainX = new double[trainSamplesPerClass * 2];
        int[] trainY = new int[trainSamplesPerClass * 2];
       
        // Тестовая выборка
        double[] testX = new double[testSamplesPerClass * 2];
        int[] testY = new int[testSamplesPerClass * 2];
       
        // Заполняем обучающую выборку
        Array.Copy(class0, 0, trainX, 0, trainSamplesPerClass);
        Array.Copy(class1, 0, trainX, trainSamplesPerClass, trainSamplesPerClass);
       
        for (int i = 0; i < trainSamplesPerClass; i++)
        {
            trainY[i] = 0; // Класс 0
            trainY[i + trainSamplesPerClass] = 1; // Класс 1
        }
       
        // Заполняем тестовую выборку
        Array.Copy(class0, trainSamplesPerClass, testX, 0, testSamplesPerClass);
        Array.Copy(class1, trainSamplesPerClass, testX, testSamplesPerClass, testSamplesPerClass);
       
        for (int i = 0; i < testSamplesPerClass; i++)
        {
            testY[i] = 0; // Класс 0
            testY[i + testSamplesPerClass] = 1; // Класс 1
        }
       
        // Перемешиваем данные (важно для обучения моделей)
        ShuffleArrays(trainX, trainY);
        ShuffleArrays(testX, testY);
       
        return (trainX, trainY, testX, testY);
    }
   
    // Генерация нормального распределения using Box-Muller transform
    private double[] GenerateNormalDistribution(int count, double mean, double stdDev)
    {
        double[] samples = new double[count];
       
        for (int i = 0; i < count; i += 2)
        {
            // Генерируем два случайных числа с равномерным распределением
            double u1 = 1.0 - _random.NextDouble();
            double u2 = 1.0 - _random.NextDouble();
           
            // Преобразование Бокса-Мюллера
            double z0 = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Cos(2.0 * Math.PI * u2);
            double z1 = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2);
           
            samples[i] = mean + stdDev * z0;
           
            if (i + 1 < count)
            {
                samples[i + 1] = mean + stdDev * z1;
            }
        }
       
        return samples;
    }
   
    // Метод для перемешивания данных и меток одинаковым образом
    private void ShuffleArrays(double[] x, int[] y)
    {
        for (int i = x.Length - 1; i > 0; i--)
        {
            int j = _random.Next(i + 1);
           
            // Перемешиваем признаки
            double tempX = x[i];
            x[i] = x[j];
            x[j] = tempX;
           
            // Перемешиваем метки соответствующим образом
            int tempY = y[i];
            y[i] = y[j];
            y[j] = tempY;
        }
    }
}
 


-- Пт окт 31, 2025 17:14:15 --

mihaild в сообщении #1707804 писал(а):
tac в сообщении #1707780

писал(а):
Мы видимо говорим о разного рода "противоречивости", было бы интересно понять, что вы понимаете под "противоречивыми примерами" Давайте сначала Вы.


У нас 2 бита на входе, и 1 бит на выходе. Если комбинация помечена как 01 как класс 0, и точно такая же комбинация помечена 01 помечена как класс 1 - примеры в выборке противоречивы.

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

-- Пт окт 31, 2025 17:18:23 --

mihaild в сообщении #1707804 писал(а):
Об устройстве предлагаемой Вами модели.


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

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 16:38 
Аватара пользователя
tac в сообщении #1707819 писал(а):
Вы разве не понимаете, что будет тоже самое?
В тестовой меняем, в обучающей не меняем.
На всякий случай: я выше явно ввёл слегка нестандартное обозначение: $Y$ - это не таргеты, а тестовая выборка (признаки и метки).
tac в сообщении #1707819 писал(а):
Я вам даже больше скажу, можно делать любые непрерывные трансформации входов и выходов и это ровным счетом ничего не изменит
Ну примените ко входу непрерывное преобразование $f(x) = 0$ и покажите, как это ничего не меняет. Или давайте я буду предсказывать $x$, равномерно распределенный на $[0, 100]$, по $x$, а Вы - по непрерывному преобразованию от него $\sin(x)$, и посмотрим, у кого получится лучше. Если "ничего не изменит", то у Вас результат должен получиться не хуже.
tac в сообщении #1707819 писал(а):
Вот какой код предложил мне Дипсик, чтобы получить эти выборки, гляньте, подтвердите, что это соответствует задуманному
Написано кривовато и хрупко, но, вроде, правильно.
tac в сообщении #1707819 писал(а):
И что именно вы хотели о нем знать, я так и не понял
Что такое "А-элемент", например. И желательно вообще полное описание параметров модели и инференса.

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 21:29 
mihaild в сообщении #1707829 писал(а):
В тестовой меняем, в обучающей не меняем.


Хорошо пошутили, а чему мы тогда учим :) Как я и говорил, ваши выводы справедливы ИСКЛЮЧИТЕЛЬНО для несвязанных выборок. И зачем эти странные вырожденные случаи на практике? Выражаясь вашим языком, они совершенно не интересны.

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 21:30 
this в сообщении #1707803 писал(а):
Иногда красную линию удаётся склонить к затуханию второй раз (double descent).

Не иногда, а почти всегда, если размерность задачи достигнет некоторого предела.
Для линейных регрессий математически строго доказан этот эффект, с привлечением красивых результатов Марченко-Пастура про спектр стохастических матриц.

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 21:32 
Аватара пользователя
tac в сообщении #1707876 писал(а):
Хорошо пошутили, а чему мы тогда учим :) Как я и говорил, ваши выводы справедливы ИСКЛЮЧИТЕЛЬНО для несвязанных выборок
Формализуйте понятие "несвязанных".
tac в сообщении #1707876 писал(а):
И зачем эти странные вырожденные случаи на практике?
Потому что на них лучше видны эффекты, возникающие и в не-вырожденных (и важных для практики) случаях.

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 21:45 
mihaild в сообщении #1707829 писал(а):
Что такое "А-элемент", например. И желательно вообще полное описание параметров модели и инференса.


Принципы нейромеханики. Перцептроны и теория механизмов мозга Розенблатт Ф. , например можно скачать тут

вам нужен 4 раздел, с 79 стр. по 89 стр.

-- Пт окт 31, 2025 23:09:56 --

mihaild в сообщении #1707880 писал(а):
Формализуйте понятие "несвязанных"


Хорошо, давайте попробуем. Это будет не тривиально. Вначале я дам вам определение "чистого обобщения".

Цитата:
Если контрольный стимул не совпадает ни с одним из обучающих стимулов, то эксперимент связан с обобщением.

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


Все эксперименты чистого обобщения не решаются любой нейронной сетью. Т.е. если кота показывать только в левом верхнем углу, то любая нейронная сеть никогда не поймет, что в правом нижнему углу был показан кот. Если только, не происходит как то наперед заданное вычисление инварианта кота. Как я понимаю CNN делают именно это, с помощью полного перебора всей сетчатки.

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

Про достаточные условия - продолжение следует 8-)

-- Пт окт 31, 2025 23:42:40 --

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

Теперь, когда экспериментатор решается заменить в обучающей выборке ВСЕ примеры, которые описывали подобие для одного класса, примерами другого класса - он создает несвязанные с этим классом примеры. [это как раз то, что Вы предложили сделать, доведя само понятие обучения до абсурда]. Если это происходит не намерено, а как тут уже обсуждалось через добавление скажем 20% шума, все зависит от того как именно этот шум будет воздействовать - если он приведет к чистому обобщений, обучающая выборка станет не репрезентативной и соответственно не связанной с классом.

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

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 22:53 
Аватара пользователя
tac в сообщении #1707885 писал(а):
вам нужен 4 раздел, с 79 стр. по 89 стр
Пока открыл 4.2. Не очень понял, чем это отличается от стандартных сейчас нейросетей, если в качестве активации взять функцию Хевисайда. Можете это как-то кратко описать?
И я правильно понимаю, что задержка есть у передачи сигнала, у состояния элементов задержки нет?
Вообще, для этой целей темы - задержка важна, или можно её игнорировать?
tac в сообщении #1707885 писал(а):
Все эксперименты чистого обобщения не решаются любой нейронной сетью
Да, и правда будет нетривиально :)
Что такое "стимул" - набор признаков? набор признаков + метка? что-то еще?)? Что такое "эксперимент" - датасет?
Что такое "сенсорные элементы" в случае произвольной модели? Или, если это понятие применимо не ко всем моделям - к каким применимо, и что означает в них?
И, наконец, что такое "полное отличие"?

 
 
 
 Re: О перцептроне Розенблатта
Сообщение31.10.2025, 23:09 
Но тут важно различать, как была найдена "точка стагнации". Её причиной может быть "не связанные" примеры, "противоречивые" примеры, недостаточная разрешающая способность сетчатки и недостаточная емкость среднего слоя (если число нейронов меньше числа примеров в обучающей выборки). Если последние две причины можно устранить (хотя практически это вычислительно затратно), то различие между "не связанными" и "противоречивыми" примерами формально установить сложнее.

Пример полностью противоречивого примера я уже давал

Цитата:
У нас 2 бита на входе, и 1 бит на выходе. Если комбинация помечена как 01 как класс 0, и точно такая же комбинация помечена 01 помечена как класс 1 - примеры в выборке противоречивы.


А вот пример, частично противоречивого примера, описывается сложнее и хуже понятен, но формально это то что я тоже уже приводил

Цитата:
не должно существовать никакой подпоследовательности стимулов, содержащей по меньшей мере по одному стимулу каждого класса, которая приводила бы к одинаковому коэффициенту смещения для каждого А-элемента в множестве А-элементов, реагирующих на эту подпоследовательность.

Коэффициентом смещения для А-элемента Ф. Розенблатт называл отношение n_i^+/n_i^- числа стимулов в обучающей выборке, которые относятся к одному классу, и возбуждают данный А — элемент, к числу стимулов, относящихся к другому классу, но также возбуждающие этот же А-элемент. Нарушение второго условия делает отношение n_i^+/n_i^- постоянным для А-элементов, реагирующих на стимулы из такой определённой подпоследовательности появления стимулов на входах перцептрона.


если провести кластеризацию, то такие частично противоречивые примеры, будут на границе разных классов. Я как раз сейчас занимаюсь экспериментами в этом, для чего очень репрезентативна задача MNIST Fashion (различение пиктограмм одежды). И вот эти примеры на границы предположительно все же могут дать вклад в качество прогноза.

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

-- Сб ноя 01, 2025 00:16:21 --

mihaild в сообщении #1707891 писал(а):
Пока открыл 4.2. Не очень понял, чем это отличается от стандартных сейчас нейросетей, если в качестве активации взять функцию Хевисайда. Можете это как-то кратко описать?


Первый слой S-A - это не полносвязный слой, с фиксированными весами +1 или -1, или 0 если связи нет. В остальном этот слой стандартный и не обучаемый. Но это как раз тот слой который при достаточно большом числе А-элементов обеспечивает отображение нелиниейной задачи в линейную. Слой A-R - это линейный классификатор.

-- Сб ноя 01, 2025 00:17:29 --

mihaild в сообщении #1707891 писал(а):
Вообще, для этой целей темы - задержка важна, или можно её игнорировать?


Нет, не важна .. просто у Розенблатта есть рекурентные сети, и поэтому он вводит задержку.

-- Сб ноя 01, 2025 00:18:58 --

mihaild в сообщении #1707891 писал(а):
Что такое "стимул" - набор признаков? набор признаков + метка? что-то еще?)?


один пример любой выборки, который состоит из всех бинарных признаков.

-- Сб ноя 01, 2025 00:20:32 --

mihaild в сообщении #1707891 писал(а):
Что такое "эксперимент" - датасет?


нет, в нашем контексте - это обучение + проверка на тесте

-- Сб ноя 01, 2025 00:21:36 --

mihaild в сообщении #1707891 писал(а):
Что такое "сенсорные элементы" в случае произвольной модели?


Это входы системы, принимающие бинарные признаки одного примера.

-- Сб ноя 01, 2025 00:23:49 --

mihaild в сообщении #1707891 писал(а):
И, наконец, что такое "полное отличие"?


Расположение (направление их в) бинарных признаков, описывающих объект совсем в других входах перцептрона (сенсорных элементах)

 
 
 [ Сообщений: 132 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group