Искусственный интеллект и Машинное обучение. Основы программирования на Python
Введение
В последнее время очень много разговоров об Искусственном интеллекте (Artificial Intelligence), Машинном обучении (Machine learning), Глубоком обучении (Deep learning), больших данных (Big Data), нейронных сетях (Neural networks) и многих других терминах и технологиях, о которых 30 лет назад можно было прочитать только в футуристических книгах. Однако это не с проста. Уже сегодня различные технологии искусственного интеллекта используются в нашей повседневной жизни.
Когда мы смотрим новостную ленту, новостные агрегаторы показывают нам именно те новости, которые нам могут быть наиболее интересны. То же самое происходит в социальных сетях, на Youtube, музыкальных сервисах, где нам показывают именно те видео, песни или изображения, которые скорее всего нам понравятся.
Компьютеры уже могут распознавать нашу речь и автоматический перевод от Яндекс и Google Translate работает на порядок лучше, чем всего лишь 5 лет назад.
Техники распознавания изображений и окружающей среды и местности применяются в автономных беспилотных автомобилях, которые уже ездят по миру, в том числе и в России. И количество автономных машин увеличивается огромными темпами.
Кроме того, ИИ используется банками при решении о выдаче кредита, отделами продаж и маркетинга в компаниях, чтобы предсказывать объемы продаж, и делать более персональные рекомендации для каждого клиента.
Огромные бюджеты тратятся на таргетированную рекламу, которая становится все более точечной благодаря технологиям машинного обучения.
Особо актуальным ИИ становится в медицине, где нейронные сети могут выявлять наличие серьезных заболеваний намного с большей точностью чем самые профессиональные доктора.
Как вы видите, спектр использования Искусственного интеллекта очень обширен и его технологии уже используются во многих сферах.
Так как ареал использования охватывает практически все области, это требует большого количества специалистов, разбирающихся в том, как работают алгоритмы искусственного интеллекта и машинного обучения. И именно поэтому сегодня любому, кто хочет развития своей карьеры, необходимо иметь как минимум базовое представление об ИИ и МО.
По различным оценкам, сейчас во всем мире примерно всего лишь 300 000 специалистов по искусственному интеллекту, и из них только 10 000 это очень сильные профессионалы, которые работают над масштабными проектами. Оценивается, что спрос в самое ближайшее время на таких специалистов вырастет до 30 миллионов человек и продолжит расти в дальнейшем. То есть налицо огромная нехватка экспертов, которые понимают и умеют работать с технологиями ИИ и МО.
Многие технологические гиганты, такие как Google, Яндекс, Netflix, Alibaba, Tencent, Facebook жалуются на нехватку высококлассных специалистов и не даром зарплаты для таких вакансий – одни из самых высоких на рынке.
Сегодня специалист с двумя – тремя годами опыта в области больших данных и ИИ может получать более 150 тысяч долларов в год в Америке, Европе и Китае, а лучшие специалисты зарабатывают от миллиона долларов в год и выше. Не стоит и говорить о многочисленных стартапах в области ИИ, которые запускаются каждую неделю и привлекают огромные раунды инвестиций.
Таким образом, если подытожить, то Искусственный интеллект уже используется вокруг нас многими компаниями и сервисами, порой даже когда мы этого не замечаем. В общем и целом, он делает наш опыт взаимодействия с окружающей действительностью более персонализированным и удобным.
Есть масса областей и индустрий, где можно приложить на практике знания ИИ. И есть очевидная нехватка специалистов в этой области, и они будут востребованы в ближайшие пару десятилетий как минимум.
В этой книге мы дадим базовое представление о том, что такое Искусственный интеллект и машинное обучение, расскажем основные виды, алгоритмы и модели, покажем вам где искать данные для анализа, и попрактикуемся вместе с вами над решением некоторых реальных задач машинного обучения. После прочтения данной книги вы сможете общаться свободно на эти темы, и, если захотите, сможете в дальнейшем углубить свои знания в этой области с помощью более специализированных программ.
До встречи внутри книги!
История развития Искусственного интеллекта
Именно в последние несколько лет термины Искусственный интеллект, машинное обучение, нейронные сети, биг дата стали, пожалуй, одними из самых обсуждаемых тем во всем мире. Сегодня об искусственном интеллекте не говорит только ленивый. Однако, необходимо помнить, что ИИ – это не что-то новое, и этой дисциплине уже несколько десятков лет.
Задумываться о том, может ли у машин быть интеллект, начали еще в середине прошлого века. Еще в 1950 году английский математик Алан Тьюринг предложил Тест Тьюринга, цель которого заключалась в том, чтобы определить может ли машина мыслить и обмануть человека, заставив его поверить, что он общается с таким же человеком как и он сам, а не с компьютером.
В том же самом году фантаст Айзек Азимов ввел в терминологию Три закона робототехники, в котором указал, какими должны быть взаимоотношения между людьми и роботами.
Законы гласили:
Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.
Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.
Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.
В 1955 году проходил семинар ученых, где обсуждали будущее компьютеров. Одним из присутствующих был Джон Маккарти, который первым ввел в обиход термин Искусственный интеллект. Поэтому именно 1955 год принято считать годом рождения ИИ. Через три года тот же Маккарти создал язык программирования Lisp, который стал основным в работе с ИИ на следующие несколько лет.
В 1956 году инженер Артур Сэмюэл создает первый в мире самообучающийся компьютер, который умеет играть в шашки. Шашки были выбраны из-за того, что в них присутствовали элементарные правила, и в то же время если вы хотели выиграть в них, то требовалось следовать определенной стратегии. Этот компьютер, созданный Сэмуэлэм, обучался на простых книжках по игре в шашки, в которых описывались сотни партий с хорошими и плохими ходами.
В этом же году Герберт Саймон, Алан Ньюэлл, и Клиффорд Шоу придумали программу, которая называлась Логический теоретик. Считается, что это одна из первых программ, обладающих ИИ. Логический теоретик хорошо справлялся с ограниченным кругом задач, например, задачи по геометрии, и даже смог доказать теорему о равностороннем треугольнике элегантнее, чем Бертран Рассел.
В следующем 1957 году Фрэнк Розенблатт придумал Перцептрон, который представлял собой обучаемую систему, действовавшую не только в соответствии с заданными алгоритмами и формулами, но и на основании прошлого опыта. Здесь важно отметить, что в перцептроне были впервые использованы нейронные сети. Уже тогда ученые понимали, что некоторые (нечеткие) задачи решаются человеком очень быстро, в то время как у компьютера они отнимают много времени. Поэтому подумали, что возможно необходимо воспроизвести структуру работы мозга человека, чтобы научить компьютер работать так же быстро. Поэтому простейшие элементы перцептрона назывались нейронами, потому что вели себя похожим образом, как и нейроны мозга человека. Компьютерная модель перцептрона была реализована в 1960 году в виде первого нейрокомпьютера, который был назван Марк-1.
А в 1959 году Массачусетский Технологический Институт основывает лабораторию Искусственного интеллекта.
Идем дальше в следующее десятилетие. Уже в 1961 году первый робот внедряется на производстве автомобилей компании General Motors.
В 1965 году был изобретен первый чат-бот Eliza. Eliza должна была имитировать психотерапевта, который расспрашивал у пациента о его состоянии и предлагал возможные решения или просто мог посочувствовать собеседнику. Оказалось, что в разговоре с Элайзой люди испытывали примерно такие же эмоции и чувства, как и при общении с настоящим человеком.
В 1974 году было изобретено первое беспилотное транспортное средство в лаборатории Стэнфордского университета, оно станет прототипом для следующих лунных модулей.
В 1978 году Дуглас Леннон – создал самообучающуюся систему Эвриско. Эта система не только уточняла уже известные закономерности, но и предлагало новые. Через несколько лет Эвриско научилась решать такие задачи как: моделирование биологической эволюции, очистка поверхности от химикатов, размещение элементов на интегральных схемах.
В 1989 году Карнеги Мэллон создает беспилотный автомобиль с использованием нейронных сетей.
В 1988 году компьютер Deep Thought играет против чемпиона мира по шахматам Гарри Каспарова, но проигрывает ему, через 8 лет у них проходит очередная игра, и опять Каспаров оказывается сильнее компьютера. Но уже всего лишь через год, в 1997 году – сильно апгрейденный шахматный суперкомпьютер Deep Blue от IBM одерживает победу над Гарри Гаспаровым, и он становится первым компьютером, выигравшим у действующего чемпиона мира по шахматам. Начиная с 2000-х годов компьютеры стабильно выигрывают у людей.
В 1999 году компания Sony анонсирует собачку Айбо, навыки и поведение которой развиваются со временем. В этом же году впервые Массачусетский технологический институт показывает эмоциональный ИИ под названием Кисмет, который может распознавать эмоции людей и реагировать на них соответствующим образом.
В 2002 году начинается массовое производство автономных пылесосов iRobot, которые умеют перемещаться по дому самостоятельно, избегая препятствий.
В 2009 году Google подключается к гонке компаний по разработке собственного беспилотного автомобиля.
В 2011 году появляются Siri, Google Now и Cortana, умные виртуальные ассистенты. В 2014 году к ним присоединится Alexa от Amazon, а в 2017 году Алиса от Яндекса.
Помните мы говорили про Тест Тьюринга, который был изобретен Аланом Тьюрингом в 1950 году и был предназначен чтобы понять сможет ли ИИ обмануть человека и убедить его, что перед ним не компьютер, а человек. Так вот в 2014 году компьютерный чатбот Эжен Густман прошел этот тест, заставив треть жюри поверить, что компьютером управлял человек, а не ИИ.
В 2016 году Deep Mind от Google под названием Alpha Go побеждает чемпиона по игре в Го. Игра Го намного сложнее шахмат, здесь больше вариантов развития игры, и тем не менее Го стала второй игрой, в которой люди больше не могут выиграть.
В 2017 году после более чем 10 лет попыток и неудач, две команды независимо друг от друга разработали свои модели ИИ, компьютеры DeepStack и Libratus, которые смогли обыграть профессионалов в покер. В отличие от Го и шахмат, где все подчиняется строгим правилам, в покере на первый план выходит человеческий фактор. Потому что покер – во многом психологическая игра, построенная на эмоциях, невербальной коммуникации, умении блефовать и распознавать блеф.
Один из участников игры в покер с этими компьютерами так описал свои впечатления: «Это как играть с кем-то, кто видит все твои карты. Я не обвиняю нейросеть в нечестной игре, просто она действительно настолько хороша».
В 2015 году Илон Маск и Сэм Альтман, президент Y Combinator, основали компанию OpenAI, чтобы создать «открытый и дружественный» искусственный интеллект.
В 2017 году команда разработчиков OpenAI решила натренировать свою нейросеть в крупнейшей киберспортивной игре Dota 2. В этой игре играют команды по 5 человек, и они используют множество комбинаций из более чем сотни героев. У каждого из них есть свой набор навыков, За две недели нейросеть смогла обучиться и победить нескольких лучших игроков мира в режиме один на один, и сейчас ее создатели готовятся выпустить версию для основного режима, пять на пять.
Перемещаемся еще ближе к нашим дням. В начале 2018 году алгоритмы от Alibaba и Microsoft превзошли человека в тесте на понимание прочитанного текста.
В марте 2018 года небольшой робот собрал кубик Рубика за 0,38 секунды. Рекорд среди людей до этого составлял – 4,69 секунды.
Одним из самых важных прорывов в развитии ИИ, который может принести много пользы человечеству, стало то, что в мае 2018 искусственный интеллект стал лучше людей распознавать рак кожи.
Кроме распознавания заболеваний у пациентов, алгоритмы ИИ используются сегодня для исследования сворачивания белка, пытаясь найти лекарство от болезней Альцгеймера и Паркинсона. ИИ используется также для снижения уровня потребляемой энергии, и создания новых революционных материалов.
Искусственный интеллект активно применяется и в бизнесе – банки используют его для одобрения кредитов, а розничные компании применяют его для более точечных рекламных компаний и предложений для своих клиентов.
Почему же именно в наше время ИИ стал так быстро набирать скорость. Этому есть две причины. Во-первых, сейчас в мире производится огромное количество информации. Каждые два года, объем информации в мире удваивается. А как мы знаем, ИИ учится на имеющихся данных. И вторая причина – это наличие сильных вычислительных мощностей. Наши компьютеры сегодня достаточно сильные, чтобы они умели обрабатывать эти объемы информации в достаточно ограниченные сроки.
Итак, мы посмотрели на краткую историю развития ИИ. В одной из следующих глав мы посмотрим, чего же можно ожидать от развития ИИ в будущем.
Различие между ИИ, машинным обучением, глубинным обучением и нейронными сетями
Сегодня зачастую термины искусственный интеллект, машинное обучение (МО), глубокое обучение (ГО), нейронные сети (НС), Биг Дата используются взаимозаменяемо. И хотя они действительно очень связаны между собой, давайте разберемся что представляет собой каждое из этих понятий, и чем они отличаются.
Во-первых, если говорить очень кратко, то искусственный интеллект – это достаточно широкая отрасль, которая в свою очередь охватывает и машинное и глубокое обучение. МО является подвидом ИИ, а ГО является подвидом МО.
Под ИИ подразумевается, что компьютер может выполнять такие задачи, которые может выполнять и человек. И здесь дело касается не просто каких-то механических действий, например, поднять и отнести какой-то предмет, а задачи, которые требуют интеллектуального мышления, то есть, когда надо принять правильное решение. Например, задача выиграть в шахматы, или распознать что изображено на картинке, или понять, что было произнесено собеседником и выдать правильный ответ.
Для этого компьютеру дают множество правил или алгоритмов, следуя которым, он смог бы поступать так же, как поступал бы человек.
ИИ может быть узким (narrow AI) либо его еще иногда называют слабым, то есть когда машина может справляться только с ограниченным видом задач, лучше чем человек. Например, распознать, что на картинке или сыграть в шахматы и выиграть. Именно на этом этапе развития ИИ мы сейчас находимся. Следующий этап – это общий ИИ (general AI), когда ИИ может решить любую интеллектуальную задачу так же хорошо, как человек. И финальный этап – это сильный ИИ, когда ИИ справляется с большинством задач намного лучше, чем человек.
Как мы уже сказали, ИИ – это достаточно обширная область знаний. Она включает в себя следующие направления.
1. Обработка естественного языка, когда компьютер должен понимать, что написано, и выдать правильный и релевантный ответ. Сюда же входят переводы текстов и даже составление сложных текстов компьютерами.
2. Экспертные системы – это компьютерные системы, которые имитируют способность принятия решений человеком, в основном с помощью правил «если – то», нежели с использованием какого-то кода.
3. Речь – компьютер должен распознавать речь людей и сам уметь разговаривать.
4. Компьютерное зрение – компьютеры распознают те или иные объекты на изображении или при движении.
5. Робототехника – также очень популярное направление ИИ, создание роботов, которые могут выполнять различные функции, в том числе двигаться и общаться, преодолевать препятствия.
6. Автоматическое планирование – обычно используется автономными роботами и беспилотными аппаратами, когда им необходимо выполнять последовательность действий, особенно когда это происходит в многомерном пространстве и когда им приходится решать комплексные задачи.
7. И наконец, Машинное обучение.
Машинное обучение появилось после того, как долгое время мы пытались сделать компьютер умнее, давая ему все больше и больше правил и инструкций. Однако, это оказалось не такой уж и хорошей идеей, потому что отнимало много времени, и мы не могли придумать правила для каждой детали и для каждой ситуации.
И тогда ученые пришли к выводу, а почему бы не написать алгоритмы, которые учатся самостоятельно на основе опыта. Так родилось машинное обучение. То есть, когда машины могут учиться на основе больших наборов данных вместо явно написанных инструкций и правил.
МО – это область ИИ, когда мы тренируем наш алгоритм с помощью набора данных, делая его все лучше, точнее и более эффективным. При машинном обучении наши алгоритмы обучаются на основе данных, но без заранее запрограммированных инструкций. То есть мы даем машине большой набор данных, и говорим правильные ответы, и потом машина сама создает алгоритмы, которые бы удовлетворяли этим ответам. И с каждым новым дополнительным объемом данных, машина учится дальше и еще больше улучшает свою точность прогнозов.
Например, если взять пример шахмат, то в примере с ИИ, мы даем машине много логических правил, и на их основе она учится играть. А в примере с МО, мы даем машине много примеров прошлых игр, она изучает их и анализирует почему одни игроки выигрывали, а другие проигрывали, какие шаги вели к успеху, а какие – к поражению. И на основе этих примеров, машина сама создает алгоритмы и правила как надо играть в шахматы, чтобы выиграть.
Другой пример, предположим, нам надо понять, как будет вести себя цена квартиры при изменении тех или иных параметров, например, в зависимости от площади, удаленности от метро, этажности и прочих факторов. Мы загружаем данные с разными квартирами, и компьютер создает модель, по которой можно будет предсказать цены в зависимости от этих факторов. Мы можем регулярно обновлять эти данные, и наш алгоритм будет обучаться на основе этих новых данных и каждый раз будет усовершенствовать свою точность по предсказанию цены в зависимости от параметров.
Идем дальше. Глубокое обучение – это подотрасль МО, то есть здесь тоже компьютер обучается, но обучается немного по-другому, чем в стандартном МО. В ГО используются нейронные сети (НС), которые представляют собой алгоритмы, повторяющие логику нейронов человеческого мозга. Большие объемы данных проходят через эти нейронные сети, и на выходе выдаются уже готовые ответы. Нейронные сети намного сложнее, чем обычное машинное обучение, и мы можем не всегда понимать, какие факторы имеют больший вес на тот или иной ответ, но использование нейронных сетей также помогает решать очень запутанные задачи в наше время. Иногда нейронные сети называют даже черным ящиком, потому что мы не всегда можем понять, что происходит внутри этих сетей.
Предположим, ваш компьютер оценивает, насколько хорошо написано эссе. Если вы используете ГО, то компьютер вам просто выдаст финальное решение, что эссе хорошее либо нет, и скорее всего, ответ будет очень близок к тому, как бы оценил это эссе человек. Но вы не сможете понять, почему было принято такое решение, потому что в ГО используются несколько уровней НС, что делает его очень трудно интерпретируемым. Вы не будете знать какой узел НС был активирован, и как эти узлы вели себя вместе, чтобы прийти к этому результату. Если же вы используете МО, например, алгоритм «дерево решений», то там видно какой фактор сыграл решающую роль в определении качества эссе.
Нейронные сети были известны еще в 20 веке, но тогда они были не настолько глубокими, там был всего один или два слоя, и они не давали таких хороших результатов, как другие алгоритмы МО. Поэтому на какое-то время они отошли на второй план. Однако они стали популярны в последнее время, особенно примерно с 2006 года, когда появились огромные наборы данных и сильные компьютерные мощности, в частности, видео карты и мощные процессоры, которые стали способны создавать более глубокие слои НС и делать вычисления более эффективно.
По этим же причинам, ГО является достаточно дорогим. Потому что, во-первых, сложно собрать большие данные по определенным признакам и, во-вторых, серьезные вычислительные способности компьютеров – тоже достаточно дорогое удовольствие.
Если вкратце, то каким образом работает ГО. Предположим, наша задача вычислить сколько единиц транспорта и какой именно транспорт (то есть автобусы, грузовики, машины или велосипеды) проходит через определенную трассу в день, чтобы в дальнейшем распределить полосы движения.
Для этой цели нам надо научить наш компьютер распознавать виды транспорта. Если бы мы решали эту задачу с помощью МО, мы бы написали алгоритм, в котором указывали бы характеристики машин, автобусов, грузовиков и велосипедов, например, если количество колес 2, то мотоцикл, если длина движущегося средства более 5 метров, то грузовик либо автобус, если много окон, то автобус, и т.д. Но как понимаете, здесь много подводных камней. Например, автобус может быть затонированным и будет трудно понять, где там окна, либо грузовик может выглядеть как автобус или наоборот, да и крупные машины пикапы выглядят как некоторые небольшие грузовики.
Поэтому другой вариант решения этой задачи, это загрузить большое количество изображений с разными видами транспорта в наш компьютер и просто указать ему, на каких изображениях изображен мотоцикл, автомобиль, грузовик или автобус. Компьютер сам начнет подбирать характеристики, по которым можно определить, что за вид транспорта изображен и как их можно отличить друг от друга. После этого мы загрузим еще некоторое количество изображений и протестируем насколько хорошо компьютер справляется с задачей. Если он будет ошибаться, мы укажем ему, что вот здесь ты ошибся, здесь не грузовик, а автобус. Компьютер, в свою очередь, вернется назад к своим алгоритмам (это называется backpropagation) и внесет туда какие-то изменения, и мы начнем заново по кругу до тех пор, пока компьютер не начнет угадывать, что изображено на картинке с очень большой долей вероятности. Это и называется глубокое обучение на основе нейронных сетей. Как вы понимаете, это может занимать достаточно долгое время, может быть несколько недель, в зависимости от сложности поставленной задачи, также требует наличия большого количества данных, желательно, чтобы было от миллиона изображений и выше, и все эти изображения должны либо быть промаркированы, либо это должен делать человек, но это будет очень затратно по времени.
Давайте еще раз сравним МО и ГО по разным параметрам.
Если суммировать:
ГО является подобластью МО, и они оба подпадают под более широкое определение ИИ.
МО использует алгоритмы, чтобы разбирать данные, обучаться на их основе, и принимать взвешенные решения на основе обученного.
ГО делает то же самое, так как оно тоже является разновидностью МО, но специфика ГО в том, что при нем алгоритмы структурируются в несколько слоев, чтобы создать искусственную нейронную сеть, которая может тоже обучаться и принимать умные решения.
МО может использоваться при небольших наборах данных. И на маленьких объемах данных, МО и ГО имеют примерно одинаковую эффективность, но при возрастании объемов данных, ГО намного выигрывает по эффективности.
В МО мы сами задаем характеристики, на которые будут опираться наши алгоритмы. В примере с определением цены квартиры, мы сами указываем параметры, от которых будет зависеть цена, например, метраж, расстояние от метро, возраст дома, район и т.д. А в ГО, компьютер или можно сказать нейронная сеть сама методом проб и ошибок выводит определенные параметры и их вес, от которых зависят наши выходные данные.
По времени обучения алгоритмов, ГО как правило занимает больше времени чем МО.
Расшифровка или интерпретация алгоритмов МО легче, потому что мы видим какой параметр играет важную роль для определения выходных данных. Например, в вопросе определения цены квартиры, мы можем увидеть, что вес метража в цене составляет, скажем, 60%. В ГО же, расшифровать что именно привело к такому результату порой бывает очень сложно, потому что там несколько слоев нейронных сетей и много параметров, которые компьютер выводит сам и которые он может посчитать важными. Поэтому, использование ГО или МО будет также зависеть от целей ваших задач. Например, если вам надо понимать, почему компьютер принял то или иное решение, какой фактор сыграл важную роль, то вам надо будет выбрать использование МО вместо ГО.
Вследствие того, что ГО требует большего объема данных, а также более мощных вычислительных способностей компьютера, и занимает больше времени для обучения, оно также является более дорогим по сравнению с МО.
Таким образом, если суммировать всю данную главу, то везде, где применяется распознавание речи или изображений, робототехника, устный или письменный перевод, чат-боты, беспилотное вождение транспортных средств, предсказание каких-то параметров на основе имеющихся данных, во всех этих примерах присутствуют элементы ИИ, потому что ИИ – это очень широкое понятие, которое охватывает все эти направления, когда компьютер имитирует мышление и поведение человека.
Случаи, когда мы вместо того, чтобы давать компьютеру написанные инструкции и правила для решения вопроса, даем ему набор данных и он сам учится на них и находит необходимые алгоритмы и закономерности самостоятельно, такие случаи называются Машинным обучением. И одним из вариантов нахождения компьютером таких закономерностей является глубокое обучение, в котором используется несколько слоев нейронных сетей, что делает такие вычисления с одной стороны, более эффективными, с другой стороны, более трудными для расшифровки.
Примеры использования ИИ, МО и ГО
Давайте посмотрим несколько примеров использования Искусственного интеллекта, машинного и глубокого обучения в нашей повседневной жизни.
Искусственный интеллект
Все лунные модули, которые бороздят поверхность Луны, используют алгоритмы ИИ. Их не надо контролировать каждую секунду, они сами принимают решения как объезжать препятствия и как собрать грунт в том или ином труднодоступном месте.
ИИ применяется и в беспилотных автомобилях. С помощью множества сенсоров, такие автомобили анализируют находящуюся вокруг них обстановку, определяют другие движущиеся машины, пешеходов, знаки дорожного движения, разметку, выбирают кратчайший путь и т.д.
Наше взаимодействие с голосовыми помощниками. Когда мы просим Алексу, Сири, или Алису от Яндекса сделать или найти что-то, они конвертируют наш голос в команды, обрабатывают их и выдают то, что нам необходимо.
Кроме голосовых помощников, очень развиты сейчас чат-боты, когда вы можете переписываться с компьютером, и он будет отвечать на ваши запросы. А в последнее время участились и звонки роботов на наши мобильные телефоны. Они могут предлагать какие-то рекламные акции или даже расспрашивать у вас информацию, например, когда вы планируете погасить кредитную задолженность. Такие роботы уже заменили многих сотрудников колл-центров.
Машинное обучение
Улучшение выдачи результатов поиска в Google. Когда ты вбиваешь какой-то запрос в поисковой строке, тебе выводится несколько ссылок. Если ты заходишь по одной из ссылок на первой странице, и просматриваешь страницу и проводишь там какое-то время изучая и читая информацию на этой странице, Google понимает, что ты нашел что искал. Когда заходишь на вторую, третью страницу, и видишь, что все это не то, то Google понимает, что это менее нужная информация, и в следующий раз когда другой человек зайдет на Google и спросит его об этом же, то Google будет знать, что лучше выдать в первой строчке на первой странице.
Решение о выдаче кредита банком. Компьютер анализирует большое количество параметров потенциального заемщика и потом распределяет его в категорию хороший или плохой заемщик, либо дает ему конкретный кредитный скоринг. Все это происходит на основе кредитной истории предыдущих заемщиков и как они схожи с потенциальным новым заемщиком. Выборка постоянно дополняется историей каждого нового заемщика, расплатился ли он с кредитом и выплатил ли его вовремя, она обновляется, и также обновляется и алгоритм, находятся новые закономерности, которые позволяют принимать правильные решения о выдаче кредита новому заемщику.
Выбор места для ритейла. В ритейле одним из самых главных факторов, которые влияют на прибыльность бизнеса, является местоположение. У сети кофеен Старбакс имеется около 30 000 локаций по всему миру. Вы накопили большой объем информации о том, в каких местах продажи лучше. На основе этой информации вы можете составить алгоритм по выбору наиболее удачного места в новой локации. Ваши переменные могут включать геохарактеристики (расстояние до центра города, до метро, цена за квадратный метр), трафик (число маршрутов наземного транспорта в разных радиусах от локации) и наличие тех или иных объектов рядом, например, торговых центров, бизнес-центров, домов, школ и банков.
Глубокое обучение
Очень часто ГО используется для распознавания объектов на изображениях. Кроме того, с помощью ГО черно-белые изображения или фильмы можно сделать цветными. До этого компьютер уже обработал большое количество данных и информации в интернете либо в базе данной, которую ему предоставили для этого, и он уже знает различные оттенки серого и может легко понять в какой цвет необходимо преобразить тот или иной пиксель изображения.
Машинный перевод. Возможно, кто-то из вас использовал Google Translate, и вы могли заметить насколько хорошо он переводит в последнее время. Практически ничего не надо исправлять. Но если вспомнить примерно 5 или 7 лет назад, то качество перевода было далеко от идеального. А все потому, что сейчас вместо множества правил как надо переводить, используются нейронные сети, через которые уже прошли миллионы переводов художественной, технической и другой литературы, и эти алгоритмы ГО все продолжают улучшаться.
Интеллектуальные игры: шахматы, Го, Дота 2, покер и другие. Долгое время считалось, что компьютер никогда не превзойдет по силе мысли человека до тех пор, пока он не сможет обыграть его в шахматы. Однако, это случилось в конце 20 века, а в 2010-х годах, компьютер, обученный алгоритмами ГО, смог обыграть и чемпионов в го – игру, которая считается даже еще более сложной чем шахматы. Сейчас не проходит и года, как не появляется очередная новость о том, что компьютер обыграл человека в очередной игре. ИИ уже обыграл людей в покер, Доту 2 и другие интеллектуальные игры. Все это получилось благодаря задействованию нейронных сетей и ГО.
Распознавание злокачественных заболеваний на коже или органах человека. Одним из самых полезных применений ИИ – это медицина. С помощью ГО и нейронных сетей компьютеры сегодня могут распознавать злокачественные опухоли еще на ранней стадии и даже лучше, чем опытные доктора. Это хорошо еще и тем, что пациент, находящийся в одной точке земного шара, может переслать свои снимки в лабораторию в другой стране для принятия решения. Предсказывается, что в будущем роботы с помощью ИИ будут выполнять все больше и больше сложных операций без участия человека.
Еще одним популярным применением ГО являются так называемые рекомендательные системы: когда при покупке одного товара нам предлагают другой. Наверное, вы видели, когда на сайте появляется фраза: «с этим товаром часто покупают». Или при просмотре фильма, или книги на сайте агрегаторе, вам начинают предлагать фильмы и книги похожей категории или те фильмы, которые смотрели пользователи, похожие на вас по различным параметрам. Все это алгоритмы ИИ, подкрепленные НС.
И в конце, на что еще хотелось бы обратить внимание. Как уже было сказано, и ГО и МО являются только частью более общей области под названием ИИ. Так вот, в сложных проектах, как правило, присутствует несколько видов алгоритмов ИИ, и глубокое обучение и машинное обучение, и другие виды. Например, во время движения беспилотного автомобиля участвует более 100 различных алгоритмов, которые ответственны за распознавание объектов, управление движением, навигацию, безопасность, и т.д.
Как вы заметили по приведенным примерам, ИИ уже используется во многих областях в нашей повседневной жизни. Считается, что в ближайшие пару десятилетий ИИ будет использоваться большинством компаний и охватывать большую часть нашей жизнедеятельности.
Основные задачи и методы машинного обучения
Обучение с учителем и обучение без учителя
Если вы интересовались темой искусственного интеллекта и машинного обучения, возможно вы уже встречались с такими понятиями как обучение с учителем (на англ. supervised learning) и обучение без учителя (unsupervised learning). В этой главе мы узнаем, чем отличаются эти два понятия.
Во-первых, они оба являются видами машинного обучения.
Во-вторых, обучение с учителем не обязательно подразумевает, что кто-то стоит над компьютером и контролирует каждое его действие. В терминах машинного обучения, обучение с «учителем» означает, что человек уже подготовил данные для дальнейшей работы над ними компьютером, то есть у каждого объекта имеется метка (на англ. label) которая выделяет этот объект от остальных объектов или дает ему какое-то именное или числовое наименование. И компьютеру остается только найти закономерности между признаками объектов и их наименованиями, основываясь на этих подготовленных или как их называют помеченных данных. На английском такие данные называются labeled data.
Обучение с учителем включает два основных типа задач: регрессия и классификация. Давайте посмотрим на типичный пример задачи классификации.
Это будет пример цветков ириса Фишера. Этот набор данных стал уже классическим, и часто используется для иллюстрации работы различных статистических алгоритмов. Вы можете найти его по следующей ссылке (https://gist.github.com/curran/a08a1080b88344b0c8a7) либо просто вбив в интернете.
В природе существует три вида цветков ириса. Они отличаются друг от друга размерами лепестка и чашелистника. Все данные по цветкам занесены в таблицу, в столбиках указаны длина и ширина лепестка, а также длина и ширина чашелистника. В последнем столбце указан вид ириса – Ирис щетинистый (Iris setosa), Ирис виргинский (Iris virginica) и Ирис разноцветный (Iris versicolor). Тот или иной вид ириса и является в нашем случае меткой.
На основании этого набора данных требуется построить правило классификации, определяющее вид растения в зависимости от размеров. Это задача многоклассовой классификации, так как имеется три класса – три вида ириса.
В данном случае с помощью алгоритма классификации, мы разделяем наши ирисы на три вида в зависимости от длины и ширины лепестка и чашелистника. В следующий раз, если нам попадется новый представитель ирисов, с помощью нашей модели мы сможем сразу же его поместить в тот или иной из трех классов.
Почему этот пример можно считать обучение с учителем? Потому что наши данные распределены по признакам, у каждого признака есть показатель для конкретного цветка, то есть размеры длины и ширины. И имеются ответы или метки, какой вид ириса бывает при тех или иных размерах лепестка и чашелистника. То есть мы как учитель обучаем нашу модель и говорим ей, что вот окей, если ты видишь, что размер лепестка такой-то, а чашелистника – такой, то этой ирис виргинский, а если размеры такие-то и такие-то, то это ирис разноцветный. Это и называется обучение с учителем, когда мы показываем нашей модели все ответы в зависимости от признаков. Модель учится на этих данных, и создает формулу или алгоритм, который поможет нам в будущем предсказывать вид цветка в зависимости от размеров, когда нам будут поступать новые образцы цветов.
Кроме задач классификации, о которой мы только что говорили в примере с ирисами, есть еще один вид машинного обучения с учителем. Это регрессия.
Если в задачах классификации мы имеем несколько классов объектов, то в задачах регрессии, у нас один класс, но каждый объект отличается от другого и нам надо предсказать какой будет числовой показатель того или иного признака каждого объекта в зависимости от других его признаков и опять же на основании набора данных, которые мы предоставим нашему компьютеру.
Классический пример регрессии – это когда мы предсказываем цену квартиры в зависимости от ее площади.
Опять же мы имеем какую-то таблицу с данными разных квартир. В одном столбце площадь, а в другом – цены на эти квартиры. Это очень упрощенный пример регрессии, естественно, что цена квартиры будет зависеть от множества других факторов, но все же он наглядно демонстрирует, что такое регрессия. Так вот, в последнем столбце мы расположили фактические или реальные цены на квартиры с таким метражом. То есть, мы как учитель, показываем нашей модели, что вот, если видишь, что метраж такой-то, то цена будет такая-то и т.д. На основе этих данных модель учится, и потом выдает алгоритм, на основе которого мы можем предсказывать, какая будет цена квартиры, если условная площадь будет такая-то.
Таким образом, если суммировать, то в обучении с учителем – ключевая фраза – это labeled data или помеченные данные. То есть мы загружаем в нашу модель данные с ответами, будь то класс, к которому принадлежит тот или иной объект или реальная цена квартиры в зависимости от площади. На основе этой информации модель учится и создает алгоритм, который может делать прогнозы.
Идем дальше. Второй вид машинного обучения – это обучение без учителя. Это когда мы позволяем нашей модели обучаться самостоятельно и находить информацию, которая может быть не видна очевидно для человека.
В отличие от обучения с учителем, модели, которые используются в обучении без учителя, выводят закономерности и выводы на основе немаркированных данных (или unlabeled data). Помните, у нас был пример с цветками ириса. Так вот в данных, которые мы давали компьютеру, присутствовали ответы какой вид ириса мы имеем в зависимости от тех или иных размеров лепестка и чашелистника. А в немаркированных данных, у нас имеются данные и признаки, но мы не имеем ответа к какому виду или классу они относятся. Поэтому такие данные называются немаркированные.
В обучении без учителя основными типами задач являются Кластеризация и снижение размерности. Если в двух словах, то снижение размерности означает, что мы удаляем ненужные или излишние признаки из наших данных, чтобы облегчить классификацию наших данных и сделать ее более понятной для интерпретации.
Давайте рассмотрим пример кластеризации.
В задачах кластеризации у нас имеется набор объектов и нам надо выявить его внутреннюю структуру. То есть нам надо найти группы объектов внутри этого набора, которые наиболее похожи между собой, и отличаются от других групп объектов из этого же набора. Например, разобрать все движущиеся средства по категориям, например, все средства, похожие на велосипед, в одну группу или кластер, а похожие на автобус – в отдельную группу. Причем, мы не говорим компьютеру, что чем является, он должен самостоятельно найти схожие признаки и определить похожие объекты в ту или иную группу. Поэтому это и называется обучение без учителя, потому что мы не говорим изначально компьютеру к какой группе принадлежат те или иные объекты.
Такие задачи бывают очень полезны для крупных ритейлеров, если они, например, хотят понять из кого состоят их клиенты. Предположим, есть крупный гипермаркет, и чтобы делать точечные рекламные акции для своих потребителей, ему необходимо будет разбить их по группам или кластерам. И если сейчас акция на спортивные товары, то отправлять информацию об этой акции не всем подряд потребителям, а только тем, кто в прошлом уже покупали спортивные товары.
Таким образом, основная разница между обучением с учителем и обучением без учителя, это то, что в обучении с учителем мы используем маркированные данные, где каждый объект помечен и относится к тому или иному классу или имеет конкретное числовое значение. И на основе этих помеченных данных наша модель строит алгоритм, который помогает нам прогнозировать результаты при новых данных. А в обучении без учителя, имеющиеся у нас данные непромаркированы, и компьютер самостоятельно выводит определенные закономерности и общие признаки и разделяет все объекты на разные группы, схожие внутри одной группы и отличающиеся от объектов в других группах.
Основные задачи обучения с учителем разделяются на два типа: Классификация, когда мы разделяем наши данные на классы, и Регрессия, когда мы делаем численный прогноз на основе предыдущих данных.
Основные задачи обучения без учителя включают в себя кластеризацию, когда компьютер делит наши данные на группы или кластеры. И снижение размерности, которое необходимо для более удобной демонстрации больших объемов данных.
Указанные задачи мы рассмотрим более подробно в следующих главах.
Регрессия
Итак, одной из самых популярных задач машинного обучения является регрессия. Это задача определить какую-то величину в цифрах (например, вес человека, стоимость квартиры, объем продаж) используя известную информацию (рост, площадь, удаленность от метро, сезонность).
Давайте возьмем пример с предсказанием стоимости квартиры в зависимости от площади. Для любой задачи машинного обучения нужны данные, и чем больше, тем лучше. Так вот, представим, что у нас есть табличка с данными, в одном столбце площадь квартиры, в другом цена этой квартиры.
Мы располагаем эти данные на графике и в принципе можем заметить, что тут имеется определенная линейная зависимость, которая достаточно очевидна, что чем больше площадь, тем выше стоимость квартиры. Понятное дело, что на стоимость квартиры будет влиять намного больше факторов, как например, удаленность от центра города и от метро, этажность, возраст дома и т.д. Но для упрощения, возьмем всего один признак – площадь квартиры.
Так вот, наша задача – научиться предсказывать цену. Для этого нам нужна будет формула, с помощью которой мы сможем подставлять площадь, и нам будет выдаваться цена.
В данном случае мы видим линейную зависимость, и в таких ситуациях используется формула прямой Y = AX + B, в которой Y = цена, X – площадь.
На самом деле, зависимость необязательно будет линейной, она может быть кривой, либо иметь совсем странный вид.
Так вот, чтобы у нас была конкретная рабочая формула, нам надо найти коэффициенты А и В.
Как это можно сделать? Самый простой классический способ, который вы наверняка проходили на уроках алгебры или статистики – это метод наименьших квадратов. На самом деле этот метод был придуман еще 200 лет назад, и сейчас появились более эффективные решения, но тем не менее метод наименьших квадратов по-прежнему актуален и используется достаточно часто в задачах регрессии.