Содержание статьи
Алгоритм создания и обучения своей первой нейронной сети
Что такое искусственная нейронная сеть?
Рукотворные нейросети обладают способностью к обучению и анализу больших сложных данных, неполной и зашумленной информации. Если сеть создается на базе всего одного компьютера, то скорость ее работы ниже, чем у программ, построенных на алгоритмах. Но при использовании нескольких компьютеров формируется параллельная вычислительная среда, благодаря чему быстродействие нейросети значительно возрастает. Это позволяет ИНС выигрывать у линейных прототипов – цифровых компьютеров, при обработке непрерывных крупных потоков сведений, например, для распознавания речи.
Давайте поймем почему формула имеет такой вид. Сначала нам нужно учесть то, что мы хотим скорректировать вес пропорционально размеру ошибки. Далее ошибка умножается на значение, поданное на вход нейрона, что, в нашем случае, 0 или 1. Если на вход был подан 0, то вес не корректируется. И в конце выражение умножается на градиент сигмоиды. Разберемся в последнем шаге по порядку:
Больше мощностей. Нейронные сети работают с матрицами, так что если нейронов много, вычисления получаются очень ресурсоемкие. Известные нейросети вроде Midjourney или ChatGPT — это сложные и «тяжелые» системы, для их работы нужны сервера с мощным «железом». Так что написать собственный DALL-E на домашнем компьютере не получится. Но есть сервисы для аренды мощностей: ими как раз пользуются инженеры машинного обучения, чтобы создавать, обучать и тестировать модели.
Настройка обучения нейронной сети начинается с группировки примеров. Это могут быть готовые файлы либо живая запись на камеру в ноутбуке или ПК. Например, если нажать на кнопку «Train Green», сервис сделает несколько десятков снимков, таким образом находя закономерность. Набор снимков называется «датасет».
Только что созданная нейросеть ничего «не знает» и похожа на мозг новорожденного ребенка, в котором еще не сформировались нейронные связи. Как и малышу, искусственной нейросети требуется обучаться, и такая способность у нее есть. Поэтому в качестве синонима выражения «нейронные сети» часто используется фраза «глубокое обучение». Еще один синоним – «искусственный интеллект».
Больше нейронов. В нашей тренировочной нейросети только один нейрон. Но если нейронов будет больше — каждый из них сможет по-своему реагировать на входные данные, соответственно, на следующие нейроны будут приходить данные с разных синапсов. Значит — больше вариативность, «подумать» и передать сигнал дальше может не один нейрон, а несколько. Можно менять и формулу передачи, и связи между нейронами — так получаются разные виды нейронных сетей.
Data Scientist или Python-разработчик? А может, третий неочевидный вариант? Узнайте, какая IT-специальность подходит вам идеально на бесплатной онлайн-профориентации «IT-рентген».
Например, на вход поступает картинка. Чтобы нейросеть могла понять, что на ней изображено, она должна выделить разные элементы из картинки, распознать их и подумать, что означает сочетание этих элементов. Примерно так работает зрительная кора в головном мозге. Это несколько задач, их не смогут решить одинаковые нейроны. Поэтому нужно несколько слоев, где каждый делает что-то свое. Для распознавания часто используют так называемые сверточные нейросети. Они состоят из комбинации сверточных и субдискретизирующих слоев, каждый из которых решает свою задачу.
С точки зрения математики задача искусственного нейрона – суммировать все сигналы, а затем применять к полученной взвешенной сумме простую нелинейную функцию. Она непрерывна по всей области и монотонно возрастает. Результат, который получается в итоге, направляется на один выход – аксон.
Путь развития нейронных сетей начался в 1943 году, когда была опубликована работа о кибернетике, написанная Норбертом Винером в соавторстве с другими учеными. В статье высказывалась идея о том, что сложные биологические процессы можно представить в виде математических моделей.
Суть сводилась к тому, что нейронная сеть способна к выполнению любых логических операций и преобразований, которые генерируются в дискретных устройствах, обладающих конечной памятью. Таким образом создатели модели дали формулировку основным положениям работы головного мозга. Ученые создали 1-ую модель нейрона, который, по их мнению, является простейшим процессорным элементом. МакКаллок и Питтс предложили свой вариант конструкции такой сети, состоящей из таких элементов, чтобы она могла решать арифметические и логические задачи. Авторы предположили, что такую сеть можно научить распознаванию образов и обобщению полученных данных. Этот принцип действия моделей нейронов в искусственной сети актуален и сегодня.
Программа прогоняет входные фото через нейросеть, создавая bottleneck – файлы текстового типа, в которых содержатся данные о картинках. Спустя несколько десятков минут процесс завершается. Иерархические нейронные сети могут распознать на любых картинках цветы, фото которых удалось прогнать через ПК.
Так часто происходит в реальных задачах, например, при распознавании предметов. Не у всех из них есть жесткие критерии: скажем, гипертрофированного мультяшного персонажа мы по-прежнему различаем как человека, хотя у него совсем другие пропорции. Нейронную сеть сложно научить похожему — но современные системы могут справиться и с этим.
В том же 1943-ем ученые У. МакКалок и У. Питтс ввели понятие «нейронная сеть» и дали ему определение в публикации, где шла речь о нервной активности и логическом исчислении идей. Предложенная модель впоследствии была названа «моделью МакКаллока-Питтса» и развита другим ученым – Клини.
Человеческий мозг состоит из ста миллиардов клеток, которые называются нейронами. Они соединены между собой синапсами. Если через синапсы к нейрону придет достаточное количество нервных импульсов, этот нейрон сработает и передаст нервный импульс дальше. Этот процесс лежит в основе нашего мышления. Мы можем смоделировать это явление, создав нейронную сеть с помощью компьютера. Нам не нужно воссоздавать все сложные биологические процессы, которые происходят в человеческом мозге на молекулярном уровне, нам достаточно знать, что происходит на более высоких уровнях. Для этого мы используем математический инструмент — матрицы, которые представляют собой таблицы чисел. Чтобы сделать все как можно проще, мы смоделируем только один нейрон, к которому поступает входная информация из трех источников и есть только один выход. 3 входных и 1 выходной сигнал Наша задача — научить нейронную сеть решать задачу, которая изображена в ниже. Первые четыре примера будут нашим тренировочным набором. Получилось ли у вас увидеть закономерность? Что должно быть на месте вопросительного знака — 0 или 1?