4 мая 2017 г. | Автор: Андрей Андреев, Microsoft
Как научить компьютер думать?

Слово "компьютер" переводится с английского как "вычислитель". То есть он хорошо может считать. А вот научить его думать учёные пытаются уже много лет. Самое лучшее, чего мы смогли достичь - это научить компьютер играть в шахматы.

Мы всегда пытались сделать это, создавая алгоритмы. Они хорошо работают для ситуаций, в которых мы заранее знаем результат. А если результат неизвестен? Или количество вариантов такое большое, что предусмотреть все мы не можем. Как же быть в этой ситуации? Оказалось, что тут мы можем использовать способность компьютера быстро обрабатывать большие объёмы данных. Нужно загрузить много-много информации на одну тему и заставить компьютер найти в этой информации какие-то закономерности (как это сделать, учёные уже знают). Компьютер их запомнит, и, если он получит другую информацию на заданную тему, он сможет на основе этих закономерностей принять решение. Конечно, оно необязательно будет правильным, но ведь и люди часто ошибаются.

Это направление в науке о компьютерах получило название "машинное обучение" (или "machine learning" по-английски).

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

Что такое облако? Облака — это взвешенные в атмосфере продукты конденсации водяного пара. Угадать заранее, что выпадет из облака - дождь, снег, град - сложно. Иногда это может быть что-то совсем неожиданное. Например, рыба. :) То же и с вычислительными облаками. Они находятся "где-то" далеко, они мощные, могут содержать огромное количество "виртуальных" компьютеров, они могут выдать нам очень быстро любой результат. И, что важно, для того, чтобы воспользоваться ими, нужно просто открыть окно в браузере или мобильное приложение. Этим и пользуются учёные для применения методов "машинного обучения". В облако загружается очень много данных, создаётся много виртуальных компьютеров для обработки этих данных. Потом мы учим компьютеры тому, как эти данные обрабатывать и, после получения результата используем его для анализа новой информации.

Можно ли посмотреть, как всё это работает? Конечно! Проще всего сделать это, воспользовавшись сервисами, которые используют "машинное обучение". Давайте рассмотрим "когнитивные" сервисы, которые создала компания Microsoft для работы с картинками, фотографиями, текстами, речью и многим другим.

КОГНИТИВНЫЙ, -ая, -ое. [от лат. cōgnitio знание, познание] - Связанный с познанием, с мышлением; познавательный. Когнитивный анализ - исследование процессов познания человеком окружающего мира, а также способности человека приобретать новые знания. Когнитивная система человека - центральная нервная система и органы чувств, с помощью которых человек познает окружающий мир и самого себя.

Для того, чтобы "испытать" сервисы, нужно зайти на сайт https://www.microsoft.com/cognitive-services/

Попробуем загрузить фотографию и посмотрим, что скажет нам компьютер о ней. 

В правом окне мы можем прочитать информацию о фотографии, которую нам выдал компьютер.

В данном случае анализируются эмоции. Каждая эмоция оценивается в цифрах. Чем ближе значение к единице (самое большее возможное - 1), тем больше она выражена. Нам у этого мальчика больше всего заметно удивление. Компьютер присвоил этой эмоции значение 0.875295341. У всех остальных эмоций оно близко к нулю (кроме радости, но она тоже не очень велика). То есть можно сказать, что по мнению компьютера, мальчик больше всего удивлён и немного обрадован. Мне кажется, что это близко к истине.

А что вы скажете об этой женщине? 

Компьютер определил, что больше всего она испытывает отвращение (0.72907275), немного грусть (0.150495708) и немного гнев (0.11228478) . Похоже на правду?

Можете поэкспериментировать со своими фотографиями. Посмотрите, что получится. Да, кстати, не подсовывайте сервису фотографии неодушевлённых предметов - он хорошо разбирается в фотографиях и может легко понять, где люди, а где - нет.

Ещё один когнитивный сервис, с которым можно "поиграть" - сервис по распознаванию лиц https://www.microsoft.com/cognitive-services/en-us/face-api. Он может многое рассказать о человеческом лице: пол, возраст, настроение, в очках человек или нет, описать лицо. Он может определить, сколько человек на фотографии и описать каждого. Может сравнить две фотографии и сказать, насколько вероятно, что на них изображён один и тот же человек.

 

Например, на этой картинке совпадение - 0.771, то есть довольно высокое (как мы поним, самое большое значение - 1).

А на следующей - компьютер решил, что лица героев не очень похожи (0.195).

Но больше всего нам нравится сервис компьютерного зрения https://www.microsoft.com/cognitive-services/en-us/computer-vision-api . Его работа поразительна!

Загружаем картинку, и сервис определяет, какого она типа (картинка или фото), что на ней изображено, какие цвета преобладают, можно ли смотреть её детям и т.д. Например, на этой картинке компьютер увидел женщину 24 лет, бегущую по дороге на фоне неба:

А на этой - вид высоких зданий на фоне гор. Конечно, вы сразу догадались, что это за город?

 

А на этой картинке сервис обнаружил и прочитал текст (и очень точно):

 

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

Наверное, вы заметили, что результаты сервис представляет в таком формате:

[

{

"faceRectangle": {

"left": 176,

"top": 188,

"width": 213,

"height": 213

},

"scores": {

"anger": 0.000005779621,

"contempt": 0.0000634569,

"disgust": 0.0000245519477,

"fear": 0.000346612127,

"happiness": 0.114344768,

"neutral": 0.00990214851,

"sadness": 0.0000173390872,

"surprise": 0.875295341

}

}

]

Этот формат называется JSON (расшифровывается как JavaScript Object Notation) - специальный формат данных, который программисты могут считывать и использовать в своих программах. Благодаря этому когнитивные сервисы используются не только для развлечения и понимания мощи машинного обучения, но и в разных программах (для смартфонов и для веб-сайтов), которые вы, возможно, уже используете.

Вот так мы учим компьютеры распознавать объекты реального мира. И совсем скоро эти навыки будут использоваться практически везде. Будьте готовы к сюрпризам!