Вот и настала пора второй заметки из серии посвященных процессу разработки нейронной сети на канале Просто Код. Напомню, что в первом посте мы разбирались с теорией и вплотную подошли к некоторым математическим выкладкам, которые нужно будет использовать непосредственно при разработке и обучении нейронки. Если вы не читали еще первую заметку, то сделайте это. В скором времени (после третьей или четвертой заметки) сделаю отдельную рубрику для удобства.
Сегодня материал опять-таки будет теоретическим, в нем определим какую именно нейросеть (точнее, для чего нейросеть) будем разрабатывать.
Немного воспоминаний из прошлого
Чтобы понимать то о чем пойдет речь ниже, нужно вспомнить, что любая искусственная нейронная сеть в общем случае состоит из следующих уровней (слоёв, если быть точнее и правильнее в плане формулировок)
- входной слой - на нейроны этого слоя поступает информация
- скрытый слой - нейроны этого слоя участвуют в обработке информации (скрытых слоев может быть несколько)
- выходной слой - нейроны этого слоя принимают определенные решения на основе проанализированной информации
Виды нейронных сетей
Из огромного количества материала отобрал то, что нужно для простого и понятного изложения. Начнем с того, какие вообще нейронные сети бывают и для чего каждый вид предназначен.
Нейронные сети прямого распространения
В них узлы нейронов, находящиеся по соседству не связаны, передача информации происходит напрямую от входного слоя к выходному. Качество обработки информации в таких сетях оставляет желать лучшего, потому этот вид часто комбинируют с другими.
Сверточные нейронные сети
В таких сетях скрытый слой (прошу прощения за тавтологию) расслаивается и получается пять слоев: входной, свертывающий, объединяющий, подключенный и выходной. Название вида напрямую раскрывает суть работы - представьте сверток, внутри которого происходит обработка информации. Дополнительные слои нужны для обобщения данных или их объединения.
Сверточные сети лучше всего подходят для распознавания изображений или объектов, прогнозирования и обработки естественного языка.
Рекуррентные нейронные сети
Связь между узлами нейронов в таких сетях имеет направленную последовательность. Результат вычислений на каждом этапе обработки информации в таких сетях выступает отправной точки для вычислений на следующем. Из-за этого рекуррентные сети хорошо обрабатывают серии событий во времени или различные последовательности.
Потому такие сети применяют для моделирования или распознавания языка, генерации текстов или машинного перевода.
Примечание: каждый из выделенных выше видов можно делить на подвиды, в которых проявляется специфика архитектуры каждой нейросети.
Сценарии использования нейронных сетей
Благодаря широкой распространенности нейронных сетей в современном мире мы с легкостью сможем перечислить то, что они могут: вести диалог, генерировать изображения или тексты, переводить тексты, песни и видео и пр. Но для следования общей логике повествования необходимо конкретизировать базовые задачи, для которых применяют нейронки:
- классификация - это распознавание лиц, объектов или образов (например, когда нужно из некоего перечня предметов выбрать конкретный - например среди кубов найти пирамиду)
- регрессия - это прогнозирование и аналитическая работа, результатом которых является некое число (например, определение возраста по фотографии или курс котировок на бирже)
- прогнозирование временных рядов - тоже самое, что и регрессия за исключением того, что прогнозы здесь являются долгосрочными
- кластеризация - анализ большого количества данных не связанных между собой и выявление в них определенных признаков для объединения по группам (например, анализ видеозаписи с камеры на входе в магазин и выделение групп, сегментов покупателей)
- генерация - автоматическое создание различного контента или его изменение.
Так что же выбрать?
Имея перед собой определенный набор теоретических сведений можно, почесав тыковку, выбрать, что из этого интереснее всего и не сложно в реализации. Если говорить про виды, то определенно будем разрабатывать сверточную нейронную сеть, так как она занимает промежуточное состояние между неэффективными сетями прямого распространения и сложными для создания рекуррентными нейронками. С учетом этого мы ограничиваем круг задач для нашей нейронной сети регрессией и прогнозированием на короткий и средний срок. У меня пока в голове крутятся несколько вариантов того, что можно прогнозировать, обещаю, что к третьей заметке в рамках этой рубрики уже точно определюсь и сообщу об этом (а может и раньше в виде отдельного поста).
Вы можете также поучаствовать в рекомендациях и в комментариях написать что может анализировать та нейросеть, которую будем разрабатывать.
Чтобы не пропустить новые материалы (в том числе и по разработке нейронки) подпишитесь на канал и его обновления в Телеграме. Не забудьте поставить лайк, написать комментарий и сделать репост.