Прочитал статью ChatGPT в помощь 1С-разработчику: мост между языками программирования и понял, что теоретическая часть мне непонятна. Там где про искусственный нейрон и виды нейросетей. Тогда я зашел на сайт https://openai01.net/ru и стал "терзать" искусственный интеллект вопросами по теоретической части статьи. Весь чат с языковой моделью O1 можно посмотреть здесь. Там довольно длинная "простыня".
Самое главное об этом сайте. Сайт https://openai01.net разрешает задавать только 1 вопрос в день, но тут есть лайфхак. Нужно зайти на страницу Мои кредиты, скопировать реферальную ссылку и попросить друга по ней перейти. Друг задаст нейросети вопрос и вам начислится 30 кредитов. То есть вы сможете еще 15 вопросов задать.
Итак, я скопировал теоретическую часть статьи (кроме истории нейросетей) в чат с O1 и попросил ее вкратце пересказать содержание.
Ответ нейросети:
Статья представляет собой введение в основы нейронных сетей. Она начинается с объяснения работы искусственного нейрона, основного элемента любой нейросети. Описывается процесс обработки входных данных: умножение входных значений на веса, суммирование результатов, добавление смещения и применение функции активации (например, ReLU).
Далее автор подчеркивает важность весов в обучении нейросетей и приводит пример с моделью Llama от Meta, иллюстрируя различия между закрытыми и открытыми весами.
Статья также рассматривает пример «Hello, World!» для нейросетей — задачу распознавания рукописных цифр с использованием библиотеки TensorFlow/Keras. Описывается структура простой модели нейронной сети, процесс обучения и достижение высокой точности распознавания.
Затем автор описывает три типа нейронных сетей:
- Полносвязные сети — используются для классификации и регрессии.
- Сверточные сети — применяются для анализа изображений и видео, распознавая различные уровни детализации.
- Рекуррентные сети — предназначены для обработки последовательностей, таких как текст, но имеют ограничения по скорости и запоминанию длинных последовательностей.
В завершение статья рассказывает о трансформерах, новой архитектуре нейросетей, которая преодолевает ограничения рекуррентных сетей благодаря параллельной обработке и механизму внимания. Это позволяет эффективно обрабатывать большие объемы информации и учитывать взаимосвязи между всеми элементами входных данных.
Таким образом, статья предоставляет общее понимание основ нейронных сетей, их типов и применения, а также современных достижений в области архитектуры.
Немножко стало попроще, но все равно непонятно. Дальше я стал "забрасывать" нейросеть вопросами. Приведу, с моей точки зрения, самые интересные пары вопрос-ответ.
Давай начнем с этого абзаца "Она начинается с объяснения работы искусственного нейрона, основного элемента любой нейросети. Описывается процесс обработки входных данных: умножение входных значений на веса, суммирование результатов, добавление смещения и применение функции активации (например, ReLU)."
Нужен какой-то пример из жизни. Как я понял, в искусственный нейрон что-то вкладывают и он что-то выдает в ответ. И он как-то учится и что-то запоминает? Давай по порядку.
Представьте, что искусственный нейрон – это некий «мини-решатель задач». Он принимает на вход несколько чисел, обрабатывает их по определенным правилам и выдает одно число на выходе. Чтобы понять это на житейском примере, можно сравнить нейрон с человеком, принимающим решение о покупке продуктов.
Пример из жизни:
Допустим, вы решаете, купить ли в магазине молоко. Какие факторы вы учитываете?
- Сколько молока осталось в холодильнике (например, литр)?
- Собираетесь ли вы сегодня готовить блюдо, в котором понадобится молоко?
- Есть ли скидка на молоко в магазине?
- Далеко ли идти до магазина?
Каждый из этих факторов – это как входное число для нашего искусственного нейрона. Представьте, что мы назначили каждый фактору некоторую значимость, или «вес». Например, нехватка молока дома может иметь большой вес, а расстояние до магазина – поменьше, если вы любите прогулки.
Таким образом, процесс обучения заключается в постоянном подборе правильных весов? Чтобы при разных входных данных получался правильный результат?
Да, вы правильно поняли. Процесс обучения нейронной сети действительно заключается в постоянном подборе и корректировке весов, чтобы при различных входных данных нейросеть выдавала правильные или максимально точные результаты.
Вот этот абзац объясни, пож-та. "Например, когда компания Meta представила первую версию своей нейросети Llama, веса модели оставались закрытыми – модель можно было потрогать, но ее нельзя было дообучить. Но в июле 2023 года, при выпуске второй версии Llama 2 в формате open source, Meta сделала веса открытыми, и с этой моделью уже можно работать более плотно".
Что значит Meta сделала веса открытыми? Можно было загрузить базу данных нейросети Llama к себе на компьютер и дообучить какими-то своими данными? Насколько это трудоемко? Какие нужны вычислительные мощности?
Можно ли было загрузить базу данных нейросети Llama к себе на компьютер и дообучить её?
Да, с выпуском Llama 2 как open source модели, пользователи получили возможность:
- Скачать модель и её веса на свой компьютер или сервер.
- Использовать готовую модель для выполнения задач (например, генерации текста, классификации).
- Дообучать модель на специфических данных для улучшения её производительности в определённых задачах (например, в медицинской сфере, юриспруденции и т.д.).
Вот это меня еще смутило в статье, там где рассказывается про простую нейронную сеть распознающую цифры:
"Входной слой (зеленый) содержит 784 нейрона – по числу пикселей (28?28).
Скрытый слой (синий) состоит из 100 нейронов.
Выходной слой (красный) содержит 10 нейронов – цифры от 0 до 9."
Почему автор апеллирует к цветам RGB? Меня это наталкивает на мысль что нейронная сеть еще и цвета распознает. Хотя в твоем примере речь только про яркость пикселей, никаких цветов в твоем примере нет. Что мог иметь ввиду автор?
Цвета, упомянутые автором, служат исключительно для визуального разделения и идентификации различных слоёв нейронной сети на иллюстрациях или диаграммах. Они не указывают на то, что нейросеть обрабатывает цветовую информацию (RGB) в данном примере. В случае с распознаванием рукописных цифр используются градации яркости пикселей, а не цветовые данные.
Когда говорят о дообучении нейросети, то что имеется ввиду? Например, я прошу нейросеть написать запрос на языке 1С. Получить ФИО физических лиц из регистра сведений ФИОФизическихЛиц. Нейросеть пишет запрос неправильно, без использования виртуальной таблицы СрезПоследних. Я прошу исправить, нейросеть опять пишет неправильный запрос, после этого я прошу исправить и т.д. На каком-то этапе переписки нейросеть уже начинает писать запрос так как я хочу, с использованием виртуальной таблицы СрезПоследних. Можно ли этот процесс назвать дообучением?
Нет, данный процесс не является дообучением в техническом смысле. Вот почему:
-
Статичность модели:
- Модель, с которой вы взаимодействуете (например, ChatGPT), не изменяет свои веса или параметры в ходе индивидуальных сессий с пользователями. Она использует заранее обученные веса и алгоритмы для генерации ответов.
-
Временная адаптация:
- Хотя модель может "учитывать" контекст текущей беседы и корректировать ответы на основе ваших указаний, это происходит динамически и временно, без постоянного изменения её внутренней структуры.
-
Отсутствие постоянного хранения:
- Модель не сохраняет информацию о ваших корректировках для использования в будущих взаимодействиях. Каждая сессия рассматривается независимо.
Что происходит на самом деле?
Когда вы взаимодействуете с моделью и просите её исправить ответы:
-
Контекст беседы:
- Модель использует текущий контекст беседы для генерации более точного ответа. Она анализирует ваши предыдущие сообщения и пытается соответствовать вашим ожиданиям.
-
Алгоритмы генерации:
- На основе предоставленной информации модель выбирает наиболее вероятные продолжения, которые соответствуют вашим указаниям.
-
Нет изменения весов:
- Несмотря на то, что модель генерирует более точные ответы, её основные параметры и веса остаются неизменными.
Как происходит настоящее дообучение?
Если бы вы хотели действительно дообучить модель на конкретных примерах запросов 1С, процесс выглядел бы следующим образом:
-
Сбор данных:
- Собираются примеры корректных и некорректных запросов на языке 1С.
-
Подготовка данных:
- Данные очищаются, форматируются и аннотируются для обучения.
-
Обучение модели:
- Модель проходит дополнительный этап обучения на этих данных, что позволяет ей лучше понимать специфику языка 1С и генерировать правильные запросы.
-
Валидация и тестирование:
- Проверяется, насколько хорошо модель справляется с новыми примерами, и вносятся необходимые коррективы.
Необходимые вычислительные мощности для дообучения
Дообучение крупных моделей, таких как трансформеры, требует значительных вычислительных ресурсов:
-
Аппаратные требования:
- GPU: Мощные графические процессоры (например, NVIDIA RTX 3090, A100) с большим объёмом VRAM (16 ГБ и более).
- CPU: Высокопроизводительные многоядерные процессоры.
- Память (RAM): Не менее 32 ГБ, предпочтительно 64 ГБ или больше.
- Хранилище: Быстрые SSD-диски для хранения больших объёмов данных и моделей.
-
Облачные сервисы:
- Для большинства пользователей доступ к таким мощностям может быть ограничен, поэтому часто используются облачные платформы (AWS, Google Cloud, Azure), предоставляющие аренду вычислительных ресурсов.
-
Технические навыки:
- Понимание работы с фреймворками машинного обучения (например, PyTorch, TensorFlow).
- Навыки настройки и оптимизации моделей.
Я не стал приводить ответы полностью, чтобы не загружать читателя лишней информацией. Попробуйте задать свои вопросы, напишите в комментариях ссылки на заданные вопросы. В конце страницы с перепиской с нейросетью можно скопировать ссылку на заданный вопрос. Почитаем вместе, будет интересно.