Результатом применения любой унарной операции к суперпозиционному числу, это суперпозиционное число, которое охватывает множество чисел, которые могут быть получены в результате применения унарной операции к любому числу из множества, которое охватывает исходное суперпозиционное число. Например: sin([-pi, pi]) = [-1, 1]. Результатом применения любой бинарной операции над суперпозиционными числами, это суперпозиционное число, которое охватывает множество чисел, которые могут быть получены в результате применения бинарной операции к двум любым числам из множеств, которые охватывают исходные суперпозиционные числа. Например: [-3, 6] — [-12, 7] = [-10, 18].
Вот у вас есть число x=[-1, 1], чему равно 1/x?
(-бесконечность,0)(0, бесконечность)
Ээээ… так «можно производить» или «невозможно посчитать»?
Можем ли мы в математическом смысле вычислить выражение TREE(3)*TREE(3) — да можем, а использовать для вычисления в реальных компьютерных программах — нет, не хватит места для хранения в двоичном виде.
Это какое-то ваше собственное определение «простых feedforward», я так понимаю?
Да. Но в различных источниках по которым я изучал нейронные сети, всегда рассматривалась нейронная сеть в которой каждый сигнал поступает на вход каждого нейрона следующего слоя и сигналы умножались на веса, а сумма каждого сигнала перемноженного на вес поступает на вход функции активации, в последствии я изучал и более сложные feedforward сети и у меня почему то отложилось в голове название таких сетей как «простые feedforward», это мой недочёт, но я и не идеален и не претендую на звание лучший писатель.
Я гуглил «probability density function neural network» на 5-ти первых страницах ничего интересного нету, в основном построение плотности вероятности с помощью нейросетей, а не наоборот. Хотя найдено 59 700 000 раз.
Вау! Из отношения целого и «суперпозиционного » числа мы получим два «суперпозиционных» числа
Получаем одно суперпозиционное число, состоящее из 2 промежутков.
хотя бесконечность — это не число
И что? В математике бесконечность встречается сплошь и рядом, а при обучении нейронных сеть, если функция активации подобрана корректно, бесконечность мы никогда и не получим.
Вы не правильно поняли, функция не рассматривается на концах, программист определяет бинарные и унарные операции, а затем в функцию подставляется x в виде суперпозиционного числа, то есть вычисления будут вот такими:
4*[0, 0.729] — 3 * [0, 0.9] = [0, 2.916] — [0, 2.7] = [-2.7, 2.916]
4*[-0.729, 0] — 3 * [-0.9, 0] = [-2.916, 0] — [-2.7, 0] = [-2.916, 2.7]
Но как видно, результат все равно не верный. Но алгоритм обучения нейронных сетей с помощью плотностных чисел всё ещё может быть пригодным для использования, поскольку в конце когда только один вес становиться плотностным числом, ошибка может в результате оказаться не значительной и алгоритм может подстроиться под ошибку. Но всё нужно смотреть на практике.
Все действия которые можно производить над вещественными числами, можно производить и над суперпозиционными, по определению. Другой вопрос, что на практике некоторые действия не возможно посчитать, но числа предназначены для обучения простых feedforward нейронных сетей, а там используется только сложение, умножение и действия из функции активации. Изучая нейронные сети, первой функцией активации с которой я познакомился, была сигмоида и возвести e в степень являющуюся суперпозиционным числом — не составляет никакого труда.
В этих числах нет ничего уникального, уникально здесь их применение для обучения нейронных сетей и даже если такое применение существует, то я о нём не знал и в любом случае должен был написать статью.
Поставим вопрос иначе: для ваших «чисел» определены все операции, которые используются в современном машинном обучении?
Для суперпозиционных чисел доступны все действия, которые доступны и для вещественных чисел. Вот цитата из статьи:
Результатом применения любой унарной операции к суперпозиционному числу, это суперпозиционное число, которое охватывает множество чисел, которые могут быть получены в результате применения унарной операции к любому числу из множества, которое охватывает исходное суперпозиционное число. Например: sin([-pi, pi]) = [-1, 1]. Результатом применения любой бинарной операции над суперпозиционными числами, это суперпозиционное число, которое охватывает множество чисел, которые могут быть получены в результате применения бинарной операции к двум любым числам из множеств, которые охватывают исходные суперпозиционные числа. Например: [-3, 6] — [-12, 7] = [-10, 18].
Сделал поиск в вашей слова «разность», но не нашёл его. Да и вообще математической формализации вашего изобретения тут явно не хватает, поэтому и написал ниже, что «если я правильно понял вашу мысль».
Цитата с примерами из статьи:
Результатом применения любой унарной операции к суперпозиционному числу, это суперпозиционное число, которое охватывает множество чисел, которые могут быть получены в результате применения унарной операции к любому числу из множества, которое охватывает исходное суперпозиционное число. Например: sin([-pi, pi]) = [-1, 1]. Результатом применения любой бинарной операции над суперпозиционными числами, это суперпозиционное число, которое охватывает множество чисел, которые могут быть получены в результате применения бинарной операции к двум любым числам из множеств, которые охватывают исходные суперпозиционные числа. Например: [-3, 6] — [-12, 7] = [-10, 18].
Из этих определений можно понять, что к суперпозиционным числам можно применять такие же унарные и бинарные действия, как и к вещественным.
Поэтому вместо того, что изобретать новые числа — можно взять существующие математические объекты и задать (и именовать) для них новые функции.
Это очевидно, как и очевидно то, что вычисления с комплексными числами можно сделать и без них, поэтому вместо того, что изобретать новые числа — можно взять существующие математические объекты и задать (и именовать) для них новые функции (это ваша логика). А знаете почему ввели комплексные числа? Потому, что это удобней.
И вы утверждаете, что у вас эти метрики будут хорошими.
Покажите пожалуйста где я такое утверждал? Я сказал что он может оказаться эффективным, в начале нужно его реализовать, затем сравнить с существующими решениями. Не нужно путать, я ничего не утверждал.
Достойно уважения то, что вы переизобрели такие понятия, как плотность вероятности и некоторые другие.
Зачем вы дали мне статью на википедию, в статье указано что я знаком с этим термином, числа по этому я и назвал «плотностные», от названия плотность вероятности, хотя я и узнал об этом термине после того как придумал алгоритм из статьи.
Но, к сожалению, вы опоздали на пару сотен лет. В нынешнее время более продуктивно сначала изучить то, что изобретено другими, а уже потом изобретать своё.
Количество знаний накопленных человечеством слишком велико, что один человек мог знать всё. Математика это не основной мой род занятий, с натяжкой можно назвать хобби. Но даже в моём основном хобби, которым является программирование, которым к слову я уже увлечён без малого 20 лет, 6 лет назад мне понадобилась структура с определёнными свойствами и я её изобрёл, а потом оказалось что такая структура была изобретена в 1959 и называется она «префиксное дерево», за 14 лет я читал и смотрел множество учебников, статей, видеороликов по программированию, проходил курсы и нигде никто не упомянул о префиксных деревьях. К тому же эта статья не о плотности вероятности, а про применение её в обручении нейронных сетей. Может кто то уже без меня придумал такой способ обучения, но мне об этом не известно. Если кто-то уже придумал такой подход в обучении нейросетей, ну ладно, одной статьёй больше, одной меньше, зато я буду уверен что если никто ещё не додумался использовать плотность вероятности в обучении нейронных сетей, то эта идея не исчезнет, если со мной, что то случиться.
Можно ли поинтересоваться вашим возрастом?
31
Так вот, вы имеете функцию sin(x) на сегменте [-4,4] и хотите найти её максимум. Вы делите промежуток на 2 части [-4,0]; [0, 4] и выбираете ту из них, максимум на которой больше. Главная загвоздка данного шага в том, чтобы узнать, какую половину сегмента выбрать.
Вы не внимательно читали статью, как находить в какой половине находиться максимум, указано (для этого и используются суперпозиционные числа).
Понятно, что для синуса координаты максимумов известны, но что, если ваша функция неизвестная? Для неизвестной функции вам недоступна операция нахождения максимума на промежутке. Всё, что вы можете — это вычислить значение функции в какой-нибудь точке.
Вы либо очень не внимательно читали статью, либо не смогли ничего понять. Попытаюсь объяснить максимально просто. Все расчёты в функциях ведутся с использованием суперпозиционных чисел. Допустим есть неизвестная нам функция, пусть это будет y = x^2 + 1, а нам нужно найти максимум на участке от 0 до 10, в начале вычисляем y([0, 5]) = ([0, 5])^2 + 1 = [0, 25] + 1 = [1, 26], затем вычислим y([5, 10]) = [5, 10]^2 + 1 = [25, 100] + 1 = [26, 101]. Как мы видим в первой половине значения варьируются от 1 до 26, а во второй от 26 до 101. Поскольку функция нам не известна, мы не знаем в какой конкретной точке находится максимум, но мы точно знаем в какой половине находится максимум, с помощью метода бинарного поиска мы сможем найти если не максимум, то как минимум число очень близкое к нему, что для обучения нейросетей нам и нужно.
Реально работающие методы поиска максимума (например, метод золотого сечения) вычисляют значение функции, руководствуясь определённой стратегией, и постепенно сходятся к максимуму. Критерий эффективности таких методов обычно в том, чтобы решить задачу за минимальное количество вычислений функции.
Функцию y = sin(x) я брал лишь для примера и простоты объяснения, на практике для обучения нейронных сетей нужно будет искать максимум в функции вида y(x1,x2,x3… xn) = огромное выражение использующие все иксы, не думаю что метод золотого сечения будет эффективней.
Суперпозиционные числа назовем общепринято — множество (диапазон) чисел.
Нельзя назвать суперпозиционное число множеством, поскольку хоть они и похожи, но работа с ними ведётся по разному. Например и у множеств и у суперпозиционных чисел есть термин «разность», но означает совершенно разные операции. С таким подходом комплексное число можно назвать, комплексом из двух чисел, но результатом сложения комплекса из двух чисел — комплекс из четырёх чисел, но результат сложения двух комплексных чисел — комплексное число. Ну и говоря программистским языком — «Суперпозиционные числа и множества — это два разных типа, имеющие одинаковую структуру, но различные функции для работы с объектами данных типов.»
Плотностные числа — это называется распределением вероятности дискретной случайной величины или распределением плотности вероятности непрерывной случайной величины.
Таким способом можно называть всё что угодно:
дробь — отложенное вычисление
питьевая вода — соли различных металов растворённые в большом количестве монооксида водорода
воздух — газообразная смесь состоящая из кислорода и азота, с небольшим вкраплением водяного пара и иных газов
Я не претендую на общепринятость моих названии и написал статью об обучении нейронных сетей, но в статье указал как я пришёл к такому алгоритму, но чтобы в статье постоянно не писать «вот эти вот числа», или «вот те числа что я там раньше придумал», или тем более «распределением плотности вероятности непрерывной случайной величины», я дал таким числам название.
Представляю! Но я нигде не упомянул, что алгоритм быстрый, этот алгоритм может оказаться эфективным с точки зрения качества обучения. Так же мною была упомянута оптимизация которая может ускорить процесс обучения, правда я забыл уточнить, что данная оптимизация позволяет значительно упростить и сделать эффективнее процесс расспаралеливания вычислений.
Как я писал в статье, этот алгоритм не готовое решение, а просто идея и опять же, как указанно в статье, я озвучил идею потому, что если каким то чудом (хотя навряд ли конечно, но всё же) только я додумался до такого алгоритма, в случае если со мной что то случиться, эти знания не будут утеряны. А там глядишь кто то прочитает эту статью и на основе высказанных мною идей придумает что то реально применимое.
Если как-то оптимизировать вычисление плотности вероятности, жертвуя точностью в угоду скорости, то легко пропустить локальный минимум. А если считать всё точно, то даже для крайних значений для каждого веса объём вычислений вырастет как 2^N, где N — количество нейронов.
Объём вычислений зависит не только от количества нейронов, но и от количества слоёв. Про оптимизацию о которой я упомянул в статье, понятно в двух предложениях не рассказать, но она позволяет спроектировать сеть таким образом, что объем данных и количество вычислений можно снизить, а так же вычисления можно будет очень сильно распараллелить. Это всё равно не позволит обучать большого размера нейронные сеть, но позволит увеличить допустимый размер сети. Как я писал раньше, для такой оптимизации необходимо, чтобы произведение плотностных чисел, обладало нужным свойством.
Обучение базируется на том, чтобы корректировать веса с помощью обратного распространения ошибки, который, в свою очередь, требует того, чтобы функция активации была дифференцируема. Вопрос — как это считать в случае с использованием плотностей вероятности?
При использовании плотностных чисел, функция активации может быть фактически любой, главное чтобы её было легко вычислять. Думаю f(x) = x — в полне подойдёт.
(-бесконечность,0)(0, бесконечность)
Можем ли мы в математическом смысле вычислить выражение TREE(3)*TREE(3) — да можем, а использовать для вычисления в реальных компьютерных программах — нет, не хватит места для хранения в двоичном виде.
Да. Но в различных источниках по которым я изучал нейронные сети, всегда рассматривалась нейронная сеть в которой каждый сигнал поступает на вход каждого нейрона следующего слоя и сигналы умножались на веса, а сумма каждого сигнала перемноженного на вес поступает на вход функции активации, в последствии я изучал и более сложные feedforward сети и у меня почему то отложилось в голове название таких сетей как «простые feedforward», это мой недочёт, но я и не идеален и не претендую на звание лучший писатель.
И что? В математике бесконечность встречается сплошь и рядом, а при обучении нейронных сеть, если функция активации подобрана корректно, бесконечность мы никогда и не получим.
(-бесконечность, 0) (0, бесконечность)
4*[0, 0.729] — 3 * [0, 0.9] = [0, 2.916] — [0, 2.7] = [-2.7, 2.916]
4*[-0.729, 0] — 3 * [-0.9, 0] = [-2.916, 0] — [-2.7, 0] = [-2.916, 2.7]
Но как видно, результат все равно не верный. Но алгоритм обучения нейронных сетей с помощью плотностных чисел всё ещё может быть пригодным для использования, поскольку в конце когда только один вес становиться плотностным числом, ошибка может в результате оказаться не значительной и алгоритм может подстроиться под ошибку. Но всё нужно смотреть на практике.
Для суперпозиционных чисел доступны все действия, которые доступны и для вещественных чисел. Вот цитата из статьи:
Цитата с примерами из статьи:
Из этих определений можно понять, что к суперпозиционным числам можно применять такие же унарные и бинарные действия, как и к вещественным.
Это очевидно, как и очевидно то, что вычисления с комплексными числами можно сделать и без них, поэтому вместо того, что изобретать новые числа — можно взять существующие математические объекты и задать (и именовать) для них новые функции (это ваша логика). А знаете почему ввели комплексные числа? Потому, что это удобней.
Зачем вы дали мне статью на википедию, в статье указано что я знаком с этим термином, числа по этому я и назвал «плотностные», от названия плотность вероятности, хотя я и узнал об этом термине после того как придумал алгоритм из статьи.
Количество знаний накопленных человечеством слишком велико, что один человек мог знать всё. Математика это не основной мой род занятий, с натяжкой можно назвать хобби. Но даже в моём основном хобби, которым является программирование, которым к слову я уже увлечён без малого 20 лет, 6 лет назад мне понадобилась структура с определёнными свойствами и я её изобрёл, а потом оказалось что такая структура была изобретена в 1959 и называется она «префиксное дерево», за 14 лет я читал и смотрел множество учебников, статей, видеороликов по программированию, проходил курсы и нигде никто не упомянул о префиксных деревьях. К тому же эта статья не о плотности вероятности, а про применение её в обручении нейронных сетей. Может кто то уже без меня придумал такой способ обучения, но мне об этом не известно. Если кто-то уже придумал такой подход в обучении нейросетей, ну ладно, одной статьёй больше, одной меньше, зато я буду уверен что если никто ещё не додумался использовать плотность вероятности в обучении нейронных сетей, то эта идея не исчезнет, если со мной, что то случиться.
31
Вы не внимательно читали статью, как находить в какой половине находиться максимум, указано (для этого и используются суперпозиционные числа).
Вы либо очень не внимательно читали статью, либо не смогли ничего понять. Попытаюсь объяснить максимально просто. Все расчёты в функциях ведутся с использованием суперпозиционных чисел. Допустим есть неизвестная нам функция, пусть это будет y = x^2 + 1, а нам нужно найти максимум на участке от 0 до 10, в начале вычисляем y([0, 5]) = ([0, 5])^2 + 1 = [0, 25] + 1 = [1, 26], затем вычислим y([5, 10]) = [5, 10]^2 + 1 = [25, 100] + 1 = [26, 101]. Как мы видим в первой половине значения варьируются от 1 до 26, а во второй от 26 до 101. Поскольку функция нам не известна, мы не знаем в какой конкретной точке находится максимум, но мы точно знаем в какой половине находится максимум, с помощью метода бинарного поиска мы сможем найти если не максимум, то как минимум число очень близкое к нему, что для обучения нейросетей нам и нужно.
Функцию y = sin(x) я брал лишь для примера и простоты объяснения, на практике для обучения нейронных сетей нужно будет искать максимум в функции вида y(x1,x2,x3… xn) = огромное выражение использующие все иксы, не думаю что метод золотого сечения будет эффективней.
Нельзя назвать суперпозиционное число множеством, поскольку хоть они и похожи, но работа с ними ведётся по разному. Например и у множеств и у суперпозиционных чисел есть термин «разность», но означает совершенно разные операции. С таким подходом комплексное число можно назвать, комплексом из двух чисел, но результатом сложения комплекса из двух чисел — комплекс из четырёх чисел, но результат сложения двух комплексных чисел — комплексное число. Ну и говоря программистским языком — «Суперпозиционные числа и множества — это два разных типа, имеющие одинаковую структуру, но различные функции для работы с объектами данных типов.»
Таким способом можно называть всё что угодно:
дробь — отложенное вычисление
питьевая вода — соли различных металов растворённые в большом количестве монооксида водорода
воздух — газообразная смесь состоящая из кислорода и азота, с небольшим вкраплением водяного пара и иных газов
Я не претендую на общепринятость моих названии и написал статью об обучении нейронных сетей, но в статье указал как я пришёл к такому алгоритму, но чтобы в статье постоянно не писать «вот эти вот числа», или «вот те числа что я там раньше придумал», или тем более «распределением плотности вероятности непрерывной случайной величины», я дал таким числам название.
То на сколько обученная сеть справляется с поставленными задачами.
Даю сети работу на которую она была рассчитана, чем меньше ошибок и чем точнее результат, тем эффективность выше.
Как я писал в статье, этот алгоритм не готовое решение, а просто идея и опять же, как указанно в статье, я озвучил идею потому, что если каким то чудом (хотя навряд ли конечно, но всё же) только я додумался до такого алгоритма, в случае если со мной что то случиться, эти знания не будут утеряны. А там глядишь кто то прочитает эту статью и на основе высказанных мною идей придумает что то реально применимое.
При использовании плотностных чисел, функция активации может быть фактически любой, главное чтобы её было легко вычислять. Думаю f(x) = x — в полне подойдёт.