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

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

Краткая история нейронных сетей

История нейронных сетей (NN) разнообразна, и их происхождение восходит к 1940-м годам. Однако работающая версия нейронной сети появилась только в 1957 году. Перцептрон, разработанный Фрэнком Розенблаттом, Чарльзом Вайтманом и другими, представлял собой двухслойную сеть, предназначенную для распознавания образов. Персептроны ограничены в том смысле, что выход по существу представляет собой линейную комбинацию входов. Следовательно, Перцептроны не смогли решить некоторые проблемы, такие как задачи классификации, которые требовали моделирования нелинейных границ. Это неотъемлемое ограничение привело к первому отклонению в этой области исследований.

Последняя нота этой эпохи была вызвана кампанией Марвина Мински и Сеймура Паперта, направленной на то, чтобы направить финансирование в область искусственного интеллекта. В своей книге « Перцептроны» 1969 года они отметили, что перцептроны не смогли справиться с простой проблемой XOR (рис. 1). Это привело к быстрому сокращению числа активных исследователей, и поле ушло в подполье до 1980-х годов.

Рисунок 1: Невозможно разделить 1 и 0 на их собственные группы разделов, используя прямую линию.

В начале 1980-х годов нейронные сети пережили ренессанс благодаря работе Джона Хопфилда и других авторитетных исследователей. Хопфилд популяризировал идею гибридной сети с несколькими слоями. Наиболее распространенная архитектура такой сети

Рисунок 2: Нейронная сеть с прямой связью

Нейронная сеть с прямой связью состоит из входного слоя, выходного слоя и любого количества скрытых слоев - обычно только одного, в типичной, не глубокой нейронной сети. Входной слой - это первый слой, а выходной - последний слой. Каждый уровень отправляет свои выходы на следующий уровень без связи слоев со слоями «позади». Преимущество такой сети состоит в том, что каждый нейрон на внутреннем уровне является нелинейной комбинацией предыдущего уровня. В то время как любой уровень нелинейности может быть описан с использованием одного слоя, богатство функций значительно улучшается при использовании нескольких слоев. Чтобы использовать аналогию, человеческий мозг преуспевает в захвате необработанных данных на уровне датчиков (например, глаз и ушей) и использовании слоев нейронов для построения нескольких уровней представления входной информации с использованием мета-функций. Из-за этого мозг воспринимает другое, но более актуальное описание ввода. В нейронной сети каждый слой создает лучшие представления предыдущих уровней. В этом смысле нейронные сети можно рассматривать как генераторы функций. В то время как персептрон представляет собой один нейрон, который может выполнять только линейное разделение пространств данных, FNN может разделять данные нелинейным образом, что позволяет применять его в гораздо более широких областях.

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

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

w = w -n∇  Err (LinkedIn не учитывает полное уравнение, но вы получите точку)

Где n называется скоростью обучения, а Err - это определенная функция ошибок, обычно это квадрат ошибки. Градиент действует на Err относительно весовых векторов.

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

Глубокие Нейронные Сети

В 2005 году проблема оптимизации этих сетей была параллельно решена группой исследователей из Стэнфорда и Университета Торонто. Исследователи выяснили, как тренировать каждый слой по одному, и использовали обратное распространение в качестве элемента тонкой настройки. Это привело к возможности обучения без присмотра и автоматического извлечения функций с использованием этих типов сетей. В это время термин «глубокое обучение» был придуман, чтобы описать эти глубокие нейронные сети. Этими решениями были именно авто кодировщики и ограниченные машины Больцмана. Оба метода не контролируются, в отличие от обратного распространения, которое контролируется.

Авто Энкодеры

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

Рисунок 3: Пример автоматического кодера.

Автоматический кодер обычно имеет меньше узлов в скрытом слое, чем в слоях ввода / вывода, которые имеют одинаковое количество узлов. Причиной этого является то, что ученые данных обычно стремятся уменьшить размерность данных. Например, если функции активации узлов в скрытом (k-узловом) слое являются линейными, то авто-кодер по существу копирует метод PCA и отображает переменные на оси k-принципа. Однако, если функция активации нелинейная, это позволяет автокодеру захватывать мультимодальное поведение во входных данных.

