Ответы пользователя по тегу Машинное обучение
  • Влияет ли на что-то объединение блока слоев в Sequential модель (Keras, TensorFlow)?

    @kamenyuga
    Это чисто для удобства. Потом при выводе картинки делаешь
    tf.keras.utils.plot_model(..., expand_nested=False)
    , чтобы внутренности оберток не рисовались. На этом все удобство заканчивается. Видимо, сделали чисто для использования в туториале.

    В общем и целом - полезность низкая. Лучше давать всем слоям осмысленные имена. Оборачивают в модели-обертки обычно крупные блоки, которые потом переиспользуют или сохраняют.
    Ответ написан
    Комментировать
  • Какие книги по машинному обучению стоит изучить?

    @kamenyuga
    Современное прикладное глубокое обучение (keras):
    Chollet - Deep Learning with Python - 2018

    Матан глубокого обучения:
    Goodfellow - Deep Learning Book - 2016
    Ответ написан
    Комментировать
  • Как увеличиваются фильтры в CNN?

    @kamenyuga
    Ответ на это вопрос очевиден, если знать, что такое фильтр сверточного слоя в нейронных сетях. В случае с изображениями - это трехмерный тензор (матрица), вот так вот просто, никакой магии. А теперь конкретика и умножение целых чисел.

    На входе идут изображения 100х100х3. Размер ядра фильтра 3х3, значит, каждый фильтр имеет размер 3х3х3, всего их 16 штук, следовательно ((3*3*3) + 1) * 16 = 448 обучаемых коэффициентов (trainable parameter). Потом макспулинг, размер уменьшается до 50х50, количество фильтров не меняется. Выход имеет размер 50х50х16. Фильтры применяются к изображению 100*100*16 = 160к раз. Выход - это результат применения фильтров к изображению, т.е. новое изображение, именно оно подается дальше, никакие фильтры тут дальше не передаются. Фильтры - это как распылитель на покрасочном конвейере, распылитель наносит краску на деталь, фильтр преобразует изображение. Как может фильтр передаваться дальше? Никак. Это противоестественно.

    Потом идут новые 32 фильтра с ядром 3х3 и размером 3х3х16. Следовательно, ((3*3*16) + 1) * 32 = 4460 обучаемых коэффициентов. Фильтры применяются к изображению 50*50*32 = 80к раз. Выход перед макспулингом имеет размер 50х50х32. Потом опять макспулинг или флэттен слой (flatten).

    По итогу общее количество фильтров = 16 + 32. Общее количество обучаемых параметров = 448 + 4460. Фильтры помножены на изображение 240к раз. Вот только в этом маленьком кусочке из двух сверточных слоев (conv2d).
    Ответ написан
  • Что такое batch_size в моделях на обучении?

    @kamenyuga
    Обычно под батчем понимают две вещи - 1) во время подготовки данных перед обучением - объем данных (количество строк), загружаемый в память за один раз, 2) во время обучения - объем данных (количество строк), подаваемый модели между вычислениями функции потерь. В первом случае еще используют термин чанк (chunk). Такое маленькое значение - это второй случай. Тем более он упоминается в разделе обучения модели. Т.е. за единичный шаг обучения - подаем модели 16 строк данных.
    Ответ написан
    Комментировать
  • Проблема интерпретируемости?

    @kamenyuga
    Да, это так. Нейронную сеть трудно интерпретировать, потому что она сложно устроена. Даже в простых случаях нейронка - это несколько слоев из десятков или сотен нейронов, при этом каждый следующий слой зависит от предыдущего, а кроме того между слоями применяются функции активации и дропауты. Один из свежих подходов к интерпретации нейронок - LRP (layer-wise relevance propagation). Так что гугли что-то вроде "neural network interpretation with lrp method". Ожидается, что все серьезные источники будут на английском и наполнены матаном.
    Ответ написан
    Комментировать