Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 26.01.19 01:22
Оценка:
Такой вопрос к знающим.

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

Конечно, понятие сложности не строго формализовано... Для простоты можно описать так: минимальный команд, которым можно реализовать данный функционал.

Понятно что точное значение минимального набора команд установить вряд ли получится — всегда есть место оптимизации, скажем так (и не всегда очевидно как ее провести, некоторые решения вырабатываются эвристически). Однако когда разница в сложности состаляет порядки (т.е. для одного функционала нужно 10 команд а для другого 100 или 1000) — то повышение сложности становится очевидным, пусть и не выразимым в точных цифрах.

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

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

К примеру, в игре Жизнь, таким алгоритмом является проверка клетки на количество соседей — если 2-3 — то выживает (если у пустой 3 — то зарождается жизнь). Этот алгоритм предопределяет возникновение причудливых пульсирующих узоров, но не предопределяет создание вычислительных систем, т.к. они не дают преимущества для выживания согласно данному алгоритму развития (хотя в игре Жизнь и можно написать вычислительную машину — алгоритм не способствует ее возникновению).

Решена ли данная задача? Можно ли однозначно утверждать, что повышение сложности без лимита возможно?

Чего хотелось бы:

1. Чтобы среда была проще, чем возникающие в ней сущности. К примеру, если среда состоит из 10 тыс. команд а в ней возникают максимальные сущности из 23 команд — это не доказательство повышения сложности. Если же наоборот — среда из 23 команд а сущности имеют 10 тыс. команд — то ОК.

2. Желательно исключить экспоненциальные рост времени на проверку/отбор. Т.е. если сущность из 10 команд (из 10 возможных) возникает в 10 раз медленнее чем сущность из 9 полезных команд — менее интересно (однако, и такой вариант — можно рассмотреть).

Кто что об этом знает?
Отредактировано 26.01.2019 2:09 Shmj . Предыдущая версия . Еще …
Отредактировано 26.01.2019 2:06 Shmj . Предыдущая версия .
Отредактировано 26.01.2019 1:23 Shmj . Предыдущая версия .
Re: Программы, которые увеличивают полезную сложность
От: hi_octane Беларусь  
Дата: 26.01.19 09:39
Оценка: +2
S>Лично я обудмывал как можно написать, но вижу такую проблему: алгоритм отбора лучших вариантов всегда получается сложнее, чем те варианты, которые он способен проверить на полезную сложность. И мы всегда упираемся в лимит сложности, который обусловлен алгоритмом самой проверки и среды развития.
S>Решена ли данная задача? Можно ли однозначно утверждать, что повышение сложности без лимита возможно?

Я думаю уже решена. Вот прямо сейчас проходит чемпионат по игре StarCraft, для которой сделали ИИ на нейросетях AlphaStar. Сама среда — фиксированная, и её сложность имеет однозначный предел. Выкинуть оттуда все красивости для людей, типа графики, звука, спецэффектов, и наверное влезет в 64к линейного и очень понятного кода. Программа которая запускает нейросети — тоже имеет фиксированный предел сложности, и тоже небольшой. А вот предела того сколько туда можно впихать нейронов и сколько времени их можно обучать стравливая разные нейросети друг с другом нету. Как и практически нет предела той сложности которую два ИИ могут друг-другу создать на карте, расставляя юниты триллионами разных вариантов. После одной-двух недель обучения эта штука в своей среде превосходит топовых людей на планете. Думаю рукопашное написание ИИ которых бы мог этому AlphaStar в сегодняшнем виде составить достойную конкуренцию практически нереально, т.е. далеко за пределами сложности создания StarCraft+движка для ИНС (иначе бы давно сделали). При этом продолжая соревноваться сама с собой AlphaStar будет продолжать расти, и если туда вкорячить условие создания новых слоёв нейросети, война уйдёт в совершенно непостижимые для людей уровни противостояния, типа как сейчас шахматные программы даже не жертвуют а пытаются казалось-бы подарить друг-другу фигуры (см. видео). И это простейшая война 1 на 1, загнать тысячи таких на гигантский "военный полигон", дать им простейшие средства коммуникации (типа передать один байт на вход противника), и наверняка через какое-то время они научатся и об альянсах договариваться, и вероломно предавать.

most hilarious Engine troll in Chess History?
Re: Программы, которые увеличивают полезную сложность
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.01.19 10:09
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Конечно, понятие сложности не строго формализовано... Для простоты можно описать так: минимальный команд, которым можно реализовать данный функционал.


Почему не строго формализовано? То, о чем ты говоришь, очень близко к понятию Колмогоровской сложности. Если тебя действительно интересует этот вопрос, начни с этой отправной точки.
Re: Программы, которые увеличивают полезную сложность
От: kov_serg Россия  
Дата: 26.01.19 11:26
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Существуют ли программы, которые умеют повышать полезную сложность и не упираются в некий лимит (окромя лимита ресурсов, т.е. не хватает уже памяти или диска)?

Что такое полезная сложность?
...
S>Чего хотелось бы:

S>1. Чтобы среда была проще, чем возникающие в ней сущности. К примеру, если среда состоит из 10 тыс. команд а в ней возникают максимальные сущности из 23 команд — это не доказательство повышения сложности. Если же наоборот — среда из 23 команд а сущности имеют 10 тыс. команд — то ОК.

