Pull to refresh

Comments 12

UFO just landed and posted this here
Вы правы. Соображения, приведённые в текущей статье, действительно «примитивны». Они лишь принцип построения системы, а развитие этой системы, конечно, имеет сложности. Но эти сложности интересны и решаемы.

Если Вас не затруднит, напишите пожалуйста, где можно почитать об указанной Вами модели памяти. Это будет полезно для моей работы.

С уважением.
где можно почитать об указанной Вами модели памяти.

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

генетический алгоритм традиционно не есть то, что вы описали в своей предыдущей статье. ;)
Да, действительно. Здесь необходимо «генетический алгоритм» взять в кавычки.

Спасибо Вам.
>>>>Очень хочется сразу (начиная с первой статьи) рассказать о полученном решении самых заковыристых головоломок из раздела «человеческий мозг» и «алгоритмический мир».

А вот не надо! ))) Не надо себя сдерживать! Самый лучший вариант привлечения внимания компетентной аудитории — сразу ошарашить монументальными результатами, а уже потом пояснить, как же вы дошли до этого…

В противном случае я вас уверяю — аудиторию вы полностью растеряете задолго до освещения результатов…

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


Эта серия статей родилась как способ разделаться с приставкой "сверх-". А для этого идею необходимо дополнить обоснованиями, иллюстрациями, примерами, практической пользой от использования.


Для любителей "сверх-идей" есть и продвинутая версия, и "монументальные результаты" на GitLab (в ссылках к статье — GPL wiki). С радостью возьмусь обсудить их, но лучше не здесь, а в отдельной ветке (GitLab Project Issues)


С уважением.

Эм… Подождите.

Под «ошарашивающими результатами» я имел ввиду не сверхидеи., а именно что результаты. Ну т.е. вам удалось создать систему, создающие алгоритмы? Когда вы говорите о «о полученном решении самых заковыристых головоломок» — эти решения из разряда идей, или из разряда практических результатов?

Правильный вопрос)))


Что есть решение головоломки? Когда-то (лет в 7) я впервые запутал Кубик Рубика и недели две после этого безрезультатно его и себя мучил, пытаясь восстановить первозданную красоту. "Ошарашивающим результатом" было для меня увидеть, как старший брат моего друга "решил" этот кубик. Это было ошарашивающим и совершенно бесполезным результатом. Он никого не учил "волшебству" решения. И только лет через 5 в журналах "Наука и жизнь" мной случайно были найдены его "волшебные" формулы, и головоломка была поставлена в коллекцию "сдавшихся".


Если вернуться к "заковыристой" головоломке, обозначенной в текущей статье, то найденное её решение — это "формулы", которые можно применять, и не только для создания системы, создающей алгоритмы. Где-то год назад стоял выбор между двумя вариантами развития: продолжить создавать "ошарашивающий результат" или постараться максимально подробно описать "формулы". В силу того, что время, которое получается выделять на занятие этой работой, сильно ограничено — более значимыми оказались "формулы". А накопление практических результатов было на время отложено, в надежде, что этим получится заняться позже и уже коллективно в формате GPL OpenSource.


Хочется верить, что формулы в качестве рекламы не "подкачают". Но если это все же случится, тогда придётся вернуться к коду и, уже закончив всё самостоятельно, рекламировать ошарашиванием))).


С уважением.

Читаю раздел «Запоминание алгоритмов выживания». Вижу следующие идеи: «запомнить, какие действия надо делать в ситуации такой-то и какие действия не надо делать». Это классно звучит на словах, в общем-то теория Павлова во многом на этом построена. При попытке прямолинейно перенести эту идею в ИИ обычно случается провал.
Например, есть у нас ИИ, который играет в Цивилизацию. Ему даются подкрепления за успехи (выраженные в любой форме) и наказания за провалы. Вроде бы логично: надо делать то, что в прошлый раз привело к максимальной награде. Если так поступать, то ИИ будет вести себя так, как вёл перед получением максимальной награды, независимо от того, насколько эта награда вероятна. Ему разок очень повезло и он копейщиком уничтожил танк? Он навсегда запомнит эту историю успеха и станет пытаться воспроизводить. И не будет механизма, который его бы разубедил в этом — разве что ещё более впечатляющая (и, возможно, тоже маловероятная) история успеха.
Если пытаться воспроизводить цепочки действий, которые привели в успеху, будет тоже что-то вроде этого. Полагаю, это знак того, что теория рефлексов, из которой не вытекает рецепт построения работающего reinforcement learning, имеет какие-то проблемы.
Вообще, с приложением биологии к реальным алгоритмам очень часто вижу ситуацию «это звучит классно и разумно, но когда пытаешься запрограммировать, оказывается, что эта замечательная схема оставляет огромный простор для толкований, который мы закрываем как попало, и в результате ничего не работает».

