Глубокие нейронные сети
Глубокая нейронная сеть (DNN) - это ИНС с несколькими скрытыми слоями между входным и выходным слоями. Подобно мелким ИНС, DNN могут моделировать сложные нелинейные отношения.
Основная цель нейронной сети - получать набор входных данных, выполнять с ними все более сложные вычисления и выдавать выходные данные для решения реальных проблем, таких как классификация. Мы ограничиваемся нейронными сетями прямого распространения.
У нас есть вход, выход и поток последовательных данных в глубокой сети.
Нейронные сети широко используются в задачах контролируемого обучения и обучения с подкреплением. Эти сети основаны на наборе слоев, связанных друг с другом.
В глубоком обучении количество скрытых слоев, в основном нелинейных, может быть большим; говорят около 1000 слоев.
Модели DL дают гораздо лучшие результаты, чем обычные сети ML.
В основном мы используем метод градиентного спуска для оптимизации сети и минимизации функции потерь.
Мы можем использовать Imagenet, хранилище миллионов цифровых изображений для классификации набора данных по таким категориям, как кошки и собаки. Сети DL все чаще используются для динамических изображений помимо статических, а также для анализа временных рядов и текста.
Обучение наборов данных является важной частью моделей глубокого обучения. Кроме того, Backpropagation является основным алгоритмом обучения моделей DL.
DL занимается обучением больших нейронных сетей со сложными преобразованиями ввода-вывода.
Одним из примеров DL является сопоставление фотографии с именем человека (лиц) на фотографии, как это делается в социальных сетях, и описание изображения с помощью фразы - еще одно недавнее применение DL.
Нейронные сети - это функции, которые имеют входные данные, такие как x1, x2, x3…, которые преобразуются в выходы, такие как z1, z2, z3 и так далее, двумя (мелкие сети) или несколькими промежуточными операциями, также называемыми слоями (глубокие сети).
Веса и смещения меняются от слоя к слою. «w» и «v» - веса или синапсы слоев нейронных сетей.
Наилучший вариант использования глубокого обучения - это задача контролируемого обучения. Здесь мы имеем большой набор входных данных с желаемым набором выходных данных.
Здесь мы применяем алгоритм обратного распространения, чтобы получить правильный выходной прогноз.
Самый базовый набор данных глубокого обучения - это MNIST, набор рукописных цифр.
Мы можем глубоко обучить сверточную нейронную сеть с помощью Keras, чтобы классифицировать изображения рукописных цифр из этого набора данных.
Срабатывание или активация классификатора нейронной сети дает оценку. Например, чтобы классифицировать пациентов как больных и здоровых, мы учитываем такие параметры, как рост, вес и температура тела, артериальное давление и т. Д.
Высокая оценка означает, что пациент болен, а низкая оценка означает, что он здоров.
Каждый узел в выходном и скрытом слоях имеет свои собственные классификаторы. Входной слой принимает входные данные и передает свои оценки следующему скрытому слою для дальнейшей активации, и это продолжается до тех пор, пока не будет достигнут выход.
Этот прогресс от входа к выходу слева направо в прямом направлении называется forward propagation.
Путь присвоения кредита (CAP) в нейронной сети представляет собой серию преобразований, начиная от входа к выходу. CAP детализируют вероятные причинно-следственные связи между входом и выходом.
Глубина CAP для данной нейронной сети с прямой связью или глубина CAP - это количество скрытых слоев плюс один, когда включен выходной слой. Для рекуррентных нейронных сетей, где сигнал может распространяться через слой несколько раз, глубина CAP может быть потенциально безграничной.
Глубокие сети и мелкие сети
Не существует четкого порога глубины, который отделяет поверхностное обучение от глубокого обучения; но большинство согласны с тем, что для глубокого обучения, имеющего несколько нелинейных уровней, CAP должен быть больше двух.
Базовый узел в нейронной сети - это восприятие, имитирующее нейрон в биологической нейронной сети. Затем у нас есть многослойное восприятие или MLP. Каждый набор входных данных изменяется набором весов и смещений; каждое ребро имеет уникальный вес, и каждый узел имеет уникальное смещение.
Предсказание accuracy нейронной сети зависит от ее weights and biases.
Процесс повышения точности нейронной сети называется training. Выход из сети опоры вперед по сравнению с этим значением, которое, как известно, является правильным.
В cost function or the loss function это разница между сгенерированным выходом и фактическим выходом.
Смысл обучения состоит в том, чтобы сделать стоимость обучения как можно меньшей для миллионов обучающих примеров. Для этого сеть настраивает веса и смещения до тех пор, пока прогноз не будет соответствовать правильному результату.
После хорошего обучения нейронная сеть может каждый раз делать точные прогнозы.
Когда шаблон становится сложным и вы хотите, чтобы ваш компьютер распознал их, вам нужно обратиться к нейронным сетям. В таких сложных сценариях шаблонов нейронная сеть превосходит все другие конкурирующие алгоритмы.
Теперь есть графические процессоры, которые могут обучать их быстрее, чем когда-либо прежде. Глубокие нейронные сети уже революционизируют область ИИ
Компьютеры показали себя хорошими в выполнении повторяющихся вычислений и следовании подробным инструкциям, но не так хороши в распознавании сложных закономерностей.
Если есть проблема распознавания простых шаблонов, машина опорных векторов (SVM) или классификатор логистической регрессии могут хорошо справиться с этой задачей, но по мере того, как сложность шаблона увеличивается, нет другого выхода, кроме как использовать глубокие нейронные сети.
Следовательно, для сложных шаблонов, таких как человеческое лицо, мелкие нейронные сети терпят неудачу и не имеют альтернативы, кроме как использовать глубокие нейронные сети с большим количеством слоев. Глубокие сети могут выполнять свою работу, разбивая сложные шаблоны на более простые. Например, человеческое лицо; Глубокая сеть будет использовать края для обнаружения таких частей, как губы, нос, глаза, уши и т. д., а затем повторно объединить их вместе, чтобы сформировать человеческое лицо
Точность правильного предсказания стала настолько точной, что недавно на конкурсе Google Pattern Recognition Challenge глубокая сеть обыграла человека.
Идея сети слоистых перцептронов существует уже некоторое время; в этой области глубокие сети имитируют человеческий мозг. Но есть один недостаток в том, что на их обучение уходит много времени из-за аппаратных ограничений.
Однако недавние высокопроизводительные графические процессоры смогли обучить такие глубокие сети менее чем за неделю; в то время как быстрому процессору могли потребоваться недели или, возможно, месяцы, чтобы сделать то же самое.
Выбор глубокой сети
Как выбрать глубокую сеть? Мы должны решить, создаем ли мы классификатор или пытаемся найти закономерности в данных, и собираемся ли мы использовать обучение без учителя. Для извлечения паттернов из набора немаркированных данных мы используем машину Больцмана с ограничениями или автоматический кодировщик.
При выборе глубокой сети учтите следующие моменты:
Для обработки текста, анализа тональности, синтаксического анализа и распознавания сущностей имен мы используем рекуррентную сеть или рекурсивную нейронную тензорную сеть или RNTN;
Для любой языковой модели, которая работает на уровне персонажа, мы используем повторяющуюся сеть.
Для распознавания изображений мы используем сеть глубокого убеждения DBN или сверточную сеть.
Для распознавания объектов мы используем RNTN или сверточную сеть.
Для распознавания речи мы используем рекуррентную сеть.
В общем, сети глубоких убеждений и многослойные персептроны с выпрямленными линейными единицами или RELU являются хорошим выбором для классификации.
Для анализа временных рядов всегда рекомендуется использовать повторяющуюся сеть.
Нейронные сети существуют уже более 50 лет; но только сейчас они приобрели известность. Причина в том, что их тяжело тренировать; Когда мы пытаемся обучить их методом обратного распространения, мы сталкиваемся с проблемой, называемой исчезающими или взрывными градиентами. Когда это происходит, обучение занимает больше времени, а точность отходит на второй план. При обучении набора данных мы постоянно вычисляем функцию стоимости, которая представляет собой разницу между прогнозируемым выходом и фактическим выходом из набора помеченных обучающих данных. Функция стоимости затем минимизируется путем корректировки значений весов и смещений до самого низкого значения. получается. В процессе обучения используется градиент, который представляет собой скорость изменения стоимости в зависимости от изменения значений веса или смещения.
Ограниченные сети Больцмана или автоэнкодеры - RBN
В 2006 году был сделан прорыв в решении проблемы исчезающих градиентов. Джефф Хинтон разработал новую стратегию, которая привела к развитиюRestricted Boltzman Machine - RBM, неглубокая двухслойная сетка.
Первый слой - это visible слой, а второй слой - hiddenслой. Каждый узел видимого слоя связан с каждым узлом скрытого слоя. Сеть известна как ограниченная, поскольку никаким двум уровням на одном уровне не разрешено использовать соединение.
Автоэнкодеры - это сети, которые кодируют входные данные как векторы. Они создают скрытое или сжатое представление необработанных данных. Векторы полезны для уменьшения размерности; вектор сжимает необработанные данные в меньшее количество основных измерений. Автоэнкодеры работают в паре с декодерами, что позволяет реконструировать входные данные на основе их скрытого представления.
RBM - это математический эквивалент двустороннего переводчика. Прямой проход принимает входные данные и переводит их в набор чисел, который кодирует входные данные. Тем временем обратный проход берет этот набор чисел и переводит их обратно в восстановленные входные данные. Хорошо натренированная сеть выполняет подпорку спиной с высокой степенью точности.
На обоих этапах решающую роль играют веса и смещения; они помогают RBM в расшифровке взаимосвязей между входами и в решении, какие входы важны для выявления закономерностей. Посредством прямого и обратного проходов RBM обучается воссоздавать входные данные с разными весами и смещениями до тех пор, пока вход и повторное построение не станут как можно более близкими. Интересным аспектом RBM является то, что данные не нужно маркировать. Это оказывается очень важным для наборов данных реального мира, таких как фотографии, видео, голоса и данные датчиков, которые, как правило, не имеют маркировки. Вместо того, чтобы вручную маркировать данные людьми, RBM автоматически сортирует данные; правильно регулируя веса и смещения, RBM может извлекать важные особенности и восстанавливать входные данные. RBM является частью семейства нейронных сетей экстрактора признаков, которые предназначены для распознавания внутренних закономерностей в данных. Их также называют автокодировщиками, потому что они должны кодировать свою собственную структуру.
Сети глубокого убеждения - DBN
Сети глубоких убеждений (DBN) формируются путем комбинирования RBM и внедрения умного метода обучения. У нас есть новая модель, которая наконец решает проблему исчезающего градиента. Джефф Хинтон изобрел RBM, а также Deep Belief Nets в качестве альтернативы обратному распространению.
DBN похожа по структуре на MLP (многослойный перцептрон), но сильно отличается, когда дело доходит до обучения. именно обучение позволяет DBN превосходить своих мелких коллег
DBN можно визуализировать как стек RBM, где скрытый слой одного RBM является видимым слоем RBM над ним. Первый RBM обучен восстанавливать входные данные как можно точнее.
Скрытый слой первого RBM принимается как видимый слой второго RBM, а второй RBM обучается с использованием выходных данных первого RBM. Этот процесс повторяется до тех пор, пока не будет обучен каждый слой сети.
В DBN каждый RBM изучает весь ввод. DBN работает глобально, последовательно настраивая весь ввод, поскольку модель постепенно улучшается, как объектив камеры, медленно фокусирующий изображение. Стек RBM превосходит одиночный RBM, поскольку многослойный перцептрон MLP превосходит одиночный перцептрон.
На этом этапе RBM обнаруживают в данных собственные закономерности, но без каких-либо имен или меток. Чтобы завершить обучение DBN, мы должны ввести метки в шаблоны и точно настроить сеть с обучением с учителем.
Нам нужен очень небольшой набор помеченных образцов, чтобы функции и шаблоны можно было связать с именем. Этот небольшой набор данных используется для обучения. Этот набор помеченных данных может быть очень маленьким по сравнению с исходным набором данных.
Веса и смещения немного изменяются, что приводит к небольшому изменению восприятия сетью шаблонов и часто небольшому увеличению общей точности.
Обучение также может быть завершено в разумные сроки с использованием графических процессоров, дающих очень точные результаты по сравнению с мелкими сетями, и мы также видим решение проблемы исчезающего градиента.
Генеративные состязательные сети - GAN
Генеративные состязательные сети - это глубокие нейронные сети, состоящие из двух сетей, противопоставленных друг другу, отсюда и название «состязательная».
GAN были представлены в статье, опубликованной исследователями из Монреальского университета в 2014 году. Эксперт Facebook по искусственному интеллекту Янн ЛеКун, имея в виду GAN, назвал состязательное обучение «самой интересной идеей в области машинного обучения за последние 10 лет».
Потенциал GAN огромен, поскольку сканирование сети учится имитировать любое распределение данных. GAN можно научить создавать параллельные миры, поразительно похожие на наш, в любой области: изображения, музыка, речь, проза. В каком-то смысле они художники-роботы, и их работа впечатляет.
В GAN одна нейронная сеть, известная как генератор, генерирует новые экземпляры данных, а другая, дискриминатор, оценивает их на подлинность.
Допустим, мы пытаемся создать рукописные числа, подобные тем, которые содержатся в наборе данных MNIST, взятом из реального мира. Работа дискриминатора, когда ему показан экземпляр из настоящего набора данных MNIST, заключается в том, чтобы распознать их как подлинные.
Теперь рассмотрим следующие шаги GAN -
Сеть генератора принимает входные данные в виде случайных чисел и возвращает изображение.
Это сгенерированное изображение подается в качестве входных данных в сеть дискриминатора вместе с потоком изображений, взятых из фактического набора данных.
Дискриминатор принимает как настоящие, так и поддельные изображения и возвращает вероятности, число от 0 до 1, где 1 означает предсказание подлинности, а 0 - подделку.
Итак, у вас есть двойная петля обратной связи -
Дискриминатор находится в петле обратной связи с достоверной информацией об изображениях, которую мы знаем.
Генератор находится в цепи обратной связи с дискриминатором.
Рекуррентные нейронные сети - RNN
RNNSare нейронные сети, в которых данные могут передаваться в любом направлении. Эти сети используются для таких приложений, как языковое моделирование или обработка естественного языка (NLP).
Основная концепция, лежащая в основе RNN, заключается в использовании последовательной информации. В нормальной нейронной сети предполагается, что все входы и выходы независимы друг от друга. Если мы хотим предсказать следующее слово в предложении, мы должны знать, какие слова были перед ним.
RNN называются повторяющимися, поскольку они повторяют одну и ту же задачу для каждого элемента последовательности, а результат основан на предыдущих вычислениях. Таким образом, можно сказать, что RNN имеют «память», которая фиксирует информацию о том, что было ранее вычислено. Теоретически RNN могут использовать информацию в очень длинных последовательностях, но в действительности они могут оглядываться назад только на несколько шагов.
Сети с долговременной краткосрочной памятью (LSTM) являются наиболее часто используемыми RNN.
Вместе со сверточными нейронными сетями, RNN использовались как часть модели для генерации описаний немаркированных изображений. Удивительно, насколько хорошо это работает.
Сверточные глубокие нейронные сети - CNN
Если мы увеличим количество слоев в нейронной сети, чтобы сделать ее глубже, это повысит сложность сети и позволит нам моделировать более сложные функции. Однако количество весов и смещений будет экспоненциально расти. На самом деле, изучение таких сложных задач может стать невозможным для обычных нейронных сетей. Это приводит к решению - сверточным нейронным сетям.
CNN широко используются в компьютерном зрении; были применены также в акустическом моделировании для автоматического распознавания речи.
Идея сверточных нейронных сетей - это идея «движущегося фильтра», который проходит через изображение. Этот движущийся фильтр или свертка применяется к определенной окрестности узлов, которые, например, могут быть пикселями, где применяемый фильтр составляет 0,5 x значение узла -
Известный исследователь Янн ЛеКун был пионером сверточных нейронных сетей. Facebook как программное обеспечение для распознавания лиц использует эти сети. CNN была идеальным решением для проектов машинного зрения. В сверточной сети много уровней. В испытании Imagenet в 2015 году машина смогла победить человека в распознавании объектов.
Вкратце, сверточные нейронные сети (CNN) - это многослойные нейронные сети. Слои иногда могут быть до 17 и более, и предполагается, что входными данными являются изображения.
CNN резко сокращают количество параметров, которые необходимо настроить. Таким образом, CNN эффективно обрабатывают необработанные изображения высокой размерности.