Можно ли развитие алгоритмов ИИ поместить в блокчейн?
Интересно, можно ли реализовать такой блокчейн, где алгоритмом proof-of-work в качестве nonce майнеры бы решали задачу backpropagation для обучения различных нейронок?
Т.е. чтобы майнеры не просто так жгли электричество, а ещё и выполняли полезную работу в плане обучения сильного ИИ, который бы состоял из блоков со слабыми ИИ, входы и выходы которых из разных блоков блокчейна можно было бы смешивать друг с другом в виде смарт контрактов, например. Ещё интересно, какие могут возникнуть подводные камни при реализации такого блокчейна?
Ведь если хранить эволюцию алгоритмов ИИ в блокчейне, то люди станут меньше переживать на счёт того, что ИИ когда-нибудь выйдет из под контроля. Всё станет прозрачней и понятней...
Можно ли развитие алгоритмов ИИ поместить в блокчейн?
Да.
Блокчейн это по сути база данных. И в эту базу данных можно записывать любую информацию, хоть погоду в африке.
можно ли реализовать такой блокчейн, где алгоритмом proof-of-work в качестве nonce майнеры бы решали задачу backpropagation для обучения различных нейронок?
Нет. Майнеры обеспечивают функционирование сети.
Если вам нужно решать другие задачи - никто не мешает, пускайте свои мощности на решение нужных задач, а не на поддержку функционирования сети.
Но по сути, если в PoW функцию хеширования заменить функцией обучения нейросети, а вместо хешей вида: 5a3e2419c14371fdea4e9f872a7a3830c377d3bf6bf3efa272a4d6368f0ffd83 будут хеши состоящие из значений весов нейросети, то тоже не получится склеить обеспечение функционирования блокчейн сети с обучением нейронной сети?
АртемЪ: тогда я не понимаю, почему нельзя. Ведь обучение нейросети можно ограничить кол-вом итераций и по времени выполнения, и дообучать те же сети в последующих блоках, а критерием того какой хеш выбрать, если будут несколько конкурирующих, то выбирать тот, у которого значение функции ошибки при валидации нейронки будет меньше. По сути, это будет просто новый вариант функции хеширования, но с дополнительной полезной нагрузкой...
Надо лишь придумать где хранить фиксированные train и test датасеты, чтобы все участники сети имели одни и те же наборы данных при работе над хешем для конкретного блока.
Кажется начал понимать в чём проблема. В таком случае, если изменить какой-нибудь символ или любое значение или цифру в данных блока, то в таком виде функция хеширования будет не чувствительна к изменениям, и тогда теряется смысл подписи таким хешем.
Т.е. нужно использовать как хеш, так и данные о весах и структуре нейронки, а в алгоритме достижения консенсуса учитывать кроме хеша ещё и величину функции ошибки, чтобы принять блок за валидный и закрепить его в блокчейне.
1. Блокчейн не предназначен для хранения большого объема данных. Он же дублируется у всех майнеров. Там можно хранить небольшие записи, байты-килобайты.
2. Вообще мысль интересная, но надо же гарантировать, чтобы время решения задачи для всех майнеров было более-менее одинаковое. Иначе злоумышленник сможет быстро пообучать простые модельки и нагенерить своих блоков.
Как раз об этом и думаю сейчас.
Можно генерить блок в котором записывать лишь магнет ссылку на торрент с тренировочным и тестовым датасетами, затем получать бейзлайн каким-нибудь универсальным алгоритмом. Затем, те люди которые хотят получить награду и новый блок, должны превзойти этот бейзлайн, указав в блоке информацию от какого блока наследуют задачу. Т.е. блокчейн будет состоять из мастерблоков, в которых будут постановки задач с бейзлайн решениями, и блоков, в которых будут улучшение этих бейзлайнов. Ещё можно как-нибудь придумать так, чтобы на вход одного блока результат прогона данных через нейросеть из другого блока подавалось, т.е. можно сделать так, чтобы была возможность делать составные модели из нескольких нейросеток. Ещё нужно придумать каким образом генерить трейн и тестовый датасеты, из чего, и вообще для чего :-)
Вячеслав Шиндин: "превзойти бейзлайн" - это требует участия человека. Майнинг же должен быть полностью автоматизирован. Т.е. постановкой задачи может быть датасет + код для обучения, который надо выполнить (хотя там же всякие зависимости могут быть) + критерий успешности.
Не знаю, но может быть ссылкой на предыдущий блок может служить расширение датасета? Например, задача машинного перевода - сначала обучается сетка, которая переводит только одну фразу, эту же и еще одну, потом в итоге миллион (которые еще надо добавлять по какому-то принципу). Хотя тогда все предыдущие обученные будут не шибко полезные .
Кстати, в качестве датасетов можно брать публичные данные из соцсетей, ютуба и т.п., в общем генерирумыый юзерами контент, или контент с видео камер наблюдения, показания различных датчиков и т.п. В общем какую-нибудь бигдату подсунуть майнерам для кластеризации, классификации, предикта, синтеза и прочей обработки. Или какой-нибудь публичный MapReduce сервис организовать.
Нет, нельзя.
Proof of системы (то, что ты описал) созданы для защиты блокчейна и, опуская детали, должны быть:
а) Не подделываемыми;
б) Легко проверяемыми;
Процесс обучения не подходит ни по первому, ни по второму признаку. Если очень хочется связать ИИ с блокчейном, то копай в сторону механизмов эфира
а) - это не так. Разве хэш от какого-то значения нельзя подделать? Надежность блокчейна исходит из того, что пока ты генеришь свой блок, майнеры по всему свету уже сгенерят 10, и их форк будет длиннее.
б) качество обучения нейронной сети легко проверить - прогнали тестовый датасет, получили, например, точность выше требуемого значения - значит, валидно.
ivodopyanov:
а) Нельзя, и не только хэши (системы есть разные, в мире не дураки сидят)
б) Нет, но уже в сотый раз одно и то же заблуждение про датасеты и точность обсуждать мне лень
a) По поводу PoW систем, я так понимаю, там фишка в том, что можно регулировать уровень сложности вычислений с помощью задания условия, например, что хеш должен быть меньше какой-то величины, т.е. впереди хеша стоит какое-то кол-во нулей, и чем больше нулей, тем больше нужно вычислительных ресурсов, чтобы подобрать такой хеш. И чем больше ресурсов участвует в подборе валидного хеша, тем меньше должно быть значение максимально валидного хеша. Т.е. при обучении нейронок нужно уметь считать зависимость между временем затрачиваемым на обучение и пороговым значением ошибки, которая будет считаться валидной для блока. Плюс сам блок можно вдобавок подписывать каким-нибудь быстрым CRC32-C, например, или любым другим хешем, без подбора nonce.
б) А в чём проблема то при проверке? Легко же проверить: подал на вход тестовый датасет, получил на выходе результаты, посчитал по заданной метрике значение получившейся ошибки, и сравнил с пороговым значением. Нужно лишь ответы в тестовом датасете как-то хешировать так, чтобы его нельзя было использовать в качестве трейна, но можно было легко проверить результат.