Как стать автором
Обновить

Комментарии 46

НЛО прилетело и опубликовало эту надпись здесь
Этот пример для того, что направление ветра все же можно выделить из картинки. Выделив объект флаг и определив его направление. Но вот что это за здание, из пикселей картинки точно никак нельзя узнать. Это внешнее знание. Без наличия этого знания с этим не справиться.

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

Поэтому распознавание изображений в современной форме это хоть и слабая, но все же форма ИИ. А где слабая, там есть потенциал и для сильной.
В задаче определения направления ветра по флагу заложены вводные в виде наивных и физический знаний о поведении флага (пластичный объект, закреплённый на неподвижном флагштоке) на ветру.
Если решать её по картинкам, эти знания закладываются в базовое предположение (ветер производит деформации видимых объектов), но это тот случай, когда архивируемые данные уменьшаются за счёт увеличения кода архиватора
Мне кажется у автора странное понимание об интеллекте.
Можно сделать сетку (уже есть примеры), которая будет «понимать» текст или картинку. Т.е. проводить с заданным текстом/картинкой все те операции что может провести с ним человек. Сейчас ограничения в основном только в объёмах текста и отсутствии опыта из реальной жизни. Но полноценным интеллектом такая сетка никогда не станет, максимум некий механизм ввода «перекодирующий» внешнюю информацию в некое внутренние представление.
Для настоящего интеллекта в первую очередь нужны механизмы памяти короткой и длинной. И гугловцы уже что-то по этому поводу химичат, но подробностей не расскрывают, только общий смысл: Hybrid computing using a neural network with dynamic external memory
PDFничек, если кому интересно.
Для настоящего интеллекта в первую очередь нужны механизмы памяти короткой и длинной.

Именно. Но ни в одном из state-of-the-art алгоритмов Reinforcement Learning нет ни короткой, ни долговременной памяти (если не считать «запомненное» при обучении). Они вообще в принципе не приспособлены к Lifelong Learning, то есть постоянному дообучению в течении жизни. Это конечно хорошо, что хоть что-то удается сделать. Но существующая ситуация очень далека до настоящего обучения с подкреплением, которое существует в биологических системах.
Но ни в одном из state-of-the-art алгоритмов Reinforcement Learning нет ни короткой, ни долговременной памяти

А при чем тут вообще Reinforcement Learning? Reinforcement Learning — это по сути методология обучения. К архитектуре оно имеет очень опосредованное отношение…
Это в той сетке которую учат таким методом должна быть такая память.
ЗЫ: И нужна такая память кстати и сеткам которые обучают и обычными методами. Например для NMT неплохо бы хранить контекст всего документа который переводишь, а не одного предложения как сейчас.

Просто в обучении с подкреплением память (желательно быстрая, чтобы реагировала на единичные удачные случаи) это практически необходимое свойство. Ведь надо как-то запоминать моменты успеха. Но ее в существующем RL вообще нет. А все что есть — это аппроксимация нейросетью Q(s,a) или V(s), который в итоге приводится к тому же Q.


Нет, есть конечно попытки. Как например нейропластичность от Uber (ее тут можно рассматривать как аналог памяти).


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

Можно ли отнести обучение автономных автомобилей к Meta-Learning алгоритмам?
Если автомобиль одной нейросетью будет и видеть картинку с камер, и управлять рулем, то да. В машинном обучении есть такое понятие — домен, или характерное распределение примеров для конкретной задачи. Когда нейронная сеть преобразует данные, она переводит одно распределение (статистическое, вероятностное) в другое. А GAN, например, создают такое распределение с нуля и подгоняют его под текущую задачу. В сети есть картинки с примерами, как это происходит в динамике.

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

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

Логика статьи примерно такая — мы не можем сейчас полететь на Альфу Центавра, поэтому космонавтика не работает.

Особенно если для того, чтобы полететь на Альфу Центавру, мы копаем тоннель к центру Земли.


Но что удивительно, это работает! Ведь когда Альфа Центавра находится с противоположной стороны, мы действительно таким образом к ней приближаемся. Вот примерная аналогия тому что происходит в мире RL. И какими способами исследователи добиваются успеха.

