Часть 1,
часть 2.
Этот пост оказался каким-то очень уж сложным, я пытаюсь дописать его битых три недели. Переписываю-дописываю-стираю-пишу. Выходит не так доходчиво и не так убедительно, как хотелось бы, но сколько уже можно, в самом деле.
В итоге я собираюсь сформулировать примерно такой набор утверждений:
1) компьютеры плохо умеют Икс
2) а вот люди хорошо умеют Икс
3) мы можем показать, что 1 и 2 верно, с помощью некоторой формализуемой процедуры
4) методы, которые позволят компьютерам Икс, очень сильно приблизят нас к Strong AI
5) в последние годы эти методы примерно просматриваются
Беда в том, что отважные «домашние философы»* способны решительнейше формулировать аналогичные утверждения для самых разных Икс. Особенно если некритически принимать, что пункты 4-5 мы как-нибудь, пока не очень понятно как, но вот кстати интересные абсолютно нерелевантные ссылки (ссылка), ролики (ссылка), новости (ссылка) и статьи (pdf), так что уж сделаем. Ну, за двадцать лет-то точно.
Я очень боюсь тупых комментариев за авторством умных людей, из которых станет очевидно, что теперь придется либо написать в десять раз больше букв, чтобы кому-нибудь что-нибудь объяснить, либо махнуть рукой, завернуться в теплый клетчатый плед и грустить о несовершенстве мира. После того, как в комментариях появится парочка подобных иксов, их можно будет смело отключать, или обсуждать футбол и баб, итоговая продуктивность будет той же.
Ладно, волков бояться - в лес не ходить.
Чтобы окончательно не уподобиться Шахерезаде, этот пост (длинный) именно о том, чем является Икс. А уж когда-нибудь потом, если придется, буду объяснять, почему Икс - не «здравый смысл», не «адаптивность», не«умение предсказывать развитие событий в будущем», не «умение не только решать задачи, но и ставить собственные», не «умение решать не до конца сформулированные задачи», не «general knowledge representation» и т.д. и т.п., тысячи их. Если руки дойдут, конечно.
Прежде чем читать дальше, посмотрите, пожалуйста, на такую картинку.
// здесь 10 лет назад был неумелый детский рисунок, изображающий сцену из мультика "Котёнок Гав", с тех пор хостинг протух
Что на ней изображено? Выберите один из четырех вариантов.
А) Винни-Пух летит на воздушном шаре
Б) Щенок гонится за котёнком
В) Подчеркнутый волнистой чертой знак процента, кружочки в котором красные, взят в желтые скобки
Г) Черный властелин порабощает мир при помощи своего волшебного жезла
Уверен, что помощь зала вам не потребовалась, и, более того, субъективные вероятности вариантов для вас соотносятся не как (0.04, 0.6, 0.3, 0.06), а как (0, 1, 0, 0).
Вот, собственно, это и есть ответ. Это то, чем вы отличаетесь от компьютера.
Здесь по задумке разработчики поиска по картинкам должны подумать, что они на самом-самом острие прогресса.
Ладно, разработчики поиска по картинкам занимаются чем-то другим. Наверное, чем-то не менее интересным, но не этим, поскольку принято считать (наверное, справедливо), что такая задача нам пока не по зубам.
Whatever. Какими замечательными свойствами обладает игра «выбери подходящее описание для картинки из нескольких заданных»?
1. Люди эту задачу решать умеют. Более того, любая штука, которую мы согласны будем назвать Strong AI, должна будет уметь её решать.
2. Компьютеры (в их современном состоянии) решать её не умеют.
3. Мы легко можем составить набор тестовых заданий, позволяющий проверить, насколько хорошо тот или иной субъект (или компьютерная программа) с этой задачей справляется; при некоторой изощренности мы можем тестировать таким способом даже высших животных (если подобные тесты действительно кем-то проводились, я был бы крайне признателен за ссылку)
Наша программа-максимум на сегодня - показать, что эта задача обладает ещё двумя ценными свойствами:
4. Методы, которые позволят компьютерам решать эту задачу, очень сильно приблизят нас к Strong AI
5. В последние годы эти методы примерно просматриваются
Начнем с п.4. Чтобы справляться с такой задачей, для начала нужно уметь искать «похожие» картинки на самом базовом уровне, условно назовем его «пиксельным»**. Если я увижу на картинке Мону Лизу, я, скорее всего, уверенно опознаю её. Это для меня будет не «просто картина», а конкретный зрительный образ, который я когда-то несколько раз видел и запечатлел у себя в памяти. Я смогу узнать её в разных вариантах освещения, в разных размерах - от рекламного плаката на пол-здания до юзерпика. Я смогу опознать её с точностью до применения некоторых (более-менее разумных) аффинных и проективных преобразований. Я также узнаю её, если она будет изображена чёрно-белой, в стиле Симпсонов или при помощи тёплых ламповых восьмибитных пикселей. Уже и это задача, которую умеет решать, мягко говоря, далеко не каждый поисковик.
Более-менее верится, что она техническая, и что <подставьте здесь название любимой техники машинного обучения> с ней справится - пусть не сейчас, но в обозримом будущем точно.
Следующий уровень. Вот у нас, кажется, кровать, на ней одеяло, и некий пухлый квадратный предмет. Что это? «Пиксельный» метод уверенно говорит нам о том, что предмет - пельмень.
Ну да, с вероятностью 40%. А с вероятностью ещё 25% это подушка. А с вероятностью ещё 15% это карамелька с вареньем***. И т.д и т.п.
Или даже не «с вероятностью», а просто «ближайшие соседи» у нас вот такие для этой части картинки. Ок, поскольку мы речь ведем о кровати, значит, это подушка****. Значит, вот этот заяц - игрушечный, плюшевый. И т.д. и т.п.
Задача распознавания решается одновременно на нескольких уровнях. Для каждой части ищутся и «попиксельные» ближайшие соседи, и возможные сложносоставные представления, и всё это утрясается. Нужен учет контекста, мгновенная оценка «правдоподобия» любого варианта разбора, способность решать, какое описание эффективнее - «попиксельное» с такими-то ошибками, или составное, или какая-то их смесь («Мона Лиза, которой хулиган подрисовал усы»). Нужно, наконец, нигде не свалиться в решение NP-полных задач. Назовем это, например, задачей универсального парсинга.
Хорошо, давайте уговорим себя, что концептуально нам примерно всё понятно, делать только сложно, а так понятно. Давайте теперь, что ли, посчитаем, сколько операций нам на распознавание одной картинки нужно. Ну-с, предположим, мы хотим разбить её на какие-то области... Ох, и несколькими способами - вдруг ошибемся? Каждую область сравнить с 10К (очень грубая нижняя оценка) базовых образов... Вычислить все сигнатуры... Получается... что у нас там получается...
Короче, я думаю, программистам уже всё ясно. Тупым перебором никак не обойтись. Нужен инвертированный индекс (хоть в каком-то виде) и быстрый поиск «ближайших соседей» в нём по всяким разным метрикам близости, и для всех частей изображения одновременно. Вообще, нужна массивная параллельность всего этого процесса. Нужна провязка всех используемых структур с теми методами, которые нами задуманы в задаче визуального парсинга.
Назовём это, например, задачей ассоциативной памяти.
Так, почти перешли к пункту 5, о том, как всё это будем делать, и что придумано за последние годы. Осталось сделать маленький шаг - заметить, что мы давно говорим не о распознавании изображений.
Задача на самом-то деле никогда не решена «окончательно». Картинка выше может быть пересказана словами как «щенок гонится за котёнком». Но можно заметить также, что это детский рисунок. Что выполнен он, с высокой вероятностью, на компьютере, при помощи программы mspaint.exe. Что художник вдохновлялся буддийскими орнаментами, а также ранним кубизмом. Ещё что-нибудь заметить можно.
Теперь, предположим, что это иллюстрация к книге ужасов. Через сто пятьдесят страниц после её первого появления читатель понимает, что котёнок-то котёнком, а вот гонится за ним вовсе не щенок. А куда более зловещее создание. И вообще нарисовано тут совсем не то, что нам показалось в начале.
Как известно тм, на
этой картинке маленький ребенок видит дельфинов, а вовсе не ту картинку, которая видится нам. Её он распарсить ещё не способен*****.
Весь наш сенсорный поток, и все наши, гм, гештальты постоянно обрабатываются универсальным парсером, и порождают непрерывный поток «запросов» к ассоциативной памяти. Настолько непрерывные, что, вполне возможно, вообще непродуктивно думать о них как о дискретных «запросах».
Одна из самых интересных задач, похоже, решаемых таким способом - задача понимания естественных языков, и задача изучения их маленькими детьми. Это крайне сложная тема, на её изучение потрачены какие-то несусветные ресурсы, и до сих пор не больно-то что понятно. Ясно, что это не "статистическая" постановка, ребенок учит язык с такой скоростью, что у него нет ни времени, ни данных для того, чтобы искать какие-то корреляции между словами и предметами/ситуациями реального мира, кроме самых простейших и базовых. О грамматических правилах я уж и вовсе молчу.
Несложный эксперимент показывает, что что наш мозг обладает вот какой полезной юбертостью: он умеет восстанавливаить укмак впервые встреченного слова по одному-единственному его элэрку. Более того, он умеет проделывать аналогичную операцию даже над целыми синграммас допле э грандиа. Правда, круто? Современный machine learning, являющийся, по сути, статистикой 2.0, так не умеет. Не потому, что подобная операция так уж суперсложна и непонятно, как её реализовать, а вот просто ну не про то он, не распространено широко понимание того, что уметь решать такие задачи важно, и с практическими применениями у них не очень.
Возвращаясь к первой теме фуги:
механический глаз Терминатора мы распознаем как глаз при помощи того же механизма, по единственному контексту. "Попиксельно" он на глаз не очень-то похож - ну, кружочек, но мало ли вокруг кружочков, даже на той же картинке.
В последнее время всё больше свидетельств тому, что подобный «парсер» и связанные с ним когнитивные структуры являются универсальными, то есть могут применяться - и применяются - не только в задаче понимания речи, но в качестве основы мышления вообще. Кажется, я не встречал предыдущего утверждения в явном виде где-либо, кроме своего блога, поэтому будем считать, что копирайт выглядит так: (с) plakhov. Но на всякий случай вот вам
недавний обзор, в котором (среди прочих) освещается примерно такая точка зрения.
Мы думаем словами не потому, что это вредная привычка, как полагают некоторые религии, а просто потому, что большая часть объектов в индексе ассоциативной памяти - слова и конструкции из слов. Я вот, например, кроме слов часто думаю кодом или формулами. Индеец-охотник умеет думать следами и запахами (указателями на соответствующие объекты реального мира, если точнее). Многие женщины (а может, и мужчины тоже, не знаю) одарены осязательным и проприоцептивным мышлением****. Все мы в процессе размышлений что-нибудь рисуем в «мысленном блокноте» (а иногда на бумаге), и т.д. и т.п.
Первый результат, который я склонен отнести к п.5, вот какой: в попытках понять, как происходит natural language acquisition, совсем недавно (два-три года назад, по научным меркам, считайте, вчера) некто Александр Кларк, которого я тут уже вовсю рекламировал, построил нечто, что можно считать более-менее законченной моделью такого универсального парсера. Модель пока что, скажем прямо, громоздкая и неюзабельная, вычислительно неадекватная и сомнительно обобщающаяся, но - но тем не менее, это оно, да. Я не уверен, что сам Кларк понимает, что его модель применима не только к изучению языков. Если вдруг нет, то передайте ему привет и пожелания дальнейших творческих успехов (насколько помню, кто-то из его не то коллег, не то учеников меня читает).
Второй набор идей постарше (лет десять-пятнадцать), сейчас уже вовсю используется на практике, и говорит нам о том, как можно было бы организовать ассоциативную память. Называется он locality-sensitive hashing, и представляет собой прекрасный пример того, как довольно простая и крайне эффективная идея изобретается очень поздно, и потом долго и трудно завоевывает себе место в индустрии. Пытаться излагать суть в двух словах не стану, извините.
Пока что я не видел ни одной работы, в которой LSH и распознавание грамматик пытались бы подружить и применить к чему-то более интересному, нежели линейная строка символов.
Ничего, скоро дождемся.
---
*А также кандидаты технических наук по выслуге лет. И «исследователи» из Института Сингулярности. Но их комментариев я боюсь меньше, они меня не читают.
**На самом деле даже на этом уровне нас интересуют ближайшие соседи не в смысле какого-нибудь попиксельного среднеквадратичного отклонение, а что-то более хитрое, но это ладно
***Ну чего я о еде всё время? Такой голодный, что ли?
****Так, и не только голодный, похоже.
*****Возможно, это городская легенда; whatever, мысль, надеюсь, ясна.