сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · Нейросети

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

Зачем это спрашивают

Архитектуры спрашивают, чтобы проверить картину эволюции: почему CNN (convolutional neural network) для картинок, почему трансформеры вытеснили RNN и что почём в attention. Не детали слоёв, а конструктивные причины.

// Формула для собеса: каждая архитектура это встроенное в конструкцию предположение о данных.

CNN и RNN: два встроенных предположения

Свёртка ловит локальные паттерны разделяемыми весами: одно ядро едет по всей картинке - инвариантность к сдвигу заложена конструкцией, а пулинг и страйд наращивают receptive field от краёв к целому.

RNN (recurrent neural network) несёт состояние вдоль последовательности; LSTM (long short-term memory)/GRU (gated recurrent unit) добавляют гейты против затухания градиента. Их слабость конструктивна: шаг t ждёт шага t−1 - обучение не параллелится по токенам.

// Эмбеддинг - общий вход всего дискретного: плотный вектор, где близость означает похожесть; токены, айтемы, юзеры - всё начинается с него.

receptive field
участок входа, который «видит» нейрон глубокого слоя

Attention и Transformer

Attention: каждый токен взвешенно смотрит на все - совпадение запроса Q с ключами K даёт веса, по ним суммируются значения V. Дальние зависимости достаются за один шаг, без протаскивания через рекуррентность.

Transformer = self-attention + FFN (feed-forward network) + residual + LayerNorm. Порядок токенов attention сам не знает - его вносит positional encoding. Зато полная параллелизация по токенам - обучение на GPU летит.

// Цена - O(n²) по длине последовательности в памяти и времени: отсюда ограничения контекста и вся ветка efficient-attention.

Q / K / V
запрос-ключ-значение: совпадение Q·K взвешивает V
positional encoding
инъекция порядка токенов - attention его не знает

Три жанра трансформеров

Encoder-модели (BERT) видят текст двунаправленно - понимание: классификация, извлечение, поиск. Decoder-модели (GPT) авторегрессивны - генерация токен за токеном. Encoder-decoder (T5) - seq2seq: перевод, суммаризация.

Жанр модели должен совпадать с задачей: BERT не генерит текст - он не авторегрессивный; GPT можно заставить классифицировать, но это стрельба из пушки.

// В декодере обязателен causal mask - без него модель на обучении «подглядывает» будущие токены, и лосс красиво врёт.

causal mask
запрет attention смотреть вперёд в декодере

Как отвечать: «Почему трансформеры вытеснили RNN?»

Две конструктивные причины. Первая - параллелизация: RNN обрабатывает токены последовательно, шаг ждёт предыдущий, а self-attention считает все токены разом - обучение на GPU ускоряется на порядки, и именно это сделало возможным масштабирование до LLM. Вторая - прямые связи: в RNN зависимость между далёкими токенами тащится через все промежуточные шаги и затухает, в attention любые два токена связаны за один шаг. Цена - квадратичная сложность по длине последовательности, отсюда ограничения контекста и efficient-attention подходы.

Названы обе настоящие причины (не «точнее»), их следствие - масштабируемость, и честная цена. Это ответ уровня «понимаю конструкцию».