За 10 лет метод эволюционировал от возможности балансировать палку в тележке (cart-pole) до игры в стратегию с непрерывными действиями на уровне чемпионов (youtube). А так, да, простые нейронки и предсказание валуе/полиси. Даже странно, что работает. :)
до игры в стратегию с непрерывными действиями на уровне чемпионов

На уровне хороших не игравших вместе игроков.
До чемпионов там примерно как до Альфы Центавра.

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


Это характерно для машинного обучения в целом и очевидно почему так. Градиентный спуск не сходится за пару-тройку итераций.
Да, конечно. Но это один из фундаментальных моментов, демонстрирующих идейный тупик ML в направлении достижения сильного ИИ. Прежде всего экономически: гонять симуляцию с огромным количеством повторов — это очень серьезные вычислительные ресурсы, даже для таких дичайше примитивных симуляций, как игрушки, или там, простейшая ньютоновская физика для задач «встать из произвольной позы».
А что вы тогда скажете про AlphaGo?

У компьютера есть неоспоримое преимущество над человеком, он может очень быстро посчитать. Мне кажется, было бы интересно, если человека для игры в шахматы вооружить программой для расчетов (тем же stockfish как-то дороботанным под подобную игру) сможет ли он тогда что-то противопоставить машине.

Ответ прост. пока явных примемений RL в бизнесе — нет. Т.е. заработать на нем деньги очень трудно. Сверточные сети пригодились гуглу, фб, да кому угодно у кого есть доступ к фотографиям, то же самое с LSTM, Signal Processing и так далее.
Ну предположим у тебя есть алгоритм который заставляет скелет подниматься с позиции лежа. И что? До роботостроения такого уровня в массовом производстве мы еще не дошли, ибо слишком дорого, у игр и без RL нормальный AI (ну как нормальный: на принципе сила есть — ума не надо), в трейдинге он тоже бесполезен.
Все на благотворительности работает: тот же Open AI. Покажите реальную бизнес возможность и инвестиции сразу поплывут миллионами, а там глядишь и муравьев начнут иммитировать.
Почему до роботостроения такого уровня не дошли? Бесколлекторные электромоторы дешевы и просты в конструкции, управляются электронно через ESC. Есть проблема в редукторах — там нужны огромные передаточные числа, с которым с высокой точностью справляются только волновые редукторы (применяемые массово в промышленных роботах). Но для бытового уровня и планетарных должно хватать.

По аккумуляторам — человек тратит примерно 100 Вт на тепло, 50-100 Вт при ходьбе, и около 250 Вт при беге. Нет особых причин, чтобы робот на моторах с кпд 95% должен тратить больше (а вот с редукторами хуже, хотя те же волновые до 99% бывают, т.к. являются разновидностью подшипника). 100-200 Вт/час это всего лишь 1 кг литиевых аккумуляторов. Не так уж много и не так уж дорого.

Все упирается именно в программную оболочку, а не в железо. И конкретно — в Reinforcement Learning.

Посудите сами: зрительная система, аналогичная человеческой — 50-150 млн параметров, глубина сети 20-1000 слоев. Языковая модель ~100 млн параметров, глубина — десятки слоев. Лучшие образцы Reinforcement Learning — 2 слоя по 128 нейронов. Серьезно? Самая большая сеть, обучение которой обошлось в десятки млн долларов — OpenAI Five — один слой LSTM в 1024 нейрона. Серьезно?
Дело не в алгоритмах, дело в железе (не буквально). Вся область RL сейчас — как обычный CNN в 80ых: концепт придумали, но реализовать не могли очевидно из за чего. Алгоритмы и методы сами по себе не плохи, маштаб не тот. И если прицепить оптимизированный квантовый комп с парой сотен кубитов, то можно за те же 2-3 дня натренеровать что угодно.
НО то же применимо и к Image Processing, Signal Processing: все они имеют огромный потенциал расти с расширением вычислительной мощи железа, но и сегодня на них можно хорошенько подзаработать (0.014$ за фотографию по ценникам Гугла). От того и инвестиции постоянные, новые алгоритмы, хайп и все такое.
А квантовыми компами сейчас кроме всяких университетов только IBM занимается ито чисто для маркетинга.
Тоесть либо на чем либо можно подзаработать *сейчас* — значит хайп, обсуждения, инвестиции, продвижение, либо «когда-нибудь», и всем будет плевать. Никто не покупал биткоины пока они за день не выросли в 3000%.
Ответ прост. пока явных примемений RL в бизнесе — нет.

