Эссе о разработке игр, мышлении и книгах

Мои GPT-шки и prompt engineering

Понечки занимаются prompt engineering (c) DALL-E

Понечки занимаются prompt engineering (c) DALL-E

Я пользуюсь ChatGPT практически с момента выхода её четвёртой версии (то есть уже больше года). За это время хорошо набил руку в написании запросов к этой штуке.

В какой-то момент, OpenAI разрешили настраивать свой чат с помощью собственных текстовых инструкций (ищите Customize ChatGPT в меню). Я постепенно дописывал туда команды и вот на днях размер инструкций превысил разрешённый максимум :-)

Плюс, оказалось, что универсальный набор инструкций не получается — под каждую задачу их нужно подстраивать, иначе они не будут так полезны как могли бы быть.

Поэтому покумекав, я решил вместо кастомизации своего чата, вынести инструкции в GPT ботов. OpenAI называют их GPTs, по-русски буду называть их GPT-шками. По-сути, это такие же чаты, в которых больше лимит на кастомизированные инструкции и в них можно залить дополнительные тексты как базу знаниий.

Когда-нибудь, я сделаю GPT-шку для этого блога, а пока расскажу про двух рабочих лошадок, которыми пользуюсь каждый день.

  • Expert — ответы на вопросы.
  • Abstractor — краткое изложение текста.

Для каждой будет описание базового промпта с моими комментариями.

OpenAI недавно открыла магазин GPT-шек, буду благодарен если пролайкаете мои. Конечно, только если они вам полезны.

Далее

Делаем простой ИИ тамагочи на ChatGPT

DALL-E: Screenshot of a hamster from a game simulating artificial life, similar to the Creatures game.

DALL-E: Screenshot of a hamster from a game simulating artificial life, similar to the Creatures game.

Обсуждали с коллегами что ещё может современный ИИ, вспомнили про тамагочи и всякую искусственную жизнь.

Поболтали и разошлись, а я пошёл и за 15 минут получил вот такой результат.

Тюнить и украшать вывод не буду — уже есть куча примеров как получать чистый код от ботов. В данном случае интересна сама демонстрация возможности.

Спойлер: с ChatGPT не надо тратить время на разработку ИИ простых ботов, сеть подстроится под ваши требования. Просто скажите кем ChatGPT должна притвориться.

Этот пост неявно продолжает размышления из Write Your Own Adventure.

Далее

Реализация Generative Adversarial Network

В завершение разбирательства с Deep Learning решил посмотреть что-нибудь более интересное и ориентированное на генерацию контента — реализовать GAN.

По правде говоря, большую часть времени с GAN (и Autoencoder) я экспериментировал на спрайтах карты Сказки. Ожидаемо, на таком мизере обучающих данных ничего интересного не получилось. Хотя польза и была. Поэтому для поста я подготовил отдельный notebook с более наглядными результатами — генерацией обуви по набору данных Fashion MNIST.

Ноутбук с реализацией GAN и комментариями.

Про архитектуру GAN лучше почитать в вики, интернетах или моём ноутбуке.

Краткая суть:

  • Тренируются две сети: generator & discriminator.
  • Генератор учится создавать картинки из шума.
  • Дискриминатор учится отличать поддельные картинки от настоящих.
  • Ошибка дискриминатора определяется качеством предсказания фейковости изображения.
  • Ошибка генератора определяется качеством обмана дискриминатора.

Если правильно подобрать топологии сетей и параметры обучения, то в итоге генератор научается создавать картинки неотличимые от оригинальных. ??????. Profit.

Kaggle: Digit Recognizer (MNIST) точность 0.99585

Примеры цифр из набора MNIST.

Примеры цифр из набора MNIST.

Продолжаю путешествие по занимательным землям Deep Learning.

В прошлый раз я учился заводить deep learning на локальной машине и делал совсем детскую, искусственную и неспецифическую для DL задачу.

В этот раз решил попробовать что-то более диплёрничное — научиться решать задачи на Kaggle. Есть предположение, что Kaggle — самый простой и интересный способ учить DL.

На этом сервисе есть задачи для новичков, одну такую — Digit Recognizer — я выбрал для тренировки. Соревнование по распознаванию рукописных цифр из набора MNIST. Этот набор должны были встречать даже люди далёкие от ML.

Notebook с решением и комментариями опубликован на github.

На момент отправки решение занимало 467 место из ~7000. На мой взгляд неплохой результат, учитывая, что первые мест 150 занимают читерские решения. MNIST — общедоступный набор данных, их можно скачать вне kaggle и залить в качестве решения готовые ответы, или переобучить сеть на полном наборе.

Далее

Генерация подземелий — от простого к сложному

Что у нас должно получиться.

Что у нас должно получиться.

В этом уроке рассказывается, как запрограммировать подземелье. Если вы не программист, вам будет интересно почитать как придумать подземелье.

Несколько вечеров проверял идею генерации космических баз. Космическая база в итоге не получилась, а вот на добротное подземелье результат похож. Поскольку шёл от простого к сложному и никакой суровой магии не делал, то решил переработать код в урок по генерации подземелий на Python.

В итоге у нас получится генератор подземелий со следующими свойствами:

  • Комнаты будут соединены коридорами.
  • Топологически подземелье будет иметь форму дерева. Добавить циклы будет элементарно, но уже в качестве домашнего задания.
  • Будет настраиваться количество комнат, их размер, «уровень ветвления».
  • Подземелье будет располагаться на клеточной сетке (состоять из квадратных клеток).

Весь код можно найти на github.

Кода в посте не будет — все используемые подходы легко описываются словами.

Для каждого этапа разработки в репозитории будет создан отдельный тэг, содержащий код на момент завершения этапа.

Задача этого урока не столько научить программировать генераторы подземелий, сколько показать, что кажущиеся сложными вещи на деле довольно просты, если их правильно разбить на подзадачи.

Далее