Найти тему
Будни Нейронщика

Что такое нейронка? Коротко о нейронных сетях. Часть 0.

В первом цикле статей давайте рассмотрим терминологию, возникающую вокруг нейронных сетей. В последнее время количество всяких разных слов просто переходит все границы.

Вот например, а что такое Deep Learning? От всей души скажу, что это Machine Learning, но после 2018 года. Фишка в том, что Deep Learning - это "глубоооокое обучение", то есть обучение с 4(5) и более слоями. А вам для любой задачи надо не меньше этих 4 слоев, зачем нужно это слово? Не ясно. Обо всех этих страшных словах мы поговорим в будущем.

Начнём с базы. А кто такой этот ваш нейронка?

Нейронка (нейронная сеть, НС, искуственный интелект, ИИ, neural network, NN, artificial intelligence, AI) - это те самые чаты-гпт, о которых все говорят, это те самые программы распознавания лиц в камерах, это те самые переводчики, это то, что переводит текст с фотографии в текст сообщения или закидывает формулу с бумаги в калькулятор. То есть Нейронка - это некая программа, которая каким-то образом работает и делает что-то полезное.

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

На самом деле почти никто не знает, как на самом деле работают нейронные сети. Все наши знания приближенны, но их достаточно, чтобы с нейронками работать.

Нейронка - это алгоритм, для создания которого требуется пройти через 3 главных и 2 побочных этапа:

Главные этапы:

  1. Создание базы данных;
  2. Создание архитектуры нейронной сети;
  3. Обучение нейронной сети.

Побочные этапы:

  1. Предобработка данных;
  2. Постобработка данных.

Возникло больше вопросов, чем ответов: что такое база? что такое архитектура? что такое обучение? Как это использовать в конце-то концов? Об этом уже рассказали все, кому не лень, но так и мне не лень. Да и это классика, это знать надо, а для повествования - полезно.

База данных - это то, что вы хотите загружать в нейронку (входные данные) плюс то, что вы хотите из неё получать (выходные данные). Например: пишете текстовый запрос на вход, на выходе получаете картинку - это база данных Midjorney.

На данном этапе возникает основная сложность - где брать базу? И как интерпретировать данные в виде кода, ещё и чтобы при обучении всё нормально работало?

Об этом мы с вами поговорим, когда дойдём до дела, пока что рано. Данный этап я выделил как побочный - предобработка.

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

Далее следует архитектура. Многие нейронкой называют именно архитектуру - это её программная часть. Об архитектурах выйдет отдельная статья, но для затравки скажу, что, вы не поверите - она состоит из нейронов 🤯, нейроны объединяются в слои, слои КАК-ТО связаны друг с другом, да и всё. Вот она ваша архитектура. Есть дополнительные нюансы, но о них позже.

Мы создали базу, через предобработку закинули данные в архитектуру, а дальше что? Дальше идёт обучение. Нейронная сеть учится тому, КАК из ваших входных данных сделать выходные данные. Потом постобработка и получаем результат.

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

Итак ещё раз. Нейронка - это код, который на вход получает данные, что-то с ними делает первичное, что-то с ними делает основное, и что-то с ними делает финальное, а потом даёт результат.

Стоит понимать, что результат нейронки из-за её структуры не является точным, он приближённый. Из А мы получаем не Б, а "приблизиииительно Б". Чем выше точность, тем лучше нейронка. Будем считать сейчас и далее, что 90% точности - это хорошо (в среднем этого достаточно).

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

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

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

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