6 Линий Глубокого Обучения

Привет, Хабр! Понятие «Глубокое обучение» существует с 1986 года, когда его впервые использовала Рина Дехтер.

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

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

Под катом вы узнаете об использовании алгоритмов глубокого обучения в SQL. Проверьте это!

6 линий глубокого обучения



Что добавить?

Использование глубокого обучения достигло таких масштабов, что новая мантра «Глубокое обучение в каждом приложении» вполне может стать реальностью в течение следующего десятилетия.

Почтенный СУБД SQL-сервер .

На вопрос «Можно ли использовать алгоритмы глубокого обучения в SQL ServerЭ» мы уверенно отвечаем «Да!» В общедоступный Мы значительно улучшили предварительную версию нового выпуска SQL Server. Службы R внутри SQL Server и добавил мощный набор инструментов машинного обучения, используемых разработчиками и внутри самой Microsoft. Это дает приложениям СУБД, созданным на базе SQL Server, возможность повысить скорость, производительность и масштабируемость, а также получить доступ к другим новым возможностям машинного обучения и глубоких нейронных сетей.

Совсем недавно мы продемонстрировал Как SQL Server выполняет более миллиона прогнозов R в секунду при использовании в качестве системы управления моделями на основе машинного обучения, и теперь мы позволим вам самостоятельно ознакомиться с примерами кода R и шаблонами машинного обучения.

SQL-сервер на GitHub .

В этом блоге я хотел бы подробно осветить эти вопросы.

"Что" , "За что" И "Как" относительно глубокого обучения в SQL Server. Благодаря этому мы сможем лучше увидеть перспективы искусственного интеллекта, управляемого данными, с использованием такой мощной платформы данных, как SQL Server.

Зачем добавлять?

Сегодня все компании и все приложения работают с данными.

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

SQL Server помогает разработчикам и пользователям привнести суть глубокого обучения в свои приложения с помощью всего лишь нескольких строк кода.

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

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

Десять причин Почему SQL Server нужны возможности глубокого обучения.

  1. Используя машинный интеллект с системами хранения данных (такими как SQL Server), вы получаете безопасность, соответствие требованиям, конфиденциальность, шифрование, услуги по управлению основными данными , группы доступности, передовые инструменты бизнес-аналитики, технологии обработки в памяти, виртуализация, геопространственные, временные, графические и другие удивительные возможности.

  2. Вы можете работать в режиме «реального времени» или «пакетном» режиме, аналогично обработке транзакций в реальном времени (OLTP) и онлайн-аналитической обработке (OLAP), но применительно к глубокому обучению и машинному интеллекту.

  3. Чтобы в полной мере воспользоваться преимуществами глубокого обучения, вам не нужно менять свои приложения, созданные на базе SQL Server. Кроме того, многие мобильные приложения, приложения Интернета вещей и веб-приложения могут использовать одни и те же модели глубокого обучения без необходимости дублировать код.
  4. Вы можете использовать функции библиотек машинного обучения (например, MicrosoftML), чтобы повысить эффективность специалистов по данным, разработчиков, администраторов баз данных и всего вашего бизнеса.

    Это намного быстрее и эффективнее, чем делать то же самое самостоятельно.

  5. Вы сможете разрабатывать прогнозные решения для развертывания или масштабирования в соответствии с текущими требованиями.

    Благодаря последнему пакету обновления SQL Server многие функции, ранее доступные только в Enterprise Edition, теперь поддерживаются в других выпусках SQL Server, включая Standard/Express/Web Edition. Это означает, что вы можете использовать глубокое обучение даже в стандартной версии SQL Server без каких-либо дополнительных затрат.

  6. Вы можете использовать гетерогенные внешние источники данных (с использованием PolyBase) для обучения и извлечения информации из глубоких моделей.

  7. Вы можете моделировать различные ситуации и создавать сценарии «что, если» внутри SQL Server, а затем использовать их для различных моделей глубокого обучения.

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

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

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

    SQL Server действительно станет вашим система управления машинным обучением , чтобы контролировать весь жизненный цикл моделей DNN вместе с данными.

  10. Вы можете создавать новые данные и получать аналитику по хранимым данным, не увеличивая рабочую нагрузку транзакций (через HTTP-шаблон ).

