GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.7 (9)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Бинарный нейрон и случайные числа
cortl
Сообщений: 258
На: Бинарный нейрон и случайные числа
Добавлено: 16 ноя 16 12:15
Изменено: 16 ноя 16 12:16
Отлично! Но это не NAND. И, я могу ошибаться, но по-моему "<" потребует больше ресурсов, чем "==", возможно, даже чем 2х"==". Вы, как гуру в ИТ, можете на вскидку дать ответ, прав я или нет. Буду признателен.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: Бинарный нейрон и случайные числа
Добавлено: 16 ноя 16 12:56
Это Ваша функция f2. Запустите и сравните скорость.
Вообще это всё баловство, самые азы. А в чем была основная идея или какая была задача?
[Ответ][Цитата]
daner
Сообщений: 4593
На: Бинарный нейрон и случайные числа
Добавлено: 16 ноя 16 15:29
>>> cortl

[...
Вы действительно считаете, что автор этого кода может не понимать (не знать) как работают базовые логические элементы и не уметь из них построить всё, что необходимо?
...]

Логические выражения вы конечно же знаете, но вот дискретной математикой, мне кажется вы не занимались.

Если бы занимались, то знали бы про функциональную полноту (или как у нас ее называли: полный логический базис).

[...
Я не считаю зазорным чего-то не знать. Считаю неприемлемым высказываться о чём-либо (тем более - оценивать) не разобравшись. Лучше, для начала, задать вопросы или попросить помощи.
...]

А вот я наоборот. Каждый раз когда сталкиваюсь с чем-то чего не знаю, испытываю стыд .
Ну не так чтобы прямо топится, но как-то не приятно. Но у каждого свой подход. Это не более чем лирическое отступление.

А по поводу помощи, я именно это и сделал в своем первом посте. Попросил вас упростить описания вашего алгоритма обучения, чтобы можно было о нем судить. С остальным я разобрался.

[...
Предопределённость в смысле детерминированность, которая возникает у нейрона в момент инициализации
...]

ОК, давайте перечитаем ваш пред. пост

[...
То что вы видите как логику, я вижу как детерминированность.
...]

Простите, но я вообще перестал понимать что вы имеете ввиду.

[...
f1 также избыточна, с вашей точки зрения, как и f2, f3, f4. f1 не может заменить f2, f3, f4.
...]

Нет, вы все-таки не до конца понимаете функциональную полноту. Ваша f1 это NOR, которая точно так же как и NAND является полным базисом. Т.е. через нее можно выразить любую логическую функцию. В вашем случае можно использовать любой базис {NAND},{NOR},{NOT,OR}, {NOT,AND}, и т.д. Вот любые другие функции добавленные к необходимому минимуму будут избыточны. И это не какие-то эмпирические выводы, это выводы теоретические! Вам еще повезло что в состав ваших функций попал NOR иначе вы не могли бы быть уверенны в том, что ваша "сеть" вообще может представить любую возможную логическую функцию.

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

А вот алгоритм обучения используя базис в одну функцию, можно существенно упростить. Нет необходимости искать тип функции, нужно только подбирать связи между узлами.

[...
по тому что вашим методом (NAND) очень долго писать код, можно напутать, занимаясь рутиной.
...]

Какой код писать? я говорил, что достаточно написать одну функцию и все!

[...
Оппонируйте - приведите код который будет лаконичней и будет быстрее работать. Кроме того, мой код будет работать с одинаковой скоростью для любой из четырёх функци, что актуально в случае если для каждого нейрона будет использоваться индивидуальный мини-процессор. Более того архитектура для всех мини-процессоров будет одинаковой - взаимозаменяемость, однако.
...]

Так в том то и дело, что надо оставить код только одной функции, но такой которая будет представлять из себя лог. базис.
Ну а если говорить про скорость... я бы вообще таблицей это дело имплементировал бы.
намного быстрее.


bool f1(N1, N2)
{
bool tbl[4] = { 1, 0, 0, 0 };
return tbl[ N1*2+N2 ];
}

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

[...
О сходимости итеративного процесса я говорил не случайно. Я занимался программным расчётом разветвлённых гидравлических сетей. Тогда я осознал, что такое сходимость. В отношении ИИ я более, чем не уверен, что сходимость ему нужна, более того, очень вероятно, что она вредна или не имеет значения.
...]

