Децентрализованный менеджер корпуса

Содержание

  1. Вступление
  2. Проблемы
  3. Решение
  4. Преимущества Corda
  5. Дальнейшая работа и использование
  6. Заключение
  7. Ресурсы

Вступление

Мы часто слышим об инновационных способах использования моделей машинного обучения в приложениях. Мы почти никогда не слышим о том, насколько болезненным является опыт, который переживают специалисты по данным, создающие эти модели. В этой статье я расскажу (при условии, что вы имеете базовое представление о Corda):

  • С какими типичными проблемами сталкиваются специалисты по обработке данных при построении этих моделей
  • Как я решил эти проблемы с помощью CorDapp под названием Decentralized Corpus Manager.
  • Почему Corda - правильный выбор для децентрализованных приложений машинного обучения

Прежде чем мы углубимся в проблемы, давайте кратко рассмотрим некоторые общие термины и общий рабочий процесс для создания модели машинного обучения. Поскольку машинное обучение - довольно обширная тема с множеством специализаций, давайте сосредоточимся конкретно на классификации текста. Цель классификации текста - просто классифицировать фрагмент текста. Несколько распространенных случаев использования классификации текста - это анализ тональности, детекторы спама и обнаружение намерений.

Обучение машины классификациям текста аналогично тому, как вы обучаете ребенка распознавать «красные» и «не красные» объекты. Вы должны составить набор фотографий, которые содержат красные предметы, такие как яблоко или пожарную машину, и другой набор предметов, которые не являются красными, как банан или дерево. Затем вы просто показываете ребенку каждую картинку и вслух классифицируете ее.

Чтобы научить машину точной классификации, специалисты по обработке данных собирают набор данных (известный как «корпус») с различными образцами текстов (называемых «высказываниями») вместе с их соответствующей категорией классификации («ярлыками»). Этот корпус будет передан алгоритму классификации, который токенизирует корпус и создаст модель. На эту модель ссылается машина, когда пытается делать прогнозы.

Проблемы

Трудно найти хорошие и достоверные данные:

Есть четыре основных способа получения обучающих данных, и у каждого из них есть свои проблемы:

  • Сайты обмена данными, такие как Kaggle:

Эти сайты отлично подходят для начала работы с машинным обучением, но в большинстве случаев на них не будет данных, которые вы ищете, поскольку каждая модель классификации уникальна для своего варианта использования. Например, предположим, что вы создаете приложение для обнаружения намерений, способное определить, просил ли кто-то сбросить пароль или нет (метка not обычно называется отрицательной категорией) из приложения мобильного банкинга. Вы переходите в Kaggle, загружаете данные, обучаете свою модель и тестируете ее, чтобы заметить, что ваша модель имеет 60% -ный показатель точности, как такие высказывания, как Я не могу войти в свое мобильное банковское приложение в США! не работают, потому что загруженный вами набор данных содержал обобщенные высказывания, такие как Я потерял свой документ Excel, содержащий все мои учетные данные…. Подобные обобщения могут привести к тому, что модели будут переоснащаться или недооцениваться.

  • Данные клиента:

Если вам [не] повезло (зависит от того, как вы на это смотрите), клиент, для которого вы создаете модель классификации, скажет вам, что у него есть куча данных, которые вы можете использовать для обучения модели, только чтобы узнать, что «Горы данных» на самом деле представляют собой неструктурированный экспорт заявок на инциденты службы поддержки, по которым люди пытаются получить доступ к своей учетной записи. Это, конечно, означает, что вы должны вручную просмотреть эти журналы. Вы можете создать сценарий на основе регулярных выражений, чтобы ускорить процесс, но в конечном итоге вам все равно придется отсеивать и структурировать данные в соответствии с вашими потребностями в обучении.

  • Ручное создание:

Если хочешь, чтобы что-то было сделано правильно, сделай это сам… верно? Помимо того факта, что вы, вероятно, предпочли бы тратить свое время на что-то еще, помимо написания высказывания за высказыванием, простое написание корпуса самостоятельно может привести к предвзятому набору данных, когда вы навязываете сознательные или бессознательные предпочтения, которые могут остаться незамеченными до тех пор, пока вы приложение попадает в производство.

  • Данные краудсорсинга:

Вы можете использовать такие сайты, как Mechanical Turk, чтобы предлагать вознаграждение в пять центов за каждое высказывание, связанное с намерением, которое вы классифицируете. За небольшую плату это может избавить вас от необходимости набирать свои собственные высказывания, но все еще нет гарантии, что люди будут точно следовать вашим инструкциям, и вы застрянете вручную, просматривая каждое высказанное высказывание.

