Найти в Дзене
Будни Нейронщика

В чем разница нейронки и обычного кода? Коротко о нейронных сетях. Часть 1.

В предыдущей статье цикла я рассказал о том, что представляет собой нейронная сеть. Напомню, что это алгоритм, для создания которого требуется пройти 3 основных этапа (создание базы, архитектуры и обучение), а также 2 побочных (пред- и постобработка). Сейчас хочется написать что-то вроде FAQ .

FAQ - часто задаваемые вопросы.

Итак, начнём с отличий нейронки от классического алгоритма. В чем разница?

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

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

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

Если коротко, то при обучении нейронная сеть сама пошагово преобразует входные данные, чтобы получить результат. В классическом алгоритме человек своими руками задаёт, на какие признаки или параметры код будет опираться: ЕСЛИ условие выполняется, ТО что-то происходит - человек задаёт пороговое значение. В нейронной сети таких опций нет.

Почти нет, но об этом всё так же - позже.

То есть машина сама ищет признаки, по которым входным данным А будет сопоставлен результат Б. И я понимаю, что хожу по очень тонком льду, поскольку пользуюсь олицетворением кода. Конечно же, у "сама определяет" есть математическое описание. Это то самое великое и ужасное Обратное Распространение Ошибки, но сейчас не о нём.

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

С другой стороны очевидный минус - мы не особо знаем, что там происходит внутри нейронной сети при её обучении и использовании. Какие признаки она задаёт?

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

Далее, обозначим довольно важную вещь. Мой опыт подсказывает, что нейронные сети решают ОДНУ задачу. Если ваша нейронка распознаёт цифры, то она не сможет так же и генерировать диалог с вами. Это важно понимать. Одна нейронка будет распознавать образы, другая- вести диалог, третья- генерировать картинки. Это главная причина, почему чат-гпт работает вместе с Midjorney, а не генерирует изображения по запросу самостоятельно.

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

Продолжим. В чем разница нейронок и искусственного интеллекта? Это очередной тонкий лёд. Настоящий искуственный интеллект является чем-то практически недостижимым. То, что мы видели в фильмах - скайнет или около того - это настолько трудно реализовать, что человечеству может просто не хватить энергоресурсов на её работу. А то, что называют ИИ сейчас - это либо классический код, имитирующий поведение человека в той или иной области, либо нейронка (набор нейронок). Конечно же, абсолютно всегда функционал такого ИИ ограничен. Но отвечая на поставленный вопрос - вы можете называть любую нейронную сеть искуственным интеллектом, так как любая нейронная сеть имитирует человеческий мозг.

Да-да, об этом также в статье про нейроны и т.д.

У меня есть задача, можно ли её решить с помощью нейронной сети? - это самый популярный вопрос у тех, кто начинает знакомиться с миром машинного обучения. Ответ прост: А вы уверены что это необходимо?

В настоящее время нейронные сети пишут и пытаются внедрить буквально во все сферы жизни. Но есть маленький нюанс - не всегда нейронка необходима. Основная причина кроется в описанном ранее - нейронная сеть на выходе даёт не точный ответ, а приближенный. Например, есть у нас задача бинаризации - разделить изображение на белое и чёрное. Есть обычная пороговая бинаризация: если цвет картинки темнее порога, то делай чёрный, иначе делай белый. Всё. Это весь код. А нейронная сеть мало того, что занимает больше места в виде кода, так ещё и дает не 100% результат. Вот и вопрос - а надо ли?

При желании решить задачу с помощью нейронки стоит задуматься, а можно ли без неё обойтись.

Завершим оптимистично. На что способны нейронные сети? Да на всё, что вашей душе и фантазии угодно. Вы ограничены лишь необходимостью создать базу данных и интерпретировать её в виде кода, а дальше - дело техники 😉

Обнял - приподнял, спасибо за внимание 💙