Сборник интервью по компьютерному зрению — основы машинного обучения для глубокого обучения (2)

искусственный интеллект

Это 3-й день моего участия в ноябрьском испытании обновлений, узнайте подробности события:Вызов последнего обновления 2021 г."

Эта статья в основном включает в себя опыт интервью, связанный с пакетной нормализацией, базовыми сверточными нейронными сетями и функциями потерь.

1. Пакетная нормализация

** 1. Пакетная нормализация ** может пониматься как метод предварительной обработки данных, так что вход каждого слоя сети подчиняется (0, 1) 0 среднему, 1 распределению дисперсии, если BN не выполняется, то каждый Данные распределение вторичных входных данных непоследовательно, и это, естественно, влияет на точность обучения сети. Форвардная формула:

image-20210520130702471.png переслать код доступа

def batchnorm_forward(x, gamma, beta, eps):

  N, D = x.shape
  #为了后向传播求导方便,这里都是分步进行的
  #step1: 计算均值
  mu = 1./N * np.sum(x, axis = 0)

  #step2: 减均值
  xmu = x - mu

  #step3: 计算方差
  sq = xmu ** 2
  var = 1./N * np.sum(sq, axis = 0)

  #step4: 计算x^的分母项
  sqrtvar = np.sqrt(var + eps)
  ivar = 1./sqrtvar

  #step5: normalization->x^
  xhat = xmu * ivar

  #step6: scale and shift
  gammax = gamma * xhat
  out = gammax + beta

  #存储中间变量
  cache =  (xhat,gamma,xmu,ivar,sqrtvar,var,eps)

  return out, cache

код обратного распространения

def batchnorm_backward(dout, cache):

  #解压中间变量
  xhat,gamma,xmu,ivar,sqrtvar,var,eps = cache

  N,D = dout.shape

  #step6
  dbeta = np.sum(dout, axis=0)
  dgammax = dout
  dgamma = np.sum(dgammax*xhat, axis=0)
  dxhat = dgammax * gamma

  #step5
  divar = np.sum(dxhat*xmu, axis=0)
  dxmu1 = dxhat * ivar #注意这是xmu的一个支路

  #step4
  dsqrtvar = -1. /(sqrtvar**2) * divar
  dvar = 0.5 * 1. /np.sqrt(var+eps) * dsqrtvar

  #step3
  dsq = 1. /N * np.ones((N,D)) * dvar
  dxmu2 = 2 * xmu * dsq #注意这是xmu的第二个支路

  #step2
  dx1 = (dxmu1 + dxmu2) 注意这是x的一个支路

  #step1
  dmu = -1 * np.sum(dxmu1+dxmu2, axis=0)
  dx2 = 1. /N * np.ones((N,D)) * dmu 注意这是x的第二个支路

  #step0 done!
  dx = dx1 + dx2

  return dx, dgamma, dbeta

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

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

2. Несколько параметров батчнорм, какие параметры можно узнать?

Четвертый шаг добавляет два параметра γ и β, которые называются параметрами масштабирования и параметрами перевода соответственно.Выбирая разные γ и β, скрытые единицы могут иметь разные распределения. γ и β в этом можно узнать из вашей модели и обновить с помощью таких алгоритмов, как градиентный спуск, Адам и т. д.

3. Роль пакетной нормализации

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

①Не только значительно улучшает скорость обучения, но и процесс сходимости значительно ускоряется;②Это также может увеличить эффект классификации.Одно из объяснений заключается в том, что это выражение регуляризации, подобное Dropout, для предотвращения переобучения, поэтому его можно достичь без Dropout.3 Кроме того, процесс настройки параметров намного проще, требования к инициализации не так высоки, и можно использовать большую скорость обучения.

4. Как реализовать слой BN

1. Рассчитайте выборочное среднее. 2. Рассчитайте выборочную дисперсию. 3. Стандартизированная обработка выборочных данных. 4. Выполните обработку панорамирования и масштабирования. Вводятся два параметра γ и β. для обучения двух параметров γ и β. Вводятся обучаемые параметры реконструкции γ и β, чтобы наша сеть могла научиться восстанавливать распределение признаков, которое необходимо изучить исходной сети.

