Привет, Хабр! Понятие «Глубокое обучение» существует с 1986 года, когда его впервые использовала Рина Дехтер.
Технология была разработана в 2006 году после публикации Джеффри Хинтона об эффективном предварительном обучении многослойной нейронной сети.
Сегодня глубокое обучение часто сочетается с распознаванием речи, пониманием языка и компьютерным зрением.
Под катом вы узнаете об использовании алгоритмов глубокого обучения в SQL. Проверьте это!
Что добавить?
Использование глубокого обучения достигло таких масштабов, что новая мантра «Глубокое обучение в каждом приложении» вполне может стать реальностью в течение следующего десятилетия.Почтенный СУБД SQL-сервер .
На вопрос «Можно ли использовать алгоритмы глубокого обучения в SQL ServerЭ» мы уверенно отвечаем «Да!» В общедоступный Мы значительно улучшили предварительную версию нового выпуска SQL Server. Службы R внутри SQL Server и добавил мощный набор инструментов машинного обучения, используемых разработчиками и внутри самой Microsoft. Это дает приложениям СУБД, созданным на базе SQL Server, возможность повысить скорость, производительность и масштабируемость, а также получить доступ к другим новым возможностям машинного обучения и глубоких нейронных сетей.
Совсем недавно мы продемонстрировал Как SQL Server выполняет более миллиона прогнозов R в секунду при использовании в качестве системы управления моделями на основе машинного обучения, и теперь мы позволим вам самостоятельно ознакомиться с примерами кода R и шаблонами машинного обучения.
В этом блоге я хотел бы подробно осветить эти вопросы.
"Что" , "За что" И "Как" относительно глубокого обучения в SQL Server. Благодаря этому мы сможем лучше увидеть перспективы искусственного интеллекта, управляемого данными, с использованием такой мощной платформы данных, как SQL Server.
Зачем добавлять?
Сегодня все компании и все приложения работают с данными.Любое приложение можно назвать интеллектуальным, если оно сочетает в себе хранение данных и интеллект (будь то искусственный интеллект, система машинного обучения или любая другая интеллектуальная система).
SQL Server помогает разработчикам и пользователям привнести суть глубокого обучения в свои приложения с помощью всего лишь нескольких строк кода.
Это также позволяет разработчикам баз данных развертывать критически важные операционные системы со встроенными моделями глубокого обучения.
В этой статье мы собрали десять причин, по которым SQL Server нуждается в возможностях глубокого обучения.
Десять причин Почему SQL Server нужны возможности глубокого обучения.
- Используя машинный интеллект с системами хранения данных (такими как SQL Server), вы получаете безопасность, соответствие требованиям, конфиденциальность, шифрование, услуги по управлению основными данными , группы доступности, передовые инструменты бизнес-аналитики, технологии обработки в памяти, виртуализация, геопространственные, временные, графические и другие удивительные возможности.
- Вы можете работать в режиме «реального времени» или «пакетном» режиме, аналогично обработке транзакций в реальном времени (OLTP) и онлайн-аналитической обработке (OLAP), но применительно к глубокому обучению и машинному интеллекту.
- Чтобы в полной мере воспользоваться преимуществами глубокого обучения, вам не нужно менять свои приложения, созданные на базе SQL Server. Кроме того, многие мобильные приложения, приложения Интернета вещей и веб-приложения могут использовать одни и те же модели глубокого обучения без необходимости дублировать код.
- Вы можете использовать функции библиотек машинного обучения (например, MicrosoftML), чтобы повысить эффективность специалистов по данным, разработчиков, администраторов баз данных и всего вашего бизнеса.
Это намного быстрее и эффективнее, чем делать то же самое самостоятельно.
- Вы сможете разрабатывать прогнозные решения для развертывания или масштабирования в соответствии с текущими требованиями.
Благодаря последнему пакету обновления SQL Server многие функции, ранее доступные только в Enterprise Edition, теперь поддерживаются в других выпусках SQL Server, включая Standard/Express/Web Edition. Это означает, что вы можете использовать глубокое обучение даже в стандартной версии SQL Server без каких-либо дополнительных затрат.
- Вы можете использовать гетерогенные внешние источники данных (с использованием PolyBase) для обучения и извлечения информации из глубоких моделей.
- Вы можете моделировать различные ситуации и создавать сценарии «что, если» внутри SQL Server, а затем использовать их для различных моделей глубокого обучения.
Таким образом, вы можете получить интеллектуальное решение даже при очень ограниченных обучающих данных.
- Вы можете легко и быстро использовать модели глубокого обучения, используя хранимые процедуры и триггеры.
- Вы получите все инструменты, средства мониторинга, отладки и экосистему SQL Server, необходимые для машинного интеллекта.
SQL Server действительно станет вашим система управления машинным обучением , чтобы контролировать весь жизненный цикл моделей DNN вместе с данными.
- Вы можете создавать новые данные и получать аналитику по хранимым данным, не увеличивая рабочую нагрузку транзакций (через HTTP-шаблон ).
Покупателя волнуют возможности, которые он предоставит. Предоставляя SQL Server возможности глубокого обучения, мы можем масштабировать ИИ и машинное обучение как в традиционном смысле (масштабирование данных, пропускная способность, задержка), так и с точки зрения производительности (упрощенная реализация и более плоская кривая обучения).
Он обеспечивает ценные результаты во многих отношениях одновременно, будь то время, пользовательский опыт, производительность, снижение затрат и рост прибыли, новые возможности, перспективы бизнеса, лидерство в отрасли и т. д. На практике технологии глубокого обучения в SQL Server могут использоваться в банковском деле и финансах, а также в здравоохранении, производстве, розничной торговле, электронной коммерции и системах Интернета вещей (IoT).
А применение этих технологий для обнаружения мошенничества, прогнозирования заболеваний, прогнозирования потребления энергии или анализа личной информации улучшит существующие отрасли и приложения.
Это также означает, что какие бы рабочие нагрузки вы ни выполняли на SQL Server, будь то управление взаимоотношениями с клиентами (CRM), планирование ресурсов предприятия (ERP), хранилище данных (DW), обработка транзакций в реальном времени (OLTP) и т. д., вы можете легко использовать в них технологию глубокого обучения.
Речь идет об использовании его не отдельно, а в сочетании со всеми типами данных и аналитики, которыми так славится SQL Server (например, обработка структурированных, геопространственных, графических, внешних, временных и JSON-данных).
И все, что вам нужно сделать, это добавить сюда.
свои идеи.
Как добавить?
Здесь я покажу вам, как применить все это на практике.В качестве примера давайте возьмем эксперимент по прогнозированию классов галактик по изображениям с использованием мощного языка программирования Microsoft R и его нового пакета.
MicrosoftML для машинного обучения (создан нашими специалистами в области разработки алгоритмов, обработки и анализа данных).
И мы сделаем это в SQL Server с подключенными службами R на публике Виртуальная машина Azure NC .
Я собираюсь разделить изображения галактик и других космических объектов на 13 классов, исходя из принятой в астрономии классификации – преимущественно эллиптические и спиральные галактики и их разновидности.
Форма и другие визуальные характеристики галактик меняются по мере их эволюции.
Изучение формы галактик и их классификации помогает ученым лучше понять развитие Вселенной.
Рассмотрев эти изображения, человеку не составит труда отнести их к правильным классам.
Но сделать это с 2 триллионами известных галактик было бы сложно без помощи машинного обучения и интеллектуальных технологий, таких как глубокие нейронные сети, поэтому я собираюсь их использовать.
Легко представить, что вместо астрономических данных у нас есть медицинские, финансовые данные или данные Интернета вещей, и что нам нужно делать прогнозы, используя их.
Приложение
Представьте себе простое веб-приложение, которое загружает изображения галактик из папки, затем распределяет их по разным классам — спиральным и эллиптическим — а затем снова классифицирует их по классам внутри этих классов (например, является ли это обычной спиральной галактикой или галактикой, у которой есть структура в центре типа ручки).
Более того, он может невероятно быстро классифицировать огромное количество изображений.
Пример вывода:
Первые два столбца содержат эллиптические галактики, а остальные — различные спиральные галактики.
Так как же простое приложение может выполнить такую сложную классификацию?
Код такого приложения на самом деле совершает не так много действий; она лишь записывает пути к новым файлам для их распределения по классам в таблице базы данных (остальной код программы состоит из распределения итоговых данных, верстки страниц и т.п.).
SqlCommand Cmd = new SqlCommand("INSERT INTO [dbo].
[GalaxiesToScore] ([path] ,[PredictedLabel]) "
Что происходит в базе данных?
Часть, ответственная за прогнозирование и внедрение
Давайте посмотрим на таблицу, куда приложение записывает пути к файлам изображений.Он содержит столбец с путями к изображениям галактик и столбец для хранения ожидаемых классов галактик.
Как только в таблицу записывается новая строка данных, срабатывает триггер:
В свою очередь, триггер вызывает хранимую процедуру PredictGalaxiesNN, как показано ниже (с частью сценария R, встроенной в хранимую процедуру):
Вот где происходит волшебство — в нескольких строках кода 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, но я мог бы провести это и за его пределами.
Давайте посмотрим на хранимую процедуру с обучающим кодом.
Код для обучения
Обучение модели происходит в следующих строках кода:
Это новая функция rxNeuralNet из пакета MicrosoftML для обучения глубоких нейронных сетей.
Этот код похож на другие функции R и rx — он также содержит формулу, набор входных данных и некоторые другие параметры.
Одним из параметров, которые мы здесь видим, является строка netDefinition = netDefinition. Здесь определяется нейронная сеть.
Определение сети
Глубокая нейронная сеть определяется в этой части кода:
Здесь определяется глубокая нейронная сеть с использованием языка спецификации Net#, созданного специально для этой цели.
Нейронная сеть содержит 1 входной, 1 выходной и 8 скрытых слоев.
Он начинается с входного слоя размером 50x50 пикселей и графических данных RGB (3 глубины цвета).
Первый скрытый слой — это сверточный слой, где мы указываем размер ядра (небольшую часть изображения) и сколько раз ядро должно сопоставляться с остальными ядрами (свертка).
Существуют и другие слои для других типов сверток, а также для нормализации и управления запросами, которые помогают стабилизировать данную нейронную сеть.
И, наконец, выходной слой, который сопоставляет его с одним из 13 классов.
Используя около 50 строк спецификации Net#, я определил сложную нейронную сеть.
Руководство по Net# находится в разделе MSDN. Размер обучающих данных/GPU
Вот код R для обучения модели:
Хотелось бы поговорить еще о нескольких строках — 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: шпаргалка по алгоритмам.
Здесь .
Теги: #Машинное обучение #microsoft #sql #глубокое обучение #Microsoft SQL Server #sql-сервер
-
Странности С Php-Модулем Memcached
19 Oct, 24 -
Новая Система Комментариев В Google Docs.
19 Oct, 24 -
Интернет-Браузер Браузми
19 Oct, 24 -
3 Легендарных Харизматика
19 Oct, 24 -
Gradle: Управление Зависимостями
19 Oct, 24