Вопрос или проблема
В эти последние дни я начал личный проект, в рамках которого хотел бы создать модель, которая, получив незавершенный эскиз, сможет его закончить.
Я планировал использовать некоторые предварительно обученные модели, доступные в HuggingFace, и дообучить их с помощью данных моих эскизов для моей задачи. Данные эскизов у меня в формате stroke-3, как в следующем примере:
[
[10, 20, 1],
[20, 30, 1],
[30, 40, 1],
[40, 50, 0],
[50, 60, 1],
[60, 70, 0]
]
Первое значение каждой тройки – это X-координата, второе значение – Y-координата, а последнее значение – бинарное значение, указывающее, находится ли ручка в опущенном положении (1) или поднята (0).
Мне было бы интересно, если бы вы, ребята, могли дать мне какие-либо инструкции/советы по этому вопросу? Как мне подготовить/предварительно обработать данные, чтобы я мог ввести их в предварительно обученные модели, такие как BERT, GPT и т.д.? Так как это данные stroke-3, а не текст или последовательность чисел, я не совсем понимаю, как мне их обрабатывать.
Большое спасибо! 🙂
Я предлагаю вводить данные эскиза в виде текста. Нет проблем с их кодированием просто как текст. Также пусть модель генерирует текст. Учитывая это, вам следует использовать модель, предназначенную для генерации текста, например, GPT-2 или любую другую модель-декодер Transformer (в отличие от BERT).
Ваша задача по завершению эскизов интересна, и ее можно решить, используя модели последовательностей, такие как RNN или трансформеры, как GPT. Однако, как вы заметили, ваши входные данные в формате stroke-3, что не является текстом или последовательностью чисел. Поэтому вам нужно предварительно обработать данные и преобразовать их в последовательность числовых векторов, которые могут быть использованы в предварительно обученной модели, такой как BERT или GPT.
Одним из возможных подходов для предварительной обработки данных stroke-3 является их преобразование в последовательность относительных координат. Вы можете начать с вычисления абсолютных координат каждой точки штриха путем накопительного суммирования координат x и y штрихов. Затем вы можете преобразовать абсолютные координаты в относительные, вычитая предыдущую абсолютную координату из текущей абсолютной координаты. Это даст вам последовательность относительных координат, представляющих штрихи.
Далее вы можете представить каждую точку штриха в виде числового вектора. Одним из распространенных представлений является использование трехмерного вектора (dx, dy, p), где dx и dy – это относительные координаты точки штриха, а p – состояние пера (1, если перо опущено, 0, если поднято). Это даст вам последовательность числовых векторов, которые могут быть использованы в предварительно обученной модели.
После предварительной обработки данных вы можете дообучить предварительно обученную модель, такую как GPT или BERT, на задаче завершения эскиза. Вы можете использовать возможности последовательного обучения предварительно обученной модели для генерации отсутствующих штрихов для незавершенного эскиза. Во время дообучения вы можете использовать функцию потерь, которая штрафует модель за создание штрихов, слишком отличающихся от оригинальных данных эскиза.
В целом, ключевые шаги для решения этой задачи:
-
Предварительно обработать ваши данные stroke-3, преобразовав их в последовательность относительных координат и представив каждую точку штриха как числовой вектор.
-
Дообучить предварительно обученную модель последовательностей, такую как GPT или BERT, на задаче завершения эскиза.
-
Во время дообучения использовать функцию потерь, которая штрафует модель за создание штрихов, слишком отличающихся от оригинальных данных эскиза.
Ответ или решение
Теория:
Чтобы дообучить модели, такие как GPT, на данных в формате stroke-3, необходимо сначала преобразовать специфичный формат данных в подходящий для использования модели последовательный набор числовых векторов. Строки данных stroke-3 содержат координаты X и Y, а также бинарное значение, указывающее, поднято перо или нет. Это создаёт несколько сложностей, так как большинство готовых моделей обучены на текстовых данных.
Пример:
Одним из путей преобразования данных является их перевод в последовательность относительных координат. Это можно сделать, накопительно суммируя значения X и Y, чтобы получить абсолютные координаты каждой точки, а затем вычисляя относительные координаты, вычитая предыдущие абсолютные координаты из текущих. После этого каждая точка представляется как трёхмерный вектор (dx, dy, p), где:
- dx и dy — это относительные координаты;
- p — состояние пера (1, если перо опущено; 0, если поднято).
Применение:
-
Предобработка данных: Преобразуйте каждую строку stroke-3 в последовательность относительных координат и представьте её в виде числового вектора. Это позволит интегрировать информацию об изменениях координат и состоянии пера. Такой вектор можно интерпретировать как текстовые токены, или как числовые векторы, которые затем можно подать в идентичную структуру, используемую BERT или GPT.
-
Дообучение модели: Используйте предобученные трансформеры, например GPT-2, которые обучены на генерирующих задачах (в отличие от BERT, который более эффективен для задач классификации). Fine-tuning на такой модели обеспечит возможность предсказания оставшихся штрихов на основе неполного скетча.
-
Настройка функции потерь: Во время процесса дообучения используйте функцию потерь, которая будет учитывать степень отклонения сгенерированных моделей штрихов от оригинальных данных. Это обеспечит высокую точность модели в генерации завершенного скетча, приближенного к intended оригиналу.
Важно соблюдать аккуратность при настройке модели, так как задачи генеративного характера требуют тщательной настройки гиперпараметров, особенно когда речь идет о данных, которые не являются текстовыми. Возможное использование дополнительных скрытых слоёв позволит лучше моделировать динамику изменения штрихов.