Говорят гугл заимплементировал на RL сетку для управления своими ЦОД и сэкономил на этом чуть-ли не 60% на обслуживании…
Ну предположим. Всё равно средний РоИ других крупных проектов будет все равно намного выше, тоесть инвестиции плывут в другие русла. В случае гугла неоднозначно, ибо они занимаются чем попало, но на общем рынке применений RL все равно слишком мало, и это не следствие «недоработанных» методов и не таких уж и впечатлительных результатов, а именно причина. Но как я и сказал, методы — норм, железо не тянет.
Я сторонник того, что мозг использует Model-Based алгоритм. Его еще называют V-критик. В моей модели кора мозга — это пространство контекстов. Контексты способны из текущего описания получить трактовку. Когда контект — это действие, то трактовка становится описанием результата применения этого действия. Оценивая качество результата в каждом из контекстов можно выбрать поступок. Подробнее об этом https://www.youtube.com/watch?v=9jmOcbtyGxA&list=PLe0QmH-WDNYvkGGcKQwkV9v0bUQ5pnB58.

В ролике дано довольно правдоподобное объяснение, почему переход от предсказания 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 году, задолго до всплеска интереса к машинному обучению.

Существующие алгоритмы Reinforcement Learning, при всей их идейной правильности (предсказывать Q(s,a) или V(s) и рассчитывать на его основе A(s,a)), реализованы явно неправильно. Не соответствуют тому, что мы видим в работе живых систем. Нет обучения по единичным удачным случаям, нет нормальной памяти и ассоциативности.

Я считаю также. Нейронные сети с реализованной в них идеей адаптивного приближения к ответу — инструмент работающий, но не тот, что использует мозг. Я предлагаю архитектуру, основанную на генерации, адаптации и проверке гипотез. Она позволяет находить ответы много быстрее. Я описал ее реализацию через комбинаторное пространство (есть в лекциях).
Спасибо DesertFlow за интересный обзор, позволю себе изложить свой «взгляд со стороны» на эту задачу.
мозг это соединенные аксонами нейроны (со всей их биохимией) и ничего более.
Если мы пытаемся создать систему, похожую на человеческий мозг, можно отталкиваться от того, что мы знаем о его работе.
Человек, появившись на свет, не умеет ничего, кроме нескольких «прошитых» генетически рефлексов. В центральной нервной системе, грубо говоря, имеются чувствительные нейроны, на которые поступает информация с органов чувств, двигательные нейроны, которые управляют мышцами, несколько связей между первыми и вторыми, система поощрения-наказания и большая бесформенная серая масса нейронов. Именно упомянутая система обеспечивает обратную связь и позволяет создавать и разрывать связи между нейронами, которые недавно были активны.
Как сформировать условный рефлекс? Нужно последовательно возбудить два нейрона А и В и подать сигнал поощрения. Система подкрепления должна действовать избирательно, т.е. она должна знать, какие нейроны активировались недавно и в каком порядке, чтобы создать или увеличить вес синапса между ними. Также желательно, чтобы нейроны, не участвующие в данном акте обучения, не были затронуты. Т.е. большая часть нейронов в этот момент должна «молчать», как и в реальном мозге, где в каждый момент времени активны не более 5-10% нейронов.
Допустим, в искусственной НС выходной сигнал нейронов изменяется от 0 до 1. Подавляющее большинство из них находится в состоянии, близком к 0. Чтобы знать, какие нейроны были активны недавно, можно для каждого нейрона хранить сглаженное по времени значение его выхода. Также можно вести список последних активированных нейронов. Преимущество списка в том, что они расставлены в хронологическом порядке и понадобится меньше времени для их обработки. Если сигнал подкрепления больше нуля, то создаём (или усиливаем) связи между произвольными (или всеми?) парами нейронов в том порядке, в котором они идут в списке. Если сигнал отрицательный, то разрываем связи или переключаем их на случайные нейроны. А теперь самый интересный момент: если разрешить замыкание связей на узел подкрепления, то НС может научиться самостоятельно решать, что для неё хорошо, а что плохо.
От параметров узла подкрепления зависит, к какому поведению будет «стремиться» НС. Для того чтобы она на первых же тактах не стала «дофаминовым наркоманом», нужно пропустить его сигнал через фильтр верхних частот (high pass filter), чтобы состояния постоянного поощрения не длились слишком долго и действовало самоограничение. Для сетей чувствительного анализатора можно поддерживать слабо положительный «фон», чтобы сеть обладала свойством запоминать всё, что видит. Также можно поощрять НС за включение в работу новых нейронов, поддерживая тягу к получению новых знаний.
Обучение большой сети одним параметром — это процесс небыстрый, это не backpropagation, не спуск по градиенту, а случайное тыкание методом проб и ошибок в многомерном пространстве параметров. Как известно, в биологических системах нет обратного распространения ошибки, и продолжительность обучения человеческого мозга составляет не один десяток лет, но, по-видимому, только обучение с подкреплением при наличии достаточно большой массы нейронов может привести к формированию предметного, а в дальнейшем и абстрактного мышления.
Может сработать и такой вариант… Никто не знает, что надо делать. Кто же знал, что простая идея сверточного фильтра вдруг даст +15% прибавки в задаче, где последние годы бились за десятые доли процента (что породило сегодняшнюю волну глубокого обучения, приведшую к улучшению точности с ~30% до 95%). Надо пробовать и экспериментировать.

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