Берём порождающий функционал, требуем от него что бы он шел в разнос при рекуррентном применении (отображал ограниченную область состояний саму в себя) и применяем его многократно. Если каждый шаг увеличивает сложность, то получаем степенной рост сложностей он начального состояния. (получаем фрактал, игра жизнь относится туда же)
s(n+1)=f(s(n))
При линейном росте количества итераций получаем экспоненциальный рост сложности.
Но остаётся вопрос полезности.

S>2. Желательно исключить экспоненциальные рост времени на проверку/отбор. Т.е. если сущность из 10 команд (из 10 возможных) возникает в 10 раз медленнее чем сущность из 9 полезных команд — менее интересно (однако, и такой вариант — можно рассмотреть).
Re[2]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 26.01.19 18:38
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Почему не строго формализовано? То, о чем ты говоришь, очень близко к понятию Колмогоровской сложности. Если тебя действительно интересует этот вопрос, начни с этой отправной точки.


Там есть раздел "Невычислимость колмогоровской сложности".
Re[3]: Программы, которые увеличивают полезную сложность
От: LuciferSaratov Россия  
Дата: 26.01.19 18:45
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Там есть раздел "Невычислимость колмогоровской сложности".


прекрасное наблюдение!
продолжай изучать
Re[4]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 26.01.19 21:29
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

LS>прекрасное наблюдение!

LS>продолжай изучать

Про Колмогоровскую сложность я знаю давно, см. мои сообщения — много раз сссылался. То есть, извините, Америку вы для меня не открыли.

Но функциональная/полезная сложность — это не то же самое, что Колмогоровская сложность. Набор случайных чисел имеет высокую Колмогорвскую, но не факт что имеет высокую функциональную сложность (скорее всего не имеет).

Конечно, о функциональной сложности можно говорить только в ракурсе конкретно задачи — отсюда и вопрос.
Re[2]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 27.01.19 02:09
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Я думаю уже решена. Вот прямо сейчас проходит чемпионат по игре StarCraft, для которой сделали ИИ на нейросетях AlphaStar. Сама среда — фиксированная, и её сложность имеет однозначный предел.


Мы с вами обсуждали среду Avida. К сожалению, у меня она не заработала, вы даже не пытались запустить, как оказалось и все ваши исследования ограничиваются вашим детским опытом.

В среде Avida возникают образования из нескольких десятков команд. При этом сложность самой среды, очевидно, во много крат превосходит эти образования

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

Мне же не нужно эмуляция чего-то конкретного — важен сам принцип — может ли среда порождать вычислительные системы с осмысленной сложностью выше самой среды? А так же упирается ли в некий лимит вычислительный. Желательно чтобы повышение сложности было на порядки, так как точного сравнения быть не может.

_>наверное влезет в 64к линейного и очень понятного кода.


Ну вот, вы оперируете вашими верованиями. Наверное... Этот вопрос так не решается. Если так решать — то мы и в деда мороза будем вынуждены поверить.

Даже не решается тем что кто-то там написал в журнале хаккер, типа вот уже у кого-то там на ZX жил ИИ еще в 91 году

_>Программа которая запускает нейросети — тоже имеет фиксированный предел сложности, и тоже небольшой. А вот предела того сколько туда можно впихать нейронов и сколько времени их можно обучать стравливая разные нейросети друг с другом нету.


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

В фильмах может оно и так, но на деле не все так радужно

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

Увеличивается база данных, но сам алгоритм работы с данными не изменяется. И он не универсален.

_>Как и практически нет предела той сложности которую два ИИ могут друг-другу создать на карте, расставляя юниты триллионами разных вариантов. После одной-двух недель обучения эта штука в своей среде превосходит топовых людей на планете.


Не о том. Вы опять говорите о накоплении данных в базе при сохранении алгоритма.

_>При этом продолжая соревноваться сама с собой AlphaStar будет продолжать расти,


Все таки хотелось бы конкретики.
Отредактировано 27.01.2019 2:19 Shmj . Предыдущая версия .
Re[2]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 27.01.19 02:16
Оценка:
Здравствуйте, kov_serg, Вы писали:

S>>Существуют ли программы, которые умеют повышать полезную сложность и не упираются в некий лимит (окромя лимита ресурсов, т.е. не хватает уже памяти или диска)?

_>Что такое полезная сложность?

Полезная — когда нет лишнего и все служит для лучшего решения задачи. Т.е. чтобы нельзя было выкинуть 50% команд с сохранением результата.

К примеру, у человека даже аппендикс, как оказалось, выполняет некую полезную функцию.

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

_>Берём порождающий функционал, требуем от него что бы он шел в разнос при рекуррентном применении (отображал ограниченную область состояний саму в себя) и применяем его многократно. Если каждый шаг увеличивает сложность, то получаем степенной рост сложностей он начального состояния. (получаем фрактал, игра жизнь относится туда же)


Что значит "шел в разнос"?

_>s(n+1)=f(s(n))

_>При линейном росте количества итераций получаем экспоненциальный рост сложности.
_>Но остаётся вопрос полезности.


Меня интересуют практические исследования и наработки:

1. Доказано ли вообще, что некая система может порождать полезную сложность выше самой себя? Где можно увидеть такую систему?
2. Лимитируется ли сложность, т.е. стремится ли она к некому пределу?

