Анализ медицинских изображений, распознавание рукописных текстов и голоса, управление работой электростанций, принятие инвестиционных решений, интеллектуальный анализ крупных баз данных, контроль работы промышленных предприятий — теория нейронных сетей находит интересное применение в этих и многих других областях. Очевидно, что нейронные сети можно объединять с экспертными системами, генетическими алгоритмами и другими методами, например нечеткой логикой, в которой значения истинности лежат на интервале между 0 и 1.
Многие нейронные сети можно представить с помощью ориентированных графов: дуги будут обозначать связи между нейронами, их входы и выходы. Подобно схемам метро с линиями и станциями, с помощью графов можно составить схемы нейронных сетей. Иногда нейронную сеть удобнее представить не в виде графа, а в виде электронной таблицы. Чем больше число входных сигналов, нейронов и взаимосвязей между ними, тем сложнее процесс.
Классификацию нейронных сетей можно выполнить по аналогии с графами, разделив нейронные сети на сети прямого распространения (такие сети не содержат циклов и связей между нейронами одного слоя) и рекуррентные, в которых существует минимум один цикл. Нейронные сети также можно классифицировать по типу «обучения» или ввести другие критерии, например тип обрабатываемой ими информации (изображение, речь и так далее).
Любопытно, что нейронные сети показали свою эффективность в математике. Они используются в тех случаях, когда не существует четкого алгоритма вычислений или решения задачи либо имеющиеся алгоритмы излишне сложны. Превосходный пример использования нейронных сетей в математике — это их применение в теории графов для решения задач, подобных задаче коммивояжера, которые нельзя решить иными способами за разумное время.
Прогресс в информатике и рост сложности компьютеров привели к тому, что при решении многих задач стали применяться все более сложные математические теории. Нетрудно поверить, что недалек тот час, когда компьютер сможет почти во всем заменить человека. Машина уже способна выполнять повторяющиеся действия в соответствии с четкими алгоритмами быстрее и эффективнее человека (например, операции с числами, выполнение действий на конвейере, посадка самолетов на автопилоте). Но несмотря на это, компьютер никогда не сможет заменить человеческий интеллект во всей его сложности, с его способностью различать оттенки и сопоставлять разрозненную информацию. Это не поддается программированию.
Схема нейронной сети, подобной тем, что используются в информатике. Входные сигналы (обозначены стрелкой справа) получаются рецепторами (круги в правой части схемы), которые передают сигналы нейронам (круги в центре схемы), а те в свою очередь выдают результат (круги в левой части схемы), на основе которого формируется выходной сигнал (обозначен стрелкой слева).
Задачи робототехники частично решаются с помощью нейронных сетей, однако некоторые с виду простые действия, например заправку кровати, запрограммировать сложно.
Понятия и результаты, полученные в теории графов, — мощный инструмент организации сложных систем. Представьте социальные графы в Facebook или Twitter : число вершин этих графов равно числу пользователей, а многочисленные ребра представляют отношения между ними.
Узлы, ребра, степени, веса, связи, циклы, пути, расстояния, подграфы, централизованность, аттракторы — эти и многие другие понятия теории графов сегодня используются при решении множества задач, связанных с сетями, начиная от схем метро и заканчивая грузоперевозками, от распознавания образов до формирования групп друзей, от составления маршрутов движения роботов до промышленного производства.
Даже сегодня некоторые возможности компьютеров кажутся будто сошедшими со страниц научно-фантастических романов. Но лучшее еще впереди, и к нему нужно быть готовым.
Графы и линейное программирование
В 40-е годы XX века появилось так называемое линейное программирование — теория, сыгравшая ключевую роль в объединении науки управления и ставшая частью раздела «Исследование операций».
При решении задач планирования (при составлении расписаний, перевозке грузов, реализации проектов) и особенно задач производства на крупных предприятиях линейное программирование использует математические модели, которые помогают точнее определить цели, увеличить доход, снизить издержки и так далее.
Читать дальше