Нейронная сеть — у вас в кармане…

Мне понравилось как о набирающих популярность нейронных сетях, буквально на пальцах, рассказал Артем Чернодуб — руководитель Computer Vision в ZZWolf и младший научный сотрудник в ИПММС НАНУ.

Но для начала, серьезное определение:

«Нейронные сети – один из классических инструментов из области Machine Learning или, более широко, Data Science. Понятие «нейронные сети» можно трактовать в широком и узком смысле. В узком смысле – это определенные схемы обработки данных, включающие в себя модели нейрона: многослойные перцептоны (Multilayer Perceptrons),  сети радиальных базисных функций (Radial Basis Function Networks), глубокие  нейронные сети (Deep Neural Networks) и др. В широком смысле это любые модели, способные обучаться на данных, в том числе и такие, в которых нейронов как таковых, представленных в явном виде, нет вообще – к примеру, машины опорных векторов (Support Vector Machines).

Зачем же нужны нейронные сети?

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

Допустим, нам нужно решить задачу классификации овощей. Если мы можем установить видеокамеру и придумать для нее простое аналитическое правило, к примеру: зеленое и длинное – это огурец, красное и круглое – это помидор, то нейронные сети тут не нужны.

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

Понравилось, как машинное обучение охарактеризовал глава маркетингового отдела Яндекс Андрей Себрант в ходе своего выступления на конференции Lviv IT Arena’2014.  Он задался вопросом: чем Data Science, машинное обучение и нейронные сети в частности отличаются от других наук? По его выражению, в математике, физике, химии или гуманитарных дисциплинах человек “проникает умом” в суть феномена – строит его формулу и по ней получает результат. Отличие же Machine Learning и Data Science в целом заключается в том, что всю интеллектуальную ношу мы перекладываем на модели, которые решают эти задачи, не обязательно понимая при этом, как именно они работают. То есть, подход к использованию дисциплины отличается кардинально. И поэтому это – истинная наука XXI века.

Нейронные сети — Ваша “вишенка на торте”

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

Если вы пользуетесь телефоном на базе Android или iOS, на нем есть функция распознавания слов, она также построена на нейронных сетях — выходит, вы каждый день носите нейронную сеть у себя в кармане.

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

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

Вот вам вопрос: кому реально нужна функция распознавания отпечатков пальцев на IPhone? Ей почти никто не пользуется, тем не менее, это модно, а производителями преподносится как некое «Уау!». Это отличный повод для PR-отдела разослать пресс-релиз о новой супер-функции с высоким для него шансом быть опубликованным.

Программирование vs Data Science

Несмотря на энтузиазм и развивающийся рынок Data Science, количество программистов у нас несопоставимо больше, нежели специалистов в области анализа данных. Это приводит к тому, что девелоперам ставят задачи из области Data Science, что вызывает у них когнитивный диссонанс, фрустацию, неверие в успех и итоговый “эпик фейл”, даже при наличии хороших готовых алгоритмов и программных библиотек.

Дело в том, что специфика подготовки интеллектуальных приложений, связанных с распознаванием и прогнозированием, разительно отличается от процесса написания обычного программного кода. Функции, которые разрабатывает программист, фактически детерминированы, а модели на нейронных сетях носят вероятностный характер – точность в 100%, как правило, в такого рода задачах никогда не достигается.

Поэтому, если программисту часто достаточно один раз проверить код на работоспособность и результат бинарен (работает/не работает), то data scientist’у нужно попробовать (естественно, автоматически), например, тысячу или более примеров с целью убедиться, что данная модель распознавания образов работает исправно.

В связи с этим иногда возникает проблема переобучения (overfitting), когда вы “затачиваете” модель под маленькую группу примеров. Программист с обычным детерминированным подходом, грубо говоря, обучит модель на примере одного огурца и одного помидора, и такая модель будет работать только на этих примерах.

Подобных ловушек для начинающих существует еще множество. О наиболее частых я ранее написал статью “Нейронные сети, вредные советы”.

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

Автор: Артем Чернодуб для Datareview.info
Источник: http://datareview.info/article/artem-chernodub-o-tom-zachem-nuzhnyi-neyronnyie-seti/

Добавить комментарий