Резюме и сравнение часто используемых алгоритмов машинного обучения (конец)

машинное обучение

Серия «Введение в машинное обучение» (2). Как создать полноценный проект машинного обучения, часть 9!

Первые восемь статей цикла:

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


9. Метод бустинга

Кратко

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

буст и бэггинг

И бустинг, и бэггинг — это ансамблевое обучение.(ансамблевое обучение) поле базовых алгоритмов,Типы нескольких классификаторов, используемых этими двумя, согласованы.

Bagging

baggingТакже известен какАгрегация начальной загрузки, например, в исходном наборе данных N отсчетов, мы каждый раз из исходного набора данныхположить обратно, извлекая N раз, мы получаем новый набор данных с N выборками, а затем извлекаем S N раз, мы получаем S новых наборов данных с N выборками, а затем берем S наборов данных. Чтобы обучить S классификаторов, затем применяем S классификаторов для классификация, выберите классификаторКатегория с наибольшим количеством голосовкак окончательный результат классификации. Вообще говоряОбразцы Bootstrap содержат 63% исходных обучающих данных.,так как:

Предполагая, что в общей сложности было взято N образцов, вероятность того, что они не будут взяты N раз, равнаp=(1-\frac{1}{N})^N

Тогда вероятность взятия выборки равнаp = 1- (1- \frac{1}{N})^N

Итак, при большом N имеем:p = 1- \frac{1}{e} = 0.632.

Таким образом, в процессе бутстрапа 36% сэмплов не семплируются, они называютсяout-off-bag(oob), который выводится методом самовыборкиbaggingявляется преимуществом, потому что мы можем использоватьoobСделайте **предварительную оценку**.

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

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

AdaBoost — самая популярная версия метода бустинга.

Алгоритм AdaBoost

AdaBoost (адаптивное повышение) — это мета-алгоритм, который создает сильный классификатор путем объединения нескольких слабых классификаторов..

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

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

Преимущества и недостатки

преимущество
  1. Низкая ошибка обобщения
  2. Его легко реализовать, точность классификации высока, а параметров для настройки не так много.
недостаток
  • Чувствителен к выбросам
  • Время обучения слишком велико
  • Производительность зависит от выбора слабого классификатора

10. GBDT

Кратко

ГБДТ – этоАлгоритм дерева решений, основанный на итеративном накоплении, который строит набор слабых учеников (деревьев) и накапливает результаты нескольких деревьев решений в качестве окончательного вывода прогноза.

Деревья в GBDT — это деревья регрессии, а не деревья классификации..

Случайный лес (RF) против GBDT
  1. Дерево деревьев в РФ этопараллельносгенерировано; дерево в GBDTприказсгенерировано; слишком много деревьев обоих будут переобучать, ноGBDT более склонен к переоснащению
  2. Особенности разделения каждого дерева в RFболее случайно; Предыдущее разбиение дерева в GBDT предпочтительно разбивает признаки, которые отличают большинство выборок, а последнее разбиение дерева различает признаки для небольшого числа выборок.
  3. Основными параметрами в РФ являютсяколичество деревьев; Основными параметрами в GBDT являютсяГлубина дерева, обычно 1

Преимущества и недостатки

преимущество
  1. Высокая точность
  2. Может обрабатывать нелинейные данные
  3. Может обрабатывать несколько типов функций
  4. Подходит для низкоразмерных плотных данных
  5. хорошая интерпретируемость модели
  6. Нет необходимости нормализовать функции, и функции могут выбираться автоматически.
  7. Может учитывать различные функции потерь, включая среднеквадратичную ошибку иLogLossЖдать
недостаток
  1. boostingЭто последовательный процесс, поэтому параллелизм затруднителен, и необходимо учитывать связь между верхним и нижним деревьями.
  2. высокая вычислительная сложность
  3. Не используйте многомерные разреженные функции

настройка параметров

  1. Количество деревьев 100~10000
  2. Глубина листьев 3~8
  3. Скорость обучения 0,01~1
  4. Максимальное дерево узлов на листьях 20
  5. Коэффициент обучающей выборки 0,5~1
  6. Коэффициент выборки тренировочных функций\sqrt(n)