Поскольку у нас нет явных целевых меток, мы фиксируем целевые метки равными входным данным и заставляем скрытый слой содержать меньше узлов. После того, как входной вектор x введен в авто-кодировщик, скрытый вектор y создается скрытым слоем. Этот скрытый вектор представляет новое представление кодирования данных, основанное на новых функциях. На выходном слое скрытый вектор используется, чтобы попытаться восстановить входной вектор, x 'Для обучения автокодера функция ошибки определяется с использованием векторов вывода и ввода, обычно с использованием квадрата ошибки. Эту концепцию можно распространить на несколько уровней, где каждый последующий уровень «кодирует» предыдущий уровень, используя значительно меньше нейронов. Как только это найдено, обратное распространение используется для переопределения всех весовых коэффициентов, определенных для FNN. Это простое сокращение узлов на каждом уровне, наряду с обучением без присмотра, привело к феноменальному автоматизированному проектированию элементов и значительно превзошло последние 30 лет разработки функций человека во многих задачах.

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

Рисунок 4: Представление иерархических функций в глубоких нейронных сетях. (Источник: Google)

Разреженные Авто Кодеры

Источником вдохновения для Sparse Auto Encoders стало понимание того, что человеческий мозг не ограничивает себя одинаковыми функциями для каждой задачи распознавания. Например, мы используем разные уникальные функции, чтобы запоминать разные лица. Аналогично, не все узлы в скрытом слое требуют активации для каждого входного вектора. Чтобы обеспечить это более формальным способом, в Sparse Auto Encoders есть еще много скрытых узлов. Функция активации узлов в скрытом слое принимает значения от 0 до 1. Это можно рассматривать как нейрон, не запускающий или не запускающий, соответственно. Средняя скорость стрельбы,  , может быть определена для узла путем усреднения по всем его входным переменным. В Sparse Auto Encoders мы устанавливаем среднюю скорость стрельбы на фиксированное небольшое значение, α, что приводит к тому, что большинство скрытых узлов становятся неактивными. Из-за этого Sparse Auto Encoder может иметь большее значение скрытых узлов, чем входной слой, и только небольшая их часть активна одновременно. Это достигается путем наложения штрафа на функцию активации в любое время  отклоняется от α . Наложение этой редкости на автоматический кодировщик значительно повышает производительность задач классификации.

Ограниченные машины Больцмана

Ограниченная машина Больцмана (RBM) - это генеративная стохастическая искусственная нейронная сеть, изобретенная командой Джеффри Хинтона в Университете Торонто. Он состоит из двух слоев нейронов. Целью УОКР является изучение распределения вероятностей по его набору входных данных. RBMs стремятся построить более устойчивую к шуму модель, исходя из предположения, что небольшие возмущения на входах не должны влиять на прогноз. Возвращаясь к аналогии с человеческим мозгом, люди обладают удивительной способностью распознавать объекты в шумной обстановке (например, узнавать кого-то по его / ее лицу, даже когда лицо меняется из-за возраста, привычек ухода за шерстью и т. Д.).

Обучение RBM состоит из оптимизации весов таким образом, чтобы вероятности, назначенные обучающему набору, были максимальными. Одним из способов достижения этого является использование метода, известного как Contrastive Divergence (CD). Это включает в себя выбор входного вектора v и вычисление вероятностей скрытых единиц для получения выборочного скрытого вектора h . Следовательно, выходы активируются стохастическим образом, где вероятность активации зависит от нелинейной комбинации входов. Затем с использованием сгенерированных выходов восстанавливают входной вектор v ' . Обратите внимание, что v 'близко к исходному вводу v , но не то же самое. Мы используем v ' и снова запускаем его через сеть, чтобы получить новый скрытый вектор, h'Мы используем разницу между внешними произведениями ( v , h ) и ( v ' , h' ) для обновления весов. CD может выполняться любое количество раз, чтобы минимизировать разницу между h и h ' .

Предсказатель Аналитика

Soothsayer Analytics взаимодействует с компаниями для решения сложных задач Data Science и активно работает с использованием самых современных методов. Мы помогаем клиентам прогнозировать будущее, оптимизировать их бизнес, а также выявлять микро-шаблоны и скрытые связи, которые традиционные методы не могут. Мы создаем собственные алгоритмы и аналитические инструменты, вносим вклад в передовые исследования и разработки и помогаем компаниям создавать внутренние аналитические центры передового опыта. Все наши ученые в области данных имеют докторскую степень или степень магистра и имеют большой опыт работы в области математики и программирования.