По правде говоря, вряд ли кто-то станет покупать СУБД только ради управления базой данных.

Покупателя волнуют возможности, которые он предоставит. Предоставляя SQL Server возможности глубокого обучения, мы можем масштабировать ИИ и машинное обучение как в традиционном смысле (масштабирование данных, пропускная способность, задержка), так и с точки зрения производительности (упрощенная реализация и более плоская кривая обучения).

Он обеспечивает ценные результаты во многих отношениях одновременно, будь то время, пользовательский опыт, производительность, снижение затрат и рост прибыли, новые возможности, перспективы бизнеса, лидерство в отрасли и т. д. На практике технологии глубокого обучения в SQL Server могут использоваться в банковском деле и финансах, а также в здравоохранении, производстве, розничной торговле, электронной коммерции и системах Интернета вещей (IoT).

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

Это также означает, что какие бы рабочие нагрузки вы ни выполняли на SQL Server, будь то управление взаимоотношениями с клиентами (CRM), планирование ресурсов предприятия (ERP), хранилище данных (DW), обработка транзакций в реальном времени (OLTP) и т. д., вы можете легко использовать в них технологию глубокого обучения.

Речь идет об использовании его не отдельно, а в сочетании со всеми типами данных и аналитики, которыми так славится SQL Server (например, обработка структурированных, геопространственных, графических, внешних, временных и JSON-данных).

И все, что вам нужно сделать, это добавить сюда.

свои идеи.



6 линий глубокого обучения



Как добавить?

Здесь я покажу вам, как применить все это на практике.

В качестве примера давайте возьмем эксперимент по прогнозированию классов галактик по изображениям с использованием мощного языка программирования Microsoft R и его нового пакета.

MicrosoftML для машинного обучения (создан нашими специалистами в области разработки алгоритмов, обработки и анализа данных).

И мы сделаем это в SQL Server с подключенными службами R на публике Виртуальная машина Azure NC .

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

Форма и другие визуальные характеристики галактик меняются по мере их эволюции.

Изучение формы галактик и их классификации помогает ученым лучше понять развитие Вселенной.

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

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

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



Приложение

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



6 линий глубокого обучения

Более того, он может невероятно быстро классифицировать огромное количество изображений.

Пример вывода:

6 линий глубокого обучения

Первые два столбца содержат эллиптические галактики, а остальные — различные спиральные галактики.



Так как же простое приложение может выполнить такую сложную классификацию?

Код такого приложения на самом деле совершает не так много действий; она лишь записывает пути к новым файлам для их распределения по классам в таблице базы данных (остальной код программы состоит из распределения итоговых данных, верстки страниц и т.п.

).

  
  
   