Повреждение данных:

Помимо недостаточного соответствия, переобучения, структуры, систематической ошибки и потери времени на проверку, данные также могут быть повреждены. Одна человеческая ошибка при просмотре запроса на включение в корпус может иметь катастрофические последствия для производительности модели. Даже решения для онлайн-обучения, в которых модели обучаются на реальных данных или пакетных данных, могут быть повреждены из-за ошибки при приеме или фильтрации данных, что может сделать модель / приложение бесполезными.

Решение

Основываясь на моем опыте решения вышеперечисленных вопросов, я считаю, что краудсорсинговый подход является наиболее практичным. Это дает лучший шанс избежать предвзятости, а также избавляет от бремени создания корпуса с нуля. Однако проблемы недостаточного / переоборудования, ручного анализа и ручного обслуживания корпуса все еще существуют. Если бы только был автоматизированный способ гарантировать, что краудсорсинговые материалы соответствуют моему формату и принимают их только в том случае, если они положительно влияют на производительность модели ...

Представляем D централизованный C orpus M anager! DCM - это приложение, которое я создал для облегчения краудсорсинга данных для моделей машинного обучения с помощью Corda. Помимо краудсорсинга, контракты Corda позволяют решить три остающихся проблемы:

  1. Обеспечьте стандартный способ предложения дополнений к корпусу, чтобы избежать ручных проверок.
  2. Фиксируйте изменения в корпусе только в том случае, если это улучшает производительность модели, чтобы избежать обслуживания корпуса вручную.
  3. Выполните 1 и 2 автоматическим / программным способом, который является криптографически безопасным.

Как оформить корпус:

Шаг 1. Пользователь, выпускающий корпус (известный как владелец), может вызвать IssueCorpus REST API, чтобы создать CorpusState.

Шаг 2 - после вызова конечной точки Spring issueCorpus и запуска IssueCorpusFlow через RPC .

Шаг 3 - поток делает внешний запрос POST к серверу Flask, который потребляет корпус. Высказывания и соответствующие им метки затем используются для построения модели и сравниваются с набором тестов.

Шаг 4 - результаты набора тестов передаются обратно в IssueCorpusFlow в виде ответа JSON, который должен быть включен в качестве атрибута classificationReport в CorpusS tate .

Шаг 5. Наконец, все участники подписывают и подтверждают новое состояние, а их бухгалтерские книги обновляются с новым CorpusState.

Как обновить корпус:

Шаги 1–5 для обновления корпуса аналогичны этапам выпуска. Основное различие - это используемая команда и связанные с ней требования в смарт-контракте:

  • Line 7 защищает от удаления или добавления любых новых надписей, которые могут испортить форму нашей модели.
  • Строка 14 гарантирует, что обновление корпуса будет считаться действительной транзакцией только при наличии положительной разницы между отчетом о классификации, найденным во входном состоянии (текущем) и отчетом, найденным в выходном состоянии (предложенном).

Преимущества Corda

Теперь, когда я доказал, что блокчейн можно использовать для решения проблем, связанных с созданием моделей машинного обучения, давайте рассмотрим, почему Corda является правильной платформой блокчейн для этого варианта использования, сравнив его из Децентрализованного и совместного ИИ на блокчейне (I будет называть эту структуру DeCA). Эта структура построена на платформе Ethereum для размещения и обучения общедоступных моделей машинного обучения.

Стоимость хранения

Хотя и DCM, и DeCA хранят данные и метаданные, относящиеся к модели, находящейся в процессе разработки, в цепочке, важно различать, как термин в цепочке влияет на результат затрат. Поскольку DCM использует Corda, указанные данные можно недорого хранить в облачной базе данных, такой как Azure’s PostgreSQL. DeCA, с другой стороны, хранит свои данные в блокчейне Ethereum, который имеет чрезвычайно высокую стоимость.

Как показано в таблице выше, запись 1 ГБ в блокчейн ETH может стоить миллионы долларов, что сделает DeCA непригодным для использования. Чтобы обойти проблему стоимости хранилища, DeCA позволяет участникам предлагать по одному образцу данных за раз, чтобы минимизировать плату за запись: « По состоянию на июль 2019 года обновление модели на Ethereum стоит около 0,25 доллара США . Далее поясняется, что этот сбор может быть отменен для вкладчиков путем возмещения.

