1. Каковы применения глубокого обучения
- Изображение: распознавание изображений, распознавание объектов, улучшение изображения, восстановление изображения, обнаружение целей.
- Обработка естественного языка: машинное создание, персональные рекомендации, классификация текстов, перевод, автоматическое исправление ошибок, анализ настроений.
- Численный прогноз, количественная торговля
2. Что такое нейронная сеть
Возьмем в качестве примера случай прогнозирования цен на жилье.В качестве входных данных нейронной сети используется площадь дома (назовем его ?), а через узел (маленький кружок) цена окончательно выводится (обозначим его через ?). На самом деле этот маленький кружок представляет собой один нейрон, такой же, как нейроны в человеческом мозгу. Если это одна нейронная сеть, независимо от размера,Он формируется путем объединения этих отдельных нейронов. Если вы думаете об этих нейронах как об отдельных блоках Lego, вы строите большую нейронную сеть из строительных блоков.
Нейронные сети имеют мало общего с мозгом. Это упрощенное сравнение, сравнивающее логическую единицу нейронной сети с биологическим нейроном справа. До сих пор даже нейробиологам было трудно объяснить, на что способен нейрон.
2.1 Что такое перцептрон
Это начинается с логистической регрессии, Мы все знаем, что целевая функция логистической регрессии выглядит следующим образом:
Мы представляем это в терминах сети, и эта сеть называется персептроном:
Если вы добавите к этому персептрону скрытый слой, вы получите структуру нейронной сети, о которой мы поговорим ниже.
2.2 Структура нейронной сети
Общая структура нейронной сети определяется выражениемВходной слой, скрытый слой (нейрон), выходной слойсостоит. Скрытый слой может состоять из одного или нескольких наложенных друг на друга слоев, и слои связаны друг с другом, как показано на следующем рисунке.
Вообще говоря, количество слоев нейронной сети рассчитывается таким образом.Входной слой не учитывается.От скрытого слоя до выходного слоя всего несколько слоев представляют собой нейронную сеть с несколькими слоями., например, на приведенном выше рисунке представлена трехслойная нейронная сеть.
**Объясните значение скрытого слоя:** В нейронной сети, когда вы обучаете ее с помощью обучения с учителем, обучающий набор содержит как входные данные ?, так и целевые выходные данные ?, поэтому значение термина скрытый слой находится в обучающий набор, Мы не знаем точных значений этих промежуточных узлов, а значит, вы не можете увидеть значения, которые они должны иметь в обучающем наборе.
- Нейронная сеть с несколькими скрытыми слоями работает намного лучше, чем нейронная сеть с одним скрытым слоем.
- При увеличении количества скрытых слоев или нейронов в скрытом слое «емкость» нейронной сети станет больше, а пространственное выражение станет сильнее.
- Слишком много скрытых слоев и нейронных узлов вызовут проблемы переобучения.
- Не пытайтесь замедлить переоснащение за счет уменьшения количества параметров нейронной сети, используйте регуляризацию или отсев.
2.3 Почему нейронная сеть обладает способностью нелинейной сегментации
Если предположить, что следующая фигура классифицирована, круг — это один тип, а красный крест — другой тип, то при использовании линейной сегментации их никак нельзя разделить.
В это время вводится нейронная сеть (2-х слойная нейронная сеть), включающая скрытый слой.В скрытом слое получаются графики P1 и P2 соответственно.Части выше линии P1 - красные кресты, а части ниже линии P2 являются частями , все красные кресты, и есть 2 линейные прямые линии для двух нейронов. То, что нужно сделать от скрытого слоя к выходному слою, состоит в том, чтобы объединить эти две прямые линии, и вы получите график h(x), то есть пространство выше P1 и пространство ниже P2 являются классификацией красный крест.Остальное пространство классифицируется как круги. Это превращает исходную нелинейную сегментацию в нелинейную.
Если скрытый слой является более сложным, он может идеально реализовать разделение сложного плоского распределения точек выборки (аналогично матированию), как показано на следующем рисунке:
3. Процесс расчета нейронной сети
3.1 Процесс расчета
Как показано ниже. Блок расчета нейронной сети представлен кружком.Расчет логистической регрессии состоит из двух шагов.Сначала вы вычисляете ? по шагам, а затем во втором На первом этапе вы используете сигмовидную функцию в качестве функции активации для вычисления ? (чтобы получить ?), нейронная сеть просто многократно повторяет вычисление таким образом.
Один из расчетов нейрона показан на следующем рисунке:
векторизованное вычисление, выполнение этого с помощью цикла for выглядит действительно неэффективным, если вы выполняете программу нейронной сети. Итак, следующее, что нам нужно сделать, это векторизовать эти четыре уравнения. Процесс векторизации состоит в том, чтобы сложить параметры слоя нейронов в нейронной сети по вертикали, например, ? в скрытом слое складывается вертикально, чтобы сформировать матрицу (4,3), которая представлена символом ?[ 1]. Другой способ взглянуть на это так: у нас есть четыре единицы логистической регрессии, и каждая единица логистической регрессии имеет соответствующий параметр — вектор ?. Сложив эти четыре вектора вместе, вы получите матрицу 4×3.
Приведенная выше формула представляет собой векторизованный расчет выборки, затемМноговыборочные векторизованные вычисленияНа самом деле количество столбцов складывается на основе приведенной выше формулы, и каждый столбец эквивалентен выборке.
3.2 Произвольная инициализация параметров модели
В нейронных сетях часто необходимо случайным образом инициализировать параметры модели. Ниже мы объясним, почему.
Предположим, что выходной слой сохраняет только одну единицу вывода.o1 (удалитьo2 иo3 и стрелки, указывающие на них), а скрытые слои используют ту же функцию активации. Если параметры каждого скрытого модуля инициализированы равными значениями, каждый скрытый модуль будет вычислять одно и то же значение из одного и того же входа и передавать его выходному слою во время прямого распространения. При обратном распространении значения градиента параметров каждой скрытой единицы равны. Следовательно, эти параметры остаются одинаковыми после итераций с использованием алгоритма оптимизации на основе градиента. То же самое касается последующих итераций.
В этом случае, сколько бы ни было скрытых юнитов, в скрытом слое по существу только 1 скрытый юнит. Поэтому, как и в предыдущих экспериментах, мы обычно случайным образом инициализируем параметры модели нейронной сети, особенно параметры веса.
Существует два метода инициализации:
-
Метод случайной инициализации с использованием нормального распределения.
-
Метод инициализации Xavier: если предположить, что количество входов полносвязного слоя равно a, а количество выходов равно b, случайная инициализация Xavier сделает каждый элемент параметра веса в слое случайным образом выбранным из равномерного распределения:
После инициализацииНа дисперсию выходных данных каждого слоя не влияет количество входных данных слоя, а на дисперсию градиента каждого слоя не влияет количество выходных данных слоя.
3.3 Функция активации
3.3.1 Что такое функции активации
После применения линейного преобразования к скрытому слою добавляется нелинейное преобразование (например, сигмовидное), которое называетсяПередаточная функция или функция активации. В приведенных выше примерах используется функция активации Sigmoid логистической регрессии, Если вы все еще не понимаете, где находится функция активации, вы можете посмотреть на рисунок ниже.
-
сигмовидная функция
-
функция тангенса (гиперболический тангенс)
По факту,tanhфункцияsigmoidРезультат после панорамирования и уменьшения. После деформации он проходит через точку (0,0) и имеет диапазон от +1 до -1. Но есть одно исключение: в задаче бинарной классификации для выходного слоя, поскольку значение ? равно 0 или 1, мы хотим, чтобы значение ?^ было между 0 и 1, а не от -1 до +1. Так что нужно использоватьsigmoidфункция активации.
sigmoidфункция иtanhОбщим недостатком обеих функций является то, что когда ? особенно велико или мало, градиент производной или наклон функции станет чрезвычайно малым и в конечном итоге приблизится к 0, что приведет к снижению скорости градиентного спуска.
-
Функция ReLu (пересмотренная линейная единица)
Пока ? является положительным значением, производная всегда равна 1, а когда ? является отрицательным значением, производная всегда равна 0.
Вот несколько эмпирических правил для выбора функции активации: Если результат равен 0, 1 (проблема бинарной классификации),sigmoidфункция, то выбираются все остальные единицыReluфункция.
-
функция активации софтмакс
- Рассчитано до нелинейного преобразования:
- После нелинейного преобразования временные переменные:
-
Нормализованный
-
Представляет значение вероятности первых нескольких категорий, этиЗначение вероятности составляет 1
Раньше наши функции активации принимали одну строку числового ввода, напримерSigmoidиReLuФункция активации принимает действительное число в качестве входных данных и выводит действительное число.SoftmaxЧто особенного в функциях активации, так это то, что, поскольку вам нужно нормализовать все возможные выходные данные, вам нужно ввести вектор и, наконец, вывести вектор.
hardmaxФункция будет наблюдать за элементами ?, а затем поместить 1 в позицию самого большого элемента в ? и поставить 0 в другие позиции,SoftmaxОтображение из ? в эти вероятности более скромное.
Softmaxвозвращение будетlogisticРегрессия обобщается более чем на две категории.
- Рассчитано до нелинейного преобразования:
3.3.2 Преимущества и недостатки
- Когда интервал ? сильно варьируется, производная функции активации или наклон функции активации будет намного больше 0. В программной реализации этоif-elseприговор, иsigmoidФункция должна выполнять арифметику с плавающей запятой, на практике используйтеReLuНейронные сети с функцией активации обычно лучше, чем использованиеsigmoidилиtanhФункция активации обучается быстрее.
- sigmoidиtanhГрадиент производной функции в областях положительного и отрицательного насыщения будет близок к 0, что вызовет дисперсию градиента, иReluиLeaky ReLuЧасть функции больше 0 постоянна, и явление градиентной дисперсии отсутствует. (Следует также отметить, что,ReluПри входе в отрицательную половину градиент равен 0, и в это время нейроны не будут обучаться, что приводит к так называемой разреженности, в то время какLeaky ReLuНе будет такой проблемы) ? вReLuПоловина градиентов равна 0, однако скрытых слоев достаточно, чтобы значение z было больше 0, поэтому процесс обучения может быть быстрым для большинства обучающих данных.
3.3.3 Зачем использовать функцию активации
Если вы используете линейную функцию активации или не используете ее, то независимо от того, сколько слоев ваша нейронная сеть делала, это просто вычисление линейной функции, поэтому лучше просто удалить все скрытые слои. В нашем кратком случае получается, что если вы используете линейную функцию активации в скрытом слое, вы используете линейную функцию активации в выходном слое.sigmoidфункция, то сложность этой модели и без всяких скрытых слоев. стандартLogisticРегресс такой же.
Линейные скрытые слои здесь бесполезны, потому что комбинация этих двух линейных функций сама по себе является линейной функцией, поэтому, если вы не введете нелинейность, вы не сможете вычислить более интересные функции, даже если ваша сеть имеет больше слоев.
3.3.4 Почему ReLu лучше, чем tanh и сигмовидная функция в искусственной нейронной сети?
- При использовании таких функций, как сигмоид, при вычислении функции активации (экспоненциальная операция) объем вычислений велик. При обратном распространении для нахождения градиента ошибки вывод включает деление и экспоненциальную операцию, а объем вычислений относительно велик. Однако при использовании Функция активации Relu, сумма расчета всего процесса относительно велика, сэкономьте много.
- Для глубоких сетей при обратном распространении сигмоиды градиент легко исчезает (когда сигмоида близка к области насыщения, преобразование происходит слишком медленно и производная стремится к 0, что приведет к потере информации). называется насыщенным, так что обучение глубокой сети не может быть завершено. Однако у ReLU не будет тенденции к насыщению, и особо малых градиентов не будет.
- Relu делает на выходе некоторых нейронов 0, что вызывает разреженность сети, и снижает взаимозависимость параметров, что облегчает возникновение проблем переобучения (и некоторые люди объясняют это биологическим балабалом). Конечно, есть также некоторые улучшения в relu, такие как prelu, random relu и т. д. Будут некоторые улучшения в скорости обучения или точности на разных наборах данных.Подробности вы можете найти в соответствующих документах.
3.3.5 Каковы свойства функций активации?
- Нелинейный: когда функция активации является линейной, двухслойная нейронная сеть может аппроксимировать почти все функции. Но если функция активации является функцией активации идентичности, то есть
, не удовлетворяет этому свойству, и если в MLP используется функция активации идентичности, то вся сеть фактически эквивалентна однослойной нейронной сети;
- Дифференцируемость: это свойство проявляется, когда метод оптимизации основан на градиентах;
- Монотонность: когда функция активации монотонна, можно гарантировать, что однослойная сеть будет выпуклой функцией;
-
: Когда функция активации удовлетворяет этому свойству, если инициализация параметров представляет собой случайное небольшое значение, обучение нейронной сети будет очень эффективным, если это свойство не выполняется, то начальное значение необходимо задать подробно;
- Диапазон выходных значений: когда выходное значение функции активации ограничено, метод оптимизации на основе градиента будет более стабильным, поскольку на представление признаков сильнее влияют ограниченные веса; когда выход функции активации бесконечен , обучение модели будет более эффективным, но в этом случае обычно требуется меньшая скорость обучения.
3.4 Прямое распространение
Прямое распространение относится к вычислению и сохранению промежуточных переменных (включая выходные данные) модели в последовательности от входного слоя к выходному слою нейронной сети.
Вычислительные шаги для логистической регрессии: когда мы говорили о логистической регрессии, у нас был шаг прямого распространения, на котором мы вычисляли ?, затем ?, затем функцию потерь ?. Подобно прямому распространению, вычисление,
, а затем вычислить
,
, и, наконец, получитьloss function.
3.5 Обратное распространение (BP)
Обратное распространение относится к методу вычисления градиентов параметров нейронной сети. В общем, согласно цепному правилу в исчислении, обратное распространение вычисляет и сохраняет градиенты промежуточных переменных и параметров целевой функции, относящихся к каждому слою нейронной сети по порядку от выходного слоя к входному слою.
Путем прямого распространения через все скрытые слои к выходному слою будет получен выходной результат, а затем в соответствии с этим
принестиloss funcation, алгоритм SGD используется для решения оптимизации, в котором каждый градиентный спуск будет использовать BP для обновления значений параметров в каждом сетевом слое, что и является значением ошибки возврата BP.
- Прямое распространение ищет потери, а BP возвращает ошибку.
- Веса каждого слоя изменяются в соответствии с сигналом ошибки. Дифференцируйте каждый w, а затем обновите каждый w.
-
Функция потери зависимости цепи:
3.6 Стохастический градиентный спуск (SGD)
3.6.1 мини-пакетный градиентный спуск
Вы можете разделить обучающий набор на более мелкие обучающие подмножества, называемыеmini-batch, предполагая, что в каждом подмножестве всего 1000 образцов, затем уберите ? (1) до ? (1000) и назовите его первым подобучающим набором, также называемымmini-batch, затем вы берете следующие 1000 образцов, от ? (1001) до ? (2000), затем еще 1000 образцов и так далее.
бег на тренировочном набореmini-batchГрадиентный спуск, вы работаете для t=1...5000, так как у нас есть 5000 групп по 1000 образцов в каждой, вforПо сути, в цикле вам нужно выполнить одношаговый градиентный спуск на ? {?} и ? {?}.
- batch_size=1, то есть SGD.
- batch_size=n, то есть мини-пакет
- batch_size=m, что является пакетом
Где 1 Преимущества и недостатки: Во-первых, если тренировочный набор небольшой, используйте напрямуюbatchГрадиентный спуск, здесь менее 2000 образцов. Общееmini-batchРазмеры варьируются от 64 до 512 с учетом того, как настроена и используется память вашего компьютера, еслиmini-batchРазмер равен 2 в степени ?, и код будет работать быстрее. Сквозное обучение (end-to-end) — это идея решения проблем, которая соответствует многоступенчатому решению проблемы, то есть разбиению проблемы на несколько шагов для ее пошагового решения, а сквозное — end состоит из Данные на входе приводят непосредственно к результату на выходе. То есть без предварительной обработки и извлечения признаков перебрасывать исходные данные прямо в конечный результат. Извлечение признаков включено в нейронную сеть, поэтому нейронная сеть является сквозной сетью. преимущество: Сокращая ручную предварительную обработку и последующую обработку, модель может максимально перейти от исходного ввода к окончательному выводу, предоставляя модели больше места для автоматической настройки в соответствии с данными и повышая общую подгонку модели. недостаток Существующие платформы с открытым исходным кодом для глубокого обучения в основном включают Caffe, PyTorch, MXNet, CNTK, Theano, TensorFlow, Keras, fastai и т. д. В настоящее время с точки зрения найма большинство компаний используют TensorFlow.В конце концов, сообщество TensorFlow, производительность и развертывание очень сильны, поэтому код примера, написанный позже, полностью выполнен с использованием TensorFlow. В контексте классификации изображений вывод классификатора softmax может быть дискретным значением для класса изображения.В отличие от линейной регрессии,Единица вывода softmax изменена с одной на несколько. Как и линейная регрессия, регрессия softmax линейно накладывает входные функции и веса. Основное отличие от линейной регрессии заключается в том, что количество выходных значений регрессии **softmax равно количеству категорий в метке. **На рисунке ниже показана регрессия softmax с нейронной сетью, а также с однослойной нейронной сетью, поскольку каждый выход Простой способ - вывести значение Однако использование вывода выходного слоя напрямую имеет две проблемы: Операция softmax решает две вышеупомянутые проблемы. Он преобразует выходное значение в распределение вероятностей с положительными значениями и суммой до 1 по следующей формуле: Мы уже знаем, что операция softmax преобразует выходные данные в правильное распределение предсказания класса. На самом деле, наземные метки также могут быть выражены в терминах распределения классов: Для выборки i построим вектор Если вы хотите правильно предсказать результат классификации,На самом деле нам не нужно, чтобы предсказанные вероятности были в точности равны вероятностям меток., а квадрат потерь слишком строгий. Один из способов решить эту проблему — использовать функцию измерения, более подходящую для измерения разницы между двумя распределениями вероятностей. в,Перекрестная энтропия является широко используемой мерой: из них подписка Пример TensorFlow: линейная регрессия 【Машинное обучение легко понять серия статей】 автор:@mantchs Гитхаб:GitHub.com/NLP-love/ml… Приглашаются все желающие присоединиться к обсуждению! Улучшайте этот проект вместе! Номер группы: [541954936]
3.6.2 Как настройка Batch_Size влияет на эффект обучения?
4. Почему нейронную сеть называют сквозной сетью?
5. Сравнение фреймворков глубокого обучения
Платформа
преимущество
недостаток
TensorFlow
1. Функции очень полные, и сеть, которую можно построить, более многочисленна.
2. Поддержка нескольких языков программирования.
3. Иметь мощный вычислительный кластер.
4. Поддержка Google
5. Сообщество очень активно.
6. Поддержка нескольких графических процессоров.
7. TensorBoard поддерживает визуализацию графов.1. Трудно начать программировать.
2. График вычислений — чистый Python, поэтому он медленнее
3. Построение графа является статическим, что означает, что граф должен быть «скомпилирован» перед запуском.
Keras
1. Keras — это расширенный API интеграции TensorFlow.
2. Keras — лаконичный API. Может быстро помочь вам создать приложение.
3. Код стал более читабельным и лаконичным.
4. Keras находится в высокоинтегрированной среде.
5. Сообщество активно.1. Конфигурация среды фреймворка Keras сложнее, чем другие базовые фреймворки.
2. Хотя создавать модели проще, это может быть не так хорошо, как TensorFlow перед лицом сложных сетевых структур.
3. Производительность относительно низкая.
Pytorch
1. Это может изменить архитектуру в процессе.
2. Процесс обучения нейронной сети прост и понятен.
3. Операторы цикла for могут быть написаны с использованием стандартного синтаксиса Python.
4. Множество предварительно обученных моделей1. Этого недостаточно для TensorFlow, но это компенсируется в будущем.
2. PyTorch не очень хорош для мобильного развертывания.
MXNet
1. Поддержка нескольких языков.
2. Полная документация.
3. Поддержка нескольких графических процессоров.
4. Четкий и поддерживаемый код.
5. Выбирайте между императивным и символическим стилями программирования.1. Широко не используется.
2. Сообщество недостаточно активно.
3. Труднее учиться.6. классификатор softmax
6.1 Что такое софтмакс
Расчет зависит от всех входных данных
, выходной слой регрессии softmax также является полносвязным слоем.
6.2 Расчет softmax
Поскольку прогнозируемая категория является достоверностью i, а категория, соответствующая выходу с наибольшим значением, используется в качестве прогнозируемого выхода. Например, если
0,1;10;0,1 соответственно, так как
самый большой, то прогнозируемый класс равен 2.
6.3 Функция кросс-энтропийных потерь
, делая его первым
элементы равны 1, а остальные равны 0. Таким образом, наша цель обучения может быть установлена так, чтобы прогнозируемое распределение вероятностей
как можно ближе к истинной вероятности метки
.
вектор
Элементы, которые не равны 0 или 1. Это,Кросс-энтропия заботится только о предсказанной вероятности правильного класса, поскольку до тех пор, пока его значение достаточно велико, результат классификации гарантированно будет правильным.То есть минимизация функции кросс-энтропийных потерь эквивалентна максимизации вероятности совместного предсказания всех классов меток в обучающем наборе данных.
7. Реализация нейронной сети