2 / 2 / 2
Регистрация: 30.01.2013
Сообщений: 150
1

НС выполняющая функцию для двух чисел

24.03.2017, 17:02. Показов 3124. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Собственно меня интересует, как НС способна получать новые данные на основе обобщения предыдущих. Нашёл много статей про сети, которые обрабатывают данные, и сравнивают их с уже выученными. Выбирается наиболее совпавший. Для этого используются разнообразные алгоритмы основанные на перемножении матриц или построении простейшего графа нейронов. Однако я не понимаю, как написать НС, которую можно, например, научить складывать два числа (хотя бы до 0 до 999). Конечно же, мы сначала её обучим: дадим её результата сложения всех однозначных чисел, рандомных двузначных и трёхзначных, а что дальше? Любые мысли по программной реализации приводят меня к построению конкретного алгоритма, похожего на длинную арифметику. Как сделать так, что бы НС догадалась, что от неё хотят. Понимаю, что это уже слишком похоже на ИИ, но возможно есть уже статьи про это.
Так же непонятно, можно ли будет научить такую НС вычислять любую другую функцию, зависящую от двух чисел.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2017, 17:02
Ответы с готовыми решениями:

Внешняя процедура, выполняющая сложение двух чисел (передача параметров через стек)
Помогите, пожалуйста!!!! Написать прорамму с внешней процедурой, выполняющую сложение 2 чисел с...

Создать функцию, которая для двух данных чисел определяет в каком числе произвольных чисел больше
создать функцию,которая для двух данных чисел определяет в каком числе произвольных чисел больше

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

Составить функцию, которая для двух натуральных чисел
Составить функцию, которая для двух натуральных чисел a и b находит наибольший общий делитель,...

10
639 / 515 / 73
Регистрация: 20.09.2014
Сообщений: 3,334
24.03.2017, 20:36 2
Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
Как сделать так, что бы НС догадалась, что от неё хотят.
Вы что-то запутались в своих рассуждениях. Нейронная сеть "догадалась", что надо складывать два числа, но Вы утверждаете обратное, что она не "догадалась" и хотите, чтобы она все-таки "догадалась". Вы хоть в курсе, что нейронная сеть способна успешно работать после обучения неполным набором примеров и при наличии погрешностей и ошибочных примеров?
0
2 / 2 / 2
Регистрация: 30.01.2013
Сообщений: 150
24.03.2017, 20:51  [ТС] 3
Я попросил помочь, а не указывать на мои ошибки (которых нет). Ладно, объясняю.
Я не говорил, что НС не "догадалась". Я просто не понимаю, как реализовать подобное прогнозирование. Я не смог сам найти примеров с реализацией НС, которая бы прогнозировала результат функции на основе обученного. Ещё раз прошу, киньте ссылки, возможно исходники, возможно на C++.
0
639 / 515 / 73
Регистрация: 20.09.2014
Сообщений: 3,334
25.03.2017, 04:29 4
Хорошо. Я не буду указывать на Ваши ошибки, возможно Вы просто писали пост, не удосужившись позаботиться о логичности предложений, либо не совсем представляя того, чего хотите.

Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
Однако я не понимаю, как написать НС, которую можно, например, научить складывать два числа (хотя бы до 0 до 999). Конечно же, мы сначала её обучим: дадим её результата сложения всех однозначных чисел, рандомных двузначных и трёхзначных, а что дальше?
Значит так. Работа с любым обучаемым алгоритмом происходит в два этапа: обучение и эксплуатация. Соответственно, ответ на Ваш вопрос: далее последует эксплуатация, то есть машина будет осуществлять ту функцию, которой она обучилась. Этапы обучения и эксплуатации могут также налагаться друг на друга по времени.

Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
Как сделать так, что бы НС догадалась, что от неё хотят.
Без обучающих примеров не обойтись, то есть надо обеспечить обучение - это вычисление весов и порогов синапсов. Чем больше примеров, тем лучше. Результат не всегда может получиться удовлетворительным, так как нужно уметь выбирать правильно структуру сети, начальные веса и пороги и т.п. и т.д.

Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
Так же непонятно, можно ли будет научить такую НС вычислять любую другую функцию, зависящую от двух чисел.
Можно.
0
28 / 28 / 5
Регистрация: 27.10.2015
Сообщений: 89
25.03.2017, 04:58 5
Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
Добрый день.
Вы забыли указать в чём причина вашего интереса и сколько времени вы готовы потратить, чтобы его удовлетворить. Ответы на ваши вопросы есть, но для их восприятия надо хотя бы знать базу (минимум, что такое НС и как они работают). А чтобы узнать эту базу надо прочитать учебник или пройти онлайн курс. И это уже не меньше недели вдумчивого чтения.
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
25.03.2017, 19:26 6
Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
научить складывать два числа (хотя бы до 0 до 999)
полусумматор + простая рекуррентная сеть
0
1467 / 1386 / 238
Регистрация: 19.02.2010
Сообщений: 3,886
26.03.2017, 21:47 7
Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
Однако я не понимаю, как написать НС, которую можно, например, научить складывать два числа (хотя бы до 0 до 999).
А не нужно обучать нейросетки таким задачам, для решения которых они не предназначены или не проектировались.


