Всем привет! На связи Андрей Нестеров, я занимаюсь компьютерным зрением в применении к мобильным приложениям в компании Friflex.
Мы создаем продукты по оцифровке спорта, которые позволяют распознавать спортивные события и анализировать их.
В этой статье я приведу простейший пример использования ChatGPT в машинном обучении, предложу несколько способов, которые помогут обращаться к ChatGPT для решения реальных задач, а также подчеркну моменты, в которых она совершенно неприменима.
Многие из нас видели большое количество новостей и различных статей про ChatGPT – нейросеть, с которой можно разговаривать, задавать вопросы, а также просить ее помочь в написании кода. Уже больше месяца я пробую использовать ее для рабочих задач и чем глубже изучаю, тем больше открываю ее скрытые возможности.
И так как дисклеймер «данная статья была написана полностью при помощи ChatGPT» больше не является чем-то новым, то по традиции, дадим слово самой ChatGPT рассказать о себе:
“Construct a CNN model for the MNIST task”
Теперь, когда модель у нас готова, запросим создать пример обучающего пайплайна.
В конце попросим ее подготовить графики обучения.
Так в несколько шагов, используя только ChatGPT, мы получили основу обучающего пайплайна на примере MNIST датасета. Теперь пора приступать к задачам, более приближенным к реальности.
Рассмотрим данную технику на одном примере. Допустим, на определенном этапе обучения мы хотим сохранить состояние оптимизатора, чтобы использовать его для другой нейросетевой модели.
Здесь мы можем увидеть стандартный ответ. Однако, в этой задаче стоит цель получить именно состояние оптимизатора, а не всей модели.
Поэтому, чтобы получить нужный для нас ответ, зададим уточняющий вопрос:
Результат выглядит уже намного ближе к желаемому. В нашем случае, когда все обучение проходит на Tensorflow, сделаем последнюю итерацию:
Именно то что и было нужно!
Вспомним наш пример готового бейзлайна, который мы получили в начале. Теперь мы хотим добавить аугментации в процесс обучения. Исходим из того, что мы знаем библиотеку, которую хотим использовать – Albumentations. А также, мы знаем примерный вид решения и методы, которые будут использоваться. В таком случае зададим как можно более конкретный вопрос ChatGPT:
Получаем отличную обертку для аугментаций и создания Tensorflow датасета, который можем использовать в реальных задачах.
Например, на один из запросов, с которым мы уже сталкивались, ChatGPT выдала следующее:
Здесь мы получаем очевидную ошибку:
Однако в некоторых случаях ни один из подходов совершенно не работает.
Допустим, мы хотим оптимизировать модель, используя метод прунинга.
Как и в одном из примеров, мы получили код, в котором присутствуют несуществующие методы. При этом, если попробовать итеративно улучшить ответ, получится бесконечный цикл ошибок:
Несмотря на впечатляющий прогресс языковых моделей, ChatGPT не может заменить человека. Она часто совершает ошибки, выдает правдоподобные, но ложные ответы, а иногда совсем не может справиться с задачей. Однако для человека, который чувствует себя уверенно в своей области, этот инструмент может отлично пригодиться для улучшения продуктивности. Совмещая интуицию опытного специалиста и понимание, как работает данная нейросеть, можно:
Мы создаем продукты по оцифровке спорта, которые позволяют распознавать спортивные события и анализировать их.
В этой статье я приведу простейший пример использования ChatGPT в машинном обучении, предложу несколько способов, которые помогут обращаться к ChatGPT для решения реальных задач, а также подчеркну моменты, в которых она совершенно неприменима.
Многие из нас видели большое количество новостей и различных статей про ChatGPT – нейросеть, с которой можно разговаривать, задавать вопросы, а также просить ее помочь в написании кода. Уже больше месяца я пробую использовать ее для рабочих задач и чем глубже изучаю, тем больше открываю ее скрытые возможности.
И так как дисклеймер «данная статья была написана полностью при помощи ChatGPT» больше не является чем-то новым, то по традиции, дадим слово самой ChatGPT рассказать о себе:
Далее обращаться мы будем к ней на английском языке. Так проще задавать вопросы, связанные с конкретной имплементацией кода.«Я – ChatGPT, крупнейшая модель языкового обучения, созданная OpenAI для предоставления ответов на разнообразные вопросы и участия в разговорах на различные темы. Я обучена на огромном количестве текстовых данных и могу генерировать ответы, похожие на человеческие, используя техники обработки естественного языка».
Построение основ
Начнем наш путь к решению реальных задач при помощи ChatGPT с простейшего примера построения обучающего пайплайна для задачи классификации изображений. В данном случае, мы хотим получить основу, простейший каркас пайплайна, который далее будем усовершенствовать. В качестве примера возьмем стандартную задачу MNIST. Первым шагом попросим ChatGPT создать базовую модель для классификации изображений:“Construct a CNN model for the MNIST task”
Теперь, когда модель у нас готова, запросим создать пример обучающего пайплайна.
- “Give me a short baseline example of tensorflow data loader for image classification task using MNIST as an example”
В конце попросим ее подготовить графики обучения.
- “Create plots for training losses and accuracies”
Так в несколько шагов, используя только ChatGPT, мы получили основу обучающего пайплайна на примере MNIST датасета. Теперь пора приступать к задачам, более приближенным к реальности.
Улучшение ответов
В большинстве случаев ChatGPT отлично справляется со стандартными запросами, но как добиться качественного ответа на более сложные вопросы?- Итеративные вопросы
Рассмотрим данную технику на одном примере. Допустим, на определенном этапе обучения мы хотим сохранить состояние оптимизатора, чтобы использовать его для другой нейросетевой модели.
- “How to save the state of an optimizer in a keras model?”
Здесь мы можем увидеть стандартный ответ. Однако, в этой задаче стоит цель получить именно состояние оптимизатора, а не всей модели.
Поэтому, чтобы получить нужный для нас ответ, зададим уточняющий вопрос:
- “Can I save only the state of the optimizer?”
Результат выглядит уже намного ближе к желаемому. В нашем случае, когда все обучение проходит на Tensorflow, сделаем последнюю итерацию:
- “Yes, the same but in tensorflow/keras”
Именно то что и было нужно!
- Детализированные запросы
Вспомним наш пример готового бейзлайна, который мы получили в начале. Теперь мы хотим добавить аугментации в процесс обучения. Исходим из того, что мы знаем библиотеку, которую хотим использовать – Albumentations. А также, мы знаем примерный вид решения и методы, которые будут использоваться. В таком случае зададим как можно более конкретный вопрос ChatGPT:
- “Create a tensorflow data loader for image classification task, MNIST as an example. Prepare a class called Transformation that gets a list of albumentations, uses __call__ to process a sample with tf.numpy_function”
Получаем отличную обертку для аугментаций и создания Tensorflow датасета, который можем использовать в реальных задачах.
- Корректировка ошибок
Например, на один из запросов, с которым мы уже сталкивались, ChatGPT выдала следующее:
- “Provide an example of how to use albumentations on MNIST dataset with tensorflow”
Здесь мы получаем очевидную ошибку:
- ModuleNotFoundError: No module named 'albumentations.tensorflow'
Однако в некоторых случаях ни один из подходов совершенно не работает.
Допустим, мы хотим оптимизировать модель, используя метод прунинга.
- “Give me a script for pruning a tensorflow keras model”
Как и в одном из примеров, мы получили код, в котором присутствуют несуществующие методы. При этом, если попробовать итеративно улучшить ответ, получится бесконечный цикл ошибок:
- Q:“tf.keras.callbacks has no PruningCallback”
- A:“My apologies, you are correct. As of my knowledge cutoff (2021), the PruningCallback was not available in the tf.keras.callbacks module. Instead, you can use the tf.keras.mixed_precision module, which provides a pruning API for both weight and activation pruning.”
- A:“Sure, here's an example of pruning a TensorFlow Keras model using the MNIST dataset and tf.keras.optimizers.schedules.PolynomialDecay:”
- Qобнаруживая, что в ответе не существует таких аргументов) I think the arguments in PolynomialDecay are wrong here
- A:“You're correct, I apologize for the mistake. Here is the corrected version of the code using the correct arguments for tf.keras.optimizers.schedules.PolynomialDecay:”
- Q:“This code gives me this error: RuntimeError: You must compile your model before training/testing. Use `model.compile(optimizer, loss)`.”
- A:“... Here is an updated version of the code to include the compile step:”
- Q:“ValueError: Index out of range using input dim 0; input has only 0 dims for '{{node sequential_1/prune_low_magnitude_dense_2/strided_slice}}”
Заключение
В данной статье мы рассмотрели пример построения основ для задачи машинного обучения, исследовали несколько способов обращения с ChatGPT для улучшения результатов выдачи и взглянули на ошибки, которые может выдавать ChatGPT, а после узнали, как с ними работать.Несмотря на впечатляющий прогресс языковых моделей, ChatGPT не может заменить человека. Она часто совершает ошибки, выдает правдоподобные, но ложные ответы, а иногда совсем не может справиться с задачей. Однако для человека, который чувствует себя уверенно в своей области, этот инструмент может отлично пригодиться для улучшения продуктивности. Совмещая интуицию опытного специалиста и понимание, как работает данная нейросеть, можно:
- ускорить свою разработку;
- получать быстрые готовые варианты для прототипирования;
- добиваться правильного решения сложной проблемы через череду уточняющих запросов.
Как решать реальные задачи при помощи ChatGPT
Всем привет! На связи Андрей Нестеров, я занимаюсь компьютерным зрением в применении к мобильным приложениям в компании Friflex . Мы создаем продукты по оцифровке спорта, которые позволяют...
habr.com