Kohonen SOM Maps: нормализация ввода с неизвестным диапазоном - PullRequest
3 голосов
/ 16 апреля 2010

Согласно «Введение в нейронные сети с Java Джеффом Хитоном», входные данные для нейронной сети Кохонена должны быть в диапазоне от -1 до 1.

Возможно нормализовать входы, где диапазон заранее известен: Например, RGB (125, 125, 125), где диапазон известен как значения от 0 до 255:
1. Разделите на 255: (125/255) = 0,5 >> (0,5,0,5,0,5)
2. Умножьте на два и вычтите одно: ((0,5 * 2) -1) = 0 >> (0,0,0)

Вопрос в том, как мы можем нормализовать ввод, когда диапазон неизвестен, например, наш рост или вес.

Кроме того, в некоторых других статьях упоминается, что входные данные должны быть нормализованы до значений от 0 до 1. Какой правильный путь, «-1 и 1» или «0 и 1»?

Ответы [ 2 ]

6 голосов
/ 16 апреля 2010

Вы всегда можете использовать функцию сжатия, чтобы отобразить бесконечный интервал в конечный интервал. Например. Вы можете использовать tanh.

Возможно, вы захотите использовать tanh (x * l) с выбранным вручную l, чтобы не размещать слишком много объектов в одном регионе. Поэтому, если у вас есть надежное предположение, что максимальные значения ваших данных составляют +/- 500, вы можете использовать tanh (x / 1000) в качестве отображения, где x - это значение вашего объекта. Возможно, даже имеет смысл вычесть ваши угадать среднее от х, получая tanh ((х - среднее) / макс).

4 голосов
/ 16 апреля 2010

Из того, что я знаю о СД Кохонена, их специфическая нормализация на самом деле не имеет значения.

Что ж, это может быть сделано путем конкретного выбора значения параметров алгоритма обучения, но самое главное, чторазные размеры ваших входных точек должны быть одинаковой величины.

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

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

Для веса и размера я уверен, что если вы разделите их соответственно на 200 кг и 3 метра, все ваши точки данных попадут в интервал] 0 1].Вы можете даже использовать 50 кг и 1 метр. Важно то, что все координаты будут иметь порядок 1.

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

Надеюсь, это поможет.

...