При этом короткая длина хэша, что логично, включает в себя множество похожих state. А чем длиннее хэш, тем точнее он указывает в каком месте и каком пикселе он был рассчитан.

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

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

Мы ведь тоже имеем как общие знания о часто встречаемых событиях, не помня откуда это взяли. А также помним уникальные длинные хэши на конкретные события. К примеру, говоря о втором законе Ньютона F=ma мы прекрасно помним, что узнали его из конкретного учебника по физике. А говоря о «силе» в этой формуле, мы скажем: ну, это что-то такое общее, толкать чего-нибудь. Но более грамотный человек, с лучшей памятью и лучшим образованием, вспомнит откуда он узнал это понятие, приведет его точное определение и т.д.

Повторюсь, сейчас не существует математического аппарата для построения подобных хэшей (и неизвестно как их сделать). Это просто рассуждения, как можно было бы сделать ассоциативную память, где пересекающиеся общие знания хранились бы в начальной короткой части хэша, а на конкретное событие в памяти (на кадр в видео, на момент времени в логах телеметрии) указывал бы полный хэш.
Вычисление хэша — это один из подходов к решению задачи понижения размерности входных данных. Другой подход — то, что делают нейронные сети. Разница между этими двумя способами состоит в том, что хэш — это двоичное число, набор битов, эта информация носит дискретный характер, и она удобнее для обработки существующими процессорами — достаточно выполнить xor и подсчёт единичных битов. Нейронные сети работают с большими векторами аналоговых данных, и эмуляция их на обычных цифровых ЭВМ требует много вычислительных затрат. Конечно, есть способы сэкономить вычислительные ресурсы, например понижая разрядность вычислений, вплоть до 1 бита (а что, неплохо — одной командой обработать сразу 32 или 64 входа нейрона), но наиболее эффективны были бы полностью аналоговые нейрочипы.
Я в курсе, что такое хэширование). Здесь оно интересно тем, что в короткий хэш попадает множество ситуаций. Просто по математике хэширования как такового, это сжатие с потерями. Это можно рассматривать как обобщение похожих ситуаций. Собственно, именно так и ищутся похожие картинки в интернете в том же гугле — уменьшается разрешение фото и строится перцептивный хэш от пикселей.

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

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

