Архитектуры и слои нейронных сетей
Подтемы:
Расскажите про структуру RNN, Трансформера, CNN. Какие еще есть виды?
Конечные нейронные сети (NN) имеют различные структуры, а каждая из них предназначена для обработки различных типов данных и решения конкретных задач:
-
Рекуррентные нейронные сети
(RNN):-
Структура:
RNNимеют циклическую связь, позволяющую передавать информацию от предыдущих временных шагов к последующим. -
Применение: хорошо подходят для анализа последовательных данных, таких как временные ряды, тексты, речь.
-
Виды:
LSTM(долгая краткосрочная память),GRU(воротные рекуррентные единицы) - вариацииRNNс улучшенной способностью учитывать долгосрочные зависимости.
-
-
Трансформеры
(Transformer):-
Структура: базируются на механизме внимания (attention mechanism), позволяющем моделировать долгосрочные зависимости в последовательных данных.
-
Применение: широко используются в обработке текстов, в машинном переводе, генерации текстов.
-
Виды:
BERT(Bidirectional Encoder Representations from Transformers),GPT(Generative Pre-trained Transformer) - различные архитектуры, оптимизированные для конкретных задач.
-
-
Сверточные нейронные сети
(CNN):-
Структура: содержат сверточные слои, которые выделяют локальные шаблоны в данных, и пулинговые слои, которые уменьшают размерность представлений.
-
Применение: эффективны в обработке изображений и видео, также могут применяться в анализе последовательных данных, таких как временные ряды и тексты.
-
Виды:
VGG(Visual Geometry Group),ResNet(Residual Network),AlexNet- различные архитектуры, оптимизированные для конкретных задач компьютерного зрения.
-
Ссылки для изучения
Почему происходит взрыв/затухание градиентов в RNN?
В RNN (рекуррентных нейронных сетях) взрыв градиентов возникает из-за множественного умножения градиентов между скрытыми состояниями на разных временных шагах, что может привести к экспоненциальному росту значений градиентов. Затухание градиентов происходит, когда градиенты постепенно уменьшаются до нуля по мере распространения через длинные последовательности, что делает обучение на долгосрочных зависимостях сложным. Эти проблемы могут быть решены с использованием модификаций RNN, таких как LSTM (долгая краткосрочная память) и GRU (воротные рекуррентные единицы), которые имеют механизмы контроля потока градиентов и облегчают обучение на длинных последовательностях.
Ссылки для изучения
Расскажи более подробно про обучение CNN, как там происходит обучение?
Обучение сверточных нейронных сетей (CNN) включает в себя несколько этапов:
-
Инициализация весов: Веса сверточных слоев и полносвязанных слоев инициализируются случайным образом или используются предварительно обученные веса, например, при использовании трансферного обучения.
-
Прямое распространение
(forward pass): Входные изображения проходят через сверточные слои, активационные функции и пулинг слои для извлечения признаков. Затем признаки передаются через полносвязанные слои для классификации или регрессии. -
Вычисление потерь
(loss): После прямого распространения вычисляется значение функции потерь, такой как кросс-энтропия для классификации или среднеквадратичная ошибка для регрессии. -
Обратное распространение
(backpropagation): Градиенты потерь передаются назад через сеть с помощью алгоритма обратного распространения ошибки. Это позволяет рассчитать градиенты весов, которые потом используются для обновления весов в соответствии с выбранным методом оптимизации, таким как стохастический градиентный спуск(SGD)или его модификации (например, Adam, RMSProp). -
Обновление весов: Веса обновляются в направлении, противоположном градиенту, с целью минимизации функции потерь.
-
Итерации: Этот процесс повторяется на нескольких эпохах (проходах через все обучающие данные), пока модель не достигнет удовлетворительной производительности или пока не будет выполнен критерий остановки.
Ссылки для изучения
В чем нововведение в архитектуре ResNet, и зачем оно нужно?
Архитектура ResNet (Residual Neural Network) внесла нововведение в использование блоков с остаточным соединением (residual connections), которые позволяют нейронным сетям обучаться глубокими слоями эффективнее.
Основная идея ResNet заключается в том, чтобы добавить “сквозные” соединения (shortcut connections) напрямую из входа блока к его выходу, обеспечивая “прямой” путь для градиентов во время обратного распространения. Это позволяет избежать проблемы затухания градиентов при обучении глубоких нейронных сетей.
Такое нововведение сделало возможным обучение глубоких нейронных сетей с более чем 100 слоями без значительного увеличения количества параметров и риска переобучения.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- 100 Data Science вопросов мидлу! Парень c Физтеха проходит собеседование · 27:30–28:38Мок-собеседование · Ответ кандидата
Кандидат объясняет residual connection как обходной путь, улучшающий прохождение градиента в глубокой сети.
Какие существуют неклассические архитектуры нейронных сетей?
Неклассические архитектуры нейронных сетей включают в себя:
-
Свёрточные нейронные сети
(CNN): Эффективно работают с данными, имеющими пространственную структуру, такими как изображения. -
Рекуррентные нейронные сети
(RNN): Подходят для анализа последовательных данных, таких как текст или временные ряды. -
Глубокие нейронные сети
(DNN): Состоят из множества слоёв и используются для решения сложных задач, требующих высокой степени абстракции. -
Автокодировщики
(Autoencoders): Используются для извлечения значимых признаков из данных, сжатия информации или генерации новых данных. -
Сети Глубокого Усвоения
(Deep Belief Networks): Комбинируют методы вероятностного графического моделирования с глубоким обучением для представления и обработки данных. -
Сети долгой краткосрочной памяти
(LSTM)и Сети внимания(Attention): Расширения RNN, позволяющие учитывать долгосрочные зависимости в последовательных данных. -
Сети генеративно-состязательные
(GAN): Состоят из генератора и дискриминатора, используются для генерации реалистичных данных, таких как изображения. -
Трансформеры
(Transformers): Используют механизм внимания для анализа последовательных данных, таких как текст, и достигли большого успеха в обработке естественного языка.
Ссылки для изучения
Чем увеличение глубины сети отличается от увеличения ширины?
Глубина позволяет последовательно строить иерархию признаков и часто эффективнее представляет композиционные функции. Она также увеличивает receptive field, но усложняет прохождение градиента и делает вычисления более последовательными. Ширина дает больше признаков на одном уровне, лучше использует параллелизм, но быстро увеличивает память и число операций. Одинаковое число параметров не означает одинаковую способность и latency. Выбор зависит от архитектуры, размера данных и оборудования; residual-связи делают глубокие сети практичнее.
Ссылки для изучения
Разделите нейронные сети на классы в соответствии с методом обучения и типом решаемых задач.
Нейронные сети можно классифицировать по нескольким критериям:
-
По типу обучения:
-
Надзорное обучение
(Supervised learning): сети, обучаемые на размеченных данных для задач классификации, регрессии и др. -
Без надзора
(Unsupervised learning): сети, работающие с неразмеченными данными, например, для кластеризации или снижения размерности. -
Полу-надзорное обучение
(Semi-supervised learning): комбинация методов надзорного и безнадзорного обучения.
-
-
По типу задачи:
-
Классификация: нейронные сети, используемые для определения категории или класса для входных данных.
-
Регрессия: сети, предсказывающие непрерывные значения на основе входных данных.
-
Кластеризация: сети, анализирующие структуру неразмеченных данных и группирующие их в кластеры или сегменты.
-
Ссылки для изучения
Как ещё называют полносвязные нейронные сети?
Полносвязные нейронные сети также называются многослойными перцептронами (MLP - Multilayer Perceptrons).
Ссылки для изучения
Почему, как правило, улучшение модели достигается добавлением новых слоев, а не увеличением количества нейронов в существующих слоях?
Добавление новых слоев позволяет модели изучать более сложные и абстрактные зависимости в данных, что может привести к лучшей способности обобщения и улучшению производительности модели на новых данных. Увеличение количества нейронов в существующих слоях может привести к увеличению числа параметров модели, что может привести к переобучению и недостаточной обобщающей способности модели на новых данных.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- 100 Data Science вопросов мидлу! Парень c Физтеха проходит собеседование · 26:20–27:25Мок-собеседование · Ответ кандидата
Кандидат объясняет пользу новых слоёв через композицию нелинейных преобразований и более точную кусочно-линейную аппроксимацию.
Какие типы слоёв используются в нейронных сетях?
В нейронных сетях используются различные типы слоев, включая:
-
Полносвязные слои
(Fully Connected Layers): Каждый нейрон в слое связан с каждым нейроном предыдущего и следующего слоя. -
Сверточные слои
(Convolutional Layers): Применяются для извлечения признаков из изображений путем применения фильтров (ядер) к исходным данным. -
Пулинг слои
(Pooling Layers): Используются для уменьшения размерности признаковых карт путем выбора максимального или среднего значения внутри окна. -
Рекуррентные слои
(Recurrent Layers): Позволяют моделировать последовательности данных, учитывая их контекст и зависимости между элементами последовательности. -
Dropout слои: Используются для регуляризации модели путем случайного исключения нейронов во время обучения. -
Слой активации
(Activation Layers): Применяют нелинейную функцию к выходу нейронов для внесения нелинейности в модель. -
Embedding слои: Используются для преобразования категориальных переменных в плотные векторные представления.
Ссылки для изучения
contest.yandex.ru Линейные слои, функции активации и полносвязные сети contest.yandex.ru Свёртки и пулинг: извлечение и уменьшение карт признаков contest.yandex.ru Эмбеддинги и рекуррентные слои для последовательностей contest.yandex.ru Dropout и BatchNorm в обучении нейронных сетей youtube.com Архитектуры CNN. Deep Learning School, с 0
Как 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 нового домена.
Ссылки для изучения