У этого подхода есть четыре недостатка:

  1. Ограничение вкладов одной выборкой данных за раз увеличит количество транзакций, необходимых для завершения краудсорсинга модели. В то время как в DCM вклад может содержать любое количество выборок данных (необязательно, чтобы это были просто дополнительные данные, они могут содержать удаления данных), потенциально завершая модель за одну транзакцию.
  2. Хотя каждая отдельная транзакция может составлять всего 0,25 доллара США и казаться несущественной, если вы сложите общие сборы каждой отдельной транзакции, общая стоимость все равно будет намного выше, чем стоимость базы данных PostgreSQL. Это просто кажется ниже с точки зрения отдельного автора.
  3. Хотя взносы за взносы потенциально могут быть возмещены участнику, лицо, возмещающее участнику, все равно должно будет взять на себя расходы на сетевые вычисления. Эти затраты потенциально могут быть частично компенсированы комиссионными сборами за плохие взносы при использовании механизма стимулирования ставок, но в основном они будут лежать на лице, ответственном за возмещение.
  4. Еще один недостаток использования решения на основе Ethereum заключается в первоначальном выпуске или создании модели. Согласно сообщению в блоге Microsoft, «размещение модели в общедоступной цепочке блоков требует первоначальной единовременной платы за развертывание, обычно в несколько долларов». Вероятно, это правда, но это всего несколько долларов, потому что в исходной модели почти нет данных, поскольку вся цель состоит в краудсорсинге модели. Но что, если у вас уже есть некоторые данные для начала, а вы хотите лишь частично собрать остальную часть модели? Это потребует дополнительных вычислений от виртуальной машины Ethereum и, как следствие, окажет экспоненциальное влияние на стоимость первоначального развертывания.

Конфиденциальность

Из-за природы протокола сплетен каждая транзакция, совершаемая через DeCA, будет видна по всей сети. Это включает в себя предлагаемые взносы в корпус, сам корпус (попрощайтесь со своим «секретным соусом») и любые вознаграждения / наказания от его механизма стимулирования.

В то время как транзакции через DCM отправляются как сообщения точка-точка и отправляют их только при необходимости (ленивое распространение). Субъективные транзакции открывают путь к изменению того, как DCM в настоящее время работает:

  • Частный вклад: в обновление корпуса будут включены только владелец и участник. Единственный раз, когда остальная часть толпы увидит вклад, - это когда они получат обновленный корпус, но они все равно не будут знать, кто был участником, который сделал обновление.
  • Частный корпус: участники по-прежнему могут предлагать обновления корпуса, не имея доступа к корпусу. В этом случае «секретный соус» модели может быть сохранен, продолжая краудсорсинг данных. Это может быть достигнуто за счет наличия двух отдельных состояний. Первое состояние будет относиться к вкладу (который может быть только между владельцем и участником или участником и остальной частью толпы), а второе состояние будет для самого корпуса (участником которого будет только владелец) .

Эти две модификации особенно интересны, поскольку в Ethereum не существует идеи нескольких состояний, поскольку его блокчейн представляет собой одно глобальное состояние. Единственный способ для DeCA сохранить конфиденциальность модели, продолжая принимать взносы, - это хранить модель вне сети. Напротив, изменения конфиденциальности для DCM по-прежнему сохранят и вклад, и модель в цепочке!

Децентрализация

Хотя ленивое распространение допускает частные транзакции, очевидным недостатком является децентрализация по сравнению с протоколом сплетен. Будучи построенным на Ethereum, DeCA по умолчанию отправляет каждую транзакцию на каждый узел в сети, позволяя любому узлу участвовать. Хотя DCM по умолчанию не включает все узлы сети в каждую транзакцию, моя текущая реализация не препятствует тому, чтобы какой-либо узел был участником. Это означает, что любой участник, включенный в состояние корпуса, может добавить любого другого участника в сеть. Более того, если у вас есть список всех участников сети, вы можете технически включить каждого из них в выдачу состояния корпуса.

Таким образом, участие в DCM по умолчанию является полу-децентрализованным с возможностью полной децентрализации. Взносы по-прежнему децентрализованы между теми, которые включены в состояние, поскольку любой из этих участников может предлагать изменения состояния.

Дальнейшая работа и использование

Стимулирующие механизмы

