Глубокое обучение для знакомства с интеллектом

искусственный интеллект интервью алгоритм
Глубокое обучение для знакомства с интеллектом

Текст / Команда новичков - Лэй Мао

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

Стоит отметить, что искусственный интеллект стал национальной стратегией многих стран, и его представительными странами являются США, Китай и Россия. Моя страна последовательно выпустила «Национальный стратегический план исследований и разработок в области искусственного интеллекта» и «Искусственный интеллект и Национальная безопасность» Важность ряда политических планов, таких как «План развития искусственного интеллекта нового поколения», очевидна. ​

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


Три волны искусственного интеллекта

Следует отметить, что ИИ развивается десятилетиями, и его этапы условно делятся на 3 волны: ​

Первая волна (неинтеллектуальные разговорные роботы, 50-70)

В октябре 1950 года Тьюринг предложил концепцию искусственного интеллекта (ИИ). В 1966 году родился психотерапевтический робот ELIZA. (ограниченный тезаурус) ​

Вторая волна (распознавание речи, 1980-2000 гг.)

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

Третья волна (глубокое обучение + большие данные, после 21 века)

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

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

Здесь мы упомянем, что рыночная стоимость Nvidia, основанной китайцем Хуангом Ренсюнем, выросла в 20 раз за последние пять лет, а сама Nvidia впервые превзошла по рыночной стоимости Intel после закрытия фондового рынка США. 8 июля 2020 г., став производителем чипов с самой высокой рыночной стоимостью в США. Именно из-за быстрого развития графических процессоров искусственный интеллект, который десятилетиями страдал от вычислительной мощности, наконец-то привел к большому взрыву.

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

Узнайте о глубоком обучении ~

Давайте сначала обсудим основные идеи машинного обучения:

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

Подводя итог, идея состоит в том, чтобы моделировать, настраивать параметры, решать и оценивать.

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

  • Сбор данных
  • подготовка данных
  • Выберите модель (какую?)
  • обучение (что?)
  • оценивать
  • Прогноз (начало работы)

Что касается самого алгоритма, поскольку в этой статье основное внимание уделяется глубокому обучению, алгоритм будет опубликован только в списке:

Линейная регрессия контролируемое обучение случайный лес контролируемое обучение
логистическая регрессия контролируемое обучение AdaBoost контролируемое обучение
Линейный дискриминантный анализ контролируемое обучение Модель гауссовой смеси неконтролируемое обучение
Древо решений контролируемое обучение Ограниченные машины Больцмана неконтролируемое обучение
Наивный Байес контролируемое обучение Кластер K-средних неконтролируемое обучение
К соседний контролируемое обучение Алгоритм максимального ожидания неконтролируемое обучение
обучение векторному квантованию контролируемое обучение случайный лес контролируемое обучение
Опорные векторные машины контролируемое обучение

Контролируемое и неконтролируемое обучение

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

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

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

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

Каковы уникальные характеристики глубокого обучения?

Итак, вопрос в том, каковы уникальные характеристики глубокого обучения? Чем оно отличается от другого обучения с учителем?Ответ — нейронные сети!

**Глубокое обучение в основном включает три типа методов: **

  • на основеОперация сверткисистема нейронной сети
  • на основемногослойный нейроннейросеть с автоэнкодером.
  • отМногослойная нейронная сеть автоэнкодераспособ предварительной подготовки, а затем в сочетании синформация аутентификацииДля дальнейшей оптимизации весов нейронной сетиСеть глубокого убеждения.

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


Какие? не могу читать? Не паникуйте, мы можем грубо разделить это, сначала посмотрите на изображение общей нейронной сети,


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

говорить о принципе

Давайте изучим принципы работы нейронных сетей на примере двухслойного скрытого слоя! Во-первых, давайте посмотрим на набор картинок 28*28:




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

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

Тогда нейросеть аналогична: изображение становится для машины бинарным пикселем, здесь для удобства оно представлено значением от 0 до 1 (пиксель реального цвета включает RGB).


Таким образом, мы вводим в машину фактически 28 * 28 = 784 входных значения.


Путем различных вычислений для получения определенного результата результат, полученный на приведенном выше рисунке, можно определить как 9. Это оригинальный многослойный персептрон (Multilayer Perceptron), который представляет собой скрытый слой, о котором мы говорили ранее. См. строку выше, они называются весами W, каждый узел называется нейроном, а то, что он содержит, называется значением активации. ​

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


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


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