Поправочка: большинство алгоритмов хэширования наоборот сделаны там, что близкие значения имеют максимально отличающиеся хэши. Ну, сразу и было сказано, это просто красивая идея, которая не будет работать на практике. Хотя бы потому, что нейронные сети embeddings делают в многомерном пространстве, а простые хэши работают на одномерном.
Я полагаю, что сама идея снижения размерности — это несколько не то, что делает мозг. Если все, что у вас есть это вектор признаков, то естественное желание — найти главные компоненты или что-то похожее и перейти к описанию через них. Но неизбежно произойдет потеря существенной информации. Я полагаю, что мозг строит пространство контекстов, которое является достаточно подробным базисом разложения без попыток экономии. Но дальше используется не вектор описания, а короткое семантическое описание, сохраняющее суть исходного описания. Причем алгоритм его получения не зашит аппаратно, а сам является результатом обучения с подкреплением.
После постройки из входного вектора признаков пространства контекстов, Вы создаёте из него «короткое семантическое описание». Можете рассказать, что из себя представляет это описание?
То сжатие, о котором вы пишете, на данный момент реализовано через автоэнкодеры. Но мне неизвестны способы сделать хороший автоэнкодинг для последовательностей. Тем более чтобы было не абы какое сжатие, а такое, которое будет лучше всего подходить именно для RL.
По идее, если мы сможем хорошо сжимать пространства state и actions, то все наши QL и Model-Based начинают отлично работать. Но тогда нужен очень умный сжиматель
Повторюсь, сейчас не существует математического аппарата для построения подобных хэшей

А мне кажется что товарищи из tineye.com таки умеют что-то такое делать как минимум для изображений…
И для каждой пары, тройки и т.д. пикселей, а также для каждого изменившегося во времени пикселя строит перцептивный хэш.

сейчас не существует математического аппарата для построения подобных хэшей

Допустим, значения яркости пикселя будут кодироваться хешами/кодами. Причём, чем ближе друг к другу значения, тем больше совпадений в их кодах (похожесть с кодом Грея). Аналогично с пространственным положением, — близко расположенные пиксели имеют больше совпадений в кодах, чем с пикселями вдалике. При этом у всех кодов «яркости» (как и у кодов «положения») может быть некоторое количество общих бит, которые можно интерпретировать как тип кода: яркость или положение, или «бабушкин нейрон», если это код более высокоуровнего объекта. Даже ширее: каждый бит в кодах можно рассматривать как отдельный «бабушкин нейрон».

Далее, любое «что угодно» (объект, сущность и т.п.) есть код. При установлении связей между объектами, получаем опять же код. Т.е. связь между кодами — код.
К примеру, в коде яблока может быть связь с кодом красного цвета (спелое яблоко) и одновременно с кодом зеленого цвета (незрелое). И вообще, с понятием цвета.

Совпадения (типа, сила связи) между новым ассоциативным кодом и исходными кодами настраиваемые. Размер создаваемого кода тоже варьируем.

То есть, можно получить код белого пикселя в позиции 0,0. Или код синей вертикальной линии длиной в 16 пикселей по центру зрительного поля. Или тёплого с мягким.

Можно взять код этой линии и определить где она находится, какого цвета. Можно отбросить часть пространственного кода, потеряв в точности, но всё равно имея какое-то представление где находится линия: слева/справа/по центру.

Такой хеш ищут математики, или он должен обладать чем-то ещё?
Ну, математики такой хэш точно не ищут, потому что классическая задача для хэша — это получить уникальный идентификатор. Поэтому даже очень похожие объекты должны иметь различающиеся хэши.

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

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

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

Я рассматриваю перцептивный хэш, как способ сильно снизить энергопотребления мозга, до известных 10%. То есть, имея в активном состоянии группу в тысячу нейронов, перейти к группе в сто активных нейронов, сохранив по максимуму информацию о входном сигнале, представленном первой группой. Подобное быстрое угасание активности наблюдают на коре. В конце остаётся небольшая группа нейронов, которая удерживает активность. Полагаю, это и есть «конечный» хэш для того участка коры. Следующая вспышка входной активности даёт новый конечный хэш, который комбинируется/сливается с предыдущим, сохраняя общий контекст.

