Нейронные сети не только распознают тексты, изображения и речь, но и помогают диагностировать заболевания и искать полезные ископаемые. Как это происходит? Дата-сайентист и руководитель направления продвинутой аналитики и машинного обучения в ПАО «Газпром нефть» Анна Дубовик рассказала, как это работает и почему не стоит верить громким заявлениям компаний, которые «распознали все». T&P записали главное.


В чем секрет успеха нейронных сетей и как распознавать все: от рака легких до залежей нефти?

Лекция. 1 сентября 2019, в рамках фестиваля Science Bar Hopping. Организаторы — Фонд инфраструктурных и образовательных программ «Роснано» и «Бумага Медиа»
Анна Дубовик, дата-сайентист, руководитель направления продвинутой аналитики и машинного обучения в ПАО «Газпром нефть»

Три важных факта об искусственном интеллекте

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

Не бывает «волшебных черных ящиков». Не существует искусственного интеллекта, в который вы что-то забрасываете, и он все за вас высчитывает. Самое важное — это качественные данные, на которых происходит обучение. Все архитектуры и алгоритмы известны, и секрет какого-то нового классного приложения всегда в данных.

Машинное обучение развивается в основном силами открытого сообщества. Мы за открытый код — так же, как Google и другие разработчики всего открытого и хорошего.

От эвристики к обучению

Небольшой ликбез: ИИ — большая отрасль, частью которой является машинное обучение. В нем есть много алгоритмов, самые интересные — нейросети. Глубокое обучение — конкретный тип нейросетей, которым мы занимаемся:

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

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

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

Например, у Pornhub отличные нейросетевые алгоритмы, но есть и эвристики. На сайте представлены разделы: «Популярное» — по количеству просмотров, «Лучшее» — по количеству лайков, и есть «Горячее» (Hottest). Как определить его эвристику? Она вычисляется не по количеству просмотров и не по популярным хэштегам. Это видео, которые смотрят последними перед уходом с сайта — именно они вызывают у пользователей больше всего эмоций.

Когда и почему появились нейросети? Впервые о них написали в 1959 году, но количество публикаций стало резко увеличиваться только с 2009 года. 50 лет ничего не происходило: не было возможности проводить вычисления, не существовало современных графических ускорителей. Чтобы обучить нейросеть чему-то, необходимо много вычислительных мощностей и сильное железо. Но теперь каждый день выходит по 50 публикаций о достижениях нейросетей, и обратного пути нет.

Важнее всего, что нейросеть — это не волшебство. Когда люди узнают, что я занимаюсь data science, начинают предлагать мне идеи стартапа: взять откуда-нибудь, например в Facebook, все данные, забросить в нейросеть и предсказать, условно говоря, «все». Но это так не работает. Всегда есть конкретный тип данных и четкая постановка задачи:

Как видите, в списке нет «распознавания», потому что так это называется на языке людей, а математически может формулироваться по-разному. И поэтому сложные задачи всегда разбиваются на более простые подзадачи.

Вот оцифрованное изображение рукописной цифры 9, 28 на 28 пикселей:

Источник: www.3blue1brown.com

Первый слой нейросети — это вход, который «видит» 784 пикселя, окрашенных в разные оттенки серого. Последний — выход: несколько категорий, к одной из которых мы просим отнести то, что было отправлено на вход. И между ними — скрытые слои:

Эти скрытые слои — это некоторая функция, которую мы не задаем никакой эвристикой, она сама учится выводить математическую последовательность, которая с определенной вероятностью отнесет «входные» пиксели к определенному классу.

Как нейросети работают с изображениями

Классификация. Можно научить нейросеть классифицировать изображения, например распознавать породы собак:

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

Детекция. Это другая задача: на изображении нужно найти объект, принадлежащий к определенному классу. Например, мы загружаем в нейросеть снимок побережья и просим найти людей и кайты:

Подобный алгоритм сейчас проходит бета-тестирование в поисковом отряде «Лиза Алерт». Во время поисков участники отрядов делают множество снимков с помощью беспилотников, затем их отсматривают — и иногда именно так находят потерявшихся людей. Чтобы сократить время на отсмотр всех снимков, алгоритм отсеивает те снимки, на которых нет значимой для поисков информации. Но никакая нейросеть не даст стопроцентной точности, поэтому снимки, отобранные алгоритмом, валидируются людьми.

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

Генерация. У генерирующих сетей на входе — пустота, на выходе — какой-то класс объектов, а скрытые слои пытаются научиться превращать пустоту во что-то определенное. Например, вот два лица — оба были сгенерированы нейросетью:

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

