Как правильно задать обучающую выборку для нейронной сети?
К примеру, есть такой набор данных для supervised learning, задача классификации:
Входные данные — это 20 дискретных параметров в диапазоне от 1 до 200. Каждое значение — это некоторый класс. Номера классов никак не связаны, т.е. отношения больше\меньше между ними нет, так что номера по сути ничего не значат. Сами параметры равноправные, разницы между первым и вторым тоже нет.
Выходные данные — это номер одного из этих 20 параметров, которые надо выбрать.
Аналогия — есть несколько игральных карт различного достоинства, и надо выбрать одну из них.
Входные данные
1) Могут быть непосредственно 20 значений в диапазоне 1-200.
2) Или это может быть разбиение по количеству классов среди входных переменных — т.е. это будет 200 параметров в диапазоне 1-20. Большинство из них будут равны 0, некоторые — 1, с очень небольшой вероятностью — 2 и более. Но тогда связей в сети получается куда больше.
И по выходным данным —
1) Это может быть 200 значений, номер выбранного класса. Но такое представление допускает нейронной сети сделать выбор класса, который не представлен во входных значениях.
2) Номер выбранного параметра. Но тогда перестановка входных значений может легко привести к иному результату, наверное.
Как же правильно представить такие данные?
- Вопрос задан более трёх лет назад
- 2846 просмотров
Комментировать
Решения вопроса 1
B@rmaley.e>
Аналогично с выходом. Если предсказывать одно число, то это эквивалентно предположению, что предсказать 21 вместо 20 не так страшно, как выдать 1000. Опять же, для категориальных признаков это неправда.
Итого, если вход состоит из 20 категориальных признаков, то каждый признак нужно заменить на множество новых, получаемых one-hot-кодированием (так же известным как dummy variables): для каждого значения такого признака создаётся новый признак-индикатор, равный 1 только если соответствующий признак данного наблюдения равен соответствующему значению.
Обучающая выборка в задаче распознавания образов при использовании нейронных сетей Текст научной статьи по специальности «Компьютерные и информационные науки»
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Татьянкин Виталий Михайлович, Дюбко Ирина Сергеевна
В статье рассматриваются подходы к формированию обучающей выборки в задаче распознавания монохромных образов. Показано, что вариация обучающей выборки , позволяет понизить ошибку обучения нейронной сети. Предложены практические рекомендации к формированию обучающей выборки .
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Татьянкин Виталий Михайлович, Дюбко Ирина Сергеевна
Нейронные сети глубокого доверия в сравнение с многослойным персептроном
Способ идентификации образов
Подход к формированию архитектуры нейронной сети для распознавания образов
Алгоритмы обучения сверточных нейронных сетей
Применение сверточной нейронной сети для распознавания рукописных цифр
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
The article discusses approaches to the formation of the training sample in the problem of recognition of monochrome images. It is shown that the variation of the training sample, allows to reduce the error of neural network training. Practical recommendations for the formation of a training sample.
Текст научной работы на тему «Обучающая выборка в задаче распознавания образов при использовании нейронных сетей»
ВЕСТНИК ЮГОРСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
2015 г. Выпуск 2 (37). С. 94-98
ОБУЧАЮЩАЯ ВЫБОРКА В ЗАДАЧЕ РАСПОЗНАВАНИЯ ОБРАЗОВ ПРИ ИСПОЛЬЗОВАНИИ НЕЙРОННЫХ СЕТЕЙ
В. М. Татьянкин, И. С. Дюбко Введение
В настоящее время не существует сферы человеческой деятельности, где бы ни применялись технологии распознавания образов или не планировалось применение. В качестве примера можно привести медицину, где по симптомам определяют болезнь, банковское дело, где принимается решение о выдаче кредита и т. д.
Одним из эффективных инструментов, применяемых для решения задач распознавания образов, являются нейронные сети [1]. При использовании нейронных сетей требуется выполнения двух этапов: формирование обучающей выборки и процесс обучения нейронной сети. Несмотря на свою простоту, первый этап является определяющим для качественного обучения нейронной сети.
Для демонстрации этого утверждения рассмотрим классическую задачу распознавания образов, заключающуюся в идентификации символов как рукописных, так и печатных. При этом подходы, которые используются для решения классической задачи, являются универсальными, то есть возможно применение для решения в других задачах распознавания образов.
Имеется база изображений рукописных цифр (ноль и один), приведённая к бинарному виду [2]. Размер каждого изображения 20 на 20 пикселей, например, цифра один выглядит следующем образом (рисунок 1):
Рисунок 1 — Изображение цифры один
математически это представляется в виде матрицы:
, i = 1. 20, j = 1.. .20,
где Imageij — бинарная матрица, состоящая из i строк и j столбцов, описывающая цифру один, t — номер изображения.
Всего изображений 1783 в том числе:
Требуется обучить нейронную сеть, которая смогла бы по изображению идентифицировать цифру, то есть ноль, либо один.
Для решения задачи будем использовать многослойную нейронную сеть с одним скрытым слоем и сигмоидными функциями активации, представленную на рисунке 2.
Обучающая выборка в задаче распознавания образов при использовании нейронных сетей
Для обучения весовых коэффициентов и выбора количества элементов в скрытом слое будем использовать модифицированный алгоритм обратного распространения ошибкии Алгоритм формирования оптимальной архитектуры многослойной нейронной сети [3, 4].
Для формирования обучающие выборки и, соответственно, входного слоя нейронной сети рассмотрим три варианта:
Размер обучающей выборки равняется количеству пикселей в изображении, то есть 400(20×20), соответственно, каждый нейрон входного слоя отвечает за один пиксель:
■ Ттаде( 1)1Д Image(2000)1Д ‘
/mage (1) 1,20 lmage(1)20,i
Image (2000) 120 Image (2000) 201 ’
_Image (1)20,20 Image(2000)2o,2o-
где Trainingit — обучающая выборка,
i=1. 400 — количество нейронов входного слоя, t — количество обучающих выборок.
Изображения Image(t)ijотсортированы в следующем порядке: при t=1. 81, изображение соответствует единице, остальные, при t=82. 1783, — нулю.
Эталонные значения выберем произвольным образом из интервала (0:1), так как это множество значений, которые принимает функция активации нейронов, например:
0.9, если символ соответствует нулю 0.1, если символ соответствует единицы’
Для обучения будем использовать ЭВМ со следующими характеристиками:
• частота процессора — 2500 гц;
• оперативная память — 2 гб;
• операционная система — windows7, 64 бит.
Время работы алгоритма обучения соответствует 600 секундам (10 минут).
На рисунке 3 представлен график ошибки обучения нейронной сети в зависимости от времени:
В. М. Татьянкин, И. С. Дюбко
Рисунок 3 — График ошибки обучения нейронной сети
Как видно из рисунка 3, минимальная ошибка обучения, достигнутая при обучении, равняется 0.3. Используя архитектуру нейронной сети соответствующей минимальной ошибке, определим количество верно идентифицированных образов (выборка для теста соответствует обучающей), согласно следующему правилу:
0, если значение нейронной сети > 0.5, (4)
Изменим расположение значений в обучающей выборке: изображения /rna^e(t)j,y при t=1. 1702, соответствуют единице, остальные, при t=1703. 1783, — нулю.
Не меняя параметры обучения, получаем следующий график ошибки обучения нейронной сети:
Рисунок 4 — График ошибки обучения нейронной сети
Обучающая выборка в задаче распознавания образов при использовании нейронных сетей
Используя архитектуру нейронной сети, соответствующей минимальной ошибке (0.4), определим количество верно идентифицированных образов. Получаем 1699 положительных результатов (95,2 %), проанализировав полученные результаты, можно сделать вывод, что он распознал верно все единицы, в то же время нули не все верно. Логично предположить, что на качество обучения и соответственно на идентификацию, влияет расположение изображений в обучающей выборке.
Изменим расположение значений в обучающей выборке: изображения Image^t)^у, при t=1. 2n+1 n=1. 81, соответствуют единице, остальные нулю.
Не меняя параметры обучения, получаем следующий график ошибки обучения нейронной сети:
Рисунок 5 — График ошибки обучения нейронной сети
Используя архитектуру нейронной сети, соответствующей минимальной ошибке (1.45), определим количество верно идентифицированных образов. Получаем 1774 положительных результатов (99,5%), то есть чередование отличных друг от друга символов в обучающей выборке позволило повысить качество идентификации изображения.
Рассмотрим ещё один вариант формирования обучающей выборки: изображения /таде^^упри t=1. 2n+1 n=1. 1702, соответствуют единице, остальные нулю.
Не меняя параметры обучения, получаем следующий график ошибки обучения нейронной сети:
Рисунок 6 — График ошибки обучения нейронной сети
В. М. Татьянкин, И. С. Дюбко
Используя архитектуру нейронной сети соответствующей минимальной ошибке (2.2), определим количество верно идентифицированных образов. Получаем 1779 положительных результатов (99,8 %), что позволяет использовать данную нейронную сеть на практике.
В результате численных экспериментов была показана важность формирования обучающей выборки при обучении нейронных сетей. При различных вариантах формирования обучающей выборки, ошибка распознавания символов изменялась от 4,5 % до 0,2 %. По результатам проделанной работы, можно сделать следующею рекомендацию:
1. Длина обучающей выборки определяется согласно следующему выражению:
где n — количество образов для распознавания;
m — максимальное количество одного образа.
2. Формировать выборку для обучения нужно чередуя различные образы.
1. Головко, В. А. Нейронные сети: обучение, организация и применение : учеб. пособие для вузов [Текст] / В. А. Головко ; под общ. ред. А. И. Галушкина. — Кн. 10. — М. : ИПРЖР, 2000.
Краткий курс машинного обучения или как создать нейронную сеть для решения скоринг задачи
Мы часто слышим такие словесные конструкции, как «машинное обучение», «нейронные сети». Эти выражения уже плотно вошли в общественное сознание и чаще всего ассоциируются с распознаванием образов и речи, с генерацией человекоподобного текста. На самом деле алгоритмы машинного обучения могут решать множество различных типов задач, в том числе помогать малому бизнесу, интернет-изданию, да чему угодно. В этой статье я расскажу как создать нейросеть, которая способна решить реальную бизнес-задачу по созданию скоринговой модели. Мы рассмотрим все этапы: от подготовки данных до создания модели и оценки ее качества.
Если тебе интересно машинное обучение, то приглашаю в «Мишин Лернинг» — мой субъективный телеграм-канал об искусстве глубокого обучения, нейронных сетях и новостях из мира искусственного интеллекта.
Вопросы, которые разобраны в статье:
• Как собрать и подготовить данные для построения модели?
• Что такое нейронная сеть и как она устроена?
• Как написать свою нейронную сеть с нуля?
• Как правильно обучить нейронную сеть на имеющихся данных?
• Как интерпретировать модель и ее результаты?
• Как корректно оценить качество модели?
«Вопрос о том, может ли компьютер думать, не более интересен,
чем вопрос о том, может ли субмарина плавать».
Эдсгер Вибе Дейкстра
Во многих компаниях, менеджеры по продажам общаются с потенциальными клиентами, проводят им демонстрации, рассказывают о продукте. Отдают, так сказать, свою душу по сотому разу на растерзание тем, кто, возможно, попал в их руки совершенно случайно. Часто клиенты недостаточно понимают, что им нужно, или то, что продукт может им дать. Общение с такими клиентами не приносит ни удовольствия, ни прибыли. А самое неприятное то, что из-за ограничения по времени, можно не уделить достаточно внимания действительно важному клиенту и упустить сделку.
Я математик-программист в сервисе seo-аналитики Serpstat. Недавно я получил интересную задачу по улучшению уже существующей и работающей у нас скоринговой модели, по-новому оценив факторы, которые влияют на успех продажи. Скоринг считался на основе анкетирования наших клиентов, и каждый пункт, в зависимости от ответа на вопрос, вносил определенное количество очков в суммарный балл. Все эти баллы за разные вопросы расставлялись на основе статистических гипотез. Скоринговая модель использовалась, время шло, данные собирались и в один прекрасный день попали ко мне. Теперь, когда у меня появилась достаточная выборка, можно было смело строить гипотезы, используя алгоритмы машинного обучения.
Я расскажу вам, как мы построили свою скоринг модель. Это реальный кейс с реальными данными, со всеми трудностями и ограничениями, с которыми мы столкнулись в реальном бизнесе. Итак, обо всем по порядку.
Мы подробно остановимся на всех этапах работы:
▸ Сбор данных
▸ Препроцессинг
▸ Построение модели
▸ Анализ качества и интерпретация модели
Рассмотрим устройство, создание и обучение нейросети. Все это я описываю, решая реальную скоринговую задачу, и постоянно подкрепляю новую теорию примером.
Сбор данных
Вначале нужно понять, какие вопросы будут представлять клиента (или просто объект) в будущей модели. К задаче подходим серьезно, так как на ее основании строится дальнейший процесс. Во-первых, нужно не упустить важные признаки, описывающие объект, во-вторых, создать жесткие критерии для принятия решения о признаке. Основываясь на опыте, я могу выделить три категории вопросов:
- Булевы (бикатегориальные), ответом на которые является: Да или Нет (1 или 0). Например, ответ на вопрос: есть ли у клиента аккаунт?
- Категориальные, ответом на которые является конкретный класс. Обычно классов больше двух (мультикатегориальные), иначе вопрос можно свести к булевому. Например, цвет: красный, зеленый или синий.
- Количественные, ответами на которые являются числа, характеризующее конкретную меру. Например, количество обращений в месяц: пятнадцать.
Данные должны иметь следующую классическую структуру: вектор признаков для каждого i-го клиента X (i) = 1, x (i) 2, . x (i) n> и класс Y (i) — категория, показывающая купил он или нет. Например: клиент (3) = — купил.
Основываясь на вышесказанном, попробуем представить формат данных с типами вопросов, для дальнейшей подготовки:
класс: (категория) |
цвет: (категория) |
вкус: (категория) |
вес: (число) |
твердый: (bool) |
---|---|---|---|---|
— | красный | кислый | 4.23 | да |
— | зеленый | горький | 3.15 | нет |
+ | зеленый | горький | 4.14 | да |
+ | синий | сладкий | 4.38 | нет |
— | зеленый | соленый | 3.62 | нет |
Таблица 1 — Пример данных обучающей выборки до препроцессинга
Препроцессинг
После того как данные собраны, их необходимо подготовить. Этот этап называется препроцессинг. Основная задача препроцессинга — отображение данных в формат пригодный для обучения модели. Можно выделить три основных манипуляции над данными на этапе препроцессинга:
- Создание векторного пространства признаков, где будут жить примеры обучающей выборки. По сути, это процесс приведения всех данных в числовую форму. Это избавляет нас от категорийных, булевых и прочих не числовых типов.
- Нормализация данных. Процесс, при котором мы добиваемся, например того, чтобы среднее значение каждого признака по всем данным было нулевым, а дисперсия — единичной. Вот самый классический пример нормализации данных: X = (X — μ)/σ
функция нормализации
def normalize(X): return (X-X.mean())/X.std()
- Для повышения размерности можно использовать часть обучающей выборки как опорные точки, добавив в вектор признаков расстояние до этих точек. Этот метод часто приводит к тому, что в пространствах более высокой размерности множества становятся линейно разделимыми, и это упрощает задачу классификации.
- Для понижения размерности чаще всего используют PCA. Основная задача метода главных компонент — поиск новых линейных комбинаций признаков, вдоль которых максимизируется дисперсия значений проекций элементов обучающей выборки.
Например, элемент выборки может быть или горьким, или сладким, или соленым, или кислым, или умами (мясным). Тогда One-Hot кодировка будет следующей: горький = (1, 0, 0, 0 ,0), сладкий = (0, 1, 0, 0 ,0), соленый = (0, 0, 1, 0 ,0), кислый = (0, 0, 0, 1 ,0), умами = (0, 0, 0, 0, 1). Если у вас возник вопрос почему вкусов пять, а не четыре, то ознакомьтесь с этой статьей о вкусовой сенсорной системе, ну а к скорингу это никакого отношения не имеет, и мы будем использовать четыре, ограничившись старой классификацией.
Теперь мы научились превращать категориальные признаки в обычные числовые вектора, а это очень полезно. Проведя все манипуляции над данными, мы получим обучающую выборку, подходящую любой модели. В нашем случае, после применения унитарной кодировки и нормализации данные выглядят так:
class: | red: | green: | blue: | bitter: | sweet: | salti: | sour: | weight: | solid: |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0.23 | 1 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | -0.85 | 0 |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0.14 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0.38 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | -0.48 | 0 |
Таблица 2 — Пример данных обучающей выборки после препроцессинга
Можно сказать, что препроцессинг — это процесс отображения понятных нам данных в менее удобную для человека, но зато в излюбленную машинами форму.
Формула скоринга чаще всего представляет из себя следующую линейную модель:
Где, k — это номер вопроса в анкете, wk — коэффициент вклада ответа на этот k-ый вопрос в суммарный скоринг, |w| — количество вопросов (или коэффициентов), xk — ответ на этот вопрос. При этом вопросы могут быть любыми, как мы и обсуждали: булевыми(да или нет, 1 или 0), числовыми (например, рост = 175) или категориальными, но представленными в виде унитарной кодировки (зеленый из перечня: красный, зеленый или синий = [0, 1, 0]). При этом можно считать, что категориальные вопросы распадаются на столько булевых, сколько категорий присутствует в вариантах ответа (например: клиент красный? клиент зеленый? клиент синий?).
Выбор модели
Теперь самое важное: выбор модели. На сегодняшний день существует множество алгоритмов машинного обучения, на основе которых можно построить скоринг модель: Decision Tree (дерево принятия решений), KNN (метод k-ближайших соседей), SVM (метод опорных векторов), NN (нейросеть). И выбор модели стоит основывать на том, чего мы от нее хотим. Во-первых, насколько решения, повлиявшие на результаты модели, должны быть понятными. Другими словами, насколько нам важно иметь возможность интерпретировать структуру модели.
Рис. 1 — Зависимость гибкости алгоритма машинного обучения и интерпретируемости полученной модели
Кроме того, не все модели легко построить, для некоторых требуются весьма специфические навыки и очень-очень мощное железо. Но самое важное — это внедрение построенной модели. Бывает так, что бизнес-процесс уже налажен, и внедрение какой-то сложной модели попросту невозможно. Или требуется именно линейная модель, в которой клиенты, отвечая на вопросы, получают положительные или отрицательные баллы в зависимости от варианта ответа. Иногда, напротив, есть возможность внедрения, и даже требуется сложная модель, учитывающая очень неочевидные сочетания входных параметров, находящая взаимосвязи между ними. Итак, что же выбрать?
В выборе алгоритма машинного обучения мы остановились на нейронной сети. Почему? Во-первых, сейчас существует много крутых фреймворков, таких как TensorFlow, Theano. Они дают возможность очень глубоко и серьезно настраивать архитектуру и параметры обучения. Во-вторых, возможность менять устройство модели от однослойной нейронной сети, которая, кстати, неплохо интерпретируема, до многослойной, обладающей отличной способностью находить нелинейные зависимости, меняя при этом всего пару строчек кода. К тому же, обученную однослойную нейросеть можно превратить в классическую аддитивную скоринг модель, складывающую баллы за ответы на разные вопросы анкетирования, но об этом чуть позже.
Теперь немного теории. Если для вас такие вещи, как нейрон, функция активации, функция потери, градиентный спуск и метод обратного распространения ошибки — родные слова, то можете смело это все пропускать. Если нет, добро пожаловать в краткий курс искусственных нейросетей.
Краткий курс искусственных нейронных сетей
Начнем с того, что искусственные нейронные сети (ИНС) — это математические модели организации реальных биологических нейронных сетей (БНС). Но в отличие от математических моделей БНС, ИНС не требует точное описание всех химических и физических процессов, таких как описание «поджигания» потенциала действия (ПД), работы нейромедиаторов, ионных каналов, вторичных посредников, белков транспортеров и пр. От ИНС требуется схожесть с работой реальных БНС только на функциональном, а не на физическом уровне.
Базовый элемент нейросети — нейрон. Попробуем составить самую простую функциональную математическую модель нейрона. Для этого опишем в общих чертах функционирование биологического нейрона.
Рис. 2 — Типичная структура биологического нейрона
Как мы видим, структуру биологического нейрона можно упростить до следующей: дендриты, тело нейрона и аксон. Дендриты — ветвящиеся отростки, собирающие информацию со входа в нейрон (это может быть внешняя информация с рецепторов, например с колбочки в случае цвета или внутренняя информация от другого нейрона). В том случае, если входящая информация активировала нейрон (в биологическом случае — потенциал стал выше какого-то порога), рождается волна возбуждения (ПД), которая распространяется по мембране тела нейрона, а затем через аксон, посредством выброса нейромедиатора, передает сигнал другим нервным клетками или тканям.
Основываясь на этом, Уоррен Мак-Каллок и Уолтер Питтс в 1943 году предложили модель математического нейрона. А в 1958 году Френк Розенблатт на основе нейрона Мак-Каллока-Питтса создал компьютерную программу, а затем и физическое устройство — перцептрон. С этого и началась история искусственных нейронных сетей. Теперь рассмотрим структурную модель нейрона, с которым мы будем иметь дело дальше.
Рис. 3 — Модель математического нейрона Мак-Каллока-Питтса
- X — входной вектор параметров. Вектор (столбец) чисел (биол. степень активации разных рецепторов), пришедших на вход нейрону.
W — вектор весов (в общем случае — матрица весов), числовые значение, которые меняются в процессе обучения (биол. обучение на основе синаптической пластичности, нейрон учится правильно реагировать на сигналы с его рецепторов). - Сумматор — функциональный блок нейрона, который складывает все входные параметры умноженные на соответствующие им веса.
- Функция активации нейрона — есть зависимость значения выхода нейрона от значения пришедшего от сумматора.
- Следующие нейроны, куда на один из множества их собственных входов подается значение с выхода данного нейрона (этот слой может отсутствовать, если этот нейрон последний, терминальный).
реализация математического нейрона
import numpy as np def neuron(x, w): z = np.dot(w, x) output = activation(z) return output
Затем из этих минимальных структурных единиц собирают классические искусственные нейронные сети. Принята следующая терминология:
- Входной (рецепторный) слой — это вектор параметров (признаков). Этот слой не состоит из нейронов. Можно сказать, что это цифровая информация, снятая рецепторами из «внешнего» мира. В нашем случае это информация о клиенте. Слой содержит столько элементов, сколько входных параметров (плюс bias-term нужный для сдвига порога активации).
- Ассоциативный (скрытый) слой — глубинная структура, способная к запоминанию примеров, нахождению сложных корреляций и нелинейных зависимостей, к построению абстракций и обобщений. В общем случае это даже не слой, а множество слоев между входными и выходными. Можно сказать, что каждый слой подготавливает новый (более высокоуровневый) вектор признаков для следующего слоя. Именно этот слой отвечает за появление в процессе обучения высокоуровневых абстракций. Структура содержит столько нейронов и слоев, сколько душе угодно, а может и вообще отсутствовать (в случае классификации линейно разделимых множеств).
- Выходной слой — это слой, каждый нейрон которого отвечает за конкретный класс. Выход этого слоя можно интерпретировать как функцию распределения вероятности принадлежности объекта разным классам. Слой содержит столько нейронов, сколько классов представлено в обучающей выборке. Если класса два, то можно использовать два выходных нейрона или ограничиться всего одним. В таком случае один нейрон по-прежнему отвечает только за один класс, но если он выдает значения близкие к нулю, то элемент выборки по его логике должен принадлежать другому классу.
Рис. 4 — Классическая топология нейросети, со входным (рецепторным), выходным, принимающим решение о классе, и ассоциативным (скрытым) слоем
Именно благодаря наличию скрытых ассоциативных слоев, искусственная нейронная сеть способна строить гипотезы, основанные на нахождении сложных зависимостей. Например, для сверточных нейросетей, распознающих изображения, на входной слой будут подаваться значения яркости пикселей изображения, а выходной слой будет содержать нейроны, отвечающие за конкретные классы (человек, машина, дерево, дом и т. д.) В процессе обучения в близких к «рецепторам» скрытых слоях начнут «сами собой» появляться (специализироваться) нейроны, возбуждающиеся от прямых линий, разного угла наклона, затем реагирующие на углы, квадраты, окружности, примитивные паттерны: чередующиеся полоски, геометрические сетчатые орнаменты. Ближе к выходным слоям — нейроны, реагирующие, например, на глаз, колесо, нос, крыло, лист, лицо и т. д.
Рис. 5 — Образование иерархических ассоциаций в процессе обучения сверточной нейронной сети
Проводя биологическую аналогию, хочется сослаться на слова замечательного нейрофизиолога Вячеслава Альбертовича Дубынина, касающиеся речевой модели:
«Наш мозг способен создавать, генерировать такие слова, которые обобщают слова более низкого уровня. Скажем, зайчик, мячик, кубики, кукла ― игрушки; игрушки, одежда, мебель ― это предметы; а предметы, дома, люди ― это объекты окружающей среды. И так еще немного, и мы дойдем до абстрактных философских понятий, математических, физических. То есть речевое обобщение ― это очень важное свойство нашей ассоциативной теменной коры, и оно, вдобавок, многоуровневое и позволяет речевую модель внешнего мира формировать, как целостность. В какой-то момент оказывается, что нервные импульсы способны очень активно двигаться по этой речевой модели, и это движение мы и называем гордым словом «мышление».
Много теории?! Но есть и хорошие новости: в самом простом случае вся нейросеть может быть представлена одним единственным нейроном! При этом даже один нейрон часто хорошо справляется с задачей, особенно, когда дело касается распознавания класса объекта в пространстве, в котором объекты этих классов являются линейно сепарабельными. Часто добиться линейно сепарабельности можно повысив размерность пространства, о чем было написано выше, и ограничиться всего одним нейроном. Но иногда проще добавить в нейросеть пару скрытых слоев и не требовать от выборки линейной сепарабельности.
Рис. 6 — Линейно разделимые множества и линейно неразделимые множества
Ну а теперь давайте опишем все это формально. На входе нейрона мы имеем вектор параметров. В нашем случае это результаты анкетирования клиента, представленные в числовой форме X (i) = 1, x (i) 2, . x (i) n>. При этом каждому клиенту сопоставлен Y (i) — класс, характеризующий успешность лида (1 или 0). Нейросеть, по сути, должна найти оптимальную разделяющую гиперповерхность в векторном пространстве, размерность которого соответствует количеству признаков. Обучение нейронной сети в таком случае — нахождение таких значений (коэффициентов) матрицы весов W, при которых нейрон, отвечающий за класс, будет выдавать значения близкие к единице в тех случаях, если клиент купит, и значения близкие к нулю, если нет.
Как видно из формулы, результат работы нейрона — это функция активации (часто обозначаемая через ) от суммы произведения входных параметров на искомые в процессе обучения коэффициенты. Разберемся что же такое функция активации.
Так как на вход нейросети могут поступать любые действительные значения, и коэффициенты матрицы весов тоже могут быть какими угодно, то и результатом суммы их произведений может быть любое вещественное число от минус до плюс бесконечности. У каждого элемента обучающей выборки есть значение класса относительно этого нейрона (ноль или один). Желательно получить от нейрона значение в этом же диапазоне от нуля до единицы, и принять решение о классе, в зависимости от того, к чему это значение ближе. Еще лучше интерпретировать это значение как вероятность того, что элемент относится к этому классу. Значит, нам нужна такая монотонная гладкая функция, которая будет отображать элементы из множества вещественных чисел в область от нуля до единицы. На эту должность отлично подходит так называемая сигмоида.
Рис. 7 — График логистической кривой, одной из самых классических представительниц класса сигмоид
функция активации
def activation(z): return 1/(1+np.exp(-z))
Кстати, в реальных биологических нейронах такая непрерывная функция активации не реализовалась. В наших с вами клетках существует потенциал покоя, который составляет в среднем -70mV. Если на нейрон подается информация, то активированный рецептор, открывает сопряженные с ним ионные каналы, что приводит к повышению или понижению потенциала в клетке. Можно провести аналогию между силой реакции на активацию рецептора и полученным в процессе обучения одним коэффициентом матрицы весов. Как только потенциал достигает значения в -50mV, возникает ПД, и волна возбуждения доходит по аксону до пресинаптического окончания, выбрасывая нейромедиатор в межсинаптическую среду. То есть реальная биологическая активация — ступенчатая, а не гладкая: нейрон либо активировался, либо нет. Это показывает, насколько мы математически свободны в построении наших моделей. Взяв у природы основной принцип распределенного вычисления и обучения, мы способны построить вычислительный граф, состоящий из элементов, обладающих любыми желаемыми свойствами. В нашем примере мы желаем получать от нейрона континуальные, а не дискретные значения. Хотя в общем случае функция активации может быть и другой.
Вот самое важное, что стоит извлечь из написанного выше: «Обучение нейросети (синаптическое обучение) должно свестись к оптимальному подбору коэффициентов матрицы весов с целью минимизации допускаемой ошибки.» В случае однослойной нейросети эти коэффициенты можно интерпретировать как вклад параметров элемента в вероятность принадлежности к конкретному классу.
Результат работы нейросети принято называть гипотезой (англ. hypothesis). Обозначают через h(X), показывая зависимость гипотезы от входных признаков (параметров) объекта. Почему гипотезой? Так уж исторически сложилось. Лично мне этот термин нравится. В итоге мы хотим, чтобы гипотезы нейросети как можно больше соответствовали действительности (реальным классам объектов). Собственно здесь и рождается основная идея обучения на опыте. Теперь нам потребуется мера, описывающая качество нейросети. Этот функционал обычно называют «функцией потерь» (англ. loss function). Функционал обычно обозначают через J(W), показывая его зависимость от коэффициентов матрицы весов. Чем функционал меньше, тем реже наша нейросеть ошибается и тем это лучше. Именно к минимизации этого функционала и сводится обучение. В зависимости от коэффициентов матрицы весов нейросеть может иметь разную точность. Процесс обучения — это движение по гиперповерхности функционала потери, целью которого является минимизация этого функционала.
Рис. 8 — Процесс обучения, как градиентный спуск к локальному минимуму функционала потери
Обычно коэффициенты матрицы весов инициализируются случайным образом. В процессе обучения коэффициенты меняются. На графике показаны два разных итерационных пути обучения как изменение коэффициентов w1 и w2 матрицы весов нейросети, проинициализированных в соседстве.
Теперь собственно о том, как обучить нейросеть. Для этого существует множество вариантов, но я расскажу о двух: эволюционный (генетический) алгоритм и метод градиентного спуска. Эволюционные алгоритмы — это направление в искусственном интеллекте, которое основывается на моделировании естественного отбора. Раньше такой подход использовался для тренировки глубинных слоев нейросети. Эволюционные алгоритмы полностью уступили свое место оптимизаторам на основе градиентного спуска для задачи обучения глубох нейронных сетей, но они по-прежнему могут использоваться для образовательных целей: эволюционные алгоритмы очень просты в понимании, и с них лучше начинать новичкам, их стоит знать для дальнейшего сравнения вычислительной сложности и сходимости с другими (популярными ныне) методами. Метод градиентного спуска и обратного распространения ошибки более сложный, но зато один из самых эффективных и популярных методов обучения, наследниками которого являются популярные сейчас NAG, Adagrad, Adadelta, RMSprop, Adam, Nadam и т.д.
Эволюционное обучение
В рамках этого метода оперируем следующей терминологией: коэффициенты матрицы весов — геном, один коэффициент — ген, «перевернутая вниз головой» функция потерь — ландшафт приспособленности (тут мы уже ищем локальный максимум, но это всего лишь условность). Этот метод и вправду очень простой. После того как мы выбрали топологию (устройство) нейросети, необходимо сделать следующее:
-
Проинициализировать геном (матрицу весов) случайным образом в диапазоне от -1 до 1. Повторить это несколько раз, тем самым создав начальную популяцию разных, но случайных нейросетей. Размер популяции обозначим через P — population or parents.
случайная инициализация коэффициентов матрицы весов
import random def generate_population(p, w_size): population = [] for i in range(p): model = [] for j in range(w_size + 1): # +1 for b (bias term) model.append(2 * random.random() - 1) # random initialization from -1 to 1 for b and w population.append(model) return np.array(population)
реализация мутагенеза
def mutation(genom, t=0.5, m=0.1): mutant = [] for gen in genom: if random.random()
Алгоритм обучения искусственных нейронных сетей на основе больших выборок с повторяющимися примерами Текст научной статьи по специальности «Компьютерные и информационные науки»
ИСКУССТВЕННАЯ НЕЙРОННАЯ СЕТЬ / ARTIFICIAL NEURAL NETWORK / АЛГОРИТМ ОБУЧЕНИЯ НЕЙРОННОЙ СЕТИ / NEURAL NETWORK'S TRAINING ALGORITHM / ОБУЧАЮЩАЯ ВЫБОРКА / TRAINING SAMPLE / ПОВТОРЯЮЩИЕСЯ ПРИМЕРЫ / REPEATING EXAMPLES
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Папаев Павел Леонидович, Дударов Сергей Павлович
Представлен новый подход к обучению искусственных нейронных сетей (на примере двухслойного перцептрона) с использованием выборок больших размеров с повторяющимися примерами и частоты наблюдения определённых комбинаций входных переменных в реальном процессе или явлении. Описанный подход позволяет уменьшить объём используемых обучающих данных и, как следствие, ускорить процесс обучения, а также обеспечить приемлемое качество в условиях ограниченного времени обучения многослойных нейронных сетей с большим количеством скрытых нейронов при очень больших обучающих выборках.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Папаев Павел Леонидович, Дударов Сергей Павлович
Модель универсального нейросетевого дефаззификатора
Гетероассоциативная искусственная нейронная сеть: задачи, элементы, структура и алгоритм обучения
Структура, генетический алгоритм обучения и изучение вычислительной способности нейроноподобного КМ-элемента
Распараллеливание процесса обучения многомерного нейросетевого классификатора при моделировании роста алмазных плёнок
Сравнительный анализ архитектур логических нейронных сетей для классификации бинарных векторов
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
ALGORITHM OF ARTIFICIAL NEURAL NETWORK TRAINING BASED ON LARGESIZE SAMPLES WITH REPEATING EXAMPLES
There is presented a new approach to artificial neural networks training (by the example of two-layer perceptron) using largesize samples with repeating examples and the frequency of observation of certain input variables combinations during real process or phenomenon. Described approach allows to decrease a dimension of used training data, therefore to intensify a training process and to ensure acceptable quality in conditions of limited time of training of multilayer neural networks with the large number of hidden neurons when very large training samples.
Текст научной работы на тему «Алгоритм обучения искусственных нейронных сетей на основе больших выборок с повторяющимися примерами»
_Успехи в химии и химической технологии. ТОМ XXIX. 2015. № 4_
П. Л. Папаев, С. П. Дударов*
Российский химико-технологический университет им. Д.И. Менделеева, Москва, Россия 125480, Москва, ул. Героев Панфиловцев, д. 20 * e-mail: dudarov@muctr.ru
АЛГОРИТМ ОБУЧЕНИЯ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ НА ОСНОВЕ БОЛЬШИХ ВЫБОРОК С ПОВТОРЯЮЩИМИСЯ ПРИМЕРАМИ
Представлен новый подход к обучению искусственных нейронных сетей (на примере двухслойного перцептрона) с использованием выборок больших размеров с повторяющимися примерами и частоты наблюдения определённых комбинаций входных переменных в реальном процессе или явлении. Описанный подход позволяет уменьшить объём используемых обучающих данных и, как следствие, ускорить процесс обучения, а также обеспечить приемлемое качество в условиях ограниченного времени обучения многослойных нейронных сетей с большим количеством скрытых нейронов при очень больших обучающих выборках.
Ключевые слова: искусственная нейронная сеть, алгоритм обучения нейронной сети, обучающая выборка, повторяющиеся примеры.
Общепринятой практикой в задачах нейросетевого моделирования справедливо считается применение процедур исключения повторяющихся и противоречивых примеров с целью уменьшения размера обучающей выборки и, как следствие, ускорения самого процесса обучения [1]. Однако практический опыт решения таких задач показывает, что данный подход подтверждает свою эффективность всегда для малых и средних объёмов обучающих данных (до нескольких сотен примеров) и отнюдь не постоянно для выборок больших размеров, насчитывающих тысячи, десятки и сотни тысяч примеров. Связано это с тем, что для небольших выборок почти всегда можно подобрать достаточно простую структуру нейронной сети и осуществить процесс её обучения за приемлемый интервал времени таким образом, что она, если не обучится обобщать все возможные входные наборы с выдачей правильного отклика, то, по крайней мере, запомнит обучающие данные. Для больших же выборок, требующих к тому же более сложных структур нейронных сетей, временной фактор, обусловленный огромным объёмом вычислений, вступает в противоречие с достижением достаточного уровня ошибки обучения. И если для выборок размера в несколько тысяч примеров можно найти определённый баланс между временем обучения и уровнем ошибки, то в случаях, когда размер выборки достигает десяток и сотен тысяч примеров, не помогает даже распараллеливание вычислительных процедур.
В ряде случаев большие выборки содержат большое количество повторов, обусловленных частотой, с которой во время реального процесса или явления встречаются различные комбинации входных переменных. Исключение повторяющихся примеров, безусловно, способствует уменьшению размера выборки и увеличению количества эпох обучения в единицу времени. Как следствие большего количества итераций подстройки весовых
коэффициентов, ошибка обучения также может быть начительно уменьшена. Однако общий размер выборки остаётся достаточно большим, чтобы не позволить реализовать процесс обучения одинаково хорошо для всех примеров в условиях ограниченного разумными рамками времени. В этой связи часть примеров выборки решается с ошибками, причём вероятность ошибки одинакова как для редко встречавшихся в исходной выборке примеров, так и для часто встречавшихся в ней.
Всё это приводит к тому, что на этапе практического использования достаточно хорошо обученная нейронная сеть будет значительно чаще давать неправильный отклик и, как результат, большую ошибку. Причина этого кроется именно в различной частоте использования одних и тех же примеров на этапах обучения и практического использования: при обучении - одинаково часто, на практике - с различной частотой.
В данной публикации предлагается решить озвученную проблему за счёт использования четырёх дополнительных мер на разных этапах стадии настройки и обучения жизненного цикла нейронной сети:
- изменения этапа анализа повторяемости примеров в массиве обучающих данных;
- модификации структуры обучающей выборки;
- изменения алгоритма обучения;
- коррекции критерия обучения.
Анализ обучающих данных на наличие повторов остаётся необходимым этапом стадии настройки и обучения. Более того, происходит и существенное сокращение обучающей выборки, так как в ней всё равно остаются только уникальные примеры. В то же время на данном этапе дополнительно рассчитывается количество копий N каждого примера с номером к. Зная общее количество примеров в исходной выборке N¡6, определяется частота его присутствия в ней:
Данная информация становится неотъемлемым атрибутом любого к-го примера выборки и далее должна быть использована в процессе обучения. Таким образом, помимо столбцов входных и выходных значений переменных новая выборка дополняется столбцом частот присутствия соответствующих примеров в исходном массиве обучающих данных.
Приведённый далее алгоритм обучения использует в работе модифицированную вышеописанным способом выборку:
1. Задаются настройки искусственной нейронной сети (количество слоёв и нейронов в каждом слое, параметры активационных функций) и алгоритма обучения (предельно заданное количество тактов пересчёта весовых коэффициентов (тактов обучения) и коэффициент скорости обучения).
2. Весовые коэффициенты нейронов инициализируются небольшими случайными значениями.
3. Выбирается случайный пример обучающей выборки: на первом такте - любой; на каждом следующем такте обучения с номером Т - один из тех, для которых выполняется условие: ц/к ^ Щ, где ц/к -частота использования к-го примера для коррекции весовых коэффициентов нейронной сети. Последняя характеристика рассчитывается по соотношению:
где Мк - количество раз использования к-го примера для обучения нейронной сети после (Т-1) тактов обучения.
4. Весовые коэффициенты нейронов изменяются с использованием корректирующих соотношений используемого метода обучения, например, методов Уидроу-Хоффа или обратного распространения ошибки [1].
5. Проверяется достижение предельно заданного количества тактов обучения. Если оно не достигнуто, алгоритм продолжает работу с п. 3, иначе - переход к п. 6.
6. Выполняется оценка качества обучения нейронной сети с использованием следующего выражения накопленной ошибки:
Последнее расчётное соотношение отличается от аналогов учётом частоты срк, с которой к-й пример встречается во время моделируемого процесса или явления. Таким образом, производимая с его помощью оценка будет соответствовать существующей в действительности картине.
Следует заметить, что в данном алгоритме не используется традиционное обучение нейронной сети по эпохам - циклам однократного предъявления в случайном порядке всех примеров обучающей выборки.
Рассмотрим примеры использования
предложенного алгоритма для обучения двухслойного перцептрона (рис. 1) на примере двух серий вычислительных экспериментов с двумя выборками, содержащими, соответственно, 500 и 5000 уникальных обучающих примеров, для каждого из которых заранее известна частота его реализации во время реального процесса или явления. Использованные структуры двухслойных перцептронов включали 5 входных независимых переменных и 2 выходные результирующие переменные (2 искусственных нейрона в выходном слое). Количество скрытых нейронов N0^ варьировалось от 3 до 25.
Поскольку инициализация весовых
коэффициентов нейронной сети и порядок предъявления примеров обучающей выборки осуществляются случайным образом, ход процесса обучения для одинаковых настроек и структуры на практике не может повториться, а его фактическая скорость немного меняется. В этой связи для каждого опыта была проведена серия из 5 попыток обучения. Все приводимые далее на графиках данные - это средние арифметические значения по 5 попыткам.
Для коррекции весовых коэффициентов на каждом такте обучения использовались расчётные соотношения метода обратного распространения ошибки.
где Ук,- - значение результирующей переменной с
номером, в обучающем примере с номером к; Ур- -
значение результирующей переменной с номером рассчитанной по обученной нейронной сети для входного вектора обучающего примера с номером к; ^ых - количество выходных переменных. Ошибка Е также может быть выражена в процентах, т. к. рассчитывается для выходных переменных, нормализованных в пределах [0, 1].
Рис. 1. Структура двухслойного перцептрона
На рисунке 2 показана зависимость ошибки обучения от сложности структуры перцептрона, изменявшейся за счёт добавления или сокращения количества скрытых нейронов для выборки в 500 примеров после 10000 тактов обучения. На данном графике сравниваются структуры сетей, обучавшихся по предложенному алгоритму с учётом различной
частоты использования каждого примера, и аналогичные им структуры сетей, обучавшихся на выборках с одинаковой частотой использования каждого примера (эквивалент традиционного подхода). Из рисунка видно, что подтверждается общеизвестная тенденция к уменьшению ошибки с усложнением структуры сети. Однако главное наблюдение - это наличие в среднем 0,5 % разницы в
ошибке в пользу предложенного подхода для двухслойных перцептронов практически любой сложности. В некоторых случаях в зависимости от размера выборки, сложности структуры сети и сложности воспроизводимой ею функциональной зависимости разница может достигать 1-2 %, что весьма существенно для не до конца обученных перцептронов.
' Без частоты ' С частотой .
■ - - „ ________ __ - - - ---- 6,84
05 10 15 20 Количество скрытых нейронов 25
Рис. 2. Зависимость ошибки обучения от количества нейронов в скрытом слое
На рисунке 3 показано распределение ошибок для нейронных сетей, обучавшихся с использованием предложенного и традиционного подходов на 500 и 5000 примерах, в зависимости от количества тактов обучения. Из представленной диаграммы можно сделать следующие выводы:
- увеличение продолжительности обучения способствует снижению ошибки для всех случаев;
- учёт частоты использования примеров позволяет снизить ошибку, причём для
рассмотренных массивов данных это снижение более заметно для выборок среднего размера, чем для больших, что объясняется не очень большой сложностью описываемых функциональных зависимостей;
- та же самая причина вкупе с большей репрезентативностью обучающих данных
обусловливает, на наш взгляд, меньшую ошибку (на 2-3 %) для выборки размера 5000 примеров в сравнении с выборкой, содержащей 500 примеров.
Рис. 3. Распределение ошибок для выборок из 500 и 5000 примеров при различной продолжительности обучения
Полученные результаты позволяют сделать общий вывод о том, что использование частоты повторяемости примеров в процессе обучения позволяет быстрее достигать требуемого уровня ошибки. Таким образом, была подтверждена эффективность предложенного подхода, в первую
очередь, для сложных функциональных зависимостей, описываемых большими массивами обучающих данных, в условиях ограниченных вычислительных ресурсов и времени обучения нейронной сети.
Папаев Павел Леонидович, аспирант кафедры Информационных компьютерных технологий РХТУ им. Д. И. Менделеева, Россия, Москва.
Дударов Сергей Павлович, к.т.н., доцент кафедры Информационных компьютерных технологий, декан факультета Информационных технологий и управления РХТУ им. Д. И. Менделеева, Россия, Москва.
1. Дударов С. П. Теоретические основы и практическое применение искусственных нейронных сетей: учеб.пособие/ С. П. Дударов, П. Л. Папаев. - М.: РХТУ им. Д. И. Менделеева, 2014. - 104 c.
Papaev PavelLeonidovich, Dudarov Sergey Pavlovich*
D. Mendeleev University of Chemical Technology of Russia, Moscow, Russia * e-mail: dudarov@muctr.ru
ALGORITHM OF ARTIFICIAL NEURAL NETWORK TRAINING BASED ON LARGESIZE SAMPLES WITH REPEATING EXAMPLES
There is presented a new approach to artificial neural networks training (by the example of two-layer perceptron) using largesize samples with repeating examples and the frequency of observation of certain input variables combinations during real process or phenomenon. Described approach allows to decrease a dimension of used training data, therefore to intensify a training process and to ensure acceptable quality in conditions of limited time of training of multilayer neural networks with the large number of hidden neurons when very large training samples.
Key words: artificial neural network, neural network's training algorithm, training sample, repeating examples.