Вопрос или проблема
Я написал простую нейронную сеть, которая работает аналогично многим примерам на C#, которые я видел в интернете. Она использует веса и смещения и может быть обучена с помощью обратного распространения ошибки. Она хорошо работает для предсказания XOR. Но я хочу узнать, может ли она смотреть на последовательность входных данных и всегда возвращать последний вход как выход. Например, я хочу, чтобы она предсказывала так:
Вход: [ 1, 2, 0] -> Выход: [0]
Вход: [1000, 2000, 0] -> Выход: [0]
Вход: [ 1, 2, 1] -> Выход: [1]
Вход: [1000, 2000, 1] -> Выход: [1]
(Мои реальные данные намного более случайные. Заметьте, что последний вход становится выходом.)
Я просто хотел проверить, смогу ли я обучить нейронную сеть игнорировать все входы, кроме последнего. В идеале, все веса, кроме тех, которые привязаны к последнему входу, должны быть равны 0. По крайней мере, на это я надеялся. (Думаю, это очевидно, но я не хочу устанавливать веса вручную. Я хочу, чтобы сеть “обучилась” вкладу.)
Кто-нибудь может порекомендовать, как это можно было бы осуществить? Я в настоящее время использую 3 входных нейрона, один скрытый слой ReLU с 3 нейронами. Я использую сигмоиду на выходном слое с 1 нейроном. Я также генерирую веса в диапазоне от -0.5 до 0.5. Экспериментировал с различными комбинациями функций и случайными весами без успеха. Спасибо.
Вы должны использовать L1 регуляризацию. Она добавляет еще один член к функции ошибки при обучении. Это изменение позволяет снизить веса менее значимых признаков очень близко к нулю.
.
Ответ или решение
Конечно, нейронная сеть может быть обучена предсказывать значение только на основании последнего входного параметра. Ваша задача весьма типична для нейронной сети, и она вполне решаема с помощью определенной настройки и подходов к обучению.
Разбор проблемы
Вы хотите, чтобы нейронная сеть игнорировала все входные параметры, кроме последнего, и на основе этого последнего входа формировала выход. Для этого необходимо, чтобы веса, приписанные остальным входам, равнялись или стремились к нулю. Достичь этого можно с помощью:
-
L1-регуляризация: Эта техника добавляет в функцию ошибки дополнительный член, который способствует уменьшению коэффициентов при малозначительных признаках. L1-регуляризация одновременно помогает избежать переобучения, что делает вашу модель более обобщенной.
-
Настройка архитектуры сети: Основываясь на вашем описании, вы используете RelU в скрытом слое и сигмоидальные функции активации на выходе. Возможно, стоит рассмотреть возможность изменения числа нейронов в скрытых слоях или использования других функций активации, например, гиперболического тангенса (tanh), в зависимости от специфики вашей проблемы.
-
Обучение и инициализация: Вариация параметров инициализации весов также может повлиять на исход. Если ваша инициализация варьируется от -0.5 до 0.5, попробуйте увеличить диапазон, чтобы улучшить начальное распределение.
-
Режим обучения: Убедитесь, что ваш набор данных хорошо перемешан, чтобы избежать воздействия упорядоченных структур данных на тренируемые веса. Это повысит обобщающую способность модели.
Рекомендации
-
Используйте L1-регуляризацию: Ваша модель сможет автоматически определить, какие входные данные менее значимы, и уменьшить их влияние на конечный результат.
-
Попробуйте другой подход к архитектуре сети: Подумайте о возможности создания сети с меньшим числом скрытых нейронов, если сеть слишком мощная для решаемой задачи, она будет учиться медленнее и может не сходиться должным образом к нужному результату.
-
Эффективная функция потерь: Использование функции потерь, которая дополнительно награждает модель за точное предсказание последнего элемента в последовательности, также может быть полезным.
-
Оптимизация гиперпараметров: Используйте инструменты автоматизированного подбора гиперпараметров, такие как GridSearch или RandomSearch, чтобы оптимизировать параметры обучения.
Итог
Применение описанных выше методов поможет вам успешно обучить нейронную сеть, которая будет предсказывать выходы, основываясь на последнем входе. Регуляризация, корректно настроенная архитектура и оптимизация гиперпараметров играют ключевую роль в достижении эффективность и точности вашей модели.