На чём валят

  • «Attention победил, потому что точнее» - ключевое: параллелизация и прямые связи дальних токенов.
  • Забыть causal mask в декодере - модель подглядывает ответ, обучение фиктивно.
  • «Удвоим контекст бесплатно» - память attention растёт квадратично.
  • BERT для генерации текста - жанр модели не совпал с задачей.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 15, остальные разбираются в тренажёре.

  1. #architectures1 / 5
    Автоэнкодер обучили реконструировать входы, и он выучил почти тождественное отображение с нулевой ошибкой. Почему это провал, а не успех?
    A)Без узкого горлышка код бесполезен — сеть просто копирует вход
    B)Нулевая ошибка реконструкции означает переполнение и обнуление значения лосса
    C)Автоэнкодер по определению обязан ошибаться на реконструкции
    D)Это успех: идеальная реконструкция входа и была настоящей целью
    показать ответ и разбор
    +A)Без узкого горлышка код бесполезен — сеть просто копирует вход

    // разбор: Реконструкция — прокси-задача; ценность в ограничении (узкий код, шум у denoising AE, разреженность, KL-регуляризация у VAE), которое заставляет выучить структуру данных. «Идеальный копир» проваливает и типовое применение — детекцию аномалий по ошибке реконструкции, где всё реконструируется одинаково хорошо.

  2. #architectures2 / 5
    Зачем нейросети нужна нелинейная функция активации?
    A)Без нелинейности стек слоёв схлопывается в одно линейное преобразование
    B)Нелинейная активация нужна для того, чтобы заметно ускорить обучение сети на GPU
    C)Активация задаёт скорость обучения (learning rate) для каждого слоя
    D)Она нужна на входном слое, чтобы нормировать данные
    показать ответ и разбор
    +A)Без нелинейности стек слоёв схлопывается в одно линейное преобразование

    // разбор: Композиция линейных преобразований — снова линейное преобразование, поэтому сеть без нелинейностей любой глубины эквивалентна одному слою и не выучит сложные зависимости. Нелинейная активация (ReLU, tanh) между слоями и даёт сети выразительность аппроксимировать произвольные функции.

  3. #architectures3 / 5
    Что делает softmax на выходе классификатора?
    A)Обнуляет все логиты, кроме одного максимального по значению
    B)Масштабирует веса последнего слоя к единичной евклидовой норме
    C)Выбирает случайный класс пропорционально размеру обучающей выборки
    D)Превращает логиты в вероятности по классам (в сумме 1)
    показать ответ и разбор
    +D)Превращает логиты в вероятности по классам (в сумме 1)

    // разбор: Softmax(z)_i = exp(z_i)/Σexp(z_j): переводит произвольные логиты в положительные числа, суммирующиеся в единицу, — то есть в распределение вероятностей по классам. В отличие от жёсткого argmax он сохраняет «мягкость» (второй, третий по уверенности классы), что нужно для кросс-энтропии и калибровки.

  4. #architectures4 / 5
    Почему трансформеры используют LayerNorm, а не BatchNorm?
    A)Потому что BatchNorm сложно реализовать в современных библиотеках глубокого обучения для текстовых данных
    B)LayerNorm нормирует по признакам каждого примера отдельно — не зависит от размера батча и длины и стабилен на инференсе по одному токену
    C)Потому что BatchNorm обучается быстрее LayerNorm, а для трансформеров скорость обучения не имеет значения
    D)Потому что LayerNorm убирает необходимость в позиционном кодировании и в функциях активации внутри блоков трансформера
    показать ответ и разбор
    +B)LayerNorm нормирует по признакам каждого примера отдельно — не зависит от размера батча и длины и стабилен на инференсе по одному токену

    // разбор: BatchNorm нормирует по батчу и опирается на его статистику — а в трансформерах последовательности переменной длины, батчи бывают крошечными, а на авторегрессионном инференсе токены идут по одному, и статистика батча плохо определена. LayerNorm нормирует по признакам внутри одного примера, поэтому не зависит от размера батча и длины и одинаково работает в train и на инференсе. Отсюда его выбор в трансформерах.

  5. #architectures5 / 5
    Что делает embedding-слой для категориального признака (например, id товара) в нейросети?
    A)Применяет к id обычное one-hot кодирование и подаёт полученный разреженный вектор дальше без каких-либо изменений
    B)Просто нормирует числовой id в диапазон [0,1] прямо перед подачей его в следующий полносвязный слой сети
    C)Отображает каждый id в обучаемый плотный вектор фиксированной длины — близкие по смыслу id окажутся рядом
    D)Хеширует id в одно случайное число, чтобы сжать размерность входа модели до скалярного значения
    показать ответ и разбор
    +C)Отображает каждый id в обучаемый плотный вектор фиксированной длины — близкие по смыслу id окажутся рядом

    // разбор: Embedding-слой — обучаемая таблица «id → плотный вектор» фиксированной размерности: вместо разреженного one-hot (тысячи нулей) каждый id получает компактное представление, которое учится вместе с сетью так, что похожие по поведению id оказываются близко в векторном пространстве. Это экономнее по памяти и обобщает лучше one-hot. Нормировка и хеширование в одно число — не про это.

дальше

Теорию прочитали. Навык ставится повторением

В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.