Может кто занимался вопросом и может сказать что-то конкретное.
Отредактировано 27.01.2019 2:19 Shmj . Предыдущая версия .
Re[3]: Программы, которые увеличивают полезную сложность
От: hi_octane Беларусь  
Дата: 27.01.19 11:56
Оценка: 118 (2) +1
S>Мы с вами обсуждали среду Avida. К сожалению, у меня она не заработала, вы даже не пытались запустить, как оказалось и все ваши исследования ограничиваются вашим детским опытом.
Мы — точно не обсуждали Avida. Это вы старались перевести обсуждение на Avida. Пока у нас обсуждение человека который эксперименты в этой области хоть какие-то делал, с человеком который не делал никаких и утверждает что сделано было недостаточно чтобы проверить _его_ (не мои!) гипотезы. Мне всего хватило, вам недостаточно — делайте свои.

S>Ну вот, вы оперируете вашими верованиями. Наверное... Этот вопрос так не решается. Если так решать — то мы и в деда мороза будем вынуждены поверить.

Верования это в церкви. В вопросе влезет какая-то программа в заданный объём памяти или нет — я профильный специалист. В конце-концов я играл в стратегические игры для zx-spectrum, у котрых было <48k памяти на всё, включая данные, графику, звук, ии, вообще всё. Чисто боёвка starcraft (т.е. среда) без графики, без звука, без сети, просто кружочки на поле heightmap имеющие простой набор параметров — ориентация, скорость, здоровье, область видимости и т.п. — такая программа, имхо, влезет в 64k кода, без особых микрооптимизаций, т.е. можно на C. С запасом — в 128к влезет 100%. В любом случае в такой маленькой "среде" можно обучить огромнейшую нейросеть, которую в рукопашном коде замучаешься программировать. Т.е. обучением будет порождена дополнительная сложность.

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

Не кажется, потому что я по ним дисер писал. Вот моё отношение к нейросетям
Автор: hi_octane
Дата: 10.08.12
, вот реальный опыт применения :)
Автор: hi_octane
Дата: 30.12.08
, при желании в поиске ещё можно посты найти. Там кстати все темы или про сознание или про ИИ. Так вот мои тезисы:
1) Нейросети вообще не ИИ
2) Придуманный DeepMind метод — когда несколько нейросетей занимаются разными аспектами — одна оценивает ситуацию, другая выбирает направление случайного поиска + собственно случайный поиск в выбранном направлении — способен "наращивать сложность", т.е. обучаться гораздо быстрее и эффективнее чем предыдущие методы
3) Нейросеть полученная в результате работы их метода — ни в коем случае не является интеллектом. Прежде всего она не способна, и никогда не будет способна (в текущем виде), понять что её раз за разом ловят на одном и том же. Т.е. обнаружить собственный глюк. Возможно они это смогут исправить каким-то дообучением в реальном времени — типа "все прогнозы говорили что нас ждёт удача, а мы обломались, 5 раз подряд на похожей ситуации, значит прогноз надо менять"
4) Несмотря на всё вышеперечисленное, разными ухищрениями при обучении можно добиться от нейросетей ответов такой сложности, которые превосходят всё или почти всё что могут запрограммировать люди вручную
5) Выбранный DeepMind метод "обучения через стравливание между собой" — очень эффективен. В случае старкрафта, go или шахмат — среда вообще никак не оценивает эффективность ходов. Только сами нейросети и никто больше на их "поле битвы" создают основную сложность для выживания друг-друга. Это заставляет их постоянно совершенствоваться.

S>Не о том. Вы опять говорите о накоплении данных в базе при сохранении алгоритма.

Всё о том. Маленький алгоритм, имея огромную базу данных и правила наращивания данных в этой базе, способен действовать словно "развиваясь". Никаких ограничений этому не видно. Если вы утверждаете что ограничения есть — доказывайте что они есть. Пока не доказано — их нет.
Re[4]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 27.01.19 15:22
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Мы — точно не обсуждали Avida. Это вы старались перевести обсуждение на Avida.


Ну почему же? Вы привели список программ и я выбрал лучшую.

Просто вы хотите максимально абстрагироваться от чего-то конкретного — типа вон там уже куча всего есть. А когда смотришь на что-то конкретное из этой "кучи всего" — то видишь "пшик".

_>Пока у нас обсуждение человека который эксперименты в этой области хоть какие-то делал, с человеком который не делал никаких


Эксперименты вашего уровня и я делал.

S>>Ну вот, вы оперируете вашими верованиями. Наверное... Этот вопрос так не решается. Если так решать — то мы и в деда мороза будем вынуждены поверить.

_>Верования это в церкви. В вопросе влезет какая-то программа в заданный объём памяти или нет — я профильный специалист.

Специалист возьмет исходный код да посмотрит. Потому что сложность — штука весьма скользкая, на zx-spectrum и операционная система 16 кБ занимала.

_>В любом случае в такой маленькой "среде" можно обучить огромнейшую нейросеть, которую в рукопашном коде замучаешься программировать. Т.е. обучением будет порождена дополнительная сложность.


