Ответы пользователя по тегу Нейронные сети
  • Как сделать нейросетку для генетического 2D алгоритма?

    @imageman
    Рекуррентные сети
    https://qudata.com/ml/ru/NN_RNN_Torch.html - довольно сносное описание.
    Объясню "на пальцах":
    а) на вход нейросети подаются N блоков (фиксированной длинны), к примеру для N ботов это будут координаты x,y поэтому у нас будет вектор [N , 2]
    б) у нас есть некое внутреннее состояние нейросети (почти всегда инициализируется нолями) которое задается всегда определенным образом перед каждым запуском. Это массив длинной K (например 10). *** В твоем случае в самом начале в этот массив можно записать свои собственные координаты, какие-то дополнительные параметры (например число ботов).
    в) сеть состоит из двух частей - рекуррентная (перебирает по очереди вход) и финальная часть, которая на основе внутреннего состояния дает окончательный вывод (прогноз, результат).

    Теперь чуть подробнее. Рекуррентная часть это простая нейросеть любой конфигурации, которая на вход принимает массив "внутреннее состояние нейросети" и одну из N строк входного массива (в твоем случае "внутреннее состояние нейросети" + 2 числа). Обрабатывает это и на выходе получается новый массив "внутреннее состояние нейросети". Т.е. (как пример) на входе 12 чисел, на выходе 10 чисел.

    После обработки всех N строк входного массива в дело вступает финальная часть нейросети. Она может быть тоже любой конфигурации (структуры). На вход принимает "внутреннее состояние нейросети" (например 10 чисел), на выходе какой-то уже конечный результат (к примеру "угол" и "скорость").

    Надеюсь понятно изложил.
    Ответ написан
    1 комментарий
  • Как правильно анализировать большое изображение с помощью модели с фиксированным размером входного изображения?

    @imageman
    1. Использовать структуру нейросети, которая на вход принимает большие картинки (вроде как U-Net из коробки работает так, что может обработать как 256*256, так и 1024*1024).
    2. Анализировать квадратами (нарезать) с перекрытием, потом сшивать как сшивают панорамы (поищите smartblend.exe). https://wiki.panotools.org/SmartBlend
    3. Заранее тренировать модель с учетом перекрытия, в этом случае сшивка должна быть сильно проще.
    Ответ написан
  • Используют ли при обучении нейронных сетей генетические алгоритмы?

    @imageman
    Даже для маленькой (по нынешним меркам) нейросети обучение градиентными методами будет быстрее на несколько порядков по сравнению с ГА (я подозреваю, что как минимум на 2-3 десятичных порядка быстрее). Когда же речь зайдет о больших нейросетях..... Там процесс обучения итак медленный, а замедлять его при помощи ГА не стоит. Тут в комментариях начинают спорить про дифференцируемость и про оптимизацию. Все нынешние нейросети делаются (проектируются) из расчета на градиентное обучение (метод обратного распространения ошибки), т.к. это сейчас самый быстрый способ. Оптимизация это, видимо, подбор гиперпамаретров? Да, он может делаться через ГА, но не делается. Для ГА характерно слишком большое число итераций, намного больше 100, а каждая итерация может занимать сутки. Слишком долго. По моим наблюдениям для подбора оптимальных параметров сильно нелинейной функции от 50 переменных ГА нужно более миллиона итераций. Для 18 переменных - 50 тысяч, для 23 - 200 тысяч. lit999.narod.ru/soft/ga/index.html - страница с моими старыми экспериментами (сравнение ГА с алгоритмом роя пчел) и https://imageman72.livejournal.com/5373.html.

    Но если нам нужно сделать какую-то совсем нестандартную нейросеть, при этом очень крохотную - может и пригодится ГА (было у меня и такое решение, но я не сравнивал его с градиентным спуском).
    Ответ написан
  • Возможно ли обучить GAN без batchnorm?

    @imageman
    Да, можно без нормализации.

    Вот тут https://github.com/eriklindernoren/PyTorch-GAN собрано довольно много реализаций нейросетей (я оттуда с ESRGAN экспериментировал).

    FeedForward (это те, что полносвязные) практически тупиковый путь. Посчитайте сколько вы весов заложили в свою нейросеть. Для картинок пробуйте сверточные нейросети.
    Ответ написан
    5 комментариев
  • Keras LSTM срыв градиента, как выйти из данной ситуации?

    @imageman
    Данные для тренировки перемешиваете?
    Размер минибатча какой?
    Уменьшить (увеличить) размер нейросети пробовали?

    https://habr.com/ru/post/334944/ (37-й пункт, но прочитать и первые 36 тоже стоит)

    (How to deal with NaNs https://web.archive.org/web/20180207100912/http://...)
    Ответ написан
    Комментировать
  • Как увеличить выборку для обработки нейронной сетью?

    @imageman
    Ну, во-первых, все-таки можно попробовать учить и на всём массиве доступных данных (пусть и перекошенном в сторону Б). Если хотите, можете тупо размножить класс А.

    Второе - посмотрите в сторону других классификаторов. Например дерево (или лес) решений.

    Если задача уже решена, то можете рассказать как решили?
    Ответ написан
    Комментировать
  • Как лучше изменить нейронную сеть?

    @imageman
    > 437 бинарных признаков. Есть обучающая выборка на ~400 случаев.

    Это означает, что нейросеть у вас будет переобучена. Для любого машинного обучения число строк обучения должно быть намного больше числа колонок. Если будете сокращать число колонок, это (по моему) в данном случае ничего кардинально не изменит.

    В нейросети лучше минимум один скрытый слой, если есть возможность то увеличивайте число скрытых слоев. Пробуйте различные конфигурации слоев ("бочка", "рюмка", "прямоугольник"). Выходной слой можно пробовать дискретное число (номер класса), а можно пробовать в выходном слое число выходов = числу классов (все нули, кроме одной единицы напротив нужного класса).
    Ответ написан
    1 комментарий