Книга: Учебное пособие по курсу «Нейроинформатика»
Лекция 8. Предобработчик
Данная глава посвящена компоненту предобработчик. В ней рассматриваются различные аспекты предобработки входных данных для нейронных сетей. Существует множество различных видов нейронных сетей (см. главу «Описание нейронных сетей»). Однако, для большинства нейронных сетей характерно наличие такого интервала входных сигналов, в пределах которого сигналы различимы. Для различных нейронных сетей эти интервалы различны. Большинство работающих с нейронными сетями прекрасно осведомлены об этом их свойстве, но до сих пор не предпринималось никаких попыток как-либо формализовать или унифицировать подходы к предобработке входных сигналов. В данной главе дан один из возможных формализмов этой задачи. За рамками рассмотрения осталась предобработка графической информации. Наиболее мощные и интересные способы предобработки графической информации описаны в [91]. При аппаратной реализации нейрокомпьютера, компонент предобработчик также следует реализовывать аппаратно, поскольку вне зависимости от источника входных данных их надо обрабатывать одинаково. К тому же большинство предобработчиков допускают простую аппаратную реализацию.
В этой главе будут описаны различные виды входных сигналов и способы их предобработки. В качестве примера будут рассмотрены сети с сигмоидными нелинейными преобразователями. Однако, описываемые способы предобработки применимы для сетей с произвольными нелинейными преобразователями. Единственным исключением является раздел «Оценка способности сети решить задачу», который применим только для сетей с нелинейными преобразователями, непрерывно зависящими от своих аргументов.
Наиболее важным в данной являются следующее.
При предобработке качественных признаков не следует вносить недостоверную информацию.
Сформулирована мера сложности нейросетевой задачи.
Выборочная оценка константы Липшица и оценка константы Липшица нейронной сети позволяют легко оценить способность нейронной сети решить поставленную задачу. Эти легко реализуемые процедуры позволяют сэкономить время и силы.
Правильно выбранная предобработка упрощает нейросетевую задачу.
Нейрон
Нейроны, используемые в большинстве нейронных сетей, имеют структуру, приведенную на рис. 1. На рис. 1 использованы следующие обозначения:
x — вектор входных сигналов нейрона;
? — вектор синаптических весов нейрона;
? — входной сумматор нейрона;
p = (?,x) — выходной сигнал входного сумматора;
? — функциональный преобразователь;
y — выходной сигнал нейрона.
Обычно нейронные сети называют по виду функции ?(p). Хорошо известны и наиболее часто используются два вида сигмоидных сетей:
S1: ?(p) = 1/(1+exp(-cp)),
S2: ?(p) = p/(c+|p|),
где c — параметр, называемый «характеристикой нейрона». Обе функции имеют похожие графики.
Каждому типу нейрона соответствует свой интервал приемлемых входных данных. Как правило, этот диапазон либо совпадает с диапазоном выдаваемых выходных сигналов (например для сигмоидных нейронов с функцией S1), либо является объединением диапазона выдаваемых выходных сигналов и отрезка, симметричного ему относительно нуля (например, для сигмоидных нейронов с функцией S2), Этот диапазон будем обозначать как [a,b]
Различимость входных данных
Очевидно, что входные данные должны быть различимы. В данном разделе будут приведены соображения, исходя из которых, следует выбирать диапазон входных данных. Пусть одним из входных параметров нейронной сети является температура в градусах Кельвина. Если речь идет о температурах близких к нормальной, то входные сигналы изменяются от 250 до 300 градусов. Пусть сигнал подается прямо на нейрон (синаптический вес равен единице). Выходные сигналы нейронов с различными параметрами приведены в табл. 1.
Таблица 1
Входной сигнал | Нейрон типа S1 | Нейрон типа S2 | ||||||
---|---|---|---|---|---|---|---|---|
c=0.1 | c=0.5 | c=1 | c=2 | c=0.1 | c=0.5 | c=1 | c=2 | |
250 | 1.0 | 1.0 | 1.0 | 1.0 | 0.99960 | 0.99800 | 0.99602 | 0.99206 |
275 | 1.0 | 1.0 | 1.0 | 1.0 | 0.99964 | 0.99819 | 0.99638 | 0.99278 |
300 | 1.0 | 1.0 | 1.0 | 1.0 | 0.99967 | 0.99834 | 0.99668 | 0.99338 |
Совершенно очевидно, что нейронная сеть просто неспособна научиться надежно различать эти сигналы (если вообще способна научиться их различать!). Если использовать нейроны с входными синапсами, не равными единице, то нейронная сеть сможет отмасштабировать входные сигналы так, чтобы они стали различимы, но при этом будет задействована только часть диапазона приемлемых входных данных — все входные сигналы будут иметь один знак. Кроме того, все подаваемые сигналы будут занимать лишь малую часть этого диапазона. Например, если мы отмасштабируем температуры так, чтобы 300 соответствовала величина суммарного входного сигнала равная 1 (величина входного синапса равна 1/300), то реально подаваемые сигналы займут лишь одну шестую часть интервала [0,1] и одну двенадцатую интервала [-1,1]. Получаемые при этом при этом величины выходных сигналов нейронов приведены в табл. 2.
Таблица 2
Входной сигнал | Нейрон типа S1 | Нейрон типа S2 | ||||||
---|---|---|---|---|---|---|---|---|
c=0.1 | c=0.5 | c=1 | c=2 | c=0.1 | c=0.5 | c=1 | c=2 | |
250 (0.83) | 0.52074 | 0.60229 | 0.69636 | 0.84024 | 0.89286 | 0.62500 | 0.45455 | 0.29412 |
275 (0.91) | 0.52273 | 0.61183 | 0.71300 | 0.86057 | 0.90164 | 0.64706 | 0.47826 | 0.31429 |
300 (1.0) | 0.52498 | 0.62246 | 0.73106 | 0.88080 | 0.90909 | 0.66667 | 0.50000 | 0.33333 |
Сигналы, приведенные в табл. 2 различаются намного сильнее соответствующих сигналов из табл. 1. Таким образом, необходимо заранее позаботиться о масштабировании и сдвиге сигналов, чтобы максимально полно использовать диапазон приемлемых входных сигналов. Опыт использования нейронных сетей с входными синапсами свидетельствует о том, что в подавляющем большинстве случаев предварительное масштабирование и сдвиг входных сигналов сильно облегчает обучение нейронных сетей. Если заранее произвести операции масштабирования и сдвига входных сигналов, то величины выходных сигналов нейронов даже при отсутствии входных синапсов будут различаться еще сильнее (см. табл. 3).
Таблица 3
Входной сигнал | Нейрон типа S1 | Нейрон типа S2 | ||||||
---|---|---|---|---|---|---|---|---|
c=0.1 | c=0.5 | c=1 | c=2 | c=0.1 | c=0.5 | c=1 | c=2 | |
250 (-1) | 0.47502 | 0.37754 | 0.26894 | 0.11920 | -0.9091 | -0.6667 | -0.5000 | -0.3333 |
275 (0) | 0.50000 | 0.50000 | 0.50000 | 0.50000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
300 (1) | 0.52498 | 0.62246 | 0.73106 | 0.88080 | 0.9091 | 0.6667 | 0.5000 | 0.3333 |
Величину диапазона различимых входных сигналов можно определять различными способами. На практике в качестве диапазона различимых входных сигналов обычно используется диапазон приемлемых входных данных, исходя из того соображения, что если данные из этого интервала хороши для промежуточных нейронов, то они хороши и для входных.
Другой способ определения различимости входных сигналов приведен в разделе «Оценка способности сети решить задачу».
- Нейрон
- Различимость входных данных
- Классификация компонентов входных данных
- Кодирование бинарных признаков
- Кодирование неупорядоченных качественных признаков
- Кодирование упорядоченных качественных признаков
- Числовые признаки
- Простейшая предобработка числовых признаков
- Оценка способности сети решить задачу
- Предобработка, облегчающая обучение
- Другие способы предобработки числовых признаков
- Составной предобработчик
- Лекция 15. Работа с базами данных
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- 4. Лекция: Типы данных
- 14. Лекция: Пакет java.util
- Лекция 11. Ссылки
- 7. Лекция: Преобразование типов
- Лекция 11. История запросов
- Лекция 3. Формы и циклы
- Лекция 6. Пример стандартной анкеты
- Лекция 16. Взаимодействие процессов
- 16. Лекция: Введение в сетевые протоколы
- 13. Лекция: Интеграция Python с другими языками программирования.