Обучение нейросети — это, как правило, воздействие информацией, которую уже структурировало ранее сознание. По сути это то же программирование сознанием. Сначала вам нужно сознательно отобрать правильные варианты и эта информация от сознательной среды неким образом меняет состояние коэффициентов. Исключение — когда задаете некие правила (как в шахматах) и сеть обучается на основе этих правил без внешних примеров (такой случай, пожалуй, было бы интересно рассмотреь).

_>5) Выбранный DeepMind метод "обучения через стравливание между собой" — очень эффективен. В случае старкрафта, go или шахмат — среда вообще никак не оценивает эффективность ходов. Только сами нейросети и никто больше на их "поле битвы" создают основную сложность для выживания друг-друга. Это заставляет их постоянно совершенствоваться.


Пожалуй, с шахматами/игрой в Го было бы интересно разузнать у знающих людей, которые конкретно этим занимались.

1. Какая начальная сложность нейросетевых алгоритмов и вспомогательных (т.е. те, которые еще нужно дописать, чтобы все заработало) алгоритмов? Грубо говоря — сколько строк кода в нейросетевых алгоритмах и вспомогательных (пока такая оценка, пусть и упрощенная)?
2. Какого объема нейросети порождаются (грубо говоря, сколько ОЗУ занимают).
3. Стремятся ли они к какому-либо лимиту, или же можно повышать объем сети до бесконечности и всегда будет наблюдаться заметное повышение сложности? Или же после некого объема никакой пользы не получаем?

Вот, пожалуй, такие вопросы.

S>>Не о том. Вы опять говорите о накоплении данных в базе при сохранении алгоритма.

_>Всё о том. Маленький алгоритм, имея огромную базу данных и правила наращивания данных в этой базе, способен действовать словно "развиваясь". Никаких ограничений этому не видно. Если вы утверждаете что ограничения есть — доказывайте что они есть. Пока не доказано — их нет.

Тут весьма интересный вопрос. Вот, если мы возьмем алгоритм перевод с одного языка на другой. Если мы добавляем слова и фразы в словарь — усложнения не происходит — согласитесь? А вот если научим различать падежи или учитывать контекст — это именно алгоритмическое усложнение.

Чтобы исключить эту проблему — нужно задать фиксированную задачу, типа тех же шахмат или более гибкую. Ну и появляются вопросы, которые озвучил выше по тексту (3 штуки).
Отредактировано 27.01.2019 15:24 Shmj . Предыдущая версия .
Re[3]: Программы, которые увеличивают полезную сложность
От: kov_serg Россия  
Дата: 27.01.19 17:10
Оценка: +1
Здравствуйте, Shmj, Вы писали:

_>>Что такое полезная сложность?

S>Полезная — когда нет лишнего и все служит для лучшего решения задачи. Т.е. чтобы нельзя было выкинуть 50% команд с сохранением результата.
Решение задачи это получение из входных данных некоторых выходных значений. При этом расходуется время и энергия.
Причем тут команды?

S>К примеру, у человека даже аппендикс, как оказалось, выполняет некую полезную функцию.

И сколько команд в секунду выполняет аппендикс?

S>Можно легко нагенерить кода, который не улучшает способности системы решать задачу, но при этом увеличивает сложность.

Для решения задачи не обязателен код, нужен решатель.

_>>Берём порождающий функционал, требуем от него что бы он шел в разнос при рекуррентном применении (отображал ограниченную область состояний саму в себя) и применяем его многократно. Если каждый шаг увеличивает сложность, то получаем степенной рост сложностей он начального состояния. (получаем фрактал, игра жизнь относится туда же)


S>Что значит "шел в разнос"?

Например: z[n+1]=f(z[n])
если |f(z)|<=1 при |z|<=1 то функцию можно применить бесконечное число раз, геометрически наращивая сложность.

S>Меня интересуют практические исследования и наработки:


S>1. Доказано ли вообще, что некая система может порождать полезную сложность выше самой себя? Где можно увидеть такую систему?

Снячало определите что токое полезная сложность. Любая система с простыми правилами взаимодействия своих частей порождает более сложную. В чем проблемма?

S>2. Лимитируется ли сложность, т.е. стремится ли она к некому пределу?

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

S>Может кто занимался вопросом и может сказать что-то конкретное.

Бабу вам надо барин.
Re[4]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 27.01.19 21:11
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Решение задачи это получение из входных данных некоторых выходных значений. При этом расходуется время и энергия.

_>Причем тут команды?

Если в этом ракурсе оценивать — то можно посчитать количество правил преобразования данных. Обычно эти правила мы описываем на неком ЯП с помощью команд.

S>>К примеру, у человека даже аппендикс, как оказалось, выполняет некую полезную функцию.

_>И сколько команд в секунду выполняет аппендикс?

Команды имелись в виду — это как способ описать систему, а не то что делает система.

Описывать аппендикс нужно на язке генетического кода. Сколько там триплет занято его описанием — понятия не имею, думаю что около сотни триплет. Убери из ДНК эту сотню триплет — и получится человек без аппендикса, что скажется на его функционале, хотя работать будет. Если убрать тот код, который овечает за печень — то работать вообще не будет — чел. не сможет жить.

S>>Можно легко нагенерить кода, который не улучшает способности системы решать задачу, но при этом увеличивает сложность.

_>Для решения задачи не обязателен код, нужен решатель.

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

