КонтактыКарта сайта

Что такое – Нейросеть. Просто за пять минут.

Нейросеть имитирует работу нейронов головного мозга, но она не «думает», как наш мозг, я попробую объяснить этот процесс проще.

Начну с того, что млекопитающие отличаются от менее разумных существ наличием в мозге коры, называется она Неокортекс и в срезе пары миллиметров верхней части выглядит вот так:
Нейроны в мозге похожи на транзисторы в интегральной схеме

Нейроны выглядят в виде таких «корешков», имеющих много входов внизу и один выход вверху. Каждый такой выход соединяется с следующим в иерархии нейроном, являясь одним из его «входов».

Программисты уже видят простейший алгоритм:
Первый уровень алгоритма нейросети

Это скелет нашего цифрового нейрона, мы имеем три параметра на входе, они должны обработаться каким-то правилом и на выходе мы получаем один параметр. Входных данных может быть не три, а сколько угодно, но на выходе мы получаем одно число.

Чтобы эта конструкция заработала, нам нужно как-то оценить входящие сигналы. Самый простой способ – присвоить каждому входящему сигналу какой-то вес, тогда правило обработки будет предельно простым, из всей массы входящих сигналов просто выбирается сигнал с самым высоким весом и отправляется дальше на вход следующего «нейрона».

Лучшим способом понять механизм работы является практика, давайте проверим работу этого нейрона на конкретной задаче. Определим задачу – «Хочу ли я выпить компот?» На входе у нас три параметра:
1. Цвет компота – тёмный.
2. В компоте плавает груша.
3. Компот мутный.

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

В стакане налита жидкость красного цвета, она тёмная, значит входной сигнал (1) существует и положительный, присваиваем сигналу флажок единички. В стакане нет груши и жидкость не мутная, значит сигналам 2 и 3 ставим флажок ноль, раз их нет, то не зачем их считать.

Наше правило в нейроне очень простое, мы просто умножаем вес на 1 если сигнал есть, или 0 если его нет, и получаем сумму. Сумма вышла положительной, а значит, компот можно пить, он вишнёвый.

И это – нейросеть? Спросите Вы. Просто формула умножения на 1 и сложения? Да НЕЙРОСЕТЬ, это-ж искусственный интеллект, а тут не то, что калькулятор – первоклассник на счётных палочках произведёт расчёты.

Ну, – да.

Теперь, когда понятна основа, немного усложним схему, ведь один нейрон ещё не мозг, их там 86 миллиардов, если верить Википедии.
Так выглядит алгоритм нейросети

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

Этот второй слой «нейронов» и делает нейросеть «умной», он имитирует обобщение данных, свойственное нашему мозгу. Без него алгоритм выглядел бы как простейший вида «Да - Если» и был бы бесконечно глупым. Конечно, второй слой не один, выходные параметры второго слоя рассылаются на все нейроны 3го, а те на 4й и так далее…

Постойте, тут есть подвох. Догадались, почему эта схема не будет работать?

С первым слоем всё хорошо, в этих группах нейронов мы придумываем входные параметры и расставляем им веса, а слоёв обобщения может быть очень много, и откуда мы возьмём вес каждого полученного параметра на выходе 1го слоя нейронов? Сами укажем? Да их же там 86 миллиардов может быть! Проблема.

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

Так и работает. В случае с нейросетью мы играем в Боженьку, раскидываем «молекулы» этого «мозга» наугад и смотрим что в итоге получится. В 99% случаев получается ерунда, но случайно свершается Чудо и на выходе получается годный результат. Это называется процессом обучения нейросети, мы задаём выходные параметры (образец ожидаемого нами результата) и входные параметры, а внутренние слои «обобщения» генерируются случайно и прогоняя работу сети с каждым таким случайным набором весов сравниваем полученный результат на похожесть с эталонным. Как только степень похожести нас удовлетворяет, считаем, что обучение закончено и мы подобрали случайный набор цифр для весов нейронов, который вообще не понятно как, но приводит к нужному результату. Да, создатель нейросети не понимает, как она в итоге работает, это факт.

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

И на последок интересное, вангую - до 2040 года нейросети "уничтожат" интернет! - читайте, почему так)