Ответы 190 страниц (1184228), страница 26
Текст из файла (страница 26)
Экономика и финансы
Нейронные сети активно применяются на финансовых рынках. Например, американский Citibank использует нейросетевые предсказания с 1990 года, и уже через два года после их внедрения, по свидетельству журнала The Economist, автоматический дилинг показывал доходность 25% годовых. Chemical Bank применяет нейросетевую систему фирмы Neural Data для предварительной обработки транзакций на валютных биржах ряда стран, отслеживая подозрительные сделки. Автоматизированные системы ведения портфелей с использованием нейросетей имеются на вооружении и у Deere & Co LBS Capital, причем экспертная система объединяется примерно с 900 нейронными сетями.
В сентябре 1992 года компания HNC, которая до этого занималась производством нейрокомпьютеров, выпустила программный продукт Falcon, позволяющий выявлять и предотвращать в реальном времени подозрительные сделки по краденым кредитным и дебетным картам. Искусственные нейронные сети обучались типичному поведению клиентов и могли обнаруживать резкое изменение характера покупок, сигнализирующее о возможной краже. Ежегодный ущерб крупных банков от подобных преступлений измерялся десятками миллионов долларов, но благодаря внедрению Falcon в 1994 году впервые за всю историю пластиковых карт эти потери пошли на убыль. Аналогичная система была разработана фирмой ITC для мониторинга операций с кредитными картами Visa.
Несколько лет назад крупный канадский банк CIBC для управления рисками и идентификации злоумышленников установил программу KnowledgeSeeker фирмы Angoss. С ее помощью специалисты банка решили выяснить, кто из их клиентов в будущем будет с высокой долей вероятности задерживать выплаты по закладным. Сначала предполагалось, что в первую очередь ими окажутся те, кто и прежде задерживал свои выплаты на несколько дней. Однако исследования показали, что в будущем проблемы с платежами возникнут у тех клиентов банка, которые на фоне регулярных выплат иногда якобы забывали заплатить. Как выяснилось, подобная «забывчивость» была связана с серьезными финансовыми трудностями.
Реклама и маркетинг
Компания Neural Innovation Ltd использовала при работе с маркетинговыми компаниями стратегию прямой рассылки. Вначале она осуществляла рассылку всего 25% от общего числа предложений и собирала информацию об откликах и реакциях потребителей. Затем эти данные поступали на вход нейронной сети, с помощью которой осуществлялся поиск оптимального сегмента потребительского рынка для каждого товара. После этого остальные 75% предложений рассылались уже с учетом найденных закономерностей в указанный сегмент, и эффективность второй рассылки значительно возрастала по сравнению с первоначальной.
При ведении бизнеса в условиях конкуренции компаниям необходимо поддерживать постоянный контакт с потребителями, обеспечивая обратную связь. Для этого некоторые компании проводят опросы потребителей, позволяющие выяснить, какие факторы являются решающими при покупке данного товара или услуги. Анализ результатов подобного опроса — непростая задача, поскольку необходимо исследовать большое количество связанных между собой параметров и выявить факторы, оказывающие наибольшее влияние на спрос. Существующие нейросетевые методы позволяют выяснить это и прогнозировать поведение потребителей при изменении маркетинговой политики, а значит, находить оптимальные стратегии работы компании.
Одно крупное английское издательство, выпускающее газеты, приобрело у фирмы Neural Innovation Ltd систему планирования цен и затрат, построенную на использовании нейронной сети и генетических алгоритмов. На основе накопленных данных эта система позволяла обнаруживать сложные зависимости между затратами на рекламу, объемом продаж, ценой газеты, ценами конкурентов, днем недели, временем года и рядом других факторов. В результате издательство могло подбирать оптимальную стратегию с точки зрения максимизации объема продаж или прибыли.
Несколько лет назад компания GoalAssist Corporation выполнила заказ крупной маркетинговой фирмы, которой требовалось исследовать стратегию поощрительных товаров (когда, например, присылая несколько этикеток с покупок, покупатель получает бесплатный сувенир). Обычные методы прогнозирования отклика потребителей в данном случае оказались неточными, в результате чего спрос на некоторые поощрительные товары оказался слишком высоким и многим покупателям пришлось подолгу ждать получения приза, в то время как другие подарки остались невостребованными. Чтобы повысить точность прогнозирования поведения потребителей, были использованы нейронные сети, обучающиеся на основе накопленной статистики. Для решения задачи применялись пакеты NeuroShell Classifier (рис. 5) и NeuroShell Predictor (рис. 6) компании Ward Systems Group (http://www.wardsystems.com/), а средняя ошибка предсказаний составила всего около 4%.
Здравоохранение
В свое время в США была введена в действие система обнаружения мошенничеств в области здравоохранения. Было подсчитано, что потери бюджета от такого рода фальсификаций составляют около 730 млн. долл. в год. Создание специализированной нейросетевой системы заняло у фирмы ITC более года и обошлось всего в 2,5 млн. долл. Тестирование новой системы показало, что нейронная сеть позволяет обнаруживать 38% случаев мошенничества, тогда как использовавшаяся до нее экспертная система давала только 14%. Для настройки нейронной системы были применены также методы нечеткой логики и генетической оптимизации.
В медицинской диагностике нейронные сети нередко используются вместе с экспертными системами. Компанией «НейроПроект» была создана система объективной диагностики слуха у грудных детей. Общепринятая методика диагностики состоит в том, что в процессе обследования регистрируются отклики мозга в ответ на звуковой раздражитель, проявляющиеся в виде всплесков на электроэнцефалограмме. Для диагностики слуха ребенка опытному эксперту-аудиологу необходимо провести около 2 тыс. тестов, нейронная сеть способна с той же достоверностью определить уровень слуха уже по 200 наблюдениям в течение всего нескольких минут, причем без участия специалиста.
Приведенные примеры показывают, что технологии нейронных сетей применимы практически в любой области, а в таких задачах, как распознавание образов и прогнозирование котировок акций, они стали уже привычным и широко используемым инструментом. Повсеместное проникновение нейронных технологий в другие области — только вопрос времени. Конечно, внедрение новых наукоемких технологий — процесс сложный, однако практика показывает, что инвестиции не только окупаются и приносят выгоду, но и дают тем, кто их использует, ощутимые преимущества.
Параллельное программирование
Модели программирования для систем с разделяемой, распределенной памятью.
Часто в литературе по параллельной обработке смешиваются или отождествляются понятия моделей (технологий, систем) программирования и моделей выполнения программ, т.е. моделей вычислений. В общем случае это приводит к тому, что детальный анализ структуры алгоритма и особенностей компьютерной архитектуры, на которой он реализуется, подменяется поиском системы программирования без учета того, насколько она адекватна архитектуре и решаемой задаче.
Модель вычислений служит связующим звеном между архитектурой и моделью программирования и в распределенных системах должна отражать взаимодействие процессов. Это взаимодействие представляется явно в некоторых моделях программирования и может быть организовано с помощью стандартных коммуникационных библиотек, например, MPI (Message Passing Interface) или PVM (Parallel Virtual Machine). Другие, более высокоуровневые модели освобождают программиста от выраженного управления параллельными процессами, примитивами передачи сообщений или синхронизации. Так, стандарт OpenMP может рассматриваться как модель программирования систем с разделяемой памятью и надстройка над библиотеками нитей, организуемыми с помощью интерфейса POSIX. Модель вычислений должна помогать в поисках ответа на вопрос: "Насколько эффективно реализуется программа на данной архитектуре?" Эффективность реализации может интерпретироваться как сбалансированность загрузки процессоров, согласованность степени параллелизма и трафика обмена данными, длительность простоя процессоров из-за отсутствия данных и т.д.
Несмотря на большое разнообразие моделей выполнения программ, в масштабируемых системах чаще всего используются две из них – модель обмена сообщениями и модель общей памяти (промежуточная форма – прямой доступ к удаленной памяти). Особенности моделей однако не предполагают их реализаций на архитектурах соответствующего типа. Так, первая может быть надстроена над любой архитектурой. Вторая чаще всего применяется в SMP- и DSM-архитектурах, где программа рассматривается как система нитей, взаимодействующих через общие переменные и примитивы синхронизации. При этом программист имеет дело с привычным для него единым адресным пространством. Основная проблема – обеспечение согласованного состояния памяти [2]. Модель обмена сообщениями позволяет избавиться от проблем разделения памяти и может быть надстроена над архитектурами с общей памятью. Реализация модели разделяемой памяти над архитектурами с передачей сообщений значительно сложнее [5].
Недетерминированные модели распределенной обработки, когда процессы взаимодействуют через асинхронный обмен сообщениями, адекватно представляют многие черты функционирования масштабируемых систем, такие как массовый параллелизм, взаимодействия типа "точка-точка", коммутация пакетов. Недетерминизм означает, что могут иметь место разные истории выполнения программ на одних и тех же входных данных. Помимо поддержки недетерминизма, эти модели обогащаются таким свойством, как произвольная структурированность (неоднородность) сообщений. В модели общей памяти обмен осуществляется строго структурированными данными: слово, кэш-строка, страница и т.д. В неоднородных сообщениях возможно различное число компонентов (например, пакетов), а также различие компонентов по числу операндов. В частности, в технологии SCI транзакции предусматривают передачу пакетов с блоками данных фиксированной и переменной длины. В среде Memory Channel пакеты данных могут иметь длину от 4 до 256 байтов.
Однако сочетание недетерминизма и неоднородности сообщений требует исследования реализуемости моделей (проблем однозначности результата и блокировки вычислений) и алгоритмической разрешимости задач их анализа.
Дополнение
В настоящее время существуют два основных подхода к распараллеливанию вычислений. Это параллелизм данных и параллелизм задач. В англоязычной литературе соответствующие термины - data parallel и message passing. В основе обоих подходов лежит распределение вычислительной работы по доступным пользователю процессорам параллельного компьютера. При этом приходится решать разнообразные проблемы. Прежде всего это достаточно равномерная загрузка процессоров, так как если основная вычислительная работа будет ложиться на один из процессоров, мы приходим к случаю обычных последовательных вычислений и в этом случае никакого выигрыша за счет распараллеливания задачи не будет. Сбалансированная работа процессоров - это первая проблема, которую следует решить при организации параллельных вычислений. Другая и не менее важная проблема - скорость обмена информацией между процессорами. Если вычисления выполняются на высокопроизводительных процессорах, загрузка которых достаточно равномерная, но скорость обмена данными низкая, основная часть времени будет тратиться впустую на ожидание информации, необходимой для дальнейшей работы данного процессора. Рассматриваемые парадигмы программирования различаются методами решения этих двух основных проблем. Разберем более подробно параллелизм данных и параллелизм задач.
Параллелизм данных
Основная идея подхода, основанного на параллелизме данных, заключается в том, что одна операция выполняется сразу над всеми элементами массива данных. Различные фрагменты такого массива обрабатываются на векторном процессоре или на разных процессорах параллельной машины. Распределением данных между процессорами занимается программа. Векторизация или распараллеливание в этом случае чаще всего выполняется уже на этапе компиляции - перевода исходного текста программы в машинные команды. Роль программиста в этом случае обычно сводится к заданию опций векторной или параллельной оптимизации компилятору, директив параллельной компиляции, использованию специализированных языков для параллельных вычислений. Наиболее распространенными языками для параллельных вычислений являются Высокопроизводительный ФОРТРАН (High Performance FORTRAN) и параллельные версии языка C (это, например, C*).
Более детальное описание рассматриваемого подхода к распараллеливанию содержит указание на следующие его основные особенности:
Обработкой данных управляет одна программа;
Пространство имен является глобальным, то есть для программиста существует одна единственная память, а детали структуры данных, доступа к памяти и межпроцессорного обмена данными от него скрыты;
Слабая синхронизация вычислений на параллельных процессорах, то есть выполнение команд на разных процессорах происходит, как правило, независимо и только лишь иногда производится согласование выполнения циклов или других программных конструкций - их синхронизация. Каждый процессор выполняет один и тот же фрагмент программы, но нет гарантии, что в заданный момент времени на всех процессорах выполняется одна и та же машинная команда;
Параллельные операции над элементами массива выполняются одновременно на всех доступных данной программе процессорах.
Видим, таким образом, что в рамках данного подхода от программиста не требуется больших усилий по векторизации или распараллеливанию вычислений. Даже при программировании сложных вычислительных алгоритмов можно использовать библиотеки подпрограмм, специально разработанных с учетом конкретной архитектуры компьютера и оптимизированных для этой архитектуры.
Подход, основанный на параллелизме данных, базируется на использовании при разработке программ базового набора операций:
операции управления данными;
операции над массивами в целом и их фрагментами;
условные операции;
операции приведения;
операции сдвига;
операции сканирования;