S>>Что значит "шел в разнос"?

_>Например: z[n+1]=f(z[n])
_>если |f(z)|<=1 при |z|<=1 то функцию можно применить бесконечное число раз, геометрически наращивая сложность.

А привести пример такой функции вы можете?

S>>Меня интересуют практические исследования и наработки:


S>>1. Доказано ли вообще, что некая система может порождать полезную сложность выше самой себя? Где можно увидеть такую систему?

_>Снячало определите что токое полезная сложность. Любая система с простыми правилами взаимодействия своих частей порождает более сложную. В чем проблемма?

Сложность, если говорим о вычислительной системе, — это количество правил преобразования данных. Атомарные правила можно выбрать условно (пусть совпадает с теми, что реализованы на современных процессорах, т.е. арифметические преобразования и пр.).

Если выразить эти правила на ЯП — то получаем некий набор операторов/команд. Можно и в этой системе оценивать.

Для нейронной сети — каждый нейрон хранит некие правила (нужно детально смотреть что за сеть и сколько правил преобразования в среднем хранит нейрон), как и архитектура описывает некие правила преобразования данных.

S>>2. Лимитируется ли сложность, т.е. стремится ли она к некому пределу?

_>Да есть физические ограничения. В конце концов получаем черную дыру.

Я выше уточнил — речь не о физических ресурсах а именно о вычислительном лимите. Так, среда Avida уприрается в некий лимит сложности моделирования. Или же нейронная сеть решает задачу при определенном количестве нейронов и их структуре, при этом повышение количества нейронов не помогают решить задачу лучше.
Re[5]: Программы, которые увеличивают полезную сложность
От: kov_serg Россия  
Дата: 28.01.19 08:37
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Если в этом ракурсе оценивать — то можно посчитать количество правил преобразования данных. Обычно эти правила мы описываем на неком ЯП с помощью команд.

Зачем себя ограничивать япом и командами?

S>Команды имелись в виду — это как способ описать систему, а не то что делает система.

Сколько команд надо что бы описать систему солнце? И то что она делает? И что из-за него твориться на земле.

_>>Для решения задачи не обязателен код, нужен решатель.

S>Так вот решатель и исполняет некий код или, сказать иначе, правила преобразования. Нейросеть не исключение — там каждый нейрон — это тоже набор неких правил для преобразования входящих данных в исходящие.
https://www.nkj.ru/archive/articles/7033

S>А привести пример такой функции вы можете?

Классика же f(z)=c+z*z
https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82%D0%B0

S>>>1. Доказано ли вообще, что некая система может порождать полезную сложность выше самой себя? Где можно увидеть такую систему?

Оглянитесь вокруг — жизнь на планете вас не настораживает? Правда с полезностью, опять проблемы. Зато какое разнообразие сложностей.

S>Сложность, если говорим о вычислительной системе, — это количество правил преобразования данных. Атомарные правила можно выбрать условно (пусть совпадает с теми, что реализованы на современных процессорах, т.е. арифметические преобразования и пр.).

S>Если выразить эти правила на ЯП — то получаем некий набор операторов/команд. Можно и в этой системе оценивать.
Что бы что-то оценивать нужна модель этой системы. А т.к. точное описание не возможно в принципе то все задачи решаются в рамках неких моделей при наличии ограничений и допущений. В случае разных моделей одного и того же процесса вам понадобиться разное количество ресурсов.

S>Я выше уточнил — речь не о физических ресурсах а именно о вычислительном лимите. Так, среда Avida уприрается в некий лимит сложности моделирования. Или же нейронная сеть решает задачу при определенном количестве нейронов и их структуре, при этом повышение количества нейронов не помогают решить задачу лучше.

Все ограничения связаны именно с физикой, реальными ресурсами и их доступностью.
Re[6]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 28.01.19 13:23
Оценка:
Здравствуйте, kov_serg, Вы писали:

S>>Команды имелись в виду — это как способ описать систему, а не то что делает система.

_>Сколько команд надо что бы описать систему солнце? И то что она делает? И что из-за него твориться на земле.

Такие вещи нужно абстрагировать, то есть выделять главное.

_>>>Для решения задачи не обязателен код, нужен решатель.

S>>Так вот решатель и исполняет некий код или, сказать иначе, правила преобразования. Нейросеть не исключение — там каждый нейрон — это тоже набор неких правил для преобразования входящих данных в исходящие.
_>https://www.nkj.ru/archive/articles/7033

И? Что хотел сказать?

S>>А привести пример такой функции вы можете?

_>Классика же f(z)=c+z*z
_>https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82%D0%B0

А где же тут увеличение полезной вычислительной сложности? Требуется, грубо говоря, чтобы программа на выходе выдавала алгоритм, который решает некую специфическую задачу. При этом сложность выходного алгоритма должна превышать сложность программы, которая этот алгоритм генерирует, в n раз (где n вы задаете). Для n-1 алгоритм будет проще и не настолько качественно решать задачу, как для n.

S>>>>1. Доказано ли вообще, что некая система может порождать полезную сложность выше самой себя? Где можно увидеть такую систему?

_>Оглянитесь вокруг — жизнь на планете вас не настораживает? Правда с полезностью, опять проблемы. Зато какое разнообразие сложностей.

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

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

