Как нам построить strong AI
Apr. 1st, 2010 05:53 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Ну что, развлеклись? Теперь за работу.
До начала этого года я был уверен, что человеческий интеллект с точки зрения теории вычислительной сложности является какой-то неразрешимой загадкой. Люди практически непрерывно решают задачи построения когнитивных моделей по большому набору входов большой размерности, что выглядит подозрительно похожим на решение NP-полных задач. Я даже было думал, что все эти тысячи теоретиков что-то проглядели, и пытался, опираясь на работы Leslie Valiant'а, решить Monotone Parity-P за полином малой размерности. Какие-то интересные штуки я даже придумал, но все это получилось не особенно практично. Похоже, на халяву решать произвольные NP-полные задачи таки невозможно, и лет через 30 алгебраические геометры нам расскажут, почему.
Но это неважно. Совершенно неожиданно для себя я узнал, что британские ученые изобрели очередной мощный шаг в построении strong AI, и теперь хотя бы понятно, куда копать.
Для начала определимся с целями.
"Слабый" AI - это общее название для набора технологий (как уже существующих, так и находящихся в разработке), имитирующих те или иные аспекты умственной деятельности человека. Это размытая область, она различным пересекается с machine learning, статистикой, теорией оптимального управления, робототехникой, статистической лингвистикой, и т.д и т.п. Современные поисковики - самый типичный пример технологий этого класса.
Strong AI - это светлая мечта фантастов, машина, проходящая тест Тьюринга, и могущая заменить или превзойти человека в любом роде деятельностикроме порнофильмов.
Переход сразу от первого ко второму выглядит подозрительно и похож на чудо. Должен быть правдоподобный промежуточный этап.
Таким этапом предлагается считать появление вычислительно приемлемых алгоритмов unsupervised learning, единообразно и в режиме реального времени решающих следующие задачи:
- парсинг естественного языка
- распознавание объектов на изображениях и видео
- распознавание речи
- установление структурированных ассоциативных связей в "сенситивной каше", состоящей из всего вышеперечисленного
Этого недостаточно, чтобы клепать автоматических Платонов, Невтонов и прочих Перельманов, но вполне достаточно для того, чтобы сделать типичного "тупого робота" из классической фантастики, которому можно доверить водить автомобили, поезда и танки, который сможет полностью заменить людей на производстве (за исключением инженеров-технологов), а также собирать урожай, доить корови встречаться со стиральной машиной. Назовем это, скажем, medium AI.
Но создание алгоритмов подобного класса - это все равно звучит фантастически, правда? А вот неправда. Оказывается, всё (хорошо, почти всё) уже придумано без нас, остается это свести воедино.
1) Были концептуальные трудности, связанные с тем, что не существует "единственно верного способа" ни поделить единый сенсорный поток на разные "объекты", ни понять, что перед нами один и тот же объект. Схожие проблемы неединственности и нечеткости возникают и с понятиями "синонимов", с таксономиями, и т.д. и т.п. Судя по всему, они благополучно разрешены при помощи структуры, называющейся lattice-ordered monoid of concepts (далее LOMoC). В работах А. Кларка (не Артура, а Александра, прошу заметить) эти идеи развиваются для парсинга естественных языков. К сожалению, в его статьях описывается странноватая модель обучения, в которой нужен учитель, ученик может выполнять вычислительно крайне громоздкие операции (что-то типа O(n7), где n - количество известных ему примеров фраз языка), да и объем коммуникаций "учителя" с "учеником" тоже нездорово большой. Тем не менее, уже сейчас это на вид сильно лучше и иерархии Хомского, и подавляющего большинства других языковых моделей. Читать можно начинать с Cla10 (pdf)
LOMoC серьезно использует тот факт, что мы работаем именно со строками, т.е. "топология" входа линейна, а не 0-мерна (вход - множество или мультимножество), не двумерна (изображение), и тем более не является экзотической (скажем, когда вход - совокупность последовательных двумерных изображений, которые иногда аннотированы строками или множествами тэгов).
Но аналогичные структуры можно по аналогии построить и для других топологий, заменив операцию свертки строки и контекста соответствующей операцией конкатенации связного подмножества входа и его локального контекста. Вот только степени полиномов станут совсем кошмарными. Тем не менее, давайте пофантазируем (пока что) и представим себе, что это сделано. Какую генеративную модель "естественных изображений" смогла бы "понять" такая система? (здесь и далее, чтобы понять, откуда я взял дальнейшее, вам придется прочитать Кларка и, главное, понять его; а если так, то с вероятностью по меньшей мере 25% вы сидите слева от меня за соседним компьютером)
Неплохую. Например, с одной стороны, она поймет, что бывают "глаза", "рты" и "уши", поймет, что "лицо" - это правильно расположенная совокупность оных, поймет на произвольном изображении "лица", где там что (не зная, как что называется, а просто выделив соответствующие концепты). В то же время она будет знать, что Мона Лиза - это не только "лицо", но и "картина" (в смысле принадлежности к соответствующему concept class), а также что это та же самая картина, что и на входе номер 1358 (в смысле принадлежности к еще более узкому концепту). По картинке разным, частично пересекающимся или включающим друг друга ее подмножествам она сопоставит разные концепты. Сможет, например, парсить детские рисунки, правильно понимая, на какой объект реального мира это похоже, или отличать фото человека от фото портрета этого человека, висящего на стене.
2) Ну а как же нам свести размерность полинома к необходимой нам для поточных realtime алгоритмов сложности expected O(n1+epsilon), и заодно избавиться от необходимости в явном "учителе"? Для этого нам придется вспомнить, что есть такая чудесная штука, как locality sensitive hashes. В web search с их помощью, в частности, ищут плотные двудольные подграфы в ориентированных графах "кто на кого ссылается", и таким образом вычисляют спам. Это уже успешно решенная задача, и решается она за О(числа вершин). Посмотри теперь на другой граф, а именно вот какой. Он двудольный, в нем вершины - это контексты и подмножества входов, а ребра отвечают на вопрос "какие подвходы встретились в каких контекстах". Что такое плотный двудольный подграф в нем? Ой, да это же и есть "концепт" Кларка!
А все это значит, что нам не нужно строить этот граф в явном виде! Мы можем, выбрав правильный набор хэшей, обрабатывать входы потоком, создавая "концепты" на лету. Кроме того, мы приобретем за счет рандомизированности дополнительную устойчивость к редким случайным ошибкам, например, встречающимся нам "неграмматичным" фразам или изображениям и тп., и избавимся от необходимости в учителе.
Вот в общем-то и все. Пора писать medium AI.
Сейчас я активно мониторю новые статьи про locality sensitive hashing (см. вчерашнюю запись в этом же журнале), и занимаюсь на работе чем-то максимально близким, что нашлось - semi-supervised извлечением и классификацией объектов из пользовательских запросов по их контекстам. Естественно, я пользуюсь при этом гораздо более "прикладными" методами, но, тем не менее, эта вся идея работает, черт возьми, я это вижу глазами.
Тем не менее, парсить естественные языки, кажется, для первого этапа сложновато. Начать нужно, скажем, с распознавания изображений общего назначения по этой схеме. По изображению искать "смысловые" near duplicates для его частей в имеющейся базе. Не знаю, буду ли я этим заниматься, но это неважно. Не я так кто-нибудь еще, не к 2017, так к 2025-му.
До начала этого года я был уверен, что человеческий интеллект с точки зрения теории вычислительной сложности является какой-то неразрешимой загадкой. Люди практически непрерывно решают задачи построения когнитивных моделей по большому набору входов большой размерности, что выглядит подозрительно похожим на решение NP-полных задач. Я даже было думал, что все эти тысячи теоретиков что-то проглядели, и пытался, опираясь на работы Leslie Valiant'а, решить Monotone Parity-P за полином малой размерности. Какие-то интересные штуки я даже придумал, но все это получилось не особенно практично. Похоже, на халяву решать произвольные NP-полные задачи таки невозможно, и лет через 30 алгебраические геометры нам расскажут, почему.
Но это неважно. Совершенно неожиданно для себя я узнал, что британские ученые изобрели очередной мощный шаг в построении strong AI, и теперь хотя бы понятно, куда копать.
Для начала определимся с целями.
"Слабый" AI - это общее название для набора технологий (как уже существующих, так и находящихся в разработке), имитирующих те или иные аспекты умственной деятельности человека. Это размытая область, она различным пересекается с machine learning, статистикой, теорией оптимального управления, робототехникой, статистической лингвистикой, и т.д и т.п. Современные поисковики - самый типичный пример технологий этого класса.
Strong AI - это светлая мечта фантастов, машина, проходящая тест Тьюринга, и могущая заменить или превзойти человека в любом роде деятельности
Переход сразу от первого ко второму выглядит подозрительно и похож на чудо. Должен быть правдоподобный промежуточный этап.
Таким этапом предлагается считать появление вычислительно приемлемых алгоритмов unsupervised learning, единообразно и в режиме реального времени решающих следующие задачи:
- парсинг естественного языка
- распознавание объектов на изображениях и видео
- распознавание речи
- установление структурированных ассоциативных связей в "сенситивной каше", состоящей из всего вышеперечисленного
Этого недостаточно, чтобы клепать автоматических Платонов, Невтонов и прочих Перельманов, но вполне достаточно для того, чтобы сделать типичного "тупого робота" из классической фантастики, которому можно доверить водить автомобили, поезда и танки, который сможет полностью заменить людей на производстве (за исключением инженеров-технологов), а также собирать урожай, доить коров
Но создание алгоритмов подобного класса - это все равно звучит фантастически, правда? А вот неправда. Оказывается, всё (хорошо, почти всё) уже придумано без нас, остается это свести воедино.
1) Были концептуальные трудности, связанные с тем, что не существует "единственно верного способа" ни поделить единый сенсорный поток на разные "объекты", ни понять, что перед нами один и тот же объект. Схожие проблемы неединственности и нечеткости возникают и с понятиями "синонимов", с таксономиями, и т.д. и т.п. Судя по всему, они благополучно разрешены при помощи структуры, называющейся lattice-ordered monoid of concepts (далее LOMoC). В работах А. Кларка (не Артура, а Александра, прошу заметить) эти идеи развиваются для парсинга естественных языков. К сожалению, в его статьях описывается странноватая модель обучения, в которой нужен учитель, ученик может выполнять вычислительно крайне громоздкие операции (что-то типа O(n7), где n - количество известных ему примеров фраз языка), да и объем коммуникаций "учителя" с "учеником" тоже нездорово большой. Тем не менее, уже сейчас это на вид сильно лучше и иерархии Хомского, и подавляющего большинства других языковых моделей. Читать можно начинать с Cla10 (pdf)
LOMoC серьезно использует тот факт, что мы работаем именно со строками, т.е. "топология" входа линейна, а не 0-мерна (вход - множество или мультимножество), не двумерна (изображение), и тем более не является экзотической (скажем, когда вход - совокупность последовательных двумерных изображений, которые иногда аннотированы строками или множествами тэгов).
Но аналогичные структуры можно по аналогии построить и для других топологий, заменив операцию свертки строки и контекста соответствующей операцией конкатенации связного подмножества входа и его локального контекста. Вот только степени полиномов станут совсем кошмарными. Тем не менее, давайте пофантазируем (пока что) и представим себе, что это сделано. Какую генеративную модель "естественных изображений" смогла бы "понять" такая система? (здесь и далее, чтобы понять, откуда я взял дальнейшее, вам придется прочитать Кларка и, главное, понять его; а если так, то с вероятностью по меньшей мере 25% вы сидите слева от меня за соседним компьютером)
Неплохую. Например, с одной стороны, она поймет, что бывают "глаза", "рты" и "уши", поймет, что "лицо" - это правильно расположенная совокупность оных, поймет на произвольном изображении "лица", где там что (не зная, как что называется, а просто выделив соответствующие концепты). В то же время она будет знать, что Мона Лиза - это не только "лицо", но и "картина" (в смысле принадлежности к соответствующему concept class), а также что это та же самая картина, что и на входе номер 1358 (в смысле принадлежности к еще более узкому концепту). По картинке разным, частично пересекающимся или включающим друг друга ее подмножествам она сопоставит разные концепты. Сможет, например, парсить детские рисунки, правильно понимая, на какой объект реального мира это похоже, или отличать фото человека от фото портрета этого человека, висящего на стене.
2) Ну а как же нам свести размерность полинома к необходимой нам для поточных realtime алгоритмов сложности expected O(n1+epsilon), и заодно избавиться от необходимости в явном "учителе"? Для этого нам придется вспомнить, что есть такая чудесная штука, как locality sensitive hashes. В web search с их помощью, в частности, ищут плотные двудольные подграфы в ориентированных графах "кто на кого ссылается", и таким образом вычисляют спам. Это уже успешно решенная задача, и решается она за О(числа вершин). Посмотри теперь на другой граф, а именно вот какой. Он двудольный, в нем вершины - это контексты и подмножества входов, а ребра отвечают на вопрос "какие подвходы встретились в каких контекстах". Что такое плотный двудольный подграф в нем? Ой, да это же и есть "концепт" Кларка!
А все это значит, что нам не нужно строить этот граф в явном виде! Мы можем, выбрав правильный набор хэшей, обрабатывать входы потоком, создавая "концепты" на лету. Кроме того, мы приобретем за счет рандомизированности дополнительную устойчивость к редким случайным ошибкам, например, встречающимся нам "неграмматичным" фразам или изображениям и тп., и избавимся от необходимости в учителе.
Вот в общем-то и все. Пора писать medium AI.
Сейчас я активно мониторю новые статьи про locality sensitive hashing (см. вчерашнюю запись в этом же журнале), и занимаюсь на работе чем-то максимально близким, что нашлось - semi-supervised извлечением и классификацией объектов из пользовательских запросов по их контекстам. Естественно, я пользуюсь при этом гораздо более "прикладными" методами, но, тем не менее, эта вся идея работает, черт возьми, я это вижу глазами.
Тем не менее, парсить естественные языки, кажется, для первого этапа сложновато. Начать нужно, скажем, с распознавания изображений общего назначения по этой схеме. По изображению искать "смысловые" near duplicates для его частей в имеющейся базе. Не знаю, буду ли я этим заниматься, но это неважно. Не я так кто-нибудь еще, не к 2017, так к 2025-му.
no subject
Date: 2010-04-01 03:29 pm (UTC)no subject
Date: 2010-04-01 06:34 pm (UTC)no subject
Date: 2010-04-01 07:12 pm (UTC)Кстати, для "эшелона", поди, был более глубокий анализ текста, требующий некоторой разумности — заказчику понравилось, и понеслось :)
no subject
Date: 2010-04-01 03:31 pm (UTC)Пост озаглавлен "Как нам построить strong AI"
А в тексте речь идет о medium 8)
no subject
Date: 2010-04-01 06:32 pm (UTC)А еще Гулин сидит слева от меня, а не справа, как я сначала написал
no subject
Date: 2010-04-02 05:09 am (UTC)АртураКларка?Что каждое слово в отдельности означает, понятно. А вместе - зогадко.
А вообще, сволочи вы все левополушарные :)
Я лично, пока картинку не увижу или не представлю, нихера не понимаю, и вы этим пользуетесь, чтобы издеваться 8)
no subject
Date: 2010-04-02 03:11 pm (UTC)Тут просто надо бы как следует написать, а времени ну никак нет.
Если вкратце - строишь вот такую структуру http://en.wikipedia.org/wiki/Formal_concept_analysis для связных подмножеств входа (в случае языка - подстрок), после чего вводишь на ней дополнительную(ые) операцию(и), соответствующие конкатенации.
no subject
Date: 2010-04-03 07:36 am (UTC)Есть один глупый вопрос - если мы строим LOMoC на тексте, что является объектами? Строки, что ли? 8)
Однако твой процесс построения medium AI, c моей точки зрения, все еще выглядит так:
1. Берем большой кусок сенсорных данных
2. Строим на нем LOMoC
3. Определяем операцию конкатенации
4. ?????
5. PROFIT
Дело в том, что все применения, что ты назвал для medium AI, уже вполне успешно решаются. То есть, роботы уже могут водить самолеты, поезда и танки и работать практически везде на производстве.
Главное, чего им не хватает - это возможности легко понимать, что именно их биологические хозяева лопочут на своем нерегулярном естественном языке.
Ключевым для понимания текста является построение в голове модели ситуации (что происходит, происходило и будет происходить?) и психики собеседника (что он знает, чего добивается?)
LOMoC может служить базой вариантов для распознавания, источником предположений, но об архитектуре этих моделей, способах представления информации о мире и т.п. он нам ничего не говорит. Наоборот, структура LOMoC от этих вещей зависит.
no subject
Date: 2010-04-03 02:53 pm (UTC)Про то, чему соответствуют "вопросики" в 4, я уже отписался faceted_jacinth'у тут: http://plakhov.livejournal.com/127307.html?thread=2167883#t2167883
no subject
Date: 2010-04-03 05:01 pm (UTC)И как это все будет выглядеть вот, скажем, на таком примере?
Предположим, есть текст: "Катя торопливо идет, поминутно поправляя солнечные очки и громко цокая каблучками босоножек".
Задаем вопросы:
- в какое время дня предположительно имеет место сцена?
- в какое время года?
- в городе или в лесу?
- сколько Кате лет?
Любой нормальный человек, не Шерлок Холмс, на такие вопросы легко ответит - с оговорками и разной долей уверенности, конечно - но ответит.
А как будет робот отвечать?
Очевидно, извлекая из памяти соответствующие концепты.
Глобально я это понимаю, а вот как это будет конкретно реализовываться? :)
Я так понимаю, для начала тебе граф описания сцены неплохо бы постоить, и он будет совсем не похож на любые синтаксические графы, которые можно построить по данному тексту. И чем здесь может помочь LOMoC?
no subject
Date: 2010-04-03 05:08 pm (UTC)no subject
Date: 2010-04-01 04:13 pm (UTC)Chulup.
no subject
Date: 2010-04-01 04:20 pm (UTC)no subject
Date: 2010-04-01 04:56 pm (UTC)no subject
Date: 2010-04-01 04:28 pm (UTC)no subject
Date: 2010-04-01 05:34 pm (UTC)no subject
Date: 2010-04-01 06:35 pm (UTC)no subject
Date: 2010-04-01 07:16 pm (UTC)no subject
Date: 2010-04-02 03:15 pm (UTC)no subject
Date: 2010-04-03 05:05 pm (UTC):)
no subject
Date: 2010-04-01 06:51 pm (UTC)no subject
Date: 2010-04-02 07:30 am (UTC)no subject
Date: 2010-04-01 08:17 pm (UTC)no subject
Date: 2010-04-02 07:27 am (UTC)no subject
Date: 2010-04-02 01:16 am (UTC)no subject
Date: 2010-04-02 07:27 am (UTC)no subject
Date: 2010-04-02 06:17 am (UTC)Если это не хохма, то у меня вдруг появилась вера в будущее.
no subject
Date: 2010-04-02 01:56 pm (UTC)no subject
Date: 2010-04-02 03:02 pm (UTC)Т.е. кастомизировать все это добро, конечно, надо будет, но не намного серьезнее, чем правильная целевая функция, и вшитая "модель тела".
no subject
Date: 2010-04-02 02:42 pm (UTC)Для меня критерий разумности — способность в твроческой переработке информации и потребность в ней.
no subject
Date: 2010-04-02 02:54 pm (UTC)no subject
Date: 2010-04-02 03:19 pm (UTC)no subject
Date: 2010-04-04 07:12 am (UTC)no subject
Date: 2010-04-05 08:17 am (UTC)