xgboost

xgboost — отличная реализация повышения Tree, он сияет в соревнованиях Kaggle. Он имеет следующие отличные характеристики:

  1. Сложность древовидной модели показана как член регуляризации, добавленный к цели оптимизации.
  2. При выводе формулы используется производная второго порядка и используется разложение Тейлора второго порядка.
  3. Реализован алгоритм аппроксимации нахождения точки разделения.
  4. Разреженность признаков эксплуатируется.
  5. Данные сортируются заранее и хранятся в виде блоков, что способствует параллельным вычислениям.
  6. Основанный на распределенной коммуникационной среде Rabit, он может работать на MPI и пряже. (Последний больше не основан на кролике)
  7. Реализация оптимизирована для оптимизации архитектуры и производительности кэша и памяти.

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

Код

Ниже приведено простое использованиеxgboostПример этой рамки.

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=1729)
print(X_train.shape, X_test.shape)

#模型参数设置
xlf = xgb.XGBRegressor(max_depth=10, 
                        learning_rate=0.1, 
                        n_estimators=10, 
                        silent=True, 
                        objective='reg:linear', 
                        nthread=-1, 
                        gamma=0,
                        min_child_weight=1, 
                        max_delta_step=0, 
                        subsample=0.85, 
                        colsample_bytree=0.7, 
                        colsample_bylevel=1, 
                        reg_alpha=0, 
                        reg_lambda=1, 
                        scale_pos_weight=1, 
                        seed=1440, 
                        missing=None)

xlf.fit(X_train, y_train, eval_metric='rmse', verbose = True, eval_set = [(X_test, y_test)],early_stopping_rounds=100)

# 计算 auc 分数、预测
preds = xlf.predict(X_test)

11. Алгоритм оптимизации

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

Градиентный спуск

Градиентный спуск — самый ранний, простой и наиболее часто используемый метод оптимизации.

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

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

Идея оптимизации метода градиентного спуска состоит в том, чтобы использовать направление отрицательного градиента текущей позиции в качестве направления поиска, потому что это направление является самым быстрым направлением спуска текущей позиции, поэтому его также называют «методом самого крутого спуска». . Метод наискорейшего спуска ближе к целевому значению, чем меньше размер шага, тем медленнее прогресс.

Схематическая диаграмма итерации поиска метода градиентного спуска показана на следующем рисунке:

Недостатки:

(1) Скорость сходимости замедляется при приближении к минимальному значению, как показано на следующем рисунке;

(2) При поиске по прямой могут возникнуть проблемы;

(3) Может быть «зигзагообразное» падение.

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

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

  1. Пакетный градиентный спуск: весь тренировочный набор берется на каждой итерации.
  2. Стохастический градиентный спуск: случайное использование обучающей выборки на итерацию
  3. Мини-пакетный градиентный спуск: каждая итерация требует небольшого обучающего подмножества.

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

метод Ньютона

Метод Ньютона — это метод приближенного решения уравнений в вещественных и комплексных полях. Метод использует первые несколько членов ряда Тейлора функции f(x) для нахождения корней уравнения f(x) = 0.

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

Самая большая особенность метода Ньютона заключается в том, что скорость его сходимости очень высока.

Метод Ньютона основан на тангенсе текущего положения для определения следующего положения, поэтому метод Ньютона также ярко называют «методом тангенса». Путь поиска метода Ньютона (двумерный случай) показан на следующем рисунке:

Пример диаграммы динамического поиска метода Ньютона:

