Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве»




Скачать 90.39 Kb.
НазваниеПояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве»
Дата публикации15.03.2013
Размер90.39 Kb.
ТипПояснительная записка
www.vbibl.ru > Информатика > Пояснительная записка
Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования
УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра Информатики

Пояснительная записка
к индивидуальному заданию
по дисциплине «Компьютерные технологии в науке и производстве».

Выполнил:
Герман М. А. гр. ИС-503.

Проверил:
Минасов Ш. М., к. т. н.


Уфа 2008

Многослойный персептрон

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

Тип данных MultiLayerPerceptron

Для хранения информации о нейронной сети служит структура MultiLayerPerceptron. В полях этой структуры хранится информация о геометрии сети, её настройках и значениях весовых коэффициентов

В данной версии программы программисту доступны библиотечные функции для работы с нейронными сетями, но отсутствует доступ к её внутренней информации (например, нельзя узнать весовые коэффициенты у отдельно взятого нейрона - или хотя бы узнать, какие нейроны существуют во внутренних слоях сети).

Основные типы нейронных сетей

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

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

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

  • Нейронная сеть с линейным выходным слоем. Используется для общих задач аппроксимации, без каких-либо ограничений на выходные значения сети. Согласно обобщенной аппроксимационной теореме, такая сеть может аппроксимировать произвольную нелинейную функцию. При этом возможные значения выходов не ограничены диапазоном [-1,+1] (или каким-либо иным диапазоном). Имеет три варианта - без скрытых слоев, с одним или с двумя скрытыми слоями - создающиеся функциями MLPCreate0, MLPCreate1, MLPCreate2.

  • Нейронная сеть со сжимающей функцией активации. Создается функциями MLPCreateR0, MLPCreateR1, MLPCreateR2. Используется для задач аппроксимации, в которых выход сети должен быть ограничен диапазоном [a,b] (допускается задание произвольных a и b). В качестве функции активации обычно используется гиперболический тангенс. Масштабирующий коэффициент и коэффициент сдвига позволяют перенести диапазон значений в любой отрезок на действительной оси.

  • Нейронная сеть с ограниченной сверху/снизу функцией активации. Создается функциями MLPCreateB0, MLPCreateB1, MLPCreateB2. Используется для задач аппроксимации, в которых выход сети должен быть не больше или не меньше фиксированного значения (например, ноля). В качестве функции активации используется результат склейки экспоненты и аффинного преобразования гиперболы. В простейшем случае эта функция стремится к x при x стремящемся к +∞, и экспоненциально стремится к нулю при x стремящемся к -∞.

  • Нейронная сеть с линейным выходным слоем и SOFTMAX-нормализацией выходов. Используется для задач классификации, в которых выходы сети должны быть неотрицательны и их сумма должна быть строго равна единице, что позволяет использовать их, как вероятности отнесения входного вектора к одному из классов (в предельном случае выходы обученной сети сходятся к этим вероятностям). Число выходов такой сети всегда не менее двух (ограничение, диктуемое элементарной логикой). В некоторых программных пакетах для двоичной классификации используются сети с одним выходом и логистической функцией активации, однако такая сеть функционально эквивалентна SOFTMAX-сети с двумя выходами. Создается функциями MLPCreateC0, MLPCreateC1, MLPCreateC2.

Такой набор архитектур достаточен для решения большинства практических задач. Отсутствие излишних деталей позволяет концентрироваться на задаче (классификация или аппроксимация), не уделяя излишнего внимания несущественным деталям (например, выбор конкретной функции активации нелинейного слоя обычно мало влияет на результат).

Предобработка данных

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

В библиотеке реализована простейшая форма неявной предобработки: стандартизация входов и сдвиг/масштабирование выходов. Неявность предобработки выражается в том, что пользователь оперирует не-предобработанными данными, а нейронная сеть - предобработанными. Перед передачей данных в нейронную сеть они автоматически подвергаются предобработке, результат работы сети подвергается обратному преобразованию. Технически предобработчик данных состоит из двух дополнительных линейных слоев - одного на входе сети, одного на выходе. Весовые коэффициенты этих слоев вычисляются на основе обучающего множества, однако ключевым моментом является то, что эти слои не участвуют обучении сети. Предобработчик строится на основе неитеративного алгоритма, и только после этого начинается обучение - при этом весовые коэффициенты предобработчика "заморожены" и считаются константами.

