Содержание статьи
- 1Нейронные сети на Python: как всё устроено
- 1.1Нейронная сеть как подотрасль машинного обучения
- 1.2Курс от GeekBrains для освоения Python и последующей работы с нейросетями
- 1.3Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — П Ю. Богданов, Е В. Краева, С А. Веревкин, Е Д. Пойманова, Т М. Татарникова
Нейронные сети на Python: как всё устроено
Нейронная сеть как подотрасль машинного обучения
Человеческий мозг состоит из более ста миллиардов клеток-нейронов. Место контакта двух нейронов – синапс. Он служит для передачи нервных импульсов от одной клетки к другой. Когда через него к нейрону придет достаточное количество импульсов, тогда нейрон передаст их дальше. Так строится наше мышление.
В статье, которая вышла в препринте на arXiv, исследователи описывают, как заставили модель реагировать после каждого слоя каждый раз, когда она пыталась предсказать следующее слово, вместо того, чтобы позволить ей выполнять вычисления на основе 80 слоев. Так ученые смогли увидеть, какое слово предсказала бы модель в тот момент.
Можно привести аналогичный пример с другим языком программирования. Фортран – один из первых языков высокого уровня, на котором написано множество программ и библиотек подпрограмм. Но сегодня программистами он не используется, зато широко распространен у физиков.
Лаконичность и интероперабельность. Язык позволяет разрабатывать сложные алгоритмы за короткое время. Его отличают простота, лаконичность и выразительность. Помимо этого он обладает мощным механизмом интероперабельности с C\C++, что позволяет производить быстрые вычисления. Можно создавать простые и сложные нейронные сети на Python.
Наиболее распространенным языком программирования для искусственных нейросетей является Python. Почему именно нейронные сети на Python получили такую популярность, несмотря на наличие множества других языков программирования? IT-специалисты часто сходятся во мнении, отвечая на этот вопрос, и выделают несколько причин.
Такое возможно благодаря применению математических матриц. Они представляют собой таблицы, состоящие из строк и столбцов, на пересечении которых находятся числа – элементы матрицы. Для простоты создадим модель одного нейрона, имеющего три источника информации и один выход. Цель – обучить нейронную сеть решать задачу, представленную ниже на изображении. Тренировочным набором будут примеры с первого по четвертый.
Курс от GeekBrains для освоения Python и последующей работы с нейросетями
Большие языковые модели обучены предсказывать следующее слово. Для этого они сопоставляют каждое слово с вектором чисел, то есть с многомерной точкой данных. Модели объединяют около 80 слоев идентичных вычислительных блоков, каждый из которых преобразует вектор, представляющий слово, в другой вектор. В конце этой последовательности из 80 преобразований получается вектор, представляющий следующее слово. Количество вычислений определяется количеством слоев расчетных блоков. Чем больше вычислений, тем мощнее модель и тем больше вероятность того, что следующее слово будет правильным.
Проведен анализ различных программных сред, которые могут быть использованы на лабораторных и практических занятиях по изучению и применению нейронных сетей. Выделен современный облачный сервис Google Colaboratory, рекомендуемый для обучения основам нейронных сетей благодаря наличию в нем предустановки библиотеки Tensorflow и библиотеки для работы на языке Python, бесплатного доступа к графическим процессорам, возможности написания и выполнения програм -много кода в браузере, а также отсутствию необходимости специальной настройки сервиса.
Поскольку все изображения для обучения нейронной сети должны иметь одинаковое разрешение, в переменной SIZE необходимо это указать, например 224*224. Затем проводится нормализация изображений — числовые значения пикселей переводятся в диапазон [0, 1] путем деления значения каждого пикселя на 255:
Используем сверточную нейронную сеть, которая, как известно, направлена на работу с изображениями. В отличие от персептрона, рассматривающего все изображение сразу, сверточная нейронная сеть сканирует изображение по частям. Сверточные нейронные сети работают на основе фильтров, распознающих определенные характеристики изображения [7]. Фильтр представляет собой коллекцию кернелов — матрицу чисел, называемых весами, которая является результатом обучения и получения карты признаков «кернел-изображение». Фильтр перемещается вдоль изображения и определяет, присутствует ли искомая характеристика (кернел) на сканируемом участке изображения (рис. 1). Для получения ответа выполняется операция свертки, которая является суммой произведений элементов фильтра и матрицы входных сигналов (пикселей изображения).
Исследовательские проекты. Большое число готовых примеров нейронных сетей на Python – это исследовательские проекты. При этом ученые, работающие над ними, чаще всего программистами не являются. Этот язык имеет низкий порог входа: никто не занимается написанием нейронных сетей на Python с нуля, так как это занимает много времени. Существуют библиотеки для нейронных сетей Python, которые уже написали специалисты. Так вокруг Питон сложилось целое сообщество по нейросетям. Если вы занимаетесь исследовательской деятельностью, то следуйте в этом вопросе примеру других.
Кроме того, активно развиваются Datascience и нейронные сети на Python. Изучить язык можно самостоятельно, однако на это уйдет много времени и скорее это будет введение в обучение (нейронные сети на Python вряд ли получится создать без помощи специалиста). Если вы хотите освоить язык программирования Python быстро и качественно, обратите внимание на курс от GeekBrains в онлайн-формате.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — П Ю. Богданов, Е В. Краева, С А. Веревкин, Е Д. Пойманова, Т М. Татарникова
Очевидно, что изучение принципов функционирования нейронных сетей и их применения для решения тех или иных задач возможно только через практику. В статье дан анализ различных программных сред, которые могут быть использованы на лабораторных и практических занятиях по изучению и применению нейронных сетей.
Гибкость. Нейросети – преимущественно небольшие программы, но при этом существует необходимость часто изменять их, подбирая наилучшую архитектуру, предобработку данных и другие параметры. Поэтому трудности с легаси-кодом практически отсутствуют, но есть потребность в быстрой разработке. Создание и построение нейронных сетей на Python – вариант, удовлетворяющий этим требованиям лучше, чем использование C++ или Java. Фреймворки для машинного обучения – это фронтенд на Python или Torch и бэкендом на C++, чаще всего.
Производительность в определенной задаче улучшается не средствами программирования, а за счет данных. Например то, как успешно удается почтовому сервису отсеивать спам или как продвинулись системы распознавания речи с появлением голосовых помощников Алиса, Siri, Alexa и других.
Исследователи из Лаборатории обработки данных (DLAB) факультета компьютерных наук и коммуникаций Федеральной политехнической школы Лозанны (EPFL) изучили LLM Llama-2 с открытым исходным кодом, чтобы попытаться определить, какие языки использовались на разных этапах всей цепочки. Ученые задались вопросом, используют ли многоязычные языковые модели английский в качестве внутреннего опорного языка — это ключевой вопрос для понимания того, как функционируют языковые модели.
нейронные сети / программные среды / нейронные сети для начинающих / библиотеки и языки программирования / задача классификации / задача прогнозирования. / neural networks / software environments / learning how neural networks work for beginners / libraries and programming languages / classification problem / forecasting problem
Большие языковые модели (LLM), такие как ChatGPT от Open AI и Gemini от Google, удивляют способностью хорошо понимать запросы пользователей и естественно им отвечать. С этими LLM можно взаимодействовать на любом языке, они обучаются с использованием сотен миллиардов текстовых параметров, в основном, на английском. Уже выдвигались предположения, что LLM выполняют большую часть внутренней обработки на английском языке, а затем в самый последний момент переводят на целевой язык. Но до сегодняшнего дня доказательств этому было мало.
TensorFlow — библиотека для машинного обучения от компании Google с открытым исходным кодом. Применяется для построения и тренировки нейронной сети, решающей задачи нахождения и классификации образов. Библиотека построена на парадигме программирования потоков данных, позволяющей оптимизировать математические вычисления. Вычисления в TensorFlow выполняются при помощи графа потоков данных, узлы которого отображают операции, а ребра — потоки данных между узлами.
Рассматриваются примеры проектирования нейронных сетей в Colaboratory, в частности, решение задач распознавания и классификации изображений, прогнозирования. Показано, что для распознавания и классификации изображений может быть использована сверточная нейронная сеть, особенностью которой является получение карты признаков изображения с последующей сверткой. Приведены фрагменты программного кода для этапов подключения необходимых библиотек, загрузки датасетов, нормализации изображений, сборки нейронной сети и ее обучения.