О сравнении эффективности метода Ньютона и метода градиентного спуска:

  • По сути,Метод Ньютона — это сходимость второго порядка, а градиентный спуск — сходимость первого порядка, поэтому метод Ньютона быстрее.. Если чаще говорят, например, что вы хотите найти кратчайший путь ко дну бассейна, метод градиентного спуска выбирает только направление с наибольшим уклоном каждый раз из вашего текущего положения, а метод Ньютона выбирает направление. ,Он не только будет учитывать, достаточно ли велик наклон, но и станет ли он больше после того, как вы сделаете шаг.. Поэтому можно сказать, что метод Ньютона может видеть дальше, чем метод градиентного спуска, и может быстрее идти ко дну. (Метод Ньютона имеет долгосрочное видение, поэтому обходных путей меньше; условно говоря, метод градиентного спуска рассматривает только локальный оптимум и не имеет глобального представления.)
  • Согласно объяснению на вики,Геометрически метод Ньютона использует квадратичную поверхность для соответствия локальной поверхности в текущем местоположении, в то время как метод градиентного спуска использует плоскость для соответствия текущей локальной поверхности.,как правило,Квадратные поверхности подходят лучше, чем плоскости, поэтому траектория спуска, выбранная методом Ньютона, будет больше соответствовать реальной оптимальной траектории спуска.

Примечание. Итеративный путь метода Ньютона выделен красным цветом, а итерационный путь метода градиентного спуска — зеленым.

Преимущества и недостатки
преимущество

сходимость второго порядка, быстрая скорость сходимости;

недостаток
  1. Матрица Гессе (обратная матрица Гессе) требует большого объема вычислений. Когда проблема большая, она требует не только большого объема вычислений, но и много места для хранения. Поэтому, когда метод Ньютона сталкивается с массивные данные из-за огромных накладных расходов на каждом шаге итерации становятся неприменимыми;
  2. Метод Ньютона не всегда может гарантировать, что матрица Гессе будет положительно определенной на каждой итерации.Если матрица Гессе не является положительно определенной, направление оптимизации будет «отклоняться», что делает метод Ньютона недействительным, что также показывает надежность метод Ньютона.

Квазиньютоновский метод

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

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

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

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

Сопряженный градиент

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

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

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

Эвристические методы оптимизации

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

Существует также специальный алгоритм оптимизации, называемый алгоритмом многокритериальной оптимизации, который в основном направлен на оптимизационную задачу оптимизации нескольких целей (двух или более) одновременно.Более классическими алгоритмами в этом отношении являются алгоритм NSGAII, MOEA/D алгоритм и искусственный иммунный алгоритм и т. д.

Решение задач условной оптимизации — метод множителей Лагранжа

Этот метод может относиться к статьеМетод множителей Лагранжа

Алгоритм Левенберга-Марквардта

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

Алгоритм Левенберга-МарквардтаНастроено для функции суммы квадратов ошибок. Это позволяет нейронным сетям, использующим эту метрику ошибок, обучаться очень быстро. Однако алгоритм Левенберга-Марквардта имеет некоторые недостатки:

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

Сравнение памяти и скорости сходимости

На рисунке ниже показаны все рассмотренные выше алгоритмы, а также их скорость сходимости и требования к памяти. Самая медленная сходимость из них — это алгоритм градиентного спуска, который также требует наименьшего объема памяти. И наоборот, алгоритм Левенберга-Марквардта может быть самым быстрым для сходимости, но он также требует больше всего памяти. Сравнительным компромиссным методом является квазиньютоновский метод.

在这里插入图片描述

в конце концов:

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

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

CNN можно применять для классификации сцен, классификации изображений, а теперь и для многих задач обработки естественного языка (NLP), таких как классификация предложений.

LeNet — одна из первых структур CNN, созданная великим богом Яном Лекуном и в основном используемая для задач классификации символов.

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

12.1 Сверточные слои

Введение в свертки

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

Каждое изображение можно рассматривать как матрицу, содержащую значение каждого пикселя, диапазон значений пикселей составляет 0~255, 0 означает черный, 255 — белый. Ниже приведен пример матрицы 5×5 со значениями 0 или 1.

Далее еще одна матрица 3×3:

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

Желтая матрица идет слева направо и сверху вниз по зеленой матрице, а значение шага каждого слайда составляет 1 пиксель, поэтому вы получаете матрицу 3 × 3.

В CNN желтая матрица называетсяфильтр или ядро ​​или экстрактор функций, а матрица, полученная сверткой, называется «Карта признаков» или «Карта активации».

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

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

В практических приложениях CNN может узнать значения этих фильтров в процессе обучения, но сначала нам нужно указать размер, номер и структуру фильтра. Чем больше фильтров используется, тем больше признаков изображения можно извлечь и тем лучше работает сеть.

