К чему привела «нейронная революция»
Летом минувшего года сотни тысяч человек скачали на смартфоны приложение Prisma, которое любой, даже совсем не парадный вид превращало в шедевры Ван Гога и Матисса. А пару месяцев спустя слушали альбом несуществующей группы «Нейронная оборона», все тексты песен в котором были написаны нейронной сетью в стиле лидера группы «Гражданская оборона» Егора Летова. Несмотря на относительно недавний всплеск интереса к нейросетям и их возможностям со стороны массовой публики, нейронная революция произошла гораздо раньше.
Основы нейронных сетей как одного из методов машинного обучения зародились еще в 1943 году, даже до появления термина «искусственный интеллект». А первую версию нейрона (ячейку нейронной сети) предложили Уоррен Маккалок и Уолтер Питтс. Уже спустя 15 лет Фрэнк Розенблатт представил первую самую простую нейронную сеть, которая уже могла разделять, например, объекты в двухмерном пространстве.
Переломные моменты в развитии технологии, однако, ждали ученых позже: в 2007 году в Университете Торонто создали алгоритмы глубокого обучения многослойных нейронных сетей, а в 2012-м исследователи из того же университета применили глубокие нейросети и научились распознавать объекты на фото и видео с минимумом ошибок.
Сегодня уже никого не удивляет, что Facebook безошибочно находит вас на фотографии, загруженной другом, а многочисленные приложения, которые в один клик «перерисуют» вид из окна вашей квартиры в полотно «под Моне», давно стали обычным делом. И даже поисковик «Яндекса» лучше большинства из нас определит, где на фото сибирский хаски, а где обычный.
Как это работает?
Условно говоря, чтобы научить сеть определять закат на фотографии, необходимо «скормить» ей миллионы снимков заката и фотографий, на которых заката нет, сопроводив эти изображение необходимыми метками. После этого сеть сама подберет алгоритм, который для фотографий будет выдавать вектор — набор чисел — таким образом, что вектора «закатов» будут похожими, а вектора других фотографий будут резко отличаться от «закатов». Тот же принцип действует и с другими объектами.
«Чтобы нейронная сеть нам выдавала векторы изображений, нам нужно сначала ее натренировать. Для этого нейронной сети на вход подается огромное количество изображений, у которых есть лейблы. То есть буквально подписано, что, например, на этом изображении у нас птица, а на этом изображении у нас собака. И таких птиц-собак должно быть очень-очень много. Затем мы говорим сети подобрать такой алгоритм, который позволит ей получить числа из изображения. В результате у нас должны получиться числа, схожие в пределах одной группы изображений (допустим, птиц), но отличающиеся от другой — в данном примере, „собак“. Это и позволит сети в дальнейшем различать эти группы. Сети можно тренировать совершенно различным способом. Это может быть сеть, которая отличает людей друг от друга, или сеть, которая понимает, разведен сейчас мост или нет. Все зависит от того, какие данные мы даем ей изначально», — уточняет бакалавр кафедры графических технологий Университета ИТМО Людмила Корнилова.
Потренироваться в создании собственных алгоритмов она смогла на хакатоне по машинному обучению от Data Science Study Club. Его участники использовали библиотеку для машинного обучения tensorFlow, а команда Людмилы, в частности, работала с уже обученной нейронной сетью Resnet от Microsoft. Проверить возможности сети участники решили шуточным способом и научили ее подбирать к фотографиям людей подходящих им покемонов.
«Идея с покемонами возникла просто ради шутки. Мне кажется, это что-то, что лежит на поверхности, это такая мейнстримная вещь, которая вызывает ностальгию и ассоциируется с детством. Мы подумали, что такой проект принесет нам удовольствие, — рассказывает она. — Так как тренировка нейронной сети — это очень трудоемкий процесс, который мы не смогли бы реализовать в формате хакатона, то мы взяли уже натренированную сеть. Конкретно сеть Resnet специализируется на том, чтобы отличать различные объекты друг от друга. Это могут быть те же кружки, столы и так далее. Но она, естественно, не натренирована на то, чтобы отличать покемонов или определять портретное сходство покемонов с людьми«
Как сеть определяет сходства или различия? Разумеется, совсем не так, как это делают люди, в которых эта возможность заложена природой. Для нейронной сети понятия формы носа или цвета глаз очень абстрактны. Поэтому в процессе тренировки она сама находит такие особенности, которые в итоге позволяют ей отличать один предмет от другого, уточняет Людмила. Чтобы добиться от нейросети портретного сходства, необходимо как минимум внедрить алгоритм поиска лица на фотографии и, во-вторых, попытаться натренировать сеть таким образом, чтобы она научилась отличать какие-то характерные черты, например, форму носа или специфический взгляд.
Команда Людмилы решила отказаться от частностей и предоставить сети самой подобрать человеку «своего покемона».
«Мы не использовали алгоритм поиска лица на фотографии, тем не менее, сеть все равно выделяла какие-то общие особенности. Забавный пример: если на фотографии у человека где-нибудь присутствует спираль, то он при этом выдаст покемона, у которого тоже есть спираль. Кроме того, сеть может уловить какую-то общую форму, иногда он „ловит“ поворот головы», — продолжает она.
На данном этапе протестировать, как работает программа, и найти своего покемона, может любой желающий. Однако продлевать шуточный эксперимент с покемонами Людмила не планирует. В планах бакалавра кафедры графических технологий и дальше изучать computer scienсe и машинное обучение и в перспективе поехать учиться по обмену. Готовит она и еще несколько проектов, одним из которых станет сервис, основанный на векторном представлении слов.
«Сейчас я прохожу Стэнфордский курс по машинному обучению. У меня есть в планах проект, который задействует векторное представление слов. Это другая область machine learning, которая отвечает за то, как сеть видит слова, а не изображения. В чем идея моего будущего проекта? Есть несколько алгоритмов, благодаря которым можно получить векторы утверждений и сравнить их с векторами понятий, наподобие понятий „хорошо“ или „плохо“. Можно посмотреть, насколько нейронная сеть будет различать эти два понятия и сможет ли она сказать, что, грубо говоря, утверждение „убить котенка“ — хуже, чем „купить мороженое“. На основе этого тоже хотелось бы сделать собственный сервис, который позволяет принимать решение. Таким образом, нейронная сеть будет рекомендовать вам, что лучше сделать», — рассказывает Людмила Корнилова.
Сети уже знают, что захочет человек
Впрочем, генерация текстов, изображений, музыки, умные ленты и технологии, которые предложат вам товар еще до того, как вы успели его захотеть — это возможности уже сегодняшнего дня, сходятся во мнении специалисты. Развлекательные приложения и сервисы — это только вершина асйсберга возможностей нейросетей. Среди перспективных сфер развития технологий специалисты называют медицину, робототехнику, транспорт и другие.
К примеру, ученые университета Иннополис Мануэль Маццара и Леонард Йохард уже участвуют в проекте BioDynaMo. Заручившись поддержкой Intel и CERN, они планируют создать опытный образец, способный воспроизвести масштабную симуляцию мозговой коры. С помощью такого образца они намерены повысить эффективность и экономичность экспериментов, в которых требуется наличие живого человеческого мозга. А российская компания Youth Laboratories работает над сервисом RYNKL, который позволяет отследить, как старение влияет на кожу и как с ним борются различные препараты.
При этом данные и наработки крупнейших технологических гигантов в области машинного обучения становятся все более открытыми. Совсем недавно, 15 февраля, компания IBM открыла доступ к основному компоненту для машинного обучения, используемому суперкомпьютером Watson, который позволит другим организациями адаптировать мощности системы для своих нужд. Речь идет о платформе IBM Machine Learning, задача которой снизить сложность разработки и развертки специализированных аналитических моделей.