Содержание
#1. Что такое нейронные сети
#2. Как работает нейронная сеть
#3. Основные типы нейронных сетей
#4. Преимущества нейронных сетей
#5. Недостатки нейронных сетей
#6. Краткое заключение
// Нейронные сети
#1. Что такое нейронные сети
#2. Как работает нейронная сеть
#3. Основные типы нейронных сетей
#4. Преимущества нейронных сетей
#5. Недостатки нейронных сетей
#6. Краткое заключение
В последние годы нейронные сети стали чем-то вроде нового электричества — революционной технологией, которая проникла во все сферы человеческой деятельности. И это неудивительно, так как технологические решения на основе нейронных сетей могут выполнять чрезвычайно широкий спектр задач — от лечения сложнейших заболеваний до рекомендаций по выбору сериала на вечер. Однако эта технология не идеальна, у нее есть свои плюсы и минусы, которые нужно знать и учитывать, если вы решите создать свой продукт на базе нейронных сетей.
Нейронные сети (NNs), или искусственные нейронные сети (ANNs) — это обобщенное название для математических моделей и программ, построенных по принципу организации и функционирования биологических нейронных сетей — сетей нейронов человеческого мозга. Главная особенность искусственных нейросетей, из-за которой они стали настолько популярны, — способность обучаться и действовать на основе прошлого опыта, а не только по заранее прописанным алгоритмам.
Нейронные сети часто воспринимают как что-то новое и революционное. Однако разработки в этой области начались еще в первой половине прошлого века, после того как Уоррен МакКаллох и Уолтер Питтс в 1943 году сумели создать первую математическую модель принципов работы нейрона. В свой работе «Representation of Events in Nerve Nets and Finite Automata» ученые описали в виде функций простую математическую модель, которая работает как биологический нейрон: принимает входные данные, обрабатывает их и возвращает результат.
Следующий существенный прорыв в области ANNs произошел лишь спустя 60 лет: в 2006 году Джеффри Хинтон описал алгоритмы глубокого обучения многослойных ANNs на базе restricted Boltzmann machine, или RBM (ограниченной машины Больцмана). При этом Хинтон также сформулировал основную концепцию обучения алгоритмов нейронных сетей: чтобы получить готовое быстро работающее решение для решения конкретной задачи, NN нужно обучать на множестве реальных примеров (например, фотографий различных кошек в разных позах и на разных фонах).
Архитектура искусственной нейронной сети состоит из трех и больше слоев: входной, выходной и один или больше скрытых узлов. Сейчас для создания NN по умолчанию используется глубокое обучение, поэтому скрытых узлов обычно несколько. Каждый слой NN состоит из вычислительных блоков («нейронов»), которые принимают данные от предыдущего слоя, обрабатывает их, выполняя с ними простые вычисления, и передают эти данные следующему слою.
Входной слой принимает входные данные в нескольких различных форматах, например яркость, контраст, цвет, линии или другие характеристики изображения, если это фотография. Скрытый слой отвечает за поиск скрытых закономерностей и функций с помощью простых вычислений. Выходной слой как бы подытоживает все расчеты и выдает ответ в форме заключения, действия и / или прогноза. Если ответ верный или просто выше некоего порога «правильности», то нейронная сеть как бы «усиливает» те вычисления («нейроны»), которые его дали. И наоборот.
Работает это следующим образом. Допустим, вам нужна программа, которая бы распознавала, есть ли на фотографии собака или волк. Тогда ваша нейронная сеть будет: разбирать изображение на разные детали с помощью входного слоя, искать признаки собак и кошек среди этих деталей с помощью скрытых слоев и подводить итоги (есть на фото кошка или волк) с помощью выходного слоя.
В зависимости от архитектуры искусственные нейронные сети разделяют на несколько типов, которые используются для разных целей. Ниже представлены наиболее распространенные типы нейронных сетей, с которыми вы, скорее всего, столкнетесь, если захотите разработать свое решение на базе NNs.
Перцептрон. Старейшая нейронная сеть, созданная Фрэнком Розенблаттом в далеком 1957 году. Она состоит всего из одного нейрона и представляет собой простейшую форму искусственной нейронной сети.
Самообучаемость. Это главная особенность и преимущество искусственных нейронных сетей, которая так нравится программистам и бизнесменам во всем мире. Вы просто создаете базовый алгоритм, а дальше скармливаете ему примеры для обучения (например, фото людей, если вы хотите, чтобы ваша нейронная сеть искала людей на фото) и смотрите на результаты. При этом алгоритм сам решает, как достичь нужной цели, часто находя неочевидные (для людей) решения.
Более того, нейронная сеть не просто самообучаемая, она разработана для непрерывного самообучения и улучшения своих результатов. После того как система обучена, по мере использования программа или приложение становятся более удобными для пользователя. Именно поэтому переводчик Google, система рекомендаций Netflix или TikTok стают лучше с каждым годом.
Эффективная фильтрация шумов в данных. Представьте любое достаточно шумное место, например рынок или стадион. Вокруг разговаривают люди, громко играет музыка, где-то проезжают машины и кричат птицы — везде шум, но несмотря на это, вы можете спокойно общаться с людьми рядом. Ваши уши улавливают тонны ненужных звуков, но ваш мозг их фильтрует и воспринимаете только то, что говорит ваш собеседник. Такое свойство есть и у искусственных нейронных сетей. После обучения они способны вычленять из огромного непрерывного потока данных только нужную им информацию, игнорируя все посторонние шумы.
Это очень полезное свойство, если вам нужно искать закономерности в огромных объемах разнородных данных, таких как неклинические медицинские исследования, прогноз погоды, анализ экономических рынков или перевод текста.
Адаптация к изменениям. Еще один плюс искусственных нейронных сетей — возможность адаптации к изменениям во входных данных. В качестве аналогии можно привести пример с обновлением приложений. Допустим, вы долго были вне сети и за это время Instagram и TikTok обновились и получили несколько новых функций. Потратив пару минут на изучение инструкций, вы ознакомитесь со всеми новыми возможностями и продолжите использовать Instagram и TikTok. Так же будет и с нейронной сетью. После краткого периода адаптации к изменениям она продолжит работать с той же эффективностью.
Отказоустойчивость. Решения на базе нейронных сетей остаются работоспособными даже после выхода из строя части нейронов. Да, это может повлиять на точность и/или скорость работы алгоритма, но ее ответы будут по-прежнему логичны, рациональны и правильны. Это очень полезное свойство, если устройство с нейронной сетью на борту должно работать в агрессивной среде (радиоактивных зонах, на войне, в разрушенных зданиях или космосе).
Большие возможности. Еще одно ключевое преимущество ANNs — широкие возможности применения. Нейронные сети работают как человеческий мозг, то есть после обучения они могут выполнять самые разные задачи в самых разных областях — от повышения конверсии в онлайн-магазине до поиска планет, похожих на Землю, в космосе. Главное, чтобы было достаточно наборов реальных или синтетических данных для обучения.
Скорость работы. Еще одним важным плюсом нейросетей является их огромная скорость работы как по сравнению с обычными компьютерными алгоритмами, так и в сравнении с человеческим мозгом. Искусственные нейронные сети не устают и не имеют перерывов на обед. Скорость их работы обусловлена лишь доступными им вычислительными мощностями (видеокартой, облачными сервером или дата-центром). Обычно это означает, что они выдают решение почти мгновенно.
Проблема черного ящика. Пожалуй, самым известным недостатком всех NNs является их природа «черного ящика». Проще говоря, вы не знаете, как и почему ваша нейронная сеть приходит к тому или иному результату. Например, когда вы помещаете в нейронную сеть фото кота и она вам говорит, что это самолет, очень сложно понять, что заставило ее прийти к такому выводу. Вы просто не знаете, что происходит внутри «мозга» нейросети.
То же самое относится и к таким сайтам, как YouTube, Facebook, TikTok или Quora. Если алгоритм машинного обучения удалит учетную запись пользователя, платформа должна будет объяснить почему. Вряд ли он будет удовлетворен фразой: «Нам так сказал компьютер». Это чревато судебными исками.
Вероятностный характер ответов. Но и это еще не все. Если вы введете изображение в нейронную сеть, а затем спросите ее: «Это кошка, собака или что-то иное?», вы, вероятно, захотите получить ответ: это либо кошка, либо собака, либо что-то иное. Но в действительности даже очень хорошо обученная нейронная сеть не даст таких чистых результатов. Скорее всего, это будет что-то вроде: кошка — 0,97, собака — 0,01, что-то другое — 0,02. Эти результаты можно интерпретировать как вероятности. В нашем случае это означает, что вероятность того, что на фотографии изображена кошка, равна 97%, для собаки эта вероятность равна 1%, для чего-то еще — 2%.
Продолжительность разработки. Хотя есть множество таких библиотек, как NeuroLab, ffnet, SciPy, TensorFlow, Scikit-Neural Network, Lasagne, pyrenn, NumPy, Spark MLlib, Scikit-Learn, Theano, PyTorch, Keras, которые помогают сэкономить время и усилия при разработке искусственных нейронных сетей, они не всегда применимы. Например, если вам нужно создать какое-то новое решение или довольно сложное решение, требующее больше контроля над деталями алгоритма.
Количество данных. Следующий минус нейронных сетей связан с тем, что для их обучения обычно требуется гораздо больше данных, чем традиционным алгоритмам машинного обучения. И как мы говорили раньше, если это уникальные данные или их сложно собрать, то это может быть серьезным вызовом для разработчиков. Причем часто намного большим, чем написание кода искусственной нейронной сети.
Именно поэтому сейчас новые искусственные нейронные сети (ИИ-решения) разрабатывают в основном крупные компании (Google, Microsoft, IBM), которые имеют не только много денег и доступ к высококлассным программистам, но и к большим данным. Малый и средний бизнес здесь им не конкурент.
Вычислительно дорого. Современные алгоритмы глубокого обучения на базе искусственных нейронных сетей требуют нескольких недель, а иногда и лет для обучения с нуля. Тогда как для обучения большинства традиционных алгоритмов машинного обучения требуется гораздо меньше времени: от нескольких минут до нескольких часов. К примеру, нейронная сеть с 50 слоями будет намного медленнее, чем Random Forest Algorithm (это ансамблевый метод обучения для классификации, регрессии и других задач) всего с 10 деревьями.
Это опять-таки усложняет разработку решений на базе нейронных сетей и усложняет их интеграцию в бизнес и тем более в некоммерческий сектор.
Искусственные нейронные сети отлично подходят для одних задач и не очень хороши для других. При этом лишь немногие люди понимают, когда они на самом деле могут принести реальную пользу вашему бизнесу, а когда лучше обратиться к другим вариантам реализации искусственного интеллекта. Merehead именно такая компания. Мы отлично разбираемся в разработке решений на базе искусственного интеллекта, машинного обучения и нейронных сетей, поэтому если вы планируете запустить подобный проект — обращайтесь, мы с радостью вам поможем.