ПОД (пособие) (1184372), страница 38
Текст из файла (страница 38)
Чтобы повыситьточность прогнозирования поведения потребителей, были использованы нейронные сети,обучающиеся на основе накопленной статистики. Для решения задачи применялись пакетыNeuroShell Classifier (рис. 5) и NeuroShell Predictor (рис. 6) компании Ward Systems Group(http://www.wardsystems.com/), а средняя ошибка предсказаний составила всего около 4%.ЗдравоохранениеВ свое время в США была введена в действие система обнаружения мошенничеств вобласти здравоохранения.
Было подсчитано, что потери бюджета от такого родафальсификаций составляют около 730 млн. долл. в год. Создание специализированнойнейросетевой системы заняло у фирмы ITC более года и обошлось всего в 2,5 млн. долл.Тестирование новой системы показало, что нейронная сеть позволяет обнаруживать 38%случаев мошенничества, тогда как использовавшаяся до нее экспертная система давалатолько 14%. Для настройки нейронной системы были применены также методы нечеткойлогики и генетической оптимизации.119В медицинской диагностике нейронные сети нередко используются вместе с экспертнымисистемами. Компанией «НейроПроект» была создана система объективной диагностикислуха у грудных детей.
Общепринятая методика диагностики состоит в том, что в процессеобследования регистрируются отклики мозга в ответ на звуковой раздражитель,проявляющиеся в виде всплесков на электроэнцефалограмме. Для диагностики слухаребенка опытному эксперту-аудиологу необходимо провести около 2 тыс.
тестов,нейронная сеть способна с той же достоверностью определить уровень слуха уже по 200наблюдениям в течение всего нескольких минут, причем без участия специалиста.Приведенные примеры показывают, что технологии нейронных сетей применимыпрактически в любой области, а в таких задачах, как распознавание образов ипрогнозирование котировок акций, они стали уже привычным и широко используемыминструментом. Повсеместное проникновение нейронных технологий в другие области —только вопрос времени. Конечно, внедрение новых наукоемких технологий — процесссложный, однако практика показывает, что инвестиции не только окупаются и приносятвыгоду, но и дают тем, кто их использует, ощутимые преимущества.Параллельное программированиеМодели программирования для систем с разделяемой, распределеннойпамятью.Часто в литературе по параллельной обработке смешиваются или отождествляются понятиямоделей (технологий, систем) программирования и моделей выполнения программ, т.е.моделей вычислений.
В общем случае это приводит к тому, что детальный анализструктуры алгоритма и особенностей компьютерной архитектуры, на которой онреализуется, подменяется поиском системы программирования без учета того, насколькоона адекватна архитектуре и решаемой задаче.Модель вычислений служит связующим звеном между архитектурой и модельюпрограммирования и в распределенных системах должна отражать взаимодействиепроцессов.
Это взаимодействие представляется явно в некоторых моделяхпрограммирования и может быть организовано с помощью стандартныхкоммуникационных библиотек, например, MPI (Message Passing Interface) или PVM (ParallelVirtual Machine). Другие, более высокоуровневые модели освобождают программиста отвыраженного управления параллельными процессами, примитивами передачи сообщенийили синхронизации. Так, стандарт OpenMP может рассматриваться как модельпрограммирования систем с разделяемой памятью и надстройка над библиотеками нитей,организуемыми с помощью интерфейса POSIX. Модель вычислений должна помогать впоисках ответа на вопрос: "Насколько эффективно реализуется программа на даннойархитектуре?"Эффективностьреализацииможетинтерпретироватьсякаксбалансированность загрузки процессоров, согласованность степени параллелизма итрафика обмена данными, длительность простоя процессоров из-за отсутствия данных и т.д.Несмотря на большое разнообразие моделей выполнения программ, в масштабируемыхсистемах чаще всего используются две из них – модель обмена сообщениями и модельобщей памяти (промежуточная форма – прямой доступ к удаленной памяти).
Особенностимоделей однако не предполагают их реализаций на архитектурах соответствующего типа.Так, первая может быть надстроена над любой архитектурой. Вторая чаще всегоприменяется в SMP- и DSM-архитектурах, где программа рассматривается как система120нитей, взаимодействующих через общие переменные и примитивы синхронизации. Приэтом программист имеет дело с привычным для него единым адресным пространством.Основная проблема – обеспечение согласованного состояния памяти [2].
Модель обменасообщениями позволяет избавиться от проблем разделения памяти и может бытьнадстроена над архитектурами с общей памятью. Реализация модели разделяемой памятинад архитектурами с передачей сообщений значительно сложнее [5].Недетерминированныемоделираспределеннойобработки,когдапроцессывзаимодействуют через асинхронный обмен сообщениями, адекватно представляют многиечерты функционирования масштабируемых систем, такие как массовый параллелизм,взаимодействия типа "точка-точка", коммутация пакетов.
Недетерминизм означает, чтомогут иметь место разные истории выполнения программ на одних и тех же входныхданных. Помимо поддержки недетерминизма, эти модели обогащаются таким свойством,как произвольная структурированность (неоднородность) сообщений. В модели общейпамяти обмен осуществляется строго структурированными данными: слово, кэш-строка,страница и т.д. В неоднородных сообщениях возможно различное число компонентов(например, пакетов), а также различие компонентов по числу операндов. В частности, втехнологии SCI транзакции предусматривают передачу пакетов с блоками данныхфиксированной и переменной длины. В среде Memory Channel пакеты данных могут иметьдлину от 4 до 256 байтов.Однако сочетание недетерминизма и неоднородности сообщений требует исследованияреализуемости моделей (проблем однозначности результата и блокировки вычислений) иалгоритмической разрешимости задач их анализа.ДополнениеВ настоящее время существуют два основных подхода к распараллеливанию вычислений.Это параллелизм данных и параллелизм задач.
В англоязычной литературесоответствующие термины - data parallel и message passing. В основе обоих подходов лежитраспределение вычислительной работы по доступным пользователю процессорампараллельного компьютера. При этом приходится решать разнообразные проблемы.Прежде всего это достаточно равномерная загрузка процессоров, так как если основнаявычислительная работа будет ложиться на один из процессоров, мы приходим к случаюобычных последовательных вычислений и в этом случае никакого выигрыша за счетраспараллеливания задачи не будет.
Сбалансированная работа процессоров - это перваяпроблема, которую следует решить при организации параллельных вычислений. Другая ине менее важная проблема - скорость обмена информацией между процессорами. Есливычисления выполняются на высокопроизводительных процессорах, загрузка которыхдостаточно равномерная, но скорость обмена данными низкая, основная часть временибудет тратиться впустую на ожидание информации, необходимой для дальнейшей работыданного процессора.
Рассматриваемые парадигмы программирования различаютсяметодами решения этих двух основных проблем. Разберем более подробно параллелизмданных и параллелизм задач.Параллелизм данныхОсновная идея подхода, основанного на параллелизме данных, заключается в том,что одна операция выполняется сразу над всеми элементами массива данных. Различныефрагменты такого массива обрабатываются на векторном процессоре или на разныхпроцессорах параллельной машины. Распределением данных между процессорамизанимается программа. Векторизация или распараллеливание в этом случае чаще всеговыполняется уже на этапе компиляции - перевода исходного текста программы в машинныекоманды. Роль программиста в этом случае обычно сводится к заданию опций векторной121или параллельной оптимизации компилятору, директив параллельной компиляции,использованию специализированных языков для параллельных вычислений.
НаиболеераспространеннымиязыкамидляпараллельныхвычисленийявляютсяВысокопроизводительный ФОРТРАН (High Performance FORTRAN) и параллельные версииязыка C (это, например, C*).Более детальное описание рассматриваемого подхода к распараллеливаниюсодержит указание на следующие его основные особенности:Обработкой данных управляет одна программа;Пространство имен является глобальным, то есть для программиста существует однаединственная память, а детали структуры данных, доступа к памяти и межпроцессорногообмена данными от него скрыты;Слабая синхронизация вычислений на параллельных процессорах, то есть выполнениекоманд на разных процессорах происходит, как правило, независимо и только лишь иногдапроизводится согласование выполнения циклов или других программных конструкций - ихсинхронизация.
Каждый процессор выполняет один и тот же фрагмент программы, но нетгарантии, что в заданный момент времени на всех процессорах выполняется одна и та жемашинная команда;Параллельные операции над элементами массива выполняются одновременно на всехдоступных данной программе процессорах.Видим, таким образом, что в рамках данного подхода от программиста не требуетсябольших усилий по векторизации или распараллеливанию вычислений. Даже припрограммировании сложных вычислительных алгоритмов можно использовать библиотекиподпрограмм, специально разработанных с учетом конкретной архитектуры компьютера иоптимизированных для этой архитектуры.Подход, основанный на параллелизме данных, базируется на использовании приразработке программ базового набора операций:операции управления данными;операции над массивами в целом и их фрагментами;условные операции;операции приведения;операции сдвига;операции сканирования;операции, связанные с пересылкой данных.Рассмотрим эти базовые наборы операций.Управление данными.В определенных ситуациях возникает необходимость в управлении распределениемданных между процессорами.
Это может потребоваться, например, для обеспеченияравномерной загрузки процессоров. Чем более равномерно загружены работой процессоры,тем более эффективной будет работа компьютера.Операции над массивамиАргументами таких операций являются массивы в целом или их фрагменты(сечения), при этом данная операция применяется одновременно (параллельно) ко всемэлементам массива. Примерами операций такого типа являются вычисление поэлементнойсуммы массивов, умножение элементов массива на скалярный или векторный множитель ит.д. Операции могут быть и более сложными - вычисление функций от массива, например.Условные операцииЭти операции могут выполняться лишь над теми элементами массива, которыеудовлетворяют какому-то определенному условию.