Чтобы обеспечить участие в краудсорсинговом приложении, жизненно важно создать механизм стимулирования. Хотя моей первой целью было доказать, что эта функциональность возможна в Corda, я создал ее, зная, что механизм стимулирования, вероятно, станет следующей задачей в конвейере. С помощью дельта-переменной, упомянутой ранее (в разделе Corpus Contribution Flow), есть способ определить, оказал ли вклад пользователя положительный / отрицательный эффект на производительность модели, и измерить, насколько он улучшился / ухудшился. к. Используя это измерение, можно реализовать схему выплат, такую ​​как подход DeCA к ставкам или что-то более элементарное, например: за каждую положительную дельта-точку владелец модели выплачивает X количество токенов DCM, которые были использованы для финансирования проекта краудсорсинга.

Хранение моделей

DCM в настоящее время хранит корпус, который используется для создания модели, и соответствующие метаданные, но на самом деле не хранит объект модели. Я не думаю, что это будет сложно выполнить и может добавить некоторую ценность CorDapp, поскольку он позволяет для большей гибкости. Например, у вас может быть состояние корпуса, которое содержит данные, которые вы хотите сохранить в тайне, но вы хотите продавать подписки другим участникам, готовым заплатить некоторую плату за использование классификации вашей модели.

Корпус Трейдинг

Хранение корпуса и соответствующей модели в сети открывает дверь для совместного использования этих наборов данных для общего блага или для получения прибыли.

  • Пример Обычный товар: консорциум банков, которые объединяют набор данных о мошеннических транзакциях, чтобы сделать модель обнаружения мошенничества способной классифицировать, следует ли отмечать покупку по кредитной карте или нет.
  • Пример прибыли: какой-то хедж-фонд создает регрессионную модель, которая может быть продана в виде подписки, разовой покупки или просто продана в обмен на доступ к другой модели хедж-фонда. Данные также могут быть проданы или проданы отдельно от модели.

Оракулы

В настоящее время DCM использует FlowExternalOperation для отправки запроса POST к конечной точке сервера Flask, которая отвечает отчетом классификации. Вместо этого я хотел бы изучить Corda Oracles, чтобы увидеть, как их использование может принести пользу CorDapp. Непосредственным преимуществом, о котором я могу думать, является то, что Oracle является узлом с разрешениями в вашей сети, и поэтому вы можете доверять ответу, который вы получаете обратно от конечной точки классификации, если вы видите подпись Oracle в запросе / транзакции.

Выбор тренировочного набора

Тридцать процентов представленных обучающих данных выбираются случайным образом и используются для тестирования производительности модели классификации и создания отчета о классификации. Поскольку он является случайным, чем меньше набор данных, тем больше вероятность того, что новые данные, добавленные в корпус, могут оказаться в наборе для тестирования, а не в наборе для обучения. API-интерфейс флакона следует изменить так, чтобы он учитывал только те данные, которые не входят в набор вкладов, чтобы гарантировать, что они будут использоваться для обучения модели, а не для ее тестирования.

Заключение

Сила краудсорсинга проявляется в разработке моделей машинного обучения. Будь то классификация, регрессия или кластеризация, модели машинного обучения хороши ровно настолько, насколько хороши данные, которые их поддерживают. Технология блокчейн защищает указанные данные с помощью распределенного смарт-контракта, который программно гарантирует, что данные, полученные от краудсорсинга, структурированы, качественны и неизменяемы, а также настолько общедоступны / конфиденциальны, насколько вам нужно.

Как показал DCM, Corda - лучшая платформа для работы. Фреймворк Microsoft DeCA сосредоточен на «общедоступных» моделях, поскольку протокол сплетен не предназначен для обеспечения конфиденциальности, в то время как платформа Ethereum может обеспечивать только анонимность, хэширование данных или решения вне сети. Однако в Corda вы можете установить свои собственные правила участия, которые по умолчанию являются субъективными. Без какой-либо конфиденциальности не было бы способа защитить ваши ресурсы машинного обучения в сети, в результате чего ваше приложение могло бы использоваться только в некоммерческих или образовательных целях.

Кроме того, хранение данных в цепочке с использованием таких платформ, как Ethereum, является чрезвычайно дорогостоящим и не является хорошей идеей для варианта использования, который в значительной степени полагается на наборы данных, которые могут быть огромными. Приложения машинного обучения на этих платформах просто не масштабируются. С другой стороны, состояния и транзакции Corda могут храниться в базах данных, размещенных в облаке, по очень низкой цене.

Благодарим за прочтение и не стесняйтесь обращаться к нам, если вы хотите внести свой вклад в DCM.

Другие ссылки