А сколько параметров обучения у вашей нейронной сети?
Какая предобработка производится с аудиофайлом, и какое количество фич подаётся на вход нейронной сети?
Спроектирована ли ваша нейронная сеть под обучение на CPU, GPU, FPGA?
Какой объём подготовленных входных данных имеется?
Всё это сильно влияет на итоговый ответ на Ваш вопрос, а эту информацию Вы не предоставили...
Под них можно поискать уже готовые модели.
Но для вашей задачи по моему лучше использовать не нейронные сети, а градиентный бустинг над решающими деревьями, аля: XGBoost, LightGBM или CatBoost. Но не уверен, что есть реализации под js. Хотя, может какие-нибудь умельцы уже смогли с помощью emscripten пересобрать их под js.
a) По поводу PoW систем, я так понимаю, там фишка в том, что можно регулировать уровень сложности вычислений с помощью задания условия, например, что хеш должен быть меньше какой-то величины, т.е. впереди хеша стоит какое-то кол-во нулей, и чем больше нулей, тем больше нужно вычислительных ресурсов, чтобы подобрать такой хеш. И чем больше ресурсов участвует в подборе валидного хеша, тем меньше должно быть значение максимально валидного хеша. Т.е. при обучении нейронок нужно уметь считать зависимость между временем затрачиваемым на обучение и пороговым значением ошибки, которая будет считаться валидной для блока. Плюс сам блок можно вдобавок подписывать каким-нибудь быстрым CRC32-C, например, или любым другим хешем, без подбора nonce.
б) А в чём проблема то при проверке? Легко же проверить: подал на вход тестовый датасет, получил на выходе результаты, посчитал по заданной метрике значение получившейся ошибки, и сравнил с пороговым значением. Нужно лишь ответы в тестовом датасете как-то хешировать так, чтобы его нельзя было использовать в качестве трейна, но можно было легко проверить результат.
Кстати, в качестве датасетов можно брать публичные данные из соцсетей, ютуба и т.п., в общем генерирумыый юзерами контент, или контент с видео камер наблюдения, показания различных датчиков и т.п. В общем какую-нибудь бигдату подсунуть майнерам для кластеризации, классификации, предикта, синтеза и прочей обработки. Или какой-нибудь публичный MapReduce сервис организовать.
Как раз об этом и думаю сейчас.
Можно генерить блок в котором записывать лишь магнет ссылку на торрент с тренировочным и тестовым датасетами, затем получать бейзлайн каким-нибудь универсальным алгоритмом. Затем, те люди которые хотят получить награду и новый блок, должны превзойти этот бейзлайн, указав в блоке информацию от какого блока наследуют задачу. Т.е. блокчейн будет состоять из мастерблоков, в которых будут постановки задач с бейзлайн решениями, и блоков, в которых будут улучшение этих бейзлайнов. Ещё можно как-нибудь придумать так, чтобы на вход одного блока результат прогона данных через нейросеть из другого блока подавалось, т.е. можно сделать так, чтобы была возможность делать составные модели из нескольких нейросеток. Ещё нужно придумать каким образом генерить трейн и тестовый датасеты, из чего, и вообще для чего :-)
Кажется начал понимать в чём проблема. В таком случае, если изменить какой-нибудь символ или любое значение или цифру в данных блока, то в таком виде функция хеширования будет не чувствительна к изменениям, и тогда теряется смысл подписи таким хешем.
Т.е. нужно использовать как хеш, так и данные о весах и структуре нейронки, а в алгоритме достижения консенсуса учитывать кроме хеша ещё и величину функции ошибки, чтобы принять блок за валидный и закрепить его в блокчейне.
АртемЪ: тогда я не понимаю, почему нельзя. Ведь обучение нейросети можно ограничить кол-вом итераций и по времени выполнения, и дообучать те же сети в последующих блоках, а критерием того какой хеш выбрать, если будут несколько конкурирующих, то выбирать тот, у которого значение функции ошибки при валидации нейронки будет меньше. По сути, это будет просто новый вариант функции хеширования, но с дополнительной полезной нагрузкой...
Надо лишь придумать где хранить фиксированные train и test датасеты, чтобы все участники сети имели одни и те же наборы данных при работе над хешем для конкретного блока.
Но по сути, если в PoW функцию хеширования заменить функцией обучения нейросети, а вместо хешей вида: 5a3e2419c14371fdea4e9f872a7a3830c377d3bf6bf3efa272a4d6368f0ffd83 будут хеши состоящие из значений весов нейросети, то тоже не получится склеить обеспечение функционирования блокчейн сети с обучением нейронной сети?
Баловался когда-то с ГА+нейронки, делал что-то вроде символьной регрессии вместо функций акстиваций, подбирал их с помощью ГА + веса аналогичным образом. Сходимость таких нейронок была вообще никакая. Может я просто криво закодил, но мне показалось, что вариативность сложных моделей на столько сильно зашкаливает, что ГА не может нащупать правильный локальный минимум и скачет где-то между совсем локальных минимумов, которые вообще далеки от правильного решения...
Возможно я просто не довёл до ума свою модель, может быть когда-нибудь вернусь к этому вопросу ещё раз.