Нет, но это не принципиально. Они строят модель того, с чем не взаимодействуют непосредственно. Т.е. это все еще китайская комната.
Китайская комната — это мнимый философский парадокс. На самом деле его не существует.
Насчет взаимодействия — а как же роботы, которые обучаются в виртуальных физических симуляторах? Они как раз строят свои модели мира только на основе своего опыта. С чем взаимодействуют непосредственно. Да, их мир очень упрощенный, но принципиально не отличается от нашего.
Но и по внешним данным можно построить адекватную модель мира. Смотрите, пусть у нас будет набор фотографий из реального мира. Мы подаем на вход нейросети фотографию и требуем, чтобы на выходе она выдала эту же самую фотографию. Это принципиальная схема обычного автоэнкодера. Фокус здесь в том, что внутренний слой делаем из меньшего числа нейронов, чем вход и выход. Нейронная сеть вынуждена сжимать информацию, пропуская ее через этот узкий внутренний слой. А это ни что иное, как формирование модели мира в этом внутреннем слое h.
Теперь мы можем взять только этот внутренний слой h, содержащий модель мира, и на его основе строить любые выводы, любые рассуждения. Проблема создания разума как раз в том, что дальше делать с этой моделью мира.
p.s. Модель мира в автоэнкодере будет вполне адекватной. Можно вместо картинок взять видео, и тогда модель будет содержать динамику. Можно камеру поставить на робота, и тогда модель будет включать взаимодействия с миром.
Давайте наберем пару-тройку примеров, что бы можно было понять в чем проблема поиска… В глобальности модели? Но она хорошо «индексирована» и связана ассоциациями. Я пока не вижу серьезной проблемы поиска, хотя вполне вероятно, что она есть.
Я наверно неправильно использовал слово "поиск". Как раз любые известным нам вида поиска, вроде случайного поиска, на имеющихся моделях реальности (физических симуляторах, внутренних слоях нейронных сетей и т.д.) не работают. Слишком велика размерность ландшафта решений. Не существует никаких индексированных и хорошо связанных ассоциациями баз, отражающих всю сложность реального мира. Делать такие еще не научились.
Чтобы получить такую базу, нужен механизм снижения размерности, как это происходит в мозге. И как-то выдавать приоритеты разным ассоциациям. И непонятно как вообще строить ассоциации. Не на словах, а чтобы это можно было запрограммировать.
Совершенно верно! Вы уловили самую суть. Вопрос создания сильного ИИ как раз и заключается в вопросе — как бы нам так сделать, чтобы не перебирать все варианты? ) Мозгу удалось решить эту проблему, нам пока нет.
Можно сделать робота с несколькими сенсорами и камерой. И через вариационный автоенкодер (VAE) обучать его, чтобы получая на вход текущую картинку и показания сенсоров, на выходе VAE выдавалась картинка следующего кадра. В латентном слое этого VAE будет содержаться модель реального мира. Полная, непротиворечивая, правильная. Используя только эту модель (только внутренний слой) и не используя больше входные данные, можно переобучить нейронную сеть выдавать картинку не на 1 кадр вперед, а на 2 кадра. Или выделять цветом людей на картинке. Это называется Transfer Learning и это доказывает, что там действительно содержится модель реальности, а не просто математическое преобразование одной картинки в другую.
Но это не делает такого робота разумным.
Во-первых, как он должен двигаться, чтобы набрать статистку для построения этой внутренней модели мира? Случайно и как-то иначе?
Во-вторых, как на базе этой модели мира (полной, адекватной, правильной), ему теперь действовать, чтобы он по команде человека отправился мыть посуду?
Я внимательно прочитал, и со многими положениями согласен. Просто хочу обратить внимание, что модель мира, неважно кем составлена — самим существом или внешней базой знаний, не дает сама по себе ответов на вопросы. Даже если модель включает в себя ассоциации с наградой, то думая о награде, всплывет огромное количество ассоциаций. Нужен какой-то алгоритм поиска, чтобы выбрать из них лучшие. В существующих Model-Based алгоритмах делается множество случайных предположений, они прогоняются через модель мира, и выбирается лучшее из них. Но из-за высокой размерности случайных поиск быстро перестает работать — всего не учтешь.
Мозг помимо создания модели мира, имеет также механизмы эффективного поиска по этой модели. Причем похоже, что этот поиск (выбор лучших ассоциаций, да и вообще формирование самих ассоциаций) был подобран эволюцией через биологию происходящих процессов в мозге, например с какой скоростью нейромедиаторы перемещаются в пузырьках везикул от сомы к синаптической щели и т.д…
Я поясню насчет эволюции. Как сейчас обучают нейронные сети? Сравнив выход сети с тем, который должен быть (в случае обучения с покреплением — награда оказалась выше или ниже), мы всегда знаем, нужно увеличить или уменьшить конкретную связь между двумя конкретными нейронами. Но насколько именно ее нужно изменить — неизвестно. Надо умножить текущую ошибку на 0.001, 0.1, на 0.0000001? Сейчас условно берут скорость обучения (learning rate), скажем, 0.0001. На это число умножают ошибку и прибавляют к текущему весу нейрона.
Это число 0.0001 применяется ко всей сети и подобрано экспериментально, потому что так заработало. Но из-за того что это число везде одинаково, где-то связи слишком сильно меняются, а где-то слишком мало. Обычно делают это число очень маленьким, чтобы изменения были небольшие, но из-за этого требуется показывать нейронной сети миллионы примеров, чтобы связи между нейронами доросли с такой скоростью обучения до нужного размера. Но главное — в задачах с нестабильными градиентами, где они прыгают и бывают направлены в разные стороны (как это происходит в большинстве задач reinforcement learning), таким образом нейросеть вообще не может обучиться!
В живом мозге это число подобрала эволюция. Если взять обычную нейронную сеть, где learning rate у каждого нейрона или у кластеров нейронов будет свой, и сделать его динамическим, как-то привязав к получению награды. То получится очень похоже на то, что происходит в живом мозге. Будет возможность обучаться на единичных примерах, обучаться в течении всей жизни и т.д… Но ни как сформировать такие кластеры (и как их соединять с другими кластерами), ни как подобрать правила изменения learning rate для отдельных нейронов или кластеров — на данном этапе неизвестно.
Все это хорошо, но главный вопроса КАК это сделать? Вот вы говорите
Например, интуиция — прямое получение знания о будущем состоянии реальности без постройки детальной модели
Ну и как сделать это прямое получение знаний? Опишите этот процесс в виде формул, структуры данных для знаний, алгоритмов. Ведь все это придется программировать. Нельзя компьютеру сказать: «получи прямым образом знания из базы!» Это так не работает.
Имеется ввиду, что все(!) существующие определения сознания использует термины, которые в свою очередь не определены. Например, возьмем такое определение: Сознание — это способность понимать. А что такое «понимать»? Понимать — это адекватно воспринимать окружающую действительно. А что значит «воспринимать», что значит «адекватно»?
Так можно продолжать до бесконечности, жонглируя не определенными философскими терминами. На данный момент невозможно дать нормального определения сознанию. Да и разуму тоже. Лучший вариант: «выглядит как утка и крякает как утка», т.е. действует похоже на человеческий разум. А что значит «похоже»? Насколько похоже, в каких единицах измерять эту похожесть — тоже не определено.
Для разума недостаточно просто построить модель мира. С этим справляются многие технологии — от деревьев решений до нейронных сетей. Они строят модель мира именно как у вас описано — полную, непротиворечивую и так далее.
Вот представьте, что у вас есть полная модель мира (база знаний), а дальше что? Как в ней ориентироваться, как искать нужные ответы? Модель мира не может дать ответа на вопрос «Какую ногу надо поднять, чтобы сделать шаг?». Она, как и любая база знаний, может отвечать только на конкретные вопросы по динамике мира. Например: «На сколько градусов поднимется нога, если я буду развивать мышцами усилие 40 Н в течении 2 секунд?».
Чувствуете разницу? Чтобы получить ответы, характерные для разума, нужно эти ответы как-то искать в имеющейся модели мира (или базе данных). И никто не знает, как разум это делает в таком огромном разнообразии возможностей (пространстве решений). Надо что, спрашивать у модели мира про все возможные усилия с шагом 1 Н и временем 0.1 сек (а почему не с меньшим или большим?), чтобы потом выбрать вариант, который поднимает ногу выше всего? А если нужно сделать длинную последовательность действий, как ходьба?
Поэтому голый Model-Based подход не работает. Даже если у нас есть идеальная модель мира и мы будем перебирать в ней все возможные варианты, проклятие размерности быстро сводит такие попытки на нет.
Разум не просто строит модель мира. Он еще как-то осуществляет в ней поиск (через ассоциации, очевидно), чтобы выбрать действия, которые приведут к награде. Проблема создания разума не в модели, а в том как реализовать этот поиск. Сейчас считается, что преднастройку физиологии мозга произвела эволюция. Настроила работу нейромедиаторов, скорость формирования новых связей между нейронами и забывания старых, что и формирует образование ассоциаций в мозге, исходя из того, что было выгодно для выживания конкретной особи животного. Точнее, особи с худшими настройками просто вымерли, а выжили только такие, что есть сейчас.
Смысл воображения не в том, чтобы получить видео, а чтобы там были отдельные наблюдаемые объекты. Если там один объект «двигающееся изображение», такое воображение ничего не дает.
Это вопрос терминологии. То что мы называем воображением — представляя столбики или сопутствующие обстоятельства — в нейросетях называется вектором контекста. Его выделять нейросеть учится, обучаясь на больших объемах данных. Потом ей достаточно увидеть один желтый столбик, сложить эти входные данные с вектором контекста, и она получает общее представление о ситуации. Причем сложить в буквальном смысле — конкатенацией двух векторов. После чего простой регрессией из этого общего вектора она может рендерить картинку, выделять отдельные столбики на фото, да что угодно.
Вектор контекста может быть неявно закодирован в весах сети, как в этом случае, а может в зависимости от архитектуры выдаваться на выходе в явном виде, с последующей конкатенацией с текущими входными данными.
В общем случае вектор контекста (это буквально либо числа в весах, либо числа в специальном выходном векторе) содержит недостающую информацию для решения задачи. А это и есть воображение, о котором тут говорят. Знания о внешнем мире и т.д.
Есть архитектуры, в которых нейросеть представляет в динамике разные варианты развития событий (на основе предобученной model-based модели), и учится дальше чисто по своему воображению. В точности как мы, прокручивая в голове ситуации и пытаясь найти решение. Там действительно все очень похоже. Если кто-то указывает на принципиальные отличия человеческого мышления от того, что происходит в нейросетях, то это просто от недостатка знаний о современном состоянии машинного обучения. Вопрос о возможности или невозможности сильного ИИ уже давно не стоит, теперь это лишь вопрос времени.
Когда подросток читает «Таинственный возраст» он создаёт мир, в котором есть всё, что описано в книге по тексту книги.
Когда нейросеть «читает» этот же текст, то она ничего подобного не делает.
Неверное утверждение. Нейросеть как раз делает то, что и подросток — создает, воображает модель мира. Другое дело, что ни одну нейросеть пока не обучали на таком же объеме данных, как получает за жизнь подросток.
Пруф. По одной картинке (слева) нейросеть воображает целый лабиринт, который мог бы соответствовать этой картинке. Это и есть воображение (или внутренняя модель мира в сознании), о котором вы говорите.
Поправочка: большинство алгоритмов хэширования наоборот сделаны там, что близкие значения имеют максимально отличающиеся хэши. Ну, сразу и было сказано, это просто красивая идея, которая не будет работать на практике. Хотя бы потому, что нейронные сети embeddings делают в многомерном пространстве, а простые хэши работают на одномерном.
Я в курсе, что такое хэширование). Здесь оно интересно тем, что в короткий хэш попадает множество ситуаций. Просто по математике хэширования как такового, это сжатие с потерями. Это можно рассматривать как обобщение похожих ситуаций. Собственно, именно так и ищутся похожие картинки в интернете в том же гугле — уменьшается разрешение фото и строится перцептивный хэш от пикселей.
Нейронные сети всегда будет сложно анализировать из-за большого числа путей, по которым может распространяться сигнал. Поэтому всегда были попытки построить интеллект на других принципах. Более компьютерных, так сказать. Предсказуемых, строго математических. Наиболее известны, пожалуй, попытки сделать ИИ на основе предикатов. Но сюда же можно отнести иерархическую темпоральную память (HTM) — что-то вроде попытки построить модель неокортекса. Созданная в 2010 году или чуть раньше, еще до бума нейросетей (но особых успехов не добившаяся, что очевидно).
Всегда есть шанс, что можно придумать такую альтернативную модель ИИ. Проблема всех существующих абстрактных объяснений как работает интеллект, при всей их кажущейся красоте и логичности, в том, что ни одно из них не заработало на практике.
Это потому что в bAbI вопросы специально разбиты на категории по отдельным задачам. Вот смотрите, задача по выявлению временных зависимостей (Taks 14):
После обеда Юлия пошла в парк.
Вчера Юлия была в школе.
Юлия ходила в кино этим вечером.
Q: Куда Юлия пошла после парка? A: В кино.
Q: Где Юлия была перед парком? A: В школе.
Предложения специально перепутаны местами. Про сегодняшний день первое и третье предложение, а второе про вчерашний. Причем в первом предложении ничего не говорится о том, в какой день после обеда это произошло. Нужно из общего контекста понять, что речь идет о сегодняшнем дне.
Это довольно близко к вашему примеру, не так ли? Из него тоже нужно выделить временную последовательность событий, что и в каком порядке происходило. Хотя предложения в тексте вашего примера тоже идут не в хронологическом порядке, как и в Task 14. Вот в какой последовательности у Кати прошел день:
1. Катя долго собиралась.
2. Катя опоздала.
3. Катя обнаружила, что торт съеден.
Приведенные вами вопросы — это вопросы по контексту. Просто чуть более сложный вариант, но принципиально такой же, как восстанавливать из контекста, что первое и третье предложение в примере из Task 14 касаются сегодняшнего дня.
Ну и не надо забывать, что bAbI это игрушечный сборник задач. Один из первых такого рода.
А кто сказал, что оно должно быть умнее человека?
Вы можете обучить его быть глупым, средним…
Ага, для реалистичных NPC надо не просто создать сильный ИИ, но еще и заставить его отыгрывать роль! Чтобы он тактично уходил от каверзных вопросов игрока, придерживаясь механики игровой вселенной. А это уже не просто сильный ИИ, а очень сильный! Не каждый профессиональный GM так может.
Как раз такого рода задачи ИИ уже относительно хорошо решает. См. например датасет bAbI. Там как раз такого рода примеры:
1 Mary moved to the bathroom.
2 John went to the hallway.
3 Where is Mary? bathroom
И более сложные запутанные ситуации. Но в целом верно, существующие системы обучения ИИ оторваны от реального мира и нет никаких гарантий, что из предоставляемых им датасетов можно извлечь эту информацию. О том что на самом деле происходит в описываемом тексте. Не говоря о практически отсутствующей у текущих слабых ИИ возможности делать последовательные рассуждения.
Может сработать и такой вариант… Никто не знает, что надо делать. Кто же знал, что простая идея сверточного фильтра вдруг даст +15% прибавки в задаче, где последние годы бились за десятые доли процента (что породило сегодняшнюю волну глубокого обучения, приведшую к улучшению точности с ~30% до 95%). Надо пробовать и экспериментировать.
Если говорить об альтернативном ИИ, не на основе нейронных сетей. То я бы копал в сторону хэширования. Представьте, что робот записывает на видео все что он видит. И для каждой пары, тройки и т.д. пикселей, а также для каждого изменившегося во времени пикселя строит перцептивный хэш. Включая в него награду, хэши от хэшей (в том числе по времени) и так далее.
При этом короткая длина хэша, что логично, включает в себя множество похожих state. А чем длиннее хэш, тем точнее он указывает в каком месте и каком пикселе он был рассчитан.
Далее, нужны правила удаления старых хэшей. Скажем, удалять все, кроме связанных с наградой, кроме редко встречаемых хэшей и кроме часто встречаемых. Причем если редко встречаемые хранятся целиком (на сколько хватает памяти по остаточному принципу), то у часто встречаемых обрезается и оставляется только короткая общая часть хэша. Да, это будут базы из миллионов или миллиардов хэшей. Что-то вроде таблицы с быстрым ассоциативным поиском по хэшам (по общим начальным частям длины), и одновременно по ним можно восстановить на что указывает конкретный полный хэш.
В принципе, что-то подобное и делают нейронные сети, когда кодируют входную информацию в выходной вектор фиксированного размера. Который можно рассматривать как аналог такого универсального хэша. Потому что математике неизвестны способы как сделать подобные универсальные хэши для всего (даже перцептивный для картинки это не совсем то, просто близкая аналогия).
Мы ведь тоже имеем как общие знания о часто встречаемых событиях, не помня откуда это взяли. А также помним уникальные длинные хэши на конкретные события. К примеру, говоря о втором законе Ньютона F=ma мы прекрасно помним, что узнали его из конкретного учебника по физике. А говоря о «силе» в этой формуле, мы скажем: ну, это что-то такое общее, толкать чего-нибудь. Но более грамотный человек, с лучшей памятью и лучшим образованием, вспомнит откуда он узнал это понятие, приведет его точное определение и т.д.
Повторюсь, сейчас не существует математического аппарата для построения подобных хэшей (и неизвестно как их сделать). Это просто рассуждения, как можно было бы сделать ассоциативную память, где пересекающиеся общие знания хранились бы в начальной короткой части хэша, а на конкретное событие в памяти (на кадр в видео, на момент времени в логах телеметрии) указывал бы полный хэш.
В ролике дано довольно правдоподобное объяснение, почему переход от предсказания Q(s,a) в простых алгоритмах Actor-Critic (DDPG) к предсказанию значения V(s) в Advantage-Actor-Critic (A3C/A2C и др.) дает лучшие результаты. Мол, в Q(s,a) приходится строить зависимости для всех возможных комбинаций state и action. Что ведет к комбинаторному взрыву. А в V(s) достаточно предсказывать только все возможные ситуации state, а потом уже к ним применяется ограниченное число действий action. Что устраняет этот комбинаторный взрыв.
Вообще, ваши циклы статей на хабре Логика мышления и Логика сознания очень интересные. С выдвинутыми в них гипотезами, что информация по мозгу распространяется чем-то вроде того, как движутся фигуры в клеточных автоматах (изменяясь на каждом шаге/нейроне, но перемещаясь как целая фигура, и интерферируя с другими фигурам, реализуя этим ассоциативную память) можно соглашаться или нет. Но в любом случае, в ваших статьях очень много интересных биологических подробностей по работе мозга, что познавательно.
То, что мозг имеет встроенный Model-Based алгоритм, это безусловно. Доказательством этому служат предсказание полета мяча, воображение и сны. Но мне кажется, для интеллекта Model-Based — это лишь вспомогательный инструмент. А работа самого интеллекта строится на снижении размерности входных данных, после чего на основе этой низкой размерности принимаются решения. И принимаются они исключительно на основе ассоциаций.
А вот как снизить размерность и как правильно построить эти ассоциации, чтобы они приводили к оптимальным действиям, это большой вопрос!
Ваши гипотезы, имеющие так много общих черт с тем что действительно происходит в мозге с биологической точки зрения, и что подтверждено на экспериментах — одно и таких возможных объяснений.
Но как любое высокоуровневое абстрактное объяснение, оно страдает от проблемы, как его реализовать, чтобы оно сошлось с реальностью? Ну, чтобы оно работало на практике. Объяснений как работает интеллект ведь существуют сотни, разной степени абстрактности. А реализации полноценного ИИ все нет и нет...
Я подхожу к этому из первых принципов: мозг это соединенные аксонами нейроны (со всей их биохимией) и ничего более. Никаких побитово складывающихся разреженных бинарных векторов из временного ряда спайков для выявления ассоциаций, и тому подобного. Этот абстрактный уровень (если он верен) будет полезен, чтобы в будущем создать более простую и эффективную модель интеллекта. А сейчас проблема его хоть как-то создать.
Расположение нейронов и правила их настройки с помощью молекул нейромедиаторов сформировались эволюцией. Нам нужно как-то повторить эти правила именно на уровне изменения весов между нейронами, не вводя дополнительных абстракций. Найти удачную архитектуру нейросети и методы ее обучения. В простейшем случае, хотя бы методами нейроэволюции (но это маловероятно из-за сложности проблемы).
Существующие алгоритмы Reinforcement Learning, при всей их идейной правильности (предсказывать Q(s,a) или V(s) и рассчитывать на его основе A(s,a)), реализованы явно неправильно. Не соответствуют тому, что мы видим в работе живых систем. Нет обучения по единичным удачным случаям, нет нормальной памяти и ассоциативности.
Тут во многом проблема аппаратной привязки. Deep Reinforcement Learning использует наработки по обучению обычных статичных нейросетей — фреймворки и библиотеки для работы на GPU. Существует ведь много более подходящих (в теории) архитектур нейросетей для обучения с подкреплением: спайковые, разреженные и т.д. Но нет быстрой матричной реализации на GPU — и они простаивают в безвестности. Возможно, ожидая своего звездного часа, как это произошло с LSTM, изобретенной еще в далеком 1997 году, задолго до всплеска интереса к машинному обучению.
;) Все равно, меня впечатлил подход. Ведь это классическая дилемма — в средневековье один человек чисто физически не мог уничтожить всех остальных людей. Рука бойца колоть устанет.
Но с ростом технологий, возможности отдельного человека нанести вред остальным растет. Сначала можно было собрать армию и перерезать значительную часть населения. Как это и делали всякие чингиз ханы, македонские и гитлеры. Но не всю. Потом атомной бомбой можно уничтожить почти всех (а возможно, с наступлением атомной зимы и действительно всех). С будущим развитием генетики вообще любой сможет на кухне создать убийственный вирус, переносимый, скажем, насекомыми (чтобы везде пролезли). Что дальше? Космические корабли, одним выстрелом уничтожающие целые планеты?
С появлением ИИ, эта угроза выходит на абсолют — умные роботы смогут сами себя производить в неограниченных количествах. И благодаря своему интеллекту, смогут решать возникающие по ходу уничтожения человечества проблемы. Такие, как если остатки человечества засядут в бункерах, куда не могут пролезть насекомые. Роботы придумают как его просверлить, взорвать и т.д.
Какой же выход? Только надеяться на разумность. У того же Бэнкса, когда один корабль, перевозивший людей в анабиозе, решил намылиться по своим делам, то сначала он высадил всех людей на ближайшую подходящую планету (подняв там этим небольшую панику). Вполне разумное и логичное поведение. Таким и должен быть ИИ.
Китайская комната — это мнимый философский парадокс. На самом деле его не существует.
Насчет взаимодействия — а как же роботы, которые обучаются в виртуальных физических симуляторах? Они как раз строят свои модели мира только на основе своего опыта. С чем взаимодействуют непосредственно. Да, их мир очень упрощенный, но принципиально не отличается от нашего.
Но и по внешним данным можно построить адекватную модель мира. Смотрите, пусть у нас будет набор фотографий из реального мира. Мы подаем на вход нейросети фотографию и требуем, чтобы на выходе она выдала эту же самую фотографию. Это принципиальная схема обычного автоэнкодера. Фокус здесь в том, что внутренний слой делаем из меньшего числа нейронов, чем вход и выход. Нейронная сеть вынуждена сжимать информацию, пропуская ее через этот узкий внутренний слой. А это ни что иное, как формирование модели мира в этом внутреннем слое h.
Теперь мы можем взять только этот внутренний слой h, содержащий модель мира, и на его основе строить любые выводы, любые рассуждения. Проблема создания разума как раз в том, что дальше делать с этой моделью мира.
p.s. Модель мира в автоэнкодере будет вполне адекватной. Можно вместо картинок взять видео, и тогда модель будет содержать динамику. Можно камеру поставить на робота, и тогда модель будет включать взаимодействия с миром.
Я наверно неправильно использовал слово "поиск". Как раз любые известным нам вида поиска, вроде случайного поиска, на имеющихся моделях реальности (физических симуляторах, внутренних слоях нейронных сетей и т.д.) не работают. Слишком велика размерность ландшафта решений. Не существует никаких индексированных и хорошо связанных ассоциациями баз, отражающих всю сложность реального мира. Делать такие еще не научились.
Чтобы получить такую базу, нужен механизм снижения размерности, как это происходит в мозге. И как-то выдавать приоритеты разным ассоциациям. И непонятно как вообще строить ассоциации. Не на словах, а чтобы это можно было запрограммировать.
Совершенно верно! Вы уловили самую суть. Вопрос создания сильного ИИ как раз и заключается в вопросе — как бы нам так сделать, чтобы не перебирать все варианты? ) Мозгу удалось решить эту проблему, нам пока нет.
Но это не делает такого робота разумным.
Во-первых, как он должен двигаться, чтобы набрать статистку для построения этой внутренней модели мира? Случайно и как-то иначе?
Во-вторых, как на базе этой модели мира (полной, адекватной, правильной), ему теперь действовать, чтобы он по команде человека отправился мыть посуду?
Мозг помимо создания модели мира, имеет также механизмы эффективного поиска по этой модели. Причем похоже, что этот поиск (выбор лучших ассоциаций, да и вообще формирование самих ассоциаций) был подобран эволюцией через биологию происходящих процессов в мозге, например с какой скоростью нейромедиаторы перемещаются в пузырьках везикул от сомы к синаптической щели и т.д…
Это сделано в мозге, значит это можно повторить.
Я поясню насчет эволюции. Как сейчас обучают нейронные сети? Сравнив выход сети с тем, который должен быть (в случае обучения с покреплением — награда оказалась выше или ниже), мы всегда знаем, нужно увеличить или уменьшить конкретную связь между двумя конкретными нейронами. Но насколько именно ее нужно изменить — неизвестно. Надо умножить текущую ошибку на 0.001, 0.1, на 0.0000001? Сейчас условно берут скорость обучения (learning rate), скажем, 0.0001. На это число умножают ошибку и прибавляют к текущему весу нейрона.
Это число 0.0001 применяется ко всей сети и подобрано экспериментально, потому что так заработало. Но из-за того что это число везде одинаково, где-то связи слишком сильно меняются, а где-то слишком мало. Обычно делают это число очень маленьким, чтобы изменения были небольшие, но из-за этого требуется показывать нейронной сети миллионы примеров, чтобы связи между нейронами доросли с такой скоростью обучения до нужного размера. Но главное — в задачах с нестабильными градиентами, где они прыгают и бывают направлены в разные стороны (как это происходит в большинстве задач reinforcement learning), таким образом нейросеть вообще не может обучиться!
В живом мозге это число подобрала эволюция. Если взять обычную нейронную сеть, где learning rate у каждого нейрона или у кластеров нейронов будет свой, и сделать его динамическим, как-то привязав к получению награды. То получится очень похоже на то, что происходит в живом мозге. Будет возможность обучаться на единичных примерах, обучаться в течении всей жизни и т.д… Но ни как сформировать такие кластеры (и как их соединять с другими кластерами), ни как подобрать правила изменения learning rate для отдельных нейронов или кластеров — на данном этапе неизвестно.
В живом мозге все это сделала эволюция.
Ну и как сделать это прямое получение знаний? Опишите этот процесс в виде формул, структуры данных для знаний, алгоритмов. Ведь все это придется программировать. Нельзя компьютеру сказать: «получи прямым образом знания из базы!» Это так не работает.
Так можно продолжать до бесконечности, жонглируя не определенными философскими терминами. На данный момент невозможно дать нормального определения сознанию. Да и разуму тоже. Лучший вариант: «выглядит как утка и крякает как утка», т.е. действует похоже на человеческий разум. А что значит «похоже»? Насколько похоже, в каких единицах измерять эту похожесть — тоже не определено.
Вот представьте, что у вас есть полная модель мира (база знаний), а дальше что? Как в ней ориентироваться, как искать нужные ответы? Модель мира не может дать ответа на вопрос «Какую ногу надо поднять, чтобы сделать шаг?». Она, как и любая база знаний, может отвечать только на конкретные вопросы по динамике мира. Например: «На сколько градусов поднимется нога, если я буду развивать мышцами усилие 40 Н в течении 2 секунд?».
Чувствуете разницу? Чтобы получить ответы, характерные для разума, нужно эти ответы как-то искать в имеющейся модели мира (или базе данных). И никто не знает, как разум это делает в таком огромном разнообразии возможностей (пространстве решений). Надо что, спрашивать у модели мира про все возможные усилия с шагом 1 Н и временем 0.1 сек (а почему не с меньшим или большим?), чтобы потом выбрать вариант, который поднимает ногу выше всего? А если нужно сделать длинную последовательность действий, как ходьба?
Поэтому голый Model-Based подход не работает. Даже если у нас есть идеальная модель мира и мы будем перебирать в ней все возможные варианты, проклятие размерности быстро сводит такие попытки на нет.
Разум не просто строит модель мира. Он еще как-то осуществляет в ней поиск (через ассоциации, очевидно), чтобы выбрать действия, которые приведут к награде. Проблема создания разума не в модели, а в том как реализовать этот поиск. Сейчас считается, что преднастройку физиологии мозга произвела эволюция. Настроила работу нейромедиаторов, скорость формирования новых связей между нейронами и забывания старых, что и формирует образование ассоциаций в мозге, исходя из того, что было выгодно для выживания конкретной особи животного. Точнее, особи с худшими настройками просто вымерли, а выжили только такие, что есть сейчас.
Это вопрос терминологии. То что мы называем воображением — представляя столбики или сопутствующие обстоятельства — в нейросетях называется вектором контекста. Его выделять нейросеть учится, обучаясь на больших объемах данных. Потом ей достаточно увидеть один желтый столбик, сложить эти входные данные с вектором контекста, и она получает общее представление о ситуации. Причем сложить в буквальном смысле — конкатенацией двух векторов. После чего простой регрессией из этого общего вектора она может рендерить картинку, выделять отдельные столбики на фото, да что угодно.
Вектор контекста может быть неявно закодирован в весах сети, как в этом случае, а может в зависимости от архитектуры выдаваться на выходе в явном виде, с последующей конкатенацией с текущими входными данными.
В общем случае вектор контекста (это буквально либо числа в весах, либо числа в специальном выходном векторе) содержит недостающую информацию для решения задачи. А это и есть воображение, о котором тут говорят. Знания о внешнем мире и т.д.
Есть архитектуры, в которых нейросеть представляет в динамике разные варианты развития событий (на основе предобученной model-based модели), и учится дальше чисто по своему воображению. В точности как мы, прокручивая в голове ситуации и пытаясь найти решение. Там действительно все очень похоже. Если кто-то указывает на принципиальные отличия человеческого мышления от того, что происходит в нейросетях, то это просто от недостатка знаний о современном состоянии машинного обучения. Вопрос о возможности или невозможности сильного ИИ уже давно не стоит, теперь это лишь вопрос времени.
Неверное утверждение. Нейросеть как раз делает то, что и подросток — создает, воображает модель мира. Другое дело, что ни одну нейросеть пока не обучали на таком же объеме данных, как получает за жизнь подросток.
Пруф. По одной картинке (слева) нейросеть воображает целый лабиринт, который мог бы соответствовать этой картинке. Это и есть воображение (или внутренняя модель мира в сознании), о котором вы говорите.
Нейронные сети всегда будет сложно анализировать из-за большого числа путей, по которым может распространяться сигнал. Поэтому всегда были попытки построить интеллект на других принципах. Более компьютерных, так сказать. Предсказуемых, строго математических. Наиболее известны, пожалуй, попытки сделать ИИ на основе предикатов. Но сюда же можно отнести иерархическую темпоральную память (HTM) — что-то вроде попытки построить модель неокортекса. Созданная в 2010 году или чуть раньше, еще до бума нейросетей (но особых успехов не добившаяся, что очевидно).
Всегда есть шанс, что можно придумать такую альтернативную модель ИИ. Проблема всех существующих абстрактных объяснений как работает интеллект, при всей их кажущейся красоте и логичности, в том, что ни одно из них не заработало на практике.
Предложения специально перепутаны местами. Про сегодняшний день первое и третье предложение, а второе про вчерашний. Причем в первом предложении ничего не говорится о том, в какой день после обеда это произошло. Нужно из общего контекста понять, что речь идет о сегодняшнем дне.
Это довольно близко к вашему примеру, не так ли? Из него тоже нужно выделить временную последовательность событий, что и в каком порядке происходило. Хотя предложения в тексте вашего примера тоже идут не в хронологическом порядке, как и в Task 14. Вот в какой последовательности у Кати прошел день:
Приведенные вами вопросы — это вопросы по контексту. Просто чуть более сложный вариант, но принципиально такой же, как восстанавливать из контекста, что первое и третье предложение в примере из Task 14 касаются сегодняшнего дня.
Ну и не надо забывать, что bAbI это игрушечный сборник задач. Один из первых такого рода.
Ага, для реалистичных NPC надо не просто создать сильный ИИ, но еще и заставить его отыгрывать роль! Чтобы он тактично уходил от каверзных вопросов игрока, придерживаясь механики игровой вселенной. А это уже не просто сильный ИИ, а очень сильный! Не каждый профессиональный GM так может.
Как раз такого рода задачи ИИ уже относительно хорошо решает. См. например датасет bAbI. Там как раз такого рода примеры:
1 Mary moved to the bathroom.
2 John went to the hallway.
3 Where is Mary? bathroom
И более сложные запутанные ситуации. Но в целом верно, существующие системы обучения ИИ оторваны от реального мира и нет никаких гарантий, что из предоставляемых им датасетов можно извлечь эту информацию. О том что на самом деле происходит в описываемом тексте. Не говоря о практически отсутствующей у текущих слабых ИИ возможности делать последовательные рассуждения.
Если говорить об альтернативном ИИ, не на основе нейронных сетей. То я бы копал в сторону хэширования. Представьте, что робот записывает на видео все что он видит. И для каждой пары, тройки и т.д. пикселей, а также для каждого изменившегося во времени пикселя строит перцептивный хэш. Включая в него награду, хэши от хэшей (в том числе по времени) и так далее.
При этом короткая длина хэша, что логично, включает в себя множество похожих state. А чем длиннее хэш, тем точнее он указывает в каком месте и каком пикселе он был рассчитан.
Далее, нужны правила удаления старых хэшей. Скажем, удалять все, кроме связанных с наградой, кроме редко встречаемых хэшей и кроме часто встречаемых. Причем если редко встречаемые хранятся целиком (на сколько хватает памяти по остаточному принципу), то у часто встречаемых обрезается и оставляется только короткая общая часть хэша. Да, это будут базы из миллионов или миллиардов хэшей. Что-то вроде таблицы с быстрым ассоциативным поиском по хэшам (по общим начальным частям длины), и одновременно по ним можно восстановить на что указывает конкретный полный хэш.
В принципе, что-то подобное и делают нейронные сети, когда кодируют входную информацию в выходной вектор фиксированного размера. Который можно рассматривать как аналог такого универсального хэша. Потому что математике неизвестны способы как сделать подобные универсальные хэши для всего (даже перцептивный для картинки это не совсем то, просто близкая аналогия).
Мы ведь тоже имеем как общие знания о часто встречаемых событиях, не помня откуда это взяли. А также помним уникальные длинные хэши на конкретные события. К примеру, говоря о втором законе Ньютона F=ma мы прекрасно помним, что узнали его из конкретного учебника по физике. А говоря о «силе» в этой формуле, мы скажем: ну, это что-то такое общее, толкать чего-нибудь. Но более грамотный человек, с лучшей памятью и лучшим образованием, вспомнит откуда он узнал это понятие, приведет его точное определение и т.д.
Повторюсь, сейчас не существует математического аппарата для построения подобных хэшей (и неизвестно как их сделать). Это просто рассуждения, как можно было бы сделать ассоциативную память, где пересекающиеся общие знания хранились бы в начальной короткой части хэша, а на конкретное событие в памяти (на кадр в видео, на момент времени в логах телеметрии) указывал бы полный хэш.
В ролике дано довольно правдоподобное объяснение, почему переход от предсказания Q(s,a) в простых алгоритмах Actor-Critic (DDPG) к предсказанию значения V(s) в Advantage-Actor-Critic (A3C/A2C и др.) дает лучшие результаты. Мол, в Q(s,a) приходится строить зависимости для всех возможных комбинаций state и action. Что ведет к комбинаторному взрыву. А в V(s) достаточно предсказывать только все возможные ситуации state, а потом уже к ним применяется ограниченное число действий action. Что устраняет этот комбинаторный взрыв.
Вообще, ваши циклы статей на хабре Логика мышления и Логика сознания очень интересные. С выдвинутыми в них гипотезами, что информация по мозгу распространяется чем-то вроде того, как движутся фигуры в клеточных автоматах (изменяясь на каждом шаге/нейроне, но перемещаясь как целая фигура, и интерферируя с другими фигурам, реализуя этим ассоциативную память) можно соглашаться или нет. Но в любом случае, в ваших статьях очень много интересных биологических подробностей по работе мозга, что познавательно.
То, что мозг имеет встроенный Model-Based алгоритм, это безусловно. Доказательством этому служат предсказание полета мяча, воображение и сны. Но мне кажется, для интеллекта Model-Based — это лишь вспомогательный инструмент. А работа самого интеллекта строится на снижении размерности входных данных, после чего на основе этой низкой размерности принимаются решения. И принимаются они исключительно на основе ассоциаций.
А вот как снизить размерность и как правильно построить эти ассоциации, чтобы они приводили к оптимальным действиям, это большой вопрос!
Ваши гипотезы, имеющие так много общих черт с тем что действительно происходит в мозге с биологической точки зрения, и что подтверждено на экспериментах — одно и таких возможных объяснений.
Но как любое высокоуровневое абстрактное объяснение, оно страдает от проблемы, как его реализовать, чтобы оно сошлось с реальностью? Ну, чтобы оно работало на практике. Объяснений как работает интеллект ведь существуют сотни, разной степени абстрактности. А реализации полноценного ИИ все нет и нет...
Я подхожу к этому из первых принципов: мозг это соединенные аксонами нейроны (со всей их биохимией) и ничего более. Никаких побитово складывающихся разреженных бинарных векторов из временного ряда спайков для выявления ассоциаций, и тому подобного. Этот абстрактный уровень (если он верен) будет полезен, чтобы в будущем создать более простую и эффективную модель интеллекта. А сейчас проблема его хоть как-то создать.
Расположение нейронов и правила их настройки с помощью молекул нейромедиаторов сформировались эволюцией. Нам нужно как-то повторить эти правила именно на уровне изменения весов между нейронами, не вводя дополнительных абстракций. Найти удачную архитектуру нейросети и методы ее обучения. В простейшем случае, хотя бы методами нейроэволюции (но это маловероятно из-за сложности проблемы).
Существующие алгоритмы Reinforcement Learning, при всей их идейной правильности (предсказывать Q(s,a) или V(s) и рассчитывать на его основе A(s,a)), реализованы явно неправильно. Не соответствуют тому, что мы видим в работе живых систем. Нет обучения по единичным удачным случаям, нет нормальной памяти и ассоциативности.
Тут во многом проблема аппаратной привязки. Deep Reinforcement Learning использует наработки по обучению обычных статичных нейросетей — фреймворки и библиотеки для работы на GPU. Существует ведь много более подходящих (в теории) архитектур нейросетей для обучения с подкреплением: спайковые, разреженные и т.д. Но нет быстрой матричной реализации на GPU — и они простаивают в безвестности. Возможно, ожидая своего звездного часа, как это произошло с LSTM, изобретенной еще в далеком 1997 году, задолго до всплеска интереса к машинному обучению.
;) Все равно, меня впечатлил подход. Ведь это классическая дилемма — в средневековье один человек чисто физически не мог уничтожить всех остальных людей. Рука бойца колоть устанет.
Но с ростом технологий, возможности отдельного человека нанести вред остальным растет. Сначала можно было собрать армию и перерезать значительную часть населения. Как это и делали всякие чингиз ханы, македонские и гитлеры. Но не всю. Потом атомной бомбой можно уничтожить почти всех (а возможно, с наступлением атомной зимы и действительно всех). С будущим развитием генетики вообще любой сможет на кухне создать убийственный вирус, переносимый, скажем, насекомыми (чтобы везде пролезли). Что дальше? Космические корабли, одним выстрелом уничтожающие целые планеты?
С появлением ИИ, эта угроза выходит на абсолют — умные роботы смогут сами себя производить в неограниченных количествах. И благодаря своему интеллекту, смогут решать возникающие по ходу уничтожения человечества проблемы. Такие, как если остатки человечества засядут в бункерах, куда не могут пролезть насекомые. Роботы придумают как его просверлить, взорвать и т.д.
Какой же выход? Только надеяться на разумность. У того же Бэнкса, когда один корабль, перевозивший людей в анабиозе, решил намылиться по своим делам, то сначала он высадил всех людей на ближайшую подходящую планету (подняв там этим небольшую панику). Вполне разумное и логичное поведение. Таким и должен быть ИИ.