**5.В какой части сети обычно используется BN? **Сначала свертка, а затем BN

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

6. Зачем реконструировать БН?

Восстановите функции, изученные исходным слоем. Поэтому мы вводим этот обучаемый параметр реконструкции γ, β, чтобы наша сеть могла научиться восстанавливать распределение признаков, которое необходимо изучить исходной сети.

7. Обратное распространение слоя BN, как найти вывод

Обратное распространение:

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

xi,y,β\frac{\partial \ell}{\partial x_{i}}, \frac{\partial \ell}{\partial y}, \frac{\partial \ell}{\partial \beta} \circ

определение

yi\frac{\partial \ell}{\partial y_{i}}

остаток, переданный из предыдущего слоя.

рассчитатьY:γ=i=1myixi.рассчитатьβ:β=i=1myi\begin{array}{ll} \text {вычислить} \frac{\partial \ell}{\partial Y}: & \frac{\partial \ell}{\partial \gamma}=\sum_{i=1} ^{m} \frac{\partial \ell}{\partial y_{i}} \cdot \overline{x_{i}} . \\ \text {расчет} \frac{\partial \ell}{\partial \ бета}: & \frac{\partial \ell}{\partial \beta}=\sum_{i=1}^{m} \frac{\partial \ell}{\partial y_{i}} \end{array }
Рассчитать нижеxi . \text {Рассчитать ниже} \frac{\partial \ell}{\partial x_{i}} \text { . }

Глядя на формулы масштабирования, сдвига и нормализации, вы можете увидеть цепной процесс вычисления от xi до yi:

имеют xiμBоB2xiyi в то же время xiμBxiyi .  в то же время xixiyi .  но xi=yiyixi(xixi+xiμBμBxi+xiоB2оB2μBμBxi) . \begin{array}{l} \text { has} \quad x_{i} \gg \mu \mathcal{B} \gg \sigma_{\mathcal{B}}^{2} \gg \overline{x_{ i}} \gg y_{i}\\ \text {также} x_{i} \gg \mu \mathcal{B} \gg \overline{x_{i}} \gg y_{i} \text { . } \\ \text {также} x_{i} \gg \overline{x_{i}} \gg y_{i} \text { . }\\ \text { then} \quad \frac{\partial \ell}{ \partial x_{i}}=\frac{\partial \ell}{\partial y_{i}} \cdot \frac{\partial y_{i}}{\partial \overline{x_{i}}}\left (\ frac {\ partial \ overline {x_ {i}}} {\ partial x_ {i}} + \ frac {\ partial \ overline {x_ {i}}} {\ partial \ mu \ mathcal {B}} \ cdot \ frac {\ partial \ mu \ mathcal {B}} {\ partial x_ {i}} + \ frac {\ partial \ overline {x_ {i}}} {\ partial \ sigma_ {B} ^ {2}} \ cdot \ frac {\ partial \ sigma_ {B} ^ {2}} {\ partial \ mu \ mathcal {B}} \ cdot \ frac {\ partial \ mu \ mathcal {B}} {\ partial x_ {i} }\right) \text { . } \end{массив}

Три плюса в приведенной выше формуле соответствуют трем цепным вычислениям.

8. Разница между пакетным обучением и тестированием

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

Фаза тестирования: за раз вводится только одно изображение, как рассчитать среднее значение и дисперсию партии, поэтому в коде есть следующие две строки, среднее значение и var вычисляются во время обучения, и они используются непосредственно во время тестирования Хорошо, не нужно вычислять среднее значение и дисперсию.

9. В чем разница между добавлением BN или первой активацией (Activate first)

В настоящее время на практике BN обычно помещают за ReLU. Есть также оценки, которые показывают, что BN лучше после ReLU.

2. Базовые сверточные нейронные сети

1. Классическая модель CNN

LeNet, AlexNet, VGG, GoogLeNet, ResNet, DenseNet

2. Понимание CNN

