Почему глубокое обучение сейчас имеет такое значение? Что это дань моде или явление, способное действительно изменить многие привычные для нас вещи? Предлагаю подробно обсудить эту тему, начав с искусственных нейронных сетей и когнитивных вычислений, а закончив примерами глубокого обучения в действии.
Начиная с искусственных нейронных сетей
В своей предыдущей статье я раскрыл значения многих умных слов и объяснил, что глубокое обучение — это подраздел машинного обучения. Чтобы понять глубокое обучение, для начала необходимо немного разобраться в искусственных нейронных сетях. Не волнуйтесь, поскольку я не являюсь ученым по данным, я не буду пытаться описать все математически. То есть, ни слова о взвешенных показателях, функциях активации и подобных терминах.
Глубокое обучение обычно используется при описании искусственных нейронных сетей с более чем одним скрытым слоем. Подробнее о том, что такое скрытый слой, я расскажу чуть позже. Теория заключается в том, что чем больше скрытых слоев у вас есть, тем больше вы можете изолировать конкретные области данных для классификации.
У Луиса Серрано есть отличная схема, которую я и буду использовать, чтобы объяснить концепцию изолирования областей для классификации данных. Мое объяснение будет ссылаться на этот рисунок:
На данном рисунке Луис изображает вводные, состоящие из двух значений (x и y). Имеющиеся у нас исторические данные показывают, что результат набора значений x и y является синим или красным (произвольный результат). Чтобы показать это наглядно, вы можете отобразить эти значения, как показано выше, если вы визуализируете ось X и Y.
Цель этой сети заключается в том, чтобы помочь обнаружить синие результаты. Для этого компьютер придумывает две разные регрессионные модели, чтобы получить вероятность того, является ли заданная точка синей или красной. Обычно результаты не идеальны, поэтому на изображении видно, что обе линии приводят к некоторым ошибкам. Но компьютер будет проводить оптимизацию, чтобы сократить количество этих ошибок.
С помощью двух регрессий компьютер затем может выделить синие элементы из двух моделей (с помощью дополнительных вычислений и какой-то другой магии), чтобы создать область, показанную справа. Эта третья область более точно анализирует данные и может обеспечить более высокую вероятность того, что есть синее, а что нет.
Другими словами, искусственные нейронные сети работают над разделением и классификацией данных, чтобы при предоставлении новых данных классифицировать их.
В приведенном выше примере это означает, что с появлением новой комбинации значений x и y, которой никогда не было ранее, вы можете пропустить ее через сеть. Сеть же сделает предположение о том, что результат будет синим с высокой долей вероятности (или красным). По определению, если выбор является двоичным, и вы также знаете, что вероятность синего результата очень низкая, то вы делаете вывод, что результат будет красный. Это довольно простой пример, но он хорошо иллюстрирует концепцию.
Поясним теперь термин «скрытые слои». Те, кто уже долго занимается данным вопросом, может начать бурную дискуссию о количестве этих слоев. Их может быть сотни. Многие, правда, утверждают, что большое количество не всегда оказывает существенное влияние на точность и может даже ее снизить. Ответ тут кроется в том, какую именно задачу вы решаете. Как и во всех моделях, лучшим способом решения будет пробовать несколько различных подходов, а затем выбрать лучший.
Очевидно, что:
- Чем больше скрытых слоев и узлов, тем больше вычислительных ресурсов необходимо для обучения модели.
- Чем больше данных вы хотите предоставить для обучения модели, тем больше потребуется вычислительных ресурсов. С другой стороны, чем больше данных у вас будет, тем точнее будет модель в целом. И она со временем будет улучшаться, поскольку получает все больше и больше данных на вход.
Эти две вещи привели к росту использования графических процессоров в области глубокого обучения. Использование графического процессора позволяет проводить параллельные вычисления на большом количестве относительно дешевых процессоров, особенно когда вы обучаете искусственную нейронную сеть со многими скрытыми слоями и множеством входных данных.
Наглядное изображение искусственной нейронной сети
Итак, давайте вернемся немного назад и посмотрим на графическое изображение простой искусственной нейронной сети. Она в целом состоит из трех элементов. Входной уровень, один или несколько скрытых слоев и выходной уровень. Эти же три слоя мы могли видеть на образце Луиса, который использовался ранее.
- Слева мы видим входной слой. В нашем случае в сеть вносятся 4 единицы. Каждый входной узел соединяется с каждым узлом в первом скрытом слое (в примере Луиса, который использовался ранее, у нас было 2 входа во входном слое, представляющие значения x и y).
- Затем, как правило, есть один или два скрытых слоя с несколькими узлами, все из которых связаны с каждым входным и каждым выходным узлом. Компьютер сам на основании входных данных производит моделирование и определяет, сколько узлов должно быть в скрытом слое. Это самообучающаяся часть и процесс, когда сеть может меняться со временем по мере поступления большего количества данных (таким образом, происходит лучшая конечная классификация). Каждый узел что-то моделирует на основе входных данных (пример Луиса о получении показателей синего цвета в результате использования регрессионных моделей). По сути, сеть на данном этапе «расщепляет» и «классифицирует» данные.
- Справа мы видим выходной слой с несколькими выходными узлами. Каждый из этих узлов предоставляет результат классификации входных данных. Эти вероятности могут затем передаваться в любую программу с пользовательским интерфейсом для дальнейшей работы конечных пользователей. В примере у Луиса это будет вероятность того, что входные данные были синего цвета (или красного).
В такой нейронной сети все скрытые узлы связаны с их предшественниками и последователями. Такой вид нейронных сетей известен как сеть полной связи (Fully Connected Network). Есть способы создать процесс, называемый обрезкой, чтобы оборвать некоторые связи. В данной статье я это пропущу. Любая обрезка обычно выполняется только после того, как вы подготовили и обучили модель, и используется для повышения ее точности и эффективности.
Теперь, когда вы понимаете, как выглядит искусственная нейронная сеть, и что она пытается сделать, вам будет легко представить, что глубокая нейронная сеть очень на нее похожа. Основное различие состоит в том, что она обычно содержит два или более скрытых слоя (некоторые полагают, что нужно более двух скрытых слоев, чтобы получить хорошую модель глубокого обучения, но это зависит от конкретной задачи). Глубокое обучение открывает новые возможности для классификации с очень высоким уровнем точности. Это, пожалуй, наиболее заметный результат в быстро развивающемся мире речевой, текстовой и визуальной классификации.
Примеры реальных нейронных сетей
Примером ограниченного искусственного интеллекта является созданная компанией Google модель для игры в Go. Одна из частей модели представляет из себя нейронную сеть глубокого обучения, обученную посредством проведения миллионов партий. Как вы видите, сеть содержит очень мало слоев. Он в конечном итоге приходит только к шести выводам, которые использовались для принятия решения в каждой игровой ситуации.
В настоящее время очень много внимания получают беспилотные автомобили, и, надо сказать, что это схожая концепция. Посмотрите блог Дэвида Синглтона, работающего в Google, в котором показано, как создать модель беспилотного автомобиля. Ниже приведен рисунок нейронной сети. Она достаточно сложная, со множеством скрытых слоев. В конечном счете, она представляет то, что должен делать автомобиль.
Внимательные читатели могли заметить слово «свертка» (convolution) на изображении сети AlphaGo. Объясняется это тем, что данные два примера используют сущность, называемую «сверточной нейронной сетью». Это нейронная сеть особого типа, созданная еще в 80-х годах, которая эффективна при обработке речи, текста и изображений. Оба примера, которые мы рассмотрели выше, используют визуальные данные.
Что такое сверточная нейронная сеть?
Сверточные нейронные сети разбивают изображения на более мелкие части (свертки), а затем пытаются идентифицировать определенные признаки, используя фильтры, по которым ищутся конкретные шаблоны в изображении. Затем создается то, что называется «сверточным слоем». Все найденное затем используется в сети полной связи, чтобы определить, что действительно находится на изображении. Если вы захотите разобраться в этой теме, посмотрите видео Брэндона Рорера, сотрудника Facebook, в котором он подробно раскрывает эту тему.
Влияние на когнитивные вычисления
На данный момент важно понимать, что глубокое обучение стоит за многими достижениями, которые мы сегодня видим в когнитивных вычислениях.
Когнитивные вычисления позволяют компьютерам взаимодействовать с нами в «человекоподобной форме». Это означает, что они способны понимать образы, речь, текст и т. д.
Сверточные нейронные сети стали ключом к прогрессу, который мы имеем сегодня, наряду с большими данными, большими вычислительными мощностями и облачными вычислениями.
Чтобы преуспеть в когнитивных вычислениях, вам нужны ТРИ вещи (при условии, что у вас есть люди и инструменты для создания модели):
- Для обучения хорошей сети вам нужно много входных данных. Например, чтобы построить отличную сеть, которая может распознавать объекты, вам понадобятся тысячи и тысячи изображений, содержащих этот объект, плюс изображения, на которых его нет. Есть прекрасное выступление Фей-Фей Ли из Стенфордского университета на конференции TED, которое отлично все объясняет.
- Вам нужно достаточно вычислительной мощности, чтобы выполнить обучение в разумный период времени и в последствии продолжать управлять эволюцией модели.
- Вам необходима вычислительная мощность для использования обученной модели в вашем приложении.
Для меня совершенно очевидно, что когнитивные вычисления имеют смысл, и для многих могут поставляться как сервис,который можно внедрить в ваши приложения. Собственная разработка внутри ИТ-инфраструктуры компании будет затруднительна, учитывая поиск данных для обучения и требования к мощности серверов для более точного вычисления.
Использование сегодня
Сегодня мы видим, что многие компании используют такие сервисы как Microsoft Cognitive Services в своих приложениях, чтобы начать использовать ограниченный искусственный интеллект.
В основном, есть две вещи:
- Предварительно обученные, постоянно обновляемые модели, которые могут использоваться в качестве сервиса без каких-либо дополнительных знаний о том, что мы рассмотрели в данном блоге. Примерами могут служить визуальное распознавание общих объектов/лиц или распознавание речи и текста.
- Черные ящики (Black box services) вы можете использовать для обучения моделей по выявлению конкретных вещей, которые будут специализированы только для вас. Примерами могут быть распознавание конкретных объектов, специфичных для вашего бизнеса.
Эти две возможности обеспечивают максимальную гибкость, предоставляя вам быстрые средства для использования ограниченного ИИ, при этом не требуя держать в штате компании армию квалифицированных ученых по данным.
Ниже я привожу два примера когнитивных услуг из реальной жизни, которые позволили интегрировать ограниченный ИИ в конкретные приложения / бизнес-процессы:
- Uber представил новую функцию он-лайн проверки ID, как дополнительную функцию безопасности, которая периодически запрашивает у водителей отправку селфи, прежде, чем они начнут прием заказов. Проверка подлинности ID в режиме реального времени использует интеллектуальную службу Microsoft Cognitive Services для мгновенного сравнения селфи с той фотографией водителя, которая уже загружена в базу данных. Если эти две фотографии не совпадают, то учетная запись водителя может быть временно отключена, пока Uber разбирается в ситуации. Эта функция также позволяет пассажирам узнать, кто находится за рулем.
- McDonalds использует Microsoft Cognitive Services для автоматического распознавания речи клиентов в МакАвто и автоматической загрузки заказа в POS-терминал. Для этого используется сервис, который переводит речь в текст.
Источник: Global CIO
в Telegram