Pull to refresh

AI своими руками. Вы готовы начать?

Reading time 9 min
Views 8.3K
Здравствуйте, друзья!
Поясняю сразу — статья носит практический характер. Но сначала аллегория.
Итак, вы когда-нибудь обращали внимание на грустную картину — погибших под колёсами автомобилей животных? Жаль зверюшек. За миллионы лет эволюции они прекрасно приспособились к окружающей среде, но вот времени на то, чтобы приспособиться к техносфере, им никто не выделил.
Однако не возникает ли у вас ощущения, что мы постепенно оказываемся в очень похожей ситуации? Мы изобрели кучу всяких технологий, но с появлением всё новых и новых контролировать их всё труднее. И уже не совсем понятно, то ли они работают на нас, то ли заставляют нас делать нечто, чего мы не планировали… Восторгаться или ужасаться? Счастья, вечной жизни и славы ожидать ли, или погибели?


Теперича — не то, что давеча.


То, что события развиваются с ускорением, подмечено давно. Спасибо Рэю нашему Курцвейлу за то, что упаковал это наблюдение в так наз. «Закон экспоненциального развития»:
image
Поначалу спешить было некуда — время от общества охотников-собирателей до сельскохозяйственного тянулось бесконечно долго, от него до возникновения первых государств уже быстрее, гораздо меньше его прошло до начала промышленной революции… Ну, остальное уже происходило (и происходит!) в течение жизни всего-то нескольких поколений людей…
Да, а что там после 2045? Ждать-то осталось всего ничего. Если затрудняетесь с ответом, Рэй вам с удовольствием расскажет, хотите — верьте, хотите — нет.
В любом случае, пожалуйста, не забывайте про несчастных зверюшек! Мы же не хотим повторить их судьбу, не правда ли?

Быстрые изменения, медленный мозг


Да, это он — пресловутый человеческий фактор. Чего-то не учли, или не предусмотрели, или просто не успели щёлкнуть тумблером. Или не смогли сделать достоверный вывод на основе уже имеющейся, критически важной, информации. Или ещё печальней — оказались неспособными оценить её реальное значение. В результате — падения самолётов, взрывы челленджеров, всемирный финансовый кризис, Чернобыль/Фукусима, 11.09.2001 и т.д. и т.п.
image
А ведь автомобили на той дороге, которую мы пересекаем со всей, доступной нам осмотрительностью, едут ещё не на самой высокой скорости. Взгляните на график ещё раз, пожалуйста.
Это как в программировании — у вас может быть достаточно времени для того, чтобы написать и протестировать программу, но после этого весь контроль за её работой ограничивается только тем, что вы в неё заложили — контролировать весь процесс выполнения вы не можете просто потому, что ваш мозг работает несколько медленней, чем выполняемый код, не правда ли?
Да, у нас есть мозг, и он способен на многое, но он медленный, очень медленный. Раньше нам было этого достаточно, но теперь, похоже, уже нет. Информации вокруг столько, что в большинстве случаев не может быть и речи о возможности принятия реально эффективного решения. У вас получается? Ну, тогда или вы гений, или не понимаете, о чём я. Лично у меня постоянно возникает ощущение, что мои решения носят случайный, несистемный характер. Да, возможно они эффективны, но эффективны не вообще, а только в контексте жёстко ограниченных доступных мне в текущий момент информационных и временных (последнее особенно) ресурсов.
image
И как будто мало того, что он (мозг) медленный, так он ещё и не безразмерный! Учишь, учишь всю жизнь, и всё равно не можешь выучить даже минимум того, что необходимо. А если вдруг и забрезжит свет в конце туннеля — получите-распишитесь — опять чего-нибудь такого придумают, что без этого ну никак нельзя…
И где, скажите на милость, найти для всего этого время?!
А как бы здорово было, если бы можно было просто впихнуть туда какой-нибудь блок с необходимыми сведениями и получить сразу всё здесь и сейчас, не тратя годы на изучение данной предметной области!
image
image

Хорошие новости


Технологический святой Грааль может оказаться гораздо ближе, чем вы думаете. Вполне вероятно, что дорога туда, где он ожидает вас (как и всё человечество) начинается рядом, буквально в паре кликов отсюда.
Да, я, конечно, же, о великом-и-ужасном AI, которые все ждут-не-дождутся.
image
Между тем, прототип неокортекса уже есть. Пока что — около 60 тыс. нейронов. Человеческий мозг содержит, по различным оценкам, от 10 до 100 млрд. Ну и где-то около полутриллиона синаптических связей. Но самое главное, это работает именно по тому принципу, что и серое вещество внутри вашей черепной коробки.
Конечно же, всё только началось, однако первый реальный шаг уже сделан.

Кто на переднем крае?


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

