Что такое алгоритм !!? Часть III «Память и мозг»

    Используем алгоритм. Он ключ к решению головоломки с названием "Память".


    Title


    Задача


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


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


    Но давайте приступим. Головоломка "Память" красива, кто-то её "запутал" без нас. Пора вернуть ей упорядоченное состояние и поставить на полку в дополнение к своей коллекции.


    Puzzle set


    Поведение и нервная система


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


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


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


    Это разделение сформулировано на примере "генетических алгоритмов" в предыдущей статье. Оно формирует две группы, отличающиеся по контролю исполнения алгоритма (свя́зного и обусловленного).


    Группа свя́зного исполнения должна управляться


    • "структурой", содержащей "описание последовательности", формируемой и сохраняемой внутри организма.

    Группа обусловленного исполнения будет основываться на "действиях" (внешних по отношению к упомянутой "структуре"):


    • внутренних процессах организма,
    • процессах воздействия организма на среду обитания
    • процессах среды обитания, влияющих на организм.

    Какая "структура" обеспечивает свя́зное исполнение поведения организма? Что формирует описание последовательности его активности?


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



    Нейрон


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


    Мозг занимается созданием Алгоритма!


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


    Запоминание алгоритмов выживания


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


    Для поиска новых "действий" организм должен в некоторой "структуре" запоминать последовательность событий, которые он переживает. Конечно, эта "структура" не будет содержать полной реализации записываемого процесса. Это будет описание, основывающееся на последовательности внешних "признаков" такого процесса, обнаруживаемых организмом, и выполненных "действий", которые организм использовал в этой ситуации. В дополнение к этому описанию сформированному во внутренней "структуре", у организма должна быть процедура оценки повторного "проживания" такой ситуации. И чем чаще последовательность признаков и "действий" повторяется с участием организма в среде, тем больше вероятность, что организм выявил некоторую закономерность этой среды. То есть организм запомнил информацию!


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


    • как полезно поступать в ситуации, описываемой "признаками";
    • как в ситуации, характеризуемой "признаками", поступать нельзя.

    хорошо и плохо


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


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


    Организм своим поведением решает задачу (например, задачу выживания). Для решения этой задачи организм:


    • использует существующие детекторы "признаков";
    • ищет на основе признака Повторимость новые групповые "признаки";
    • использует готовые "действия";
    • ищет на основе признака Повторимость новые групповые "действия";
    • выявляет закономерности среды, выражающиеся в сочетании последовательности "признаков" и применяемых "действий";
    • на основе вышеперечисленных приёмов синтезирует алгоритмы-стратегии в виде "структуры" в памяти;
    • подкрепляет и сохраняет в памяти те "структуры" синтезированных алгоритмов-стратегий, которые подтверждаются признаком Повторимость;
    • упорядочивает синтезированные алгоритмы-стратегии по шкале хорошо-плохо (для последующего выбора применять или избегать выполнения конкретного алгоритма в текущем контексте).

    Для дальнейшего удобства введем несколько терминов.


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


    Введём термин признак — как обнаружение организмом "параметров" среды (химических, термических, оптических...) при его контакте со свободными или принадлежащими некоторому процессу внешними объектами. Будем использовать обозначение признак("свет") для указания на факт обнаружения организмом конкретного признака — фотонов света.


    Выведем из кавычек слово "действие" и введем соответствующий термин.


    Действие — инициируемый организмом процесс воздействия на объекты и процессы среды. Действие, как закреплено в статье №1, обеспечено признаком Повторимость. По аналогии с признаком будем использовать обозначение действие("убегать") для указания на факт инициализации организмом конкретного действия (в представленном примере — это процессы приводящие к быстрой смене своего расположения).


    Реализация цепочки


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


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

    Почему способ копирования системы цепочек так важен? Чтобы ответить на этот вопрос представим себе человеческий мозг со множеством нейронов и установившихся между этими нейронами связей. Каким образом можно скопировать эту сложную структуру? Ведь она не линейна. Сложно даже подумать как реализовать способ её сериализации. В то время как память в нашем компьютере проста и наоборот предназначена для выполнении копии, не зависимо от того какой сложности структура хранится в её ячейках. Этим мы, как программисты, непременно воспользуемся чуть позже для оттачивания модели, основывающейся на системе цепочек. А пока сосредоточимся на ограниченности возможности природы для копирования синтезированных в виде цепочек алгоритмов от одного организма другому.


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



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


    • отождествление маленькой особи со взрослой,
    • соотнесение правой руки взрослой особи и правой руки особи-ученика,
    • способ добиться от правой руки обучающейся особи действия("движение") сходного с движением взрослой особи;
    • способ выполнения особью-учеником нескольких разных действий при последовательном копировании движений взрослой особи;
    • формирование копии алгоритма (цепочки полезных действий у обучающейся особи), основанное на нескольких повторах последовательности движений.

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



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


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


    В завершение раздела вернемся к программной реализации системы цепочек. Не во всём природные методы работы с цепочками уступают возможностям программиста. Есть у природы фора — великолепная реализация параллельно исполняющихся алгоритмов, уже отмеченная в предыдущей статье при демонстрации процессов, связанных с молекулой ДНК в живой клетке. Огромное количество цепочек работают, формируются, упорядочиваются у каждого из нас в процессе чтения этой статьи. И параметр параллельного исполнения, характеризующий наш мозг не сводится к $8$-ми ядрам, к $16$-ти, и даже к $202752=9216*22$ ядрам (как у суперкомпьютера Summit).


    Да, моделирование мозга человека пока не по зубам домашнему компьютеру. Но к моделированию мозга человека пока переходить рано. А для более скромной модели мозга (например, муравья или пчелы) может хватить и процессора среднего домашнего компьютера. И когда модель всё же упрётся в производительность, у нас есть возможность перейти к использованию "параллельности" графических процессоров. Эти слова подкрепляются способом обучения модели цепочек. Для самообучения подобной модели не нужно огромного количества опорных примеров, как для нейросети глубокого обучения. А если дополнить модель способами внешнего обучения (в схеме учитель-человек + ученик-модель-организма), то и большого времени перебора вариантов цепочек не понадобится. Дело лишь за малым — необходимо желание поиграться моделью, порадоваться результатам и развить для своих целей. А начальная реализация программного проекта модели уже в общем доступе.


    Выводы


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


    В текущей статье были приведены наброски модели "Системы Цепочек". Подробности и код одного из вариантов её реализации сосредоточены в отдельном проекте aipy (Python, QT, Qml, Windows+Android), в котором воплощено несколько дополнительных возможностей, описания которых не было представлено в этой статье (слой генерации цепочек, иерархия слоёв, "игровое поведение"). Конечно, способы программной реализации "Системы Цепочек" могут быть разнообразны и не ограничиваются предложенными в указанном выше проекте.


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


    А теперь аванс и перспективы. Далее в цикле статей запланировано проработать следующие темы:


    • эволюционный подход формирования цепочек-алгоритмов в процессе проживания организмом разных ситуаций среды;
    • алгоритмы обучения с разделением на копирование между организмами макро-признаков и макро-действий;
    • процессы коммуникации как коллективный способ формирования цепочек несколькими организмами и зарождение Языка (уже есть старенькая статья "Как в языке сформировать существительное?", но эту тему необходимо развить чуть больше);
    • Язык — самая новая, развившаяся на основе Памяти, "структура" хранения и синтеза алгоритмов, с повышением эффективности синтеза в направлении от естественных форм (речь, "сказки", суждения) к формальным (язык математики, язык физики, язык программиста).

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


    Спасибо Вам за внимание.


    Отзывы


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


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


    Ссылки


    • Open source (GPL) проект: (Общая теория алгоритмов wiki)
    • Вводная статья темы "Разрабатываем теорию алгоритмов как проект с открытым исходным кодом". Пожалуйста, не судите строго эту наивную публикацию "сверх-идеи" устаревшей версии 2019 года: (Статья Хабр №0)
    • Первая статья серии "Что такое алгоритм?! Действие"(Статья Хабр №1)
    • Вторая статья серии "Что такое алгоритм?! Исполнение"(Статья Хабр №2)
    • Все рисунки к статье (кроме заглавного и иллюстрации стихотворения Маяковского) сформированы сообществом Wikipedia. Лицензия (Creative Commons Attribution-Share Alike 4.0 International)
    • Иллюстрация к полезным и вредным стратегиям — художника Николая Денисовского к книге "Что такое хорошо и что такое плохо?", Владимир Маяковский. Ленинград, Издательство "Прибой", 1925г. (описание книги)
    • Видео иллюстрация к обучению игре на пианино направляет на канал Олега Переверзева (страница автора).
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 12

      0
      К сожалению, самый последний взгляд на память (и поведение и мышление и т.д.) предлагает существенно более сложный, чем вы описываете подход. Но и то нет уверенности, что это будет приближение к реальному положению дел. Так что ваши соображения, конечно, интересны, но уже сильно устарели, увы — они слишком примитивны…
        0
        Вы правы. Соображения, приведённые в текущей статье, действительно «примитивны». Они лишь принцип построения системы, а развитие этой системы, конечно, имеет сложности. Но эти сложности интересны и решаемы.

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

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

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

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

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

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

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

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


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


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


            С уважением.

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

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

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


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


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


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


                С уважением.

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

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

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

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


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


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


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

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


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

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


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


              С уважением.

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

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

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

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

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

                С уважением

            Only users with full accounts can post comments. Log in, please.