Action information
244,90
рейтинг
7 февраля 2014 в 13:02

Разное → Искусственный интеллект для программистов

Как случилось, что искусственный интеллект успешно развивается, а «правильного» определения для него до сих пор нет? Почему не оправдались надежды, возлагавшиеся на нейрокомпьютеры, и в чем заключаются три главные задачи, стоящие перед создателем искусственного интеллекта?

На эти и другие вопросы вы найдете ответ в статье под катом, написанной на основе выступления Константина Анисимовича, директора департамента разработки технологий ABBYY, одного из ведущих экспертов страны в сфере искусственного интеллекта.
При его личном участии были созданы технологии распознавания документов, которые применяются в продуктах ABBYY FineReader и ABBYY FormReader. Константин рассказал об истории и основах разработки AI на одном из мастер-классов для студентов Технопарка Mail.Ru. Материал мастер-класса и стал базой для цикла статей.

Всего в цикле будет три поста:
Искусственный интеллект для программистов
Применение знаний: алгоритмы поиска в пространстве состояний
• Получение знаний: инженерия знаний и машинное обучение

Взлеты и падения подходов в AI


Еще с 1950-х годов в сфере создания искусственного интеллекта выделилось два подхода — символьные вычисления и коннекционизм. Символьные вычисления – это направление, основанное на моделировании мышления человека, а коннекционизм — на моделировании устройства мозга.

Первыми достижениями в области символьных вычислений были созданный в 50-е годы язык Lisp и работа Дж. Робинсона в области логического вывода. В коннекционизме таковым стало создание персептрона – самообучающегося линейного классификатора, моделирующего работу нейрона. Дальнейшие яркие достижения находились в основном в русле символьной парадигмы. В частности, это работы Сеймура Пайперта и Роберта Антона Уинсона в области психологии восприятия и, конечно, фреймы Марвина Минского.

В 70-е годы появились первые прикладные системы, использующие элементы искусственного интеллекта – экспертные системы. Дальше произошел некий ренессанс коннекционизма с появлением многослойных нейронных сетей и алгоритма их обучения методом обратного распространения. В 80-е годы увлечение нейронными сетями было просто повальным. Сторонники этого подхода обещали создать нейрокомпьютеры, которые будут работать практически как человеческий мозг.

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

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

Главные задачи при проектировании искусственного интеллекта


Можно проанализировать, что роднит те задачи, которые относятся к искусственному интеллекту. Несложно заметить, что общее в них — отсутствие известной, четко определенной процедуры решения. Этим, собственно, задачи, относящиеся к AI, отличаются от задач теории компиляции или вычислительной математики. Интеллектуальные системы ищут субоптимальные решения задачи. Нельзя ни доказать, ни гаратировать, что найденное искусственным интеллектом решение будет строго оптимальным. Тем не менее, в большинстве практических задач субоптимальные решения всех устраивают. Более того, нужно помнить, что и человек практически никогда не решает задачу оптимально. Скорее, наоборот.

Возникает очень важный вопрос: как может AI решить задачу, для которой нет алгоритма решения? Суть в том, чтобы делать это так же, как и человек — выдвигать и проверять правдоподобные гипотезы. Естественно, что для выдвижения и проверки гипотез нужны знания.

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

Основные задачи проектирования интеллектуальной системы сводятся к выбору способов представления знаний, способов получения знаний и способов применения знаний.

Представление знаний


Существуют два основных способа представления знаний — декларативные и процедурные. Декларативные знания могут быть представлены в структурированном или в неструктурированном виде. Структурированные представления – это та или иная разновидность фреймового подхода. Семантические сети или формальные грамматики, которые тоже можно считать разновидностями фреймов. Знания в этих формализмах представлены в виде множества объектов и отношений между ними.


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

Практически все способы структурированного представления знания базируются на формализме фреймов, которые в 1970-е ввел Марвин Минский из MIT, чтобы обозначить структуру знаний для восприятия пространственных сцен. Как выяснилось, подобный подход годится практически для любой задачи.

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

Несложно заметить, что существует сходство между фреймами и объектно-ориентированным программированием, где фрейму соответствует объект, а слоту — поле. Сходство это неслучайное, потому что фреймы были одним из источников возникновения ООП. В частности, один из первых объектно-ориентированных языков Small Talk практически в точности реализовывал фреймовые представления объектов и классов.

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

В следующей статье мы поговорим о способах применения знаний.