Так вот вопрос? Так ли работают настоящие нейронные сети? Ответ: Вы можете это сделать, если ваши веса установлены правильно. Однако в реальной работе настройка модели намного сложнее, и это просто для удобства понимания. ​

говорить о математических формулах

Так вот еще вопрос? Как добиться этого эффекта? Ответ: Вес, который представляет собой линия нейронной сети, наше значение активации рассчитывается по значению предыдущего слоя и весу:


В самое примитивное время наша формула расчета такова:a(L) = W * a(L-1). Это:


Итак, если мы хотим идентифицировать горизонтальную линию, мы можем установить вес соответствующего пикселя горизонтальной линии равным 1, а остальные — 0, и это нормально. Мы называем указанное выше значение какВзвешенное значение S. Я буду продолжать называть это так. ​

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

Например, нам нужно контролировать значение в пределах от 0 до 1. В этом случае мы можем использоватьсигмовидная функция активации, объявите, что мы учились в начальной школе (в какой начальной школе вы учитесь ?), как показано ниже:



Все выучили эту формулу, и ее значение остается между 0 и 1. Хорошо, попросимзначение активацииВ настоящее время формула включает параметры, которые имеют веса:


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

, L представляет собой количество слоев глубины, а k представляет собой порядковый номер значения активации, полученного в этом слое: сначала мы вычисляем взвешенное значение S:

Таким образом, формула, которую мы получаем, становится:


Иногда для некоторого рассмотрения мы хотим загораться при S>10 (можно понять, что это ярче, чем 0,5), тогда нам нужно добавить значение смещения, и эта формула становится:


b — базис значения смещения. Мы можем вызвать внутреннюю Z:


Затем, наконец, мы записываем как:


--Формула 1

Ну, на данный момент наше понимание нейронных сетей полное. Здесь нам нужно подумать над вопросом, то есть сколько всего нужно значений смещения и весовых параметров? ​

Соединения линий соединены между собой попарно, так что всего 78416 + 1616 + 16Значение смещения 10 требует одного для расчета каждого следующего слоя, поэтому сумма 16+16+10 составляет: 78416 + 1616 + 1610 + 16+16+10 = 13002. Простая нейронная сеть требует очень много параметров. Вы удивлены:


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

Ну вот мы собственно и поняли принцип прямого распространения нейросетей. ​

Но этого все равно недостаточно, выше мы сказали, что хорошая сеть может давать хорошие результаты, поэтому вопрос в том, как нам получить хорошую нейронную сеть? ​

Как получить хорошую нейросеть?

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

Значит, ты должен хотеть ударить меня, верно?


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

  • Результаты неточны и неточны (как количественно оценить).
  • Если это не точно, как и что мы настраиваем.

Во-первых, верны ли результаты? Это относительно просто, это вычислитьпотеря выходного слоя:


Формула 2 a(n) представляет вычисленное значение, y(n) представляет собой ожидаемое значение, и здесь рассчитывается значение потерь последнего слоя. Чем выше значение убытка, тем дальше от ожидания.

Итак, когда стоимость относительно велика, как мы должны ее скорректировать? Очевидно, мы должны настроить a(n) так, чтобы оно было близко к значению y(n). Помните формулу для вычисления a(n)? Мы обнаружили, что можно настроить только значение активации a, вес w и значение смещения b, но значение активации также является a, w и b предыдущего слоя, верно? С этих точек зрения мы можем настроить только w, b и a первого слоя, но первый слой является входным значением, поэтому игнорируйте его.Дело в том, что нам нужно настроить все параметры, вес w и смещение b

Ну, цель есть, не так ли? Вопрос теперь в том, как настроить эти параметры? ответградиентный спуск

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


Здесь f'(x) — градиент функции f в точке x. Градиент одномерной функции представляет собой скаляр, также известный как производная, как показано на следующем рисунке:


Затем найдите константу η>0 такую, что ∣ηf′(x)∣ достаточно мало, тогда мы можем заменить ϵ на −ηf′(x) и получить


Если производная f'(x)≠0, то


,так


Это означает, что нам нужно взять производную от f(x) и установить достаточно малое положительное число η, чтобы уменьшить f(x), а x-ηf(x) является целевым значением. Вот как работает одномерная оценка: ​

Что ж, я считаю, что в это время многие люди внезапно стали просветленными. Наша цель — уменьшить потери, а потери C получаются за счет всех весов и смещений, а также входных данных в послойных отношениях. Таким образом, мы должны найти ηf'(x) для всех весов и смещений, чтобы получить то же самое. Получить все векторы для корректировки, которые можно вызвать


