В первом цикле статей давайте рассмотрим терминологию, возникающую вокруг нейронных сетей. В последнее время количество всяких разных слов просто переходит все границы.
Вот например, а что такое Deep Learning? От всей души скажу, что это Machine Learning, но после 2018 года. Фишка в том, что Deep Learning - это "глубоооокое обучение", то есть обучение с 4(5) и более слоями. А вам для любой задачи надо не меньше этих 4 слоев, зачем нужно это слово? Не ясно. Обо всех этих страшных словах мы поговорим в будущем.
Начнём с базы. А кто такой этот ваш нейронка?
Нейронка (нейронная сеть, НС, искуственный интелект, ИИ, neural network, NN, artificial intelligence, AI) - это те самые чаты-гпт, о которых все говорят, это те самые программы распознавания лиц в камерах, это те самые переводчики, это то, что переводит текст с фотографии в текст сообщения или закидывает формулу с бумаги в калькулятор. То есть Нейронка - это некая программа, которая каким-то образом работает и делает что-то полезное.
Отлично объяснил, но в этом вся суть, нейронки умеют решать почти любую задачу, которую вы сможете задать в виде кода, но не понятно как она это делает. Зато понятно, как её научить🙃
На самом деле почти никто не знает, как на самом деле работают нейронные сети. Все наши знания приближенны, но их достаточно, чтобы с нейронками работать.
Нейронка - это алгоритм, для создания которого требуется пройти через 3 главных и 2 побочных этапа:
Главные этапы:
- Создание базы данных;
- Создание архитектуры нейронной сети;
- Обучение нейронной сети.
Побочные этапы:
- Предобработка данных;
- Постобработка данных.
Возникло больше вопросов, чем ответов: что такое база? что такое архитектура? что такое обучение? Как это использовать в конце-то концов? Об этом уже рассказали все, кому не лень, но так и мне не лень. Да и это классика, это знать надо, а для повествования - полезно.
База данных - это то, что вы хотите загружать в нейронку (входные данные) плюс то, что вы хотите из неё получать (выходные данные). Например: пишете текстовый запрос на вход, на выходе получаете картинку - это база данных Midjorney.
На данном этапе возникает основная сложность - где брать базу? И как интерпретировать данные в виде кода, ещё и чтобы при обучении всё нормально работало?
Об этом мы с вами поговорим, когда дойдём до дела, пока что рано. Данный этап я выделил как побочный - предобработка.
Честно говоря, при "правильном" создании базы, "правильной" предобработке и "правильной" постобработке вы можете решить с помощью нейронной сети любую задачу, которую сможете сформулировать.
Далее следует архитектура. Многие нейронкой называют именно архитектуру - это её программная часть. Об архитектурах выйдет отдельная статья, но для затравки скажу, что, вы не поверите - она состоит из нейронов 🤯, нейроны объединяются в слои, слои КАК-ТО связаны друг с другом, да и всё. Вот она ваша архитектура. Есть дополнительные нюансы, но о них позже.
Мы создали базу, через предобработку закинули данные в архитектуру, а дальше что? Дальше идёт обучение. Нейронная сеть учится тому, КАК из ваших входных данных сделать выходные данные. Потом постобработка и получаем результат.
Многие не любят олицетворение нейронных сетей, что, вооот, она не учится, её учат. Вот, честно, какая разница? все же поняли, что имеется ввиду.
Итак ещё раз. Нейронка - это код, который на вход получает данные, что-то с ними делает первичное, что-то с ними делает основное, и что-то с ними делает финальное, а потом даёт результат.
Стоит понимать, что результат нейронки из-за её структуры не является точным, он приближённый. Из А мы получаем не Б, а "приблизиииительно Б". Чем выше точность, тем лучше нейронка. Будем считать сейчас и далее, что 90% точности - это хорошо (в среднем этого достаточно).
Далее, мы создали нейронку, обучили, проверили и тд. Что надо для её использования?
Да на самом деле вам нужен файл с самой нейронкой - это набор "весов" и файл, где прописана архитектура в виде кода. Всё. Этого достаточно. Через файл с архитектурой мы можем загрузить "веса" и загрузить в них то, что хотим. Про веса поговорим позже.
Думаю, на этом мы сегодня закончим. В другой раз поговорим конкретнее об этапах нейросетевого обучения.
Обнял-приподнял и спасибо за внимание 💙