Размер карты объектов определяется следующими тремя параметрами:

  • Глубина:Глубина равна количеству фильтров.
  • Страйд: значение шага — это расстояние каждого слайда при использовании фильтра для слайдов на входной матрице. Чем больше значение шага, тем меньше размер результирующей карты объектов.
  • Zero-padding: иногда можно дополнить 0 на границе входной матрицы, чтобы фильтр можно было применить к пикселям на краю, хорошее заполнение нулями позволяет нам контролировать размер карты признаков. Свертка с использованием этого метода называетсяwide convolution, который не используетсяnarrow convolution.
Формула свертки и количество параметров

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

\begin{align} Y(m,n) & =X(m,n)*H(m,n) \\  &= \sum_{i=-\infty}^{+\infty}\sum_{j=-\infty}^{+\infty}X(i,j)H(m-i,n-j) \\ &=\sum_{i=-\infty}^{+\infty}\sum_{j=-\infty}^{+\infty}X(m-i,n-j)H(i,j) \end{align}

в приведенной выше формулеH(m,n)представляет ядро ​​свертки.

Этапы расчета слоя свертки в CNN немного отличаются от двумерной свертки, определяемой приведенной выше формулой.Во-первых, размерность увеличивается до трехмерной и четырехмерной свертки, которая имеет дополнительный «канал» по сравнению с двумерная свертка. )**, каждый канал по-прежнему рассчитывается в соответствии с методом двумерной свертки, а несколько каналов и несколько ядер свертки выполняют двумерную свертку соответственно для получения многоканального вывода, который необходимо «объединить». " в один канал;Во-вторых, ядро ​​свертки не «переворачивается» во время вычисления свертки, а выполняет вычисление «корреляции» скользящего окна с входным изображением.. Повторно выражается в формуле следующим образом:

Y^l(m,n) =X^k(m,n)*H^{kl}(m,n) = \sum_{k=0}^{K-1}\sum_{i=0}^{I-1}\sum_{j=0}^{J-1}X^k(m+i,n+j)H^{kl}(i,j)

Здесь предполагается, что сверточный слой имеет L выходных каналов и K входных каналов, поэтому для преобразования количества каналов требуется K×L ядер свертки. Где X^k представляет карту 2D-объектов k-го входного канала, Y^l представляет карту 2D-функций l-го выходного канала, а H^{kl} представляет ядро ​​2D-свертки k-й строки и l-го столбца.

Предполагая, что размер ядра свертки равен I×J, а размер карты признаков каждого выходного канала равен M×N, объем вычислений сверточного слоя при однократной пересылке каждой выборки этого слоя составляет

Расчеты(MAC)=I×J×M×N×K×L.

Параметры обучения сверточного слоя, т.е.Количество ядер свертки, умноженное на размер ядра свертки --Params = I×J×K×L.

Здесь отношение суммы расчета к сумме параметра определяется какCPR=Calculations/Params=M×N.

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

преимущество

Сверточная нейронная сеть значительно сокращает количество соединений за счет «уменьшения параметров» и «распределения веса», то есть количества параметров, которые необходимо обучить.

Предположим, что наше изображение1000×1000, имеется 10^6 нейронов скрытого слоя, то если они полностью связаны, то есть каждый нейрон скрытого слоя связан с каждым пикселем изображения, то имеется 10^12 связей, то есть 10^12 Весовые параметры нужны дрессировать, чего явно не стоит.

Но для ядра свертки, которое распознает только определенные функции, должно ли оно быть достаточно большим, чтобы покрыть все пиксели всего изображения?

обычно не требуется,Конкретный признак, особенно тот, который должен быть выделен первым слоем, обычно довольно прост и занимает лишь небольшую часть изображения. Поэтому мы устанавливаем меньшую локальную восприимчивую область, например10*10, то есть каждый нейрон должен соответствовать только этому10*10Локальные образы связаны, поэтому 10 ^ 6 нейронов также имеют 10 ^ 8 связей. Это называется уменьшением параметра.

Что такое распределение веса?