S>>Сложность, если говорим о вычислительной системе, — это количество правил преобразования данных. Атомарные правила можно выбрать условно (пусть совпадает с теми, что реализованы на современных процессорах, т.е. арифметические преобразования и пр.).

S>>Если выразить эти правила на ЯП — то получаем некий набор операторов/команд. Можно и в этой системе оценивать.
_>Что бы что-то оценивать нужна модель этой системы.

Какой системы, простите? Попробуйте выражаться яснее.

S>>Я выше уточнил — речь не о физических ресурсах а именно о вычислительном лимите. Так, среда Avida уприрается в некий лимит сложности моделирования. Или же нейронная сеть решает задачу при определенном количестве нейронов и их структуре, при этом повышение количества нейронов не помогают решить задачу лучше.

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

Нет. Ограничения в повышении сложности — чисто алгоритмические. К примеру, нейросеть для игры в шахматы не становится лучше, если увеличить количество нейронов в 10 млн. раз — есть некий лимит, после которого увеличение нейросети ничего не дает. Т.е. сложность упирается в некий лимит именно алгоритмический, хотя ресурсы не проблема.
Отредактировано 28.01.2019 13:24 Shmj . Предыдущая версия .
Re[7]: Программы, которые увеличивают полезную сложность
От: kov_serg Россия  
Дата: 28.01.19 14:42
Оценка:
Здравствуйте, Shmj, Вы писали:

_>>Сколько команд надо что бы описать систему солнце? И то что она делает? И что из-за него твориться на земле.

S>Такие вещи нужно абстрагировать, то есть выделять главное.
Имено вы строите модель и уже потом пытаетесь моделировать, что-то что вас интересует. Например вы хотите получить полезную информацию: сколько еще проживёт солнце. Как вы это опишите алгоритмически?

_>>>>Для решения задачи не обязателен код, нужен решатель.

S>И? Что хотел сказать?
То что для решения задач не обязательно использовать код или последовательность операций. Можно использовать физические процессы.
Например задача переместить вас на 100км от текщего местоположения, не решается командами x86.

_>>Классика же f(z)=c+z*z

S>А где же тут увеличение полезной вычислительной сложности? Требуется, грубо говоря, чтобы программа на выходе выдавала алгоритм, который решает некую специфическую задачу.
Пример задачи приведите. Тут простой алгоритм отображения начальной точки в конечную z0--(solver)-->zn, полезность в наглядности возрастания сложности отображения.

S>При этом сложность выходного алгоритма должна превышать сложность программы, которая этот алгоритм генерирует, в n раз (где n вы задаете). Для n-1 алгоритм будет проще и не настолько качественно решать задачу, как для n.

Что тут не понятного. Берём линейное уравнение: y=A*x+b применяя линейныое преобразованиее много раз получает опять линейной => сложность не растёт.
Теперь применяем нелинейное и при некоторых условиях (нелинейность и граниченность) сложность начинает расти экспоненциально (перемножаясь на каждой итерации). Ваши нейронные сети эксплуатируют неленейную функцию активации именно по этой причине.
Алгоритм на каждом шаге имеет оду и туже сложность, а сложность преобразование возрастает.

_>>Оглянитесь вокруг — жизнь на планете вас не настораживает? Правда с полезностью, опять проблемы. Зато какое разнообразие сложностей.

S>В том то и дело — вы берете за аксиому, что жизнь возникла без воздействия сознания. Но при этом, не зная что такое сознание, какова его природа — не разумно выбирать такую аксиоматику.
Для образования сложных структур сознание нафиг не упало. Посмотрите обычные на снежинки.


S>По этому требуется решение в общем виде, то есть воссоздать алгоритмически.

Решение чего? Алгоритмически решение можно получить только в рамках ограниченной модели.

_>>Что бы что-то оценивать нужна модель этой системы.

S>Какой системы, простите? Попробуйте выражаться яснее.
Решение которой вы хотите получить.
Если вы оперируете полезностью. Определите скалярный функционал полезности и ищие его максимум.

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

S>Нет. Ограничения в повышении сложности — чисто алгоритмические. К примеру, нейросеть для игры в шахматы не становится лучше, если увеличить количество нейронов в 10 млн. раз — есть некий лимит, после которого увеличение нейросети ничего не дает. Т.е. сложность упирается в некий лимит именно алгоритмический, хотя ресурсы не проблема.
Это обычное насыщение. Для увеличения "полезности" нейросети важно не мощность(количество) нейронов, а их топология.
Вам надо на каждом этапе эволюции усложнять условия выживания что бы получить что-то новое. А если получающиеся при этом подсистемы сами усложняют себе жизнь это просто превосходный способ наращивания сложности. Эта положительная связь или убъёт всех или вы получите что-то очень неожиданное.
У живых организмов функция полезности очень простая: выжить и размножиться по максимуму те кто это отрицают быстро вымирают, освобождая ресурсы оставшимся.
И еще у живых организмов мозг очень энергозатратное устройство, и простое увеличение его мощности (кол-ва нейронов) ведёт к немедленной гибели популяции из-за невозможности прокормить эту подсистему. Поэтому усложнение у них идёт иными путями нежели простое наращивание вычислительных блоков.
Re[8]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 28.01.19 16:01
Оценка: -1
Здравствуйте, kov_serg, Вы писали:

