Популярно об ИИ
Очень многие говорят о перспективах ИИ, но довольно часто за философскими представлениями, часть из которых даже имеет под собой строго упорядоченный математический базис, стоит очень мало практического по существу. Ведь, если посмотреть на все с позиции зрителя, то нам предлагается несколько типов, вернее, подходов к реализации ИИ как такового:
. Структурный. Имеется в виду структурное повторение чего-либо. Самый популярный случай — нейронный сети, то есть повторение деятельности человеческого мозга. Сразу вспоминаются персептроны и т.д.
. Эволюционный. Предполагается построение некоей изначальной модели, а также задаются условия ее развития, то есть свод правил, по которым она может изменяться.
. Имитационный. Копирование поведения. В данном случае подразумевается закрытая система, или же, как принято называть в терминологии "черный ящик", и мы можем оперировать только входными и выходными данными, не внедряясь во внутреннюю структуру самого модуля. То есть на самом деле не важно, что там происходит внутри, причем такая система является независимой от внешней среды и ее изменений.
Последний вариант близок к понятиям объектноориентированного и интерфейсноориентированного программирования. Причем он близок и для большинства экспертных систем. А если присмотреться к списку внимательно, то все три пункта свойственны человеку, и не всегда они актуальны для того же ИИ. Зачем шахматной программе думать как человек, если изобретены более совершенные алгоритмы? Зачем роботу перенимать способ передвижения человека, если есть множество других вариантов?
Опыты 2006 года
Для более подробного анализа ситуации имеет смысл рассмотреть все три пункта, как их видит современная наука и какие реализации и в каких сферах уже реально используются. Это мы рассмотрим подробно в ближайших материалах, а сегодня рассмотрим один весьма иллюстративный пример. В 2006-м году ваш покорный слуга сделал некоторые опыты. И даже их описание сейчас может натолкнуть вас на определенные полезные мысли. За основу исследования было взято утверждение, что для того, чтобы компьютер понимал человеческую речь, необходимо преобразовать ее до уровня понятных (!) машине терминологических основ или образов. Что же компьютер может, говоря грубо, "осязать", воспринимать как нечто вещественное? Очевидно, что так же, как и человек — информацию, поток поступающих данных. Подключили видеокамеру — он может сказать: "Я вижу", микрофон — "Я слышу". Для опыта использовались бинарные (двуцветные) изображения, на которых располагались простейшие буквы: А, Б, В, Г, Д, Е, О и т.п. Изначально ваш покорный слуга хотел использовать видеокамеру и карточки с буквами, чтобы компьютер смог их угадывать, но все же полученные изображения с видеокамеры потом все равно преобразуются в некий графический файл в бинарном представлении, после чего анализируются. То есть я упростил все до использования бинарных файлов изначально и видеокамеру не использовал. Хотя сейчас этот модуль (анализа видео) уже добавлен. В итоге мною самостоятельно изначально была написана программа-алгоритм, с помощью которого в бинарном изображении можно было угадать некую букву. Сделать это оказалось не так и сложно, хотя сам алгоритм описать все-таки стоит. Для каждой из букв была составлена определенная математическая модель, которая хранила в себе информацию об их структуре, могла ее масштабировать, менять угол наклона, пропорции и т.п. В результате чем лучшим было соответствие модели и представленной на картинке буквы (там считались проценты по пяти критериям соответствия — сейчас их более 100), тем большая вероятность того, что это и есть та или иная буква. Схожие алгоритмы присутствуют в программах автоматического распознавания текста.
Дальше пошли опыты с образным мышлением. Я сделал бинарные картинки с различными фигурами и т.п. и заставил компьютер анализировать, делать так, чтобы он выдавал фразы типа: "Эта фигура похожа на букву А". Так, например, программа прокомментировала изображения треугольника и елки. То есть, как вы понимаете, опыт на самом деле очень простой — например, на его практическую реализацию у меня ушло чуть меньше трех дней и неделю "продумки" до этого. Но суть сводится к тому, что образное мышление компьютерному мозгу подвластно. Причем в данном случае ваш покорный слуга начал с букв, хотя лучше было бы, конечно, использовать за базис обычные геометрические фигуры. Теперь вспомним о том, что же подразумевает само слово "анализ". В переводе с древнегреческого (а на самом деле хоть латинские/греческие термины и считаются современными научными, в древности они обозначали очень простые и очевидные вещи) analysis — это разложение или расчленение. Другими словами, любой сложный объект можно разложить на ряд простых, то есть провести его анализ. Это же относится и к описанному выше опыту. Заставив компьютер определять простые геометрические фигуры на уровне сопоставления с имеющимися математическими образами, стало возможно переходить по нарастающей и на более сложные объекты. Причем и проводить их комплексное образное сравнение с тем, что имеется (заложено) в базе. На основе подобных решений можно сделать "очеловечивание" искусственного разума, объяснить ему на простом уровне суть множества понятий и слов, обозначений предметов. А данный пример просто продемонстрировал вам, как это можно сделать на старте (один из вариантов). Причем после программа была модифицирована, и в нее была внедрена система самообучения. То есть программа воспринимала образ, сравнивала его со своими математическими моделями, при этом составлялся определенный список коэффициентов, то есть подобия той или иной букве. В результате новая версия программы уже не просто выводила данные "Эта фигура похожа на…", а могла и запрашивать название новой фигуры, после чего, кстати, многоугольники начали угадываться достаточно точно, и заметьте, что все это происходило на старом движке, а именно на базе математического описания букв. В процессе "половинного" самообучения начала автоматически формироваться новая база образов.
Промежуточное завершение
Ваш покорный слуга неспроста рассказал об этом опыте, поскольку он достаточно иллюстративен. Причем, отталкиваясь от него, мы можем более качественно перейти к обсуждению трех пунктов списка, а также вывести некоторые новые.
Кристофер
. Структурный. Имеется в виду структурное повторение чего-либо. Самый популярный случай — нейронный сети, то есть повторение деятельности человеческого мозга. Сразу вспоминаются персептроны и т.д.
. Эволюционный. Предполагается построение некоей изначальной модели, а также задаются условия ее развития, то есть свод правил, по которым она может изменяться.
. Имитационный. Копирование поведения. В данном случае подразумевается закрытая система, или же, как принято называть в терминологии "черный ящик", и мы можем оперировать только входными и выходными данными, не внедряясь во внутреннюю структуру самого модуля. То есть на самом деле не важно, что там происходит внутри, причем такая система является независимой от внешней среды и ее изменений.
Последний вариант близок к понятиям объектноориентированного и интерфейсноориентированного программирования. Причем он близок и для большинства экспертных систем. А если присмотреться к списку внимательно, то все три пункта свойственны человеку, и не всегда они актуальны для того же ИИ. Зачем шахматной программе думать как человек, если изобретены более совершенные алгоритмы? Зачем роботу перенимать способ передвижения человека, если есть множество других вариантов?
Опыты 2006 года
Для более подробного анализа ситуации имеет смысл рассмотреть все три пункта, как их видит современная наука и какие реализации и в каких сферах уже реально используются. Это мы рассмотрим подробно в ближайших материалах, а сегодня рассмотрим один весьма иллюстративный пример. В 2006-м году ваш покорный слуга сделал некоторые опыты. И даже их описание сейчас может натолкнуть вас на определенные полезные мысли. За основу исследования было взято утверждение, что для того, чтобы компьютер понимал человеческую речь, необходимо преобразовать ее до уровня понятных (!) машине терминологических основ или образов. Что же компьютер может, говоря грубо, "осязать", воспринимать как нечто вещественное? Очевидно, что так же, как и человек — информацию, поток поступающих данных. Подключили видеокамеру — он может сказать: "Я вижу", микрофон — "Я слышу". Для опыта использовались бинарные (двуцветные) изображения, на которых располагались простейшие буквы: А, Б, В, Г, Д, Е, О и т.п. Изначально ваш покорный слуга хотел использовать видеокамеру и карточки с буквами, чтобы компьютер смог их угадывать, но все же полученные изображения с видеокамеры потом все равно преобразуются в некий графический файл в бинарном представлении, после чего анализируются. То есть я упростил все до использования бинарных файлов изначально и видеокамеру не использовал. Хотя сейчас этот модуль (анализа видео) уже добавлен. В итоге мною самостоятельно изначально была написана программа-алгоритм, с помощью которого в бинарном изображении можно было угадать некую букву. Сделать это оказалось не так и сложно, хотя сам алгоритм описать все-таки стоит. Для каждой из букв была составлена определенная математическая модель, которая хранила в себе информацию об их структуре, могла ее масштабировать, менять угол наклона, пропорции и т.п. В результате чем лучшим было соответствие модели и представленной на картинке буквы (там считались проценты по пяти критериям соответствия — сейчас их более 100), тем большая вероятность того, что это и есть та или иная буква. Схожие алгоритмы присутствуют в программах автоматического распознавания текста.
Дальше пошли опыты с образным мышлением. Я сделал бинарные картинки с различными фигурами и т.п. и заставил компьютер анализировать, делать так, чтобы он выдавал фразы типа: "Эта фигура похожа на букву А". Так, например, программа прокомментировала изображения треугольника и елки. То есть, как вы понимаете, опыт на самом деле очень простой — например, на его практическую реализацию у меня ушло чуть меньше трех дней и неделю "продумки" до этого. Но суть сводится к тому, что образное мышление компьютерному мозгу подвластно. Причем в данном случае ваш покорный слуга начал с букв, хотя лучше было бы, конечно, использовать за базис обычные геометрические фигуры. Теперь вспомним о том, что же подразумевает само слово "анализ". В переводе с древнегреческого (а на самом деле хоть латинские/греческие термины и считаются современными научными, в древности они обозначали очень простые и очевидные вещи) analysis — это разложение или расчленение. Другими словами, любой сложный объект можно разложить на ряд простых, то есть провести его анализ. Это же относится и к описанному выше опыту. Заставив компьютер определять простые геометрические фигуры на уровне сопоставления с имеющимися математическими образами, стало возможно переходить по нарастающей и на более сложные объекты. Причем и проводить их комплексное образное сравнение с тем, что имеется (заложено) в базе. На основе подобных решений можно сделать "очеловечивание" искусственного разума, объяснить ему на простом уровне суть множества понятий и слов, обозначений предметов. А данный пример просто продемонстрировал вам, как это можно сделать на старте (один из вариантов). Причем после программа была модифицирована, и в нее была внедрена система самообучения. То есть программа воспринимала образ, сравнивала его со своими математическими моделями, при этом составлялся определенный список коэффициентов, то есть подобия той или иной букве. В результате новая версия программы уже не просто выводила данные "Эта фигура похожа на…", а могла и запрашивать название новой фигуры, после чего, кстати, многоугольники начали угадываться достаточно точно, и заметьте, что все это происходило на старом движке, а именно на базе математического описания букв. В процессе "половинного" самообучения начала автоматически формироваться новая база образов.
Промежуточное завершение
Ваш покорный слуга неспроста рассказал об этом опыте, поскольку он достаточно иллюстративен. Причем, отталкиваясь от него, мы можем более качественно перейти к обсуждению трех пунктов списка, а также вывести некоторые новые.
Кристофер
Компьютерная газета. Статья была опубликована в номере 41 за 2008 год в рубрике технологии