Список литературы.


  1. John Alan Robinson. A Machine-Oriented Logic Based on the Resolution Principle.  Communications of the ACM, 5:23-41, 1965.
  2. Seymour Papert, Marvin Minsky. Perceptrons. MIT Press, 1969
  3. Marvin Minsky. Symbolic vs. Connectionist, 1990
  4. Marvin Minsky. A framework for representing knowledge. MIT AI Laboratory Memo 306, June, 1974.
  5. Russell, Norvig. Artificial Intelligence: A Modern Approach.
  6. Simon Haykin. Neural networks: a comprehensive foundation.
  7. Nils J. Nilsson. Artificial Intelligence: A New Synthesis.
Автор: @ABBYYTeam
ABBYY
рейтинг 244,90
Action information

Комментарии (26)

  • 0
    как может AI решить задачу, для которой нет алгоритма решения? Суть в том, чтобы делать это так же, как и человек — выдвигать и проверять правдоподобные гипотезы. Естественно, что для выдвижения и проверки гипотез нужны знания.

    Я далек от АИ, но задам вопрос, который наверное глупы.

    Как в таком случаи обучить компьютер что 2+2=4. Ведь нас этому обучают в детстве, но если мы расскажем об этом компьютеру, то это уже не будет поиском решения. И даже если обучить его 1+1, и он каждый раз будет прибавлять по 1, это просто будет подбор и все равно кто то должен проверить решение.
    Я совсем не понимаю как это все выглядит на практике, а ведь очень интересно.
    • +3
      Приведённый пример не является задачей для искусственного интеллекта. Классически задачами для искуственного интеллекта являются совершенно тривиальные задачи для человека, но очень сложно программируемые на практике. Скажем, выяснить, кто из героев сериала Доктор Хауз носит гапстук. Человеку и обучаться не надо — посмотрит и сразу скажет. А вот как с компьютером?
      • +1
        Числа и арифметика нужна часто для выполнения и обычных задач (например, роботу могут сказать «дай соль с пятой полки»). Но числа это пример того, что может понадобиться. Арифметику можно и зашить в ИИ изначально, но нельзя же зашить всё. Через 1000 лет он должен осилить что-то, чего не было на момент его создания (как и человек, не всегда же он знал что такое галстук и что такое корень квадратный). Для Вашего примера ИИ должен знать и про одежду что-то, и как она относится к людям, какой формы/длины обычно галстуки, что они на шее «висят».
      • 0
        Считать или дедуктивно доказывать что нить в Калькюлях (lat. Calculus, к сожалению не знаю русского термина), чем и является арифметика, самое нормальное для АИ.
        • 0
          Calculus — математический анализ
          • +1
            спасибо, но скорее всего это «Формальная система», я уже нагуглил
            • 0
              Вам правильно подсказали, Calculus — это матан. Формальная система — это из мат логики.
    • 0
      Описать арифметику фреймами/слотами. Число — фрейм, пара чисел — фрейм, являться суммой, являться произведением — слоты. Аксиомы разные добавить, типа, x «являться суммой» (0, x). Не знаю, хватит ли выразительности конкретно фреймов или OWL для всех аксиом арифметики.

      Чтобы ИИ был похож на человека/личность, он должен сам, по мере необходимости и возможности, добавлять себе такие фреймы/понятия, слоты/отношения, аксиомы. Типа говорит «учитель», которому можно верить: «икс плюс ноль будет всегда икс для любого икс», а ИИ себе обновляет семантическую сеть / правила. Это надо сильный конвертор из естественного языка в формальный, а для этого нужен ИИ, который мы еще и не сделали)
      • 0
        конвертор из естественного языка в формальный
        — Зачем? Первый ИИ вполне можно обучить на формальном языке вручную.
        • 0
          Если новую инфу ему надо будет говорить также, как в Прологе, допустим, будут ли его воспринимать именно как ИИ? Соответственно и задачи многие он решать не сможет из естественной жизни.

          Обучать естественному языку на формальном языке?
          • +2
            Обучать естественному языку на формальном языке?
            — Да. Why not? В конечном счете, и люди зачастую общаются между собой на формальном языке (откройте любой учебник математики).
    • 0
      пусть задано множество чисел, т.е. мы можем сказать какое число на i-том месте, пусть задана операция +1, возвращающая следущее по порядку число в нашем множестве. Попробуем вывести чему будет равно 2+2. 2 стоит на втором месте, т.е. это результат операции +1 примененный к 1. Значит 2+2=1+1+1+1 или элемент, стоящий на 4-том месте.
    • 0
      Вот что выдает быстрый поиск в гугле по ключевым словам «addition operation neural networks»:
      www.lcc.uma.es/~lfranco/A1-Franco+Cannas-1998.pdf
    • 0
      как может AI решить задачу, для которой нет алгоритма решения?
      _____________________

      Вот как раз AI очень хорошо умеет решать такие задачи.
      ладно, не очень хорошо, но умеет.
      Главное, чтобы можно было сформировать условие проверки правильности решения задачи.
      А дальше из этого условия формируется так называемая фитнесс-функция для генетического алгоритма. Который. по своей сути, является самым простым методом проб и ошибок :-)
      ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BD%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC
  • +11
    Почему ваш пост называется «Искусственный интеллект для программистов»?

    Программисты — это инженеры-практики, которые при всей своей общей любознательности ориентированы прежде всего на практический результат. У вас же приводится очень поверхностное описание, фактически, простое перечисление парадигм и технологий средств искуственного интеллекта прошлого века. Сделанное, к тому же, тоже непрактичным образом: если вы не можете здесь подробно описать, скажем, фреймы или нейронные сети из-за объема и формата статьи — то дайте, пожалуйста, ссылку, где об этом можно прочитать. Перечень литературы в конце в этом смысле, к сожалению, бесполезен: если я хочу прочитать о фреймах, мне какую книжку прикажете смотреть — Хайкина или Норвига?
    • –1
      Про название — статья предназначена для программистов, а не для специалистов по ИИ, коих из всех программистов хорошо если 0.1%. Будут ещё две части — про поиск решения и про машинное обучения.

      Если Вы хотите почитать о фреймах, в конце есть ссылка на статью Марвина Минского. Ну и Гуглом можно найти массу более новых статей и книг про фреймы.
      • +8
        Знаете, про программистов я все равно не понял. У вас по сути получился текст — предисловие для книжки об ИИ для широкого круга читателей: программистов, дизайнеров, инженеров-технологов легкой промышленности, школьников старших классов и вообще всех, для кого эта тема в новинку. Это по сути «обзор ИИ для новичков».

        Насчет списка литературы — если вы его даете в конце, то в тексте тоже должны быть ссылки на него, конкретные. Как читателю понять, что фреймы в статье Марвина Минского? Вот если бы вы написали: «фреймы [4], [5, с. 100500]» — то сразу бы все стало ясно, где что искать. Вообще, список литературы оформлен безобразно, нету годов издания номеров издания книжек. У книжек Норвига и Хайкина есть русские переводные версии, для русскоязычного читателя было бы логичнее указать именно их.

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

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

        Желаю вам успехов в следующих частях!
  • +8
    Старый добрый символьный ИИ… В целом статья абсолютна однобока и, не обижайтесь на меня, не до конца понятно зачем она вообще написана.
    • 0
      Это только первая часть, вводная. Дальше будет про поиск решения и машинное обучение.
  • +1
    Но ничего особенного из этого не вышло, потому что настоящие нейроны устроены намного сложнее, чем формальные, на которых основаны многослойные нейросети. И количество нейронов в человеческом мозге тоже намного больше, чем можно было позволить себе в нейросети.

    Не поэтому не вышло.
    Тьюринговский подход к ИИ изначально отталкивал от правильного вектора развития технологии.
    Очень хорошо этот вопрос рассмотрен в книге «On Intelligence» Джефа Хокинса.
    • +3
      Извините, но откуда Вы знаете наверняка какой подход правильный, учитывая что пока неизвестно какой подход приведет к успеху и приведет ли вообще?
      Меня удивляет почему так много людей (в особенности далеких от ИИ и машинного обучения) цитируют эту книгу Хокинса, как хорошую в чем бы то ни было. Книга откровенно ни о чем, полная пространных сомнительных размышлений и прочей воды.
      • –2
        Люди падки на внешний пафос.
      • 0
        Есть такое понятие, как common sense. Я увлекался ИИ еще с последних классов школы, и уже тогда меня смущало, что все знания в этой области слишком хаотичны и как-то неоправданно усложнены. Через 15 лет я вижу, что кардинально ничего не изменилось — до сих пор лучшие специалисты по ИИ человечества хвастаются тем, что научили нейросеть отличать кошку от собаки.
        Не знаю, как вам, но для меня это признак той самой «неправильности» пути.

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

        Но я понимаю, почему в академических кругах Хокинса не любят. Мне бы тоже было обидно )
        • 0
          Я так понимаю, что книга доступна только на английском?
          • +1
            Давно переведена на русский

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное

Интересные публикации