Стандартизация входов состоит в том, что из каждой компоненты входного вектора вычитается её среднее значение, после чего результат делится на её стандартное отклонение. Средние значения и стандартные отклонения вычисляются на основе обучающего множества (до обучения стандартизатор инициализирован парой чисел {0, 1}, т.е. практически отключен). Даже эта простая процедура заметно улучшает сходимость сети. Стандартизация входов применяется к любым типам нейронных сетей, независимо от их архитектуры.

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

Функции: базовые операции

Ниже приведен список базовых подпрограмм для работы с нейронными сетями:

  • Функция MLPCopy осуществляет копирование нейронной сети (если копирование структур не поддерживается используемым языком программирования).

  • Функция MLPSerialize осуществляет сериализацию нейронной сети, т.е. упаковку сети в два массива - вещественных и целых чисел. Массивы, полученные в результате сериализации, могут использоваться для сохранения сети в файл. Обратная операция осуществляется функцией MLPUnserialize.

  • Для рандомизации сети служат функция MLPRandomize, рандомизирующая весовые коэффициенты без изменения предобработчика данных, и функция MLPRandomizeFull, осуществляющая полную рандомизацию сети (включая предобработчик).

  • Функция MLPProperties возвращает число входов, выходов сети, а также число весовых коэффициентов.

  • Функция MLPProcess возвращает результат обработки входного вектора сетью. Эта функция принимает в качестве параметра инициализированную нейронную сеть и входной массив X, задающий входы сети. Результат обработки входного вектора нейронной сетью помещается в выходной массив Y. Следует отметить, что функция не выделяет память под массив, в котором хранится её результат. Это должна сделать вызывающая её программа.

  • Функция MLPIsSoftmax возвращает информацию о том, является ли сеть классификатором с SOFTMAX-нормализацией выходов.

Базовые концепции обучения

Обучение нейронной сети состоит в минимизации некоторой функции ошибки. Обычно в качестве минимизируемой функции выбирается полусумма квадратов ошибок сети. Альтернативным вариантом является использование т.н. естественной функции ошибки, подобранной в соответствии с решаемой задачей и моделью шума. Для сетей-аппроксиматоров естественная функция ошибки выводится из предположения о нормальном распределении шума и совпадает с обычной функцией ошибки. Естественная функция ошибки для сетей-классификаторов - кросс-энтропия, при этом шум имеет распределение Бернулли.

Обучающее множество задается в виде двухмерного массива, в строках которого хранятся входы и желаемые выходы (сначала N входов, затем M выходов - в одной строке). Число строк задается дополнительным параметром (обычно он носит имя SSize). Предполагается, что число столбцов соответствует числу входов и выходов сети.

Функции: обучение сети с использованием регуляризатора (weight decay)

Для обучения сети служат две подпрограммы: MLPTrainSimple, осуществляющая минимизацию полусуммы квадратов ошибок сети, и MLPTrainNSimple, осуществляющая минимизацию естественной функции ошибки. Обе подпрограммы принимают одинаковый набор параметров: обучаемую сеть, обучающее множество и его размер, регуляризирующую константу (параметр weight decay) и число рестартов алгоритма из случайной позиции. Результатом работы подпрограмм является обученная нейронная сеть, а также отчет об обучении (параметр Rep), содержащий информацию о числе эпох, прошедших в ходе обучения, среднеквадратичной ошибке и ошибке классификации. Для обучения используется L-BFGS алгоритм оптимизации с модифицированной функцией остановки.

Функции: обучение сети с использованием раннего останова (early stopping)

Для обучения сети служат две подпрограммы: MLPTrainESSimple, осуществляющая минимизацию полусуммы квадратов ошибок сети, и MLPTrainNESSimple, осуществляющая минимизацию естественной функции ошибки. Обе подпрограммы принимают одинаковый набор параметров: обучаемую сеть, обучающее множество и его размер, валидатное множество и его размер, а также число рестартов алгоритма из случайной позиции. Результатом работы подпрограмм является обученная нейронная сеть, а также отчет об обучении (параметр Rep), содержащий информацию о числе эпох, прошедших в ходе обучения, среднеквадратичной ошибке и ошибке классификации. Для обучения используется L-BFGS алгоритм оптимизации с искусственно замедленной сходимостью.

