Блог экспериментатора инженера-разработчика: Infanty.
Я пишу how-to статьи на редкие темы или статьи обзоры - для себя и тех кто со мной работает.
Блог существует при поддержке: "Оккупационных сил Марса".

Оглавление

  1. Введение.
  2. Прошлое, настоящее и утопическое будущее.
  3. Текущие состояние отрасли прикладных программ в области ИИ.
  4. Знания по ИИ имевшиеся у меня перед началом проекта в области ИИ.
  5. Сравнение алгоритмов поисковых систем нового поколения.
  6. Нейронная сеть без дополнительных алгоритмов не может быть основой для ИИ.
  7. ПО, алгоритмы и архитектура проекта с использованием AI и BigData (реализация не включена).
  8. Реализация прототипа проекта с использованием AI и BigData (настройка ПО не включено).

 

4. Знания по ИИ имевшиеся у меня перед началом проекта (описаного в пункте №1)

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

Уже тогда я понимал, что необходимо большое количество данных для обучения алгоритмов ИИ. Поэтому я разработал свой краулер с поисковым движком для сбора данных из сети интернет на которых пробовал обучить свою программу с ИИ. На сегодняшний момент эти разработки (краулер и поисковый движок) с лёгкостью можно заменить существующим программным обеспечением поддерживаемым Apache Software Foundation, но 12 лет назад:

  • краулер Apache Nutch только присоединился к ASF;
  • только через год поисковый движок Apache Solr был передан в ASF;
  • только через пять лет была создана распределённая система управления базами данных Apache Cassandra;
  • размер доступных для домашнего использования жёстких дисков был в районе 40 гигабайт, что было очень мало;
  • только через год произошёл релиз MapReduce фреймворка Hadoop версии 0.1.0;
  • библиотека NLTK существовала уже более 4 лет, но отсутствие доступности необходимой литературы сводили её использование к нулю.

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

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

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

Очень радует, что за последние 12 лет оборудование стало более производительным. Кроме того появилось множество статей и книг по ИИ. Большинство этих книг при описании алгоритмов ИИ используют язык программирования Python. Так же в свободном доступе появилось множество программ и прикладных библиотек для разработки ИИ которые так же могут взаимодействовать с Python. Прочитав теоретическую часть по построению программ с ИИ из этих книг или прочитав описание к прикладным библиотекам - создаётся иллюзия, что единственной проблемой построения ИИ является проблема как научить его творчеству и фантазии.

Эта иллюзия "разрушается" на практике, когда:

  • Каждый автор библиотеки пропагандирует использовать только его решение.
  • Каждый автор алгоритма / методологии показывает как решить любую задачу только с помощью его алгоритма ставя под сомнение необходимость других алгоритмов (например: свёрточной нейронной сети).
  • При попытке улучшить свою программу основанную на определённой библиотеке или алгоритме в определённой узкой области можно столкнуться, с тем, что данная область по объёму знаний равна или превышает объём знаний заложенный в Вашу программу (например: существуют целые научные труды по использованию «а» и «но» в Русском языке).

В итоге в данный момент очень просто построить небольшие программы использующие простой ИИ и одну методологию / алгоритм. Но при попытке улучшить ИИ в такой программе, выявляется десятки, а то и сотни частных случаев для решения каждого из которых нужно применить свою методологию / алгоритм. С увеличением числа используемых алгоритмов, квадратично растёт и количество данных для обучения и тестирования основного алгоритма программы и незаметно небольшая программа превращается в BigData решение. Главное, что при этом упускается из виду: в маленькой программе — маленькие риски того, что она не будет работать так как запланировано, в большой программе — большие риски.

В остальном же - на сегодняшний момент для разработки программы с ИИ необходимо знать и понимать всего с десяток алгоритмов, уметь работать ещё с десятком программ и библиотек так или иначе связанных с BigData и AI, а так же выучить английский язык и язык программирования Python.