Поскольку наш расчет выполняется обратно слой за слоем, он называется обратным распространением. ​

Сначала вычислите величину корректировки выходного слоя, установите последним слоем значение L, а количество выходных слоев — n.


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


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


Векторы корректировки для всех w и b. Помните, что я говорил ранее о своего рода саморегуляции алгоритма градиентного спуска, который постоянно работает в обратном направлении? По сути, суть так называемого обучения модели заключается в непрерывной корректировке ее параметров посредством обратного распространения для получения подходящей нелинейной комбинации. Пусть все образцы приобретут способность потерь в разумных пределах благодаря этой комбинации. ​

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

Принцип работы нейронной сети был показан здесь.Далее давайте посмотрим, что такое сверточная нейронная сеть~ ​

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


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


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

Параметры сверточного слоя включают размер ядра, шаг и заполнение. Давайте представим их отдельно. ​

Почувствуйте нижнее ядро ​​свертки динамической картинкой:


Ядро свертки здесь особенно очевидно, так как размер 3*3 равен 1, другими словами, все числа складываются.

1 1 1
1 1 1
1 1 1

Ранее можно было обнаружить, что в результате свертки входного изображения и ядра свертки теряются некоторые значения, а края входного изображения «обрезаются» (по краям обнаруживаются только некоторые пиксели, а информации много). на границе картинка теряется. ). Это связано с тем, что пиксели на краю никогда не находятся в центре ядра свертки, а ядро ​​свертки не может выходить за пределы области края. Этот результат для нас неприемлем, и иногда мы также надеемся, что размер ввода и вывода должен быть одинаковым. Чтобы решить эту проблему, исходная матрица может быть ограничена перед операцией свертки.Прокладка, то есть заполнить некоторые значения на границе матрицы, чтобы увеличить размер матрицы, обычно заполненной 0.


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


​ Что свертка может сделать с изображением и почему она может извлекать признаки? Приходите, давайте посмотрим на набор картинок:


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


оператор Лапласа ​

Различные размеры ядер свертки имеют разные эффекты, как показано ниже:



Очевидно, что картинка ниже намного деликатнее, ну, зная роль ядра свертки, ​

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


С точки зрения человеческого понимания, это значит убрать самые очевидные черты. Так зачем вам это нужно? Тогда нам нужно вернуться к истории. . Грубо говоря, вычислительная мощность первых машин была недостаточной, и этот уровень выборки может значительно сократить объем вычислений. Другая причина заключается в предотвращении переобучения. ​

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

Ну и подытожим: 1. Входной слой — это значение пикселя. 2. Сверточный слой предназначен для извлечения признаков. 3. Слой пула выполняет выборку для получения очевидных признаков. 4. Полноканальный слой выполняет нелинейную комбинацию (классификацию) признаков для получения выходных данных. 5. Выход – результат. ​

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

Но это еще не конец. Здесь еще нужно подчеркнуть некоторые важные понятия: 1. Тонкая настройка модели 2. Стандартизация изображения. ​

Первый взгляд на тонкую настройку~ Пример, чтобы сказать вам, что такое тонкая настройка?.Предположим, нам нужно обучить линейную модель y = x; Если вес, указанный в начале, равен 0,1, может потребоваться много шагов обучения, чтобы получить эту аналогичную модель. ​

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

Преимущества тонкой настройки заключаются не более чем в двух моментах: 1. Не нужно начинать с нуля, экономя ресурсы. 2. Верифицированная модель имеет высокую точность и соответствующие параметры. (например, imagenet, resnet) ​

Говоря об imagenet, это очень мощный проект по распознаванию компьютерного зрения, можно сказать, что это самая большая библиотека для распознавания изображений в мире. Первоначальная цель его создания - смоделировать систему распознавания человека.Весь набор данных содержит около 15 миллионов изображений и 22 000 категорий, и все они аннотируются и контролируются вручную. Качество просто ужасное, но я лично не думаю, что он включает D2C, иначе мы действительно могли бы использовать его напрямую.

Если вы заинтересованы, вы можете нажать на ссылку ниже, чтобы посмотреть.Woohoo.tensorflow.org/is/models?Также… image-net.org/

Нормализация изображения: Цитировать чужую картинкуDevelopers.Google.com/machine - аааа...





Front-end-F-x-Team Amoy открывает WeiboЛа! (Отображается после входа в Weibo)
Помимо статей, вас ждет разблокировка еще командного контента ?