Содержание статьи
Нейросети как сделать
Где применяют нейросети и кто с ними работает
Давайте поймем почему формула имеет такой вид. Сначала нам нужно учесть то, что мы хотим скорректировать вес пропорционально размеру ошибки. Далее ошибка умножается на значение, поданное на вход нейрона, что, в нашем случае, 0 или 1. Если на вход был подан 0, то вес не корректируется. И в конце выражение умножается на градиент сигмоиды. Разберемся в последнем шаге по порядку:
Обучение не так просто, как кажется. В нейронных сетях есть эффект переобучения: если тренировочных сетов слишком много и они слишком разные, нейросеть «теряется» и перестает эффективно выделять признаки. В результате она может, например, воспринять артефакт графики как чье-то лицо или перепутать мужчину с женщиной. Это происходит из-за размытия весов. И это не единственная ошибка, просто самая известная.
Перцептроны — Это классические нейронные сети, изначально однослойные, позже многослойные. Сейчас используются в основном для вычислений. Сверточные нейронные сети — Это многослойные сети, которые состоят из чередующихся сверточных и субдискретизирующих слоев и предназначены специально для работы с изображениями. Рекуррентные нейронные сети Их особенность в возможности последовательно обрабатывать цепочки данных и «запоминать» предыдущую информацию. Поэтому их применяют для работы с изменяющимися сведениями или длинными цепочками данных, например рукописными текстами. Генеративные нейронные сети Предназначены для создания контента. Иногда используются генеративно-состязательные нейросети — связка из двух сетей, где одна создает контент, а другая оценивает его качество.
Кроме того, есть входной и выходной слои. Входной принимает информацию и преобразовывает ее, например переводит картинку в матрицу из чисел. Выходной обрабатывает результат и представляет его в понятном человеку виде. Например, результат 0,77827273 он представит как «с точностью в 78% это такой-то предмет».
Лучше обучение. Искусственные нейронные сети обучаются примерно по тому же принципу, что живые существа. Когда человек часто повторяет одни и те же действия, он учится: ездить на велосипеде, рисовать или набирать текст. Это происходит, потому что веса между нейронами в мозгу меняются: нервные клетки наращивают новые связи, по-новому начинают воспринимать сигналы и правильнее их передают. Нейронная сеть тоже изменяет веса при обучении — чем оно объемнее, тем сильнее она «запомнит» какую-то закономерность.
Другие методы и формулы. Чтобы нейроны обучались, нужно задать формулу корректировки весов — мы говорили про это выше. Если нейронов много, то формулу нужно как-то распространить на все из них. Для этого используется метод градиентного спуска: рассчитывается градиент по весам, а потом от него делается шаг в меньшую сторону. Звучит сложно, но на самом деле для этого есть специальные формулы и функции.
Это опять же свойство, взятое из человеческого мозга. Нейронные связи в нашей нервной системе укрепляются, когда мы что-то выучиваем, — в итоге мы помним и делаем это лучше. Так появляются знания и навыки. У искусственных нейронных сетей так же: просто вместо физического изменения нервной ткани здесь происходит изменение числовых значений.
Так часто происходит в реальных задачах, например, при распознавании предметов. Не у всех из них есть жесткие критерии: скажем, гипертрофированного мультяшного персонажа мы по-прежнему различаем как человека, хотя у него совсем другие пропорции. Нейронную сеть сложно научить похожему — но современные системы могут справиться и с этим.
Как работает нейронная сеть
В основе искусственной нейронной сети лежит устройство нервной ткани человека. Она состоит из нервных клеток, связанных между собой длинными отростками. В клетках происходят нервные импульсы, они передаются по отросткам в другие клетки. Таким образом нервная ткань обрабатывает или генерирует информацию. Сами импульсы очень сложно расшифровать: это не понятные человеку данные, а набор слабых электрических токов, которые нейроны воспринимают как информацию.
Но по какой логике пересчитываются веса, понять можно. В ходе обучения нейросеть анализирует данные, а потом ей дают правильный ответ. Этот ответ для нее — числовое значение. Поэтому она подгоняет веса так, чтобы в своей работе сеть приближалась к эталонному значению. Мы подробнее расскажем об этом процессе ниже, когда поговорим про обучение.
Веса. Веса — числовые значения внутри синапсов нейронов. Нейросеть подсчитывает их самостоятельно в ходе обучения. Когда нейронная сеть сталкивается в ходе обучения с каким-то признаком, который нужно запомнить, она пересчитывает веса. При этом доподлинно неизвестно, какие именно числовые значения отвечают за те или иные признаки — и как именно признаки в них преобразуются.
Структура. Нейросеть состоит из искусственных нейронов, которые соединяются между собой. У самой примитивной нейронной сети один слой нейронов, у более сложных — несколько. Часто каждый слой занимается своей задачей, например, один распознает, другой преобразует.
Принцип действия нейросети не похож на классическую программу. Такой сети не дают четкого алгоритма: ее обучают, чтобы она могла самостоятельно выполнять ту или иную задачу. В результате деятельность программы становится менее предсказуемой, но более вариативной и даже творческой.
Больше мощностей. Нейронные сети работают с матрицами, так что если нейронов много, вычисления получаются очень ресурсоемкие. Известные нейросети вроде Midjourney или ChatGPT — это сложные и «тяжелые» системы, для их работы нужны сервера с мощным «железом». Так что написать собственный DALL-E на домашнем компьютере не получится. Но есть сервисы для аренды мощностей: ими как раз пользуются инженеры машинного обучения, чтобы создавать, обучать и тестировать модели.