【Введение】Система рекомендаций и технология базы данных , одна из них — применение частичного интеллектуального анализа данных машинного обучения, а другая — технология, связанная с частичным системным хранилищем, обе из которых имеют отличные практические применения. Сегодня я очень рад пригласить Сун Цяна, старшего инженера-алгоритма, чтобы он рассказал о некоторых своих уникальных выводах об этой работе.
Прошлое и настоящее научных исследователей
В первые годы автор учился в магистратуре в области искусственного интеллекта, а направлением исследований была рекомендательная система.Хотя мне не удалось перенести то, что я узнал в итоге, я все равно был в восторге и часто читал работы по теме . Потом по воле случая первой официальной работой в жизни стал заниматься исследованием и разработкой распределенных баз данных. Приглашенные старшими, чтобы записать некоторые идеи.
амбивалентность
И искусственный интеллект, и базы данных являются одним из современных увлечений.Целью исследований и разработок является максимальное повышение производительности, но между путями к их целям есть существенные различия. Первый обычно принимает минимизацию ошибки идентификации в качестве цели оптимизации и получает наилучшие параметры модели с помощью ряда построений, релаксации или регулярных ограничений. Последний рассматривает доступ к данным без отклонений как истину и обеспечивает высокую доступность за счет алгоритмов согласованности данных и других средств. Большинство алгоритмов машинного обучения не подходят для исследования и разработки баз данных, поэтому существует понятие «новичок на рабочем месте». Но подумайте об этом внимательно, корреляция между ними подобна воде в губке, и все еще есть некоторое сжатие.
Класс рекомендательных алгоритмов, с которыми я знаком
В последние годы, с быстрым развитием интернет-технологий и взрывным ростом информации, как помочь пользователям точно получить ценную для себя информацию за короткий период времени и улучшить коэффициент использования информации, является серьезной проблемой, с которой сталкиваются современные интернет-приложения. . [1] Класс алгоритмов, с которым я знаком, называется совместной фильтрацией, что, по сути, означает рекомендацию потенциально любимых продуктов целевым пользователям через аналогичные продукты, которые приобрели похожие пользователи.
Классический алгоритм рекомендации
Наиболее часто используемый алгоритм коллаборативной фильтрации — матричная декомпозиция. Он связывает пользователей и продукты через неявный фактор f. Например, в рейтингах фильмов мы знаем только рейтинги некоторых зрителей для некоторых фильмов. Таким образом, можно оценить другие отсутствующие оценки. В частности, каждый элемент i может быть представлен в виде одномерного вектора , каждого пользователя u можно представить в виде одномерного вектора . Пользовательский рейтинг продукта может быть выражен как:
в, Соответственно представьте общую среднюю оценку продукта, среднюю оценку всех продуктов, связанных с i, и среднюю оценку пользователя u для всех продуктов. Соответствующие цели оптимизации:
Этот метод можно решить с помощью стохастического градиентного спуска (SGD), который здесь повторяться не будет.
Алгоритмы многомерных рекомендаций
Кроме того, продукт может содержать несколько разных полей, и хотя данных в каждом поле немного, это может обогатить рекомендуемые материалы в целом. Например, согласие пользователей в отношении музыки часто может выявить потенциальные увлечения кино или книгами. Это породило многомерную рекомендательную систему (Multi-Domain Рекомендация)
Алгоритм рекомендации парной склонности
Кроме того, по сравнению с оценками, пользователи часто предпочитают использовать предпочтения, то есть зрители предпочитают описывать фильм i как лучший, чем j, роман x как застенчивый, чем y, и так далее. Поэтому при построении функции оптимизации правильнее брать склонность в качестве направления оптимизации. Например [3]:
Где, лУказывает функцию потерь, такую как модель, представляет пользовательскую оценку пары элементов i или j (явная оценка или неявная обратная связь), Представляет индикаторную функцию (со значением 1 или -1), используемую для представления тенденции между.
Алгоритм многомерных рекомендаций (от топологии до N измерений)
Однако анализ двумерных самолетов является лишь краеугольным камнем наших теоретических исследований, а данные реального мира часто охватывают несколько измерений. Например, в кратком изложении реальных рекомендаций сценариев, в дополнение к наиболее распространенным размерам пользователей и продукта, на самом деле существует множество ценных размеров, таких как время, метка, запрос, цена и т. Д., В полном использовании и добывании потенциальных подключений. Между ними может эффективно понять реальные потребности пользователей. N-мерное ( ) данные, которые математически могут быть представлены тензорами.
N-мерный (возможно, N=3) алгоритм рекомендации, основанный на совместной фильтрации, выглядит следующим образом:
Это оптимизационное выражение может быть решено стохастическим двухкоординатным спуском.
На этом внедрение рекомендательной системы подошло к концу.Заинтересованные студенты могут продолжать обращать внимание на нашу экспертизу в области ИИ (www.zhuanzhi.ai) .
Технология баз данных, которую я изучил
Говоря о технологии баз данных
В нынешнюю эпоху интернет-информации базы данных имеют решающее значение для развития любой компании или даже отрасли. Будь то поисковые системы, такие как Google, Baidu, или веб-сайты службы жизнеобеспечения, такие как Taobao, JD.com, или финансовые рынки и их области обслуживания, такие как финансовая информация, транзакции, регистрация и расчеты и т. д.; искусственный интеллект, большие данные и т. д. Или платформы облачных вычислений, за кулисами неотделимые от поддержки базы данных.
Высокая доступность является ключевым показателем систем баз данных, и почти все популярные базы данных в настоящее время рекламируют себя как стабильные и высокодоступные. Например: RDS от Amazon, SQL от Alibaba Cloud, OceanBase и т. д. Облачная база данных Tencent утверждает, что достигла 99,95% сертификации Министерства промышленности и информационных технологий. Проблемы, связанные с высокой доступностью, включают единичные проблемы, автоматическое восстановление и онлайновое расширение емкости. Возьмем в качестве примера проблему с одной точкой: при наличии единственной службы, как только эта единственная служба выходит из строя, вся служба становится недоступной. Наиболее распространенным решением для устранения единичных проблем является репликация, которая обеспечивает высокую доступность за счет избыточности данных.
Наступление эры больших данных породило появление и развитие многих новых технологий. В области распределенных баз данных существует множество популярных технологий, таких как ряд алгоритмов согласованности данных, таких как paxos и raft, технология kafka, распределенные транзакции на основе слабого XA, гибридные логические часы HLC и так далее. Далее будет представлена одна из наиболее популярных технологий:
Алгоритм согласованности данных Raft
Алгоритм Рафта [4] представляет собой упрощенную версию алгоритма согласованности данных и является популярной технологией баз данных благодаря знакомству с теорией и удобной реализации. С точки зрения непрофессионала, это технология, которая сохраняет часть данных на нескольких узлах одновременно, чтобы гарантировать, что любое время простоя узла может по-прежнему предоставлять стабильные и высокодоступные услуги. Механизм его реализации может быть аналогичен процессу президентских выборов в США.
Роли узлов — последователь (follower), кандидат (candidate) и лидер (лидер). Начальное состояние — ведомый, и узлы общаются друг с другом посредством сердцебиения.Если в данный момент нет лидера, каждый ведомый инициирует выборы через случайно сгенерированное время, обновляется до кандидата и уведомляет других посредством широковещательной рассылки. для себя (цель случайного времени - предотвратить слишком много кандидатов). После раунда конкурса узел-кандидат с наибольшим количеством голосов становится лидером, а другие неудачные кандидаты понижаются до последователей. Узел, успешно выбранный в качестве лидера, немедленно синхронизирует свои данные, которые еще не поступили, с другими узлами-последователями посредством широковещательной рассылки. Стоит отметить, что всегда есть только один лидер или нет лидера. Когда голосование закончится и будет такое же голосование, будет повторен новый тур выборов. Кроме того, когда узел-последователь долгое время не получал трансляции лидера, через определенный промежуток времени также будут инициированы новые выборы.
Узлы, успешно избранные лидерами, начинают предоставлять услуги клиентам. Каждый запрос от клиента содержит инструкцию, которая выполняется реплицированным конечным автоматом. Лидер добавляет эту инструкцию в качестве новых данных журнала в журнал, а затем инициирует дополнительные данные параллельно другим узлам-последователям в форме RPC, чтобы они могли копировать данные журнала. Когда данные журнала будут приняты подавляющим большинством (N/2+1) узлов-последователей, лидер немедленно передаст данные журнала в свой конечный автомат и вернет результат выполнения клиенту. Если ведомый сервер дает сбой или работает медленно, или если сеть теряет пакеты, ведущий будет неоднократно пытаться добавить RPC с данными журнала (несмотря на то, что ответил клиенту), пока все ведомые в конечном итоге не сохранят данные журнала.
При нормальной работе журналы ведущего и ведомого согласуются, поэтому проверка согласованности подключенного журнала RPC никогда не дает сбоев. Однако ситуация сбоя лидера может оставить журнал в несогласованном состоянии (старый лидер мог не полностью реплицировать все данные журнала). Эта проблема несогласованности усугубляется серией сбоев лидера и ведомого. В алгоритме Raft лидер обрабатывает несоответствия, заставляя последователей напрямую копировать свои собственные журналы. Это означает, что конфликтующие данные журнала в ведомом устройстве будут перезаписаны журналом ведущего. Чтобы журнал ведомого перешел в состояние, согласующееся с его собственным, лидер должен найти последнее место, где они совпадают, удалить все данные журнала после этой точки и отправить свой собственный журнал ведомому. Все эти операции выполняются при проверке согласованности дополнительных протоколов RPC. Лидер поддерживает nextIndex для каждого ведомого, который указывает индексный адрес следующих данных журнала, которые необходимо отправить ведомому. Когда лидер только вступает в должность, он инициализирует все значения nextIndex индексом своего последнего журнала плюс 1. Если журнал ведомого не согласуется с журналом ведущего, проверка согласованности завершится ошибкой при следующем добавлении журнала RPC. После отклонения последователем лидер уменьшит значение nextIndex и повторит попытку. В конце концов, nextIndex окажется в определенной позиции, чтобы журналы ведущего и ведомого согласовывались.
Чтобы гарантировать, что представленные данные не будут изменены новым лидером, алгоритм плота ограничивает узел-кандидата, который может стать лидером.Лидером может стать только кандидат, который содержит все отправленные данные. Конкретный метод этого ограничения заключается в том, что RPC содержит информацию журнала кандидата, а затем избиратель будет отклонять те новые запросы на голосование, которые не имеют собственного журнала.
Журнал Raft постоянно растет при нормальной работе, но в реальной системе журнал не может расти бесконечно. По мере того, как журнал продолжает расти, он занимает все больше и больше места, и для его сброса требуется все больше и больше времени. Raft использует метод моментальных снимков для сжатия и синхронизации отправленных журналов.
Применение алгоритма Raft в распределенной системе
-
Алгоритм Raft требует, чтобы базовых узлов данных было 2N + 1 (цель — облегчить выбор лидеров). Предполагая, что параметр по умолчанию равен 3, как он будет применяться к распределенной системе с 6 узлами данных?
Идея решения такова: разбить данные, требующие независимости друг от друга, случайным образом выбрать 3 узла данных для каждого раздела в качестве хранилища, что и является первоначальным замыслом Multi-raft.
-
Как алгоритм Raft реализует онлайн-экспансию? На самом деле здесь рассматриваются две подзадачи: одна — как увеличить количество узлов в кольце плота (больше узлов, участвующих в выборах); другая — как добиться горизонтального расширения плота (больше данных, которые можно хранить). .
Решение первого таково: вновь добавленный узел сначала синхронизирует данные от лидера, и не имеет права участвовать в выборах в период синхронизации, после завершения синхронизации право голоса восстанавливается естественным образом. Решение последнего заключается в следующем: в определенный момент, когда кольцо плота X достигает порога хранения данных, оно начинает входить в стадию расщепления, и его планируется расщепить на два сегмента, X1 и X2. Новый набор плотных колец Y синхронизирует данные X2, но X по-прежнему продолжает работать.Когда Y синхронизирует X2, X изменяется на X1, а Y предоставляет услуги X2 внешнему миру.
Применение искусственного интеллекта в базе данных
Как внедрить алгоритмы искусственного интеллекта в приложения баз данных — это вопрос, над которым стоит подумать. Ниже приведены два возможных применения:
-
При разработке базы данных проектирование базового хранилища является основной работой. Учитывая, что распределенная база данных хранит несколько независимых колец плота, данные в каждом кольце плота должны быть сохранены, а производительность чтения и записи ввода-вывода также является ограничением (уменьшение количества операций чтения и записи ввода-вывода очень важно для повышения производительности доступа к системе). ). При проектировании хранилища рассмотрите стратегию пакетной загрузки, поместите данные каждого кольца Raft в очередь по порядку и сохраните их за один раз на регулярной основе, а также одновременно установите индекс логической цепочки файлов. Обнаружена команда запроса, и кеш не попал, это можно рассмотреть через Соответствующий индекс кольца плота обращается к базовому хранилищу. Среди них дизайн скрининга горячих данных в кеше может включать алгоритмы машинного обучения для повышения частоты попаданий в запросы. Кроме того, может ли дизайн индекса также учитывать текущую широкомасштабную технологию поиска.
-
Алгоритм машинного обучения введен для решения предложенного выбора лидера и повышения производительности синхронизации данных плота.Текущая синхронизация данных между лидером и ведомым отправляется и принимается в режиме сердцебиения. В ходе реальной работы алгоритма консенсуса плота мы обнаружили, что случайно выбранный лидер может не быть идеальным лидером в какой-то момент в процессе работы (много сбоев синхронизации данных), что породило идею рекомендуемого лидера выборы . Затем рассмотрим стратегию внедрения искусственного интеллекта. Отправка и ответ сердцебиения ведущий-ведомый может записывать время передачи связи (с указанием качества связи между ведущим и ведомым).Учитывая случай, когда на плот не добавляется слишком много внешнего вмешательства, данные, полученные от лидера, отправляются одновременно с монитором.Когда монитор собирает определенный объем информации, он использует алгоритмы искусственного интеллекта, чтобы предсказать лучшего кандидата в лидеры в текущей среде.
В следующем выпуске, если будет возможность, я представлю алгоритм генерации времени распределенной базы данных, в том числе атомные часы Google и методы предотвращения конфликтов чтения и записи, а также принцип и применение гибридных логических часов HLC. Последним преимуществом является прикрепление схемы архитектуры базы данных на основе алгоритма Raft (базовый RDS реализован через Raft):
использованная литература
-
F.Ricci, L.Rokach, and B.Shapira, Introduction to recommender systems handbook. Springer, 2011.
-
http://dblp.uni-trier.de/pers/hd/z/Zhang:Zhihua
-
Д. Пак, Дж. Ниман, Дж. Чжан, С. Сангхави и И. С. Диллон, «Предпочтение завершение: крупномасштабное совместное ранжирование на основе попарных сравнений», ICML,
-
https://raft.github.io , Алгоритм консенсуса плота
Об авторе:
Сун Цян окончил Университет Сунь Ятсена со степенью бакалавра и магистра в Институте автоматизации Китайской академии наук, работал в области исследований и разработок распределенных баз данных в компании Huawei, а сейчас работает в финансовом учреждении.Специальное примечание:
Эта статья была отправлена экспертом Сун Цяном.Приглашаем всех технических экспертов отрасли внести свой вклад и поделиться своими технологиями и мнениями!
Электронная почта: zhuanzhi2017@outlook.com Или отсканируйте следующих помощников для связи!