Введём термин признак — как обнаружение организмом «параметров» среды (химических, термических, оптических...) при его контакте со свободными или принадлежащими некоторому процессу внешними объектами.
— насколько я понимаю, вы сейчас очень сжали важный концепт. Поправьте, пожалуйста, если не согласны.
Если рассматривать нервную систему в терминах системы автоматического управления, то в ней не может появляться новых датчиков без ощутимой перестройки системы. Не то, чтобы вообще не может — но обычно нервная система так устроена, что просто поставить новый датчик не выйдет. И система управления роботом тоже обычно устроена примерно так: под новый датчик нужен порт, драйвера и код в системе управления, который с датчиком работает.
Но может быть так, что у нас уже был некоторый набор датчиков, а мы на них выявили некую устойчивую комбинацию, которая ещё и хорошо прогнозирует что-то, что мы хотим прогнозировать.
Например, ИИ играет в Doom и у него на входе кадры из игры. Он не приобретает новых датчиков, но в глубинах его нейросети формируется группа нейронов, которая примерно соответствует нашему понятию «я вижу вражеский снаряд». Потому что с этим понятием проще предсказывать, сколько у нас будет ХП на следующем шаге.
Насколько я вас понял, «новый параметр среды» — это некая новая абстракция, некая новая функция от множества датчиков. А не новый датчик, который подключают к свободному порту.

Ну и… Эта теория породила новую библиотечку supervised learning или reinforcement learning?)

Спасибо за Ваш отзыв.


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


Главное во всей статье — "Повтор". Это


  • и способ создания нового макро-признака — "некой новой абстракции (функции от множества датчиков)", как Вы верно отметили;
  • и способ создания нового макро-действия из последовательности простых действий;
  • и способ оценить связано ли подкрепление от среды (или от учителя) с исполненной цепочкой;
  • и главное — это способ проверки является ли записанная цепочка алгоритмом (в терминах, приведённых в статье №1)

Интересно, что для ситуации описанной Вами:


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

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


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


С уважением.

Интересно, что для ситуации описанной Вами:

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

— есть феномены сходные и характерные уже для нервной системы живых организмов (например, импринтинг). Ведь если мы повторяем структуру нервной системы, то результатом получаем и её достоинства, и её недостатки.
— в reinforcement learning необязательно есть эта проблема… Если мы делаем не функцию F(состояние, желаемая награда)->действие, а функцию F(состояние, действие)->ожидаемая награда, а потом перебираем (в уме, не на территории!) все возможные действия в поисках максимальной ожидаемой награды, то получаем работоспособную систему. Да, она будет чуть-чуть склонна к импринтингу, но в целом будет вести себя намного разумнее. Это я к тому, что если взять идеи из учебника биологии и попытаться их запрограммировать, то запросто может выйти, что ничего не взлетит, потому что модель биология делает акценты на одних вещах, а инженерные науки — на других. И то, что для биолога — исчерпывающее объяснение, для инженера — красивая надпись на обложке. Ну и наоборот)))

Много думал насчёт макро-действий в своё время. Не в контексте моделирования НС, а в контексте оптимального управления (ну то есть ИИ, которые ориентирован не на человекоподобность, а на победу в любом деле). У меня вышло следующее — мы, конечно, можем в качестве макро-действий использовать жёсткие цепочки. Типа такого: у нас есть элементарные действия A и B, и мы делаем макро-действием AABAB, потому что подозреваем, что оно часто будет применяться. Но когда мы станем собирать макро-действия из макро-действий, то на выходе получатся очень длинные цепи невариативных действий. Типа как если бы футболист научился бить по мячу, а потом бил бы по мячу всегда ровно так, не учитывая никакие обстоятельства и не имея возможности прервать программу посередине. Я тогда стал думать, а как записать макро-действие, чтобы оно было вариативно. Понял, чтобы каждое макро-действие записывалось на Тьюринг-полном языке. Тогда да, вся эта рекурсия работает. Только… Как сделать, чтобы не слишком умный ИИ умел писать себе скрипты на Тьюринг-полном языке?) А что это должен быть за язык? А какие базовые операции должны быть у ИИ, чтобы он мог писать скрипты? А какой у него должен быть горизонт планирования? А этот ИИ на старте довольно туповатый, и ему надо как-то и с задачами внешнего мира справляться, и скрипты себе писать, как он осилит и то, и другое? Или у него система, пишущая скрипты (те самые макро-действия) и система, управляющая руками-ногами — это разные системы? А как конкретно будет устроен в таком случае блок создания макро-действий? А правда ли эта идея хороша на практике — в смысле, ИИ, построенный таким образом, начистит морду другому ИИ, или сам огребёт?

У меня есть система, построенная на чём-то вроде макро-действий, но она даже не приближается к тому, чтобы работать с риалтаймовыми задачами. Она кодить может, если всё сложится как надо. Так что иерархическая система была бы интересна, буду ждать следующей статьи, и был бы рад увидеть там идеи, которые можно запрогать и это дало бы какое-то преимущество!

С уважением
Sign up to leave a comment.

Articles