Найти тему
Data Science и всё такое

Часто говорят про нейросети. Они как волейбольные или для рыболовства?

Оглавление

@just_data_science October 07, 2017

Пример работы неейросети: картина переделана в стиле Ван Гога
Пример работы неейросети: картина переделана в стиле Ван Гога

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

Поехали. Что такое нейросети? 

Если говорить совсем просто, нейронная сеть (нейросеть, neural network, neural net) - это программа, имитирующая человеческий мозг. Если чуть посложнее, то:

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

Откуда они взялись?

За последние десятилетия наука очень сильно продвинулась в изучении природы работы мозга. IT-индустрия развивалась еще быстрее. Появились новые области, в том числе методы Machine Learning (машинного обучения) - это когда компьютерной программе не дают точный алгоритм, что ей делать, а заставляют ее учиться самостоятельно методом проб и ошибок. Например, пытаясь работать как мозг. Современные компьютеры достаточно мощные, чтобы с их помощью применить достижения нейробиологов (изучают устройство и функционирование нервной системы, в т.ч. мозга) для имитации простого "мозга".

А мозг то как работает (у тех, кого работает, конечно)?

Немного уйдем в сторону нейробиологии и чуть-чуть занудства. Потерпите, через пару абзацев снова будет легко.

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

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

Чем больше человек пользуется мозгом (занимаясь новым умственным трудом, которым не занимался раньше), тем больше у него образуется связей между разными нейронами. Именно поэтому так полезно всегда учиться чему-то новому, никогда не прекращая этот процесс. Это будет держать мозг в тонусе до самой глубокой старости.

И как же программисты имитируют мозг?

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

Вот эта программа и называется "нейросеть", а результаты ее работы гордо демонстрируются миру с заголовками "нейросеть расскрасила черно белую картинку". Кстати, это не вымышленный пример - именно с помощью нейросетей сейчас расскрашивают старые черно-белые фотографии и фильмы.

А откуда нейросеть знает, как ей работать?

В нашем примере с расскрашиванием картинки, откуда нейросети знают, в какой цвет им раскрашивать ту или иную часть картинки? 

Когда программу-нейросеть сделают, она будет абсолютно "неумная" - она не знает, что ей делать с входными данными. Поэтому, сначала программу нужно научить тому, что от нее ожидают. Этот процесс называется "машинное обучение", а если применяется нейросеть - то так же говорят "обучение нейросети". Выглядит процесс так: программе дают входные данные и показывают, какие должны получиться выходные данные. Программа-нейросеть пробует изменять входные данные в своих блоках-нейронах таким образом, чтобы получить искомое. Сначала на первой порции данных, затем на второй, на третьей... В нашу нейросеть-расскрашиватель последовательно подаются цветные картинки и они же в черно белом виде. Тысячи, миллионы картинок - и вот нейросеть уже настолько "прокачалась", что научилась правильно определять: губы человека на фотографии - крановатые, солнце - желтое, небо - синее, и т.д. Как правило, чем больше итераций обучения - тем качественее потом работает нейросеть на настоящих данных.

А почему нейросети постоянно копируют чейто стиль? У них что, своего чувства стиля нет?

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

В общем, нейросеть - это чтобы делать подделки чужого творчества?

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

  • распознование изображений и видео, в том числе автоматическое распознавание номеров машин, определение личности людей в зоне видеонаблюдения. Генерация описаний того, что на изображении. Слежение за объектом при видеонаблюдении.
  • распознавание речи, в том числе при звонках на телефон. Определение жанра музыки. В распознавании речи прогресс не столь хорош, как при работе с изображениями и видео. Нейросети натасканы на узкоспециализированные темы разговоров, определенные ключевые слова. Анекдот в тему: если при разговоре по телефону сказать "Бомба" и "Путин" - вас автоматически переключат на другую линию, связь станет качественной и не будет рваться :) 
  • распознавание смысла текста, эмоциональности. Поисковые системы много работают над тем, чтобы понимать запросы людей на обычном человеческом языке. Всего несколько лет назад нужно было писать запросы определенным образом, чтобы найти нужное. Не поверите, 10-15 лет назад Яндекс проводил чемпионаты по поиску, где обычно побеждал умеющий писать запрос наиболее понятно для робота яндекса.
  • перевод между языками. До человека в этой области по-прежнему далеко, и чтобы в этом убедиться - достаточно попереводить через Гугл Транслейт. Тем не менее, последние годы благодаря нейронным сетям качество переводов стало повышаться. Есть шансы лет через 10-20 достичь уровня профессиональных переводчиков.

Ну а что нибудь нейрости не умеют?

Есть и ряд областей, где нейросети пока (!) показывают себя хуже, чем некоторые другие методы машинного обучения. Прежде всего это задачи, требующие на выходе предсказания, построенные на математических расчетах, особенно в финансах. Например, предсказания вероятности наступления страхового случая, риска невозврата платежа, прогнозирование будущего спроса, цен/курсов и т.п. В таких задачах более точные результаты предсказываются другими алгоритмами машинного обучения.

Цитата взята с: http://www.aif.ru/dontknows/actual/chto_takoe_neyroset