_>Имено вы строите модель и уже потом пытаетесь моделировать, что-то что вас интересует. Например вы хотите получить полезную информацию: сколько еще проживёт солнце. Как вы это опишите алгоритмически?


Меня интересует любая программа, которая повышает полезную вычислительную сложность. Задача — может быть любой, чтобы можно было сравнить выполняется задача лучше благодаря повышению сложности или нет.

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

_>>>>>Для решения задачи не обязателен код, нужен решатель.

S>>И? Что хотел сказать?
_>То что для решения задач не обязательно использовать код или последовательность операций. Можно использовать физические процессы.
_>Например задача переместить вас на 100км от текщего местоположения, не решается командами x86.

Мы о вычислительных задачах. Понятно что есть вычислительные процессы а есть не связанные с вычислениями.

_>>>Классика же f(z)=c+z*z

S>>А где же тут увеличение полезной вычислительной сложности? Требуется, грубо говоря, чтобы программа на выходе выдавала алгоритм, который решает некую специфическую задачу.
_>Пример задачи приведите. Тут простой алгоритм отображения начальной точки в конечную z0--(solver)-->zn, полезность в наглядности возрастания сложности отображения.

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

Вот если речь о шахматах — то подходит. Но, насколько мне известно, там нет постоянного увеличения сложности — есть некий лимит, после которого увеличение размера нейросети ничего не дает.

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

_>Алгоритм на каждом шаге имеет оду и туже сложность, а сложность преобразование возрастает.


Тут стоит сделать уточнение. Можно записать получение числа Пи по формуле:



используя цикл. А можно без цикла — написать 500 Гб кода — для каждого k будет свое выражение. Писанины как бы больше, но повысится ли при этом сложность? Очевидно что нет.

Алгоритмически мы не сможем оценить что сложнее а что проще (пока нет алгоритма). Нужно оценивать только сознательно. Иногда это сложно сделать а иногда не очень — т.е. если удалось записать то же самое короче — то усложнения не произошло.

_>Для образования сложных структур сознание нафиг не упало. Посмотрите обычные на снежинки.

_>Image: where15-1.jpg

Форма снежинок обусловленна правилами, которые заданы в элементарных частицах. А вот образование цепочки ДНК — там не определено, т.к. в ракурсе правил элементарных часитиц — любая комбинация равновероятна (АЦТГ можно комбинировать в любой последовательности).

S>>По этому требуется решение в общем виде, то есть воссоздать алгоритмически.

_>Решение чего? Алгоритмически решение можно получить только в рамках ограниченной модели.

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

_>Если вы оперируете полезностью. Определите скалярный функционал полезности и ищие его максимум.


Выше написал пример задачи.

_>Это обычное насыщение. Для увеличения "полезности" нейросети важно не мощность(количество) нейронов, а их топология.


Ок, а можно сделать так, чтобы топология сама усложнялась? Или это нужно делать сознательно?

Кто-то уже сделал это для шахмат, чтобы топология сама изменялась, усложнялась и не было видно лимита, в который все упирается?

_>Вам надо на каждом этапе эволюции усложнять условия выживания что бы получить что-то новое. А если получающиеся при этом подсистемы сами усложняют себе жизнь это просто превосходный способ наращивания сложности. Эта положительная связь или убъёт всех или вы получите что-то очень неожиданное.


Вот что-токое и хотелось бы увидеть. Если это вообще возможно.

При этом задачи повторить биологические процессы — нет. Главное условие — чтобы усложнялось.

_>У живых организмов функция полезности очень простая: выжить и размножиться по максимуму те кто это отрицают быстро вымирают, освобождая ресурсы оставшимся.


Выжить — это не задача. Это все равно что сказать — победить. Такая задача не конкретна, т.к. не говорит что именно нужно делать. То есть нет такого алгоритма "выжить".

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

Так в том и вопрос — какие правила задать, чтобы "выживали" те, у кого сложность выше.

_>И еще у живых организмов мозг очень энергозатратное устройство, и простое увеличение его мощности (кол-ва нейронов) ведёт к немедленной гибели популяции из-за невозможности прокормить эту подсистему. Поэтому усложнение у них идёт иными путями нежели простое наращивание вычислительных блоков.


Вот это и нужно воссоздать.
Отредактировано 28.01.2019 16:07 Shmj . Предыдущая версия . Еще …
Отредактировано 28.01.2019 16:06 Shmj . Предыдущая версия .
Re[9]: Программы, которые увеличивают полезную сложность
От: kov_serg Россия  
Дата: 28.01.19 20:44
Оценка: 102 (1) :)
Здравствуйте, Shmj, Вы писали:

S>Мы о вычислительных задачах. Понятно что есть вычислительные процессы а есть не связанные с вычислениями.

Что является полезным в вычислительной задаче? Для чего увеличивать сложность вычислительной задачи если она уже решает поставленную проблему?
Для уменьшение потребляемых ресурсов для решения? Для увеличения точности?

S>Т.е. создается некая простая программа, которая применяет хитрые методы для отбивания ресурса у других программ. Потом другие программы начинают становиться еще более совершенными и придумывают как ее победить.

Нет. Необходимо создать положительную обратную связь для роста сложности.