CNN= Входной уровень + {[Сверточный слой (Слой CONV)*a+Слой ReLU (Слой ReLU)]*b+ Слой пула (Слой пула)}*c+Слой полного соединения (Слой FC)*d .

3. В чем разница между CNN и традиционной полносвязной нейронной сетью?

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

4. Расскажите о CNN, о каждом слое и его роли

Сверточный слой: используйте его для извлечения признаков

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

Функция активации: используется для добавления нелинейных факторов, поскольку возможности выражения линейной модели недостаточно.

Полносвязные слои (FC) играют роль «классификатора» во всей сверточной нейронной сети. Полносвязный слой играет роль сопоставления изученного «распределенного представления объектов» с образцом пространства меток.

5. Почему нейронные сети используют сверточные слои? - Общие параметры, локальное подключение;

Каковы предпосылки для использования сверточных слоев? - Согласованное распределение данных

6. В чем заключается самое большое улучшение resnet по сравнению с предыдущей моделью сверточной нейронной сети? , какую проблему решает

Пропустить соединения (остаточные блоки) и слои узких мест. Сам Resnet является результатом подгонки остатков, что упрощает задачи обучения сети и может эффективно решить проблему дисперсии градиента.

Почему Resnet может решить проблему исчезновения градиента, как это сделать и можно ли его получить?

Потому что каждая свертка (включая соответствующую операцию активации) будет терять некоторую информацию: такую ​​как случайность (слепота) параметров ядра свертки, торможение функции активации и так далее. В настоящее время ярлык в ResNet эквивалентен непосредственному получению ранее обработанной информации и последующей ее совместной обработке, что приводит к уменьшению ущерба.

7. Какие улучшения были сделаны во второй версии реснета, какой вариант реснета имеет лучшую производительность, какова структура и каков принцип?

image-20210520120724594.png

Resnetv2: 1. По сравнению с исходной структурой сети f в первой активированной сети представляет собой преобразование идентичности, что упрощает оптимизацию модели. 2. Использование сети, которая сначала активирует вход, может уменьшить переоснащение сети.

Самый эффективный вариант Resnet — Resnext.

image-20210520120925213.png

Можно сказать, что ResNeXt — это продукт, основанный на Resnet и Inception «Split + Transfrom + Concat», с простой структурой, понятным и достаточно мощным. (Начальная сеть использует идею разделения-преобразования-слияния, то есть сначала разделите входные данные на разные низкие измерения, затем создайте карту объектов и, наконец, объедините результаты вместе. Однако обобщение модели не годится, поскольку Слишком много всего нужно спроектировать для разных задач.)

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

По сравнению с ResNet, с тем же количеством параметров, результаты лучше: 101-слойная сеть ResNeXt примерно так же точна, как 200-слойная ResNet, но только вдвое менее интенсивна в вычислениях.

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

8. Кратко опишите сеть, отличия и улучшения от InceptionV1 до V4.

Ядром Inceptionv1 является замена некоторых больших сверточных слоев googlenet на 11, 33, 5*****5 небольших сверток, что позволяет значительно уменьшить количество весовых параметров.

Inception V2 добавляет к входу batch_normal, поэтому его статья также называется batch_normal, После добавления обучение будет сходиться быстрее, обучение будет естественным образом более эффективным, а использование отсева может быть уменьшено.

Inception V3 поставил около 7 в googlenetСвертка 7 становится 17 и 7Два слоя 1 последовательно, 33 то же самое, становится 13 и 31. Это ускоряет расчет, увеличивает нелинейность сети и снижает вероятность переобучения. Также изменен вход в сеть с 224 на 299.

Inception v4 фактически добавляет метод реснета к исходному начальному, с одной ноды он может пропускать какие-то ноды и напрямую подключаться к некоторым последующим нодам, а остаточный тоже следует за прошлым. Кроме того, V4 поставил один первый 11 снова 33 этот шаг заменяется первым 33 снова 11.

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

9. Почему DenseNet более выразительный, чем ResNet?

При увеличении глубины DenseNet расширяет ширину сети каждого DenseBlock, что может увеличить способность сети идентифицировать функции, а поскольку горизонтальная структура DenseBlock аналогична структуре начального блока, количество параметров, которые необходимо рассчитать, составляет значительно снижается.