Нда... ладно, простыми словами: Сходимость в данном случае, это когда ваш алгоритм обучения последовательно (с каждым примером, ну или в течении времени) улучшает результат распознавания.
Можно конечно и эмпирические это доказывать, но на сегодня ценность такого доказательства не велика. Так что, надо смотреть на упрощенный алгоритм, чтобы можно было попробовать (а вдруг?) подобрать опровержение (это проще сделать, так как надо будет только пример найти). Если пример будет -- Упс, если же нет, то есть вероятность доказать сходимость.

[...
Это не логические схемы, это самые бинарные нейроны из всех бинарных нейронов.
...]

Четкую разницу можете привести? Как по мне, так это ТОЧНО логические схемы.

[Ответ][Цитата]
cortl
Сообщений: 258
На: Бинарный нейрон и случайные числа
Добавлено: 16 ноя 16 19:48
Цитата:
Автор: NO.
Это Ваша функция f2. Запустите и сравните скорость.
Вообще это всё баловство, самые азы. А в чем была основная идея или какая была задача?


Да, конечно, эксперимент - это отличный способ, в данном случае простой и без капиталовложений. Но хотелось бы знать о чём идёт речь, чтобы правильно интерпретировать результаты эксперимента.
К сожалению, я не получил ответ на свой вопрос и мне придётся потратить много времени на поиск ответа (сходу найти уже не удалось).
Основная идея создать ИИ.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: Бинарный нейрон и случайные числа
Добавлено: 16 ноя 16 21:45
Цитата:
Автор: cortl
К сожалению, я не получил ответ на свой вопрос и мне придётся потратить много времени на поиск ответа (сходу найти уже не удалось).

Какой вопрос?
[Ответ][Цитата]
cortl
Сообщений: 258
На: Бинарный нейрон и случайные числа
Добавлено: 16 ноя 16 23:18
Изменено: 16 ноя 16 23:24
NO., оператор сравнения меньше "<" в вашем коде потребует больше ресурсов при выполнении, чем два оператора сравнения равенство "==" в моём? Хочу понять, как железо будет это решать, какие действия в каждом случае будут выполняться? Ссылка, вроде NAND Logic приветствуется.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: Бинарный нейрон и случайные числа
Добавлено: 17 ноя 16 1:34
Посмотрите в отладчике ассемблерный код, там сами процессорные операции шаг за шагом.
Потом процессор ещё постарается что-то выполнить параллельно, это у разных процессоров по-разному и зависит от разных обстоятельств, не разобраться. Можно только попробовать измерить скорость разных вариантов.
Но всё ещё далеко до действительно эффективных вычислений, может ещё в 1000 раз быстрее получится если хорошо подумать над задачей и правильно пользоваться железом.
[Ответ][Цитата]
cortl
Сообщений: 258
На: Бинарный нейрон и случайные числа
Добавлено: 17 ноя 16 21:20
Изменено: 17 ноя 16 21:42
Цитата:
Автор: daner
Логические выражения вы конечно же знаете, но вот дискретной математикой, мне кажется вы не занимались.
Если бы занимались, то знали бы про функциональную полноту (или как у нас ее называли: полный логический базис).


Я сказал: "Моё образование ближе к физике и математике". Это звучит так громко, что режет слух. На самом деле это следует понимать так: "я знаю кое-какие незначительные области из этих дисциплин". Скорее всего, вы можете натыкать меня носом, очень серьёзно, и в математику, и в программирование. Да, мне неприятно. Но я не заостряю на этом внимание. Я выношу из этого пользу. Я начинаю анализировать ваши высказывания искать определения терминов. И принимать решения - нужно более глубоко копать в этом направлении или поискать где-то ещё, то, что важней. Черепная коробка не может вместить вселенную, не стоит пытаться. Надо об этом помнить и правильно расставлять приоритеты.
Кстати, NO. Сейчас в ассемблер я не полезу. Мне безумно интересно как всё это устроено, но я боюсь застрять там надолго. Буду замерять время. Спасибо.

с> Предопределённость в смысле детерминированность, которая возникает у нейрона в момент инициализации
d> ОК, давайте перечитаем ваш пред. пост
c> То что вы видите как логику, я вижу как детерминированность.
d> Простите, но я вообще перестал понимать что вы имеете ввиду.

