• Нейронная сеть, какой должен быть диапазон весов?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Тип входных и выходных значений зависит от того, какой смысл вы в них вкладываете и от архитектуры сети (в частности, функций активации на выходах нейронов).

    При обработке текста, например, часто на вход подается последовательность id'шников слов в предложении - соответственно, это целые числа от 0 до <количество слов в словаре>.
    При обработке изображений часто используют функцию активации ReLU, выход которой - неотрицательные числа.

    Нормализация на входе бывает полезна, когда изначально диапазон фич сильно отличается друг от друга, но по смыслу они примерно равны, а сами фичи - это вещественные числа (например, если входные данные - это длина сосульки на крыше в миллиметрах и температура на улице в градусах; первая фича имеет порядок сотен-тысяч, вторая - десятки-единицы).

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

    "сколько должно пройти итераций что бы веса с 0.1.. спустились до 0.0001.." можно перефразировать как "почему backprop работает медленно и как его ускорить". Это вообще одна из фундаментальных задач в DL. Инициализация весов - один из способов частичного решения. Различные функции активации - другой. Новые архитектуры слоев - третий. Модификация обучающих данных - четвертый. И так далее.
    Ответ написан
    Комментировать
  • Нейронная сеть, какой должен быть диапазон весов?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    возможно открою для вас Америку, но ни размеры весов, ни диапазон, ни нормализация этих весов не имеют абсолютно никакого значения.
    Имеет значение только решающая функция, которая подгоняет ЛЮБЫЕ значения весов на основе обратного распространения ошибки к таким значениям на которых решающая функция реагирует с наименьшим количеством ошибок. А какие именно значения весов - абсолютно без разницы, хоть от 0.01 до 0.02 (с шагом в 0.0000001), или например от -1000000000 до +10000000000, результат будет один и тот же (подстройка веса под требуемую реакцию решающей функции).
    Что касается нормализации - это вообще бессмысленная операция, например вы делите например значение "входящего сигнала" со всех нейронов на количество нейронов (и это значение всегда константа). И константа абсолютно никак не влияет на процесс подгонки коэффициента (просто сам коэффициент будет например больше или меньше на эту константу), но как я уже сказал, нас НЕ интересует абсолютное значение коэффициента, нас волнует взамодействие коэффициента и решающей функции.
    надеюсь мысль ясна.
    напишите свою нейросеть, попытайтесь в ручную коэффициенты посчитать, все сами уведите.
    Ответ написан
    Комментировать
  • Нейронная сеть, как нормализовать данные например времени?

    Arseny_Info
    @Arseny_Info
    R&D engineer
    Проекция на окружность, например.
    def make_harmonic_features(value, period=24):
        value *= 2 * np.pi / period 
        return np.cos(value), np.sin(value)


    https://medium.com/open-machine-learning-course/op...
    Ответ написан
    Комментировать
  • Нейронная сеть, как нормализовать данные например времени?

    usdglander
    @usdglander
    Yipee-ki-yay
    В двоичном виде, разве не получится?
    Типа 12 минут = 1100 минут
    Ответ написан
    Комментировать