Цитата Сообщение от transformator.t Посмотреть сообщение
полусумматор + простая рекуррентная сеть
Обычный линейный сумматор, без всяких рекурсий, и не превращая его в какой-то формальный нейрон (т.е. не добавляя никакой нелинейности на выход сумматора).


Цитата Сообщение от Mikhaylo Посмотреть сообщение
Без обучающих примеров не обойтись
Ну зачем Вы предлагаете ТСу такой сложный способ?
Ведь на вопрос "Как сделать так, что бы НС догадалась, что от неё хотят." есть гораздо более простой ответ - сделать нейросеть-телепата.
0
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
28.03.2017, 16:44 8
Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
я не понимаю, как написать НС, которую можно, например, научить складывать два числа (хотя бы до 0 до 999).
Как идея представлять весь пример задачи как бинарную матрицу. Например “12+345” все в бинарную форму.
12 в 110
Придумать знаку “+” некий код например 1111
345 в 101 011 001
Тогда заполняем кодом например слева на право. Получим матрицу.
Название: ScreenShot00192.jpg
Просмотров: 62

Размер: 5.1 Кб
Тогда такая задачка превратиться в стандартную “распознать букву”.
Только вместо букв будут закодированы примеры.
Цитата Сообщение от xxXAKEPxx Посмотреть сообщение
научить такую НС вычислять любую другую функцию, зависящую от двух чисел.
Точно также.

Но зачем это нужно? Искать сумму или функцию как обычно намного точней и быстрей
Чем учить нейросеть легиону примеров…
В моем представлении НС нужны для поиска неявных и нелинейных зависимостей без строгих правил.
А у вас все задачи с известными строгими законами. Вам тут НС просто вообще не нужна.
Нужно складывать? Так сложите как обычные числа. Тоже самое для функций.

А вот если вы дрожащей рукой напишите этот пример и нужно будет узнать в нем что это
“12+345” то да…тут и нужна НС + обучение.
0
1467 / 1386 / 238
Регистрация: 19.02.2010
Сообщений: 3,886
29.03.2017, 23:53 9
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Как идея представлять весь пример задачи как бинарную матрицу. Например “12+345” все в бинарную форму.
12 в 110
Тогда уж в (двоичный) код Грея.

И (в тему ИИшного раздела) можно ещё потребовать от нейросетки, чтобы ответ она выдавала не в виде чисел (пофиг - десятичных, двоичных и иных), а в виде текста. Как в анекдоте:

Пятилетняя дочка: 001,010,011,100,101.... Папа, а как дальше?
Папа-программист: Вышел зайчик погулять!
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
05.05.2017, 07:04 10
Для того чтобы научить нейронную сеть считать от 0 до 999 можно попробовать такой подход.
Вы можете принимать на вход два значения. Нейронная сеть должна уметь сначала переводить бинарные числа, например, в dec, - это будет её один блок. Если ошибка при выполнении операции преобразования в число (например буква) - то отправить алгоритм на блок распознавания букв и решение уравнений. Если ошибок нет, и имеется знак операции, то нейронная сеть может использовать "ХАК" - вычислить эти числа как простые.
Для начала понимания, что Вы хотите следует научиться делать сети, которые умеют складывать числа.
Вопрос №2 - как научить сеть складывать числа - не просто делать выборки, а именно использовать модель ИС для создания блоков, которые уже можно использовать для сложения - это очень интересная задача - не аппроксимация, а именно модельное решение.

Вы можете посмотреть идею здесь
https://habrahabr.ru/post/321642/
0
-21 / 30 / 1
Регистрация: 25.04.2017
Сообщений: 356
05.05.2017, 16:56 11
До тех пор, пока числа будут идентификаторами, а не метрикой ничего ничему обучить не удастся.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2017, 16:56
Помогаю со студенческими работами здесь

Написать рекурсивную функцию для умножения двух чисел
написать рекурсию для умножения двух чисел

Разработать функцию min(a,b) для нахождения минимального из двух чисел
Вычислить с помощью него минимальное значение из четырех x,y,z,v.

Вычислить используя функцию нахождения минимума для двух чисел
Вычислить Y=MIN(A,3B)*MIN(2A-B, 2B), используя функцию нахождения минимума для двух чисел.

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru