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

Оглавление

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

 

Рассмотрим для примера простую нейронную сеть
(а уже после разберём почему она не может быть основой для ИИ)

Наиболее широкое распространение получили искусственные нейронные сети (artificial neural network), обучаемые методом обратного распространения ошибки и названные «многослойный перцептрон» (multilayer perceptron – MLP). Рассмотрим пример нейронной сети которая по поисковому запросу прогнозирует URL по которому перейдёт пользователь.

В нашей «учебной» нейронной сети будет входной, скрытый и выходной слой. Все узлы входного слоя связаны с узлами скрытого слоя, а все узлы скрытого слоя – с узлами выходного слоя.

Производим обучения сети по запросам:

  • Передав сети данные, что при наличии узлов входного слоя: «пластиковые» и «окна», верный узел выходного слоя, возвращаемый в качестве результата работы нейронной сети: «URL-1».

  • Передав сети данные, что при наличии узлов входного слоя: «двери» и «окна», верный узел выходного слоя, возвращаемый в качестве результата работы нейронной сети: «URL-2».

  • Передав сети данные, что при наличии узла входного слоя: «пластиковые», верный узел выходного слоя, возвращаемый в качестве результата работы нейронной сети: «URL-3».

В своей реализации MLP, я с помощью функцией гиперболического тангенса рассчитываю, с какой силой каждый узел должен реагировать на входной сигнал в пределах от «-1» до «1».

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

Результат работы нейронной сети:

  • по запросу «пластиковые окна»: «URL-1»;

  • по запросу «двери окна»: «URL-2»;

  • по запросу «окна»: «URL-1».

Хотя сеть никогда раньше не видела запроса «окна», она выдает правильную гипотезу. Более того, «URL-1» получает гораздо более высокий ранг, чем «URL-2», хотя в обучающих примерах слово «окна» ассоциировалось со словом «двери» так же часто, как и со словом «пластиковые». Сеть не только поняла, какие URL с какими запросами ассоциируются, но и обучилась тому, какие слова важны в конкретном запросе. Достичь этого путем простого запоминания пары «запрос – URL» было бы невозможно.

 

Почему нейронная сеть без дополнительных алгоритмов
не может быть основой для искусственного интеллекта?

При первом знакомстве с нейронными сетями создаётся впечатление, что это идеальная «технология» для построения искусственного интеллекта (artificial intelligence). Так как их главным плюсом является способность справляться со сложными нелинейными функциями и находить зависимости между различными входными данными. Но для этого необходим «достаточный» коллекций данных для обучения нейронной сети, который в большинстве случаев нельзя создать «вручную». Для создания таких коллекций данных приходится применять дополнительные алгоритмы, такие как «генетические алгоритмы», «конечные автоматы» и т. п. Т.е. наша «учебная» нейронная сеть не сможет вернуть результат по запросу: «кирпичная стена», так как не было произведено обучение сети ни по одному слову из запроса (как отдельно по слову, так и в составе любого словосочетания).

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

Но даже получив результат работы нейронной сети, Вы получите вероятность того, что данный результат правильный, а не 100% гарантированный ответ. Т.е., для примера, если нейронная сеть будет переводить текст с английского на русский язык, есть вероятность получить перевод подобного содержания: «У нашей кошки три котёнка, два белых и один афроамериканец» в виду того, что слово «чёрный» в коллекции данных для обучения сети чаше использовалось в контексте его перевода как «афроамериканец», а не «чёрный» цвет.

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

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

 

Так ли всё плохо?
Или куда дует ветер...

На самом деле есть ряд задач с которыми нейронные сети справляются очень хорошо:

  • распознание изображений и объектов на видео;

  • перевод текстов с одного языка на другой;

  • прогнозирование в экономике и бизнесе;

  • постановка диагнозов в медицине;

  • кодирование/декодирование и сжатие информации;

  • фильтрация и блокировка спама, автоматическая рубрикация сообщений;

  • распознавание рукописных и отсканированных текстов;

  • т. п.

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

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

Например в бизнес-подразделении IBM Watson сейчас более 10 000 сотрудников. Watson извлек и оценил большое количество структурированных и неструктурированных данных из медицинских записей с помощью обработки естественного языка и машинного обучения. Сейчас IBM Watson достаточно точно предоставляет онкологам рекомендации по лечению рака молочной железы, легких, колоректального и некоторых других видов рака. Проблема в том, что возможности суперкомпьютера и облачных технологий компании IBM не намного превосходят возможности обычного поискового сервиса. Watson может подтвердить то, что врач уже знает, но ведь человек и так уже знает диагноз и уверен в своем выборе, если это хороший специалист. Но IBM уже несколько лет теряет прибыль, а общий долг компании составляет 44,5 млрд долларов. IBM два года демонстрировала самую слабую динамику в «элитном» индексе Dow Jones: курс акций падал с января 2013 по январь 2015 года. Подобное случалось в истории лишь однажды: «голубые фишки» Bethlehem Steel, одной из лидирующих компаний на рынке, в середине 90-х также два года подряд терпели крах. Затем компания обанкротилась. Очевидно, что в IBM не хотели краха и стали массивно вкладываться в брендинг облачных предложений, а Watson удачно помог создать образ технологического будущего и остановил волнение инвесторов.

Когда один крупный гигант улучшает свой «инвестиционный» рейтинг с помощью рекламной компании, за ним последуют и другие: Nvidia с видеокартами Tesla для серверов (для ускорения математических расчётов), Google с библиотекой TensorFlow, библиотека CNTK от Microsoft (они уже ускоряли bing search с помощью FPGA) или warp-ctc от Baidu. При этом «подобная» библиотека для языка программирования python, под названием Theano, существует уже 8 лет с 2008 года, а библиотеке Torch вообще уже 14 лет. Поэтому библиотеки от Google, Microsoft и Baidu не являются чем то революционным.

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