А если мы можем сгенерировать изображение, значит, можно заставить его двигаться так же, как определенный человек, — то есть сгенерировать видео. Пример — недавний вирусный ролик, в котором Обама говорит, что Трамп идиот. Обама никогда этого не говорил, просто нейросеть научили мэтчиться (от англ. match — «совпадать, соответствовать, сопоставлять». — Прим. T&P) на Обаму, и когда другой человек говорил, камера транслировала его мимику на лицо бывшего американского президента. Другой пример — Ctrl Shift Face, который делает прекрасные дипфейки на звезд. Пока что нейросети не всегда срабатывают идеально, но с каждым годом будут делать это все лучше, и скоро на видео отличить реального человека от «намазанного» сетью будет невозможно. И никакой Face ID нас больше не застрахует от мошенничества.

Как нейросети работают с текстами

Тексты для сетей не имеют смысла, для них это просто «векторы», над которыми можно производить разные математические операции, например: «Король минус человек плюс женщина равно королева»:

Но из-за того, что нейросети учатся на текстах, созданных людьми, возникают курьезы. Например: «Доктор минус мужчина плюс женщина равно медсестра». В представлении нейросети женщин-врачей не существует.

Машинный перевод. Раньше многие пользовались переводчиком, работа которого была построена на эвристиках: эти слова значат то-то, их можно переводить и склонять только так-то и располагать вот в таком порядке. Он не мог отойти от этих правил, и часто в целом получалась ерунда:

Сегодня в работу Google Translate добавили нейронные сети, и переведенные им тексты выглядят уже гораздо более литературно.

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

Сочинение о вреде переработки отходов

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

Распознавание и генерация речи. Все то же самое, что и с распознаванием изображения: есть звук, нужно оцифровать сигнал:

Именно так работают «Алиса» и Siri. Когда вы пишете в Google Translate некий текст, он его переводит, формирует из букв звуковую волну и воспроизводит ее, то есть генерирует речь.

Обучение с подкреплением

Игра в «Арканоид» — самый простой пример обучения с подкреплением:

Есть агент — то, на что вы воздействуете, что может менять свое поведение, — в данном случае это горизонтальная «палка» внизу. Есть среда, которая описана разными модулями, — это все, что вокруг «палки». Есть награда: когда сетка роняет шарик, мы говорим, что она теряет свою награду.

Когда нейросеть выбивает очки, мы говорим ей, что это здóрово и она работает хорошо. И тогда сеть начинает изобретать действия, которые приведут ее к победе, максимизируют выгоду. Сначала кидает шарик и просто стоит. Мы говорим: «Плохо». Она: «Ладно, кину, подвинусь на один пиксель». — «Плохо». — «Кину, подвинусь на два, влево, вправо, буду рандомно дергаться». Процесс обучения нейросети — очень долгий и дорогой.

Другой пример обучения с подкреплением — это го. В мае 2014 года люди говорили, что компьютер еще не скоро научится понимать, как играть в го. Но уже в следующем году нейросеть обыграла чемпиона Европы. В марте 2016 года AlphaGo обыграла чемпиона мира высшего дана, а следующая версия выиграла у предыдущей с разгромным счетом 100:0, хотя делала абсолютно непредсказуемые шаги. У нее не было никаких ограничений, кроме игры по правилам:

Зачем учить компьютер играть в игры за бешеные деньги, вкладываться в киберспорт? Дело в том, что обучение движению и взаимодействию роботов в среде стоит еще дороже. Если ваш алгоритм ошибается и разбивает многомиллионный дрон, это очень обидно. А потренироваться на людях, но в Dota, сам Бог велел.

Открытый код

Как и кем реализуются приложения машинного обучения? Смелые заявления в интернете о том, что какая-то компания написала очередное приложение, которое «все распознало», не соответствуют действительности. Есть лидеры рынка, которые разрабатывают инструменты и выкладывают их в открытый доступ, чтобы все люди могли писать код, предлагать изменения, двигать отрасль. Есть «хорошие парни», которые тоже делятся некоторой частью кода. Но есть и «плохие парни», с которыми лучше не связываться, потому что они не разрабатывают собственные алгоритмы, а пользуются тем, что написали «хорошие парни», делают из их разработок собственных «франкенштейнов» и пытаются продавать.

Примеры использования data science в нефтяной отрасли

Поиск новых месторождений. Чтобы понять, есть ли в земле нефть, специалисты производят серию взрывов и записывают сигнал, чтобы затем посмотреть, как колебания проходят через землю. Но поверхностная волна искажает общую картину, забивает сигнал из недр, поэтому результат надо «почистить». Специалисты-сейсмики делают это в специальных программах, причем они не могут использовать каждый раз один и тот же фильтр или набор фильтров: чтобы найти искомую комбинацию, они каждый раз подбирают новую комбинацию фильтров. На примере их работы мы можем научить нейросеть делать то же самое:

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