По сути, базовые логические элементы и все конструкции NAND Logic детерминированы.

Цитата:
Автор: daner
В вашем случае можно использовать любой базис {NAND},{NOR},{NOT,OR}, {NOT,AND}, и т.д.
...
А вот алгоритм обучения используя базис в одну функцию, можно существенно упростить. Нет необходимости искать тип функции, нужно только подбирать связи между узлами.


Действительно, я не понимал. Спасибо. Аргументы, почему я не могу их использовать:
Действительно, сеть на базисах будет работать. Но! Как построить эту сеть?
При инициализации мне нужно определить, какой элемент и как использовать. Чтобы сделать NOT из NAND или NOR необходимо объединить их входы. Для сети из 1000 нейронов, при случайном выборе нейронов-входов это случится 1 раз на 1 000 000. Думаю, на практике NOT потребуется чаще. Собирать статистику чтобы доказать, что 1:1 000 000 необходимо и достаточно? Я в ней погрязну навсегда. То же, но ещё хуже с {NOT,OR} и {NOT,AND}. У NOT один вход, у OR и AND - два (разница в архитектуре принципиальная). Как определиться, как часто использовать NOT?

Цитата:
Автор: daner

bool f1(N1, N2)
{
bool tbl[4] = { 1, 0, 0, 0 };
return tbl[ N1*2+N2 ];
}



На основе этого я продолжу свои разработки. Это позволит заменить сравнения арифметикой и упростит код.
Уже есть такие строки.