Функции: кросс-валидация

Для оценки способности к обобщению той или иной архитектуры нейронных сетей служит функция MLPKFoldCV. Следует понимать, что хотя в качестве аргумента функция принимает нейронную сеть, она оценивает не конкретную обученную сеть, а именно архитектуру. На основе переданной сети создается FoldsCount нейронных сетей, имеющих то же количество скрытых слоев, нейронов, и те же прочие параметры. Обучающее множество делится на FoldsCount частей, после чего созданные нейронные сети обучаются на различных разбиениях этого множества на обучающее и тестовое (одна из частей - тестовая, остальные - обучающие; всего FoldsCount вариантов). Функция возвращает среднеквадратичную ошибку и среднюю ошибку классификации на тестовом множестве.

Функции: ошибка сети

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

  • Абсолютная ошибка классификации (число неверно классифицированных случаев на тестовом множестве). Вычисляется функцией MLPClsError. Функция может вызываться как для сетей-классификаторов, так и для сетей-аппроксиматоров (в случае, если такая сеть используется для решения задачи классификации).

  • Средняя ошибка. Вычисляется функцией MLPAvgError. Функция может вызываться как для сетей-аппроксиматоров, так и для сетей-классификаторов, хотя в последнем варианте мало смысла.

  • Средняя относительная ошибка. Вычисляется функцией MLPAvgRelError (в случае, если одно из желаемых значений выходов равно нулю, то, во избежание деления на ноль, оно не учитывается при вычислении средней относительной ошибки).

  • Среднеквадратичная ошибка. Вычисляется функцией MLPRMSError.

Внутренние функции

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

  • MLPError - вычисляет функцию ошибки сети, использующуюся для обучения (полусумму квадратов ошибок).

  • MLPErrorN - вычисляет естественную функцию ошибки.

  • MLPGrad - вычисляет градиент функции ошибки для отдельной пары вход/желаемый выход.

  • MLPGradN - вычисляет градиент естественной функции ошибки.

  • MLPGradBatch - вычисляет градиент функции ошибки на передаваемом множестве входов и желаемых выходов.

  • MLPGradNBatch - вычисляет градиент естественной функции ошибки на передаваемом множестве входов и желаемых выходов.

  • MLPHessianNBatch - вычисляет гессиан естественной функции ошибки на передаваемом множестве входов и желаемых выходов.

Добавить документ в свой блог или на сайт

Похожие:

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconПояснительная записка к практическому заданию по дисциплине «Современные...
Государственное образовательное учреждение высшего профессионального образования «омский государственный технический университет»...

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconПояснительная записка к курсовой работе по дисциплине «технологии программирования»
Государственного образовательного учреждения высшего профессионального образования Российский химико-технологический университет

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconПояснительная записка к курсовой работе по дисциплине «Алгоритмизация...
Сеть книжных магазинов. – Челябинск: юурГУ, ЭиП-208, 2012. – 50 с., 13 ил., 1 прил

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconОтчет по лабораторной работе по дисциплине "Технологии программирования"...
Пояснительная записка: с., рис., схем программ и алгоритмов, библиограф. Источник, приложения

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconПояснительная записка к курсовой работе по дисциплине «Интеллектуальные подсистемы сапр»
Пояснительная записка к курсовой работе 10 страниц, 2 рисунка, 1 таблица, 3 источника

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconВопросы к экзамену по дисциплине «Компьютерные информационные технологии»

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconПояснительная записка к курсовому проекту по дисциплине: «Процессоры...
Вычислительная система цифровой обработки сигналов в реальном времени пояснительная записка

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconПояснительная записка к курсовому проекту по дисциплине: «Процессоры...
Вычислительная система цифровой обработки сигналов в реальном времени пояснительная записка

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconПояснительная записка к курсовому проекту по дисциплине: «Процессоры...
Вычислительная система цифровой обработки сигналов в реальном времени пояснительная записка

Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве» iconАвтоматизированная система генерирования линейных кроссвордов Пояснительная...
Пояснительная записка: 55 с., 6 рис., 6 схем программ и алгоритмов, 6 библиограф источников

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
www.vbibl.ru
Главная страница