Описание столба керна по типам литологии. Это задача сегментации. Есть фотографии керна — пород, вытащенных из скважины. Специалисту вручную нужно разобрать, какие пласты там находятся. Человек тратит на это недели и месяцы, а обученная нейросеть — до часа. Чем больше мы ее учим, тем лучше она работает:

«Лучше, чем человек»

У специалистов возникает вопрос, как можно работу нейросети сравнить с человеческим опытом: «Да Иван Петрович с нами с 1964 года, да он этого керна перенюхал!» Конечно, но он делал то же самое, что и сетка: брал керн, брал учебник, смотрел, как другие люди это делают, и пытался вывести из этого закономерность. Только нейросеть работает гораздо быстрее и жизненный опыт Ивана Петровича переживает 500 раз за день. Однако люди все равно еще не верят в технологию, поэтому нам приходится все задачи разбивать на небольшие этапы, чтобы эксперт мог завалидировать каждый из них и поверить в то, что нейросеть работает.

Все заявления о том, что какая-то нейросеть работает «лучше, чем человек», чаще всего ни на чем не основаны, потому что всегда найдется кто-то, кто будет «глупее» нейросети. Вы мне: «Распознай нефть». А я: «Ну, тут где-то». Вывод: «Ага, не получилось, значит, наша система работает лучше тебя». На самом деле для того, чтобы оценить эффективность работы нейросети, должно быть сравнение с целой группой экспертов, главными людьми в отрасли.

Не меньше вопросов вызывают заявления о точности. Если взять десять человек, один из которых болен раком легких, и сказать, что все они здоровы, то мы предскажем ситуацию с точностью в 90%. Мы ошиблись в одном из десяти, все честно, никто никого не обманул. Но полученный результат нас ни к чему не приводит. Любые новости о революционных разработках — неправда, если нет открытого кода или описания того, как они сделаны.

Данные должны быть качественными. Не существует ситуаций, когда вы вбрасываете в нейросеть неочищенные, неизвестно как собранные данные и получаете нечто дельное. Что значит «плохие данные»? Чтобы распознать онкологическое заболевание, нужно сделать много снимков компьютерной томографии в высоком разрешении и собрать из них 3D-куб органов. Тогда в одном из срезов врач сможет найти картину подозрения на рак — плотную массу, которой там быть не должно. Мы попросили специалистов разметить нам много таких снимков, чтобы поучить нейросеть выделять рак. Проблема в том, что один врач считает, что рак в одном месте, другой врач считает, что там два рака, третий врач думает еще как-то иначе. Сделать из этого нейросеть невозможно, потому что все это разные ткани, и если обучить нейросеть на таких данных, то она будет видеть рак вообще везде.

Проблемы нейросетей

С датасетом (data set — «набор данных». — Прим. T&P). Однажды китайская система распознавания нарушений выписала штраф за переход в неположенном месте женщине, которая на самом деле была лишь рекламой на автобусе, переезжавшем пешеходный переход. Это значит, что для обучения нейросети использовался неправильный датасет. Нужны были объекты в контексте, чтобы нейросеть научилась отличать настоящих женщин от рекламных изображений.

Другой пример: было соревнование по детекции рака легких. Одно сообщество выпустило датасет с тысячью снимками и разметило на них рак в соответствии с точкой зрения трех разных экспертов (но только в тех случаях, когда их мнения совпадали). На таком датасете можно было обучиться. А вот другая контора решила попиариться и выпустила новость, что использовала в работе несколько сотен тысяч рентгенов. Но оказалось, что больных там было только 20%. А ведь именно они являются для нас важными, ведь если нейросеть будет учиться без них, то не распознает заболевание. Более того, в эти 20% вошли несколько категорий заболеваний с разными подтипами болезней. И выяснилось, что так как это не 3D-картинка, а двухмерное изображение, то сделать с таким датасетом ничего нельзя.

Важно включать в датасет реальную информацию. Иначе придется штрафовать людей, наклеенных на автобусы.

С реализацией. Нейросети не знают, что предлагать в отсутствие информации и когда остановиться. Например, если вы завели себе новый почтовый аккаунт и нейросеть еще ничего о вас не знает, то в почте у вас первое время будет реклама, не имеющая лично к вам никакого отношения. А если вы искали в интернете диван и купили его, вам все равно еще долго будут рекламировать диваны, потому что нейросеть не в курсе, что вы уже совершили покупку. Чат-бот, полюбивший Гитлера, просто смотрел, что делают люди, и пытался мимикрировать. Имейте в виду: вы каждый день производите контент, и он может быть использован против вас.

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

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