Машинное обучение для чайников. Что такое машинное обучение? ПО, сотканное из данных Нейросети для автоматизации рутинных процессов и оптимизации сложных задач
Машинное обучение - класс методов искусственного интеллекта , характерной чертой которых является не прямое решение задачи, а обучение в процессе применения решений множества сходных задач. Для построения таких методов используются средства математической статистики, численных методов, методов оптимизации, теории вероятностей, теории графов, различные техники работы с данными в цифровой форме. По данным HeadHunter (данные 2018 года), специалисты по машинному обучению получают 130–300 тысяч рублей, и крупные компании ведут ожесточенную борьбу за них.
2019: 10 лучших языков программирования для машинного обучения - GitHub
В январе 2019 года сервис для хостинга ИТ-проектов и их совместного развития GitHub опубликовал рейтинг самых популярных языков программирования, используемых для машинного обучения (МО). Список составлен на основе количества репозиториев, авторы которых указывают, что в их приложениях используются МО-алгоритмы. Подробнее .
2018: Проблемы машинного обучения - IBM
27 февраля 2018 года технический директор IBM Watson Роб Хай (Rob High) заявил, что в настоящее время основная задача машинного обучения – ограничить объем данных, требующихся для обучения нейросетей . Хай полагает, что есть все основания считать эту проблему вполне разрешимой. Его мнение разделяют и коллеги: так руководитель разработки технологий искусственного интеллекта (ИИ) Google Джон Джаннандреа (John Giannandrea) заметил, что его компания также занята этой проблемой.
Как правило, модели машинного обучения работают с огромными массивами данных, чтобы гарантировать точность работы нейросети, однако во многих отраслях крупных баз данных просто не существует.
Хай, однако, считает, что это проблема разрешима, ведь мозг людей научился с ней справляться. Когда человек сталкивается с новой задачей, в ход идет накопленный опыт действий в подобных ситуациях. Именно контекстуальное мышление и предлагает использовать Хай. Также в этом может помочь технология переноса обучения (transfer learning), то есть возможность взять уже обученную ИИ-модель и использовать ее данные для обучения другой нейросети, данных для которой существенно меньше.
Однако проблемы с машинным обучением этим не ограничиваются, особенно если речь идет об естественной речи.
Хай отмечает, что ИИ не обязательно должен отражать эти аспекты в антропоморфной форме, однако какие-то ответные сигналы, например, визуальные, поступать должны. В то же время большинство ИИ должно для начала разобраться в сути вопросов и научиться ориентироваться в контексте, особенно в том, как данный вопрос связан с предыдущими.
Это указывает на следующую проблему. Многие из использующихся сейчас моделей машинного обучения по своей природе предвзяты, поскольку данные, по которым их обучали, ограничены. Что касается подобной предвзятости, то тут Хай выделяет два аспекта.
В качестве примера Хай привел совместный проект IBM и онкологического центра Sloan Kettering. Они подготовили ИИ-алгоритм, основанный на работе лучших онкологических хирургов.
Однако врачи онкологического центра Sloan Kettering придерживаются определенного подхода к лечению рака. Это их школа, их марка, и эта философия должна быть отражена в созданном для них ИИ и сохранена во всех последующих его поколениях, которые будут распространяться за пределами данного онкоцентра. Большая часть усилий при создании таких систем направлена на то, чтобы обеспечить верную избирательность данных. Выборка людей и их данных должна отражать более крупную культурную группу, к которой они принадлежат. |
Хай также заметил, что представители IBM наконец начали регулярно обсуждать эти проблемы с клиентами. По мнению Хая, это шаг в верном направлении, особенно если учесть, что многие его коллеги предпочитают игнорировать этот вопрос.
Опасения по поводу предвзятости ИИ разделяет и Джаннандреа. Осенью прошлого года он заявил, что боится не восстания разумных роботов, а предвзятости искусственного интеллекта. Эта проблема становится тем значительнее, чем больше технология проникает в такие области, как медицина или юриспруденция, и чем больше людей без технического образования начинают ее использовать.
2017
3% компаний используют машинное обучение - ServiceNow
В октябре 2017 года производитель облачных решений для автоматизации бизнес-процессов ServiceNow опубликовал результаты исследования, посвященного внедрению технологий машинного обучения в компаниях. Совместно с исследовательским центром Oxford Economics было опрошено 500 ИТ-директоров в 11 странах.
Выяснилось, что к октябрю 2017 года 89% компаний, сотрудники которых отвечали на вопросы аналитиков, в разной степени используют механизмы машинного обучения.
Так, 40% организаций и предприятий исследуют возможности и планируют стадии внедрения таких технологий. 26% компаний ведут пилотные проекты, 20% - применяют машинное обучение для отдельных областей бизнеса, а 3% - задействуют его для всей своей деятельности.
По словам 53% ИТ-директоров, машинное обучение является ключевым и приоритетным направлением, для развития которого компании ищут соответствующих специалистов.
К октябрю 2017 года наиболее высокое проникновение машинного обучения имеет место в Северной Америке: 72% компаний находятся на какой-либо стадии изучения, тестирования или использования технологий. В Азии этот показатель составляет 61%, в Европе - 58%.
Около 90% ИТ-директоров говорят, что автоматизация повышает точность и скорость принятия решений. По мнению больше половины (52%) участников опроса, машинное обучение помогает автоматизировать не только рутинные задачи (например, вывод предупреждений о киберугрозах), но и более сложные рабочие нагрузки, такие как способы реагирования на хакерские атаки.
Выше представлена диаграмма, показывающая степень автоматизации различных областей в компаниях в 2017 году и с прогнозом на 2020 год. К примеру, в 2017-м около 24% операций в сфере информационной безопасности полностью или в значительной степени автоматизированы, а в 2020 году показатель может вырасти до 70%.
Самая многообещающая технология. Чем вызвано всеобщее помешательство на машинном обучении?
Машинное обучение, по мнению аналитиков, является самым многообещающим технологическим трендом современности. Как возникла эта технология и почему стала столь востребованной? На каких принципах строится машинное обучение? Какие перспективы открывает для бизнеса? Ответы на эти вопросы дает материал, который для TAdviser подготовил журналист Леонид Черняк.
Почему обучение моделей настолько сложное?
Представьте, что я обучаю машину, используя группу людей... и здесь золотое правило состоит в том, что они должны быть в равной степени заинтересованы и ознакомлены с процессом, так что, скажем, я не могу взять пять программистов и четырех вчерашних студентов... Нужно стараться подбирать людей либо совершенно в случайном порядке, либо по одинаковым интересам. Есть два способа сделать это. Вы показываете им много, очень много картинок. Вы показываете им изображения гор вперемежку с фотографиями верблюдов, а также изображения предметов, которые практически в точности похожи на горы, например, мороженое в вафельном стаканчике. И вы просите их сказать, что из этих предметов можно назвать горой. При этом машина наблюдает за людьми и на основании их поведения в процессе выбора изображений с горами она также начинает выбирать горы. Такой подход называется эвристическим, - пишет автор PCWeek Майкл Кригсман |
Мы смотрим на людей, моделируем их поведение путем наблюдения, а затем пытаемся повторить то, что они делают. Это вид обучения. Такое эвристическое моделирование представляет собой один из способов машинного обучения , однако это не единственный способ.
Но существует множество простых приемов, с помощью которых эту систему можно обмануть. Прекрасный пример - распознавание человеческих лиц. Посмотрите на лица разных людей. Наверное, всем известно, что существуют технологии для моделирования на основе определенных точек на лице, скажем, уголков глаз. Не хочу вдаваться в интеллектуальные секреты, но есть некоторые области, между которыми можно построить углы, и эти углы обычно не особо меняются со временем. Но вот вам показывают фотоснимки людей с широко открытыми глазами или гримасами в области рта. Такие люди пытаются сбить эти алгоритмы с толку, искажая черты своего лица. Вот почему вам нельзя улыбаться на фотографии в паспорте. Но машинное обучение уже ушло далеко вперед. У нас есть такие средства, как Eigenface, и другие технологии для моделирования поворота и искажения лиц, позволяющие определить, что это одно и то же лицо.
Со временем эти инструменты становятся все лучше. И порой, когда люди пытаются запутать процесс обучения, мы также учимся на их поведении. Так что этот процесс саморазвивающийся, и в этом плане идет постоянный прогресс. Рано или поздно цель будет достигнута, и да, машина будет находить только горы. Она не пропустит ни одной горы и никогда не будет сбита с толку стаканчиком мороженого.
Чем это отличается от классического программирования?
Изначально этот процесс происходил в игровой форме или заключался в идентификации изображений. Тогдашние исследователи просили участников играть в игры или помогать в обучении простыми утверждениями вроде «Это гора», «Это не гора», «Это гора Фудзи», «Это гора Килиманджаро». Так что у них накопился набор слов. У них была группа людей, использовавших слова для описания изображений (например, в проекте
Машинное обучение – одна из самых популярных областей Computer Science, хотя в то же время одна их самый избегаемых среди разработчиков. Основная причина этого в том, что теоретическая часть машинного обучения требует глубокой математической подготовки, которую многие предпочитают сразу же забыть по окончании университетского обучения. Но необходимо понимать, что помимо теоретических основ, существует также и практическая сторона, которая оказывается значительно проще для освоения и ежедневного использования. Цель этой работы – ликвидировать разрыв между программистами и специалистами по обработке данных и показать, что использование машинного обучения в своих приложениях может быть достаточно простой задачей. В статье излагается вся последовательность шагов, необходимая для построения модели предсказания цены автомобиля в зависимости от набора его характеристик с последующим ее использованием в мобильном приложении на Windows 10 Mobile.
Что такое Azure ML?
Если кратко, то Azure Machine Learning – это:
- облачное решение, позволяющее построение и использование сложных моделей машинного обучения в простой и наглядной форме;
- экосистема, предназначенные для распространения и монетизации готовых алгоритмов.
Почему именно Azure ML?
Потому, что Azure Machine Learning – один из простейших инструментов для использования машинного обучения, убирающий входной барьер для всех, кто решает использовать его для своих нужд. С Azure ML больше не надо быть математиком.
Логический процесс построения алгоритма машинного обучения
- Определение цели. Все алгоритмы машинного обучения бесполезны без явно-определенной цели проведения эксперимента. В данной лабораторной работе цель – это предсказание цены автомобиля на основе набора характеристик, предоставленных конечным пользователем.
- Сбор данных.
Во время этого этапа формируется выборка данных, необходимая для дальнейшего обучения модели. В данном случае будут использоваться данные репозитария машинного обучения университета Калифорнии.
archive.ics.uci.edu/ml/datasets/Automobile - Подготовка данных. На этом этапе производится подготовка данных путем формирования характеристик, удаления выбросов и разделения выборки на обучающую и тестовую.
- Разработка модели. В процессе разработки модели производиться выбор одного или нескольких моделей данных и соответствующих алгоритмов обучения, которые по мнению разработчика должны будут дать требуемый результат. Часто этот процесс совмещен с параллельным исследованием эффективности нескольких моделей и визуальным анализом данных с целью отыскания каких-либо закономерностей.
- Обучение модели. Во время обучения алгоритм обучения производит поиск скрытых закономерностей в выборке данных с целью отыскания способа предсказания. Сам процесс поиска определяется выбранной моделью и алгоритмом обучения.
- Оценка модели. После того как модель обучена необходимо исследовать ее прогностические характеристики. Чаще всего для этого ее прогоняют на тестовой выборке и оценивают получившийся уровень ошибки. В зависимости от этого и требований к точности модель может быть как принята в качестве итоговой, так и произведено повторное обучение после добавления новых входных характеристик или даже изменения алгоритма обучения.
- Использование модели. В случае успешного тестирования обученной модели наступает стадия ее использования. И это тот случай, когда Azure ML становится незаменим, давая все необходимые инструменты для публикации, мониторинга и монетизации алгоритмов
Построение прогностической модели
На открывшейся странице нажмите Get Started now.
Для работы с Azure ML вам необходима активная подписка Microsoft Azure. Если она у вас уже есть, то просто войдите в Azure Management Portal, иначе – предварительно зарегистрируйте бесплатную пробную учетную запись, перейдя по ссылке .
В первую очередь необходимо загрузить обучающую выборку. Для этого перейдите по ссылке и загрузите на свой компьютер файл imports-85.data, содержащий выборку данных по автомобилям.
Для загрузки этого файла в Azure ML Studio нажмите на New в нижней части страницы и в открывшейся панели последовательно выберите Dataset и From Local File. В меню загрузки укажите путь к загруженному файлу, название и в качестве типа выберите Generic CSV File with no header (.hn.csv).
Создание нового эксперимента
Для того чтобы создать новый эксперимента выберите New -> Experiment -> Blank Experiment. В результате будет создана новая рабочая область эксперимента с панелью инструментов справа.
Определение выборки данных
Загруженные ранее данные должны быть отражены в разделе Saved Datasets слева. Выберите его и перетащите в любое место рабочего пространства, например, туда, куда указывает стрелка Drag Items Here.
Обратите внимание, что источник данных имеет точку соединения в форме кружка, которая используется для подключение его к другим компонентам.
Подготовка данных
При разработке моделей машинного обучения хорошей практикой является проверка предварительных результатов эксперимента после каждого изменения. Поэтому нажмите правой кнопкой на точку соединения и выберите Visualize. В результате появится окно, дающее общее представление о данных и их распределении.
Как можно заметить, в выборке имеется проблема – отсутствуют значения во втором столбце. Это может создать нежелательный эффект в процессе обучения и значительно ухудшить качество модели. Но, к счастью, эти значения характеризует страховые издержки и слабо связаны с ценой автомобиля, а потому их можно удалить. Помимо всего прочего у столбцов отсутствуют имена, что значительно усложняет работу с ними.
Для исправления проблемы с именами из группы Data Transformation/Manipulation перенесите на рабочую поверхность Metadata Editor.
Перетяните выход (снизу) выборки данных на вход (сверху) нового компонента, чтобы соединить их. Теперь кликните на него, чтобы открыть окно настроек справа. Metadata Editor позволяет изменить метаинформацию одного или нескольких столбцов, включая тип или название. Откройте мастер выбора столбцов нажатием на Launch column selector. Чтобы выбрать все столбцы, в поле Begin With выберите All columns, удалите строку уточнения выбора нажатием на знак “-“ справа и подтвердите нажатием на галочку.
В поле New column names панели настроек введите новые имена столбцов через запятую, которые можно найти в файле import-85.names по ранее приводившейся ссылке. Значение поля должно быть следующим:
symboling,normalized-losses,make,fuel-type,aspiration,num-of-doors,body-style,drive-wheels,engine-location,wheel-base,length,width,height,curb-weight,engine-type,num-of-cylinders,engine-size,fuel-system,bore,stroke,compression-ratio,horsepower,peak-rpm,city-mpg,highway-mpg,price
Для того, чтобы увидеть результат работы компонента, нажмите на Run снизу и визуализируйте выход Metadata Editor описанным ранее способом.
Теперь удалим normalized-losses. Для этого перетащите в рабочую область Project Columns из той же группы, соедините его с Metadata Editor и перейдите к его настройкам. Снова выберите мастер выбора строк и в этот раз выберите все строки за исключением normalized-losses, сделав настройки, аналогичные приведенным на рисунке ниже.
Запустите эксперимент и визуализируйте результат, чтобы убедиться, что второй столбец пропал из выборки.
К сожалению, есть еще столбцы, в которых отсутствуют значения. Но их не много, а потому можно ограничиться лишь отбрасыванием неполных строк. Для этого выберите Missing Value Scrubber и соедините его с Project Columns. В поле For missing values измените значение на Remove entire row. Запустите, визуализируйте и убедитесь, что строки с пустыми значениями пропали.
Остался последний вопрос, который необходимо ответить на этапе подготовки: все ли характеристики влияют на цену автомобиля? На данном этапе можно ограничиться следующим небольшим числом показателей, список которых приведен ниже. В дальнейшем вы всегда сможете добавить новые и проверить гипотезу об их достаточности, сравнив точность полученных моделей.
make,body-style,wheel-base,engine-size,horsepower,peak-rpm,highway-mpg,num-of-cylinders,price
Добавьте новый Project Columns и выберите приведенные выше столбцы.
В заключение убедитесь, что подготовка данных выполняется успешно, запустив эксперимент и визуализировав результат.
Разбивка выборки
Теперь данные готовы к использованию в процессе обучения. Но в машинном обучении возможен эффект, получивший название «переобучение», – заучивание моделью данных без обобщения. Такое поведение ведет к невозможности адекватного предсказания на сколько-нибудь отличающихся данных. Для обработки этой ситуации выборку принято разделить на обучающую и тестовую в отношении близком к 3:1. Последняя из них никак не участвует в процессе обучения и по окончании используется для оценки ошибки предсказания. Если эта ошибка значительно отличается в большую сторону от ошибки на обучающей выборке, значит, наблюдается описанный выше эффект.
Для создания тестовой выборки перенесите на рабочую область эксперимента и соедините с последним Project Columns компонент Split Data из группы Data Transformation/Sample and Split. Установите долю строк на первом выходе равной 0.75 и убедитесь, что установлен флаг Randomize Split.
Обучение модели линейной регрессии
Первым делом перенесите из панели инструментов компоненты Linear Regression, Train Model, Score Model и Evaluate Model. Train Model – универсальный компонент, позволяющий обучение любой модели на любой обучающей выборке. Для настройки нашего конкретного случая подсоедините первый (левый) выход Split Data и выход Linear Regression к соответствующим входам Train Model. В настройках Train Model в качестве целевого значения (outcome column) укажите price. Теперь модель готова к обучению.
Но, помимо самого обучения, важно узнать результат обучения. Компонент Score Model позволяет вычислить выход обученной модели на произвольной выборке и рассчитать результат предсказания. Соедините выход Train Model, содержащий обученную модель, с соответствующим входом Score Model, а в качестве выборки данных на другой вход подайте тестовую выборку со второго выхода Split Data. Выход Score Model соедините с любым из входов Evaluate Model для того, чтобы рассчитать численные характеристики качества обучения. В результате должна получиться процесс, аналогичный представленному на рисунке.
Запустите модель и визуализируйте результат выполнения Evaluate Model.
Коэффициент детерминации указывает, как хорошо линия регрессии описывает исходные данные. Принимаемые ей значения варьируются от 0 до 1, где единице соответствует абсолютная точность. В нашем случае коэффициент равен 82%. Хороший ли это результат или нет – напрямую зависит от постановки задачи и определенной толерантности к ошибке. Для случая предсказания цены автомобиля 82% - отличный результат. Если вы хотите его улучшить попробуйте добавить другие столбцы в Project Columns или попробовать принципиально другой алгоритм. Например, Poisson Regression. Последнее может быть достигнуто путем простой замены компонента линейной регрессии на пуасонову. Но более интересный подход – это собрать из элементов параллельное обучение и подключить результат ко второму выходу Evaluate Model, что позволит в удобной форме сравнить результаты обучения обоих моделей.
Выполните модель и визуализируйте результат. Как видно из результата, данные значительно лучше описываются моделью линейной регрессии, а потому есть все основания выбрать именно ее в качестве итоговой.
Кликните правой кнопкой по мыши по компоненту Train Model, отвечающему линейной регрессии и выберите Save as Trained Model. Это позволит использовать полученную модель в любых других экспериментах без необходимости повторного обучения.
Публикация веб-сервиса
Для публикации сервиса выберите компонент Train Model, отвечающий линейной регрессии и нажмите в Set Up Web Service. В открывшемся меню выберите Predictive Web Service и дождитесь пока Azure ML создаст новый эксперимент, оптимизированный для нужд сервиса. Удалите автоматически созданные компоненты Web Service Input и Web Service Output – мы создадим их позднее после небольшой подготовки.
На данный момент элемент Score Model повторяет на выходе все входящие столбцы, а предсказанному значению дает название Score Labels. Это необходимо исправить.
Для этого перенесите из панели инструментов на рабочую поверхность два уже знакомых компонента: Project Columns и Metadata Editor. И соедините их в последовательности изображенной на рисунке ниже. В настройках Project Columns выберите только один столбец Score Labels, и используя Metadata Editor переименуйте его в price.
В заключение необходимо добавить вход и выход создаваемого сервиса. Для этого добавьте в эксперимент Web Service Input и Web Service Output. Соедините первый со входом Score Model, а второй с выходом Metadata Editor. В настройках обоих элементов измените название на «input» и «prediction», соответственно.
Запустите модель еще раз, нажав на Run, и по окончании валидации опубликуйте сервис нажатием Deploy Web Service.
Тестирование сервиса
После нажатия на Deploy Web Service вы будете перенаправлены на страницу с информацией о только что созданном сервисе. Ссылки под API HELP PAGE содержат достаточно подробное описание с информацией о содержимом входящего и исходящего JSON пакетов, а также пример кода консольного приложения, дающего преставление о способе использования.
Для интерактивного исследования нажмите на Test и в открывшемся окне введите значения для каждого входного параметра. Например, те, что указаны ниже, и нажмите галочку, чтобы отправить тестовый запрос.
audi sedan 99.8 four 109 102 5500 30 13950
Разработка приложения
В заключение рассмотрим процесс разработки мобильного приложения, использующего Azure ML в роли back-end сервиса. Сначала создайте новый проект универсального приложения Windows. Для этого в открытом Visual Studio 2015 выберите File -> New -> Project… В открывшемся окне перейдите на вкладку Windows в меню слева и выберите Blank App (Universal Windows). В поле названия введите AzureMLDemo и нажмите OK. В случае необходимости готовый проект может быть найден на GitHub .
После некоторой подготовки Visual Studio откроет новый проект универсального приложения. Убедитесь, что в поле процессорной архитектуры справа от Debug указано x86, и правее выберите одну из мобильных виртуальных машин в качестве среды запуска. Например, Mobile Emulator 10.0.10240.0 720p 5 inch 1GB.
Теперь можно перейти к написанию самого приложения. В меню Solution Explorer двойным кликом откройте MainPage.xaml. Описание языка разметки XAML графического интерфейса выходит за границы этой работы, поэтому просто замените открывающийся и закрывающийся теги
Несмотря на всю кажущуюся сложность этот код создает достаточно простую разметку, необходимую для ввода пользовательских данных. Каждый элемент ввода одного из параметров модели имеет название вроде tbxMake, txbBodyStyle и т.п. Под ними находится кнопка Get Estimate, отвечающая за отправку сообщения к сервису Azure ML, а завершается все элементом tbResult, в который и будет помещаться результат вызова.
Запустите приложение нажатием на Debug -> Start Debugging, чтобы убедиться, что все было сделано правильно, проект компилируется и запускается. Проверьте, что изменение положения слайдеров приводит к соответствующему изменению численного значения справа от них.
Остановите сессию отладки нажатием на Debug -> Stop Debugging.
Определение программной логики
Теперь необходимо определить код обработки нажатия на кнопку Get Estimate. В Solution Explorer разверните MainPage.xaml и кликните дважды по MainPage.xaml.cs, чтобы открыть Code-behind файл этого графического интерфейса.
Первым делом следует подключить несколько требуемых библиотек. Для этого кликните правой кнопкой мыши по имени проекта и выберите Manage Nuget Packages… В открывшемся меню сделайте поиск по WebApi.Сlient и установите пакет с названием Microsoft.AspNet.WebApi.Client.
После этого добавьте в начало файла следующие дополнительные объявления using:
Using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;
using System.Threading.Tasks;
public sealed partial class MainPage: Page
{
const string _apiKey = @"
Ключ доступа можно найти на Dashboard странице вашего сервиса, а адрес запроса на странице помощи REQUEST/RESPONSE, ссылка на которую приведена немного ниже.
Следующим шагом добавим вспомогательную функцию, которая будет осуществлять запрос к сервису Azure ML. В соответствии с документацией, приведенной на той же странице помощи REQUEST/RESPONSE для получения ответа мы должны выполнить следующую последовательность действий: сформировать запрос, отправить его в сторону сервиса POST-запросом протокола HTTP и обработать ответ.
Создайте функцию CallAzureML, принимающую на вход значения всех параметров модели и возвращающую значение типа float c оценкой цены. Async Task здесь отвечает реализации паттерна async/await, значительно упрощающего работу с асинхронными вызовами в приложении (дополнительная информация может быть найдена ).
Private async Task
Также для упрощения работы с JSON мы будем использовать библиотеку Newtonsoft.Json. Отличительной ее особенностью является то, что она позволяет взаимодействовать с JSON-объектами через удобную абстракцию в виде обычных объектов уровня.NET. Поместите в начало метода следующий код.
Var requestBody = new
{
Inputs = new Dictionary
Здесь структура JSON-объекта запроса воссоздается с помощью анонимного класса и полностью (с учетом регистра) повторяет структуру ожидаемого запроса. Для сравнения пример такого запроса со страницы REQUEST/RESPONSE представлен ниже.
{
"Inputs": {
"input": {
"ColumnNames": [ "make", "body-style", “wheel-base", "num-of-cylinders",
"engine-size", "horsepower", "peak-rpm", "highway-mpg",
"price" ],
"Values": [
[ "value", "value", "0", "value", "0", "0", "0", "0", "0" ],
[ "value", "value", "0", "value", "0", "0", "0", "0", "0" ]
]
}
},
"GlobalParameters": {}
}
Следующим шагом является выполнение запроса к самому сервису. Для этого добавьте следующий код в разрабатываемый метод.
Try
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("bearer", _apiKey);
client.BaseAddress = new Uri(_requestUri);
var response = await client.PostAsJsonAsync("", requestBody);
if (response.IsSuccessStatusCode)
{
// succeeded
throw new NotImplementedException();
}
else
{
// failed
throw new NotImplementedException();
}
}
}
catch (Exception e)
{
throw;
}
Первым делам создается HTTP-клиент и устанавливается вся информация необходимая для успешного подключения к сервису в Azure ML: адрес и ключ доступа. Далее осуществляется POST-запрос в сторону сервиса с JSON-объектом, созданным ранее. Успешность вызова проверяется по коду состояния HTTP.
Замените код в области отмеченной комментарием succeeded на представленный ниже. В нем последовательно происходит получение ответа сервера в виде строки, ее разбор в динамический объект с помощью конвертера Newtonsoft.Json с последующим извлечением информации о цене. Пример ответа сервера для сравнения может быть найден в разделе «Тестирование сервиса».
Var responseContent = await response.Content.ReadAsStringAsync();
var val = JsonConvert.DeserializeObject
В случае ошибочного состояния метод должен вернуть максимум информации. Поэтому как и в прошлом случае в виде строки извлекается содержимое запроса, но в этот раз оно последовательно преобразуется в объект и обратно в строку. Это необходимо для того, чтобы добавить отступы, позволяющее более удобное чтения его содержимого. Замените код в области, отмеченной комментарием failed на приведенный ниже.
Var responseContent = await response.Content.ReadAsStringAsync();
var responseObject = JsonConvert.DeserializeObject(responseContent);
var formattedResponseContent =
JsonConvert.SerializeObject(responseObject, Formatting.Indented);
var message = String.Format("Server returned status code {0} with message {1}",
response.StatusCode, formattedResponseContent);
throw new InvalidDataException(message);
Метод вызова к Azure ML можно считать завершенным. Как можно заметить его реализация достаточно проста, хотя за ней и строит целый процесс по реализации статистической модели данных, алгоритма обучения и способа оценки произвольного оценки входного вектора. Достаточно сложные математические теории умещаются в пару строк программного кода.
В заключение необходимо реализовать обработчик события нажатия кнопки Get estimate. Первым делом перейдите в MainPage.xaml и добавьте в XML-тег кнопки GetEstimate информацию об обработчике событий.
Вернитесь в MainPage.xaml.cs и создайте соответствующий метод. Он вызывает созданный ранее метод для обращения к сервису Azure ML и устанавливает результат в tbResult.
Private async void GetEstimate_Click(object sender, RoutedEventArgs e)
{
try
{
var price = await CallAzureML(tbxMake.Text, tbxBodyStyle.Text,
slWheelBase.Value, tbxNumberOfCylinders.Text,
(int)slEngineSize.Value, (int)slHorsepowers.Value,
(int)slPeakRPM.Value, (int)slHighwayMPG.Value);
tbResult.Text = String.Format("You are lucky!\n" +
"Today it is as cheap as {0:c}. Don"t miss your chance!", price);
}
catch (Exception ex)
{
// Shows error in result TextBlock
tbResult.Text = String.Format("Oops! Something went wrong.\n" +
"This can be helpful:\n{0}", ex.ToString());
}
}
Все, приложение готово. Запустите его и поэкспериментируйте с оценкой стоимости автомобиля при различных наборах характеристик.
Заключение
Azure Machine Learning – это новый высокопродуктивный инструмент для работы с алгоритмами машинного обучения. Возможно, это даже единственная среда, которая позволяет так легко опубликовать свои алгоритмы в виде отдельного сервиса и в последствии использовать их в своих приложениях. В этой работе использовался один из простейших алгоритмов обучения – алгоритм линейной регрессии. В Azure ML доступны еще десятки других, созданных учеными для самых разных целей. И самое важное, что для их использования совсем нет необходимости быть математиком. Достаточно с помощью компонентов собрать необходимый процесс обработки данных, провести несколько экспериментов и в случае успеха опубликовать все в виде сервиса.
Вот еще несколько выборок данных, на которых можно поэкспериментировать:
Добавить метки
Термин «машинное обучение», скорее всего, встречался вам не раз. Хотя его нередко используют как синоним искусственного интеллекта, на самом деле машинное обучение – это один из его элементов. При этом оба понятия родились в Массачусетском технологическом институте в конце 1950-х годов.
Сегодня вы сталкиваетесь с машинным обучением каждый день, хотя, возможно, и не знаете этого. Голосовые помощники Siri и Google, распознавание лиц в Facebook и Windows 10, рекомендации в Amazon, технологии, не позволяющие автомобилям-роботам натыкаться на препятствия, созданы благодаря прогрессу машинного обучения.
До человеческого мозга системам машинного обучения еще очень далеко, но они уже имеют в активе впечатляющие достижения – например, победу над людьми в шахматах, настольной игре го и покере.
В последние несколько лет развитие машинного обучения получило резкий толчок благодаря ряду технологических прорывов, росту доступной вычислительной мощности и изобилию учебных данных.
Самообучающееся программное обеспечение
Так что же такое машинное обучение? Начнем с того, чем оно не является. Это не обычные компьютерные программы, написанные вручную.
В отличие от традиционного ПО, которое прекрасно справляется с выполнением инструкций, но не способно к импровизации, системы машинного обучения по сути программируют сами себя, самостоятельно разрабатывая инструкции путем обобщения известных сведений.
Классический пример – распознавание образов. Покажите системе машинного обучения достаточное количество снимков собак с пометкой «собака», а также кошек, деревьев и других объектов, помеченных «не собака», и она со временем начнет хорошо отличать собак. И для этого ей не нужно будет объяснять, как именно те выглядят.
Спам-фильтр в вашей почтовой программе – хороший пример машинного обучения в действии. После обработки сотен миллионов образцов нежелательных и нужных сообщений система обучается выделять типичные признаки спамерских писем. Она справляется с этим не идеально, но довольно эффективно.
Обучение с учителем и без
Упомянутый вид машинного обучения называется обучением с учителем. Это значит, что кто-то познакомил алгоритм с огромным объемом учебных данных, просматривая результаты и корректируя настройки до тех пор, пока не была достигнута нужная точность классификации данных, которые система еще не «видела». Это то же самое, что нажимать кнопку «не спам» в почтовой программе, когда фильтр случайно перехватывает нужное вам сообщение. Чем чаще вы это делаете, тем точнее становится фильтр.
Типичные задачи обучения с учителем – классификация и прогнозирование (или регрессионный анализ). Распознавание спама и образов – задачи классификации, а прогнозирование котировок акций – классический пример регрессии.
При обучении без учителя система просматривает гигантские объемы данных, запоминая, как выглядят «нормальные» данные, чтобы получить возможность распознавать аномалии и скрытые закономерности. Обучение без учителя полезно, когда вы точно не знаете, что именно ищете, – в этом случае систему можно заставить вам помочь.
Системы обучения без учителя могут обнаруживать закономерности в огромных объемах данных гораздо быстрее, чем люди. Именно поэтому банки используют их для выявления мошеннических операций, маркетологи – для идентификации клиентов со схожими атрибутами, а ПО безопасности – для распознавания вредоносной активности в сети.
Примеры задач обучения без учителя – кластеризация и поиск правил ассоциации. Первая применяется, в частности, для сегментации клиентов, а на поиске правил ассоциации основаны механизмы выдачи рекомендаций.
Словарь терминов
Машинное обучение – лишь верхушка айсберга искусственного интеллекта. Среди других терминов, тесно связанных с ним, – нейронные сети, глубинное обучение и когнитивные вычисления.
Нейронная сеть. Это компьютерная архитектура, имитирующая структуру нейронов головного мозга; каждый искусственный нейрон соединяется с другими. Нейронные сети выстроены слоями; нейроны на одном слое передают данные множеству нейронов на следующем и т. д., пока не будет достигнут выходной слой. Именно на последнем слое сеть выдает свои догадки – скажем, на что похож тот объект в форме собаки, – сопровождая ответ рейтингом уверенности.
Существуют разные типы нейронных сетей для решения разных видов задач. Сети с большим числом слоев называются глубинными. Нейросети – один из самых важных инструментов машинного обучения, но не единственный.
Глубинное обучение. Это, по сути, машинное обучение «на стероидах» – использование многослойных (глубинных или глубоких) сетей для принятия решений на основе неточной или неполной информации. Система глубокого обучения DeepStack в декабре прошлого года обыграла 11 профессиональных игроков в покер путем перерасчета стратегии после каждого раунда ставок.
Когнитивные вычисления. Это термин, придуманный в IBM создателями суперкомпьютера Watson. Разницу между когнитивными вычислениями и искусственным интеллектом в IBM видят в том, что первые не заменяют человеческий разум, а дополняют его: например, помогают врачам ставить более точные диагнозы, финансовым консультантам – выдавать более обоснованные рекомендации, юристам – быстрее находить подходящие прецеденты и т. п.
Ограничения машинного обучения
Каждая система машинного обучения создает собственную схему связей, представляя собой нечто вроде черного ящика. Вы не сможете путем инженерного анализа выяснить, как именно выполняется классификация, но это и не имеет значения, главное, чтобы работало.
Однако система машинного обучения хороша лишь настолько, насколько точны учебные данные: если подать ей на вход «мусор», то и результат будет соответствующим. При неправильном обучении или слишком малом размере обучающей выборки алгоритм может выдавать неверные результаты.
HP попала в неприятную ситуацию в 2009 году, когда система идентификации лиц для веб-камеры на ноутбуке HP MediaSmart оказалась неспособной распознавать лица афроамериканцев. А в июне 2015 года некачественный алгоритм сервиса Google Photos назвал двух черных американцев «гориллами».
Еще один пример – печально знаменитый Twitter-бот Microsoft Tay, с которым в 2016 году поставили эксперимент: тогда попытались выяснить, сможет ли искусственный интеллект «притвориться» человеком, обучившись на реальных сообщениях от людей. Меньше чем за день тролли в Twitter превратили Tay в отъявленного ксенофоба – вот вам типичный пример испорченных учебных данных.
***
Итак, несмотря на весь шум вокруг искусственного интеллекта, не будет преувеличением сказать, что машинное обучение и связанные технологии действительно меняют мир вокруг нас, причем настолько быстро, что, того и гляди, машины обретут полное самосознание.
− Dan Tynan. What is machine learning? Software derived from data. InfoWorld. August 9, 2017
«Газпром нефть» будет пользоваться искусственным интеллектом «Яндекса»
Используя технологии Больших Данных, машинного обучения и искусственного интеллекта, «Газпром нефть» и «Яндекс» планируют вести бурение скважин, осуществлять моделирование технологических процессов нефтепереработки, оптимизировать другие производственные процессы.
Заключенное компаниями соглашение предполагает проведение специалистами Yandex Data Factory независимой экспертизы существующих технологических решений, совместную разработку и реализацию научно-исследовательских и технологических проектов, обмен научно-технической информацией, знаниями и обучение сотрудников.
Нефтегазовая отрасль – одна из наиболее перспективных с точки зрения использования новых технологий, поскольку в ней накоплены большие объемы данных, а простые решения по оптимизации производства и бизнеса давно применены. Тем самым созданы хорошие возможности для получения ощутимого эффекта от внедрения решений на основе машинного обучения и искусственного интеллекта.
Хоккейная аналитика в Azure
Российская компания Iceberg Sports Analytics представила решение iceberg.hockey, реализованное на платформе Microsoft Azure. Оно позволяет сделать управление хоккейными клубами более эффективным, повысить шансы на победу и оптимизировать использование бюджета команды.
В iceberg.hockey используются собственные алгоритмы, созданные специально для хоккея на основе технологий продвинутой аналитики, машинного обучения и компьютерного зрения. Система предназначена для менеджеров и тренеров хоккейных клубов. По каждой игре решение создает порядка миллиона строк данных, с помощью трех видеокамер фиксируя все, что происходит на поле каждую десятую долю секунды: это порядка 500 параметров по каждому игроку. Разработчикам удалось добиться высокой точности анализа данных: погрешность составляет не более 4%. Анализ помогает получать информацию об оптимальном сочетании игроков, технике игры конкретных спортсменов, звеньев и команды в целом.
Среди клиентов компании уже есть New York Islanders и ХК «Сочи», а также австрийская хоккейная академия RedBull.
«Хлынов» оптимизировал обслуживание банкоматов
Банк «Хлынов» изменил обслуживание банкоматов, задействуя сервисы машинного обучения из облака Microsoft Azure. В результате банк получил возможность использовать ранее «замороженные» 250 млн руб.
Поскольку клиентская сеть банка постоянно развивается, требуются новые подходы к хранению денежных средств клиентов и работе с ними. На старте проекта среднемесячный остаток на картах «Хлынов» составлял порядка 800 млн руб. Треть этих денег резервировалась в банкоматах для снятия держателями карт.
Применение сервисов машинного обучения из облака Microsoft Azure позволило банку снизить объем резервируемых денежных средств в банкоматах до 16-20% от среднемесячного остатка на картах: он возрос до 1,2 млрд руб., а резервируемая сумма составила 200-230 млн руб. Освободившиеся средства банк смог направить на другие операционные задачи, в частности на кредитование своих клиентов.
Созданный совместно с интегратором «Рубикон» алгоритм, задействующий методы машинного обучения, позволил банку сократить число ежемесячных инкассаторских выездов более чем в 1,5 раза. Каждый из таких выездов обходится в 3 тыс. руб., а каждая перевозимая тысяча рублей облагается комиссией 0,026%.
В ближайшем будущем банк «Хлынов» планирует внедрить дополнительные инструменты прогнозной аналитики из облака Microsoft Azure для продуктивного использования информации, накопленной за более чем 25 лет работы с клиентами.
MoneyСare использует машинное обучение для прогнозирования одобрения кредитов
Независимый кредитный брокер MoneyCare создал модель прогнозирования на основе облачного сервиса Microsoft Azure Machine Learning. Решение позволяет оценить вероятность положительного ответа банка на запрос кредита.
Для лучшей конверсии кредитных заявок компания решила сократить количество анкетных данных до минимально необходимых, а также создать модель, прогнозирующую вероятность положительного ответа банка. Определение минимального набора данных и построение прототипа компания MoneyCare доверила экспертам Columbus.
Выбирая платформу машинного обучения, специалисты MoneyCare остановились на облачном сервисе Azure Machine Learning, который позволяет оперативно создавать и развертывать полнофункциональные прогнозные модели в качестве решений аналитики.
На первом этапе проекта был создан прототип классификатора в Azure Machine Learning, задача которого – отбор более 60% заявок на кредит с вероятностью одобрения свыше 80%. При этом были использованы такие методы, как дискриминантный анализ, регрессионный анализ, кластеризация, классификация на основе разделимости, а также алгоритмы сокращения размерности.
Вторым этапом проекта стали обучение сотрудников MoneyCare принципам работы и совместный воркшоп по совершенствованию прототипа. Проводилось консультирование по настройке моделей, типовым задачам машинного обучения, а также определялись следующие шаги по улучшению прототипа.
Правительство Мурманской области применит машинное обучение в документообороте
Кафедра технологии программирования СПбГУ совместно с компанией «Диджитал Дизайн» исследовала возможность применения в системах электронного документооборота алгоритмов машинного обучения. Объектом исследования стала СЭД Правительства Мурманской области. В качестве базы данных были использованы более 250 тыс. обезличенных документов служебной переписки.
Проверялась возможность использования в СЭД интеллектуальных алгоритмов, повторяющих принципы нейронной сети. Основные задачи такой сети – определение категории документа, автоматическое заполнение его основных атрибутов, определение на основании анализа текста прикрепленного файла наиболее вероятных исполнителей и создание для них проектов текстов поручений.
Было определено, что, используя интеллектуальные алгоритмы, можно автоматизировать сортировку документов по содержимому прикрепленных файлов и составить семантическое ядро для каждой категории, искать схожие или идентичные документы, определять зависимости одних атрибутов документа от других и даже автоматизировать построение вероятностной модели предсказания значений атрибутов. В ходе исследования удалось достигнуть 95-процентной точности при определении категории документа по содержанию текста. На следующем этапе будет проведено тестирование на узкой группе ключевых пользователей СЭД Правительства Мурманской области, обрабатывающих большие объемы документов.
Нам приходится ежедневно сталкиваться с задачами по учету и обработке обращений клиентов. За долгие годы работы у нас накопилось большое количество задокументированных решений, и мы задумались, как можно использовать этот объем знаний. Мы пытались составлять базу знаний, использовать встроенный в Service Desk поиск, но все эти методики требовали больших усилий и ресурсов. В итоге наши сотрудники чаще пользовались интернет-поисковиками, чем собственными решениями, что мы, естественно, не могли так оставить. И нам на выручку пришли технологии, которых 5-10 лет назад ещё не было, однако сейчас они имеют достаточное распространение. Речь пойдет о том, как мы применяем машинное обучение для устранения проблем клиентов. Мы использовали алгоритмы machine learning в задаче поиска похожих, уже возникавших ранее инцидентов, для применения их решений к новым инцидентам.
Задача оператора Help desk
Help desk (Service Desk) - система учета и обработки обращений пользователей, в которых содержатся описания неисправностей технического характера. Работа оператора Help desk заключается в обработке таких обращений: он дает инструкции по устранению неполадок или же устраняет их лично, через удаленный доступ. Однако рецепт устранения проблемы сперва нужно составить. При этом, оператор может:
- Воспользоваться базой знаний.
- Использовать встроенный в Service desk поиск.
- Составить решение самостоятельно, исходя из своего опыта.
- Использовать сетевой поисковик (Google, Yandex и др.).
Почему понадобилось машинное обучение
Какие наиболее развитые программные продукты мы можем применить:
- Service Desk на платформе 1С: Предприятие. Существует только ручной режим поиска: по ключевым словам, или с использованием полнотекстового поиска. Есть словари синонимов, возможность замены букв в словах и даже использование логических операторов. Однако, эти механизмы практически бесполезны при таком объеме данных, как у нас - результатов, удовлетворяющих запроса много, а эффективной сортировки по релевантности нет. Есть база знаний, на поддержку которой нужно тратить дополнительные усилия, а поиск в ней осложнен интерфейсным неудобством и необходимостью понимать её каталогизацию.
- JIRA от Atlassian. Наиболее известная западная Service desk - система с передовым, по сравнению с конкурентами, поиском. Существуют пользовательские расширения, интегрирующие функцию ранжирования результатов поиска BM25, которую использовали Google в своем поисковике до 2007 года. Подход BM25 основан на оценке “важности” слов в обращениях исходя из частоты их встречаемости. Чем реже совпадающее слово, тем сильнее оно влияет на сортировку результатов. Это позволяет несколько улучшить качество поиска при большом объеме обращений, однако система не адаптирована для обработки русского языка и, в целом, результат неудовлетворителен.
- Интернет поисковики. Сам поиск решений занимает в среднем от 5 до 15 минут, при этом качество ответов не гарантировано, как и их наличие. Бывает, что длинное обсуждение на форуме содержит несколько длинных инструкций, и ни одна из них не подходит, а на проверку уходит целый день (в итоге может уйти много времени при отсутствии гарантии результата).
Какое решение придумали мы
Если выразить просто, то задача поиска звучит так: для нового входящего обращения требуется найти наиболее похожие по смыслу и содержанию обращения из архива, и выдать закрепленные за ними решения. Встает вопрос - как научить систему понимать общий смысл обращения? Ответ - компьютерный семантический анализ. Инструменты машинного обучения позволяют построить семантическую модель архива обращений, извлекая из текстовых описаний семантику отдельных слов и целых обращений. Это позволяет численно оценивать меру близости между заявками и отбирать наиболее близкие совпадения.
Семантика позволяет учитывать значение слова в зависимости от его контекста. Это дает возможность понимать синонимы, снимать многозначность слов.Однако, перед тем как применять машинное обучение, тексты следует предварительно обработать. Для этого мы построили цепочку алгоритмов, позволяющую получить лексическую основу содержания каждого обращения.
Обработка состоит из очистки содержания обращений от лишних слов и символов и разбиения содержания на отдельные лексемы - токены. Так как обращения приходят в виде e-mail, то отдельной задачей является очистка почтовых форм, которые отличаются от письма к письму. Для этого мы разработали собственный алгоритм фильтрации. После его применения, у нас остается текстовое содержания письма без вводных слов, приветствий и подписей. Затем, из текста удаляются знаки пунктуации, а даты и цифры заменяются специальными тегами. Этот обобщающий прием повышает качество извлечения семантических связей между токенами. После этого, слова проходят лемматизацию – процесс приведения слов к нормальной форме, что также повышает качество за счет обобщения. Затем отсеиваются части речи с низкой смысловой нагрузкой: предлоги, междометия, частицы и т. п. После этого, все буквенные токены фильтруются по словарям (национальный корпус русского языка). Для точечной фильтрации, используются словари IT-терминов и сленга.
Примеры результатов обработки:
В качестве инструмента машинного обучения, мы используем Paragraph Vector (word2vec) – технология семантического анализа естественных языков, которая основана на распределенном векторном представлении слов. Разработана Mikolov et al совместно с Google в 2014 году. Принцип работы основывается на предположении, что слова, встречающиеся в схожих контекстах, являются близкими по смыслу. К примеру, слова «интернет» и «подключение» часто встречаются в схожих контекстах, например «Пропал интернет на сервере 1С» или «Пропало подключение на сервере 1С». Paragraph Vector анализирует текстовые данные предложений и делает вывод, что слова «интернет» и «подключение» являются семантически близкими. Адекватность подобных выводов тем выше, чем больше текстовых данных будет использовать алгоритм.
Если углубиться в детали:
На основе обработанных содержаний, для каждого обращения составляется “мешки слов”. Мешок слов – это таблица, отражающая частоту встречаемости каждого слова в каждом обращении. В строках находятся номера документов, а в столбцах- номера слов. На пересечении стоят цифры, показывающие сколько раз встретилось в документе слово.
Приведем пример:
- пропадать интернет сервер 1С
- пропадать подключение сервер 1С
- падать сервер 1С
А так выглядит мешок слов:
С помощью скользящего окна определяется контекст каждого слова в обращении (его ближайшие соседи слева и справа) и составляется обучающая выборка. На ее основе, искусственная нейронная сеть учится предсказывать слова в обращении, в зависимости от их контекста. Извлеченные из обращений семантические признаки формируют многомерные вектора. В ходе обучения, вектора разворачиваются в пространстве таким образом, что их положение отражает семантические отношения (близкие по смыслу находятся рядом). Когда сеть удовлетворительно решает задачу предсказания, можно сказать, что она удачно извлекла семантический смысл заявок. Векторные представления позволяют вычислять угол и расстояние между ними, что помогает численно оценивать меру их близости.
Как мы отлаживали продукт
Поскольку, существует большое множество вариантов обучения искусственных нейронных сетей, встала задача поиска оптимальных значений параметров обучения. То есть таких, при которых модель будет наиболее точно определять одинаковые технические проблемы, описанные разными словами. Из-за того, что точность работы алгоритма сложно оценить автоматически, мы создали отладочный интерфейс для ручной оценки качества и инструментарий для анализа:
Для анализа качества обучения мы также использовали визуализации семантических связей с помощью T-SNE - алгоритма уменьшения размерности (основан на машинном обучении). Он позволяет отобразить многомерные вектора на плоскости таким образом, что дистанция между точками-обращениями отражает их семантическую близость. В примерах будут представлены 2000 обращений.
Ниже представлен пример хорошего обучения модели. Можно заметить, что часть обращений группируется в кластеры, которые отражают их общую тематику:
Качество следующей модели куда ниже, чем предыдущей. Модель недообучена. Равномерное распределение указывает на то, что детали семантических отношений были усвоены лишь в общих чертах, что было выявлено уже при ручной оценке качества:
Напоследок, демонстрация графика переобучения модели. Хотя и есть разделение на темы, модель имеет очень низкое качество.
Эффект от внедрения машинного обучения
Благодаря использованию технологий машинного обучения и собственных алгоритмов очистки текста, мы получили:
- Дополнение для стандартной отраслевой информационной системы, которое позволило существенно экономить время на поиск решений ежедневных задач service desk.
- Снизилась зависимость от человеческого фактора. Максимально быстро заявку сможет решить не только тот, кто её уже решал ранее, но и тот, кто с проблемой вообще не знаком.
- Клиент получает более качественный сервис, если ранее решение незнакомой инженеру задачи занимало от 15 минут, то теперь до 15 минут, если ранее эту задачу уже кто-то решал.
- Понимание, что можно повысить качество обслуживания расширяя и улучшая базу описаний и решений проблем. Наша модель постоянно дообучается по мере поступления новых данных, а значит ее качество и количество готовых решений растет.
- Наши сотрудники могут влиять на свойства модели, постоянно участвуя в оценке качество поиска и решений, что позволяет оптимизировать её в непрерывном режиме.
- Инструмент, который можно усложнять и развивать для извлечения большей пользы из имеющейся информации. Далее мы планируем привлекать к партнерству других аутсорсеров и модифицировать решение для решения похожих задач у наших клиентов.
Примеры поиска похожих обращений (орфография и пунктуация авторов сохранена):
Входящее обращение | Наиболее похожее обращение из архива | % похожести |
---|---|---|
“Re:Диагностика ПК ПК 12471 уходит в ребут после подключения флеш накопителя. Проверить логи. Диагностировать, понять в чем проблема.” | “перезагружается пк, при подключении флешки пк ребутается. пк 37214 Проверить в чем проблема. Пк на гарантии.” | 61.5 |
“Тертнальный сервер после отключения питания не загружается. BSOD” | “После перезагрузки сервера, сервер не загружается пищит” | 68.6 |
“Не работает камера” | “ Камеры не работают” | 78.3 |
“RE:The Bat Не отправляются письма, пишет переполнена папка. | Re: не принимается почта Переполнение папки в THE Bat! папка более 2 ГБ | 68.14 |
“Ошибка при запуске 1С - Невозможно получить сертификат сервера лицензирования. Скрин прикладываю. (компьютер 21363)” | Не запускается 1С CRM, на пк 2131 и 2386 не запускается 1С, ошибка след.: Невозможно получить сертификат сервера лицензирования. Не удалось найти сервер лицензирования в режиме автоматического поиска.” | 64.7 |
Изначально решение архитектурно планировалось следующим образом:
Программное решение полностью написано на языке Python 3. Библиотека, реализующая методы машинного обучения частично написана на c/c++, что позволяет использовать оптимизированные версии методов, дающие ускорение порядка 70 раз, по сравнению с чистыми Python-имплементациями. На данный момент, архитектура решения выглядит следующим образом:
Были дополнительно разработаны и интегрированы система анализа качества и оптимизации параметров обучения моделей. Также был разработан интерфейс обратной связи с оператором, позволяющий ему оценивать качество подбора каждого решения.
Данное решение можно применять для большого количества задач, связанных текстом, будь то:
- Семантический поиск документов (по содержанию документа или ключевым словам).
- Анализ тональности комментариев (выявление в текстах эмоционально окрашенной лексики и эмоциональной оценки мнений по отношению к объектам, речь о которых идёт в тексте).
- Извлечение краткого содержания текстов.
- Построение рекомендаций (Collaborative Filtering).
Решение легко интегрируется с системами документооборота, так как для его работы требуется только база данных с текстами.
Будем рады внедрить технологии machine learning коллегам по ИТ сфере и клиентам из других отраслей, свяжитесь с нами , если заинтересовались продуктом.
Направления развития продукта
Решение находится в стадии альфа-тестирования и активно развивается в следующих направлениях:
- Создание облачного сервиса
- Обогащение модели на основе решений технической поддержки в открытом доступе и в сотрудничестве с другими аутсорсинговыми компаниями
- Создание распределенной архитектуры решения (данные остаются у заказчика, а создание модели и обработка запросов происходит на нашем сервере)
- Расширение модели под другие предметные области (медицина, юриспруденция, обслуживание техники и проч.)
Машинное обучение с каждым днем занимает всё большее место в нашей жизни ввиду огромного спектра его применений. Начиная от анализа пробок и заканчивая самоуправляемыми автомобилями, всё больше задач перекладывается на самообучаемые машины.
Мы порой даже примерно не представляем, как работают некоторые приложения, основанные на методах машинного обучения. Скажем, никто не сможет вам ответить на вопрос «Почему мне сегодня в рекламе показали сайт A, а не Б?». Наиболее печальным во всей этой ситуации является то, что большинство людей имеет неверное представление о машинном обучении.
Вводная
Машинное обучение считается ветвью искусственного интеллекта, основная идея которого заключается в том, чтобы компьютер не просто использовал заранее написанный алгоритм, а сам обучился решению поставленной задачи.
Любую работающую технологию машинного обучения можно условно отнести к одному из трёх уровней доступности. Первый уровень - это когда она доступна только различным технологическим гигантам уровня Google или IBM. Второй уровень - это когда ей может воспользоваться людей студент с некоторым багажом знаний. Третий уровень - это когда даже бабуля способна с ней совладать.
Машинное обучение находится сейчас на стыке второго и третьего уровней, за счёт чего скорость изменения мира с помощью данной технологии растет с каждым днем.
Обучение с учителем и без учителя
Большую часть задач машинного обучения можно разделить на обучение с учителем (supervised learning) и обучение без учителя (unsupervised learning). Если вы представили себе программиста с плёткой в одной руке и куском сахара в другой, вы немного ошиблись. Под «учителем» здесь понимается сама идея вмешательства человека в обработку данных. При обучении с учителем у нас есть данные, на основании которых нужно что-то предсказать, и некоторые гипотезы. При обучении без учителя у нас есть только данные, свойства которых мы и хотим найти. На примерах разницу вы увидите немного яснее.
Обучение с учителем
У нас есть данные о 10 000 квартирах в Москве, причём известна площадь каждой квартиры, количество комнат, этаж, на котором она расположена, район, наличие парковки, расстояние до ближайшей станции метро и так далее. Кроме того, известна стоимость каждой квартиры. Нашей задачей является построение модели, которая на основе данных признаков будет предсказывать стоимость квартиры. Это классический пример обучения с учителем, где у нас есть данные (10 000 квартир и различные параметры для каждой квартиры, называемые признаками) и отклики (стоимость квартиры). Такая задача называется задачей регрессии . О том, что это такое, мы поговорим чуть позже.
Другие примеры: на основании различных медицинских показателей предсказать наличие у пациента рака. Или на основании текста электронного письма предсказать вероятность того, что это спам. Такие задачи являются задачами классификации .
Обучение без учителя
Интереснее ситуация обстоит с обучением без учителя, где нам неизвестны «правильные ответы». Пусть нам известны данные о росте и весе некоторого числа людей. Необходимо сгруппировать данные на 3 категории, чтобы для каждой категории людей выпустить рубашку подходящего размера. Такая задача называется задачей кластеризации .
Еще одним примером можно взять ситуацию, когда у нас каждый объект описывается, скажем, 100 признаками. Проблема таких данных заключается в том, что построить графическую иллюстрацию таких данных, мягко говоря, затруднительно, поэтому мы можем уменьшить количество признаков до двух-трёх. Тогда можно визуализировать данные на плоскости или в пространстве. Такая задача называется задачей уменьшения размерности .
Классы задач машинного обучения
В предыдущем разделе мы привели несколько примеров задач машинного обучения. В этом мы постараемся обобщить категории таких задач, сопроводив список дополнительными примерами.
- Задача регрессии : на основании различных признаков предсказать вещественный ответ. Другими словами, ответом может быть 1, 5, 23.575 или любое другое вещественное число , которое, например, может олицетворять стоимость квартиры. Примеры : предсказание стоимости акции через полгода, предсказание прибыли магазина в следующем месяце, предсказание качества вина на слепом тестировании.
- Задача классификации : на основании различных признаков предсказать категориальный ответ. Другими словами, ответов в такой задаче конечное количество, как в случае с определением наличия у пациента рака или определения того, является ли письмо спамом. Примеры : распознавание текста по рукописному вводу, определение того, находится на фотографии человек или кот.
- Задача кластеризации : разбиение данных на похожие категории. Примеры : разбиение клиентов сотового оператора по платёжеспособности, разбиение космических объектов на похожие (галактики, планеты, звезды и так далее).
- Задача уменьшения размерности : научиться описывать наши данные не N признаками, а меньшим числом (как правило, 2-3 для последующей визуализации). В качестве примера помимо необходимости для визуализации можно привести сжатие данных.
- Задача выявления аномалий : на основании признаков научиться различать отличать аномалии от «не-аномалий». Кажется, что от задачи классификации эта задача ничем не отличается. Но особенность выявления аномалий состоит в том, что примеров аномалий для тренировки модели у нас либо очень мало, либо нет совсем, поэтому мы не можем решать такую задачу как задачу классификации. Пример : определение мошеннических транзакций по банковской карте.
Нейронные сети
В машинном обучении есть большое число алгоритмов, причём некоторые являются довольно универсальными. В качестве примеров можно привести метод опорных векторов , бустинг над решающими деревьями или те же нейронные сети . К сожалению, большая часть людей довольно смутно представляет себе суть нейронных сетей, приписывая им свойства, которыми они не обладают.
Нейронная сеть (или искусственная нейронная сеть) - это сеть нейронов, где каждый нейрон является математической моделью реального нейрона. Нейронные сети начали пользоваться большой популярностью в 80-х и ранних 90-х, однако в конце 90-х их популярность сильно упала. Впрочем, в последнее время это одна из передовых технологий, используемых в машинном обучении, применяемая в огромном количестве приложений. Причина возврата популярности проста: увеличились вычислительные способности компьютеров.
С помощью нейронных сетей можно решать как минимум задачи регрессии и классификации и строить крайне сложные модели. Не вдаваясь в математические подробности, можно сказать, что в середине прошлого века Андрей Николаевич Колмогоров доказал, что с помощью нейронной сети можно аппроксимировать любую поверхность с любой точностью.
Фактически же, нейрон в искусственной нейронной сети представляет собой математическую функцию (например, сигмоидную функцию), которой на вход приходит какое-то значение и на выходе получается значение, полученное с помощью той самой математической функции.
Ограниченность нейронных сетей
Впрочем, в нейронных сетях нет ничего магического и в большинстве случаев опасения касательно сценария «Терминатора» не имеют под собой оснований. Допустим, учёные натренировали нейронную сеть на распознавание рукописных цифр (такое приложение может использовать, скажем, на почте). Как может работать такое приложение и почему здесь не о чем беспокоиться?
Допустим, мы работаем с изображениями 20x20 пикселей, где каждый пиксель представляется оттенком серого (всего 256 возможных значений). В качестве ответа у нас имеется одна из цифр: от 0 до 9. Структура нейронной сети будет следующая: в первом слое будет 400 нейронов, где значение каждого нейрона будет равно интенсивности соответствующего пикселя. В последнем слое будет 10 нейронов, где в каждом нейроне будет вероятность того, что на изначальном изображении нарисована соответствующая цифра. Между ними будет некоторое число слоев (такие слоя называются скрытыми) с одинаковым количеством нейронов, где каждый нейрон соединён с нейроном из предыдущего слоя и ни с какими более.
Рёбрам нейронной сети (на картинке они показаны как стрелочки) будут соответствовать некоторые числа. Причем значение в нейроне будет считаться как следующая сумма: значение нейрона из предыдущего слоя * значение ребра, соединяющего нейроны . Затем от данной суммы берётся определенная функция (например, сигмоидная функция, о которой мы говорили ранее).
В конечном итоге задача тренировки нейронной сети заключается в том, чтобы подобрать такие значения в ребрах, чтобы отдавая первому слою нейронной сети интенсивности пикселей, на последнем слое мы получали вероятности того, что на изображении нарисована какая-то цифра.
Более простыми словами, в данном случае нейронная сеть представляет собой вычисление математической функции, где аргументы - это другие математические функции, которые зависят от других математических функций и так далее. Разумеется, при подобном вычислении математических функций, где подгоняются некоторые аргументы, ни о каком экзистенциальном риске речи идти не может.
Приведём несколько интересных и не совсем очевидных примеров использования машинного обучения в реальной жизни.
Например, вторая кампания Барака Обамы была фактически выиграна лучшей на тот момент командой в области анализа данных. Разумеется, речь не идет о том, что они советовали ему соврать о чем-то, работа строилась значительно более умным путем: они выбирали, в каком штате, перед какой аудиторией, в какой день и на какую тему он должен выступать. Причем каждый раз они замеряли, как это сказывается на опросах вида «За кого бы вы проголосовали, если бы выборы были в ближайшее воскресенье?». Другими словами, подобные решения принимали не политтехнологи, а исключительно специалисты по анализу данных. Особенно интересным это становится в свете того, что, по оценкам специалистов, это дало ему преимущество в 8-10%.
Кроме того, современный интернет довольно сложно представить без ретаргетинга, или персонализированной рекламы. Вспомните: вы выбираете какой-то продукт в интернете, а после покупки ещё на протяжении двух недель вам показывают его в различного рода рекламе. В одном из своих выступлений директор по маркетингу сервисов компании «Яндекс» Андрей Себрант дал на этот счёт такой совет:
Дарю лайфхак. После того как вы купили топор, чтобы не любоваться топорами ещё две недели, зайдите в магазин модной одежды. Дальше, в зависимости от ваших гендерных предпочтений, зайдите либо в мужское, либо в женское бельё. Бросьте несколько предметов в корзину, закройте корзину и уйдите. У этих ребят очень большие бюджеты на ретаргетинг: следующие две недели вас, в зависимости от ваших предпочтений, будут преследовать либо красивые полуодетые мужчины, либо красивые полуодетые женщины. Это лучше, чем топор.
Если у вас появилось желание изучить технологии машинного обучения, стоит отметить, что для глубокого изучения предмета с пониманием всего фундамента следует разбираться как минимум в математическом анализе, линейной алгебре и методах оптимизации (с упором на последние два). Кроме того, желательно знать основы программирования и какой-нибудь язык программирования. В машинном обучении, как правило, используется R, Python или Matlab.
Для самого начального изучения отлично подойдет классический курс Эндрю Энга на Coursera по машинному обучению . Главной его особенностью является исключительная практическая направленность, причём обширный багаж математических знаний в данном курсе абсолютно не обязателен.
Мотивировать его изучение можно следующим образом: посмотрите учебный план. Если вы просмотрите все лекции и решите все задания, то вы гарантированно сможете применять все эти вещи на практике. В частности, вы освоите алгоритмы линейной регрессии (задача регрессии), логистической регрессии, метода опорных векторов, нейронных сетей (задача классификации), K-means (кластеризация), PCA (понижение размерности), выявления аномалий и узнаете как построить рекомендательную систему (рекомендация товаров по вашим оценкам, например, фильмов или песен). На последней неделе курса вам также расскажут, как построить систему, которая будет находить и расшифровывать надписи на картинках или опознавать людей.
Для тех, кто хочет изучать предмет со всеми математическими тонкостями в лучших традициях сильных технических вузов, можно порекомендовать курс от ВШЭ или специализацию от МФТИ . Заметим лишь, что специализация является платной и для доступа к ней придется оформить подписку приблизительно за 3000 рублей в месяц. Впрочем, есть бесплатный период в 7 дней.
Возможно, будет полезно почитать:
- Холодильник Lg - постоянно без остановки работает, отключается ;
- Smartshare для LG: лучшая программа для шары ПК Компьютерная версия smart share ;
- Что такое ставка типа система? ;
- HP Web Jetadmin - Управление принтерами сторонних производителей в HP Web Jetadmin Hp web jetadmin не видит локальный принтер ;
- Как раздать мобильный интернет со смартфона по Wi-Fi? ;
- Как играть в Minecraft PE без лицензии — Обход защиты Minecraft ;
- Что делать если GTA IV не запускается ;
- Где В Gta San Andreas Полицейский Вертолет Другие сведения о вертолетах в игре ;