В большинстве примеров нейронных сетей, которые я видел до сих пор, сеть используется для классификации, а узлы трансформируются сигмоидальной функцией. Тем не менее, я хотел бы использовать нейронную сеть для вывода непрерывного реального значения (реально выходной сигнал обычно находится в диапазоне от -5 до +5).
Мои вопросы:
1. Should I still scale the input features using feature scaling? What range?
2. What transformation function should I use in place of the sigmoid?
Я ищу изначально реализовать его PyBrain, который описывает эти типы слоев .
Итак, я думаю, что у меня должно быть 3 слоя для начала (входной, скрытый и выходной), которые являются линейными слоями? Это разумный способ? Или же я мог бы «растянуть» сигмовидную функцию в диапазоне от -5 до 5?
regression
neural-networks
пользователь
источник
источник
Ответы:
1 . Должен ли я по-прежнему масштабировать входные объекты, используя масштабирование объектов? Какой диапазон?
Масштабирование не делает ничего хуже. Прочтите этот ответ в FAQ по нейронной сети Sarle: Тема: Должен ли я нормализовать / стандартизировать / изменить масштаб данных? ,
2 . Какую функцию преобразования я должен использовать вместо сигмовидной кишки?
источник
Отказ от ответственности: представленный подход неосуществим для непрерывных значений, но я верю, что он имеет некоторый вес при принятии решений по проекту. Smarty77 поднимает вопрос об использовании измененной сигмовидной функции. По своей сути, сигмовидная функция создает вероятность, которая описывает частоту успешных выборок (т.е. 95 из 100 фотографий с этими характеристиками являются «собачьими»). Описанный конечный результат является двоичным, и тренинг с использованием «бинарной кросс-энтропии» описывает процесс разделения диаметрально противоположных результатов, который по своей сути препятствует результатам в среднем диапазоне. Континуум выходных данных предназначен только для масштабирования, основанного на количестве выборок (т. Е. Результат 0,9761 означает, что 9761 из 10000 выборок, отображающих эти или подобные триаты, являются «собаками»), но каждый результат сам по себе должен рассматриваться как двоичный, а не как произвольно гранулированный. Как таковой, он не должен быть принят и применен как реальное число и может быть неприменим здесь. Хотя я не уверен в использовании сети, я бы нормализовал выходной вектор сам по себе. Это можно сделать с помощью softmax. Это также потребует наличия 11 линейных выходов (бинов) из сети (по одному для каждого выхода от -5 до +5), по одному для каждого класса. Это обеспечит ценность для любого «мусорного ведра», являющегося правильным ответом. Эту архитектуру можно было бы обучить с использованием однократного кодирования, где 1 указывает на правильную ячейку. Результат интерпретируется таким образом, как жадная стратегия или вероятностная выборка. Однако, чтобы превратить его в непрерывную переменную, гарантированность каждого индекса может использоваться в качестве веса для размещения маркера на числовой строке (аналогично поведению сигмовидной единицы), но это также подчеркивает главную проблему: если сеть достаточно уверена, результат равен -2 или +3, но абсолютно уверены, что это ничто иное, +1 жизнеспособный результат? Спасибо за ваше внимание. Удачи с проектом.
источник