Нейросети, они, как волейбольные или для рыболовства?
Возможно, Вы недавно обращали внимание на новости вида: "Нейросеть написала музыку в стиле Скрябина", "Нейросеть научилась писать стихи в стиле Нирваны", "Нейросеть создает картины в стиле знаменитых художников". Так что это за сети такие, и почему они так любят чужой стиль..?
Если говорить совсем просто, нейронная сеть (нейросеть, neural network, neural net) — это программа, имитирующая человеческий мозг. Если чуть посложнее, то:
Нейронная сеть (сокращенно «нейросеть») — это компьютерная программа, работающая по принципу человеческого мозга. Она состоит из множества нейронов — вычислительных единиц, которые получают информацию, производят над ней простые вычисления и передают ее дальше. Результат вычислений может быть получен путем взаимодействия нейронов, а также на основе опыта и ошибок прошлых запусков программы.
Откуда они взялись?
За последние десятилетия наука очень сильно продвинулась в изучении природы работы мозга. IT-индустрия развивалась еще быстрее. Появились новые области, в том числе методы Machine Learning (машинного обучения) — это когда компьютерной программе не дают точный алгоритм, что ей делать, а заставляют ее учиться самостоятельно методом проб и ошибок. Например, пытаясь работать как мозг. Современные компьютеры достаточно мощные, чтобы с их помощью применить достижения нейробиологов (изучают устройство и функционирование нервной системы, в т.ч. мозга) для имитации простого "мозга".
А мозг-то как работает?
Немного уйдем в сторону нейробиологии и что такое мозг? Это набор нейронов, обменивающихся друг с другом электрическими сигналами. Разные нейроны воспринимают разные стимулы, такие как свет, касание, боль. Сложная активность нейронов интерпретируется различными участками мозга в полезную информацию. Например, свет, падающий вам на сетчатку глаза, преобразуется в электрические сигналы, и по глазному нерву эта информация посылается в затылочную долю для интерпретации того, что у вас перед глазами.Каждый нейрон связан с множеством других нейронов на входе и на выходе. Это значит, что множество одних нейронов, получая сигнал (например из зрительного нерва), решают, каким нейронам их отправить дальше. И отправляют на участки мозга, например, отвечающие за определение света, размеров, положения в пространстве.
Мозг, в результате всего этого, выстраивает картину увиденного. Чем больше человек пользуется мозгом (занимаясь новым умственным трудом, которым не занимался раньше), тем больше у него образуется связей между разными нейронами. Именно поэтому так полезно всегда учиться чему-то новому, никогда не прекращая этот процесс. Это будет держать мозг в тонусе до самой глубокой старости.
ИИ ≈ мозг?
Неплохо программисты имитируют мозг. Сейчас есть программные средства, которые работают по подобию нейронов мозга. На вход программе подается сигнал, например файл с черно-белой картинкой. Входные данные (т.е. картинка) разбиваются на кусочки, которые скармливаются множеству маленьких блоков программы. Каждый из этих блоков имитирует нейрон. Каждый нейрон решает, что делать с полученным куском информации и, в зависимости от решения, изменяет и отправляет данные дальше тем или иным другим нейронам. И так процесс повторяется, пока все нужные нейроны не "обдумают" полученную информацию, попутно ее изменяя, и не выдадут на выход ответ. Например, файл с той же картинкой, но теперь уже цветной.
Вот эта программа и называется "нейросеть", а результаты ее работы гордо демонстрируются миру с заголовками "нейросеть раскрасила черно-белую картинку". Кстати, это не вымышленный пример, именно с помощью нейросетей сейчас раскрашивают старые черно-белые фотографии и фильмы.
Откуда оно знает, как работать?
В примере с раскрашиванием картинки, откуда нейросети знают, в какой цвет им раскрашивать ту или иную часть картинки? Когда программу-нейросеть сделают, она будет абсолютно "неумная", она не знает, что ей делать с входными данными. Поэтому, сначала программу нужно научить тому, что от нее ожидают. Этот процесс называется "машинное обучение", а если применяется нейросеть - то так же говорят "обучение нейросети". Выглядит процесс так: программе дают входные данные и показывают, какие должны получиться выходные данные. Программа-нейросеть пробует изменять входные данные в своих блоках-нейронах таким образом, чтобы получить искомое. Сначала на первой порции данных, затем на второй, на третьей... В нашу нейросеть-раскрашиватель последовательно подаются цветные картинки и они же в черно белом виде. Тысячи, миллионы картинок - и вот нейросеть уже настолько "прокачалась", что научилась правильно определять: губы человека на фотографии - крановатые, солнце - желтое, небо - синее, и т.д. Как правило, чем больше итераций обучения, тем качественее потом работает нейросеть на настоящих данных.
Всегда копируют чей-то стиль - у них что, своего чувства стиля нет?
Нейросеть — всего лишь программа, и никаких чувств у нее нет. Когда в новости пишут, чей стиль на этот раз сымитировали с помощью нейросетей, имеется в виду, что для обучения нейросети использовали творчество названного человека. Натаскиваешь нейросеть на картинах Ван-Гога, она научится раскрашивать ваши фотографии в таком же стиле. Натаскиваешь на тексты Нирваны, получаешь новый рок-шедевр. Сымитировать можно практически все, главное — иметь достаточно входных данных, то есть образцов творчества того, кого будем имитировать.
Нейросеть — создатель поделок из чужого творчества?
На самом деле, нет. Из новостей складывается такое впечатление только по той причине, что это "громкие" заголовки, привлекающие внимание широкой общественности. В реальности же, помимо имитации нейросети очень хорошо показали себя в следующих задачах:
- распознование изображений и видео, в том числе автоматическое распознавание номеров машин, определение личности людей в зоне видеонаблюдения. Генерация описаний того, что на изображении. Слежение за объектом при видеонаблюдении.
- распознавание речи, в том числе при звонках на телефон. Определение жанра музыки. В распознавании речи направлении прогресс не столь хорош, как при работе с изображением и видео. Нейросети натасканы на узкоспециализированные темы разговоров, определенные ключевые слова. Анекдот в тему: если при разговоре по телефону сказать "Бомба" и "Путин" - вас автоматически переключат на другую линию, связь станет качественной и не будет рваться :)
- распознавание смысла текста, эмоциональности. Поисковые системы много работают над тем, чтобы понимать запросы людей на обычном человеческом языке. Всего несколько лет назад нужно было писать запросы определенным образом, чтобы найти нужное. Не поверите, лет 10 назад Яндекс проводил чемпионаты по поиску, где обычно побеждал умеющий писать запрос наиболее понятно для робота яндекса.
- перевод между языками. До человека в этой области по-прежнему далеко, и чтобы в этом убедиться — достаточно попереводить через Гугл Транслейт. Тем не менее, последние годы благодаря нейронным сетям качество переводов стало повышаться. Есть шансы лет через 10-20 достичь уровня профессиональных переводчиков.
Что-нибудь нейрости не умеют?
Есть и ряд областей, где нейросети пока (!) показывают себя хуже, чем некоторые другие методы машинного обучения. Прежде всего это задачи, требующие на выходе предсказания, построенные на математических расчетах, особенно в финансах. Например, предсказания вероятности наступления страхового случая, риска невозврата платежа, прогнозирование спроса, цен и т.п. В таких задачах более точные результаты предсказываются другими алгоритмами машинного обучения.