Скачать 90.39 Kb.
|
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра Информатики Пояснительная записка к индивидуальному заданию по дисциплине «Компьютерные технологии в науке и производстве». Выполнил: Герман М. А. гр. ИС-503. Проверил: Минасов Ш. М., к. т. н. Уфа 2008 Многослойный персептрон Данный документ является кратким описанием классов для работы с нейронными сетями, обучающимися с использованием обратного распространения. Здесь приведен перечень функций и их назначение. Тип данных MultiLayerPerceptron Для хранения информации о нейронной сети служит структура MultiLayerPerceptron. В полях этой структуры хранится информация о геометрии сети, её настройках и значениях весовых коэффициентов В данной версии программы программисту доступны библиотечные функции для работы с нейронными сетями, но отсутствует доступ к её внутренней информации (например, нельзя узнать весовые коэффициенты у отдельно взятого нейрона - или хотя бы узнать, какие нейроны существуют во внутренних слоях сети). Основные типы нейронных сетей В основе нейросетевой модели лежит следующий принцип: структура сети определяется решаемой задачей. От пользователя требуется минимум информации: выбрать одну из стандартных архитектур в соответствии с типом решаемой задачи, а также указать число скрытых слоев сети и число нейронов в них. В отличие от многих других нейросетевых пакетов, ограничиваются возможности пользователя по заданию структуры сети. Пользователь может задать размеры промежуточных слоев сети, а также тип функции активации в последнем слое (в соответствии с решаемой задачей), однако отсутствует возможность устанавливать тип функции активации у нейронов в промежуточных слоях (всегда используется гиперболический тангенс) или избирательно управлять структурой соединений. По мнению автора, возможность настолько детальной настройки сети редко приносит заметную пользу, поэтому текущая версия интерфейса не содержит средств для подобной настройки. Всего библиотека поддерживает четыре нейросетевые архитектуры с прямыми связями:
Такой набор архитектур достаточен для решения большинства практических задач. Отсутствие излишних деталей позволяет концентрироваться на задаче (классификация или аппроксимация), не уделяя излишнего внимания несущественным деталям (например, выбор конкретной функции активации нелинейного слоя обычно мало влияет на результат). Предобработка данных Предобработка данных является важной частью любого нейросетевого пакета, улучшающей сходимость, качество решений и ускоряющей обучение. Предобработка может быть явной или неявной. В первом - явном случае - предобработка инициируется пользователем и является отдельным этапом обработки данных, никак не связанным с собственно нейронной сетью. Неявная предобработка осуществляется автоматически - прозрачно для пользователя. В библиотеке реализована простейшая форма неявной предобработки: стандартизация входов и сдвиг/масштабирование выходов. Неявность предобработки выражается в том, что пользователь оперирует не-предобработанными данными, а нейронная сеть - предобработанными. Перед передачей данных в нейронную сеть они автоматически подвергаются предобработке, результат работы сети подвергается обратному преобразованию. Технически предобработчик данных состоит из двух дополнительных линейных слоев - одного на входе сети, одного на выходе. Весовые коэффициенты этих слоев вычисляются на основе обучающего множества, однако ключевым моментом является то, что эти слои не участвуют обучении сети. Предобработчик строится на основе неитеративного алгоритма, и только после этого начинается обучение - при этом весовые коэффициенты предобработчика "заморожены" и считаются константами. Стандартизация входов состоит в том, что из каждой компоненты входного вектора вычитается её среднее значение, после чего результат делится на её стандартное отклонение. Средние значения и стандартные отклонения вычисляются на основе обучающего множества (до обучения стандартизатор инициализирован парой чисел {0, 1}, т.е. практически отключен). Даже эта простая процедура заметно улучшает сходимость сети. Стандартизация входов применяется к любым типам нейронных сетей, независимо от их архитектуры. Предобработка выходов представляет более сложную процедуру, детали которой зависят от типа сети. Сеть-классификатор не нуждается в предобработке выходов, т.к. её выходы уже нормализованы. Для сети-аппроксиматора с линейными выходами применяется стандартизация на основе обучающей выборки, по аналогии со стандартизацией входов. При этом, как и в случае с обработкой входов, стандартизация является желательной, но не обязательной - даже без стандартизации такая сеть способна аппроксимировать любую функцию. В оставшихся двух случаях (сети с ограниченными выходами) предобработчик рассчитывается на основе диапазона/полуинтервала, в котором должны находиться результаты работы сети. Функции: базовые операции Ниже приведен список базовых подпрограмм для работы с нейронными сетями:
Базовые концепции обучения Обучение нейронной сети состоит в минимизации некоторой функции ошибки. Обычно в качестве минимизируемой функции выбирается полусумма квадратов ошибок сети. Альтернативным вариантом является использование т.н. естественной функции ошибки, подобранной в соответствии с решаемой задачей и моделью шума. Для сетей-аппроксиматоров естественная функция ошибки выводится из предположения о нормальном распределении шума и совпадает с обычной функцией ошибки. Естественная функция ошибки для сетей-классификаторов - кросс-энтропия, при этом шум имеет распределение Бернулли. Обучающее множество задается в виде двухмерного массива, в строках которого хранятся входы и желаемые выходы (сначала N входов, затем M выходов - в одной строке). Число строк задается дополнительным параметром (обычно он носит имя SSize). Предполагается, что число столбцов соответствует числу входов и выходов сети. Функции: обучение сети с использованием регуляризатора (weight decay) Для обучения сети служат две подпрограммы: MLPTrainSimple, осуществляющая минимизацию полусуммы квадратов ошибок сети, и MLPTrainNSimple, осуществляющая минимизацию естественной функции ошибки. Обе подпрограммы принимают одинаковый набор параметров: обучаемую сеть, обучающее множество и его размер, регуляризирующую константу (параметр weight decay) и число рестартов алгоритма из случайной позиции. Результатом работы подпрограмм является обученная нейронная сеть, а также отчет об обучении (параметр Rep), содержащий информацию о числе эпох, прошедших в ходе обучения, среднеквадратичной ошибке и ошибке классификации. Для обучения используется L-BFGS алгоритм оптимизации с модифицированной функцией остановки. Функции: обучение сети с использованием раннего останова (early stopping) Для обучения сети служат две подпрограммы: MLPTrainESSimple, осуществляющая минимизацию полусуммы квадратов ошибок сети, и MLPTrainNESSimple, осуществляющая минимизацию естественной функции ошибки. Обе подпрограммы принимают одинаковый набор параметров: обучаемую сеть, обучающее множество и его размер, валидатное множество и его размер, а также число рестартов алгоритма из случайной позиции. Результатом работы подпрограмм является обученная нейронная сеть, а также отчет об обучении (параметр Rep), содержащий информацию о числе эпох, прошедших в ходе обучения, среднеквадратичной ошибке и ошибке классификации. Для обучения используется L-BFGS алгоритм оптимизации с искусственно замедленной сходимостью. Функции: кросс-валидация Для оценки способности к обобщению той или иной архитектуры нейронных сетей служит функция MLPKFoldCV. Следует понимать, что хотя в качестве аргумента функция принимает нейронную сеть, она оценивает не конкретную обученную сеть, а именно архитектуру. На основе переданной сети создается FoldsCount нейронных сетей, имеющих то же количество скрытых слоев, нейронов, и те же прочие параметры. Обучающее множество делится на FoldsCount частей, после чего созданные нейронные сети обучаются на различных разбиениях этого множества на обучающее и тестовое (одна из частей - тестовая, остальные - обучающие; всего FoldsCount вариантов). Функция возвращает среднеквадратичную ошибку и среднюю ошибку классификации на тестовом множестве. Функции: ошибка сети Полусумма квадратов отклонений и кросс-энтропия используются для обучения сети, однако они не очень подходят для оценки качества результатов. Существует ряд критериев, по которым можно оценить, насколько хорошо нейронная сеть решает задачу:
Внутренние функции Внутренние функции - это набор низкоуровневых функций, решающих такие задачи, как вычисление функции ошибки нейронной сети (функции, минимизируемой в ходе обучения), расчет градиента и гессиана. Обычному пользователю нейросетевого пакета нет необходимости вызывать эти подпрограммы, однако они могут пригодиться желающему реализовать свои алгоритмы для обучения нейронных сетей. Доступны следующие служебные функции:
|
![]() | Государственное образовательное учреждение высшего профессионального образования «омский государственный технический университет»... | ![]() | Государственного образовательного учреждения высшего профессионального образования Российский химико-технологический университет |
![]() | Сеть книжных магазинов. – Челябинск: юурГУ, ЭиП-208, 2012. – 50 с., 13 ил., 1 прил | ![]() | Пояснительная записка: с., рис., схем программ и алгоритмов, библиограф. Источник, приложения |
![]() | Пояснительная записка к курсовой работе 10 страниц, 2 рисунка, 1 таблица, 3 источника | ![]() | |
![]() | Вычислительная система цифровой обработки сигналов в реальном времени пояснительная записка | ![]() | Вычислительная система цифровой обработки сигналов в реальном времени пояснительная записка |
![]() | Вычислительная система цифровой обработки сигналов в реальном времени пояснительная записка | ![]() | Пояснительная записка: 55 с., 6 рис., 6 схем программ и алгоритмов, 6 библиограф источников |