bool tbl[16] = { 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0 };
//...
//инициализация:
Nmem[k][0]=Nout[n][1];
Nmem[k][1]=Nout[j][1];
//...
//расчёт:
Nout[k][1]=tbl[Nmem[k][0]*8
+Nmem[k][1]*4
+Nout[ Nin[k][0] ][1]*2
+Nout[ Nin[k][1] ][1];


для админа: при использовании i внутри квадратных скобок внутри кода - весь последующий текст идёт курсивом и i со скобками исчезает. Пришлось заменить i на k.

Цитата:
Автор: daner
Нда... ладно, простыми словами: Сходимость в данном случае, это когда ваш алгоритм обучения последовательно (с каждым примером, ну или в течении времени) улучшает результат распознавания.
Можно конечно и эмпирические это доказывать, но на сегодня ценность такого доказательства не велика. Так что, надо смотреть на упрощенный алгоритм, чтобы можно было попробовать (а вдруг?) подобрать опровержение (это проще сделать, так как надо будет только пример найти). Если пример будет -- Упс, если же нет, то есть вероятность доказать сходимость.


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

c> Это не логические схемы, это самые бинарные нейроны из всех бинарных нейронов.
d> Четкую разницу можете привести? Как по мне, так это ТОЧНО логические схемы.

"Назови хоть горшком, только в печку не ставь". Я изложил свой подход в деталях, думаю, разобраться возможно (не спорю, тексты далеки от идеала). Повторюсь: это не конечный продукт. Не всё ещё решено. Это ещё нельзя назвать ИИ.
[Ответ][Цитата]
rrr3
Сообщений: 11857
На: Бинарный нейрон и случайные числа
+1
Добавлено: 17 ноя 16 22:44
Изменено: 17 ноя 16 22:45
Цитата:
Автор: cortl
...Повторюсь: это не конечный продукт. Не всё ещё решено. Это ещё нельзя назвать ИИ.

И это (понимание этого) уже само по себе замечательно!
[Ответ][Цитата]
daner
Сообщений: 4593
На: Бинарный нейрон и случайные числа
Добавлено: 18 ноя 16 1:57
>>>> cortl

[...
По сути, базовые логические элементы и все конструкции NAND Logic детерминированы.
...]

Ну да, так оно и есть. только как это противоречит логике?


[...
Действительно, я не понимал. Спасибо. Аргументы, почему я не могу их использовать:
Действительно, сеть на базисах будет работать. Но! Как построить эту сеть?
При инициализации мне нужно определить, какой элемент и как использовать. Чтобы сделать NOT из NAND или NOR необходимо объединить их входы. Для сети из 1000 нейронов, при случайном выборе нейронов-входов это случится 1 раз на 1 000 000. Думаю, на практике NOT потребуется чаще. Собирать статистику чтобы доказать, что 1:1 000 000 необходимо и достаточно? Я в ней погрязну навсегда. То же, но ещё хуже с {NOT,OR} и {NOT,AND}. У NOT один вход, у OR и AND - два (разница в архитектуре принципиальная). Как определиться, как часто использовать NOT?
...]

Ну это вообще очень простые проблемы.
Первая чуть сложнее, но дело в том, что при вашем подходе в 4 функции, ничего же не меняется. Ну сами прикиньте: как ваша "сеть" представит NOT функцию?

Второе, вообще элементарно, я на вскидку даже несколько вариантов мог бы предложить.
ну... самый простой например
bool NOT( N1, N2 ){ return 1-N1; }

Но на мой вкус, это не рационально брать базис более одной функции для вашей задачи.
Приходится вводить технику подборки типа "нейрона", а с одним типам все просто!


[...
Новый пример (что-то, чего НС не знает) - всегда "Упс", и в этот момент сходимости нет. Затем, обучение - и сходимость будет. Или не будет, а будет позже. Или не будет по причине того, что пример может оказаться случайной последовательностью. Можно положить всю жизнь в поисках закономерностей, например в изображении экрана телевизора, не настроенного на какой-нибудь канал. Человек в такой ситуации понимает бессмысленность этого и продолжает жить дальше.
...]

Нет, сходимость -- это не угадал/не угадал. Это способность к обучению. Т.е. когда со временем (с кол-вом примеров) результат улучшается. Если подать шум, то шум и получите это не имеет отношение к сходимости. Сходиться должна на нормальных примерах. И если даже на каком-то примере будет ошибка, это не значит, что сеть не сходится. Вот если вы можете доказать, что после вашего изменения (т.е. после корректировки на новом примере) результат обязательно приближает вашу сеть к цели ее распознавания -- это и есть сходимость.


[...
c> Это не логические схемы, это самые бинарные нейроны из всех бинарных нейронов.
d> Четкую разницу можете привести? Как по мне, так это ТОЧНО логические схемы.

"Назови хоть горшком, только в печку не ставь". Я изложил свой подход в деталях, думаю, разобраться возможно (не спорю, тексты далеки от идеала). Повторюсь: это не конечный продукт. Не всё ещё решено. Это ещё нельзя назвать ИИ.
...]

Вы в вашем первом посте написали что хотели бы узнать, есть ли что-то похожее на вашу сеть. Так? Вот собственно про это и "горшок". И если информацию по уже известному в этой области искать (чтобы колеса не изобретать), надо искать не в нейронных сетях, а именно в логических схемах или в генетическом/эволюционном программировании на их основе (ну или там всякие отжиги и т.д.)
Правильно называть термины необходимо не из-за педантичности, а из-за последующего поиска в правильном направлении.
[Ответ][Цитата]
Victor G. Tsaregorodtsev
Сообщений: 3187
На: Бинарный нейрон и случайные числа
Добавлено: 18 ноя 16 9:43
Цитата:
Автор: daner
сходимость -- это не угадал/не угадал. Это способность к обучению. Т.е. когда со временем (с кол-вом примеров) результат улучшается. Если подать шум, то шум и получите это не имеет отношение к сходимости. Сходиться должна на нормальных примерах.

Не всегда это будет верно.
Возьмите "многомерный случайный шум" (пикселы у ненастроенного телевизора, каждый пиксел принимает случайные значения из ограниченного диапазона значений). Нейросетки SOINN/ESOINN (и их модификации) сойдутся к достаточно равномерному заполнению многомерного гиперкуба нейронами-прототипами. И отношение частоты добавления нового прототипа к частоте попадания в любой из старых - устремится к бесконечности (вот такой вот индикатор отсутствия незапомненного = "результат улучшается" со временем = с количеством примеров). Также застабилизируются и положения нейронов, и связи между ними - и тут тоже можно придумывать индикаторы сходимости (сходимости к "запоминанию"=освоению того, что этой нейросетке может показать случайный мир, в который её поместили).

Цитата:
Автор: daner
если вы можете доказать, что после вашего изменения (т.е. после корректировки на новом примере) результат обязательно приближает вашу сеть к цели ее распознавания -- это и есть сходимость.

Вроде как описанные Вами требования - выполняются в вышеприведённом примере. В виде возможностей построения индикаторов сходимости запоминающей системы к стабильному состоянию и индикаторов вероятностного отсутствия любых "новостей" со стороны генеральной совокупности данных.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Бинарный нейрон и случайные числа
Добавлено: 18 ноя 16 10:02
>>> Victor G. Tsaregorodtsev

ну... согласен.
но это совсем другие задачи (если я правильно понимаю, это без учителя, а здесь мы говорил про учителя)
[Ответ][Цитата]
cortl
Сообщений: 258
На: Бинарный нейрон и случайные числа
Добавлено: 20 ноя 16 21:38
Изменено: 20 ноя 16 21:43
cortl> По сути, базовые логические элементы и все конструкции NAND Logic детерминированы.
daner> Ну да, так оно и есть. только как это противоречит логике?

Не противоречит. Но в моём подходе есть отличия, варианты входных значений 00, 01, 10, 11 дают истину каждый для своей функции. Они просты, легки, имеют одинаковый формат и архитектуру. И мне нет необходимости строить из базиса NAND всё это:
00 - NOR=NOT{ NOT[ NOT( A AND A ) AND NOT( B AND B )] AND NOT[ NOT( A AND A ) AND NOT( B AND B )] } Это я содрал из NAND Logic;
01 - Это в NAND Logic я не нашёл, думаю, будет ещё длиннее;
10 - Это в NAND Logic я не нашёл, думаю, будет ещё длиннее;
11 - AND=NOT[ NOT( A AND B ) AND NOT( A AND B ) ] Это я содрал из NAND Logic.
Зачем эти мучения?

Истина - имеется в виду значение, выдаваемое нейроном при одном из вариантов на входах, три других - ложь. Ложь и истина не имеют отношения к понятиям: плохо, хорошо, присутствие сигнала, отсутствие сигнала, 0, 1, они просто обозначают два отличных друг от друга результата. Их смело можно поменять местами (ложь = 1, истина = 0) и ничего не изменится.

cortl> Действительно, сеть на базисах будет работать. Но! Как построить эту сеть?...
daner> Ну это вообще очень простые проблемы...

Вы ответили на самые простые вопросы. При этом приходится разбираться и додумывать какой ответ к какому вопросу относится.
[Ответ][Цитата]
Victor G. Tsaregorodtsev
Сообщений: 3187
На: Бинарный нейрон и случайные числа
Добавлено: 21 ноя 16 8:18
Цитата:
Автор: daner
но это совсем другие задачи (если я правильно понимаю, это без учителя, а здесь мы говорил про учителя)

А что, сходимость обучения не есть феномен, инвариантный к виду процесса обучения?

Вот конкретные формулки, по которым будет вычисляться значение какого-то порога "да/нет" или индикатора точности (или эффективности, или завершённости обучения, или ...) - будут зависимы от вида модели, от способа её синтеза или идентификации, от данных (типы признаков, законы распределения,..), с которыми предполагается работа, от целей, наконец.
Ну так и процесс обучения тоже нужно выбирать/настраивать под те же самые граничные рамки.

Мне казалось, Вы писали тот фрагмент текста, на которой я отвечал, именно как феноменологическую оценку. Да и писали его в ответ тоже на достаточно инвариантный (к виду нейросети, к виду обучения) ответ оппонента (раз оппонент там апеллировал к ненастроенному телевизору, бесполезность обучения "закономерностям" на экране которого человек должен понять сам (без учителя)).

Ну да ладно - не буду спорить.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Бинарный нейрон и случайные числа
Добавлено: 21 ноя 16 15:57
Цитата:
Автор: Victor G. Tsaregorodtsev
А что, сходимость обучения не есть феномен, инвариантный к виду процесса обучения?

...

Мне казалось, Вы писали тот фрагмент текста, на которой я отвечал, именно как феноменологическую оценку...


1. конечно инвариантный. это не предмет для спора

2. я писал для того, чтобы как можно проще пояснить что это такое, причем в рамках именно той "сети" о которой шла речь. а речь шла о сети процесс обучения которой (если я правильно понял) был именно с учителем. У меня не было задачи дать строгое всеобъемлющее определение.
[Ответ][Цитата]
 Стр.7 (9)1  ...  3  4  5  6  [7]  8  9<< < Пред. | След. > >>