Существуют ли актуальные ресурсы, которые сравнивают различные нейросети в плане «качества»?
Существуют ли ресурсы, которые сравнивают различные нейросети (решающие задачи одного типа) с открытым исходным кодом (например на гитхабе) в плане скорости, производительности, и тд, грубо говоря — качества.
То есть приблизительно имею в виду: с задачей A на данный момент лучше всех справляется код из репозиториев X1, X2, X3 (с такими-то параметрами конфига), с задачей B — Y1, Y2, Y3 и тд
Например, что касается, генеративных сетей: на гитхабе уже есть довольно большое число разновидностей тех же GAN (WGAN, BEGAN и тд), автоэнкодеров (VAE) и тд.
И продолжают появляться все новые и новые как грибы после дождя
Более-менее понятна ситуация на тему супер разрешения — пока насколько понимаю, там лидирует ESRGAN.
Правда беглое тестирование готовых моделей как-то не особо впечатлило, как впечатлили например NVidia pggans в плане генерации лиц 1024х1024.
Можно получать например информацию из разных papers на arxiv.org.
Но они не всегда сравнивают свой алгоритм с другими или сравнивают с объективно слабыми, и приходится выискивать информацию во всей статье или через Гугл (например запрос "than SRGAN" отправляет на ESRGAN) и тд, а этой информации может и не быть.
В идеале конечно хотелось бы иметь конечное число таких источников в разумных пределах (например максимум до 10), чтобы не прыгать туда-сюда.
Где можно найти подобные ресурсы со сравнением (хотя бы приблизительным) разных сетей?
Сравнивать можно не на "задачах одного типа", а на решение определенной задачи на конкретном наборе данных. Чем, собственно, kaggle и занимается. А универсального ответа на поставленный вопрос не существует.
А вообще-то машинное обучение многие воспринимают как "взять готовое решение -> применить _> получить суперрезультат". На самом деле это всегда глубокое исследование и профессиональный анализ.
Как пример, могу привести анализ применимости и эффективности различных методов предсказания во временных рядах (одна из самых известных и актуальных задач) . Вроде - все ясно. Однако попытайтесь разобраться в результатах без серьезного предварительного изучения теории :-) https://journals.plos.org/plosone/article/file?id=...
Ну да, конечно лучше на конкретном наборе данных.
Но ведь очевидно что есть нейросети, которые с задачей справляются лучше, есть которые это делают не так хорошо.
Можно например составить набор приоритетных задач в разных областях, для каждой из них подготовить несколько типовых датасетов и потренировать их в одних и тех же условиях одно и то же время.
И сравнить результаты. Может получиться что в рамках одной задачи для 1 датасета лучше подойдет одна нейросеть, для другого другая, это тоже желательно учитывать.
Это будет довольно масштабное исследование, но по-моему оно того будет стоить. Плюс чем больше этот проект будет приобретать известность, тем легче его придётся курировать, тк. разработчики сами будут присылать ссылки на свои репозитории.
Это например можно сделать в виде сайта с аккаунтами пользователей — зарегистрироваться может каждый, но если он будет спамить или флудить то будет попадать в бан на определенное время.
А когда наберётся действительно большая масса хорошего кода, то можно будет создать рекуррентную нейросеть, которая будет сама определять с высокой вероятностью, является ли данная сеть "хорошей".
Альберт, Ну, в некоторых предметных областях это и делают. Например, в области киберсекюрити реально используют единственный "эталонный" датасет, т.н. KDD99, который, как видно из названия, создан в 1999 (!!) году. И все пытаются свои алгоритмы оттестировать на нем.
Немногим лучше ситуация в медицине, а "продажники" очень любят датасет по стоимости квартир (кажется) в Нью-Йорке.
Но как только потом эти алгоритмы начинают применять "в боевых условиях" оказывается, что тесты и реальная работа - это "две большие разницы" :-). И то, что показало отличные результаты на тестах, в продакшене ведет себя мягко говоря не так.
Вот и получается, что полезность таких сравнений весьма условна. Впрочем, если вы видете в этом перспективу - попробуйте :-). Лет через десять оценим результаты.
Разрешите небольшой оффтоп
Вы привели пример с временными рядами, я их бегло прогуглил сейчас (не интересовался до этого), и пришел к выводу (если неверному — поправьте) что они работают ну с очень большим количеством параметров, поэтому очень сложно что-то спрогнозировать с большой долей вероятности.
Насколько понял это грубо говоря темы типа биржи.
Я в своем вопросе имел в виду решение каких-то более устаканенных задач, таких как например детектирование, где к примеру задача определить на какой фотографии кошка на какой собака решается нейросетями уже с очень малой долей погрешности и в этом случае "лучше" будет та, которая делает это быстрее.
Или например задачи когда нейросеть превращает 2D в 3D — тоже несложно определить, по крайней мере человеку владеющему 3d редактором, насколько сильно ошибается нейросеть.
Например я уверен, что возможно создать нейросеть, которая предсказывает, оптимизирован код на определённом языке или нет. Просто хотя бы потому что это может сделать человек и даже программа.
Думаю, можно даже реализовать сеть, которая будет оптимизировать неоптимизированный рабочий код.
А то что само по себе сложно предсказать человеку исходя из опыта и логики, не считаю нужным на это даже тратить время
1. пришел к выводу (если неверному — поправьте) что они работают ну с очень большим количеством параметров, поэтому очень сложно что-то спрогнозировать с большой долей вероятности. -- не верно.
2. детектирование, где к примеру задача определить на какой фотографии кошка на какой собака решается нейросетями уже с очень малой долей погрешности и в этом случае "лучше" будет та, которая делает это быстрее. -- для того, что-бы сеть могла эту задачу решить, ее обучают. Для обучения даже такой простой задачи требуются тысячИ (!) примеров. И не факт, что на последующих примерах система сработает так-же точно, как на предыдущих. Это рассказывается в любом курсе по нейронным сетям. И кстати - "быстрее" в общем случае не тождественно "лучше".
3. тоже несложно определить, по крайней мере человеку владеющему 3d редактором, насколько сильно ошибается нейросеть. Как выразить, на сколько процентов сеть А сработала лучше (или хуже) сети В? Как такую оценку автоматизировать? Без такой оценки, подтвержденной тысячамИ(!) экспериментов, гарантии, что именно ваш рисунок будет распознан лучше сетью А, чем сетью В нет . А теперь представьте, что у вас десяток разных типов сетей, причем на каждом из наборов они показывают разные по качеству результаты.
4. Например я уверен, что возможно создать нейросеть, которая предсказывает, оптимизирован код на определённом языке или нет. Попробуйте. Хотелось бы увидеть пример, а не просто уверенность.
5. Думаю, можно даже реализовать сеть, которая будет оптимизировать неоптимизированный рабочий код. - это ни к машинному обучению, ни к нейронным сетям никакого отношения не имеет. Такие программы (на уровне экспериментов) писались лет 30 назад. Потом от этой идеи отказались. Можете погуглить, почему.
6. А то что само по себе сложно предсказать человеку исходя из опыта и логики, не считаю нужным на это даже тратить время - элементарный контрпример: определение авторства текста по стилю.
И еще - концептуальное замечание к вашему основному тезису. Для того, что-бы определить для конкретного датасета, какой из алгоритмов сработает лучше, необходимо построить нейросеть, которая на вход будет принимать этот датасет, а на выходе - давать рекомендацию по выбору конкретного типа нейросети для решения основной задачи. При этом вполне может оказаться, что сложность этой "метанейросети" окажется на порядок сложнее, чем сложность "рабочих" сетей. Я уже не говорю, что в общем случае человек как раз и не способен такую задачу решить. А тратить-ли на эту задачу ваше время - это уже ваш вопрос.