S>используя цикл. А можно без цикла — написать 500 Гб кода — для каждого k будет свое выражение. Писанины как бы больше, но повысится ли при этом сложность?

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

S>Алгоритмически мы не сможем оценить что сложнее а что проще (пока нет алгоритма).

Зато если алгоритм работает и выдаёт результат, мы всегда можем оценить необходимое для его работы количество ресурсов.
S>Нужно оценивать только сознательно. Иногда это сложно сделать а иногда не очень — т.е. если удалось записать то же самое короче — то усложнения не произошло.

S>Форма снежинок обусловленна правилами, которые заданы в элементарных частицах. А вот образование цепочки ДНК — там не определено, т.к. в ракурсе правил элементарных часитиц — любая комбинация равновероятна (АЦТГ можно комбинировать в любой последовательности).


S>Модель выживания, скажем так. Применить для выживания неких сущностей таким образом, чтобы их вычислительная сложность повышалась. В той же игре жизнь — вычислительная сложность не повышается.

Причем тут вычислительная сложность, если вас интересует полезность. Если эта полезность позволяет приумножить количество экземпляров. То эти экземпляры будет проще встретить.
https://www.youtube.com/watch?v=C2vgICfQawE&amp;t=70
Выделяются строительные блоки и из них строятся примитивы, на следующей итерации из этих примитивов строятся более сложные примитивы и так далее.
Если посмотрите на живый организмы то они тоже построены комбинаций разных подсистем выполняющий какие-то функции. Сами эти примитивы накипливались, отбиралисьи, приспосабливались и объединялись не сразу.
https://www.youtube.com/watch?v=xP5-iIeKXE8

_>>Если вы оперируете полезностью. Определите скалярный функционал полезности и ищие его максимум.

S>Выше написал пример задачи.
Из неё не понятно в чем полезночть числа pi в вашей задаче.

S>Ок, а можно сделать так, чтобы топология сама усложнялась? Или это нужно делать сознательно?

Можно. Делать надо целенаправленно.

_>>Вам надо на каждом этапе эволюции усложнять условия выживания что бы получить что-то новое. А если получающиеся при этом подсистемы сами усложняют себе жизнь это просто превосходный способ наращивания сложности. Эта положительная связь или убъёт всех или вы получите что-то очень неожиданное.

S>Вот что-токое и хотелось бы увидеть. Если это вообще возможно.
Пробуйте, что вам мешает это делать.

S>При этом задачи повторить биологические процессы — нет. Главное условие — чтобы усложнялось.

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

_>>У живых организмов функция полезности очень простая: выжить и размножиться по максимуму те кто это отрицают быстро вымирают, освобождая ресурсы оставшимся.

S>Выжить — это не задача. Это все равно что сказать — победить. Такая задача не конкретна, т.к. не говорит что именно нужно делать. То есть нет такого алгоритма "выжить".
Да выжить это не задача это цель причем выжить (при этом отдельная особь долго не живёт). Вероятность найти тех кто не выжил очень не велика

S>Вот, если я буду писать среду — мне самому нужно определить правила, по которым считать кого-то выживым а кого-то не выжившим. При этом выживающие не обязательно будут усложняться — выживать могут простейшие а сложные наоборот выжить не смогут, им будет мешать сложность.

Вы не поняли, правила выживания должны сами усложнятся с усложнением тех кто выживает. Тогда те кто находит (обычно случайно) лучший способ поведения в такой среде получает приимущества.

S>Так в том и вопрос — какие правила задать, чтобы "выживали" те, у кого сложность выше.

Всё зависит от вас. Какие зададите. Но если хотите усложнения то должна быть положительная связь с интересующим вас параметром сложности или полезности.

S>Вот это и нужно воссоздать.

Дерзайте.
Re[10]: Программы, которые увеличивают полезную сложность
От: Shmj Ниоткуда  
Дата: 28.01.19 21:56
Оценка:
Здравствуйте, kov_serg, Вы писали:

S>>Вот это и нужно воссоздать.

_>Дерзайте.

Задача скорее всего не разрешима. Если бы была разрешима — то были бы некие наработки, когда повышение вычислительной сложности проиходит без сознания.

То что вы привели с игрой Life — я описал в самом начале — правила не способствуют возникновению более сложных систем (как то вычислительная система в среде игры Life) — это делается сознательно.
Re[11]: Программы, которые увеличивают полезную сложность
От: kov_serg Россия  
Дата: 28.01.19 23:17
Оценка:
Здравствуйте, Shmj, Вы писали:

S>То что вы привели с игрой Life — я описал в самом начале — правила не способствуют возникновению более сложных систем (как то вычислительная система в среде игры Life) — это делается сознательно.

Дык если правила не способствуют ничего и не появится. Что бы возникла "жизнь" нужен подвод энергии и удачные начальные условия.
Если вы хотите что бы система самосовершенствовалась (усложнялась) вам придётся либо подождать милион случайно подбирая условия, либо использовать уже имеющиеся наработки наделив систему способностью постепенно комбинировать и модифицировать подсистемы для получения новых подсистем с целью покрыть толстым слоем своих потомков всю доступную среду обитания, конкурируя с остальными частями системы за ресурсы для выживания. Именно нехватка ресурсов приводит и балансирование на грани выживания приводит к нежиданным решениям.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.