Я не буду здесь долго рассказывать в деталях об используемом подходе, об этом много писалось, в том числе, и здесь. Базовый алгоритм опубликован, документ (в том числе, и на русском языке) доступен здесь: CLA White Paper. (CLA — Cortical Learning Algorithm). Если вы слышите о компании впервые, то начать знакомство лучше всего с книги Дж. Хокинса «Об интеллекте» (есть русский перевод, без проблем сможете найти в сети). В любом случае, это — невероятно интересная книга, результат 25-летних исследований автором принципов, по которым работает наш с вами :) мозг.
image
В качестве instant-альтернативы — выступление Хокинза на TED talks (с титрами на русском, ок. 20 мин.).
Долгое время процесс шёл ни шатко, ни валко, однако некоторое время назад ситуация изменилась. Сейчас компания выпустила свой первый коммерческий продукт, Grok, на основе своей платформы NuPIC. Однако самое интересное это то, что теперь их разработка носит статус Open Source и любой желающий может как загрузить проект со всеми исходными кодами, так и непосредственно участвовать в нём. Github: https://github.com/numenta/nupic/wiki.
Принцип работы системы описан здесь: https://github.com/numenta/nupic/wiki/Online-Prediction-Framework.
Проект написан на Python, развёртывается на Linux, однако если у вас только Windows, возможно сделать это после установки Virtual Box.
Теперь непосредственно об условиях. Во-первых, для того, чтобы стать участником проекта, необходимо согласиться с так наз. «Лицензией контрибьютора» (CL).
Во-вторых, участник проекта может иметь 4 статуса (назначаемых в иерархической последовательности).
Далее — мой собственный перевод с англ. (оригинал здесь: https://github.com/numenta/nupic/wiki/Contributor-Model):
Статусы участников проекта:

1. Users
Юзер — член сообщества, заинтересованный в участии в проекте. Юзером может быть любой человек, для этого нет каких-либо специальных требований. Обычный вклад юзера может включать популяризацию проекта, информирование разработчиков о сильных и слабых сторонах продукта и/или их моральную поддержку :)
Юзеры, продолжающие сотрудничество с другими членами проекта в течение какого-то времени, часто становятся более вовлечёнными в его жизнедеятельность и могут стать контрибьюторами, как описано в следующем разделе.
2. Contributors
Контрибьюторы — члены сообщества, вносящие конкретный вклад в развитие проекта тем или иным способом, наиболее часто — как создатели кода и/или документации. Любой может стать контрибьютором, и его вклад может быть выражен во множестве форм. У нас нет каких-либо конкретных ожиданий по поводу того, каким именно будет ваш вклад в проект, и мы не требуем от вас каких-либо конкретных навыков и не предъявляем к вам критериев отбора.
Контрибьюторы участвуют в проекте, используя наш трекер и мэйл-лист. Они отправляют собственные изменения через pull requests, которые рассматриваются на предмет включения в рабочую версию текущими коммитерами (см. следующий раздел). Мэйл-лист или #nupic IRC канал на Freenode — наиболее подходящие места для получения помощи при подготовке к началу собственного вклада в проект.
Все контрибьютеры должны подписать соответствующую лицензию участника проекта. Это необходимо постольку, поскольку данная лицензия подтверждает, что каждый, кто делает вклад в развитие проекта, является либо автором кода, либо тем, кто может представлять его интересы и говорить от его имени. Это защищает интересы исследователей, использующих платформу NuPIC в своих целях.
По мере того, как контрибьютор приобретает опыт и углубляет собственное понимание проекта, его вес внутри сообщества и ценность для него будет увеличиваться. С течением времени они могут быть номинированы на получение следующего статуса кем-либо из текущих коммитеров.
3. Committers
Коммитеры — это члены сообщества, внёсшие значительный вклад в проект как разработчики и имеющие достаточный опыт сотрудничества с другими членами сообщества. Они имеют возможность размещать свой код (push) в репозитории проекта и должны соответствовать стандартам разработчика.
Если деятельность коммитера показывает его ценность для сообщества и его приверженность целям проекта, он может быть рассмотрен в качестве потенциального рецензента (см. следующий раздел).
Чтобы стать коммитером, необходимы желание и способность участвовать в проекте в качестве члена команды. Как правило, потенциальный коммитер должен демонстрировать реальное понимание проекта, его целей и стратегии. Также он должен внести существенный вклад в проект в течение определённого времени.
Член проекта может быть представлен к статусу коммитера любым из текущих коммитеров. С момента номинации начинается голосование по его кандидатуре среди ревьюверов (см. следующий раздел). Данное голосование является одной из немногих процедур, носящих закрытый характер. Каждый голос «за» обновляет их суммарное значение для данного претендента в опубликованном NuPIC мэйл-листе. Номинант имеет право затребовать разъяснение по любому голосу «против», независимо от общего результата голосования. Ответ должен быть предоставлен ревьюверами (см. ниже) и является анонимным и конструктивным по существу.
Важно осознавать, что статус коммитера — это привилегия, а не право, которая должна быть заслужена, но может быть отменена ревьюверами (см. следующий раздел) в чрезвычайных обстоятельствах. Однако, как правило, она остаётся за участником проекта в течение всего времени, когда он принимает в нём участие.
Коммитер, демонстрирующий высокий уровень вклада в развитие проекта, особенно — в стратегическом направлении, может быть номинирован на получение статуса ревьювера, описанного ниже.
4. Ревьюверы
Ревьюверы — это лица, определяемые как «администраторы проекта», (размещённого на GitHub). На них распространяется дополнительная ответственность, уровень которой выше, чем у коммитеров. Это подразумевает контроль за бесперебойной работой проекта. От ревьюверов требуется анализ кода, создаваемого контрибьюторами, подтверждение изменений в текущем документе и контроль прав интеллектуальной собственности внутри проекта.
Вклад любого ревьювера может быть исследован другими ревьюверами, но это не является необходимым условием. Ревьюверы не имеют существенных властных полномочий над другими членами сообщества, хотя именно их голоса определяют возможность назначения участникам статуса комиттера. Также за ними остаётся право принятия окончательного решения внутри сообщества по какому-либо из вопросов, если общий консенсус не достигнут. Кроме того, ревьюверы имеют доступ к закрытому мэйл-листу и его архиву. Данный лист предназначен для важных сообщений, таких, как голоса за/против кандидата в коммитеры и рассмотрение правовых вопросов, не обсуждаемых публично. Этот лист никогда не используется для управления проектом, планирования или технических дискуссий.
Коммитер приглашается к получению статуса ревьювера другим, существующим, ревьювером. Результат номинации определяется дискуссией и голосованием среди ревьюверов.



