Что такое нейросеть
Нейросеть — это тип машинного обучения, при котором компьютерная программа имитирует работу человеческого мозга. Подобно тому, как нейроны в мозге передают сигналы друг другу, в нейросети информацией обмениваются вычислительные элементы.
Идею нейронных сетей впервые предложили исследователи из Чикагского университета Уоррен Маккалоу и Уолтер Питтс в 1944 году. Первую обучаемую нейросеть в 1957 году продемонстрировал психолог Корнеллского университета Фрэнк Розенблатт. Она была примитивной (одноуровневой).
В 1980-х годах, когда появились более мощные компьютеры для вычислений, исследователи смогли разработать нейросети с двумя и тремя уровнями обучения.
Однако возрождение интереса к нейронным сетям и революция в глубоком обучении произошли лишь в последние годы благодаря индустрии компьютерных игр. Современные игры требуют сложных вычислений для обработки большого числа операций. В итоге производители начали выпускать графические процессоры (GPU), которые объединяют тысячи относительно простых вычислительных ядер на одном чипе. Исследователи вскоре поняли, что архитектура графического процессора очень похожа на архитектуру нейросети.
Современные GPU позволили развивать «глубокое обучение» — повышать глубину слоев нейросети. Именно благодаря ему появились самообучаемые нейросети, которые не требуют специальной настройки, а самостоятельно обрабатывают входящую информацию.
Как работает нейросеть
Каждая нейронная сеть состоит из искусственных нейронов, которые имитируют работу человеческих. Это программные модули или узлы, которые взаимодействуют и обмениваются информацией для решения задачи.
Базовая нейронная сеть содержит три слоя искусственных нейронов:
входной — обрабатывает информацию извне, анализирует или классифицирует ее и передает на следующий слой;
скрытый (их может быть несколько) — анализирует выходные данные предыдущего слоя, обрабатывает их и передает на следующий;
выходной — выдает окончательный результат после обработки всех данных.
Глубокие нейронные сети отличаются тем, что искусственные нейроны в них связаны друг с другом, а каждой такой связи присваивается определенный вес, который отражает ее значимость. Кроме того, связь между нейронами может быть «упреждающей». Это означает, что данные проходят через них только в одном направлении. Такое происходит, если значение «веса» соединения ниже заданного.
При обучении нейронной сети все ее «веса» изначально задаются случайными значениями. Обучающие данные подаются на нижний, или входной, слой. Затем они проходят через последующие слои, пока не достигают выходного. Во время обучения «веса» и пороговые значения постоянно корректируются до тех пор, пока данные обучения не будут постоянно давать одинаковые результаты.
Как устроена примитивная нейросеть
Как устроена примитивная нейросеть (Фото: neuralnet.info)
Эти «веса» помогают определить важность той или иной переменной во входных данных. При прохождении каждого слоя входные данные умножаются на их «веса», а затем суммируются. Если получившееся значение выше заданного порога, то нейрон активируется и передает данные на следующий уровень.
Приведем пример — попросим нейросеть ответить на вопрос, стоит ли заняться серфингом (варианты ответа «да» — 1 и «нет» — 0. Предположим, что на это решение (y-hat) влияют три фактора. Сформулируем их в виде вопросов:
хорошие ли волны? («да» — 1 и «нет» — 0);
свободен ли пляж? («да» — 1 и «нет» — 0);
фиксировались ли в последнее время нападения акул? («да» — 0 и «нет» — 1).
Затем предположим следующее, используя входные данные:
X1 = 1, так как волны есть;
X2 = 0, так как на пляже нет толпы;
X3 = 1, так как нападений акул не фиксировалось.
Теперь нам нужно присвоить этим значениям некоторые «веса», чтобы определить их важность. Расположим приоритеты следующим образом:
W1 = 5, так как большие волны на этом пляже возникают нечасто;
W2 = 2, так как вы не боитесь толпы;
W3 = 4, так как вы боитесь акул.
За пороговое значение мы примем 3, соответственно, значение смещения составит –3. Теперь можно начать подставлять значения в формулу, чтобы получить желаемый результат:
Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6.
Поскольку полученное значение выше 3, то решение о серфинге будет положительным.
В зависимости от архитектуры нейросети делятся на типы:
прямого распространения — обрабатывают входные данные и сразу выдают результат. Чаще всего применяются для распознавания образов и текста, а также классификации данных;
рекуррентные — перенаправляют информацию туда и обратно по слоям, пока не получат конечный результат. Этот тип обычно используется для прогнозирования;
сверточные — обрабатывают каждый признак в отдельном слое. Такой тип применяется в классификации изображений, обработке языка и т.д.
Помимо основных типов встречаются десятки подтипов нейросетей. Например, модульные — это, по сути, совокупность нейросетей, которые работают независимо друг от друга, чтобы ускорить вычисления.
Какие бывают архитектуры нейросетей
Какие бывают архитектуры нейросетей (Фото: habr.com)
Как применяются нейросети
Нейронные сети широко используются в самых разных областях — от медицины и до сферы развлечений. Они выполняют несколько основных типов задач.
Автоматическая генерация контента
Чат-бот ChatGPT от OpenA может отвечать на вопросы, поддерживать диалог, искать ошибки в коде, сочинять стихи, писать сценарии и т.д.
Нейросети DALL-E, Midjourney, Stable Diffusion генерируют картинки по текстовому описанию.
Нейросеть Imaginary soundscape создает фоновую музыку по изображению.
VALL-E озвучивает текст, точно имитируя голос человека и его интонации.
Нейросеть MARZ позволяет омолаживать лица актеров в фильмах.