В приведенном выше локальном соединении 10 ^ 6 нейронов, каждый нейрон соответствует 100 параметрам, поэтому это 10 ^ 8 параметров,Если параметры, соответствующие каждому нейрону, одинаковы, то необходимо обучить только 100 параметров..

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

И эти 100 параметров являются только своего рода ядром свертки, и можно извлечь только один тип признаков.Мы можем использовать 100 ядер свертки для извлечения 100 видов признаков, а параметры, которые необходимо обучить, составляют всего 10^4. вначале мы обучили 10^12 параметров, и можно извлечь только одну функцию. Выбрав 100 ядер свертки, мы можем получить 100 карт признаков, и каждую карту признаков можно рассматривать как отдельный канал изображения.

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

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

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

Сверточная нейронная сеть с ееСпециальная структура для локального распределения весаОн обладает уникальными преимуществами в распознавании речи и обработке изображений, а его структура ближе к настоящей биологической нейронной сети.Разделение веса снижает сложность сети и позволяет избежать сложности реконструкции данных во время выделения и классификации признаков.Тратить.

12.2 Нелинейный слой (ReLU)

Функция нелинейной коррекции **ReLU (Rectified Linear Unit)** показана на следующем рисунке:

Это скалярное произведение для каждого пикселя и заменяет отрицательные пиксели на 0.

Его цель состоит в том, чтобы добавить нелинейность CNN,Поскольку реальные задачи, решаемые CNN, являются нелинейными, а операция свертки является линейной операцией, для добавления нелинейных свойств необходимо использовать нелинейную функцию, такую ​​как ReLU..

Другие нелинейные функции включаютtanhиSigmoid,ноReLUБыло показано, что функции работают лучше всего в большинстве случаев.

12.3 Слой объединения

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

заMax PoolingДля работы сначала определите соседа в пространстве, например окно 2 × 2, и извлеките самый большой элемент из карты объектов ReLU в окне. Помимо извлечения самого большого элемента, вы также можете использовать среднее или суммарное значение элементов в окне.

но,Max Poolingпроизводительность лучшая. Пример можно показать на следующем рисунке:

Значение шага, используемое на приведенном выше рисунке, равно 2.

Согласно родственным теориям, ошибка выделения признаков в основном связана с двумя аспектами:

  1. Размер района ограниченРезультирующая расчетная дисперсия увеличивается;
  2. Ошибка параметра свёрточного слояпривести к сдвигу расчетного среднего.

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

Причины использования пула следующие:

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

12.4 Полносвязный слой

Полносвязный слойТрадиционный многослойный персептрон, который используетsoftmaxфункция активации.

Его основная функция состоит в том, чтобыФункции, извлеченные предыдущими сверточными слоями, объединяются, а затем классифицируются..

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

До появления CNN самые ранние типы сетевых вычислений глубокого обучения были полностью подключены.

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

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

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

Весь процесс обучения CNN выглядит следующим образом:

  1. Первый заключается в случайной инициализации всех фильтров и других параметров и значений веса;
  2. Введите картинку, выполните прямое распространение, то есть пройдите слой свертки, операции ReLU и объединения, и, наконец, доберитесь до полносвязного слоя для классификации и получите результат классификации, то есть выведите вектор, содержащий предсказанное значение вероятности каждого класса;
  3. Рассчитать ошибку, то есть функцию стоимости, где функция стоимости может иметь различные методы расчета, чаще всего используется функция суммы квадратов;
  4. Обратное распространение используется для вычисления градиента ошибки, соответствующей каждому весу в сети.Как правило, метод градиентного спуска используется для обновления значения веса каждого фильтра.Цель состоит в том, чтобы сделать выходную ошибку, то есть значение функция стоимости как можно меньше.
  5. Повторяйте шаги со второго по четвертый выше, пока количество тренировок не достигнет установленного значения.

резюме

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


Ссылаться на:


Добро пожаловать, чтобы обратить внимание на мою общедоступную учетную запись WeChat — машинное обучение и компьютерное зрение, или отсканируйте QR-код ниже, давайте общаться, учиться и прогрессировать вместе!

Прекрасная рекомендация в прошлом

Серия машинного обучения
Рекомендация руководства по проектам и ресурсам Github