Как я уже заметил, в последнее время деятельность компании активизировалась, практически каждую неделю они публикуют новые материалы на своём канале YouTube, и не только они — некоторые разработчики размещают собственные материалы. Также есть контент, посвящённый непосредственно платформе NuPIC и текущему продукту Grok.
Очень рекомендую посмотреть видео непосредственно с выступлениями Дж. Хокинса — это даст вам наглядное представление о подходе компании и решению этой мегазадачи и видении/оценке автором концепции перспектив создания разумных машин. Собственная медиа-подборка Nument'ы здесь: http://numenta.org/media.html.


UPD


Поскольку читатели сомневаются в «практичности» поста и требуют примеров, пояснение по поводу области применения и пример.
Область применения любая, где нельзя описать предстоящее развитие событий жёстко детерминированным алгоритмом.
Система сама создаёт некую модель и строит на её основе предсказания. Для того, чтобы она смогла начать это делать, она должна сначала «обучиться», т.е., получить набор входных данных и создать на основе их ряд паттернов.
Давайте рассмотрим «практический» пример. Вы решили создать сервис, который позволит людям выяснить, — что это за песня, которую они где-то слышали, но не знают названия? Т.е., имеется мелодия, и больше ничего, даже слов.
И вот этот человек заходит на Google и гуглит там эту мелодию. Т.е., просто напевает в микрофон, что может, а система пытается определить, какой РЕАЛЬНОЙ мелодии соответствуют эти потуги. Как вы понимаете, большинство людей фальшивят, т.е., невозможно, скорее всего, в данном случае создать какой-то алгоритм, который может определить песню по фальшиво спетой мелодии.
Однако наша система «прошла курс обучения» (предположим, прослушала 100000 мелодий). Благодаря этому она, услышав некую последовательность из нот может:
1. Выяснить, какая последовательность каким мелодиям точно соответствует.
2. Делать предположения по поводу того, каким мелодиям могут соответствовать фальшивые ноты
3. Выбирать «лучших» кандидатов из этих мелодий
Или, предельно упрощая картину и приводя аналогию — была раньше такая передача — «угадай мелодию» (не знаю, может быть, и сейчас есть, просто телек не смотрю давно).
И вот представьте, что тот, кто угадывает — это и есть система.
Как бы вы угадывали мелодию? Правильно, пытаетесь вспомнить, на какую из ранее слышанных (т.е., сохранившихся в вашей памяти) похоже то, что вы только что услышали. Далее вы создаёте несколько моделей — а что за ноты там могут быть далее? Если то, что вы слышали до этого, в точности совпадает ТОЛЬКО С ОДНОЙ из мелодий в вашей памяти, то модель у вас будет только одна, если больше — то столько, сколько у вас есть мелодий, которым предыдущая последовательность соответствует. И с каждой новой нотой количество этих моделей будет уменьшаться, пока не останется одна.
В общем, таков принцип работы HTM (Hierarhical Temporal Memory).
Tags:
Hubs:
-10
Comments 17
Comments Comments 17

Articles