Я сталкиваюсь с проблемой недвоичной классификации этой формы:
- Ввод: 2-мерный вектор (x, y) с -1
- Вывод: 4-мерный вектор (p_0, p_1, p_2, p_3), где 0
Программа, которую я использую для их классификации, хочет симулировать 4-кубитную квантовую цепь, это означает, что я начинаю с 16-мерного вектора с 1 в качестве первой записи, и0 в другом месте, а затем я применяю серию поворотов в форме матричных произведений.
Перефразируя это немного: я начинаю с указанного 16-мерного вектора, а затем умножаю его на матрицу 16x16, которая зависит отпервый компонент точки "x", который отображает новый 16-мерный вектор.Затем я умножаю этот новый вектор на другую матрицу, теперь в качестве параметра у меня используется «y».Я называю этот процесс «кодированием» данных.
После кодирования я использую набор матриц, в зависимости от каждого параметра.Разумный выбор этих параметров - вот что принесет мне желаемую классификацию.
Итак, после расчета каждого продукта я получаю новый 16-мерный вектор, который зависит от каждого упомянутого параметра, и мы будемвызовите a (x, y).
Отсюда я создаю целевую функцию f (x, y) = (p_0, p_1, p_2, p_3).Каждый из p_i будет суммой некоторых компонентов (x, y).
Теперь f (x, y) - это фактический вывод, который я получаю для ввода (x, y).Позвольте мне назвать d (x, y) желаемый результат.Моя цель - найти набор значений параметров, который делает f (x, y) как можно ближе к d (x, y) для довольно большого количества входных данных.
d (x, y)) может принимать только одно из четырех возможных значений:
- (1,0,0,0) - дублируется как "0",
- (0,1,0,0)обозначен как "1",
- (0,0,1,0) обозначен как "2",
- (0,0,0,1) обозначен как "3".
Функция стоимости, которую я выбрал для этого дела, является квадратичной функцией стоимости.Чтобы минимизировать функцию стоимости, я использую алгоритм градиентного спуска.Я вычисляю частные производные методом центрированных конечных разностей.
Итак, теперь, когда программа описана, моя настоящая проблема: с этой конфигурацией я получаю довольно высокие значения затрат (потерь), в диапазоне от 1,5 до примерно4.
Чтобы достичь этих результатов, я запускаю программу «Градиентный спуск» 30 раз (эпох) со скоростью обучения 1.
Я привык к действительно небольшим потерямзначения (0,25 раньше было очень плохим результатом для очень похожей проблемы), но я до сих пор не достаточно хорошо понимаю, что на самом деле происходит за числами, чтобы знать, должен ли я слишком волноваться по этому поводу или нет.
Моя программа достигает максимальной точности ~ 40% (пробуя несколько различных наборов матриц) для 1000 тренировочных баллов и 1000 оценочных баллов.
Я предполагаю, что высокое значение потери можетЯ имею в виду, что моя программа просто недостаточно хороша для выполнения этой классификации, но я не знаю, в какой степени я смогу получить лучшерезультаты.
Есть ли что-то, что я делаю совершенно неправильно, или просто эта структура недостаточно хороша для классификации?
Большое спасибо за любые отзывы.