Найти в Дзене
Уже наступило

Что такое нейросеть простым языком. "А давайте оторвем пауку лапку..."

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

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

Статья довольно большая для дзена, сперва немного теории, если вам лень или не интересно её читать, то можете сразу спуститься на пару абзацев вниз до раздела "Как работает нейросеть".

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

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

-2

Вам нужно точно прописать, ОЧЕНЬ много зависимых друг от друга переменных и их взаимную корреляцию, не вдаваясь в подробности, скажу просто что сделать это довольно сложно. Предположим, вы справились. И ваш робот выходит на свою первую прогулку. И в первые же 5 секунд прогулки ему отстреливают переднюю правую ногу. Всё. Ваш робот больше никуда не пойдёт, потому что он точно знает какой ногой ему нужно шевельнуть до передней, правой, и какой после. Но у нас уже нет, передней правой. Вы возвращаетесь и переписываете алгоритм с учетом этого, а во время следующего тестирования ему отстреливают обе задних ноги. Думаю, логика ясна. Вы просто не сможете описать все возможные варианты отстрелов ног, частей ног, частей корпуса, изменения массы робота и т.д. И вот тут приходят на помощь нейросети. Нейросеть это особый алгоритм, который может подстраиваться под ситуацию. А его реализация похожа на то, как реализованы нейроны в наших мозгах, за счёт чего он и получил своё название.

Что из этого следует. Во-первых, нейросеть, это не какой-нибудь волшебный механизм, который вы можете создать только на особом компьютере, для его реализации подойдет абсолютно любой компьютер, даже тот с которого вы сейчас читаете эту статью. Во-вторых, программист который пишет нейросеть всегда знает чему он её учит, а значит почти все ситуации он может предсказать. Почему почти? а вот это интересный вопрос. Давайте и с ним разберёмся.

Чтобы любая нейросеть работала так как нужно, её требуется обучить. Вот вам пример работы необученной нейросети управлением роботом с двумя ногами из рисунка выше.

-3

Тык - ссылка на гиф.

Эти конвульсии - на самом деле процесс обучения))) Обучить робота всем вариантам практически нельзя, поэтому на практики для обучения нейросети используют следующий механизм. Допустим у нас есть 1 000 000 ситуаций в котые может попасть робот. Мы отбираем 1 000 из них и пишем подпрограмму, которая называется фитнес-функция, её цель обучать робота. После обучения, мы тестируем поведения робота на другой тысяче ситуация, т.е. не на тех на которых его обучала фитнес-функция. И если он и в незнакомой для себя ситуации справляется, то нейросеть считается обученной. Такой робот на практике скорее всего справится с любой задачей. И да, тут есть оговорка, скорее всего справится. Дело в том, что невозможно предусмотреть все 1 000 000 вариантов, тем более что возможно появиться 1 000 001-ый вариант, который мы не учли изначально. Это как с людьми. Мы не можем точно сказать как человек поступит в экстренной для себя ситуации. Чем экстраординарный ситуация, тем больше вероятность что робот будет действовать не по заветам фитнес-функции. Но вот если он уже поступил не так как от него планировалось, то всегда можно точно понять почему. Можно проанализировать его действия и переобучить. Так что чем больше практики, тем точнее роботы делают то, что от них хотят программисты.

А теперь вернёмся к нашей первой прогулке с шагающим роботом. Помните, когда ему отстрелили ногу. Если роботом будет управлять нейросеть, то она проанализирует ситуацию и переобучится прям на ходу, и теперь это будет механизм управления не шестиногим роботом, а пятиногим. Или трёхногим. Всё перестраивается на ходу.

Как работает нейросеть

По аналогии с биологическим нейроном у нейрона программного может быть множество входов и один выход, выглядит это так

-4

Разберёмся что тут к чему. Это нейрон управления передней правой ногой шагающего робота. На входы у нас подаются сигналы с ног, для удобства 0 - это полностью опущенная нога (как побывавшая внутри Панина), 100- полностью поднятая. Затем каждое из этих значений умножается на волшебное число W, и эти результаты суммируются. А после они проходят через фильтр - специальную функцию. После этого значение передаётся на выход - это значение и будет градусом на который следует поднять переднюю правую ногу. Процессом обучения нейросети называется подбор этих самых волшебных чисел W. Для того чтобы всё это звучало более круто, программисты назвали это не волшебные числа а синапсы, выход назвали аксон, а функцию обозвали - сома.

Затем всё это дело усложняется, добавляются промежуточные слои и объединяется в единую сеть, которая и называется нейросеть.

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

Вот и всё что я хотел рассказать, спасибо что дочитали. Помните, самый простой и лучший способ сказать автору спасибо за труд - это поставить лайк. Ставьте скорее, пока хоть это ещё бесплатно.