3. Функция потерь

1. Расскажите о сглаженных потерях L1 и объясните преимущества использования сглаженных потерь L1.

smoothL1(x)={0.5x2 if x<1x0.5 otherwise \operatorname{smooth}_{L_{1}}(x)=\left\{\begin{array}{ll} 0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise } \end{array}\right.

Преимущества Smooth L1: ① По сравнению с функцией потерь L1, она может сходиться быстрее. ② По сравнению с функцией потерь L2, она нечувствительна к выбросам и выбросам, а изменение градиента относительно невелико, и от нее нелегко убежать во время обучения.8.png

2. Разница между L1_loss и L2_loss

Средняя абсолютная ошибка (потеря L1): Средняя абсолютная ошибка (MAE) относится к среднему расстоянию между предсказанным моделью значением f(x) и истинным значением y, и ее формула выглядит следующим образом:

MAE=n=1nf(xi)yinM A E=\frac{\sum_{n=1}^{n}\left|f\left(x_{i}\right)-y_{i}\right|}{n}

10.png

Среднеквадратическая ошибка MSE (L2 Loss): Среднеквадратическая ошибка (MSE) представляет собой среднеквадратичную разницу между предсказанным моделью значением f(x) и реальным значением выборки y, и ее формула выглядит следующим образом.

MSE=i=1n(fxiyi)2nM S E=\frac{\sum_{i=1}^{n}\left(f_{x_{i}}-y_{i}\right)^{2}}{n}

12.png

3. Почему в задаче классификации используется перекрестная энтропия вместо квадратичных потерь? Что такое кросс-энтропия

L=[ylogy^+(1y)log(1y^)]L=-[y \log \hat{y}+(1-y) \log (1-\hat{y})]

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

Почему функция кросс-энтропийных потерь чаще используется в классификации, чем функция среднеквадратических ошибок?

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

4. Как разработать функцию потерь для нескольких категорий изображения, задача классификации с несколькими метками

Как решить многометочную классификацию, рассмотрим с точки зрения функции потерь

Название задачи классификации Выходной слой использует функцию активации Соответствующая функция потерь

Бинарная сигмовидная функция Бинарная функция потери перекрестной энтропии (binary_crossentropy)

Многоклассовая функция Softmax Многоклассовая функция потери перекрестной энтропии (categorical_crossentropy)

Сигмовидная функция классификации с несколькими метками Функция потери двоичной перекрестной энтропии (binary_crossentropy)

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

5. Функция потерь для LR? Какова его производная? Какова его производная после добавления регуляризации?

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

Хотя логистическая регрессия имеет в своем названии «регрессию», на самом деле это метод классификации, в основном используемый для задач с двумя классификациями.Он использует логистическую функцию (или сигмовидную функцию), а диапазон значений независимой переменной составляет (-INF, INF), диапазон значений независимой переменной равен (0,1), а форма функции такова:

g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}

Функция потерь LR представляет собой функцию кросс-энтропийных потерь.

использованная литература

LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.

Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[J]. Advances in neural information processing systems, 2012, 25: 1097-1105.

Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.

Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.

He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4700-4708.

He K, Zhang X, Ren S, et al. Identity mappings in deep residual networks[C].European conference on computer vision. Springer, Cham, 2016: 630-645.

Xie S, Girshick R, Dollár P, et al. Aggregated residual transformations for deep neural networks[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1492-1500.

Ссылка на ссылку

zhuanlan.zhihu.com/p/26138673

blog.CSDN.net/Elaine_package/…

woo woo woo.cn blog on.com/Guo Yaohua/Afraid…

blog.CSDN.net/Первоначально 128VE900/…

blog.CSDN.net/Не более 1992/искусство…

blog.CSDN.net/Kitty Support/art…

blog.CSDN.net/QQ122716072…

woo woo woo.cn blog on.com/Wang Guchang…

zhuanlan.zhihu.com/p/97324416

blog.CSDN.net/Zou Xiaoyun09/art…