Это похоже на пирамиду, где на каждом уровне происходят «слияния» хэшей.
Генерация хэшей идёт только на самом нижнем уровне. Физически же никаких уровней не существует. Элементы/нейроны «собираются» в ансамбли, — группы, которые активируются совместно. Нейрон входит во множество ансамблей. Ансамбль это и есть хэш.

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

Что из этого вытекает:
Ритм мозговой активности может быть тактами «схлопывания» активности с одновременной синхронизацией формирования хешей.

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

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

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

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

Ассоциативные связи — это просто слияние нескольких хэшей.

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

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

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


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

Интересно, что эта слоистая структура с понижением размера слоя, если вышеописанное реально, — чисто виртуальная вещь. В микроскоп не увидеть, на «железном уровне» её нет, как нет программы в транзисторах процессора. Виртуальная иерархическая сеть в сплетениях дендритных деревьев.

А это не повторяет почти полностью алгоритм HTM от Numenta? Да и с выкладками AlexeyR про разреженные бинарные маски и их слияния/рекомбинации тоже перекликается, имхо.

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

У Редозубова прочёл весь цикл. Жаль что он оборвался на клиффхэнгере. Идеи не пересекаются, кроме использования разряженных бинарных векторов, но они много где сейчас используются.

Копать с другой стороны подтолкнула статья про гипер-куб: habr.com/post/419147. Я представил все нейроны гипер-кубом (один нейрон — одна размерность), тогда активные нейроны дают нам точку в нём. Первоначально она находится в энергетически невыгодной позиции. Задача для группы нейронов: выйти на позицию с более низкими энергозатратами. Для этого надо эту точку притянуть как можно ближе к началу координат.

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

И вот «как разбить точку» и «какие можно отбросить», «куда сдвинуть» — это то, чем занимается группа нейронов, в моём представлении. А на более высоком уровне это выглядит как обобщение.
Посмотрел. От микроколонки Вас там занесло далеко в высокие материи, а хотелось бы всё таки приземлённых знаний, как её «запрограммировать» на земных компьютерах.

Будет ли новый «сезон» видео-лекций?
Работаем)
Насколько я понимаю, в ходе RL обучается не вся нейросеть, включая светочную часть, а лишь относительно маленькая LSTM или feedforward сетка. Были ли успешные примеры RL, использующих в качестве прогнозной модели композицию решающих деревьев? XGBoost, например. Может, с каким-нибудь автоматическим feature-engeneering

Все пакеты для обучения с подкреплением включают в себя возможность использовать CNN сети, а значит явно пытались обучать сразу сверточную сеть. Но насколько я знаю, больших успехов добились именно на крохотных простых FeedForward сетках. На тех же Atari играх разрешение обычно снижают до 84х84 пикселя, с чем нормально справляются сети прямого распространения, в сверточных большой нужды нет. А сверточные иногда используют для преобразования картинки в короткий вектор признаков, который уже подается на FeedForward или LSTM, которые обучаются с помощью RL.


Про использование XGBoost мне неизвестно, но например в World Models (одна из первых сетей, активно использовавшая при обучении воображение — аналог наших снов) сверточная сеть преобразует картинку в вектор признаков, а сам контроллер (т.е. "мозг") обучался простым эволюционным алгоритмом CMA-ES.


В любом случае, использовать RL для короткого латентного вектора признаков — набирающая популярность тенденция в RL. Раз на больших размерностях оно не работает, хе-хе… Из новейших примеров это PlaNet от Google. Это Model-Based подход, но сетка учится не просто текущую картинку преобразовать в короткое латентное представление (вектор признаков, hidden state), а из него обратно в картинку для следующего шага. А еще учится из латентного вектора сразу предсказывать награду. И последующий выбор оптимальных действий делается чисто на основе латентных векторов, без прогнозирования картинок.


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


image


На высоких размерностях и длинных последовательностях действий такой подход не работает. Биологический мозг, как и Model-Free подходы, сразу предлагает оптимальные действия. А в PlaNet вся оптимизация заключается в том, что меньше расчетов.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории