Перейти к содержимому
На этой странице

Архитектуры и слои нейронных сетей

Все темы Data Scientist

Подтемы:

Расскажите про структуру RNN, Трансформера, CNN. Какие еще есть виды?

Конечные нейронные сети (NN) имеют различные структуры, а каждая из них предназначена для обработки различных типов данных и решения конкретных задач:

  1. Рекуррентные нейронные сети (RNN):

    • Структура: RNN имеют циклическую связь, позволяющую передавать информацию от предыдущих временных шагов к последующим.

    • Применение: хорошо подходят для анализа последовательных данных, таких как временные ряды, тексты, речь.

    • Виды: LSTM (долгая краткосрочная память), GRU (воротные рекуррентные единицы) - вариации RNN с улучшенной способностью учитывать долгосрочные зависимости.

  2. Трансформеры (Transformer):

    • Структура: базируются на механизме внимания (attention mechanism), позволяющем моделировать долгосрочные зависимости в последовательных данных.

    • Применение: широко используются в обработке текстов, в машинном переводе, генерации текстов.

    • Виды: BERT (Bidirectional Encoder Representations from Transformers), GPT (Generative Pre-trained Transformer) - различные архитектуры, оптимизированные для конкретных задач.

  3. Сверточные нейронные сети (CNN):

    • Структура: содержат сверточные слои, которые выделяют локальные шаблоны в данных, и пулинговые слои, которые уменьшают размерность представлений.

    • Применение: эффективны в обработке изображений и видео, также могут применяться в анализе последовательных данных, таких как временные ряды и тексты.

    • Виды: VGG (Visual Geometry Group), ResNet (Residual Network), AlexNet - различные архитектуры, оптимизированные для конкретных задач компьютерного зрения.


Почему происходит взрыв/затухание градиентов в RNN?

В RNN (рекуррентных нейронных сетях) взрыв градиентов возникает из-за множественного умножения градиентов между скрытыми состояниями на разных временных шагах, что может привести к экспоненциальному росту значений градиентов. Затухание градиентов происходит, когда градиенты постепенно уменьшаются до нуля по мере распространения через длинные последовательности, что делает обучение на долгосрочных зависимостях сложным. Эти проблемы могут быть решены с использованием модификаций RNN, таких как LSTM (долгая краткосрочная память) и GRU (воротные рекуррентные единицы), которые имеют механизмы контроля потока градиентов и облегчают обучение на длинных последовательностях.


Расскажи более подробно про обучение CNN, как там происходит обучение?

Обучение сверточных нейронных сетей (CNN) включает в себя несколько этапов:

  1. Инициализация весов: Веса сверточных слоев и полносвязанных слоев инициализируются случайным образом или используются предварительно обученные веса, например, при использовании трансферного обучения.

  2. Прямое распространение (forward pass) : Входные изображения проходят через сверточные слои, активационные функции и пулинг слои для извлечения признаков. Затем признаки передаются через полносвязанные слои для классификации или регрессии.

  3. Вычисление потерь (loss): После прямого распространения вычисляется значение функции потерь, такой как кросс-энтропия для классификации или среднеквадратичная ошибка для регрессии.

  4. Обратное распространение (backpropagation): Градиенты потерь передаются назад через сеть с помощью алгоритма обратного распространения ошибки. Это позволяет рассчитать градиенты весов, которые потом используются для обновления весов в соответствии с выбранным методом оптимизации, таким как стохастический градиентный спуск (SGD) или его модификации (например, Adam, RMSProp).

  5. Обновление весов: Веса обновляются в направлении, противоположном градиенту, с целью минимизации функции потерь.

  6. Итерации: Этот процесс повторяется на нескольких эпохах (проходах через все обучающие данные), пока модель не достигнет удовлетворительной производительности или пока не будет выполнен критерий остановки.


В чем нововведение в архитектуре ResNet, и зачем оно нужно?

Архитектура ResNet (Residual Neural Network) внесла нововведение в использование блоков с остаточным соединением (residual connections), которые позволяют нейронным сетям обучаться глубокими слоями эффективнее.

Основная идея ResNet заключается в том, чтобы добавить “сквозные” соединения (shortcut connections) напрямую из входа блока к его выходу, обеспечивая “прямой” путь для градиентов во время обратного распространения. Это позволяет избежать проблемы затухания градиентов при обучении глубоких нейронных сетей.

Такое нововведение сделало возможным обучение глубоких нейронных сетей с более чем 100 слоями без значительного увеличения количества параметров и риска переобучения.


Какие существуют неклассические архитектуры нейронных сетей?

Неклассические архитектуры нейронных сетей включают в себя:

  1. Свёрточные нейронные сети (CNN): Эффективно работают с данными, имеющими пространственную структуру, такими как изображения.

  2. Рекуррентные нейронные сети (RNN): Подходят для анализа последовательных данных, таких как текст или временные ряды.

  3. Глубокие нейронные сети (DNN): Состоят из множества слоёв и используются для решения сложных задач, требующих высокой степени абстракции.

  4. Автокодировщики (Autoencoders): Используются для извлечения значимых признаков из данных, сжатия информации или генерации новых данных.

  5. Сети Глубокого Усвоения (Deep Belief Networks): Комбинируют методы вероятностного графического моделирования с глубоким обучением для представления и обработки данных.

  6. Сети долгой краткосрочной памяти (LSTM) и Сети внимания (Attention): Расширения RNN, позволяющие учитывать долгосрочные зависимости в последовательных данных.

  7. Сети генеративно-состязательные (GAN) : Состоят из генератора и дискриминатора, используются для генерации реалистичных данных, таких как изображения.

  8. Трансформеры (Transformers): Используют механизм внимания для анализа последовательных данных, таких как текст, и достигли большого успеха в обработке естественного языка.


Чем увеличение глубины сети отличается от увеличения ширины?

Глубина позволяет последовательно строить иерархию признаков и часто эффективнее представляет композиционные функции. Она также увеличивает receptive field, но усложняет прохождение градиента и делает вычисления более последовательными. Ширина дает больше признаков на одном уровне, лучше использует параллелизм, но быстро увеличивает память и число операций. Одинаковое число параметров не означает одинаковую способность и latency. Выбор зависит от архитектуры, размера данных и оборудования; residual-связи делают глубокие сети практичнее.


Разделите нейронные сети на классы в соответствии с методом обучения и типом решаемых задач.

Нейронные сети можно классифицировать по нескольким критериям:

  1. По типу обучения:

    • Надзорное обучение (Supervised learning): сети, обучаемые на размеченных данных для задач классификации, регрессии и др.

    • Без надзора (Unsupervised learning): сети, работающие с неразмеченными данными, например, для кластеризации или снижения размерности.

    • Полу-надзорное обучение (Semi-supervised learning): комбинация методов надзорного и безнадзорного обучения.

  2. По типу задачи:

    • Классификация: нейронные сети, используемые для определения категории или класса для входных данных.

    • Регрессия: сети, предсказывающие непрерывные значения на основе входных данных.

    • Кластеризация: сети, анализирующие структуру неразмеченных данных и группирующие их в кластеры или сегменты.


Как ещё называют полносвязные нейронные сети?

Полносвязные нейронные сети также называются многослойными перцептронами (MLP - Multilayer Perceptrons).


Почему, как правило, улучшение модели достигается добавлением новых слоев, а не увеличением количества нейронов в существующих слоях?

Добавление новых слоев позволяет модели изучать более сложные и абстрактные зависимости в данных, что может привести к лучшей способности обобщения и улучшению производительности модели на новых данных. Увеличение количества нейронов в существующих слоях может привести к увеличению числа параметров модели, что может привести к переобучению и недостаточной обобщающей способности модели на новых данных.


Какие типы слоёв используются в нейронных сетях?

В нейронных сетях используются различные типы слоев, включая:

  1. Полносвязные слои (Fully Connected Layers): Каждый нейрон в слое связан с каждым нейроном предыдущего и следующего слоя.

  2. Сверточные слои (Convolutional Layers) : Применяются для извлечения признаков из изображений путем применения фильтров (ядер) к исходным данным.

  3. Пулинг слои (Pooling Layers): Используются для уменьшения размерности признаковых карт путем выбора максимального или среднего значения внутри окна.

  4. Рекуррентные слои (Recurrent Layers) : Позволяют моделировать последовательности данных, учитывая их контекст и зависимости между элементами последовательности.

  5. Dropout слои: Используются для регуляризации модели путем случайного исключения нейронов во время обучения.

  6. Слой активации (Activation Layers): Применяют нелинейную функцию к выходу нейронов для внесения нелинейности в модель.

  7. Embedding слои: Используются для преобразования категориальных переменных в плотные векторные представления.


Как Batch Normalization ведет себя при обучении и инференсе?

На обучении BatchNorm нормализует активации статистиками текущего мини-батча, затем применяет обучаемые scale и shift. Параллельно обновляет running mean и variance. На инференсе в режиме eval использует сохраненные running statistics, поэтому результат не должен зависеть от соседей по батчу. Малые или нерепрезентативные батчи дают шумные статистики; тогда помогают заморозка BatchNorm, SyncBatchNorm, GroupNorm или LayerNorm. Забытый eval() меняет предсказания и продолжает портить статистики.


Почему скрытые слои нейросети нельзя инициализировать нулевыми весами?

Если все веса слоя равны нулю, его нейроны получают одинаковые активации и одинаковые градиенты. После обновления они остаются одинаковыми и не учат разные признаки. Это проблема нарушения симметрии, а не просто исчезающего градиента. Bias можно инициализировать нулем, если веса уже различаются. Для весов используют случайную инициализацию с масштабом, согласованным с активацией, например Xavier для tanh и He для ReLU. Нулевой последний слой иногда допустим в специальных архитектурах, но это отдельный дизайн.


Когда полезно дообучать только параметры Batch Normalization?

При небольшом domain shift можно заморозить основную сеть и адаптировать affine-параметры BatchNorm, а иногда пересчитать running statistics на новом домене. Это дешево и снижает риск переобучить все веса. Но «дообучить BatchNorm» надо уточнять: gamma и beta обучаются градиентом, running mean и variance обновляются статистически. На малом батче новые статистики шумны и могут ухудшить модель. Сравнивают варианты freeze, адаптация affine и recalibration statistics на отдельной validation нового домена.

Собеседования: Data Science

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Data Scientist, ML-инженер. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.