SqlCommand Cmd = new SqlCommand("INSERT INTO [dbo].

[GalaxiesToScore] ([path] ,[PredictedLabel]) "



6 линий глубокого обучения



Что происходит в базе данных?



Часть, ответственная за прогнозирование и внедрение

Давайте посмотрим на таблицу, куда приложение записывает пути к файлам изображений.

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

Как только в таблицу записывается новая строка данных, срабатывает триггер:

6 линий глубокого обучения

В свою очередь, триггер вызывает хранимую процедуру PredictGalaxiesNN, как показано ниже (с частью сценария R, встроенной в хранимую процедуру):

6 линий глубокого обучения

Вот где происходит волшебство — в нескольких строках кода R. Этот сценарий R принимает в качестве входных данных новые строки данных (которые еще не были оценены) и модель, хранящуюся в таблице как varbinary(max).

Чуть позже я вернусь к вопросу о том, как эта модель там оказалась.

Внутри сценария модель десериализуется и используется знакомой функцией вычисления (rxPredict) на следующей строке для оценки новых строк и последующей записи результирующего вывода.



scores <- rxPredict(modelObject = model_un, data = InputDataSet, extraVarsToWrite="path")

Это новый вариант функции rxPredict, который понимает алгоритмы машинного обучения, включенные в пакет MicrosoftML. Следующая строка загружает пакет, содержащий новые алгоритмы машинного обучения MicrosoftML.

[ library("MicrosoftML") ]

Помимо глубокой нейронной сети (DNN), основной темы этого блога, пакет содержит еще пять мощных алгоритмов машинного обучения: быстрый линейный, быстрый древовидный, быстрый лесной, одноклассовый SVM для обнаружения аномалий, регуляризованный логистический.

регрессия (с поддержкой регуляризации L1 и L2) и нейронные сети.

Таким образом, всего с помощью 6-7 строк R любое приложение может стать интеллектуальным с помощью модели глубокой нейронной сети.

Приложению необходимо только подключиться к SQL Server. Кстати, пакет sqlrutils позволяет легко создать хранимую процедуру для кода R.

А как насчет обучения модели?

Где проходила обучение модель? А еще она обучалась SQL Server. Однако совсем не обязательно было обучать его SQL Server; это можно сделать на отдельной машине с автономным решением R Server, работающим локально или через облако.

Все эти новые алгоритмы машинного обучения уже сегодня доступны в версии R Server для Windows, а поддержка других платформ появится в ближайшее время.

Мне было удобнее проходить обучение в области SQL Server, но я мог бы провести это и за его пределами.

Давайте посмотрим на хранимую процедуру с обучающим кодом.

Код для обучения Обучение модели происходит в следующих строках кода:

6 линий глубокого обучения

Это новая функция rxNeuralNet из пакета MicrosoftML для обучения глубоких нейронных сетей.

Этот код похож на другие функции R и rx — он также содержит формулу, набор входных данных и некоторые другие параметры.

Одним из параметров, которые мы здесь видим, является строка netDefinition = netDefinition. Здесь определяется нейронная сеть.

Определение сети Глубокая нейронная сеть определяется в этой части кода:

6 линий глубокого обучения

Здесь определяется глубокая нейронная сеть с использованием языка спецификации Net#, созданного специально для этой цели.

Нейронная сеть содержит 1 входной, 1 выходной и 8 скрытых слоев.

Он начинается с входного слоя размером 50x50 пикселей и графических данных RGB (3 глубины цвета).

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

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

И, наконец, выходной слой, который сопоставляет его с одним из 13 классов.

Используя около 50 строк спецификации Net#, я определил сложную нейронную сеть.

Руководство по Net# находится в разделе MSDN. Размер обучающих данных/GPU Вот код R для обучения модели:

6 линий глубокого обучения

Хотелось бы поговорить еще о нескольких строках — Training_rows = 238000. Данная модель была обучена на 238 000 изображениях, полученных из базы данных Sloan Digital Sky Survey ( Слоановский цифровой обзор неба ).

Затем мы создали две версии каждого изображения, повернув их на 45 и 90 градусов.

Таким образом, всего для обучения было около 700 000 изображений.

Это очень большой объем обучающих данных, поэтому вопрос в том, сколько времени ушло на их обработку? Ответ: Нам удалось обучить эту модель за 4 часа, используя небольшую машину с 6-ядерным процессором и 56 ГБ оперативной памяти, а также мощный графический ускоритель Nvidia Tesla K80. Это новая виртуальная машина с графическим процессором Azure серии NC, доступная каждому, у кого есть подписка Azure. Нам удалось оптимизировать скорость вычислений с помощью графического процессора (GPU), задав один простой параметр: ускорение = «gpu».

Без графического процессора обучение занимает примерно в 10 раз больше времени.



Обобщить

С помощью всего лишь нескольких строк кода R и алгоритмов MicrosoftML я смог обучить глубокую нейронную сеть на огромном объеме графовых данных и запустить обученную модель на SQL с помощью сервисов R, которые упрощают работу любого приложения, связанного с SQL. получить эти умные технологии.

В этом заключается мощь языка Microsoft R и пакета MicrosoftML в сочетании с SQL Server. И это только начало: мы работаем над созданием новых алгоритмов, которые сделают мощь искусственного интеллекта и машинного обучения доступной каждому.

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

Здесь .



6 линий глубокого обучения

Теги: #Машинное обучение #microsoft #sql #глубокое обучение #Microsoft SQL Server #sql-сервер

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.