KR20220140759A - 분류 정확도를 향상시키기 위한 기계 학습 모델링 데이터의 처리 - Google Patents

분류 정확도를 향상시키기 위한 기계 학습 모델링 데이터의 처리 Download PDF

Info

Publication number
KR20220140759A
KR20220140759A KR1020227029827A KR20227029827A KR20220140759A KR 20220140759 A KR20220140759 A KR 20220140759A KR 1020227029827 A KR1020227029827 A KR 1020227029827A KR 20227029827 A KR20227029827 A KR 20227029827A KR 20220140759 A KR20220140759 A KR 20220140759A
Authority
KR
South Korea
Prior art keywords
user
mpc
application
model
computing system
Prior art date
Application number
KR1020227029827A
Other languages
English (en)
Inventor
아르네 마우저
강 왕
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20220140759A publication Critical patent/KR20220140759A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/02Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

MPC 클러스터의 제1 다자간 연산(MPC) 시스템은 클라이언트 디바이스 상의 애플리케이션으로부터, 애플리케이션의 사용자에 대한 주어진 사용자 프로파일의 제1 셰어 및 성능 임계값을 포함하는 추론 요청을 수신할 수 있다. 사용자 프로파일에 대한 최근접 이웃 세트는 하나 이상의 제2 MPC 시스템과 협력하여 트레이닝된 기계 학습 모델을 사용하여 보안 MPC 프로세스를 수행함으로써 식별될 수 있다. 성능 임계값을 만족하는 성능 측정치를 갖는 하나 이상의 최근접 이웃이 최근접 이웃 세트로부터 선택될 수 있다. 제1 MPC 시스템은 하나 이상의 최근접 이웃으로부터 도출된 데이터를 애플리케이션으로 전송할 수 있다.

Description

분류 정확도를 향상시키기 위한 기계 학습 모델링 데이터의 처리
본 명세서에 설명된 주제는 사용자 프라이버시를 보호하고, 데이터 보안을 보장하며, 분류의 정확성을 개선하는 방식으로 기계 학습 모델을 트레이닝하고 사용하는 것에 관한 것이다.
일부 기계 학습 모델은 예를 들어, 다수의 웹사이트 및/또는 기본 애플리케이션에 걸쳐 다수의 소스로부터 수집된 데이터에 기초하여 트레이닝되지만, 이 데이터에는 공유되어서는 안 되거나 다른 당사자에게 누출되지 말아야 하는 개인 데이터 또는 민감한 데이터가 포함될 수 있다.
본 개시는 사용자 프라이버시를 보호하고 데이터 보안을 보장하는 방식으로 기계 학습 모델을 트레이닝하고 사용하는 것에 관한 것이다. 예를 들어, 본 개시의 양태는 기계 학습 모델, 이러한 모델에 대한 데이터 입력, 및 제3자 쿠키가 (예를 들어, 브라우저에 의해) 차단되거나 사용되지 않는 상황에서도 사용자 프라이버시를 보호하고 데이터 보안을 보장하면서 사용자를 사용자 그룹으로 정확하게 분류하기 위해 이러한 모델의 데이터 출력에 관한 것이다. 모델에 입력된 데이터를 수정하는 것은 전처리로 지칭될 수 있고, 모델에서 출력되는 데이터를 수정하는 것은 후처리로 지칭될 수 있다. 본 명세서에 기술된 바와 같이, 기계 학습 모델에 입력된 데이터의 전처리 및/또는 기계 학습 모델로부터의 데이터 출력의 후처리는 사용자를 각각의 하나 이상의 사용자 그룹으로 보다 정확하게 분류하기 위해 사용자 그룹의 보다 정확한 확장을 허용한다.
일 양태에서, MPC 클러스터의 제1 다자간 연산(MPC) 시스템은 클라이언트 디바이스 상의 애플리케이션으로부터, 애플리케이션의 사용자에 대한 주어진 사용자 프로파일의 제1 셰어 및 성능 임계값을 포함하는 추론 요청을 수신할 수 있다. 사용자 프로파일에 대한 최근접 이웃 세트는 하나 이상의 제2 MPC 시스템과 협력하여 트레이닝된 기계 학습 모델을 사용하여 보안 MPC 프로세스를 수행함으로써 식별될 수 있다. 성능 임계값을 만족하는 성능 측정치를 갖는 하나 이상의 최근접 이웃은 최근접 이웃 세트로부터 선택될 수 있다. 제1 MPC 시스템은 하나 이상의 최근접 이웃으로부터 도출된 데이터를 애플리케이션으로 전송할 수 있다.
일부 구현에서, 다음 중 하나 이상이 개별적으로 또는 임의의 실행 가능한 조합으로 추가로 구현될 수 있다. 사용자 프로파일은 애플리케이션에 의해 생성될 수 있다. 사용자 프로파일에는 애플리케이션의 사용자와 그 애플리케이션에 렌더링된 디지털 컨텐츠 간의 상호 작용을 나타내는 데이터가 포함될 수 있다. 상호 작용에는 전환 및 전환 결여(lack)가 포함될 수 있다. 기계 학습 모델은 최근접 이웃 모델일 수 있다. 최근접 이웃 모델의 최근접 이웃은 해당 사용자 그룹과 관련된 개별 중심(centroids)으로 나타낼 수 있다. 제1 MPC 시스템은 개별 중심을 계산하기 위해 해당 사용자 그룹의 각 사용자에게 가중치를 할당할 수 있다. 가중치는 사용자에 의한 상호 작용 또는 성능 측정치와 관련된 사용자 정보 중 적어도 하나에 기초할 수 있다. 각 사용자 그룹의 중심은 사용자 그룹의 구성원인 사용자에 대한 사용자 프로파일의 평균으로 표시되는 중심일 수 있다. 기계 학습 모델은 중심 모델 또는 최근접 이웃 모델 중 하나 이상일 수 있다. 각각의 최근접 이웃의 성능 측정치는 최근접 이웃에 대응하는 하나 이상의 디지털 컴포넌트와의 사용자 상호 작용율 또는 최근접 이웃에 대응하는 하나 이상의 디지털 컴포넌트에 대한 전환율 중 적어도 하나를 포함할 수 있다. 기계 학습 모델은 k-최근접 이웃 모델을 포함할 수 있고 k-최근접 이웃 모델의 각 이웃은 사용자의 사용자 프로파일을 나타낸다. 기계 학습 모델은 k-최근접 이웃 모델을 포함할 수 있고 k-최근접 이웃 모델의 각 이웃은 복수의 사용자에 대한 사용자 그룹을 나타낸다. 성능 임계값은 임계값이다. 하나 이상의 디지털 컴포넌트에 대한 전환율은 하나 이상의 디지털 컴포넌트가 사용자 그룹의 사용자에게 디스플레이된 횟수에 의해 나누어진 전환의 횟수일 수 있다. 추론 요청은 사용자가 사용자 그룹에 추가되어야 하는지 여부를 추론하기 위한 요청일 수 있다.
관련된 방법, 기술, 시스템 및 컴퓨터 프로그램 제품이 또한 설명된다. 예를 들어, 다른 양태에서, 적어도 하나의 프로그램 가능 프로세서, 및 적어도 하나의 프로그램 가능 프로세서에 의해 실행될 때 적어도 하나의 프로그램 가능 프로세서로 하여금 본 명세서에 설명된 동작들을 수행하게 하는 명령들을 저장하는 기계 판독 가능 매체를 포함할 수 있는 시스템이 설명된다. 다른 양태에서, 적어도 하나의 프로그램 가능 프로세서에 의해 실행될 때 적어도 하나의 프로그램 가능 프로세서로 하여금 본 명세서에 설명된 동작들을 수행하게 하는 명령들을 저장할 수 있는 하나 이상의 컴퓨터 프로그램 제품(일부 구현에서 비-일시적 컴퓨터 프로그램 제품일 수 있음)이 설명된다.
본 명세서에 기술된 주제는 다음 이점 중 하나 이상을 실현하기 위해 특정 실시예에서 구현될 수 있다. 보안 다자간 연산(MPC)과 같은 암호화 기술은 제3자 쿠키가 데이터 수집에 사용될 수 없을 때 발생하는 문제를 해결하는데 사용될 수 있다. 예를 들어, 암호화 기술을 사용하면 제3자 쿠키를 사용하지 않고 사용자 프로파일의 유사성에 기초하여 사용자 그룹을 확장할 수 있으며, 이는 사용자 그룹 확장 기능에 부정적인 영향을 미치지 않으면서 사용자 프라이버시를 보호하고 경우에 따라 제3자 쿠키를 사용하여 달성할 수 있는 것보다 더 완전한 프로파일에 기초하여 더 나은 사용자 그룹 확장을 제공할 수 있다. MPC 기술은 MPC 클러스터의 컴퓨팅 시스템 중 하나가 정직한 한(예를 들어, 기본 데이터의 해당 부분을 일반 텍스트로 공개하지 않음), 컴퓨팅 시스템이나 다른 당사자가 일반 텍스트로 사용자 데이터를 획득할 수 없도록 보장할 수 있다. 이와 같이 청구된 방법은 사용자 데이터 간의 임의의 관계를 결정하기 위해 제3자 쿠키를 사용할 필요 없이 안전한 방식으로 교차 도메인 사용자 데이터를 포함하여 사용자 데이터의 식별, 그룹화 및 전송을 허용한다. 이는 데이터 간의 관계를 결정하기 위해 제3자 쿠키가 수집하는 일반 텍스트 사용자 프로파일을 사용하는 것(이는 제3자 쿠키를 수신하는 엔터티에 사용자 데이터를 노출할 수 있음)과는 별개의 프라이버시 보호 방식이다. 이러한 방식으로 사용자 데이터를 그룹화함으로써, 특정 사용자와 관련이 없는 데이터 컨텐츠를 전송할 필요가 없으므로 데이터 컨텐츠를 사용자 디바이스로 전송하는 효율성이 향상된다. 특히, 제3자 쿠키가 필요하지 않아 제3자 쿠키의 저장을 방지하므로 메모리 사용이 개선된다. 지수 감쇠 기술을 사용하여 클라이언트 디바이스에서 사용자 프로파일을 구축하여 사용자 프로파일을 구축하는데 필요한 원시 데이터의 데이터 크기를 줄임으로써 데이터 저장 요구 사항을 줄일 수 있다.
또한, 모델링 데이터의 전처리 및 후처리는 사용자를 하나 이상의 개별 사용자 그룹으로 보다 정확하게 분류하는 것을 보장한다. 일부 구현에서, k-NN 모델은 이러한 사용자 그룹을 기반으로 할 수 있으며, 이러한 모델링은 종종 사용자보다 훨씬 적은 수의 사용자 그룹이 있기 때문에 사용자가 고차원 공간에서 다른 포인트를 형성하는 k-NN 모델보다 덜 복잡할 수 있다. 예를 들어, 컨텐츠 플랫폼에는 수십억 명의 사용자가 있지만 수백만 명의 사용자 그룹이 있을 수 있다. 이 경우, 사용자가 아닌 사용자 그룹으로 정의된 각 이웃과 함께 k-NN 모델을 트레이닝하면 모델을 1000배 축소할 수 있다. 이러한 모델의 축소는 유리하게 데이터를 저장하기 위한 더 낮은 데이터 저장 요구사항(여기서, 사용자 그룹 및 다른 요소 간의 매핑과 같은 관련 데이터)과 사용자 그룹에 사용자를 추가할지 여부를 결정하기 위한 더 빠른 처리를 요구할 수 있다.
본 명세서에 설명된 주제의 하나 이상의 변형의 세부 사항은 첨부 도면 및 아래의 설명에 설명되어 있다. 본 명세서에 기재된 주제의 다른 특징 및 이점은 설명, 도면 및 청구범위로부터 명백할 것이다.
도 1은 보안 MPC 클러스터가 기계 학습 모델을 생성하고 기계 학습 모델을 사용하여 사용자 그룹을 확장하는 환경의 블록도이다.
도 2는 사용자 그룹에 사용자를 추가하기 위해 중심 모델을 생성하고 중심 모델을 사용하기 위한 예시적인 프로세스의 수영 레인 다이어그램이다.
도 3은 사용자 프로파일을 생성하고 사용자 프로파일을 MPC 클러스터로 전송하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 4는 중심 모델을 생성하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 5는 중심 모델을 사용하여 사용자 그룹에 사용자를 추가하기 위한 예시적인 프로세스를 나타내는 수영 레인 다이어그램이다.
도 6은 중심 모델을 생성하고 중심 모델을 사용하여 중심 모델에 대응하는 사용자 그룹에 사용자를 추가하기 위한 예시적인 프로세스를 도시하는 수영 레인 다이어그램이다.
도 7은 사용자 및 중심 모델의 사용자 프로파일 데이터에 기초하여 사용자 그룹 결과를 결정하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 8은 사용자 그룹에 사용자를 추가하기 위해 k-NN 모델을 트레이닝하고 k-NN 모델을 사용하기 위한 예시적인 프로세스의 수영 레인 다이어그램이다.
도 9는 사용자 프로파일을 생성하고 사용자 프로파일의 셰어를 MPC 클러스터에 전송하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 10은 k-NN 모델을 생성하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 11은 k-NN 모델을 사용하여 사용자 그룹에 사용자를 추가하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 12는 사용자를 하나 이상의 개별 사용자 그룹으로 효과적으로 분류하기 위해 k-NN 모델을 트레이닝 및 전개하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 13은 예시적인 컴퓨터 시스템의 블록도이다.
다양한 도면에서 동일한 참조 부호는 동일한 요소를 나타낸다.
일반적으로, 본 문서는 제3자 쿠키가 (예를 들어, 브라우저에 의해) 차단되거나 및/또는 사용자 프로파일의 수집이 불가능한 상황에서도 사용자 프라이버시를 보호하고 데이터 보안을 보장하면서 사용자 그룹 멤버십을 확장하기 위해 기계 학습 모델을 트레이닝하고 사용하기 위한 시스템 및 기술을 설명한다. 일반적으로, 컨텐츠 플랫폼과 같은 다른 엔티티의 컴퓨팅 시스템에서 사용자 프로파일을 생성 및 유지하는 것이 아니라 사용자의 클라이언트 디바이스에서 사용자 프로파일을 유지 관리한다. 기계 학습 모델을 트레이닝하기 위해, 사용자의 클라이언트 디바이스는 다른 데이터와 함께 암호화된 사용자 프로파일(예를 들어, 사용자 프로파일의 비밀 셰어)을 선택적으로 컨텐츠 플랫폼을 통해 보안 다자간 연산(MPC) 클러스터(군집기)의 다수의 컴퓨팅 시스템으로 전송할 수 있다. 예를 들어, 각 클라이언트 디바이스는 사용자 프로파일의 2개 이상의 셰어(share, 조각), 예를 들어 비밀 셰어를 생성하고 각각의 비밀 셰어를 각각의 컴퓨팅 시스템으로 전송할 수 있다. 일부 구현에서, 각각의 컴퓨팅 시스템으로 전송되는 사용자 프로파일 데이터에 오버랩이 없도록 각 사용자 프로파일에 있는 정보의 상이한 서브세트가 각각의 컴퓨팅 시스템으로 제공된다.
MPC 클러스터의 컴퓨팅 시스템은 MPC 기술을 사용하여 MPC 클러스터 사용자 자신의 컴퓨팅 시스템(또는 사용자 자신이 아닌 다른 당사자)이 일반 텍스트로 임의의 사용자 프로파일을 획득하지 못하도록 하여 프라이버시를 보호하는 방식으로사용자 프로파일에 기초하여 사용자들을 위한 사용자 그룹을 제안하기 위한 기계 학습 모델을 트레이닝할 수 있다. 평문이라고도 하는 일반 텍스트는 키나 기타 암호 해독 디바이스 또는 기타 암호 해독 프로세스 없이 보거나 사용할 수 있는 형식으로 이진 파일을 비롯한 계산적으로 태그가 지정되지 않았거나 특별히 형식이 지정되지 않았거나 코드 또는 데이터로 작성되지 않은 텍스트이다. 기계 학습 모델은 중심(centroid) 모델 및/또는 k-최근접 이웃(k-NN) 모델일 수 있다. 중심 모델에서, 사용자 그룹에 대한 중심 모델은 사용자 그룹의 구성원인 사용자들에 대한 사용자 프로파일의 중심(예를 들어, 평균)과 같은 사용자 프로파일의 중심(center)을 나타낼 수 있다. k-NN 모델에서, 모델은 유사한 사용자가 동일하거나 유사한 사용자 그룹으로 분류될 수 있도록 유사한 사용자들이 근접하게 존재한다고 가정한다.
기계 학습 모델이 트레이닝된 후, 기계 학습 모델은 프로파일에 기초하여 각 사용자에 대한 하나 이상의 사용자 그룹을 제안하는데 사용될 수 있다. 예를 들어, 사용자의 클라이언트 디바이스는 해당 사용자에 대한 제안된 사용자 그룹에 대해 MPC 클러스터에 질의하거나 사용자를 특정 사용자 그룹에 추가해야 하는지 여부를 결정할 수 있다. 중심 모델을 배포하는 구현에서, MPC 클러스터는 사용자의 사용자 프로파일을 사용하여 사용자의 사용자 프로파일의 임계 거리 내에 있는 중심을 갖는 사용자 그룹을 식별할 수 있다. k-NN 모델을 사용하는 구현에서, 이진 분류, 회귀(예를 들어, 산술 평균 또는 제곱 평균 제곱근 사용) 및/또는 다중 클래스 분류와 같은 다양한 추론 기술이 사용자 그룹을 식별하는데 사용될 수 있다. 사용자의 사용자 그룹 멤버십은 프라이버시를 보호하고 사용자에게 컨텐츠(예를 들어, 디지털 컨텐츠)를 제공하는 안전한 방법으로 사용될 수 있다.
MPC 클러스터는 사용자 그룹에 대한 성능 측정치에 기초하여 사용자에 대한 사용자 그룹을 선택할 수 있다. 예를 들어, MPC 클러스터는 사용자 상호 작용율(예를 들어, 클릭률(CTR)) 또는 전환율이 성능 임계값을 충족(예를 들어, 만족 또는 초과)하는 사용자 그룹을 선택할 수 있다. 사용자 그룹에 대한 성능 측정치는 사용자 그룹에 대응하는 하나 이상의 디지털 컴포넌트의 성능, 예를 들어 사용자 그룹의 구성원인 사용자에 기초하여 사용자에게 배포되는 디지털 컴포넌트의 성능을 반영할 수 있다.
기계 학습 모델의 생성 및 사용을 위한 예시적인 시스템
도 1은 보안 MPC(130) 클러스터가 기계 학습 모델을 트레이닝시키고 기계 학습 모델이 사용자 그룹을 확장하는데 사용되는 환경(100)의 블록도이다. 예시적인 환경(100)은 LAN(Local Area Network), WAN(Wide Area Network), 인터넷, 모바일 네트워크, 또는 이들의 조합과 같은 데이터 통신 네트워크(105)를 포함한다. 네트워크(105)는 클라이언트 디바이스(110), 보안 MPC 클러스터(130), 게시자(140), 웹사이트(142), 및 컨텐츠 플랫폼(150)을 연결한다. 예시적인 환경(100)은 많은 상이한 클라이언트 디바이스(110), 보안 MPC 클러스터(130), 게시자(140), 웹사이트(142), 및 컨텐츠 플랫폼(150)을 포함할 수 있다.
클라이언트 디바이스(110)는 네트워크(105)를 통해 통신할 수 있는 전자 디바이스이다. 예시적인 클라이언트 디바이스(110)는 개인용 컴퓨터, 모바일 통신 디바이스, 예를 들어 스마트폰, 및 네트워크(105)를 통해 데이터를 송수신할 수 있는 다른 디바이스를 포함한다. 클라이언트 디바이스는 또한 마이크로폰을 통해 오디오 입력을 받아들이고 스피커를 통해 오디오 출력을 출력하는 디지털 어시스턴트 디바이스를 포함할 수 있다. 디지털 어시스턴트가 오디오 입력을 받아들이도록 마이크로폰을 활성화하는 "핫워드" 또는 "핫문구"을 검출하면 디지털 어시스턴트는 청취 모드(예를 들어, 오디오 입력을 수락할 준비가 됨)로 전환될 수 있다. 디지털 어시스턴트 디바이스는 또한 이미지를 캡처하고 정보를 시각적으로 제시하기 위한 카메라 및/또는 디스플레이를 포함할 수 있다. 디지털 어시스턴트는 웨어러블 디바이스(예를 들어, 워치 또는 글래스), 스마트 폰, 스피커 디바이스, 태블릿 디바이스 또는 다른 하드웨어 디바이스를 포함하는 다양한 형태의 하드웨어 디바이스로 구현될 수 있다. 클라이언트 디바이스는 또한 비디오를 텔레비전, 게임 콘솔 또는 가상 현실 시스템으로 스트리밍하기 위해 텔레비전 또는 다른 디스플레이에 연결하는 스트리밍 디바이스와 같은 디지털 미디어 디바이스를 포함할 수 있다.
클라이언트 디바이스(110)는 일반적으로 네트워크(105)를 통한 데이터의 송수신을 용이하게 하기 위해 웹 브라우저 및/또는 네이티브(기본) 애플리케이션과 같은 애플리케이션(112)을 포함한다. 네이티브 애플리케이션은 특정 플랫폼 또는 특정 디바이스(예를 들어, 특정 운영 체제가 있는 모바일 디바이스)용으로 개발된 애플리케이션이다. 게시자(140)는 클라이언트 디바이스(110)에 대한 네이티브 애플리케이션을 개발하고 제공, 예를 들어 다운로드가 가능하도록 할 수 있다. 웹 브라우저는 예를 들어 클라이언트 디바이스(110)의 사용자가 웹 브라우저의 주소 표시줄에 리소스(145)에 대한 리소스 주소를 입력하는 것에 응답하거나 리소스 주소를 참조하는 링크를 선택하는 것에 응답하여 게시자(140)의 웹사이트(142)를 호스팅하는 웹 서버로부터 리소스(145)를 요청할 수 있다. 마찬가지로, 네이티브 애플리케이션은 게시자의 원격 서버로부터 애플리케이션 컨텐츠를 요청할 수 있다.
일부 리소스, 애플리케이션 페이지 또는 기타 애플리케이션 컨텐츠는 리소스(145) 또는 애플리케이션 페이지와 함께 디지털 컴포넌트를 제공하기 위한 디지털 컴포넌트 슬롯을 포함할 수 있다. 본 문서 전체에서 사용되는 "디지털 컴포넌트"라는 문구는 디지털 컨텐츠 또는 디지털 정보의 개별 단위(예를 들어, 비디오 클립, 오디오 클립, 멀티미디어 클립, 이미지, 텍스트 또는 기타 컨텐츠 단위)를 나타낸다. 디지털 컴포넌트는 물리적 메모리 디바이스에 단일 파일 또는 파일 모음으로 전자적으로 저장될 수 있으며, 디지털 컴포넌트는 광고가 일종의 디지털 컴포넌트이도록 비디오 파일, 오디오 파일, 멀티미디어 파일, 이미지 파일 또는 텍스트 파일의 형태를 취할 수 있다. 예를 들어, 디지털 컴포넌트는 웹 페이지의 컨텐츠 또는 애플리케이션(112)에 의해 제공되는 기타 리소스를 보완하기 위한 컨텐츠일 수 있다. 보다 구체적으로, 디지털 컴포넌트는 리소스 컨텐츠와 관련된 디지털 컨텐츠를 포함할 수 있다(예를 들어, 디지털 컴포넌트는 웹 페이지 컨텐츠와 동일한 주제 또는 관련 주제와 관련될 수 있음). 따라서, 디지털 컴포넌트의 제공은 웹 페이지 또는 애플리케이션 컨텐츠를 보완하고 일반적으로 향상시킬 수 있다.
애플리케이션(112)이 하나 이상의 디지털 컴포넌트 슬롯을 포함하는 리소스(또는 애플리케이션 컨텐츠)를 로드할 때, 애플리케이션(112)은 각 슬롯에 대한 디지털 컴포넌트를 요청할 수 있다. 일부 구현에서, 디지털 컴포넌트 슬롯은 애플리케이션(112)으로 하여금 디지털 컴포넌트를 선택하고 클라이언트 디바이스(110)의 사용자에게 프리젠테이션하기 위해 애플리케이션(112)에 디지털 컴포넌트를 제공하는 디지털 컴포넌트 배포 시스템으로부터 디지털 컴포넌트를 요청하게 하는 코드(예를 들어, 스크립트)를 포함할 수 있다.
컨텐츠 플랫폼(150)은 공급측 플랫폼(SSP) 및 수요측 플랫폼(DSP)을 포함할 수 있다. 일반적으로, 컨텐츠 플랫폼(150)은 게시자(140) 및 디지털 컴포넌트 제공자(160)를 대신하여 디지털 컴포넌트의 선택 및 배포를 관리한다.
일부 게시자(140)는 SSP를 사용하여 리소스 및/또는 애플리케이션의 디지털 컴포넌트 슬롯에 대한 디지털 컴포넌트를 획득하는 프로세스를 관리한다. SSP는 리소스 및/또는 애플리케이션에 대한 디지털 컴포넌트를 획득하는 프로세스를 자동화하는 하드웨어 및/또는 소프트웨어로 구현된 기술 플랫폼이다. 각각의 게시자(140)는 대응하는 SSP 또는 다수의 SSP를 가질 수 있다. 일부 게시자(140)는 동일한 SSP를 사용할 수 있다.
디지털 컴포넌트 제공자(160)는 게시자의 리소스 및 애플리케이션의 디지털 컴포넌트 슬롯에 제시되는 디지털 컴포넌트를 생성(또는 게시)할 수 있다. 디지털 컴포넌트 제공자(160)는 DSP를 사용하여 디지털 컴포넌트 슬롯에서의 프리젠테이션을 위한 디지털 컴포넌트의 프로비저닝(공급)을 관리할 수 있다. DSP는 리소스 및/또는 애플리케이션과 함께 프레젠테이션하기 위해 디지털 컴포넌트를 배포하는 프로세스를 자동화하는 하드웨어 및/또는 소프트웨어로 구현된 기술 플랫폼이다. DSP는 디지털 컴포넌트 제공자(160)를 대신하여 다수의 공급측 플랫폼 SSP와 상호 작용하여 다수의 상이한 게시자(140)의 리소스 및/또는 애플리케이션과 함께 프리젠테이션하기 위한 디지털 컴포넌트를 제공할 수 있다. 일반적으로, DSP는 (예를 들어, SSP로부터) 디지털 컴포넌트에 대한 요청을 수신하고, 요청에 기초하여 하나 이상의 디지털 컴포넌트 제공자에 의해 생성된 하나 이상의 디지털 컴포넌트에 대한 선택 파라미터를 생성(또는 선택)하고, 디지털 컴포넌트(예를 들어, 디지털 컴포넌트 자체) 및 선택 파라미터와 관련된 데이터를 SSP에 제공한다. 그런 다음 SSP는 클라이언트 디바이스(110)에서 프리젠테이션하기 위한 디지털 컴포넌트를 선택하고, 클라이언트 디바이스(110)가 디지털 컴포넌트를 제시하게 하는 데이터를 클라이언트 디바이스(110)에 제공할 수 있다.
일부 경우, 웹 페이지, 애플리케이션 페이지, 또는 사용자가 이전에 방문 및/또는 상호 작용한 기타 전자 리소스와 관련된 디지털 컴포넌트를 수신하는 것이 사용자에게 유리하다. 이러한 디지털 컴포넌트를 사용자에게 배포하기 위해, 사용자들이 특정 리소스를 방문하거나 그 리소스에서 특정 액션을 수행할 때, 예를 들어, (a) 특정 아이템에 대한 링크 클릭, (b) 예를 들어 가상 장바구니에 아이템 추가 또는 아이템을 구매를 통한 특정 아이템에 대한 전환 완료 및/또는 (c) 미리 설정된 시간 이상의 특정 아이템 보기와 같이 웹 페이지에 제시된 특정 아이템과 상호 작용할 때 사용자들은 사용자 그룹, 예를 들어 사용자 관심 그룹, 유사한 사용자 집단 또는 유사한 사용자 데이터를 포함하는 기타 그룹 유형에 할당될 수 있다. 모델은 상호 작용에 응답하여 사용자들에 대한 사용자 그룹을 생성하거나 식별하는 것으로 설명되지만, 다른 구현에서 모델은 일부 상호 작용을 수행하지만 후속 상호 작용이 없는(예를 들어, 디지털 컴포넌트를 볼 수 있지만 클릭하지 않거나 그 컴포넌트를 클릭하지만 변환하지 않는) 사용자에 응답하여 사용자 그룹을 생성하거나 식별할 수 있다. 이러한 분포를 만들기 위해, 모델은 먼저 사용자의 특정 유형의 상호 작용을 나타내는 데이터(즉, 신호)에 대해 트레이닝된다. 사용자가 특정 상호 작용을 수행하지만 후속 상호 작용이 없는(예를 들어, 사용자에게 디지털 컴포넌트가 디스플레이되지만 클릭하지 않거나 사용자가 디지털 컴포넌트를 클릭하지만 변환하지 않는) 신호에 기초하여 모델을 트레이닝하는 것은, 모델을 보다 정확하게 트레이닝하고 트레이닝된 모델을 후속적으로 배포할 수 있기 때문에 이러한 신호를 고려하지 않는 모델보다 유리할 수 있다.
사용자 그룹은 디지털 컴포넌트 제공자(160) 또는 컨텐츠 플랫폼(150), 또는 게시자(140)에 의해 생성될 수 있다. 즉, 각 디지털 컴포넌트 제공자(160)는 사용자들이 디지털 컴포넌트 제공자(160)의 전자 리소스를 방문할 때 사용자들을 자신의 사용자 그룹에 할당할 수 있다. 다른 예에서, 컨텐츠 플랫폼(150)은 디지털 컴포넌트 제공자(160)에 대한 사용자 그룹을 생성할 수 있다. 다른 예에서, 게시자(140)는 자신의 웹사이트(들)를 방문하는 사용자들에 대한 사용자 그룹을 생성할 수 있다.
사용자 프라이버시를 보호하기 위해, 사용자의 그룹 멤버십은 디지털 컴포넌트 제공자, 컨텐츠 플랫폼 또는 기타 당사자가 아닌, 예를 들어 애플리케이션(112) 중 하나 또는 클라이언트 디바이스(110)의 운영 체제에 의해 사용자의 클라이언트 디바이스(110)에서 유지될 수 있다. 특정 예에서, 신뢰할 수 있는 프로그램(예를 들어, 웹 브라우저 또는 운영 체제)는 웹 브라우저 또는 다른 애플리케이션을 사용하는 사용자에 대한 사용자 그룹 식별자 목록("사용자 그룹 목록")을 유지할 수 있다. 사용자 그룹 목록은 사용자가 추가된 각 사용자 그룹에 대한 그룹 식별자를 포함할 수 있다. 사용자 그룹을 생성하는 디지털 컴포넌트 제공자(160)는 그들의 사용자 그룹에 대한 사용자 그룹 식별자를 지정할 수 있다. 사용자 그룹에 대한 사용자 그룹 식별자는 그룹의 설명(예를 들어, 정원 가꾸기 그룹)이거나 그룹을 나타내는 코드(예를 들어, 설명이 아닌 영숫자 시퀀스)일 수 있다. 사용자에 대한 사용자 그룹 목록은 클라이언트 디바이스(110)의 보안 저장소에 저장될 수 있고 및/또는 저장 시 암호화되어 다른 사람들이 그룹에 액세스하는 것을 방지할 수 있다.
애플리케이션(112)이 디지털 컴포넌트 제공자(160) 또는 웹사이트(142) 상의 웹 페이지와 관련된 리소스 또는 애플리케이션 컨텐츠를 제시할 때, 리소스는 애플리케이션(112)이 사용자 그룹 목록에 하나 이상의 사용자 그룹 식별자를 추가하도록 요청할 수 있다. 이에 응답하여, 애플리케이션(112)은 하나 이상의 사용자 그룹 식별자를 사용자 그룹 목록에 추가하고 사용자 그룹 목록을 안전하게 저장할 수 있다.
컨텐츠 플랫폼(150)은 사용자의 사용자 그룹 멤버십을 사용하여 사용자가 관심을 가질 수 있거나 다른 방식으로 사용자/사용자 디바이스에 유익할 수 있는 디지털 컴포넌트 또는 기타 컨텐츠를 선택할 수 있다. 예를 들어, 이러한 디지털 컴포넌트 또는 다른 컨텐츠는 사용자 경험을 개선하거나, 사용자 디바이스의 실행을 개선하거나, 다른 방식으로 사용자 또는 사용자 디바이스에 이익이 되는 데이터를 포함할 수 있다. 그러나, 사용자의 사용자 그룹 목록의 사용자 그룹 식별자는 컨텐츠 플랫폼(150)이 사용자 그룹 식별자를 특정 사용자와 연관시키거나 일반 텍스트로 사용자 그룹 식별자에 액세스하는 것을 방지하는 방식으로 제공될 수 있으며, 따라서 사용자 그룹 멤버십 데이터를 사용하여 디지털 컴포넌트를 선택할 때 사용자 프라이버시를 보호할 수 있다.
애플리케이션(112)은 컨텐츠 플랫폼(150) 또는 사용자 자신이 아닌 임의의 다른 엔티티가 사용자의 완전한 사용자 그룹 멤버십을 알지 못하도록 방지하는 방식으로 사용자 그룹 멤버십에 기초하여 클라이언트 디바이스(110)에서 프리젠테이션하기위한 디지털 컴포넌트를 선택하기 위해, 컨텐츠 플랫폼(150)과 상호 작용하는 신뢰할 수 있는 컴퓨팅 시스템에 사용자 그룹 목록의 사용자 그룹 식별자를 제공할 수 있다.
일부 경우에, 이미 사용자 그룹의 이미 구성원인 사용자와 유사한 관심사 또는 기타 유사한 데이터를 갖는 사용자를 포함하도록 사용자 그룹을 확장하는 것이 사용자 및 디지털 컴포넌트 제공자에게 유익하다. 유용하게도, 이것은 제3자 쿠키를 사용하지 않고 달성될 수 있다. 예를 들어, 제1 사용자는 스노우 스키에 관심이 있고 특정 스키 리조트에 대한 사용자 그룹의 구성원일 수 있다. 제2 사용자도 스키에 관심이 있지만 이 스키 리조트를 모르고 스키 리조트 회원이 아닐 수 있다. 두 사용자가 유사한 관심사 또는 데이터(예를 들어, 유사한 사용자 프로파일)를 가지고 있는 경우, 제2 사용자가 스키 리조트에 대한 사용자 그룹에 추가되어 제2 사용자는 스키 리조트와 관련되고 제2 사용자 또는 사용자 디바이스에 관심이 있거나 유익할 수 있는 컨텐츠(예를 들어 디지털 컴포넌트)를 수신할 수 있다. 즉, 사용자 그룹은 유사한 사용자 데이터를 가진 다른 사용자를 포함하도록 확장될 수 있다.
보안 MPC 클러스터(130)는 사용자의 프로파일에 기초하여 사용자(또는 그들의 애플리케이션(112))에게 사용자 그룹을 제안하거나 제안을 생성하는데 사용될 수 있는 기계 학습 모델을 트레이닝할 수 있다. 보안 MPC 클러스터(130)는 기계 학습 모델을 트레이닝하기 위해 보안 MPC 기술을 수행하는 2개의 컴퓨팅 시스템(MPC1 및 MPC2)를 포함한다. 예시적인 MPC 클러스터(130)는 2개의 컴퓨팅 시스템을 포함하지만, MPC 클러스터(130)가 하나 이상의 컴퓨팅 시스템을 포함하는 한 더 많은 컴퓨팅 시스템이 MPC 프로세스를 수행하는데 사용될 수 있다. 예를 들어, MPC 클러스터(130)는 3개의 컴퓨팅 시스템, 4개의 컴퓨팅 시스템, 또는 기타 적절한 수의 컴퓨팅 시스템을 포함할 수 있다. MPC 클러스터(130)에서 더 많은 컴퓨팅 시스템을 사용하는 것은 더 많은 보안 및 내결함성을 제공할 수 있지만, MPC 프로세스의 복잡성을 증가시킬 수도 있다.
MPC 클러스터(130) 내에 있는 컴퓨팅 시스템(MPC1 및 MPC2)은 상이한 엔티티에 의해 운영될 수 있다. 이러한 방식으로, 각 엔터티는 일반 텍스트의 전체 사용자 프로파일에 액세스하지 못할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1 또는 MPC2) 중 하나는 사용자, 게시자(140), 컨텐츠 플랫폼(150) 및 디지털 컴포넌트 제공자(160)와 상이한 신뢰할 수 있는 당사자에 의해 운영될 수 있다. 예를 들어, 산업 그룹, 정부 그룹 또는 브라우저 개발자는 컴퓨팅 시스템(MPC1 및 MPC2) 중 하나를 유지 관리하고 운영할 수 있다. 다른 컴퓨팅 시스템은 다른 신뢰 당사자가 각 컴퓨팅 시스템(MPC1 및 MPC2)을 운영하도록 이러한 그룹 중 다른 하나에 의해 운영될 수 있다. 바람직하게는, 상이한 컴퓨팅 시스템(MPC1 및 MPC2)을 운영하는 상이한 당사자는 사용자 프라이버시를 위험에 빠뜨리기 위해 공모할 동기할 없다. 일부 구현에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 구조적으로 분리되고 본 문서에 설명된 보안 MPC 프로세스를 수행하는 것 외에는 서로 통신하지 않도록 모니터링된다.
일부 구현에서, MPC 클러스터(130)는 각각의 컨텐츠 플랫폼(150)(예를 들어, 각각의 DSP 및/또는 각각의 SSP) 및/또는 각각의 디지털 컴포넌트 제공자(160)에 대해 하나 이상의 기계 학습 모델(예를 들어, 중심 모델 및/또는 k-NN 모델)을 트레이닝한다. 예를 들어, 컨텐츠 플랫폼(150)은 MPC 클러스터(130)가 컨텐츠 플랫폼(150)에 의해 관리되거나 컨텐츠 플랫폼이 적어도 읽기 액세스 권한을 갖는 하나 이상의 사용자 그룹의 임의의 서브세트에 대한 기계 학습 모델(예를 들어, 중심 모델 또는 k-NN 모델)을 트레이닝시키도록 할 수 있다. 예를 들어, 각각의 컨텐츠 플랫폼(150)은 하나 이상의 디지털 컴포넌트 제공자(160)에 대한 디지털 컴포넌트의 배포를 관리할 수 있다. 컨텐츠 플랫폼(150)은 컨텐츠 플랫폼(150)이 디지털 컴포넌트의 배포를 관리하는 하나 이상의 디지털 컴포넌트 제공자(160)에 대한 기계 학습 모델(예를 들어, 중심 모델 또는 k-NN 모델)을 MPC 클러스터(130)가 트레이닝하도록 요청할 수 있다. 일반적으로, 디지털 컴포넌트 제공자(160)는 MPC 클러스터(130)가 디지털 컴포넌트 제공자(160)에 의해 생성되고 유지되는 하나 이상의 사용자 그룹에 대한 중심 모델 및/또는 k-NN 모델을 트레이닝시키도록 할 수 있다. 각 컨텐츠 플랫폼은 각각의 고유한 모델 식별자에 의해 고유하게 식별될 수 있는 상이한 기계 학습 모델을 구현할 수 있다. 중심 모델 및 k-NN 모델을 트레이닝하기 위한 예제 프로세스는 아래에서 더 자세히 설명된다.
중심 모델을 전개하는 구현을 위해, 중심 모델은 사용자를 n차원 공간에 임베딩할 수 있다. 프로파일 공간에서 사용자는 n차원 벡터(X = {x1, x2,..., xn})로 표시된다. 사용자 그룹(R)에는 m명의 사용자 {X1, X2,... Xm}가 있다. 모델에서 사용자 그룹(R)의 중심은
Figure pct00001
일 수 있다. 사용자 X' = x1', x2',...xn'}가 주어지면, 컨텐츠 플랫폼(150) 또는 디지털 컴포넌트 제공자(160)는
Figure pct00002
이 되도록 모든 사용자 그룹(R)을 찾기를 원할 수 있으며, 여기서 d는 예를 들어 컨텐츠 플랫폼(150)에 의해 지정된 중심 모델에 대한 임계 거리를 나타내는 파라미터이다. 다음 설명의 편의와 간결함을 위해, 중심 모델과 관련된 나머지 설명은 대체로 컨텐츠 플랫폼(150), 예를 들어 DSP 및 SSP에 대한 중심 모델의 트레이닝 및 배치에 관한 것이다. 그러나, 시스템 및 기술은 또한 디지털 컴포넌트 제공자(160), 게시자(140), 또는 다른 엔티티에 대한 중심 모델을 생성하고 디지털 컴포넌트 제공자(160) 또는 다른 엔티티를 대신하여 그 중심 모델을 질의하기 위해 수행될 수 있다.
디지털 컴포넌트 제공자(160), 게시자(140), 또는 다른 엔티티에 대한 중심 모델을 생성하고 디지털 컴포넌트 제공자(160) 또는 다른 엔티티를 대신하여 중심 모델을 질의하기 위해 시스템 및 기술이 또한 수행될 수 있다.
컨텐츠 플랫폼(150)에 대한 기계 학습 모델(예를 들어, 중심 또는 k-NN 모델)을 트레이닝시킨 후, 컨텐츠 플랫폼(150)은 클라이언트 디바이스(110)의 사용자에 대한 하나 이상의 사용자 그룹을 식별하기 위해 클라이언트 디바이스(110)의 애플리케이션(112)에 질의하거나 기계 학습 모델에 질의하도록 할 수 있다.
보다 구체적으로, 중심 모델을 사용하는 구현에서, 컨텐츠 플랫폼(150)은 사용자가 컨텐츠 플랫폼(150)의 사용자 그룹 중 어느 것에 가입해야 하는지를 결정하기 위해 컨텐츠 플랫폼(150)의 중심 모델을 조회하거나 애플리케이션(112)이 조회하도록 요청할 수 있다. 일반적으로, MPC 클러스터(130)는 사용자의 사용자 프로파일이 컨텐츠 플랫폼(150)의 사용자 그룹의 중심의 임계 거리 내에 있는지 여부를 결정할 수 있다. 그렇다면, MPC 클러스터(130)는 애플리케이션(112)이 사용자 프로파일이 중심의 임계 거리 내에 있는 사용자 그룹에 사용자를 추가하도록 요청할 수 있다. 일부 구현에서, 모델은 성능 측정치, 예를 들어 상호 작용 비율 또는 전환율에 기초하여 질의될 수 있고, 성능 측정치가 개별 임계값을 충족하는 경우 사용자는 특정 사용자 그룹에 추가될 수 있다.
k-NN 모델을 사용하는 일부 구현에서, 컨텐츠 플랫폼(150)은 사용자에게 가장 가까운 "k"개의 사용자 프로파일의 임계값 수가 특정 사용자 그룹의 구성원인지 여부를 결정하기 위해 애플리케이션(112)이 k-NN 모델을 질의하거나 질의하도록 요청할 수 있다. 그렇다면, 컨텐츠 플랫폼(150)은 사용자를 그 사용자 그룹에 추가할 수 있다. 사용자에 대한 사용자 그룹이 식별되면, 컨텐츠 플랫폼(150) 또는 MPC 클러스터(130)는 애플리케이션(112)이 사용자를 사용자 그룹에 추가하도록 요청할 수 있다.
일부 구현에서, 기계 학습 모델은 임계 성능 측정치에 기초하여 추가적으로 또는 대안적으로 질의될 수 있다. 질의 시간에, MPC 클러스터(130)는 사용자의 사용자 프로파일에 가장 가까운 k개의 사용자 프로파일을 식별할 수 있다. k개의 사용자 중 적어도 하나를 구성원으로 포함하는 각 사용자 그룹에 대해, MPC 클러스터(130)는 사용자 그룹의 하나 이상의 디지털 컴포넌트와 관련하여 사용자에 대한 상호 작용 또는 전환, 및 상호 작용 및 전환 없음에 기초하여 그룹에 대한 성능 측정치를 계산할 수 있다. MPC 클러스터(130)는 계산된 성능 측정치를 임계값과 비교할 수 있다. 임계값을 충족하는 성능 측정치를 갖는 임의의 사용자 그룹에 대해, MPC 클러스터(130)는 사용자가 해당 사용자 그룹에 추가되도록 요청할 수 있다. 임계값을 만족하지 않는 성능 측정치를 갖는 사용자 그룹에 대해, MPC 클러스터(130)는 사용자를 사용자 그룹에 추가하도록 요청하지 않을 수 있다.
일부 구현에서, MPC 클러스터(130)는 개별 사용자보다는 사용자 그룹에 기초하여 기계 학습 모델을 트레이닝시킨다. 예를 들어, k-NN 모델은 개별 사용자가 아닌 사용자 그룹에 기초하여 트레이닝될 수 있다. 이러한 예에서, 성능 측정치는 k-NN 모델의 각 사용자 그룹에 대해 계산될 수 있다. 그런 다음 임계값 성능 측정치를 사용하여 k-NN 모델이 질의될 수 있다. 이 예에서, MPC 클러스터(130)는 사용자의 사용자 프로파일에 가장 가까운 (예를 들어, 그룹의 중심에 기초하여) 집계된 사용자 프로파일을 갖는 k개의 사용자 그룹을 식별할 수 있다. 임계값을 만족하는 성능 측정치를 갖는 임의의 사용자 그룹에 대해, MPC 클러스터(130)는 사용자가 해당 사용자 그룹에 추가되도록 요청할 수 있다. 임계값을 만족하지 않는 성능 측정치를 갖는 사용자 그룹에 대해, MPC 클러스터(130)는 사용자를 사용자 그룹에 추가하도록 요청하지 않을 수 있다.
사용자 및/또는 애플리케이션(112)에 의해 승인되면, 애플리케이션(112)은 사용자 그룹에 대한 사용자 그룹 식별자를 클라이언트 디바이스(110)에 저장된 사용자 그룹 목록에 추가할 수 있다.
일부 구현에서, 애플리케이션(112)은 사용자가 할당된 사용자 그룹을 사용자가 관리할 수 있게 하는 사용자 인터페이스를 제공할 수 있다. 예를 들어, 사용자 인터페이스는 사용자가 사용자 그룹 식별자를 제거할 수 있게 하고, 모든 또는 특정 리소스(145), 게시자(140), 컨텐츠 플랫폼(150), 디지털 컴포넌트 제공자(160), 및/또는 MPC 클러스터(130)가 사용자 그룹에 사용자를 추가하는 것을 방지(예를 들어, 엔티티가 애플리케이션(112)에 의해 유지되는 사용자 그룹 식별자 목록에 사용자 그룹 식별자를 추가하는 것을 방지)할 수 있다. 이것은 사용자에게 더 나은 투명성 및 제어를 제공한다.
본 문서 전체에 걸친 설명에 더하여, 사용자는 본 명세서에 설명된 시스템, 프로그램 또는 기능이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 액션 또는 활동, 직업, 사용자의 선호도 또는 사용자의 현재 위치에 관한 정보)의 수집을 가능하게 할 수 있는지 여부와 시기, 그리고 사용자에게 서버로부터 컨텐츠 또는 통신이 전송되는지 여부에 대해 사용자가 선택할 수 있도록 하는 컨트롤(예를 들어, 사용자가 상호 작용할 수 있는 사용자 인터페이스 엘리먼트)을 제공받을 수 있다. 또한, 특정 데이터는 개인 식별 정보가 제거될 수 있도록 저장 또는 사용되기 전에 하나 이상의 방식으로 처리될 수 있다. 예를 들어, 사용자의 신원은 사용자에 대한 개인 식별 정보가 결정될 수 없도록 처리될 수 있고, 사용자의 지리적 위치는 사용자의 특정 위치가 결정될 수 없도록 위치 정보가 획득되는 곳에서 일반화될 수 있다(예를 들어, 도시, 우편번호 또는 주 수준). 따라서, 사용자는 사용자에 대해 수집되는 정보, 해당 정보가 사용되는 방법 및 사용자에게 제공되는 정보를 제어할 수 있다.
중심 모델의 생성 및 사용을 위한 예시적인 프로세스
도 2는 중심 모델을 생성하고 사용자 그룹에 사용자를 추가하기 위해 중심 모델을 사용하기 위한 예시적인 프로세스(200)의 수영 레인 다이어그램이다. 프로세스(200)의 동작들은 예를 들어 클라이언트 디바이스(110), MPC 클러스터(130)의 컴퓨팅 시스템(MPC1 및 MPC2) 및 컨텐츠 플랫폼(150)에 의해 구현될 수 있다. 프로세스(200)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(200)의 동작들을 수행하게 할 수 있다. 프로세스(200) 및 아래의 다른 프로세스가 2개의 컴퓨팅 시스템 MPC 클러스터(130)의 관점에서 설명되지만, 2개 이상의 컴퓨팅 시스템을 갖는 MPC 클러스터도 유사한 프로세스를 수행하는데 사용될 수 있다.
이 예시적인 프로세스에서, 중심 모델은 사용자 그룹에 사용자를 추가하는데 사용된다. 사용자 그룹의 중심 계산은 개별 사용자 프로파일이 아닌 사용자 그룹을 기반으로 하는 k-NN 모델과 같은 다른 기계 학습 모델의 전처리 단계로도 사용될 수 있다. 예를 들어, k-NN 모델의 각 사용자 그룹은 사용자 그룹의 중심으로 표시될 수 있다.
컨텐츠 플랫폼(150)은 클라이언트 디바이스(110)상에서 실행되는 애플리케이션(112)이 각각의 사용자에 대한 사용자 프로파일을 생성하고 그 사용자 프로파일의 비밀 셰어된 및/또는 암호화된 버전을 MPC 클러스터(130)에 업로드하도록 요청함으로써 중심 모델 중 하나 이상의 생성 및/또는 업데이트를 시작할 수 있다. 본 문서의 목적상, 사용자 프로파일의 비밀 셰어는 그 비밀 셰어가 일반 텍스트가 아니므로 사용자 프로파일의 암호화된 버전으로 간주될 수 있다. 생성 시에, 각각의 애플리케이션(112)은 사용자 프로파일에 대한 데이터를 저장할 수 있고 컨텐츠 플랫폼(150)으로부터 요청을 수신하는 것에 응답하여 업데이트된 사용자 프로파일을 생성할 수 있다. 사용자 프로파일의 컨텐츠 및 기계 학습 모델은 컨텐츠 플랫폼(150)마다 다르기 때문에, 사용자의 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112)은 다수의 사용자 프로파일에 대한 데이터를 유지 관리하고 특정 컨텐츠 플랫폼에 각각 특정되거나 특정 중심 모델에 특정된 다중 사용자 프로파일을 생성할 수 있다.
컨텐츠 플랫폼(150)(또는 디지털 컴포넌트 제공자(160))은 다중 중심 모델, 예를 들어 하나 이상의 사용자 그룹의 각 세트에 대해 하나씩 가질 수 있으므로, 컨텐츠 플랫폼(150)(또는 디지털 컴포넌트 제공자(160))은 애플리케이션(112)에게 사용자 프로파일을 생성하고 다수의 사용자 그룹 및/또는 다수의 중심 모델에 대한 사용자 프로파일을 동시에, 예를 들어 단 한번의 요청으로 업로드하도록 요청할 수 있다.
클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112)은 클라이언트 디바이스(110)의 사용자에 대한 사용자 프로파일을 구축한다(202). 사용자에 대한 사용자 프로파일은 사용자에 의해 개시된 이벤트 및/또는 전자 리소스(예를 들어, 웹 페이지 또는 애플리케이션 컨텐츠)와 관련하여 사용자에 의해 개시되었을 수 있는 이벤트와 관련된 데이터를 포함할 수 있다. 이벤트에는 전자 리소스의 보기(view), 디지털 컴포넌트의 보기, 사용자 상호 작용(예를 들어, 전자 리소스 및/또는 디지털 컴포넌트에 대한 사용자의 하나 이상의 보기, 클릭 또는 전환), 또는 전자 리소스 또는 디지털 컴포넌트와의 사용자 상호 작용 결여(예를 들어, 전자 리소스 및/또는 디지털 컴포넌트에 대한 사용자의 조회, 클릭 또는 전환의 결여), 사용자가 전자 리소스와 상호 작용한 후에 발생하는(또는 발생하지 않는) 전환, 및/또는 사용자 및 전자 리소스와 관련된 기타 적절한 이벤트가 포함될 수 있다. 사용자 프로파일은 시간이 지남에 따라 변경될 수 있으므로 구축된 사용자 프로파일을 현재 사용자 프로파일(Pcurrent)라고 지칭할 수 있다.
사용자에 대한 사용자 프로파일은 컨텐츠 플랫폼(150), 또는 컨텐츠 플랫폼(150)이 소유한 선택된 중심 모델에 특정적일 수 있다. 예를 들어, 도 3을 참조하여 아래에서 더 상세히 설명되는 바와 같이, 각각의 컨텐츠 플랫폼(150)은 애플리케이션(112)이 해당 컨텐츠 플랫폼(150)에 특정된 사용자 프로파일을 생성하거나 업데이트하도록 요청할 수 있다. 다른 예에서, 컨텐츠 플랫폼(150)은 애플리케이션이 컨텐츠 플랫폼(150)의 각각의 중심 모델에 대한 개별 사용자 프로파일을 생성하거나 업데이트하도록 요청할 수 있다.
사용자에 대한 사용자 프로파일(Pcurrent)은 특징 벡터의 형태일 수 있다. 예를 들어, 사용자 프로파일(Pcurrent)는 n차원 특징 벡터일 수 있다. n개의 차원 각각은 특정 특징에 해당할 수 있으며 각 차원의 값은 사용자에 대한 특징의 값일 수 있다. 예를 들어, 하나의 차원은 특정 디지털 컴포넌트가 사용자에게 제시(또는 사용자와 상호 작용)되었는지 여부에 대한 것일 수 있다. 이 예에서, 해당 특징의 값은 디지털 컴포넌트가 사용자에게 제시(또는 사용자와 상호 작용)된 경우 "1"이거나 디지털 컴포넌트가 사용자에게 제시(또는 상호 작용)되지 않은 경우 "0"일 수 있다. 사용자에 대한 사용자 프로파일을 생성하기 위한 예시적인 프로세스가 도 3에 도시되어 있고 아래에서 설명된다.
애플리케이션(112)은 사용자에 대한 사용자 프로파일(Pcurrent)의 비밀 셰어(조각)들을 생성한다(204). 이 예에서, 애플리케이션(112)은 MPC 클러스터(130)의 각 컴퓨팅 시스템에 대해 하나씩 사용자 프로파일(Pcurrent)의 2개의 비밀 셰어([Pcurrent,1] 및 [Pcurrent,2])를 생성한다. 본 문서의 목적을 위해, 비밀 셰어는 "비밀 셰어" 엘리먼트의 비밀 셰어에 대해 비밀 공유된 예를 들어, [secret share]인 엘리먼트(예를 들어, 값, 벡터 등) 주위에 대괄호 []를 사용하여 표시된다. 예를 들어, 애플리케이션은 사용자 프로파일(Pcurrent)을 비밀 셰어로 분할하여 MPC 클러스터(130)의 손상된 컴퓨팅 시스템으로부터의 사용자 프로파일(Pcurrent)의 값을 보호할 수 있다. 각 비밀 셰어 자체는 사용자 프로파일에 관해 아무 것도 나타내지 않는 램덤값일 수 있다. 사용자 프로파일을 획득하기 위해서는 2개의 비밀 셰어를 결합해야 한다. MPC 클러스터(130)가 기계 학습 모델의 트레이닝에 참여하는 더 많은 컴퓨팅 시스템을 포함하는 경우, 애플리케이션(112)은 각각의 컴퓨팅 시스템에 대해 하나씩 더 많은 비밀 셰어를 생성할 것이다. 사용자 프로파일을 구축하고 사용자 프로파일의 비밀 셰어들을 생성하기 위한 예시적인 프로세스가 도 3에 도시되어 있고 아래에 설명되어 있다.
애플리케이션(112)은 사용자 프로파일(Pcurrent)의 제1 비밀 셰어([Pcurrent,1])를 컴퓨팅 시스템(MPC1)(206)에 제공한다. 애플리케이션(112)은 또한 사용자 프로파일의 제2 비밀 셰어([Pcurrent,2])를 컴퓨팅 시스템(MPC2)(208)에 제공한다. 도 3을 참조하여 후술하는 바와 같이, 사용자 프라이버시 및 데이터 보안이 보호되도록 MPC 클러스터(130)에 사용자 프로파일(Pcurrent)의 2개의 비밀 셰어([Pcurrent,1] 및 [Pcurrent,2])를 제공하는 다양한 방법이 있다.
모델이 사용자에 의한 디지털 컴포넌트의 전환에 기초하여 트레이닝되기를 원하는 특정 구현에서, 전환의 발생은 노출 또는 클릭 후 오랜 시간이 지난 후에 종종 발생할 수 있다는 점을 고려할 수 있으며, 이 경우 컨텐츠 플랫폼(150)에 의한 대역폭, 저장 및 처리를 최적화하기 위해 MPC 클러스터(130)를 다른 작업을 수행하는데 사용할 수 있도록 유지하는 것이 유리할 수 있다. 이러한 구현에서, 동작(206 및 208)은 (i) 애플리케이션(112)이 제1 당사자(first party) 쿠키와 함께 사용자 프로파일 및 라벨의 암호화된 셰어들을 일부 구현에서는 컨텐츠 플랫폼(150)의 일부일 수 있고 다른 구현에서는 컨텐츠 플랫폼(150)과 분리될 수 있는 수요측 플랫폼(DSP)에 전송하고, (ii) 이어서 DSP가 제1 당사자 쿠키를 사용하여 사용자 프로파일 및 라벨의 암호화된 셰어들을 전환에 특정적일 수 있는 상호 작용 데이터(예를 들어, 전환이 30일과 같이 사전 설정된 기간 내에 발생했는지 여부)와 매핑(즉, 연관)하고, (iii) 그런 다음 DSP가 이 매핑을 컴퓨팅 시스템(MPC1 또는 MPC2)으로 전송하여 기계 학습 모델을 트레이닝하는 다른 대안 프로세스로 대체될 수 있다. 이 설명은 전환의 상호 작용에 중점을 두고 있지만, 이 아키텍처 및 기능은 임의의 다른 상호 작용(예를 들어, 노출 또는 클릭) 또는 상호 작용의 임의의 조합(예를 들어, 노출, 클릭 및/또는 전환)으로 확장될 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 중심 모델을 생성한다(210). 컴퓨팅 시스템(MPC1 및 MPC2)은 클라이언트 디바이스(110)에 사용자 프로파일을 업로드하도록 요청한 컨텐츠 플랫폼(150) 또는 디지털 컴포넌트 제공자(160)의 다수의 사용자 그룹에 대한 중심 모델을 생성할 수 있다. 사용자 프로파일 데이터에 기초하여 새로운 기계 학습 모델이 생성되는 각 시간은 트레이닝 세션으로 지칭될 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 다수의 클라이언트 디바이스로부터 수신된 사용자 프로파일의 비밀 셰어들에 기초하여 기반으로 중심 모델을 생성할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1 및 MPC2)은 MPC 기술을 사용하여 사용자 프로파일의 비밀 셰어들에 기초한 중심 모델을 생성할 수 있다. 일반적으로, 사용자 그룹에 대한 중심 모델을 생성하는 것은 사용자 그룹의 구성원인 사용자들의 사용자 프로파일의 중심(점)을 계산하는 것을 포함한다. 중심 모델을 생성하기 위한 예시적인 프로세스는 도 4 및 6에 예시되어 있고 아래에 설명되어 있다.
MPC 클러스터(130)에 의해 생성되고 유지되는 각각의 중심 모델은 대응하는 고유 식별자를 가질 수 있다. 이것은 애플리케이션(112)이 모델 식별자를 사용하여 중심 모델을 질의(query)할 수 있게 한다. 예를 들어, 중심 모델을 생성하기 위한 요청은 중심 모델에 대한 모델 식별자를 포함할 수 있으며, 이는 소유자(예를 들어, 컨텐츠 플랫폼(150) 또는 디지털 컴포넌트 제공자(160))에 의해 할당될 수 있다. 그런 다음 소유자는 모델 식별자를 사용하여 중심 모델에 대응하는 사용자 그룹에 사용자를 추가할지 여부를 결정하기 위해 중심 모델을 질의하도록 애플리케이션(112)에 요청할 수 있다.
애플리케이션(112)은 사용자 그룹 업데이트 요청을 MPC 클러스터(130)에 제출한다(212). 사용자 그룹 업데이트 요청에는 사용자의 현재 사용자 프로파일(Pcurrent)이 포함될 수 있다. 일부 구현들에서, 애플리케이션(112)은 완전한 사용자 프로파일(Pcurrent)을 컴퓨팅 시스템(MPC1 및 MPC2) 각각에 전송할 수 있다. 다른 구현들에서, 사용자 프라이버시를 보호하기 위해, 애플리케이션(112)은 사용자 프로파일(Pcurrent)의 개별 부분 또는 비밀 셰어를 각각의 컴퓨팅 시스템(MPC1 및 MPC2)으로 전송할 수 있다.
사용자 그룹 업데이트 요청은 또한 사용자가 중심 모델에 대응하는 사용자 그룹에 추가되어야 하는지 여부를 결정하기 위해 질의될 하나 이상의 중심 모델 각각에 대한 모델 식별자를 포함할 수 있다. 일부 구현에서, 애플리케이션(112)은 각각의 중심 모델에 대한 별도의 사용자 그룹 업데이트 요청을 전송한다. 이 예에서, 각 사용자 그룹 요청에는 하나의 중심 모델에 대한 모델 식별자가 포함된다.
각각의 사용자 그룹 업데이트 요청은 또한 질의에 대한 임계 거리, 예를 들어 최대 거리를 포함할 수 있다. 사용자의 사용자 프로파일이 사용자 그룹에 대한 중심의 임계 거리 내에 있는 경우, MPC 클러스터(130)는 애플리케이션(112)이 해당 사용자 그룹에 사용자를 추가하도록 요청할 수 있다. 사용자 그룹 업데이트 요청을 전송하기 위한 예시적인 데이터 형식 및 기술이 도 5를 참조하여 설명된다.
MPC 클러스터(130)는 사용자가 하나 이상의 사용자 그룹에 추가되어야 하는지 여부를 결정한다(214). 일반적으로, 이것은 사용자의 사용자 프로파일이 하나 이상의 사용자 그룹 각각에 대한 중심의 임계 거리 내에 있는지 여부를 결정하는 것을 포함할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 보안 MPC 프로세스를 수행하여, 컴퓨팅 시스템(MPC1 및 MPC2)이 일반 텍스트로 된 사용자 프로파일이나 일반 텍스트로 사용자에게 제안될 사용자 그룹 식별자에 액세스할 수 없도록 사용자가 하나 이상의 사용자 그룹에 추가해야 하는지 여부를 결정할 수 있다. 사용자에 대한 사용자 그룹을 결정하기 위한 예시적인 프로세스가 도 5 및 6에 예시되고 아래에서 설명된다.
MPC 클러스터(130)는 0개 이상의 사용자 그룹 식별자를 애플리케이션(112)에 제공한다(216). MPC 클러스터(130)는 사용자가 추가되어야 하는 각 사용자 그룹에 대한 사용자 그룹 식별자를 제공할 수 있다. 즉, MPC 클러스터(130)는 사용자의 사용자 프로파일이 임계 거리 내에 있는 중심을 갖는 각 사용자 그룹에 대한 사용자 그룹 식별자를 제공할 수 있다. 사용자 프라이버시를 보호하기 위해, 각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 도 5 및 6을 참조하여 아래에서 설명되는 바와 같이 사용자 그룹 식별자의 일부 또는 사용자 그룹 식별자의 비밀 셰어를 제공한다.
애플리케이션(112)은 사용자에 대한 사용자 그룹 목록을 업데이트한다(218). 예를 들어, 애플리케이션(112)은 사용자 프로파일이 그 중심의 임계 거리 내에 있는 각각의 사용자 그룹에 사용자를 추가할 수 있다. 즉, 애플리케이션(112)은 MPC 클러스터(130)로부터 수신된 각각의 사용자 그룹 식별자를 사용자의 클라이언트 디바이스(110)에 유지되는 사용자 그룹 목록에 추가할 수 있다. 일부 구현들에서, 애플리케이션(112)은 각 사용자 그룹에 사용자를 추가하기 위한 허가를 사용자에게 프롬프트할 수 있다.
애플리케이션(112)은 컨텐츠에 대한 요청을 전송한다(220). 예를 들어, 애플리케이션(112)은 디지털 컴포넌트 슬롯을 갖는 전자 리소스를 로드하는 것에 응답하여 디지털 컴포넌트에 대한 요청을 컨텐츠 플랫폼(150)으로 전송할 수 있다. 일부 구현에서, 요청에는 사용자를 구성원으로 포함하는 사용자 그룹에 대한 하나 이상의 사용자 그룹 식별자가 포함될 수 있다. 예를 들어, 애플리케이션(112)은 사용자 그룹 목록으로부터 하나 이상의 사용자 그룹 식별자를 획득하고 사용자 그룹 식별자(들)에 요청을 제공할 수 있다. 일부 구현에서, 기술들은 컨텐츠 플랫폼이 사용자 그룹 식별자를 사용자, 애플리케이션(112), 및/또는 요청이 수신되는 클라이언트 디바이스(112)와 연관시킬 수 있는 것을 방지하기 위해 사용될 수 있다.
컨텐츠 플랫폼(150)은 컨텐츠를 애플리케이션(112)으로 전송한다(222). 예를 들어, 컨텐츠 플랫폼(150)은 사용자 그룹 식별자(들)에 기초하여 디지털 컴포넌트를 선택하고 디지털 컴포넌트를 애플리케이션(112)에 제공할 수 있다. 일부 구현에서, 컨텐츠 플랫폼(150)은 애플리케이션(112) 또는 디바이스 운영 체제와 협력하여, 애플리케이션(112) 또는 사용자 디바이스(110) 외부로 사용자 그룹 식별자(들)를 누설하지 않고 사용자 그룹 식별자(들)에 기초하여 디지털 컴포넌트를 선택한다.
애플리케이션(112)은 수신된 컨텐츠를 디스플레이하거나 구현한다(224). 예를 들어, 애플리케이션(112)은 수신된 디지털 컴포넌트를 전자 리소스의 디지털 컴포넌트 슬롯에 디스플레이할 수 있다.
중심 모델에 대한 사용자 프로파일을 생성하는 예시적인 프로세스
도 3은 사용자 프로파일을 생성하고 사용자 프로파일을 MPC 클러스터로 전송하기 위한 예시적인 프로세스(300)를 도시하는 흐름도이다. 프로세스(300)의 동작들은 예를 들어, 도 1의 클라이언트 디바이스(110)에 의해, 예를 들어 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112) 또는 클라이언트 디바이스(110)의 운영 체제에 의해 구현될 수 있다. 프로세스(300)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(300)의 동작들을 수행하게 할 수 있다.
사용자의 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112)은 이벤트에 대한 데이터를 수신한다(302). 이벤트는 예를 들어, 클라이언트 디바이스(110)에서의 전자 리소스의 제시, 클라이언트 디바이스(110)에서의 디지털 컴포넌트의 제시, 클라이언트 디바이스(110)에서의 전자 리소스 또는 디지털 컴포넌트와의 사용자 상호 작용, 또는 디지털 컴포넌트에 대한 전환, 또는 제시된 전자 리소스 또는 디지털 컴포넌트와의 사용자 상호 작용 또는 그에 대한 전환의 결여일 수 있다. 사용자에 의한 사용자 상호 작용의 몇 가지 예는 (a) 특정 아이템에 대한 링크의 클릭, (b) 예를 들어 가상 장바구니에 아이템을 추가하거나 아이템을 구매함으로써 특정 아이템에 대한 전환 완료, (c) 미리 설정된 시간 이상 동안 특정 아이템 보기 중 중 하나 이상과 같은 웹 페이지상에 제시된 특정 아이템과의 상호 작용일 수 있다. 특정 사용자 상호 작용이 결여된 몇 가지 예는 사용자가 디지털 컴포넌트를 보지만 클릭하지는 않거나, 사용자가 디지털 컴포넌트를 클릭하지만 전환하지 않는(예컨대, 체크아웃 웹페이지로 이동하기 위해 클릭했지만 아이템을 구매하지 않음)것과 같이 사용자가 일부 상호 작용을 수행하지만 후속 상호 작용이 결여될 수 있다. 전환은 구현에 따라 다르게 정의될 수 있다. 예를 들어, 일부 구현에서, 전환은 사용자가 체크아웃 페이지로 이동하는 것일 수 있다. 특정 구현에서, 전환은 아이템을 구매하려고 시도하는 사용자일 수 있다. 다른 구현에서, 전환은 아이템을 구매하는 사용자일 수 있다. 이벤트가 발생하는 경우, 컨텐츠 플랫폼(150) 또는 디지털 컴포넌트 제공자(160)는 사용자에 대한 사용자 프로파일을 생성하는데 사용하기 위해 이벤트와 관련된 데이터를 애플리케이션(112)에 제공할 수 있다.
애플리케이션(112)은 각각의 컨텐츠 플랫폼(150) 또는 디지털 컴포넌트 제공자(160)에 대해 상이한 사용자 프로파일을 생성할 수 있다. 즉, 특정 컨텐츠 플랫폼(150)에 대한 사용자의 사용자 프로파일은 특정 컨텐츠 플랫폼(150)으로부터 수신된 이벤트 데이터만을 포함할 수 있다. 이는 다른 컨텐츠 플랫폼의 이벤트와 관련된 데이터를 컨텐츠 플랫폼과 공유하지 않음으로써 사용자 프라이버시를 보호한다. 일부 구현에서, 애플리케이션(112)은 컨텐츠 플랫폼(150)의 요청에 따라 컨텐츠 플랫폼(150)이 소유한 각각의 중심 모델에 대해 상이한 사용자 프로파일을 생성할 수 있다. 설계 목표에 따라, 상이한 중심 모델에는 상이한 트레이닝 데이터가 필요할 수 있다. 예를 들어, 사용자 그룹에 사용자를 추가할지 여부를 결정하기 위해 제1 모델이 사용될 수 있다. 제2 모델은 사용자가 디지털 컴포넌트와 상호 작용(예를 들어, 보기, 클릭 및/또는 전환)할지 여부를 예측하는데 사용될 수 있다. 이 예에서, 제2 모델에 대한 사용자 프로파일은 제1 모델에 대한 사용자 프로파일이 갖지 않는 추가 데이터, 예를 들어 사용자가 디지털 컴포넌트와 상호 작용했는지 여부를 포함할 수 있다.
컨텐츠 플랫폼(150)은 이벤트 데이터를 프로파일 업데이트 토큰(Mupdate)의 형태로 전송할 수 있다. 프로파일 업데이트 토큰(Mupdate)에는 아래 [테이블 1]에 도시 및 설명된 다음 아이템들이 이 있다.
[테이블 1]
아이템 번호 컨텐츠 설명
1 컨텐츠 플랫폼 도메인(예를 들어, eTLD+1 도메인) 컨텐츠 플랫폼을 고유하게 식별하는 컨텐츠 플랫폼의 도메인
2

모델 식별자
컨텐츠 플랫폼의 중심 모델에 대한 고유 식별.동일한 소유자 도메인에 대한 다수의 중심 모델의 트레이닝에 동일한 사용자 프로파일을 적용해야 하는 경우 이 아이템은 여러 값을 가질 수 있다.
3 프로파일 레코드 이벤트에 기초하여 컨텐츠 플랫폼에 의해 결정된 n차원 특징 벡터
4 토큰 생성 타임스탬프 이 토큰이 생성된 시간을 나타내는 타임스탬프
5 만료 시간 특징 벡터가 만료되고 사용자 프로파일 계산에 사용되지 않는 날짜 및 시간
6 프로파일 감쇠율 사용자 프로파일에서 이 이벤트 데이터의 가중치가 감소하는 비율을 정의하는 선택적 비율
7 동작 사용자 프로파일 누적
8 디지털 서명 아이템(1-7)에 대한 컨텐츠 플랫폼의 디지털 서명
모델 식별자는 사용자 프로파일이 트레이닝에 사용되거나 사용자 그룹 추론에 사용되는 중심 모델을 식별한다. 프로파일 레코드는 이벤트에 특정된 데이터, 예를 들어 이벤트의 유형, 전자 리소스 또는 디지털 컴포넌트, 이벤트가 발생한 시간, 및/또는 컨텐츠 플랫폼(또는 디지털 구성요소 제공자(160))이 중심 모델을 트레이닝하고 사용자 그룹을 추론하는데 사용하기를 원하는 다른 적절한 이벤트 데이터를 포함하는 n차원 특징 벡터이다. 동작들은 프로파일 레코드에 기초하여 사용자 프로파일을 업데이트하도록 애플리케이션(112)에게 지시한다. 디지털 서명은 컨텐츠 플랫폼(150)의 개인키를 이용하여 7개 아이템에 근거하여 생성된다.
일부 구현에서, 전송 동안 업데이트 토큰(Mupdate)을 보호하기 위해, 컨텐츠 플랫폼(150)은 업데이트 토큰(Mupdate)을 애플리케이션(112)으로 전송하기 전에 그 업데이트 토큰(Mupdate)을 암호화한다. 예를 들어, 컨텐츠 플랫폼(150)은 애플리케이션의 공개키, 예를 들어, PubKeyEnc(Mupdate, application_public_key)를 사용하여 업데이트 토큰(Mupdate)을 암호화할 수 있다.
일부 구현에서, 컨텐츠 플랫폼(150)은 이벤트 데이터 또는 업데이트 요청을 프로파일 업데이트 토큰(Mupdate)의 형태로 인코딩하지 않고 이벤트 데이터를 애플리케이션(112)으로 전송할 수 있다. 예를 들어, 애플리케이션(112) 내에서 실행되는 컨텐츠 플랫폼(150)에서 발신된 스크립트는 스크립트 API를 통해 이벤트 데이터 및 업데이트 요청을 애플리케이션(112)으로 직접 전송할 수 있으며, 여기서 애플리케이션(112)은 W3C(World Wide Web Consortium) 출처 기반 보안 모델 및/또는 HTTPS (Hypertext Transfer Protocol Secure)에 의존하여 위조 또는 누출, 또는 메시지 가로채기 공격으로부터 이벤트 데이터 및 업데이트 요청을 보호한다.
애플리케이션(112)은 이벤트에 대한 데이터를 저장한다(304). 이벤트 데이터가 암호화되면, 애플리케이션(112)은 이벤트 데이터를 암호화하는데 사용되는 공개키에 대응하는 개인키를 사용하여 이벤트 데이터를 해독할 수 있다. 이벤트 데이터가 업데이트 토큰(Mupdate)의 형태로 전송되면, 애플리케이션(112)은 이벤트 데이터를 저장하기 전에 업데이트 토큰(Mupdate)을 검증할 수 있다. 애플리케이션(112)은 (i) 디지털 서명을 생성하는데 사용되었던 컨텐츠 플랫폼(150)의 개인키에 대응하는 컨텐츠 플랫폼(150)의 공개키를 사용하여 디지털 서명을 검증하고 (ii) 토큰 생성 타임스탬프가 오래되지 않았는지, 예를 들어 타임스탬프가 나타내는 시간이 검증이 진행되는 현재 시간의 임계값 내에 있는지 확인함으로써 업데이트 토큰(Mupdate)을 검증할 수 있다. 업데이트 토큰(Mupdate)이 유효하면, 애플리케이션(112)은 예를 들어 n차원 프로파일 레코드를 저장함으로써 이벤트 데이터를 저장할 수 있다. 임의의 검증이 실패하면, 애플리케이션(112)은 예를 들어 이벤트 데이터를 저장하지 않음으로써 업데이트 요청을 무시할 수 있다.
각각의 중심 모델에 대해, 예를 들어 각각의 고유한 모델 식별자에 대해, 애플리케이션(112)은 해당 모델에 대한 이벤트 데이터를 저장할 수 있다. 예를 들어, 애플리케이션(112)은 각각의 고유 모델 식별자에 대해 n차원 특징 벡터의 세트(예를 들어, 업데이트 토큰의 프로파일 레코드)를 포함하는 데이터 구조 및 각각의 특징 벡터에 대해 만료 시간을 유지할 수 있다. 모델 식별자에 대한 데이터 구조의 예는 아래 [테이블 2]에 도시된다.
[테이블 2]
특징 벡터 만료
n차원 특징 벡터 만료 시간
... ...
유효한 업데이트 토큰(Mupdate)을 수신하면, 애플리케이션(112)은 업데이트 토큰(Mupdate)의 특징 벡터 및 만료 시간을 데이터 구조에 추가함으로써 업데이트 토큰(Mupdate)에 포함된 모델 식별자에 대한 데이터 구조를 업데이트할 수 있다. 주기적으로, 애플리케이션(112)은 저장 크기를 줄이기 위해 데이터 구조로부터 만료된 특징 벡터를 제거할 수 있다. [테이블 2]의 만료 시간은 [테이블 1]의 업데이트 토큰(Mupdate)의 만료 시간과 동일하다.
애플리케이션(112)은 사용자 프로파일을 생성할지 여부를 결정한다(306). 예를 들어, 애플리케이션(112)은 컨텐츠 플랫폼(150)으로부터의 요청에 응답하여 특정 중심 모델에 대한 사용자 프로파일을 생성할 수 있다. 요청은 사용자 프로파일을 생성하고 사용자 프로파일을 MPC 클러스터(130)에 업로드하는 것일 수 있다. 사용자 프로파일을 생성하고 업로드하기 위한 요청의 보안을 보장하기 위해, 컨텐츠 플랫폼(150)은 업로드 토큰(Mupload)를 애플리케이션(112)으로 전송할 수 있다.
업로드 토큰(Mupload)은 업데이트 토큰(Mupdate)와 유사한 구조를 가질 수 있지만 상이한 동작(예를 들어, "사용자 프로파일 누적" 대신 "서버 업데이트")이 있다. 업로드 토큰(Mupload)에는 동작 지연을 위한 추가 아이템도 포함될 수 있다. 동작 지연은 애플리케이션(112)이 더 많은 이벤트 데이터, 예를 들어, 더 많은 특징 벡터를 누적하는 동안 애플리케이션(112)에게 사용자 프로파일의 비밀 셰어의 계산 및 업로드를 지연하도록 지시할 수 있다. 이를 통해 중심 모델은 일부 중요한 이벤트(예를 들어, 사용자 그룹 가입) 직전과 직후에 사용자 이벤트 데이터를 캡처할 수 있다. 동작 지연은 지연 시간을 지정할 수 있다. 이 예에서, 디지털 서명은 [테이블 1]의 다른 7개 아이템과 컨텐츠 플랫폼의 개인키를 이용한 동작 지연에 기초하여 생성될 수 있다. 컨텐츠 플랫폼(150)은 전송 동안 업로드 토큰(Mupload)을 보호하기 위해 애플리케이션의 공개키를 사용하여 업데이트 토큰(Mupdate), 예를 들어 PubKeyEnc(Mupload, application_public_key)와 유사한 방식으로 업로드 토큰(Mupload)을 암호화할 수 있다.
애플리케이션(112)은 업로드 토큰(Mupload)을 수신하고, 암호화된 경우 업로드 토큰(Mupload)을 해독하고, 업로드 토큰(Mupload)을 검증할 수 있다. 이 검증은 업데이트 토큰(Mupdate)가 검증되는 방식과 유사할 수 있다. 애플리케이션(112)은 (i) 디지털 서명을 생성하는데 사용된 컨텐츠 플랫폼(150)의 개인키에 대응하는 컨텐츠 플랫폼(150)의 공개키를 사용하여 디지털 서명을 검증하고 (ii) 토큰 생성 타임스탬프가 오래되지 않았는지, 예를 들어 타임스탬프에 의해 표시된 시간아 검증이 진행되는 현재 시간의 임계값 내에 있는지 확인함으로써 업로드 토큰(Mupload)를 검증할 수 있다. 업로드 토큰(Mupload)가 유효한 경우, 애플리케이션(112)은 사용자 프로파일을 생성할 수 있다. 임의의 검증이 실패하면, 애플리케이션(112)은 예를 들어 사용자 프로파일을 생성하지 않음으로써 업로드 요청을 무시할 수 있다.
일부 구현에서, 컨텐츠 플랫폼(150)은 애플리케이션(112)에게 프로파일 업로드 토큰(Mupload)의 형태로 업로드 요청을 인코딩하지 않고 사용자 프로파일을 업로드하도록 요청할 수 있다. 예를 들어, 애플리케이션(112) 내부에서 실행되는 컨텐츠 플랫폼(150)에서 발신된(originated) 스크립트는 스크립트 API를 통해 업로드 요청을 애플리케이션(112)으로 직접 전송할 수 있으며, 여기서 애플리케이션(112)은 위조 또는 누출, 또는 메시지 가로채기 공격으로부터 업로드 요청을 보호하기 위해 W3C 출처 기반 보안 모델 및/또는 HTTPS에 의존한다.
사용자 프로파일을 생성하지 않기로 결정된 경우, 프로세스(302)는 동작(302)으로 돌아가 컨텐츠 플랫폼(150)으로부터 추가 이벤트 데이터를 기다릴 수 있다. 사용자 프로파일을 생성하기로 결정된 경우, 애플리케이션(112)은 사용자 프로파일을 생성한다(308).
애플리케이션(112)은 저장된 이벤트 데이터, 예를 들어, [테이블 2]에 도시된 데이터 구조에 저장된 데이터에 기초하여 사용자 프로파일을 생성할 수 있다. 애플리케이션(112)은 요청에 포함된 모델 식별자, 예를 들어 업로드 토큰(Mupload)의 아이템 1의 컨텐츠 플랫폼 eTLD+1 도메인 및 아이템 2의 모델 식별자에 기초하여 적절한 데이터 구조에 액세스할 수 있다.
애플리케이션(112)은 아직 만료되지 않은 학습(study) 기간의 데이터 구조에서 n차원 특징 벡터를 집계함으로써 사용자 프로파일을 계산할 수 있다. 예를 들어, 사용자 프로파일은 아직 만료되지 않은 학습 기간의 데이터 구조에 있는 n차원 특징 벡터의 평균일 수 있다. 결과는 프로파일 공간에서 사용자를 나타내는 n차원 특징 벡터이다. 선택적으로, 애플리케이션(112)은 예를 들어 L2 정규화를 사용하여 n차원 특징 벡터를 단위 길이로 정규화할 수 있다. 컨텐츠 플랫폼(150)은 선택적 학습 기간을 지정할 수 있다.
일부 구현에서, 감쇠율(decay rates)이 사용자 프로파일을 계산하는데 사용될 수 있다. MPC 클러스터(130)를 사용하여 중심 모델을 트레이닝하는 많은 컨텐츠 플랫폼(150)이 있을 수 있고 각각의 컨텐츠 플랫폼(150)은 다수의 중심 모델을 가질 수 있기 때문에, 사용자 특징 벡터 데이터를 저장하는 것은 상당한 데이터 저장 요구 사항을 초래할 수 있다. 감쇠 기술을 사용하면 기계 학습 모델을 트레이닝하기 위한 사용자 프로파일을 생성할 목적으로 각 클라이언트 디바이스(110)에 저장되는 데이터의 양을 실질적으로 줄일 수 있다.
주어진 중심 모델에 대해, k개의 특징 벡터 {F1, F2, … Fk}가 있고, 그 각각은 n차원 벡터 및 대응하는 연령(record_age_in_secondsi)이라고 가정한다. 애플리케이션(112)은 아래의 관계식 1을 사용하여 사용자 프로파일을 계산할 수 있다.
관계식 1:
Figure pct00003
이 관계식에서, 파라미터(record_age_in_secondsi)는 프로파일 레코드가 클라이언트 디바이스(110)에 저장된 시간(초)이고 파리미터(decay_rate_in_seconds)는 (예를 들어, 업데이트 토큰(Mupdate)의 아이템 6에서 수신된) 초단위의 프로파일 레코드의 감소율(초)이다. 이러한 방식으로, 더 최근의 특징 벡터가 더 많은 가중치를 가진다. 이것은 또한 애플리케이션(112)이 특징 벡터를 저장하는 것을 피하고 일정한 저장을 갖는 프로파일 레코드만을 저장할 수 있게 한다. 애플리케이션(112)은 각 모델 식별자에 대한 다수의 개별 특징 벡터가 아니라 각 모델 식별자에 대한 n차원 벡터(P) 및 타임스탬프(user_profile_time)만 저장하면 된다.
이 관계식에서, 파라미터(record_age_in_secondsi)는 프로파일 레코드가 클라이언트 디바이스(110)에 저장된 시간(초)이고 파라미터(Decay_rate_in_seconds)는 (예를 들어, 업데이트 토큰(Mupdate)의 아이템 6에서 수신된) 초 단위의 프로파일 레코드의 감소율이다. 이러한 방식으로, 더 최근의 특징 벡터가 더 많은 가중치를 가진다. 이것은 또한 애플리케이션(112)이 특징 벡터를 저장하는 것을 피하고 일정한 저장을 갖는 프로파일 레코드만을 저장할 수 있게 한다. 애플리케이션(112)은 각 모델 식별자에 대한 다수의 개별 특징 벡터가 아니라 각 모델 식별자에 대한 n차원 벡터(P) 및 타임스탬프(user_profile_time)만 저장하면 된다.
n차원 벡터 사용자 프로파일(P)과 타임스탬프를 초기화하기 위해, 애플리케이션은 벡터(P)를 각 차원의 값이 0인 n 차원의 벡터로 설정하고 user_profile_time을 에포크(epoch)로 설정할 수 있다. 언제든지 새로운 특징 벡터(Fx)로 사용자 프로파일(P)을 업데이트하기 위해, 애플리케이션(112)은 아래 관계식 2를 사용할 수 있다.
관계식 2:
Figure pct00004
애플리케이션(112)은 또한 관계식 2로 사용자 프로파일을 업데이트할 때 사용자 프로파일 시간을 현재 시간(current_time)으로 업데이트할 수 있다. 애플리케이션(112)이 위의 감쇠율 알고리즘으로 사용자 프로파일을 계산하는 경우 동작(304)이 생략된다는 점에 유의한다.
애플리케이션(112)은 사용자 프로파일의 비밀 셰어를 생성한다(310). 애플리케이션(112)은 의사 랜덤 함수를 사용하여 사용자 프로파일(Pcurrent)(예를 들어, n차원 벡터(Pcurrent))를 비밀 셰어로 분할할 수 있다. 즉, 애플리케이션(112)은 의사 랜덤 함수 PRF(Pi)를 사용하여 사용자 프로파일(Pcurrent)의 2개의 비밀 셰어{[Pcurrent,1],[Pcurrent,2]}를 생성할 수 있다. 정확한 분할은 애플리케이션(112)에서 사용하는 비밀 공유 알고리즘 및 암호화 라이브러리에 따라 달라질 수 있다. 일부 구현에서 애플리케이션은 새미르(Shamir)의 비밀 공유 체계를 사용한다.
일부 구현에서, 애플리케이션은 가산형(additive) 비밀 공유 방식을 사용, 즉 애플리케이션(112)은 랜덤(또는 의사 랜덤) n-차원 벡터 넌스(nonce)를 생성한다. 이 예에서 애플리케이션은 Pcurrent + nonce인 제1 비밀 셰어와 Pcurrent - nonce인 제2 비밀 셰어를 생성할 수 있다. 그런 다음, 애플리케이션(112)은 n차원 벡터 넌스를 삭제할 수 있다.
악성 애플리케이션(112)이 사용자 프로파일의 비밀 셰어를 업로드하기 위해 업로드 API를 남용하는 것을 방지하기 위해, MPC 클러스터(130)는 신뢰 토큰 발행자가 비밀 셰어에 서명하도록 요구할 수 있다. 사용자 그룹 식별자(Li)로 표시되는 m개의 사용자 그룹 각각과 MPC 클러스터(130)의 컴퓨팅 시스템(MPC1 및 MPC2) 각각에 대해, 애플리케이션(112)은 서명된 상환 레코드(Signed Redemption Record : SRR)을 획득하기 위해 신뢰 토큰 발행자와 함께 신뢰 토큰 상환 프로세스를 개시할 수 있다. m개의 사용자 그룹은 (i) 업로드 토큰(Mupload)를 전송한 컨텐츠 플랫폼(150)(또는 디지털 컴포넌트 제공자(160))에 의해 관리되고 (ii) 사용자를 구성원으로 포함하는 사용자 그룹, 예를 들어 애플리케이션(112)에 의해 유지되는 사용자 그룹 목록에서 식별된 사용자 그룹일 수 있다.
신뢰 토큰 상환 프로세스에서, 애플리케이션(112)은 애플리케이션(112) 및/또는 신뢰되는 것으로 간주되는 클라이언트 디바이스(110)에 기초하여 애플리케이션(112)에 이전에 발행된 신뢰 토큰을 상환할 수 있다. 여기에는 신뢰 토큰을 상환하라는 요청과 함께 신뢰 토큰 및 정보(예를 들어, 컴퓨팅 시스템(MPC1 또는 MPC2)의 바인딩 및 eTLD+1)를 신뢰 토큰 발행자에게 전송하는 것이 포함될 수 있다. 신뢰 토큰 발행자는 애플리케이션(112)에 SRR을 제공함으로써 응답할 수 있다. 애플리케이션(112)은 각 SRR에 대한 신뢰 토큰을 상환할 수 있다. SRR의 예시적인 포맷은 아래 [테이블 3]과 같다.
[테이블 3]
아이템 번호 컨텐츠 설명
1.1 바인딩 모델 식별자, 사용자 프로파일의 비밀 셰어, 사용자 그룹(Li) 및 application_public_key를 SRR에 바인딩한다.
1.2 게시자 출처 컴퓨팅 시스템(MPC1MPC1 또는 MPC2)의 eTLD+1 도메인일 수 있다.
1.3 서명 타임스탬프 MPC 클러스터(130)가 부실 요청 또는 잠재적인 재생 공격을 검출하는 것을 돕기 위한 고해상도 타임스탬프(예를 들어, 밀리초 단위).
1.4 신뢰 토큰 발행자 ID 신뢰 토큰 발행자의 eTLD+1 도메인
1.5 디지털 서명 로 신뢰 토큰 발행자의 공개키로 검증 가능한 나머지 메시지에 대한 신뢰 토큰 발행자의 서명.
애플리케이션(112)은 바인딩으로서, 모델 식별자의 메시지 인증 코드(예를 들어, 해시 기반 메시지 인증 코드(HMAC)), SRR이 생성된 사용자 프로파일의 비밀 셰어, 사용자 그룹(Li), 및 애플리케이션(112)의 공개키(application_public_key)를 계산할 수 있다. 예를 들어, 바인딩은 HMAC(model_id, share, Li, application_public_key)로 나타낼 수 있다. 주어진 사용자 프로파일 및 주어진 중심 모델에 대해, 애플리케이션(112)은 이 코드를 두 번 계산할 수 있는데, 사용자 프로파일(Pcurrent)의 각 비밀 셰어에 대해 한 번, 따라서 각 컴퓨팅 시스템(MPC1 및 MPC2)에 대해 하나씩 계산할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)에 대한 SRR의 파라미터 "셰어"는 [Pcurrent,1]일 수 있고 컴퓨팅 시스템(MPC2)에 대한 SRR의 파라미터 "셰어"는 [Pcurrent,2]일 수 있다.
신뢰 토큰 발행자는 타임스탬프 및 디지털 서명을 생성할 수 있다. 신뢰 토큰 발행자는 신뢰 토큰 발행자의 개인키를 사용하여 디지털 서명을 생성할 수 있다. 이를 통해 SRR의 수신자는 개인키에 대응하는 공개키를 사용하여 서명을 확인할 수 있다.
사용자 그룹 식별자(Li)로 표시되는 m개의 사용자 그룹 각각 및 MPC 클러스터(130)의 컴퓨팅 시스템(MPC1 및 MPC2) 각각에 대해, 이어서 애플리케이션(112)은 MPC 클러스터(130)로의 전송을 위해 사용자 프로파일 업데이트 토큰(Mprofileupdate)을 생성할 수 있다. 사용자 프로파일 업데이트 토큰(Mprofileupdate)의 형식 예는 아래 [테이블 4]에 도시되어 있다.
[테이블 4]
아이템 번호 컨텐츠 설명
1 모델 ID(model_id) 중심 모델의 모델 식별자. 이는 HMAC(owner_domain, owner_domain_id)로 계산할 수 있다. 소유자 도메인은 중심 모델 소유자의 eTLD+1일 수 있으며 소유자 도메인 ID는 소유자가 모델에 주어진 모델의 식별자일 수 있다.
2 사용자 프로파일의 비밀 셰어 예를 들어, MPC 클러스터(130)가 2개의 컴퓨팅 시스템을 포함하는 경우의 제1 비밀 셰어 또는 제2 비밀 셰어.
3 사용자 그룹 식별자(Li) 예를 들어, HMAC(owner_domain, owner_domain_list_id)로 계산된다. 소유자 도메인 목록 식별자는 소유자가 사용자 그룹에 부여한 사용자 그룹 식별자일 수 있다.
4 애플리케이션 공개키(application_public_key) 예를 들어, 애플리케이션에 의해 생성된 현재 사용자 프로파일 업데이트 요청 전용의 애플리케이션의 공개키
5 토큰 생성 타임스탬프 수신자가 오래된 요청이나 잠재적인 재생 공격을 감지하는데 도움이 되는 고해상도 타임스탬프(예를 들어, 밀리초).
6 SRR 사용자 프로파일 업데이트 요청에 대한 서명된 상환 요청.
7 디지털 서명 아이템 4에서 애플리케이션 발행자의 공개키로 검증 가능한 나머지 메시지에 대한 애플리케이션의 서명
애플리케이션(112)은 타임스탬프 및 디지털 서명을 생성할 수 있다. 애플리케이션(112)은 아이템 4의 공개키에 대응하는 애플리케이션(112)의 개인키를 사용하여 디지털 서명을 생성할 수 있다. 이를 통해 사용자 프로파일 업데이트 토큰(Mprofileupdate)의 수신자는 개인키에 해당하는 공개키를 사용하여 서명을 검증할 수 있다.
손상된 애플리케이션(112)은 사용자 프로파일 업데이트 토큰(Mprofileupdate)을 사용하여 컨텐츠 플랫폼(150)의 요청에 따라 동작하는 대신 자체적으로 사용자 프로파일 업데이트 동작을 개시할 수 있다. MPC 클러스터(130)가 이러한 상황을 검출할 수 있도록 하기 위해, 애플리케이션(112)은 컨텐츠 플랫폼(150)으로부터 수신된 업데이트 토큰(Mupdate)을 사용자 프로파일 업데이트 토큰(Mprofileupdate)에 선택적으로 포함할 수 있다.
애플리케이션(112)은 사용자의 사용자 프로파일을 사용하여 MPC 클러스터(130)에서 모델(들)에 대한 사용자 프로파일 업데이트하라는 요청을 전송한다(312). 각 요청에는 사용자 프로파일의 비밀 셰어가 포함될 수 있다. 예를 들어, 애플리케이션(112)은 사용자 프로파일(Pcurrent)의 제1 비밀 셰어[Pcurrent,1]를 갖는 사용자 프로파일 업데이트 토큰(Mprofileupdate)을 컴퓨팅 시스템(MPC1)으로 전송할 수 있고 사용자 프로파일(Pcurrent)의 제2 비밀 셰어[Pcurrent,2]를 갖는 사용자 프로파일 업데이트 토큰(Mprofileupdate)을 컴퓨팅 시스템(MPC2)으로 전송한다. 애플리케이션(112)은 사용자 프로파일 업데이트 토큰이 생성된 각 모델 식별자에 대해 이 동작을 수행할 수 있다.
이 프로세스에서, MPC 클러스터(130)의 2개의 컴퓨팅 시스템(MPC1 및 MPC2) 각각에 대해, 애플리케이션(112)은 m개의 사용자 그룹 각각에 대해 하나씩 사용자 프로파일을 업데이트하기 위한 m개의 요청을 전송한다. MPC 클러스터(130)의 손상된 컴퓨팅 시스템이 이러한 m개의 요청을 상관시키는 것이 가능할 수 있다. 이러한 공격은 손상된 컴퓨팅 시스템이 애플리케이션(112)(및 그의 사용자)이 다수의 사용자 그룹 및 이러한 그룹의 식별자에 속할 수 있다는 것을 알게 할 수 있다.
이러한 위험을 완화하기 위해, MPC 클러스터(130)가 활용될 수 있다. 비밀 셰어를 컴퓨팅 시스템(MPC1)에 업로드하기 위해, 애플리케이션(112)은 컴퓨팅 시스템(MPC1)의 공개키로 개별적으로 암호화된 컴퓨팅 시스템(MPC1)을 위한 사용자 프로파일의 제1 비밀 셰어([Pcurrent, 1])를 갖는 모든 사용자 프로파일 업데이트 토큰을 사용하여 컴퓨팅 시스템(MPC2)으로 단일 요청을 전송할 수 있다. 이 단일 요청에는 PubKeyEnc(Mprofileupdate_1, MPC1), PubKeyEnc(Mprofileupdate_2, MPC1),...PubKeyEnc(Mprofileupdate_m, MPC1) 형식의 암호화된 결과 세트가 포함될 수 있는데, 여기서 PubKeyEnc는 확률적 비대칭 암호화 알고리즘을 나타내고, MPC1은 컴퓨팅 시스템(MPC1)의 비대칭 공개키를 나타낸다.
PubKeyEnc의 확률적 특성(nature)은 시맨틱(의미론적) 보안을 제공한다. 시맨틱 보안 방식은 암호화된 결과로부터 무시할 수 있는 정보만 추출할 수 있는 방식이다. 컴퓨팅 시스템(MPC1)과 결탁하지 않고, 컴퓨팅 시스템(MPC2)은 암호화된 토큰 목록에서 임의의 정보를 추론할 수 없다. 컴퓨팅 시스템(MPC2)은 토큰 목록을 분할하고 사용자 프로파일 업데이트 토큰(Mprofileupdate)당 하나의 요청으로 컴퓨팅 시스템(MPC1)에 m개의 요청을 전송할 수 있다. 컴퓨팅 시스템(MPC2)은 연속적인 요청 사이에 랜덤 또는 의사 랜덤 지연을 사용할 수 있다. 다른 예에서, 컴퓨팅 시스템(MPC2)은 동일한 애플리케이션(112)으로부터의 요청을 상관시키는 것을 방지하기 위해 다수의 클라이언트 디바이스(110) 상에서 실행되는 다수의 애플리케이션(112)으로부터의 다수의 요청을 컴퓨팅 시스템(MPC1)에 일괄 업로드할 수 있다.
애플리케이션(112)은 유사한 기술을 사용하여 컴퓨팅 시스템(MPC2)에 대한 제2 비밀 셰어를 업로드할 수 있다. 즉, 애플리케이션(112)은 컴퓨팅 시스템(MPC2)의 공개키로 개별적으로 암호화된 컴퓨팅 시스템(MPC2)을 위한 사용자 프로파일의 제2 비밀 셰어[Pcurrent,2]를 갖는 모든 사용자 프로파일 업데이트 토큰을 사용하여 컴퓨팅 시스템(MPC1)에 단일 요청을 전송할 수 있다. 이 단일 요청에는 PubKeyEnc(Mprofileupdate_1, MPC2), PubKeyEnc(Mprofileupdate_2, MPC2),... PubKeyEnc(Mprofileupdate_m, MPC2) 형식의 암호화 결과 세트가 포함될 수 있으며, 여기서 MPC2는 컴퓨팅 시스템(MPC2)의 비대칭 공개키를 나타낸다. 컴퓨팅 시스템(MPC1)은 토큰 목록을 분할하여 예를 들어, 위에서 설명한 지연 또는 일괄 업로드를 사용하여 사용자 프로파일 업데이트 토큰(Mprofileupdate)당 하나의 요청으로 컴퓨팅 시스템(MPC2)으로 m개의 요청을 전송할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)에 의해 수신될 수 있는 많은 수의 요청이 주어지면, 컴퓨팅 시스템(MPC1 또는 MPC2)이 이러한 기술을 사용하여 개별 클라이언트 디바이스(110)와 토큰을 상관시키는 것이 불가능하지는 않더라도 어려울 것이다.
컴퓨팅 시스템(MPC1 및 MPC2)은 사용자 프로파일을 업데이트하기 위해 수신된 각각의 요청을 검증할 수 있다. 암호화된 결과 PubKeyEnc(Mprofileupdate_i, MPCj)를 갖는 요청을 수신하는 경우(여기서 j는 컴퓨팅 시스템에 따라 1 또는 2임), 컴퓨팅 시스템(MPCj)은 그 암호화된 결과를 해독하여 일반 텍스트의 사용자 프로파일 업데이트 토큰(Mprofileupdate_i)을 복구한다. 컴퓨팅 시스템(MPCj)는 사용자 프로파일 업데이트 토큰(Mprofileupdate_i)을 확인한다. 이를 위해, 컴퓨팅 시스템(MPCj)은 SRR의 아이템 1.4에 있는 신뢰 토큰 발급자 도메인으로부터 페치된 공개키를 사용하여 SRR의 1.5 아이템(테이블 3 참조)에 있는 디지털 서명을 확인한다. 컴퓨팅 시스템(MPCj)은 또한 MPC 클러스터(130)로 Mprofileupdate_i를 전송한 애플리케이션(112)의 공개키를 사용하여 사용자 프로파일 업데이트 토큰(Mprofileupdate)_i(테이블 4 참조)의 아이템 7에 있는 디지털 서명을 확인할 수 있다.
컴퓨팅 시스템(MPCj)은 또한 예를 들어, 타임스탬프가 검증이 수행되고 있는 현재 시간의 임계 지속기간 내에 있음을 보장함으로써, SRR의 아이템 1.3에 있는 서명 타임스탬프를 진부함(staleness, 오래됨)에 대해 검증(확인)할 수 있다. 컴퓨팅 시스템(MPCj)은 또한 SRR의 아이템 1.2에 있는 게시자 출처가 현재 컴퓨팅 시스템(MPCj)의 ID와 매칭하는지 검증할 수 있다. 컴퓨팅 시스템(MPCj)은 또한 SRR의 아이쳄 1.1에 있는 바인딩 값이 사용자 프로파일 업데이트 토큰(Mprofileupdate_i)의 아이템 1-4로부터 계산된 HMAC(model_id, share, Li, application_public_key)와 매칭하는지 검증할 수 있다. 컴퓨팅 시스템(MPC)은 또한 토큰 생성 타임스탬프가 검증이 수행되는 현재 시간의 임계 지속 기간내에 있는지 확인함으로써 사용자 프로파일 업데이트 토큰(Mprofileupdate_i)의 아이템 5에 있는 토큰 생성 타임스탬프가 오래되지 않았는지 검증할 수 있다. 컴퓨팅 시스템(MPCj)은 또한 예를 들어 동일한 토큰 생성 타임스탬프를 갖는 다수의 사용자 프로파일 업데이트 토큰에 기초하여 잠재적인 재생 공격을 탐지하기 위해 토큰 생성 타임스탬프를 사용할 수 있다. 이러한 검증 중 하나라도 실패하면, 컴퓨팅 시스템(MPCj)은 요청을 무시할 수 있다.
각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 각각의 중심 모델에 대한 데이터를 포함하는 테이블(또는 다른 적절한 데이터 구조)을 유지할 수 있다. 예를 들어, 테이블은 아래 [테이블 5]와 같은 형태일 수 있다.
[테이블 5]
모델 ID 사용자 그룹 ID 모든 셰어의 합 애플리케이션의 수
model_id Li sum_of_shares number_of_applications
... ... ... ...
중심 모델에 대한 행에는 모델 식별자(model_id), 모델에 포함된 사용자 그룹에 대한 사용자 그룹 식별자(Li), 중심 모델에 대해 수신된 사용자 프로파일의 모든 셰어의 합, 및 중심 모델에 대한 사용자 프로파일의 비밀 셰어를 제출했으며 해당 비밀 셰어가 중심 모델에 대한 모든 셰어들의 합에 포함된 고유 애플리케이션(112)의 수(예를 들어, 고유 클라이언트 디바이스의 수)가 포함된다. 모든 셰어의 합은 사용자 프로파일의 n차원 벡터에 해당하는 n차원 벡터이다.
컴퓨팅 시스템(MPCj)이 이전에 수신한 적이 없는 모델/사용자 그룹 쌍 {model_id, Li}이 수신되는 경우, 컴퓨팅 시스템(MPCj)은 중심 모델에 대한 모든 셰어의 합을 0 벡터로 초기화하고 애플리케이션의 수를 0으로 초기화할 수 있다. 특정 모델/사용자 그룹 쌍을 포함하는 중심 모델에 대한 사용자 프로파일을 업데이트하기 위한 유효 요청을 처리하기 위해, 컴퓨팅 시스템(MPCj)은 테이블서 중심 모델/사용자 그룹 쌍에 대한 행을 찾아서 중심 모델/사용자 그룹 쌍에 대한 모든 셰어의 합 및 애플리케이션 수를 업데이트할 수 있다. 예를 들어, 컴퓨팅 시스템(MPCj)는 사용자 프로파일의 수신된 비밀 셰어를 중심 모델/사용자 그룹 쌍에 대한 모든 셰어의 합에 추가하고 애플리케이션의 수를 1만큼 증가시킬 수 있다.
중심 모델을 생성 및 사용하기 위한 예시적인 프로세스
도 4는 중심 모델을 생성하기 위한 예시적인 프로세스(400)를 도시하는 흐름도이다. 프로세스(400)의 동작들은 예를 들어, 도 1의 MPC 클러스터(130)에 의해 구현될 수 있다. 프로세스(400)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령으로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(400)의 동작들을 수행하게 할 수 있다. 프로세스(400)가 다수의 중심 모델을 생성하는 관점에서 설명되지만, 프로세스(400)는 또한 단일 사용자 그룹에 대한 단일 중심 모델을 생성하는데 사용될 수 있다. 전술한 바와 같이, 중심을 계산하는 프로세스는 개별 사용자 프로파일이 아닌 사용자 그룹을 기반으로 하는 k-NN 또는 기타 기계 학습 모델의 전처리 단계에서도 사용될 수 있다.
각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 사용자 프로파일 데이터의 테이블을 획득한다(402). 예를 들어, 테이블은 위의 [테이블 5]와 같은 형태일 수 있다. 컴퓨팅 시스템(MPC1)은 각각의 모델 식별자 및 사용자 그룹 쌍에 대해, 모델 식별자 및 사용자 그룹 ID에 의해 중심 모델 식별자에 포함된 사용자 그룹에 대한 애플리케이션(112)으로부터 수신된 제1 비밀 셰어들([Pcurrent,1])의 합을 포함하는 테이블을 획득할 수 있다. 마찬가지로, 컴퓨팅 시스템(MPC2)은 각각의 모델 식별자 및 사용자 그룹 쌍에 대해, 모델 식별자 및 사용자 그룹 ID에 의해 중심 모델 식별자에 포함된 사용자 그룹에 대한 애플리케이션(112)으로부터 수신된 제2 비밀 셰어들([Pcurrent, 2])의 합을 포함하는 테이블을 획득할 수 있다.
각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 각각의 모델 식별자에 대해 사용자 그룹 크기 임계값을 적용(enforce)한다(404). 예를 들어, 각 컴퓨팅 시스템(MPC1 및 MPC2)은 자신의 테이블의 각 행에 크기 임계값을 적용할 수 있다. 사용자 그룹 크기 임계값을 적용하기 위해, 각 컴퓨팅 시스템(MPC1 및 MPC2)은 모델 식별자에 대한 애플리케이션 수가 미리 정의된 크기 임계값을 초과하는지 여부를 결정할 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 크기 임계값을 충족하는 테이블의 행(예를 들어, 각 모델 식별자/사용자 그룹 ID 쌍에 대한 정보)을 교환한다(406). 예를 들어, 컴퓨팅 시스템(MPC1)은 컴퓨팅 시스템(MPC2)으로, 모델 식별자, 사용자 그룹 식별자, 및 애플리케이션 수가 크기 임계값을 초과하는 각 행의 애플리케이션 수를 전송할 수 있다. 또한, 컴퓨팅 시스템(MPC1)은 컴퓨팅 시스템(MPC2)으로, 이러한 행의 각각에 대한 셰어 벡터의 합(sum_of_shares1)의 제2 절반(second half)을 전송할 수 있다. 아래에서 설명하는 수평 분할 전략에 기초하여 sum_of_shares1의 제2 절반만 전송된다.
유사하게, 컴퓨팅 시스템(MPC2)는 컴퓨팅 시스템(MPC1)으로, 모델 식별자, 사용자 그룹 식별자, 및 애플리케이션 수가 크기 임계값을 초과하는 각 행의 애플리케이션 수를 전송할 수 있다. 또한, 컴퓨팅 시스템(MPC2)는 컴퓨팅 시스템(MPC1)으로, 이러한 행의 각각에 대한 셰어 벡터의 합(sum_of_shares2)의 제1 절반을 전송할 수 있다.
컴퓨팅 시스템(MPC1)은 애플리케이션 수가 크기 임계값을 초과하는 테이블의 행을 컴퓨팅 시스템(MPC2)로부터 수신된 행과 매칭(일치)시킨다. 예를 들어, 컴퓨팅 시스템(MPC1)은 모델 식별자 및/또는 행의 사용자 그룹 식별자를 사용하여 동일한 모델 및 사용자 그룹에 대한 대응하는 행을 매칭시킬 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)는 애플리케이션 수가 크기 임계값을 초과하는 테이블의 행을 컴퓨팅 시스템(MPC1)에서 수신된 행과 매칭시킨다. 예를 들어, 컴퓨팅 시스템(MPC2)는 모델 식별자 및/또는 행의 사용자 그룹 식별자를 사용하여 동일한 모델 및 사용자 그룹에 대한 대응하는 행을 매칭시킬 수 있다. 컴퓨팅 시스템(MPC1)에서 이 크기 임계값 적용 및 교차 통지의 예시적인 결과가 아래 [테이블 6]에 도시되어 있다.
[테이블 6]
모델 ID 사용자 그룹 ID MPC1의 모든 셰어의 합 MPC1의 애플리케이션의 수 MPC2의 모든 셰어의 합 MPC의 애플리케이션의 수
model_id Li sum_of_shares1 num_of_applications1 sum_of_shares2의 제1 절반 num_of_applications2
... ... ... ... ... ...
유사하게, 컴퓨팅 시스템(MPC2)에서 테이블 형식의 크기 임계값 적용 및 교차 통지의 예시적인 결과가 아래 [테이블 7]에 도시되어 있다.
[테이블 7]
모델 ID 사용자 그룹 ID MPC2의 모든 셰어의 합 MPC2의 애플리케이션의 수 MPC1의 모든 셰어의 합 MPC1의 애플리케이션의 수
model_id Li sum_of_shares2 num_of_applications2 sum_of_shares1의 제2 절반 num_of_applications1
... ... ... ... ... ...
각 행에 대해, 이상적인 상황에서, "MPC1의 애플리케이션 수" 및 "MPC2의 애플리케이션 수"의 값은 주어진 모드 식별자에 대해 둘 다 있는 경우 동일해야 한다. 처리 지연으로 인해 두 값에 약간의 차이가 있을 수 있다. 두 값이 모두 있고 두 값이 크게 달라지거나 값 중 하나가 크기 임계값을 초과하지 않는 경우, 크기 임계값을 초과하지 않는 값을 제공한 컴퓨팅 시스템이 손상될 수 있다. "MPC1의 애플리케이션 수" 및 "MPC2의 애플리케이션 수" 값이 근접 임계값(예를 들어, 서로 임계값 차이 이내)을 충족하고 둘 다 크기 임계값을 초과하는 행들에 대해, 컴퓨팅 시스템은 그들의 중심을 계산할 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 중심 모델에 대한 중심을 계산한다(408). 컴퓨팅 시스템(MPC1)은 (예를 들어, 임계값 차이 이내의) 근접 및 크기 임계값을 충족하는 행들에서 사용자 그룹의 중심 벡터의 제1 절반을 계산할 수 있다. 컴퓨팅 시스템(MPC1)은 아래의 관계식 3을 사용하여 (예를 들어, 행에 대한) 모델 식별자 및 사용자 그룹의 중심을 계산할 수 있다.
관계식 3:
Figure pct00005
유사하게, 컴퓨팅 시스템(MPC2)는 아래의 관계식 4를 사용하여 (예를 들어, 행에 대한) 모델 식별자 및 사용자 그룹의 중심을 계산할 수 있다.
관계식 4:
Figure pct00006
사용자 그룹의 중심은 일반적으로 프라이버시에 민감하지 않으며 악성 애플리케이션(112), 컨텐츠 플랫폼(150), 또는 MPC 클러스터(130)의 컴퓨팅 시스템(MPC1 및 MPC2)이 사용자 프로파일을 훔치는 것을 허용하도록 쉽게 조작될 수 없다.
이 프로세스의 끝에서, 컴퓨팅 시스템(MPC1)은 목록 크기 임계값을 초과하는 모든 목록에 대한 중심의 제1 절반을 갖는다. 이 프로세스의 결과의 예가 아래 [테이블 8]에 테이블 형식으로 도시된다. 컴퓨팅 시스템(MPC2)은 각 모델 식별자 및 사용자 그룹 식별자에 대한 중심 벡터의 제2 절반에 대해 동일한 데이터를 가지고 있다. 사용자 그룹에 대한 트레이닝된 중심 모델은 이러한 사용자 그룹 각각에 대한 중심의 제1 절반을 포함하는 제1 중심 모델 및 각 사용자 그룹에 대한 중심의 제2 절반을 포함하는 제2 중심 모델을 포함할 수 있다.
[테이블 8]
모델 ID 사용자 그룹 ID 중심 목록 크기
model_id Li 중심 벡터의
제1 절반
Figure pct00007
... ... ... ...
도 5는 중심 모델을 사용하여 사용자 그룹에 사용자를 추가하기 위한 예시적인 프로세스(500)를 도시하는 수영 레인 다이어그램이다. 프로세스(500)의 동작들은 예를 들어, 도 1의 MPC 클러스터(130) 및 클라이언트 디바이스(110), 예를 들어 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112)에 의해 구현될 수 있다. 프로세스(500)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(500)의 동작들을 수행하게 할 수 있다.
클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)은 컨텐츠 플랫폼(150) 또는 디지털 컴포넌트 제공자(160)로부터의 요청에 응답하여 사용자에 대한 제안된 사용자 그룹에 대해 MPC 클러스터(130)에 질의할 수 있다. 예를 들어, 요청은 요청자에 대해 생성되고 요청자가 소유한 중심 모델을 사용하여 요청자가 소유한 사용자 그룹에 사용자를 추가해야 하는지 여부를 결정하기 위한 것일 수 있다. 예를 들어, 컨텐츠 플랫폼(150)은 많은 사용자 그룹을 관리할 수 있고 MPC 클러스터(130)는 사용자를 해당 사용자 그룹에 추가해야 하는지 여부를 결정하기 위해 사용자 그룹에 대해 하나 이상의 중심 모델을 트레이닝하고 사용할 수 있다.
애플리케이션이 중심 모델을 질의하도록 요청하기 위해, 요청자는 다운로드 그룹 토큰(Mdownload)을 클라이언트 디바이스(110)에 전송할 수 있다. 토큰(Mdownload)은 아래 [테이블 9]에 표시 및 설명된 다음 아이템을 가질 수 있다.
[테이블 9]
아이템 번호 컨텐츠 설명
1 컨텐츠 플랫폼의
eTLD+1 도메인
컨텐츠 플랫폼, 즉 모델의 소유자를 고유하게 식별한다(디지털 컴포넌트 제공자가 소유한 경우 디지털 컴포넌트 공급자와 유사함).
2 컨텐츠 플랫폼 모델 ID 컨텐츠 플랫폼에서 할당한 고유한 모델 식별자(소유자의 경우 디지털 컴포넌트 공급자와 동일함)
3 임계 거리(d) 사용자 프로파일과 페치된 사용자 그룹의 중심 사이의 최대 허용 거리
4 토큰 생성 타임스탬프 토큰이 생성된 시점을 나타내는 고해상도 타임스탬프(예를 들어, 밀리초)
5 동작 사용자 그룹 페치
6 디지털 서명 컨텐츠 플랫폼의 개인키를 사용하여 나머지 토큰(예를 들어, 아이템 1-5)에 대한 컨텐츠 플랫폼의 디지털 서명
일부 구현에서, 컨텐츠 플랫폼(150)은 애플리케이션(112)의 공개키를 사용하여 다운로드 그룹 토큰(Mdownload)을 암호화할 수 있다. 그런 다음 컨텐츠 플랫폼(150)은 자체 또는 SSP의 스크립트를 통해 사용자 그룹 식별자를 페치하기 위해 애플리케이션의 API를 호출할 수 있다. 애플리케이션(112)은 사용자 프로파일 업데이트 토큰(Mprofileupdate)를 해독하고 검증하는 것과 동일한 방식으로 다운로드 그룹 토큰(Mdownload)을 해독하고 검증할 수 있다.
model_id, 사용자 프로파일(P) 및 임계 거리(d)의 주어진 튜플(tuple)에 대해, 애플리케이션(112)은 모든 사용자 그룹 식별자(Li)를 페치해야 하는데, 여기서.
Figure pct00008
이다. 이 예에서, 함수
Figure pct00009
는 [테이블 8]에서 model_id 및 Li로 표시된 행으로부터 중심(Centroid) 열의 값을 반환한다.
컴퓨팅 시스템(MPC1 또는 MPC2)이 사용자 프로파일(P)을 전체적으로 학습하는 것을 방지하기 위해, 애플리케이션(112)은 사용자에 대한 사용자 프로파일(P)을 부분들로 분할한다(502). 애플리케이션(112)은 사용자 프로파일을 MPC 클러스터(130)의 각 컴퓨팅 시스템에 대한 개별 부분으로 분할할 수 있다. 이 예에서, 애플리케이션(112)은 사용자 프로파일을 컴퓨팅 시스템(MPC1)을 위한 제1 부분과 컴퓨팅 시스템(MPC2)를 위한 제2 부분의 두 부분으로 분할할 수 있다. 사용자 프로파일(P)이 n차원 벡터이고 사용자 프로파일 P = {p1, p2,..., pn}이라고 가정하면, 두 개의 절반인 P1과 P2는 P1 = {p1, p2, …, pn/2} 및 P2 = {pn/2+1, …, pn}이 된다. 컴퓨팅 시스템(MPC1 및 MPC2)은 이에 따라 사용자 그룹의 중심을 계산할 수 있다. 즉, Centroid(model_id, Li)는 Centroid1(model_id, Li) 및 Centroid2(model_id, Li)가 된다.
일부 구현에서, 애플리케이션(112)은 또한 사용자 프라이버시를 더 잘 보호하기 위해 차등 프라이버시 노이즈를 추가할 수 있다. 예를 들어, 애플리케이션(112)은 예를 들어 사용자 프로파일(P)을 부분들로 분할하기 전에 사용자 프로파일(P)에 일회성 사용자 노이즈(ΔP)를 추가할 수 있다.
P' = P + ΔP라고 하자. 애플리케이션(112)은 수평 분할을 적용하여 P'를 두 개의 절반인 P1' 및 P2'로 분할한다. d' = d + |ΔP|라고 하자. 애플리케이션(112)은 제1 절반(P1')을 컴퓨팅 시스템(MPC1)으로 전송한다(504). 예를 들어, 애플리케이션(112)은 두 개의 파라미터 {P1', d'}를 갖는 요청을 컴퓨팅 시스템(MPC1)으로 전송할 수 있다. 요청은 모든 사용자 그룹 식별자(Li)를 페치하기 위한 것일 수 있으며, 여기서 |P1' - Centroid1(model_id, Li)| < d'이다.
유사하게, 애플리케이션(112)은 제2 절반(P2')을 컴퓨팅 시스템(MPC2)으로 전송한다(506). 예를 들어, 애플리케이션(112)은 두 개의 파라미터 {P2', d'}를 갖는 요청을 컴퓨팅 시스템(MPC2)으로 전송할 수 있다. 요청은 모든 사용자 그룹 식별자(Li)를 페치하기 위한 것일 수 있으며, 여기서 |P2' - Centroid1(model_id, Li)| < d'이다.
사용자에 의한 디지털 컴포넌트의 전환에 기초하여 모델이 트레이닝되기를 원하는 특정 구현에서, 전환의 발생은 노출 또는 클릭 후 오랜 시간이 지난 후에 종종 발생할 수 있다는 점을 고려할 수 있으며, 이 경우 컨텐츠 플랫폼(150)에 의한 대역폭, 저장 및 처리를 최적화하기 위해 다른 작업(task)을 수행하는데 MPC 클러스터(130)를 사용 가능하게 유지하는 것이 유리할 수 있다. 이러한 구현에서, 동작(504 및 508)은 (i) 애플리케이션(112)이 제1 당사자 쿠키와 함께 사용자 프로파일 및 라벨의 암호화된 셰어들을, 일부 구현에서는 컨텐츠 플랫폼(150)의 일부일 수 있고 다른 구현에서는 컨텐츠 플랫폼(150)과 별개일 수 있는 수요측 플랫폼(DSP)으로 전송하고, 이어서 (ii) DSP가 제1 당사자 쿠키를 사용하여 사용자 프로파일 및 라벨의 암호화된 셰어를 전환에 특정적일 수 있는 상호 작용 데이터(예를 들어, 전환이 30일과 같이 사전 설정된 기간 내에 발생했는지 여부)와 매핑(즉, 연관)시킨 다음, (iii) DSP가 이 매핑을 컴퓨팅 시스템(MPC1 또는 MPC2)으로 전송하여 기계 학습 모델을 트레이닝하는 대안 프로세스로 대체될 수 있다. 이 설명은 전환의 상호 작용에 중점을 두고 있지만, 이 아키텍처와 기능은 다른 상호 작용(예를 들어, 노출 또는 클릭) 또는 상호 작용의 조합(예를 들어, 노출, 클릭 및/또는 전환)으로 확장될 수 있다.
컴퓨팅 시스템(MPC1)은 사용자 프로파일(P')의 제1 절반(P1')의 임계 거리(d') 내의 중심을 갖는 사용자 그룹을 결정할 수 있다(508). 컴퓨팅 시스템(MPC1)은 각 사용자 그룹에 대해, 제1 절반(P1')과 사용자 그룹의 중심 사이의 거리, 즉 |P1' - Centroid1(model_id, Li)|을 결정할 수 있다. 그런 다음, 애플리케이션(112)은 거리(d')보다 작은 거리를 갖는 사용자 그룹을 결정할 수 있다. 이러한 사용자 그룹의 사용자 그룹 식별자는 U1으로 나타낼 수 있다.
유사하게, 컴퓨팅 시스템(MPC2)은 사용자 프로파일(P')의 제2 절반(P2')의 임계 거리(d') 내의 중심을 갖는 사용자 그룹을 결정할 수 있다(510). 컴퓨팅 시스템(MPC2)은 각 사용자 그룹에 대해, 제2 절반(P2')과 사용자 그룹의 중심 사이의 거리, 즉 |P2' - Centroid2(model_id, Li)|를 결정할 수 있다. 그런 다음, 애플리케이션(112)은 거리(d')보다 작은 거리를 갖는 사용자 그룹을 결정할 수 있다. 이러한 사용자 그룹의 사용자 그룹 식별자는 U2로 나타낼 수 있다.
컴퓨팅 시스템(MPC1)은 사용자 그룹 식별자(U1)의 세트를 애플리케이션(110)으로 전송한다(512). 유사하게, 컴퓨팅 시스템(MPC2)은 사용자 그룹 식별자(U2)의 세트를 애플리케이션(110)으로 전송한다(514).
애플리케이션(112)은 세트(U1 및 U2)를 사용하여 |P - Centroid(model_id, Li)|를 만족하는 모든 사용자 그룹 식별자(Li)의 세트(U)를 계산할 수 있다.
Figure pct00010
로서, 애플리케이션(112)은
Figure pct00011
이기 때문에 U1과 U2로부터 세트(U)를 계산할 수 있으며, 여기서
Figure pct00012
이고
Figure pct00013
이다.
이전 접근 방식은 사용자 그룹의 중심이 프라이버시에 민감하지 않고 브라우저가 MPC1 및 MPC2에 가입해야 하는 사용자 그룹의 상위 세트, 즉 U1U1 및 U2U2를 누출하는 것이 허용된다고 가정한다. 더 강력한 프라이버시 보호가 필요한 상황에서는 다음 접근 방식이 사용될 수 있다. 도 6은 훨씬 더 강력한 프라이버시 보호를 갖는 중심 모델에 대응하는 사용자 그룹에 사용자를 추가하기 위해 중심 모델을 생성하고 중심 모델을 사용하기 위한 예시적인 프로세스(600)를 도시하는 수영 레인 다이어그램이다. 프로세스(600)의 동작들은 예를 들어, 도 1의 MPC 클러스터(130) 및 클라이언트 디바이스(110), 예를 들어 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112)에 의해 구현될 수 있다. 프로세스(600)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(600)의 동작들을 수행하게 할 수 있다.
MPC 클러스터(130)는 하나 이상의 사용자 그룹에 대한 중심 모델을 트레이닝할 수 있다. 이 예에서, 중심 모델은 사용자 프로파일의 비밀 셰어를 사용하여 질의된다. 따라서, 각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 트레이닝 세트의 사용자 프로파일의 비밀 셰어, 예를 들어 클라이언트 디바이스(110)에 의해 업로드된 사용자 프로파일의 비밀 셰어를 사용하여 사용자 그룹의 중심의 개별 비밀 셰어를 결정할 수 있다.
각각의 사용자 그룹에 대해, 컴퓨팅 시스템(MPC1)은 사용자 그룹의 중심의 제1 비밀 셰어를 계산한다(602). 모델 식별자(model_id)에 의해 식별되는 중심 모델 및 사용자 그룹 식별자(Li)에 의해 식별되는 사용자 그룹에 대한 중심은 sum_of_profile(model_id, Li)로 표현될 수 있다. 사용자 그룹(Li)의 구성원인 모든 사용자 프로파일(Pi)에 대한 제1 비밀 셰어 [sum_of_profilemodel_id,i,1] = Σ[Pj,1]이다. 즉, 사용자 그룹(Li)에 대한 중심의 제1 비밀 셰어는 사용자 그룹(Li)에 있는 사용자 프로파일(Pi)의 제1 비밀 셰어의 합을 나타낸다.
각각의 사용자 그룹에 대해, 컴퓨팅 시스템(MPC2)은 사용자 그룹의 중심의 제2 비밀 셰어를 계산한다(604). 모델 식별자(model_id)에 의해 식별되는 중심 모델에 대한 중심 및 사용자 그룹 식별자(Li)에 의해 식별되는 사용자 그룹에 대한 중심 모델 및 사용자 그룹 식별자(Li)에 의해 식별되는 사용자 그룹에 대한 중심은 sum_of_profile(model_id, Li)로 표현될 수 있다. 사용자 그룹(Li)의 구성원인 모든 사용자 프로파일(Pi)에 대한 제2 비밀 셰어 [sum_of_profilemodel_id, i, 2] = Σ[Pj,2]이다. 사용자 그룹(Li)에 대한 중심의 제2 비밀 셰어는 사용자 그룹(Li)에 있는 사용자 프로파일(Pi)의 제2 비밀 셰어의 합을 나타낸다.
중심 모델은 각 사용자 그룹에 대한 중심의 제1 셰어 및 각 사용자 그룹의 중심의 제2 셰어를 포함할 수 있다. 각 중심의 제1 셰어는 컴퓨팅 시스템(MPC1)에서 기밀로 유지될 수 있고 각 중심의 제2 셰어는 컴퓨팅 시스템(MPC2)에서 기밀로 유지될 수 있다.
클라이언트 디바이스(110)상에서 실행되는 애플리케이션(112)은 사용자의 사용자 프로파일을 비밀 셰어들로 분할한다(606). 예를 들어, 애플리케이션(112)은 컴퓨팅 시스템(MPC1)에 대한 사용자 프로파일(P)의 제1 비밀 셰어[P1] 및 컴퓨팅 시스템(MPC2)에 대한 사용자 프로파일(P)의 제2 비밀 셰어[P2]을 계산할 수 있다. 정확한 분할은 애플리케이션(112)에 의해 사용되는 비밀 공유 알고리즘 및 암호화 라이브러리에 따라 달라질 수 있다. 일부 구현에서, 애플리케이션은 샤미르의 비밀 공유 체계를 사용한다.
애플리케이션(112)은 사용자에 대한 사용자 그룹 식별자를 페치(fetch)하기 위한 요청을 컴퓨팅 시스템(MPC1)으로 전송한다(608). 요청에는 사용자 프로파일(P)의 제1 비밀 셰어[P1]가 포함될 수 있다. 일부 구현에서, 요청은 질의 토큰(Mquery1)을 포함한다. 질의 토큰의 예시적인 포메쇼은 아래 [테이블 9]에 도시되어 있다.
애플리케이션(112)은 사용자에 대한 사용자 그룹 식별자를 페치하기 위한 요청을 컴퓨팅 시스템(MPC2)으로 전송한다(610). 요청에는 사용자 프로파일(P)의 제2 비밀 셰어[P2]가 포함될 수 있다. 일부 구현에서, 요청은 질의 토큰(Mquery2)을 포함한다. 질의 토큰의 예시적인 포메쇼은 아래 [테이블 9]에 도시되어 있다.
[테이블 9]
Figure pct00014
일부 구현에서, 애플리케이션(112)은 도 6에 도시된 바와 같이 2개의 개별 요청을 전송할 수 있다. 클라이언트 디바이스(110)의 대역폭 및 배터리 소비를 절약하기 위해, 애플리케이션(112)은 2개의 요청(예를 들어, 2개의 질의 토큰(Mquery1 및 Mquery2))을 단일 요청으로 결합하고 그 단일 요청을 컴퓨팅 시스템(MPC1 또는 MPC2) 중 하나로 전송할 수 있다. 그렇게 하기 위해, 애플리케이션(112)은 다른 컴퓨팅 시스템(MPC1 또는 MPC2)으로 의도된 질의 토큰을 암호화할 수 있다. 예를 들어, 애플리케이션(112)은 예를 들어 확률적 비대칭 공개키 알고리즘을 사용하여 컴퓨팅 시스템(MPC2)의 암호화 공개키를 사용하여 질의 토큰(Mquery2)을 암호화할 수 있다. 예를 들어, 애플리케이션(112)은 컴퓨팅 시스템(MPC2)의 공개키를 사용하여 암호화 결과 PubKeyEnc(Mquery2, MPC2)를 생성할 수 있다. 그런 다음, 애플리케이션(112)은 질의 토큰(Mquery1)과 암호화 결과(PubKeyEnc(Mquery2, MPC2))를 컴퓨팅 시스템(MPC1)으로 전송할 수 있다.
컴퓨팅 시스템(MPC1)은 도 3을 참조하여 위에서 설명된 바와 같이, 컴퓨팅 시스템(MPC1)이 업데이트 토큰(Mprofileupdate)를 검증하는 것과 유사한 방식으로 질의 토큰(Mquery1)을 검증할 수 있다. 컴퓨팅 시스템(MPC1)은 또한 암호화 결과 PubKeyEnc(Mquery2, MPC2)를 갖는 요청을 컴퓨팅 시스템(MPC2)으로 전송할 수 있다. 컴퓨팅 시스템(MPC2)는 질의 토큰(Mquery2)을 암호화하는데 사용되는 공개키에 해당하는 개인키를 사용하여 암호화 결과를 해독할 수 있다. 컴퓨팅 시스템(MPC2)는 도 3을 참조하여 위에서 설명된 바와 같이, 컴퓨팅 시스템(MPC2)이 업데이트 토큰(Mprofileupdate)를 검증하는 것과 유사한 방식으로 질의 토큰(Mquery2)을 검증할 수 있다.
일부 구현에서, 각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 중심 모델과 관련된 다수의 사용자 그룹들 각각에 대해, 사용자 그룹에 대한 사용자 그룹 적격성(eligible_groupi)의 개별 비밀 셰어를 결정할 수 있다. 사용자 프로파일 및 사용자 그룹에 대한 사용자 그룹 적격성(eligible_groupi)은 사용자의 사용자 프로파일이 중심 모델에 기초하여 사용자 그룹 중심의 임계 거리 내에 있는지 여부를 나타낸다.
이 예에서, 각각의 컴퓨팅(MPC1 및 MPC2)은 모델 식별자(model_id)와 관련된 모든 사용자 그룹(Li)을 조회할 수 있으며, 여기서 1 ≤ i ≤ N이고 N은 모델 식별자(model_id)와 관련된 사용자 그룹의 수이다. 각 사용자 그룹(Li)에 대해, 컴퓨팅 시스템(MPC1)은 아래의 관계식 5를 사용하여 유클리드 거리([di,1])의 제곱의 제1 비밀 셰어를 계산할 수 있다.
관계식 5:
Figure pct00015
관계식 5에서, 파라미터(num_apps_groupi)는 사용자 프로파일이 사용자 그룹(Li)에 대한 중심을 생성하는데 사용된 사용자 그룹에 있는 애플리케이션의 수(예를 들어, 고유 사용자의 수)를 나타낸다. 그런 다음 컴퓨팅 시스템(MPC1)은 아래의 관계식 6을 사용하여 사용자 프로파일 및 사용자 그룹에 대한 사용자 그룹 적격성 (eligible_groupi)의 제1 비밀 셰어[eligible_groupi,1]를 계산할 수 있다.
관계식 6:
Figure pct00016
즉, 컴퓨팅 시스템(MPC1)은 유클리드 거리의 제1 비밀 셰어가 임계 거리보다 작은지 여부를 계산할 수 있다. 컴퓨팅 시스템(MPC2)은 아래의 관계식 7 및 8을 사용하여 유사한 방식으로 사용자 프로파일 및 사용자 그룹에 대한 사용자 그룹 적격성(eligible_groupi)의 제2 비밀 셰어[eligible_groupi,2]를 계산할 수 있다.
관계식 7:
Figure pct00017
관계식 8:
Figure pct00018
각각의 컴퓨팅 시스템(MPC1 및 MPC2)는 사용자 그룹 적격성의 개별 비밀 셰어를 애플리케이션(112)으로 전송할 수 있다. 그런 다음, 애플리케이션(112)은 비밀 셰어를 결합하여 사용자를 사용자 그룹에 추가할지 여부를 결정할 수 있다. 응답 크기는 모델내의 사용자 그룹 수에 비례하므로, 응답 크기는 중심 모델과 관련된 많은 수의 사용자 그룹이 있는 컨텐츠 플랫폼의 경우 클 수 있다. 그러나, 사용자 그룹에 사용자를 추가할지 여부를 결정하는 이 기술은 사용자 그룹 수가 적거나 대역폭 소비가 문제가 되지 않는 경우에 사용될 수 있다. 이 프로세스(600)의 나머지 동작은 사용자 그룹의 수가 많고 응답 크기를 크게 줄일 수 있을 때 사용될 수 있는 이 기술에 대한 개선을 제공한다.
개념적으로, 사용자 프로파일 및 사용자 그룹에 대한 사용자 그룹 적격성(eligible_groupi)에 대해, 애플리케이션(112)은 각각이 0 또는 동일한 확률로 1의 값을 갖는 2개의 숫자(gi 및 hi)를 무작위로 또는 의사랜덤하게 생성할 수 있다. 이 예에서, gi와 hi의 합은 25% 확률로 0, 50% 확률로 1 또는 25% 확률로 2가 된다.
애플리케이션(112)은 (gi + hi) == 1이 되도록 사용자 그룹 적격성(eligible_groupi)의 값을 추정할 수 있다. 아래의 [테이블 10]을 통해, MPC 클러스터(130)는 그의 추정이 정확한지 여부를 애플리케이션(112)에게 알릴 수 있다.
[테이블 10]
eligible_groupi gi + hi
0 1 2
0 1 0 1
1 0 1 0
예를 들어, gi + hi == 1이고 eligible_groupi == 1이면, 애플리케이션은 해당 셀의 값이 1이 되도록 eligible_groupi의 값을 올바르게 추정했다. 반면에, gi + hi == 2이고 eligible_groupi == 1인 경우, 애플리케이션(112)은 해당 셀의 값이 0이 되도록 eligible_groupi의 값을 잘못 추정했다. 이 경우에, 애플리케이션(112)은 그의 추정을 뒤집을 수 있어 애플리케이션(112)은 eligible_groupi의 값을 정확하게 추정할 수 있다. 이것은 위의 테이블이 다음과 같은 것으로 검증하는 것일 수 있다.
Figure pct00019
보안 MPC를 사용하여 이러한 개념을 구현하기 위해, 애플리케이션(112)은 2개의 랜덤(또는 의사랜덤) 시드(예를 들어, 16바이트 또는 다른 적절한 데이터 크기)(seed1 및 seed2)를 생성할 수 있다(612). 애플리케이션(112)은 제1 시드(seed1)를 컴퓨팅 시스템(MPC1)으로 전송할 수 있다. 애플리케이션(112)은 제2 시드(seed2)를 컴퓨팅 시스템(MPC2)으로 전송할 수 있다.
MPC 클러스터(130)는 의사랜덤 함수(PRF) 및 시드를 사용하여 랜덤 또는 의사랜덤일 수 있는 숫자(gi 및 hi)를 생성할 수 있다. PRF는 50% 확률로 0 또는 1 값을 생성하는 함수일 수 있다. 예를 들어, PRF는
Figure pct00020
와 같은 것일 수 있다. 컴퓨팅 시스템(MPC1)은 PRF과 seed1(예를 들어, PRF(seed1,i))을 사용하여 gi를 생성할 수 있고, 컴퓨팅 시스템(MPC2)은 PRF와 seed2(예를 들어, PRF(seed2,i)를 사용하여 hi를 생성할 수 있다. 숫자 gi와 hi는 (사용자가 사용자 그룹(Li)에 추가되어야 하는지 여부에 대한 애플리케이션의 추정치인) gi + hi의 2개의 가산적(형) 비밀 셰어이며, 이는 [gi] 및 [hi]로 표시되어 이들이 비밀 셰어임을 나타낼 수 있다.
일반 텍스트로 된 (1-eligible_groupi)×(1-(gi+hi-1)2) + eligible_groupi ×(gi+hi-1)2를 계산하는 대신에, MPC 클러스터(130)는 비밀 셰어로 된 (1-[eligible_groupi])×(1-([gi+hi]-1)2) + [eligible_groupi]×([gi+hi]-1)2를 계산한다. 이 방정식에서, 이것은 비밀 셰어의 제곱과 2개의 비밀 셰어 간의 곱셈을 포함한다는 점에 유의한다. 컴퓨팅 시스템(MPC1 및 MPC2) 간의 보안 MPC 프로세스를 사용한 제곱 및 곱셈의 계산은 두 컴퓨팅 시스템(MPC1 및 MPC2) 간에 한 라운드의 원격 프로시저 호출(RPC)이 필요할 수 있다. 다른 모든 연산은 각 컴퓨팅 시스템(MPC1 및 MPC2) 내에서 로컬로 수행될 수 있다.
특히, 컴퓨팅 시스템(MPC1 및 MPC2) 각각은 각 사용자 그룹(Li)에 대한 추정 플래그(flagi)의 비밀 셰어를 계산할 수 있다. 사용자 그룹에 대한 추정 플래그(flagi)는 사용자가 사용자 그룹에 올바르게 추가되어야 하는지 여부를 애플리케이션(112)이 올바르게 추정했는지 여부를 나타낸다.
컴퓨팅 시스템(MPC1)은 각 사용자 그룹(Li)에 대한 추정 플래그(flagi)의 제1 비밀 셰어([flagi,1])를 계산한다(618). 컴퓨팅 시스템(MPC1)은 아래의 관계식 9를 사용하여 각 사용자 그룹(Li)에 대한 추정 플래그(flagi)의 제1 비밀 셰어([flagi, 1])를 계산할 수 있다.
관계식식 9:
Figure pct00021
컴퓨팅 시스템(MPC2)은 각 사용자 그룹(Li)에 대한 추정 플래그(flagi)의 제2 비밀 셰어[flagi,2]을 계산한다(620). 컴퓨팅 시스템(MPC2)은 아래의 관계식 10을 사용하여 각 사용자 그룹(Li)에 대한 추정 플래그(flagi)의 제2 비밀 셰어([flagi,2])를 계산할 수 있다.
관계식 10:
Figure pct00022
컴퓨팅 시스템(MPC1 및 MPC2)은 각 사용자 그룹(Li)에 대한 추정 플래그(flagi)를 재구성한다(622). 컴퓨팅 시스템(MPC1 및 MPC2)은 2개의 컴퓨팅 시스템(MPC1 및 MPC2) 사이의 하나의 RPC를 사용하여 2개의 비밀 셰어([flagi,1])에 기초하여 각 사용자 그룹(Li)에 대한 추정 플래그(flagi)를 재구성할 수 있다. 사용자 그룹(Li)에 대한 추정 플래그(flagi)의 값이 1인 경우, 애플리케이션은 사용자가 사용자 그룹(Li)에 추가되어야 하는지 여부를 정확하게 추정했다. 컴퓨팅 시스템(MPC1 및 MPC2) 어느 것도 애플리케이션(112)이 실제로 추정한 것을 알지 못하기 때문에, 사용자 그룹(Li)에 대한 추정 플래그(flagi)의 값을 아는 것은 컴퓨팅 시스템(MPC1 또는 MPC2)에게 어떠한 정보도 누설하지 않는다.
컴퓨팅 시스템(MPC1)은 각 사용자 그룹(Li)에 대한 추정 플래그(flagi)를 애플리케이션(112)으로 전송한다(624). 예를 들어, 컴퓨팅 시스템(MPC1)은 사용자 그룹에 대한 {flag1, flag2, …}를 애플리케이션(112)으로 전송할 수 있다. 일반 텍스트 flagi는 0 또는 1의 값을 갖는다. 즉, 1의 값은 어플리케이션(112)이 사용자가 i번째 그룹에 올바르게 추가되어야 하는지 여부를 추정하고 그렇지 않은 경우 0의 값을 추정함을 의미한다. 따라서, 각 일반 텍스트 flagi는 1비트로 표시될 수 있다.
중심 모델과 관련된 각 사용자 그룹에 대해, 컴퓨팅 시스템(MPC1)은 단일 비트(flagi)를 반환할 수 있다. 백만 명의 사용자 그룹이 있는 중심 모델의 경우, 응답 크기는 MPC 클러스터(130)에 요청이 제출되는 빈도 및 요구되는 요청의 대기 시간에 기초하여 실용적인 128킬로바이트(KB)일 것이다.
애플리케이션(112)은 추정 플래그에 기초하여 사용자를 사용자 그룹에 추가할지 여부를 결정한다(626). 각 사용자 그룹에 대해, 애플리케이션은 flagi ==(gi + hi ==1)를 계산할 수 있다. "==" 연산은 두 값이 같으면 true(참)를 반환하는 동등(equality) 연산을 나타낸다. 계산 결과가 true이면 애플리케이션(112)은 중심 모델과 관련된 i번째 사용자 그룹에 가입해야 한다.
그런 다음, 애플리케이션(112)은 MPC 클러스터(130)로부터 애플리케이션(112)이 가입해야 하는 사용자 그룹에 대한 사용자 그룹 식별자를 요청할 수 있다. 그렇게 하기 위해, 애플리케이션(112)은 임의의 적절한 밀집 개인 정보 검색(PIR) 알고리즘 및 구현으로 컴퓨팅 시스템(MPC1 및 MPC2)에 대한 밀집 개인 정보 검색(PIR)을 개시할 수 있다. 일부 구현은 분산 포인트 함수(DPF)에 의존한다. 애플리케이션(112)이 가입해야 하는 i번째 사용자 그룹에 대해, 애플리케이션(112)은 j = i이면 gi(j) + hi(j) = 1이고, 그렇지 않으면 gi(j) + hi(j) = 0이 되도록 2개의 DPF, gi 및 hi를 생성할 수 있다.
애플리케이션(112)은 컴퓨팅 시스템(MPC1)에 제1 요청을 전송할 수 있다(630). 제1 요청에는 애플리케이션(112)이 가입해야 하는 각 사용자 그룹에 대한 포인트 함수(gi)가 포함될 수 있다.
애플리케이션(112)은 컴퓨팅 시스템(MPC2)으로 제2 요청을 전송할 수 있다(632). 제2 요청에는 애플리케이션(112)이 가입해야 하는 각 사용자 그룹에 대한 포인트 함수(hi)가 포함될 수 있다.
각각의 포인트 함수(gi)에 대해, 컴퓨팅 시스템(MPC1)은 사용자 그룹 식별자 결과의 제1 비밀 셰어를 계산하여 애플리케이션(112)에 반환한다(634). 애플리케이션(112)은 아래의 관계식 11을 사용하여 사용자 그룹 식별자 결과의 제1 비밀 셰어를 계산할 수 있다.
관계식 11:
Figure pct00023
각각의 포인트 함수(hi)에 대해, 컴퓨팅 시스템(MPC2)은 사용자 그룹 식별자 결과의 제2 비밀 셰어를 계산하여 애플리케이션(112)에 반환한다(636). 애플리케이션(112)은 아래의 관계식 12를 사용하여 사용자 그룹 식별자 결과의 제2 비밀 셰어를 계산할 수 있다.
관계식 12:
Figure pct00024
애플리케이션(112)은 사용자를 하나 이상의 사용자 그룹에 추가할 수 있다(638). 애플리케이션(112)은 사용자 그룹에 대한 제1 셰어(resulti,1) 및 제2 셰어(resulti,2)를 사용하여 사용자가 가입해야 하는 각 사용자 그룹에 대한 사용자 그룹 식별자를 재구성할 수 있다. 예를 들어, 애플리케이션(112)은 2개의 비밀 셰어가 가산형 비밀 셰어인인 경우, 2개의 비밀 셰의 합을 계산하여 사용자 그룹에 대한 사용자 그룹 식별자를 획득할 수 있다. 그런 다음, 애플리케이션(112)은 사용자 그룹 식별자를 사용자 그룹 목록에 추가할 수 있다.
도 6의 이 프로세스(600)에서, MPC 클러스터(130)의 컴퓨팅 시스템은 일반 텍스트로 사용자 그룹의 중심을 알지 못하고, 애플리케이션 질의 파라미터, 즉 사용자 프로파일을 알 지 못하며, 사용자가 가입할 사용자 그룹도 알지 못하므로 사용자 프라이버시를 보호한다.
완화된 프라이버시 요구 사항이 있는, 예를 들어 컴퓨팅 시스템(MPC1 및 MPC2)은 질의 결과를 일반 텍스트로 알 수 있는 상황에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 2개의 비밀 셰어으로부터 사용자 그룹 적격성(eligible_groupi) 결과를 재구성할 수 있고 대응하는 eligible_groupi가 true인 경우에만 질의 응답에서 사용자 그룹 식별자(Li)를 애플리케이션(112)에 리턴할 수 있다.
일부 구현에서, 중심 모델의 트레이닝 및 중심 모델의 질의는 집계(통합) 서비스에 의해 수행될 수 있다. 집계 서비스는 MPC 클러스터(130)를 포함할 수 있고, 예를 들어 클라이언트 디바이스(110)보다는 컨텐츠 플랫폼(150)과 통신할 수 있다. 이러한 경우에, 애플리케이션(112)이 가입해야 하는 사용자 그룹을 질의할 때, 애플리케이션(112)은 프라이버시 보호를 위해 MPC 클러스터(130)에 포워딩하기 위하여 사용자의 사용자 프로파일을 컨텐츠 플랫폼(150)으로 전송하지 않을 수 있다. 하나의 옵션은 사용자 그룹의 중심을 애플리케이션(112)으로 전송하도록 컨텐츠 플랫폼(150)을 구성하는 것이다. 그러나 이것은 상당한 대역폭을 소모할 수 있다.
다른 옵션은 컨텐츠 플랫폼(150)이 사용자에 대한 보안 모바일 ID(예를 들어, FLOC ID), 제1 당사자 쿠키로부터 수신된 제1 당사자 쿠키 데이터, 및 디지털 컴포넌트 요청의 URL에 기초하여 사용을 위해 사용자 그룹을 추론하는 것이다. 그러나, 이것은 위에서 설명한 기술만큼 정확하지 않을 수 있다.
도 7은 사용자 및 중심 모델의 사용자 프로파일 데이터에 기초하여 사용자 그룹 결과(즉, 애플리케이션(112)이 하나 이상의 사용자 그룹에 가입해야 하는지 여부)를 결정하기 위한 예시적인 프로세스(700)를 도시하는 흐름도이다. 프로세스(700)의 동작들은 예를 들어 MPC 클러스터(130)에 의해 구현될 수 있다. 프로세스(700)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(700)의 동작들을 수행하게 할 수 있다.
사용자 그룹 식별자에 대한 제1 요청이 수신된다(702). MPC 클러스터(130)의 제1 컴퓨팅 시스템, 예를 들어, MPC1은 클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)으로부터 제1 요청을 수신할 수 있다. 애플리케이션(112)은 각각의 제2 요청을 MPC 클러스터(130)의 서로 다른 컴퓨팅 시스템, 예를 들어 MPC2로 전송할 수 있다. 요청은 사용자가 추가될 사용자 그룹의 사용자 그룹 식별자, 예를 들어 사용자의 사용자 프로파일이 사용자 그룹의 중심의 임계 거리 내에 있는 각 사용자 그룹에 대한 것일 수 있다.
일반적으로, 각각의 요청에는 사용자의 사용자 프로파일에 대한 사용자 프로파일 데이터가 포함될 수 있다. 제1 요청에는 제1 사용자 프로파일 데이터가 포함될 수 있고, 각각의 제2 컴퓨팅 시스템으로 전송된 각각의 제2 요청에는 각각의 제2 사용자 프로파일 데이터가 포함될 수 있다. 사용자 프로파일 데이터는 사용된 암호화 기술에 기초하여 다를 수 있다.
예를 들어, 중심이 도 4를 참조하여 설명된 바와 같이 MPC 프로세스 및 수평 분할을 사용하여 결정되는 경우, 각 요청의 사용자 프로파일 데이터는 사용자의 사용자 프로파일의 각 부분을 포함할 수 있다. MPC 클러스터(130)의 각각의 컴퓨팅 시스템이 중심의 비밀 셰어를 갖는 경우, 각 요청의 사용자 프로파일 데이터에는 사용자의 사용자 프로파일의 각각의 비밀 셰어가 포함될 수 있다. 두 경우 모두 사용자 프로파일 데이터에는 또한 중심 모델 및 임계 거리에 대한 모델 식별자가 포함될 수 있다.
모델 식별자에 대응하는 사용자 그룹의 세트가 식별된다(704). 예를 들어, 컨텐츠 플랫폼(150) 또는 디지털 컴포넌트 제공자(160)는 MPC 클러스터(130)가 사용자 그룹 세트에 대한 중심 모델을 생성하게 할 수 있다. MPC 클러스터(130)의 각각의 컴퓨팅 시스템은, 예를 들어 모델 식별자를 각 사용자 그룹 식별자와 링크함으로써 중심 모델에 대응하는 사용자 그룹에 대한 사용자 그룹 식별자를 식별하는 데이터를 저장할 수 있다. 제1 컴퓨팅 시스템은 저장된 데이터에 기초하여 사용자 그룹의 세트를 식별할 수 있다. 각 사용자 그룹 식별자와 모델 식별자는 중심 모델과 사용자 그룹 식별자 쌍으로 지칭될 수 있다.
사용자 그룹 세트 내의 각 사용자 그룹에 대해, 사용자 그룹에 대한 중심이 식별된다(706). MPC 클러스터(130)가 중심 모델을 생성할 때, MPC 클러스터(130)는 중심 모델에 대응하는 사용자 그룹에 대한 중심을 결정할 수 있다. 중심의 형태는 사용된 암호화 기술에 따라 달라질 수 있다. 예를 들어, 도 4를 참조하여 설명한 바와 같이, MPC 프로세스 및 수평 분할을 사용하여 중심이 결정되는 경우, MPC 클러스터(130)의 각 컴퓨팅 시스템은 그 중심을 생성하는데 사용된 사용자 프로파일의 비밀 셰어의 합계의 일부, 예를 들어 절반(halves)에 기초하여 결정되는 사용자 그룹에 대한 중심을 가질 수 있다. 비밀 셰어가 사용되는 경우, MPC 클러스터(130)의 각 컴퓨팅 시스템은 사용자 그룹에 대한 중심의 비밀 셰어를 가질 수 있다.
사용자 그룹 결과가 결정된다(708). 사용자 그룹 결과는 사용자를 추가할 하나 이상의 사용자 그룹을 나타낸다. 예를 들어, 사용자 그룹 결과는 사용자의 사용자 프로파일의 임계 거리 내에 있는 중심을 갖는 사용자 그룹을 나타낼 수 있다.
사용자 그룹 결과가 전송된다(710). 예를 들어, 제1 컴퓨팅 시스템은 그 사용자 그룹 결과를 클라이언트 디바이스(110)상에서 실행되는 애플리케이션(112)으로 전송할 수 있다.
제1 컴퓨팅 시스템은 사용된 암호화 기술에 따라 다른 방식으로 사용자 그룹 결과를 결정할 수 있고 사용자 그룹 결과는 사용된 암호화 기술에 따라 달라질 수 있다. 예를 들어, 수평 분할(partitioning)이 사용되는 경우, 제1 컴퓨팅 시스템은 도 5를 참조하여 설명된 바와 같이, 사용자 그룹 세트 내의 각 사용자 그룹에 대해, 제1 사용자 프로파일 데이터에 포함된 사용자 프로파일의 제1 부분이 제1 컴퓨팅 시스템에 의해 이전에 결정된 사용자 그룹의 중심의 임계 거리 내에 있는지 여부를 결정할 수 있다. 이 예에서, 사용자 그룹 결과는 중심이 사용자의 사용자 프로파일의 임계 거리 내에 있는 사용자 그룹의 사용자 그룹 식별자를 포함할 수 있다. 서로 다른 컴퓨팅 시스템은 그 중심과 사용자 프로파일의 수신된 부분을 사용하여 유사한 프로세스를 수행할 수 있다. 각각의 컴퓨팅 시스템은 중심이 사용자의 사용자 프로파일의 임계 거리 내에 있는 사용자 그룹의 사용자 그룹 식별자를 포함하는 사용자 그룹 결과를 제공할 수 있다. 그런 다음, 클라이언트 디바이스의 애플리케이션은 도 5를 참조하여 설명된 바와 같이, 각 컴퓨팅 시스템으로부터 수신된 사용자 그룹 결과에 기초하여 사용자를 추가할 사용자 그룹의 목록을 결정할 수 있다.
비밀 셰어가 사용된 경우, 사용자 그룹 결과는 도 6을 참조하여 설명된 바와 같이 사용자 그룹 세트의 각 사용자 그룹에 대한 추정 플래그를 포함할 수 있다. 사용자 그룹에 대한 추정 플래그는 사용자가 사용자 그룹에 올바르게 추가되어야 하는지 여부를 애플리케이션이 추정했는지 여부를 나타낸다. 애플리케이션(112)은 추정 플래그를 사용하여 예를 들어 애플리케이션(112)이 사용자가 사용자 그룹에 추가되어야 한다고 추정했는지 여부 및 그 추정이 정확했는지 여부에 기초하여 사용자 그룹에 사용자를 추가할지 여부를 결정할 수 있다. 그런 경우, 애플리케이션(112)은 추정 플래그에 대응하는 사용자 그룹 식별자에 대해 MPC 클러스터(130)에 질의할 수 있다.
k-NN 모델 생성 및 사용을 위한 예시적인 프로세스
도 8은 기계 학습 모델을 트레이닝하고 기계 학습 모델을 사용하여 사용자 그룹에 사용자를 추가하기 위한 예시적인 프로세스(800)의 수영 레인 다이어그램이다. 프로세스(800)의 동작들은 예를 들어 클라이언트 디바이스(110), MPC 클러스터(130)의 컴퓨팅 시스템(MPC1 및 MPC2), 및 컨텐츠 플랫폼(150)에 의해 구현될 수 있다. 프로세스(800)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(800)의 동작들을 수행하게 할 수 있다. 아래의 프로세스(800) 및 기타 프로세스는 MPC 클러스터(130)의 2개의 컴퓨팅 시스템 관점에서 설명되지만, 두 개 이상의 컴퓨팅 시스템이 있는 MPC 클러스터도 유사한 프로세스를 수행하는데 사용될 수 있다.
기계 학습 모델은 사용자의 사용자 프로파일 또는 사용자 그룹에 대한 사용자 프로파일 간의 거리를 나타내는 k-NN 모델일 수 있다. k-NN 모델이 사용자 그룹에 대한 사용자 프로파일 간의 거리를 나타낼 때, 각 사용자 그룹은 사용자 그룹에 대한 중심을 사용하여 모델에 나타낼 수 있다.
컨텐츠 플랫폼(150)은 클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)이 개별 사용자에 대한 사용자 프로파일을 생성하고 그 사용자 프로파일의 비밀 셰어 및/또는 암호화된 버전을 MPC 클러스터(130)에 업로드하도록 요청함으로써 기계 학습 모델 중 하나의 트레이닝 및/또는 업데이트를 시작할 수 있다. 본 문서의 목적상, 사용자 프로파일의 비밀 셰어는 일반 텍스트가 아니므로 사용자 프로파일의 암호화된 버전으로 간주될 수 있다. 생성 시에, 각각의 애플리케이션(112)은 사용자 프로파일에 대한 데이터를 저장할 수 있고 컨텐츠 플랫폼(150)으로부터요청을 수신하는 것에 응답하여 업데이트된 사용자 프로파일을 생성할 수 있다. 사용자 프로파일의 컨텐츠와 기계 학습 모델은 컨텐츠 플랫폼(150)마다 다르기 때문에, 사용자의 클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)은 다수의 사용자 프로파일에 대한 데이터를 유지하고 특정 컨텐츠 플랫폼에 각각 특정된 다수의 사용자 프로파일을 생성할 수 있다.
클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112)은 클라이언트 디바이스(110)의 사용자에 대한 사용자 프로파일을 구축한다(802). 사용자에 대한 사용자 프로파일에는 사용자에 의해 개시된 이벤트 및/또는 전자 리소스(예를 들어, 웹 페이지 또는 애플리케이션 컨텐츠)와 관련하여 사용자에 의해 개시되었을 수 있는 이벤트와 관련된 데이터를가 포함될 수 있다. 이벤트에는 전자 리소스의 보기, 디지털 컴포넌트의 보기, 사용자 상호 작용, 또는 전자 리소스 또는 디지털 컴포넌트와의(예를 들어, 선택) 사용자 상호 작용 결여(lack, 없음), 전자 리소스과의 사용자 상호 작용 후에 발생하는 전환 및/또는 사용자 및 전자 리소스과 관련된 기타 적절한 이벤트가 포함될 수 있다. 사용자에 의한 사용자 상호 작용의 일부 예는 (a) 특정 아이템에 대한 링크상 클릭, (b) 예를 들어, 가상 장바구니에 아이템을 추가하거나 아이템을 구매함으로써 특정 아이템에 대한 전환 완료, (c) 미리 설정된 시간 이상 동안 특정 아이템 보기 중 하나 이상과 같이 웹 페이지상에 제시된 특정 아이템과의 상호 작용일 수 있다. 특정 사용자 상호 작용이 결여된(없는) 일부 예는 사용자가 일부 상호 작용을 수행하지만 후속 상호 작용이 결여된 것, 예를 들어 사용자가 디지털 컴포넌트를 보지만 클릭하지는 않는 것; 디지털 컴포넌트를 클릭하지만 전환하지 않는 것(예를 들어, 체크아웃 웹 페이지로 이동하기 위해 클릭하지만 아이템을 구매하지 않음) 및/또는 이와 유사한 것일 수 있다. 전환은 구현에 따라 다르게 정의될 수 있다. 예를 들어, 일부 구현에서, 전환은 사용자가 체크아웃 페이지로 이동하는(navigating) 것일 수 있다. 특정 구현에서, 전환은 아이템을 구매하려는 사용자일 수 있다. 다른 구현에서, 전환은 아이템을 구매하는 사용자일 수 있다.
사용자에 대한 사용자 프로파일은 컨텐츠 플랫폼(150), 또는 컨텐츠 플랫폼(150)이 소유하는 선택된 기계 학습 모델에 특정적일 수 있다. 예를 들어, 도 9를 참조하여 아래에서 더 상세히 설명되는 바와 같이, 각각의 컨텐츠 플랫폼(150)은 애플리케이션(112)이 해당 컨텐츠 플랫폼(150)에 특정된 사용자 프로파일을 생성하거나 업데이트하도록 요청할 수 있다.
사용자에 대한 사용자 프로파일은 특징 벡터의 형태일 수 있다. 예를 들어, 사용자 프로파일은 n차원 특징 벡터일 수 있다. n 차원 각각은 특정 기능(feature)에 해당할 수 있으며 각 차원의 값은 사용자에 대한 그 기능의 값일 수 있다. 예를 들어, 하나의 차원은 특정 디지털 컴포넌트가 사용자에게 제시되었는지(또는 사용자와 상호 작용했는지)에 대한 것일 수 있다. 이 예에서, 해당 기능의 값은 디지털 컴포넌트가 사용자에게 제공(또는 상호 작용)된 경우 "1"이거나 디지털 컴포넌트가 사용자에게 제공(또는 상호 작용)되지 않은 경우 "0"일 수 있다. 사용자에 대한 사용자 프로파일을 생성하기 위한 예시적인 프로세스가 도 9에 도시되어 있고 아래에서 설명된다.
일부 구현에서, 컨텐츠 플랫폼(150)은 컨텍스트 신호, 특정 디지털 컴포넌트와 관련된 신호, 또는 사용자 위치에서의 현재 날씨와 같이 애플리케이션(112)이 인식하지 못하거나 애플리케이션(112)이 액세스할 수 없는 사용자와 관련된 신호와 같은 추가 신호에 기초하여 기계 학습 모델을 트레이닝하기를 원할 수 있다. 예를 들어, 컨텐츠 플랫폼(150)은 디지털 컴포넌트가 특정 컨텍스트에서 사용자에게 제시되는 경우 사용자가 특정 디지털 컴포넌트와 상호 작용할지 여부를 예측하기 위해 기계 학습 모델을 트레이닝하기를 원할 수 있다. 이 예에서, 컨텍스트 신호는 사용자에게 디지털 컴포넌트를 프리젠테이션할 때마다, (사용자에 의해 허가가 부여된 경우) 당시 클라이언트 디바이스(110)의 지리적 위치, 디지털 컴포넌트가 제시되는 전자 리소스의 컨텐츠를 설명하는 신호, 및 디지털 컴포넌트를 설명하는 신호, 예를 들어 디지털 컴포넌트의 컨텐츠, 디지털 컴포넌트의 유형, 전자 리소스에서 디지털 컴포넌트가 제시되는 위치 등을 포함할 수 있다. 다른 예에서, 하나의 차원은 사용자에게 제시된 디지털 컴포넌트가 특정 유형인지 여부에 대한 것일 수 있다. 이 예에서, 값은 여행의 경우 1, 요리의 경우 2, 영화의 경우 3일 수 있다. 후속 설명의 편의를 위해 Pi는 i번째 사용자 프로파일과 관련된 사용자 프로파일 및 추가 신호(예를 들어, 컨텍스트 신호 및/또는 디지털 컴포넌트 레벨 신호)를 모두 나타낸다.
애플리케이션(112)은 사용자에 대한 사용자 프로파일(Pi)의 셰어들을 생성한다(804). 이 예에서, 애플리케이션(112)은 MPC 클러스터(130)의 각 컴퓨팅 시스템에 대해 하나씩, 사용자 프로파일(Pi)의 2개의 셰어를 생성한다. 각 셰어 자체는 사용자 프로파일에 대해 아무 것도 나타내지 않는 임의의 변수임에 유의한다. 사용자 프로파일을 얻기 위해서는 2개의 셰어가 결합되어야 한다. MPC 클러스터(130)가 기계 학습 모델의 트레이닝에 참여하는 더 많은 컴퓨팅 시스템을 포함하는 경우, 애플리케이션(112)은 각 컴퓨팅 시스템에 대해 하나씩 더 많은 셰어를 생성할 것이다. 일부 구현에서, 사용자 프라이버시를 보호하기 위해, 애플리케이션(112)은 의사랜덤 함수를 사용하여 사용자 프로파일(Pi)를 셰어들로 분할할 수 있다. 즉, 애플리케이션(112)은 의사 난수 함수 PRF(Pi)를 사용하여 2개의 셰어 {[Pi,1],[Pi,2]}를 생성할 수 있다. 정확한 분할은 애플리케이션(112)에 의해 사용되는 비밀 공유 알고리즘 및 암호화 라이브러리에 따라 달라질 수 있다.
일부 구현에서, 애플리케이션(112)은 또한 MPC 클러스터(130)에 하나 이상의 라벨(label)을 제공할 수 있다. 라벨은 특정 아키텍처(예를 들어, k-NN)의 기계 학습 모델을 트레이닝하는데 사용되지 않을 수 있지만, 라벨은 모델 트레이닝 프로세스(예를 들어, k의 값)를 제어하는 하이퍼파라미터를 미세 조정하거나 트레이닝된 기계 학습 모델의 품질을 평가하거나 예측, 즉 사용자에 대한 사용자 그룹을 제안할지 여부를 결정하는데 사용될 수 있다. 라벨은 컨텐츠 플랫폼(150)이 액세스할 수 있는 예를 들어 사용자에 대한 하나 이상의 사용자 그룹 식별자를 포함할 수 있다. 즉, 리벨은 컨텐츠 플랫폼(150)에 의해 관리되거나 컨텐츠 플랫폼(150)이 읽기 액세스 권한을 갖는 사용자 그룹에 대한 사용자 그룹 식별자를 포함할 수 있다. 일부 구현에서, 단일 라벨은 사용자에 대한 다수의 사용자 그룹 식별자를 포함한다. 일부 구현에서, 사용자에 대한 라벨은 다른 성질의 것(heterogeneous)일 수 있고, 사용자를 구성원으로 포함하는 모든 사용자 그룹 및 추가 정보, 예를 들어 사용자가 주어진 디지털 컴포넌트와 상호 작용(예컨대, 보기, 클릭 및/또는 전환))했는지 여부를 포함할 수 있다. 이를 통해 k-NN 모델을 사용하여 다른 사용자가 주어진 디지털 컴포넌트와 상호 작용할지 여부를 예측할 수 있다. 각 사용자 프로파일에 대한 라벨은 사용자 프로파일에 대응하는 사용자에 대한 사용자 그룹 멤버십을 나타낼 수 있다.
사용자 프로파일에 대한 라벨은 입력에 대응하는 사용자가 추가되거나 추가되어야 하는 사용자 그룹을 예측한다. 예를 들어, 입력 사용자 프로파일에 대한 k개의 최근접 이웃 사용자 프로파일에 대응하는 라벨들은, 예를 들어 사용자 프로파일 간의 유사성에 기초하여 입력 사용자 프로파일에 대응하는 사용자가 가입하거나 가입해야 하는 사용자 그룹의 예측이다. 이러한 예측(적) 라벨을 사용하여 사용자에게 사용자 그룹을 제안하거나 애플리케이션이 라벨에 해당하는 사용자 그룹에 사용자를 추가하도록 요청할 수 있다.
라벨이 포함된 경우, 애플리케이션(112)은 또한 각 labeli를 셰어들, 예를 들어 [labeli,1] 및 [labeli,2]로 분할할 수 있다. 이러한 방식으로, 컴퓨팅 시스템(MPC1 및 MPC2) 사이의 공모 없이, 컴퓨팅 시스템(MPC1 및 MPC2) 어느 것도 [Pi,1] 또는 [Pi,2]로부터 Pi를 재구성하거나 [labeli,1] 또는 [labeli,2]로부터 labeli를 재구성할 수 없다.
애플리케이션(112)은 사용자 프로파일(Pi)의 셰어 [Pi,1] 또는 [Pi,2] 및/또는 각 라벨(labeli)의 셰어 [labeli,1] 또는 [labeli,2]를 암호화한다(806). 일부 구현에서, 애플리케이션(112) 사용자 프로파일(Pi)의 제1 셰어([Pi,1])와 라벨(labeli)의 제1 셰어([labeli,1])의 복합 메시지를 생성하고 그 복합 메시지를 컴퓨팅 시스템(MPC1)의 암호화 키를 사용하여 암호화한다. 유사하게, 애플리케이션(112)은 사용자 프로파일(Pi)의 제2 셰어([Pi,2])와 라벨(labeli)의 제2 셰어([labeli,2])의 복합 메시지를 생성하고 그 복합 메시지를 컴퓨팅 시스템(MPC2)의 암호화 키를 사용하여 암호화한다. 이러한 함수는 PubKeyEncrypt([Pi,1] || [labeli,1], MPC1) 및 PubKeyEncrypt([Pi,2] || [labeli,2], MPC2)로 나타낼 수 있으며, 여기서 PubKeyEncrypt는 MPC1 또는 MPC2의 해당 공개키를 사용하는 공개 키 암호화 알고리즘을 나타낸다. 기호("||")는 JSON(JavaScript Object Notation), CBOR(Concise Binary Object Representation) 또는 프로토콜 버퍼와 같은 다수의 단순 메시지로부터 복잡한 메시지를 구성하는 가역적 방법을 나타낸다.
애플리케이션(112)은 암호화된 셰어들을 컨텐츠 플랫폼(150)에 제공한다(808). 예를 들어, 애플리케이션(112)은 사용자 프로파일 및 라벨의 암호화된 셰어들을 컨텐츠 플랫폼(150)으로 전송할 수 있다. 각 셰어는 컴퓨팅 시스템(MPC1 또는 MPC2)의 암호화 키를 사용하여 암호화되므로 컨텐츠 플랫폼(150)은 사용자의 사용자 프로파일이나 라벨에 액세스할 수 없다.
컨텐츠 플랫폼(150)은 다수의 클라이언트 디바이스로부터 사용자 프로파일의 셰어 및 라벨의 셰어를 수신할 수 있다. 컨텐츠 플랫폼(150)은 사용자 프로파일의 셰어들을 컴퓨팅 시스템(MPC1 및 MPC2)에 업로드함으로써 기계 학습 모델의 트레이닝을 개시할 수 있다. 라벨은 트레이닝 프로세스에서 사용되지 않을 수 있지만, 컨텐츠 플랫폼(150)은 모델 품질을 평가하거나 나중에 모델을 질의할 때 사용하기 위해 라벨의 셰어를 컴퓨팅 시스템(MPC1 및 MPC2)에 업로드할 수 있다.
컨텐츠 플랫폼(150)은 각 클라이언트 디바이스(110)로부터 수신된 제1 암호화된 셰어(예를 들어, PubKeyEncrypt([Pi,1] ||[labeli,1], MPC1))를 컴퓨팅 시스템(MPC1)(810)에 업로드한다. 유사하게, 컨텐츠 플랫폼(150)은 제2 암호화된 셰어(예를 들어, PubKeyEncrypt([Pi,2] || [labeli,2], MPC2))를 컴퓨팅 시스템(MPC2)에 업로드한다(812). 두 업로드 모두 일괄 처리될 수 있으며 기계 학습 모델을 트레이닝하기 위해 특정 기간 동안 수신된 사용자 프로파일 및 라벨의 암호화된 셰어를 포함할 수 있다.
일부 구현에서, 컨텐츠 플랫폼(150)이 컴퓨팅 시스템(MPC1)에 제1 암호화된 셰어를 업로드하는 순서는 컨텐츠 플랫폼(150)이 컴퓨팅 시스템(MPC2)에 제2 암호화된 셰어를 업로드하는 순서와 매칭(일치)해야 한다. 이것은 컴퓨팅 시스템(MPC1 및 MPC2)이 동일한 비밀의 2개 셰어, 예를 들어 동일한 사용자 프로파일의 2개 셰어를 적절하게 매칭시킬 수 있게 한다.
일부 구현에서, 컨텐츠 플랫폼(150)은 매칭을 용이하게 하기 위해 동일한 의사 랜덤 또는 순차적으로 생성된 식별자를 동일한 비밀의 셰어들에 명시적으로 할당할 수 있다. 일부 MPC 기술은 입력 또는 중간 결과의 무작위 셰플링(random shuffling)에 의존할 수 있지만, 본 문서에 설명된 MPC 기술은 이러한 무작위 셔플링을 포함하지 않을 수 있으며 대신 업로드 순서에 따라 매칭할 수 있다.
일부 구현에서, 동작(808, 810 및 812)은 애플리케이션(112)이 [Pi,1] || [labeli,1]을 MPC1에 직접 업로드하고 [Pi,2] || [labeli,2]를 MPC2에 직접 업로드하는 대안 프로세스로 대체될 수 있다. 이 대안적인 프로세스는 동작(808, 810 및 812)을 지원하기 위해 컨텐츠 플랫폼(150)의 인프라 비용을 감소시킬 수 있고, MPC1 및 MPC2에서 기계 학습 모델을 트레이닝하거나 업데이트는 것을 시작하기 위한 대기 시간을 감소시킬 수 있다.
모델이 사용자들에 의한 디지털 컴포넌트의 전환에 기초하여 트레이닝되기를 원하는 특정 구현에서, 전환의 발생은 노출 또는 클릭 후 오랜 시간이 지난 후에 종종 발생할 수 있다는 점을 고려할 수 있으며, 이 경우 컨텐츠 플랫폼(150)에 의한 대역폭, 저장 및 처리를 최적화하기 위해 다른 작업을 수행하기 위하여 컨텐츠 플랫폼(150)을 사용 가능하게 유지하는 것이 유리할 수 있다. 이러한 구현에서, 동작(808, 810 및 812)은 (i) 애플리케이션(112)이 사용자 프로파일 및 라벨의 암호화된 셰어들을 제1 당사자 쿠키와 함께 일부 구현에서는 컨텐츠 플랫폼(150)의 일부일 수 있고 다른 구현에서는 컨텐츠 플랫폼(150)과 별개일 수 있는 수요측 플랫폼(DSP)으로 전송하고, 그런 다음 (ii) DSP가 제1 당사자 쿠키를 사용하여 사용자 프로파일 및 레이블의 암호화된 셰어들을 전환에 특정적일 수 있는 상호 작용 데이터(예를 들어, 전환이 30일과 같은 미리 설정된 기간 내에 발생했는지 여부)와 매핑(즉, 연관)시키고, 그리고 (iii) DSP가 이 매핑을 컴퓨팅 시스템(MPC1 또는 MPC2)으로 전송하여 기계 학습 모델을 트레이닝하는 대안 프로세스로 대체될 수 있다. 동작(808, 810 및 812)과 관련하여 설명된 바와 같은 컨텐츠 플랫폼(150)의 다른 기능은 이러한 구현에서 DSP에 의해 수행될 수 있다. 이 설명은 전환의 상호 작용에 중점을 두고 있지만, 이 아키텍처 및 기능은 다른 상호 작용(예를 들어, 노출 또는 클릭) 또는 상호 작용의 임의의 조합(예를 들어, 노출, 클릭 및/또는 전환)으로 확장될 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 기계 학습 모델을 생성한다(814). 사용자 프로파일 데이터에 기초하여 새로운 기계 학습 모델이 생성될 때마다 트레이닝 세션이라고 지지ㅊ될 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 클라이언트 디바이스(110)로부터 수신된 사용자 프로파일의 암호화된 셰어들에 기초하여 기계 학습 모델을 트레이닝할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1 및 MPC2)은 MPC 기술을 사용하여 사용자 프로파일의 셰어들에 기초하여 k-NN 모델을 트레이닝할 수 있다.
암호화 계산을 최소화하거나 최소한 줄이고 따라서 컴퓨팅 시스템(MPC1 및 MPC2)에 가해지는 계산 부담을 줄여 모델 트레이닝 및 추론 모두 동안 사용자 프라이버시와 데이터를 보호하기 위해, MPC 클러스터(130)는 무작위 프로젝션 기술, 예를 들어 심해시(SimHash)를 사용하여 2개의 사용자 프로파일(Pi 및 Pj) 사이의 유사성을 빠르고 안전하며 확률적으로 정량화할 수 있다. 두 사용자 프로파일(Pi 및 Pj) 사이의 유사성은 높은 확률로 두 사용자 프로파일 사이의 코사인 거리에 비례하는 두 사용자 프로파일(Pi 및 Pj)을 나타내는 두 비트 벡터 간의 해밍 거리를 결정함으로써 결정될 수 있다.
개념적으로, 각각의 트레이닝 세션에 대해, m개의 랜덤 투영 초평면(U = {U1, U2, …, Um})이 생성될 수 있다. 랜덤 투영 초평면은 랜덤 투영 평면이라고도 지칭될 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2) 간의 다단계 계산의 한 가지 목적은 k-NN 모델의 트레이닝에 사용된 각 사용자 프로파일(Pi)에 대해 길이가 m인 비트 벡터(Bi)를 생성하는 것이다. 이 비트 벡터(Bi)에서, 각 비트(Bi,j)는 투영 평면(Uj) 중 하나와 사용자 프로파일(Pi)의 내적 부호, 즉
Figure pct00025
에 대한
Figure pct00026
를 나타내며, 여기서
Figure pct00027
은 길이가 같은 두 벡터의 내적을 나타낸다. 즉, 각 비트는 사용자 프로파일(Pi)이 평면(Uj)의 어느 쪽에 위치하는지를 나타낸다. 비트 값 1은 양의 부호를 나타내고 비트 값 0은 음의 부호를 나타낸다.
다단계 계산의 각 끝에서, 두 컴퓨팅 시스템(MPC1 및 MPC2) 각각은 일반 텍스트의 각 사용자 프로파일에 대한 비트 벡터, 각 사용자 프로파일의 셰어 및 각 사용자 프로파일에 대한 라벨의 셰어를 포함하는 중간 결과를 생성한다. 예를 들어, 컴퓨팅 시스템(MPC1)에 대한 중간 결과는 아래 [테이블 11]에 표시된 데이터일 수 있다. 컴퓨팅 시스템(MPC2)은 유사한 중간 결과를 갖지만 각 사용자 프로파일과 각 라벨의 셰어가 다르다. 추가 프라이버시를 보호를 추가하기 위해, MPC 클러스터(130)에 있는 두 서버 각각은 일반 텍스트의 m차원 비트 벡터의 절반만 얻을 수 있다. 예를 들어 컴퓨팅 시스템(MPC1)은 모든 m차원 비트 벡터의 제1 m/2 차원을 얻고 컴퓨팅 시스템(MPC2)은 모든 m차원 비트 벡터의 제2 m/2 차원을 얻는다.
[테이블 11]
일반 텍스트의 비트 벡터 Pi에 대한 MPC1 셰어 labeli에 대한 MPC1 셰어
... ... ...
Bi ... ...
Bi+1 ... ...
... ... ...
단위 길이(i ≠ j)의 두 개의 임의의 사용자 프로파일 벡터(Pi 및 Pj)가 주어지면, 2개의 사용자 프로파일 벡터(Pi 및 Pj)에 대한 비트 벡터(Bi 및 Bj) 사이의 해밍 거리는 랜덤 투영의 수 m이 충분히 크다고 가정할 때 높은 확률로 사용자 프로파일 벡터 Pi와 Pj 사이의 코사인 거리에 비례하는 것으로 나타났다.
위에 표시된 중간 결과에 기초하고 비트 벡터(Bi)가 일반 텍스트이기 때문에, 각 컴퓨팅 시스템(MPC1 및 MPC2)은 예를 들어 트레이닝에 의해 k-NN 알고리즘을 사용하여 각각의 k-NN 모델을 독립적으로 생성할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 동일하거나 다른 k-NN 알고리즘을 사용할 수 있다. k-NN 모델을 트레이닝하기 위한 예시적인 프로세스가 도 10에 도시되어 있고 아래에 설명된다. 일단 k-NN 모델이 트레이닝되면, 애플리케이션(112)은 k-NN 모델에 질의하여 사용자 그룹에 사용자를 추가할지 여부를 결정할 수 있다.
애플리케이션(112)은 MPC 클러스터(130)에 추론 요청을 제출한다(816). 이 예에서, 애플리케이션(112)은 추론 요청을 컴퓨팅 시스템(MPC1)으로 전송한다. 다른 예에서, 애플리케이션(112)은 추론 요청을 컴퓨팅 시스템(MPC2)으로 전송할 수 있다. 애플리케이션(112)은 추론 요청을 제출하라는 컨텐츠 플랫폼(150)으로부터의 요청에 응답하여 추론 요청을 제출할 수 있다. 예를 들어, 컨텐츠 플랫폼(150)은 클라이언트 디바이스(110)의 사용자가 특정 사용자 그룹에 추가되어야 하는지 여부를 결정하기 위해 k-NN 모델을 질의하도록 애플리케이션(112)에 요청할 수 있다. 이 요청은 사용자 그룹에 사용자를 추가해야 하는지 여부를 추론하기 위한 추론 요청으로 지칭될 수 있다.
추론 요청을 개시하기 위해, 컨텐츠 플랫폼(150)은 추론 요청 토큰(Minfer)을 애플리케이션(112)으로 전송할 수 있다. 추론 요청 토큰(Minfer)은 MPC 클러스터(130)의 서버가 애플리케이션(112)이 특정 도메인에 의해 소유된 특정 기계 학습 모델을 질의하도록 승인되었는지 검증할 수 있게 한다. 모델 액세스 제어가 선택 사항(optional)인 경우, 추론 요청 토큰(Minfer)은 선택 사항이다. 추론 요청 토큰(Minfer)는 아래 [테이블 12]에 도시되고 설명된 아이템을 가질 수 있다.
[테이블 12]
아이템 번호 컨텐츠 설명
1 컨텐츠 플랫폼 도메인(예를 들어, eTLD+1 도메인) 컨텐츠 플랫폼을 고유하게 식별하는 컨텐츠 플랫폼의 도메인
2 모델 식별자 컨텐츠 플랫폼의 기계 학습 모델에 대한 고유 식별자
3 k 페치할 최근접 이웃의 수
4 집계함수 k개의 최근접 이웃에 적용된 집계 함수
5 집계 함수 파라미터 집계 함수에 의해 사용되는 추가 파라미터
6 토큰 생성 타임스탬프 이 토큰이 생성된 시간을 나타내는 타임스탬프
7 동작 추론 요청 동작
8 디지털 서명 아이템 1-7에 대한 컨텐츠 플랫폼의 디지털 서명
이 예에서, 추론 요청 토큰(Minfer)은 7개의 아이템과 상기 컨텐츠 플랫폼(150)의 개인키를 사용하여 7개의 아이템에 기초하여 생성된 디지털 서명을 포함한다. eTLD+1은 유효 최상위 도메인(eTLD)에 공용 접미사보다 한 레벨 더 추가한 것이다. eTLD+1의 예는 "example.com"이며, 여기서 ".com"은 최상위 도메인이다.
특정 사용자에 대한 추론을 요청하기 위해, 컨텐츠 플랫폼(150)은 추론 요청 토큰(Minfer)을 생성하고 그 토큰을 사용자의 클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)으로 전송할 수 있다. 일부 구현에서, 컨텐츠 플랫폼(150)은 애플리케이션(112)만이 공개키에 대응하는 자신의 기밀 개인키를 사용하여 추론 요청 토큰(Minfer)를 복호화할 수 있도록 애플리케이션(112)의 공개키를 사용하여 추론 요청 토큰(Minfer)을 암호화한다. 즉, 컨텐츠 플랫폼은 애플리케이션(112)으로, PubKeyEnc(Minfer, application_public_key)를 전송할 수 있다.
애플리케이션(112)은 추론 요청 토큰(Minfer)을 해독하고 검증할 수 있다. 애플리케이션(112)은 자신의 개인키를 사용하여 암호화된 추론 요청 토큰(Minfer)를 해독할 수 있다. 애플리케이션(112)은 (i) 디지털 서명을 생성하는데 사용된 컨텐츠 플랫폼(150)의 개인키에 대응하는 컨텐츠 플랫폼(150)의 공개키를 사용하여 디지털 서명을 검증하고, (ii) 토큰 생성 타임스탬프가 오래되지 않았는지, 예를 들어 타임스탬프가 나타내는 시간이 검증이 진행 중인 현재 시간의 임계값 내에 있는지 확인함으로써 추론 요청 토큰(Minfer)을 검증할 수 있다. 추론 요청 토큰(Minfer)이 유효한 경우, 애플리케이션(112)은 MPC 클러스터(130)에 질의할 수 있다.
개념적으로, 추론 요청에는 기계 학습 모델에 대한 모델 식별자, 현재 사용자 프로파일(Pi), k(페치할 최근접 이웃의 수), 선택적으로 추가 신호(예를 들어, 컨텍스트 신호 또는 디지털 컴포넌트 신호), 집계 함수 파마티터, 및 집계 함수 파라미터가 포함될 수 있다. 그러나, 일반 텍스트 형식의 사용자 프로파일(Pi)이 컴퓨팅 시스템(MPC1 또는 MPC2)으로 누출되는 것을 방지하고 그것에 의해 사용자 프라이버시를 보호하기 위해, 애플리케이션(112)은 사용자 프로파일(Pi)을 MPC1 및 MPC2에 대해 각각 2개의 셰어 [Pi,1] 및 [Pi,2]로 분할할 수 있다. 그런 다음, 애플리케이션(112)은 질의에 대해, 2개의 컴퓨팅 시스템(MPC1 또는 MPC2) 중 하나를, 예를 들어, 램덤하게 또는 의사 램덤하게 선택할 수 있다. 애플리케이션(112)이 컴퓨팅 시스템(MPC1)을 선택한 경우, 애플리케이션(112)은 제1 셰어([Pi,1]) 및 제2 셰어의 암호화된 버전, 예를 들어 PubKeyEncrypt([Pi,2], MPC2)과 함께 컴퓨팅 시스템(MPC1)으로 단일 요청을 전송할 수 있다. 이 예에서, 애플리케이션(112)은 컴퓨팅 시스템(MPC1)이 [Pi,2]에 액세스하는 것을 방지하기 위해 컴퓨팅 시스템(MPC2)의 공개키를 사용하여 제2 셰어([Pi,2])를 암호화하고, 이는 컴퓨팅 시스템(MPC1)이 [Pi,1] 및 [Pi,2]로부터 사용자 프로파일(Pi)을 재구성할 수 있도록 한다.
아래에서 더 상세히 설명되는 바와 같이, 컴퓨팅 시스템(MPC1 및 MPC2)은 사용자 프로파일(Pi)에 대한 k개의 최근접 이웃을 공동으로 계산한다. 컴퓨팅 시스템(MPC1 및 MPC2)은 몇 가지 가능한 기계 학습 기술(예를 들어, 이진 분류, 다중 클래스 분류, 회귀 등) 중 하나를 사용하여 k개의 최근접 이웃 사용자 프로파일에 기초하여 사용자를 사용자 그룹에 추가할지 여부를 결정할 수 있다. 예를 들어, 집계 함수는 기계 학습 기술(예를 들어, 이진, 다중 클래스, 회귀)을 식별할 수 있고 집계 함수 파라미터는 집계 함수를 기반으로 할 수 있다.
일부 구현에서, 집계 함수 파라미터는 컨텐츠 플랫폼(150)이 사용자에 대한 k-NN 모델에 질의하고 있는 사용자 그룹에 대한 사용자 그룹 식별자를 포함할 수 있다. 예를 들어, 컨텐츠 플랫폼(150)은 사용자 그룹 식별자 "하이킹"을 갖는 하이킹과 관련된 사용자 그룹에 사용자를 추가할지 여부를 알고 싶어할 수 있다. 이 예에서, 집계 함수 파라미터는 "하이킹" 사용자 그룹 식별자를 포함할 수 있다. 일반적으로, 컴퓨팅 시스템(MPC1 및 MPC2)은 사용자 그룹의 구성원인 k개의 최근접 이웃의 수에 기초하여, 예를 들어 그들의 라벨에 기초하여 사용자를 사용자 그룹에 추가할지 여부를 결정할 수 있다.
MPC 클러스터(130)는 추론 결과를 애플리케이션(112)에 제공한다(818). 이 예에서, 질의를 수신한 컴퓨팅 시스템(MPC1)은 추론 결과를 애플리케이션(112)으로 전송한다. 추론 결과는 애플리케이션(112)이 사용자를 0개 이상의 사용자 그룹에 추가해야 하는지 여부를 나타낼 수 있다. 예를 들어, 사용자 그룹 결과는 사용자 그룹에 대한 사용자 그룹 식별자를 지정할 수 있다. 그러나, 이 예에서, 컴퓨팅 시스템(MPC1)은 사용자 그룹을 알고 있다. 이를 방지하기 위해, 컴퓨팅 시스템(MPC1)은 추론 결과의 셰어를 계산할 수 있고 컴퓨팅 시스템(MPC2)은 동일한 추론 결과의 다른 셰어를 계산할 수 있다. 컴퓨팅 시스템(MPC2)은 그 셰어의 암호화된 버전을 컴퓨팅 시스템(MPC1)에 제공할 수 있는데, 여기서 셰어는 애플리케이션(112)의 공개키를 사용하여 암호화된다. 컴퓨팅 시스템(MPC1)은 추론 결과의 셰어 및 사용자 그룹 결과의 컴퓨팅 시스템(MPC2)의 셰어의 암호화된 버전을 애플리케이션(112)에 제공할 수 있다. 애플리케이션(112)은 컴퓨팅 시스템(MPC2)의 셰어를 해독하고 두 셰어로부터 추론 결과를 계산할 수 있다. 사용자 그룹에 사용자를 추가할지 여부를 결정하기 위해 k-NN 모델을 질의하는 예시적인 프로세스가 도 11에 도시되어 있고 아래에서 설명된다. 일부 구현에서, 컴퓨팅 시스템(MPC1)이 컴퓨팅 시스템(MPC2)의 결과를 위조하는 것을 방지하기 위해, 컴퓨팅 시스템(MPC2)은 애플리케이션(112)의 공개키를 사용하여 그 결과를 암호화하기 전 또는 후에 결과에 디지털 서명한다. 애플리케이션(112)은 MPC2의 공개키를 사용하여 컴퓨팅 시스템(MPC2)의 디지털 서명을 검증한다.
애플리케이션(112)은 사용자에 대한 사용자 그룹 목록을 업데이트한다(820). 예를 들어, 추론 결과가 특정 사용자 그룹에 사용자를 추가하는 것인 경우, 애플리케이션(112)은 사용자를 사용자 그룹에 추가할 수 있다. 일부 구현에서, 애플리케이션(112)은 사용자 그룹에 사용자를 추가하기 위한 허가를 사용자에게 프롬프트할 수 있다.
애플리케이션(112)은 컨텐츠에 대한 요청을 전송한다(822). 예를 들어, 애플리케이션(112)은 디지털 컴포넌트 슬롯을 갖는 전자 리소스를 로드하는 것에 응답하여 디지털 컴포넌트에 대한 요청을 컨텐츠 플랫폼(150)으로 전송할 수 있다. 일부 구현에서, 요청은 사용자를 구성원으로 포함하는 사용자 그룹에 대한 하나 이상의 사용자 그룹 식별자를 포함할 수 있다. 예를 들어, 애플리케이션(112)은 사용자 그룹 목록으로부터 하나 이상의 사용자 그룹 식별자를 획득하고 그 사용자 그룹 식별자(들)를 요청과 함께 제공할 수 있다. 일부 구현에서, 기술들은 컨텐츠 플랫폼이 사용자 그룹 식별자를 사용자, 애플리케이션(112), 및/또는 요청이 수신되는 클라이언트 디바이스(112)와 연관시킬 수 있는 것을 방지하는데 사용될 수 있다.
컨텐츠 플랫폼(150)은 컨텐츠를 애플리케이션(112)으로 전송한다(824). 예를 들어, 컨텐츠 플랫폼(150)은 사용자 그룹 식별자(들)에 기초하여 디지털 컴포넌트를 선택하고 그 디지털 컴포넌트를 애플리케이션(112)에 제공할 수 있다. 일부 구현에서, 컨텐츠 플랫폼(150)은 애플리케이션(112)과 협력하여 애플리케이션(112) 외부로 사용자 그룹 식별자(들)를 누설하지 않고 사용자 그룹 식별자(들)에 기초하여 디지털 컴포넌트를 선택한다.
애플리케이션(112)은 수신된 컨텐츠를 디스플레이하거나 구현한다(826). 예를 들어, 애플리케이션(112)은 수신된 디지털 컴포넌트를 전자 리소스의 디지털 컴포넌트 슬롯에 디스플레이할 수 있다.
k-NN 모델을 사용하여 사용자 프로파일을 생성하기 위한 예시적인 프로세스
도 9는 사용자 프로파일을 생성하고 사용자 프로파일의 셰어를 MPC 클러스터로 전송하기 위한 예시적인 프로세스(900)를 도시하는 흐름도이다. 프로세스(900)의 동작들은 예를 들어, 도 1의 클라이언트 디바이스(110)에 의해, 예를 들어 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112)에 의해 구현될 수 있다. 프로세스(900)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(900)의 동작들을 수행하게 할 수 있다.
사용자의 클라이언트 디바이스(110)상에서 실행되는 애플리케이션(112)은 이벤트에 대한 데이터를 수신한다(902). 이벤트는 예를 들어, 클라이언트 디바이스(110)에서의 전자 리소스의 프리젠테이션, 클라이언트 디바이스(110)에서의 디지털 컴포넌트의 프리젠테이션, 클라이언트 디바이스(110)에서의 전자 리소스 또는 디지털 컴포넌트와의 사용자 상호 작용, 또는 디지털 컴포넌트에 대한 전환, 또는 제시된 전자 리소스 또는 디지털 컴포넌트와의 사용자 상호 작용 또는 전환의 결여일 수 있다. 사용자에 의한 사용자 상호 작용의 일부 예는 (a) 특정 아이템에 대한 링크 클릭, (b) 예를 들어, 가상 장바구니에 아이템을 추가하거나 아이템을 구매함으로써 특정 아이템에 대한 전환 완료, (c) 미리 설정된 시간 이상 동안 특정 아이템 보기 중 하나 이상과 같이 웹 페이지상에 제시된 특정 아이템과의 상호 작용일 수 있다. 특정 사용자 상호 작용이 결여된(없는) 몇 가지 예는 사용자가 디지털 컴포넌트를 보지만 클릭하지는 않거나, 사용자가 디지털 컴포넌트를 클릭하지만 전환하지 않는(예컨대, 체크아웃 웹 페이지로 이동하기 위해 클릭했지만 아이템을 구매하지 않음)것과 같이 사용자가 일부 상호 작용을 수행하지만 후속 상호 작용이 결여될 수 있다. 전환은 구현에 따라 다르게 정의될 수 있다. 예를 들어, 일부 구현에서, 전환은 사용자가 체크아웃 페이지로 이동하는 것일 수 있다. 특정 구현에서, 전환은 아이템을 구매하려는 사용자일 수 있다. 다른 구현에서, 전환은 아이템을 구매하는 사용자일 수 있다. 이벤트가 발생하는 경우, 컨텐츠 플랫폼(150)은 사용자에 대한 사용자 프로파일을 생성하는데 사용하기 위해 이벤트와 관련된 데이터를 애플리케이션(112)에 제공할 수 있다.
애플리케이션(112)은 각각의 컨텐츠 플랫폼(150)에 대해 상이한 사용자 프로파일을 생성할 수 있다. 즉, 특정 컨텐츠 플랫폼(150)에 대한 사용자의 사용자 프로파일은 특정 컨텐츠 플랫폼(150)으로부터 수신된 이벤트 데이터만을 포함할 수 있다. 이는 다른 컨텐츠 플랫폼의 이벤트와 관련된 데이터를 컨텐츠 플랫폼과 공유하지 않음으로써 사용자 프라이버시를 보호한다. 일부 구현에서, 애플리케이션(112)은 컨텐츠 플랫폼(150)의 요청에 따라 컨텐츠 플랫폼(150)에 의해 소유된 각각의 기계 학습 모델에 대해 상이한 사용자 프로파일을 생성할 수 있다. 디자인 목표에 기초하여, 다른 기계 학습 모델에는 다른 트레이닝 데이터가 필요할 수 있다. 예를 들어, 사용자 그룹에 사용자를 추가할지 여부를 결정하기 위해 제1 모델이 사용될 수 있다. 제2 모델은 사용자가 디지털 컴포넌트와 상호 작용할지 여부를 예측하는데 사용될 수 있다. 이 예에서, 제2 모델에 대한 사용자 프로파일은 제1 모델에 대한 사용자 프로파일이 갖지 않는 추가 데이터, 예를 들어 사용자가 디지털 컴포넌트와 상호 작용했는지 여부를 포함할 수 있다.
컨텐츠 플랫폼(150)은 프로파일 업데이트 토큰(Mupdate)의 형태로 이벤트 데이터를 전송할 수 있다. 프로파일 업데이트 토큰(Mupdate)에는 위의 [테이블 1]에 표시되고 설명된 다음 아이템들이 있다.
모델 식별자는 사용자 프로파일이 트레이닝에 사용되거나 사용자 그룹 추론을 하는데 사용될 기계 학습 모델, 예를 들어 k-NN 모델을 식별한다. 프로파일 레코드는 이벤트에 특정된 데이터, 예를 들어 이벤트 유형, 전자 리소스 또는 디지털 컴포넌트, 이벤트가 발생한 시간, 및/또는 컨텐츠 플랫폼(150)이 기계 학습 모델을 트레이닝하고 사용자 그룹을 추론하는데 사용하기를 원하는 다른 적절한 이벤트 데이터를 포함하는 n차원 특징 벡터이다. 디지털 서명은 컨텐츠 플랫폼(150)의 개인키를 이용하여 7개 아이템에 기초하여 생성된다.
일부 구현에서, 전송 동안 업데이트 토큰(Mupdate)을 보호하기 위해, 컨텐츠 플랫폼(150)은 업데이트 토큰(Mupdate)을 애플리케이션(112)으로 전송하기 전에 업데이트 토큰(Mupdate)를 암호화한다. 예를 들어, 컨텐츠 플랫폼(150)은 애플리케이션의 공개키, 예를 들어, PubKeyEnc(Mupdate, application_public_key)를 사용하여 업데이트 토큰(Mupdate)을 암호화할 수 있다.
일부 구현에서, 컨텐츠 플랫폼(150)은 프로파일 업데이트 토큰(Mupdate)의 형태로 이벤트 데이터 또는 업데이트 요청을 인코딩하지 않고 이벤트 데이터를 애플리케이션(112)으로 전송할 수 있다. 예를 들어, 애플리케이션(112) 내에서 실행되는 컨텐츠 플랫폼(150)에서 발신된 스크립트는 스크립트 API를 통해 이벤트 데이터 및 업데이트 요청을 애플리케이션(112)으로 직접 전송할 수 있으며, 여기서 애플리케이션(112)은 이벤트 데이터 및 업데이트 요청을 위조 또는 누출로부터 보호하기 위해 W3C 출처 기반 보안 모델 및/또는 HTTPS에 의존한다.
애플리케이션(112)은 이벤트에 대한 데이터를 저장한다(904). 이벤트 데이터가 암호화된 경우, 애플리케이션(112)은 그 이벤트 데이터를 암호화하는데 사용된 공개키에 대응하는 자신의 개인키를 사용하여 이벤트 데이터를 해독할 수 있다. 이벤트 데이터가 업데이트 토큰(Mupdate)의 형태로 전송된 경우, 애플리케이션(112)은 이벤트 데이터를 저장하기 전에 업데이트 토큰(Mupdate)를 검증할 수 있다. 애플리케이션(112)은 (i) 디지털 서명을 생성하는데 사용된 컨텐츠 플랫폼(150)의 개인키에 대응하는 컨텐츠 플랫폼(150)의 공개키를 사용하여 디지털 서명을 검증하고 (ii) 토큰 생성 타임스탬프가 오래되지 않았는지, 예를 들어 타임스탬프가 나타내는 시간이 검증이 진행되는 현재 시간의 임계값 내에 있는지 확인함으로써 업데이트 토큰(Mupdate)을 검증할 수 있다. 만약 업데이트 토큰(Mupdate)이 유효하면, 애플리케이션(112)은 예를 들어 n차원 프로파일 레코드를 저장함으로써 이벤트 데이터를 저장할 수 있다. 만약 임의의 검증이 실패하면, 애플리케이션(112)은 예를 들어 이벤트 데이터를 저장하지 않음으로써 업데이트 요청을 무시할 수 있다.
각각의 기계 학습 모델에 대해, 예를 들어 각각의 고유한 모델 식별자에 대해, 애플리케이션(112)은 해당 모델에 대한 이벤트 데이터를 저장할 수 있다. 예를 들어, 애플리케이션(112)은 각각의 고유 모델 식별자에 대해 n차원 특징 벡터의 세트(예를 들어, 업데이트 토큰의 프로파일 레코드)를 포함하는 데이터 구조 및 각각의 특징 벡터에 대해 만료 시간을 유지할 수 있다. 모델 식별자에 대한 데이터 구조의 예는 위의 [테이블 2]에 도시되어 있다.
유효한 업데이트 토큰(Mupdate)를 수신하면, 애플리케이션(112)은 업데이트 토큰(Mupdate)의 특징 벡터 및 만료 시간을 데이터 구조에 추가함으로써 업데이트 토큰(Mupdate)에 포함된 모델 식별자에 대한 데이터 구조를 업데이트할 수 있다. 주기적으로, 애플리케이션(112)은 저장 크기를 줄이기 위해 데이터 구조로부터 만료된 특징 벡터를 제거할 수 있다.
애플리케이션(112)은 사용자 프로파일을 생성할지 여부를 결정한다(906). 예를 들어, 애플리케이션(112)은 컨텐츠 플랫폼(150)으로부터의 요청에 응답하여 특정 기계 학습 모델에 대한 사용자 프로파일을 생성할 수 있다. 요청은 사용자 프로파일을 생성하고 사용자 프로파일의 셰어들을 컨텐츠 플랫폼(150)에 반환하는 것일 수 있다. 일부 구현에서, 애플리케이션(112)은 생성된 사용자 프로파일을, 예를 들어 컨텐츠 플랫폼(150)으로 전송하기 보다는 MPC 클러스터(130)에 직접 업로드할 수 있다. 사용자 프로파일의 셰어를 생성하고 반환하라는 요청의 보안을 보장하기 위해, 컨텐츠 플랫폼(150)은 업로드 토큰(Mupload)을 애플리케이션(112)으로 전송할 수 있다.
업로드 토큰(Mupload)은 업데이트 토큰(Mupdate)과 유사한 구조를 가질 수 있지만 동작이 다르다(예를 들어, "사용자 프로파일 누적" 대신 "서버 업데이트"). 업로드 토큰(Mupload)에는 또한 동작 지연을 위한 추가 아이템이 포함될 수 있다. 동작 지연은 애플리케이션(112)이 더 많은 이벤트 데이터, 예를 들어, 더 많은 특징 벡터를 누적하는 동안 애플리케이션(112)이 사용자 프로파일의 셰어의 계산 및 업로드를 지연하도록 지시할 수 있다. 이를 통해 기계 학습 모델은 일부 중요한 이벤트(예를 들어, 사용자 그룹 가입) 직전과 직후에 사용자 이벤트 데이터를 캡처할 수 있다. 동작 지연은 지연 기간을 지정할 수 있다. 이 예에서, 디지털 서명은 [테이블 1]에 있는 다른 7개의 아이템과 컨텐츠 플랫폼의 개인키를 이용한 동작 지연에 기초하여 생성될 수 있다. 컨텐츠 플랫폼(150)은 전송 동안 업로드 토큰(Mupload)를 보호하기 위해 애플리케이션의 공개키를 사용하여 업데이트 토큰(Mupdate), 예를 들어 PubKeyEnc(Mupload, application_public_key)와 유사한 방식으로 업로드 토큰(Mupload)를 암호화할 수 있다.
애플리케이션(112)은 업로드 토큰(Mupload)을 수신하고, 암호화된 경우 업로드 토큰(Mupload)를 해독하고, 업로드 토큰(Mupload)을 검증할 수 있다. 이 검증은 업데이트 토큰(Mupdate)이 검증되는 방식과 유사할 수 있다. 애플리케이션(112)은 (i) 디지털 서명을 생성하는데 사용된 컨텐츠 플랫폼(150)의 개인키에 대응하는 컨텐츠 플랫폼(150)의 공개키를 사용하여 디지털 서명을 확인하고 (ii) 토큰 생성 타임스탬프가 오래되지 않았는지, 예를 들어 타임스탬프가 표시하는 시간은 검증이 진행되는 현재 시간의 임계값 내에 있는지 확인함으로써 업로드 토큰(Mupload)를 검증할 수 있다. 만약 업로드 토큰(Mupload)이 유효하면, 애플리케이션(112)은 사용자 프로파일을 생성할 수 있다. 만약 임의의 검증이 실패하면, 애플리케이션(112)은 예를 들어 사용자 프로파일을 생성하지 않음으로써 업로드 요청을 무시할 수 있다.
일부 구현에서, 컨텐츠 플랫폼(150)은 프로파일 업로드 토큰(Mupload)의 형태로 업로드 요청을 인코딩하지 않고 사용자 프로파일을 업로드하도록 애플리케이션(112)에게 요청할 수 있다. 예를 들어, 애플리케이션(112) 내에서 실행되는 컨텐츠 플랫폼(150)에서 시작된 스크립트는 스크립트 API를 통해 업로드 요청을 애플리케이션(112)으로 직접 전송할 수 있으며, 여기서 애플리케이션(112)은 위조 또는 누출로부터 업로드 요청을 보호하기 위해 W3C 출처 기반 보안 모델 및/또는 HTTPS에 의존한다.
사용자 프로파일을 생성하지 않기로 결정한 경우, 프로세스(900)는 동작(902)으로 돌아가 컨텐츠 플랫폼(150)으로부터 추가 이벤트 데이터를 기다릴 수 있다. 사용자 프로파일을 생성하기로 결정한 경우, 애플리케이션(112)은 사용자 프로파일을 생성한다(908).
애플리케이션(112)은 저장된 이벤트 데이터, 예를 들어, [테이블 2]에 도시된 데이터 구조에 저장된 데이터에 기초하여 사용자 프로파일을 생성할 수 있다. 애플리케이션(112)은 요청에 포함된 모델 식별자, 예를 들어 업로드 토큰(Mupload)의 아이템 1의 컨텐츠 플랫폼 eTLD+1 도메인 및 아이템 2의 모델 식별자에 기초하여 적절한 데이터 구조에 액세스할 수 있다.
애플리케이션(112)은 아직 만료되지 않은 학습 기간의 데이터 구조에서 n차원 특징 벡터를 집계함으로써 사용자 프로파일을 계산할 수 있다. 예를 들어, 사용자 프로파일은 아직 만료되지 않은 학습 기간의 데이터 구조에 있는 n차원 특징 벡터의 평균일 수 있다. 그 결과는 프로파일 공간에서 사용자를 나타내는 n차원 특징 벡터이다. 선택적으로, 애플리케이션(112)은 예를 들어 L2 정규화를 사용하여 n차원 특징 벡터를 단위 길이로 정규화할 수 있다. 컨텐츠 플랫폼(150)은 선택적 학습 기간을 지정할 수 있다.
일부 구현에서, 감쇠율(decay rates)이 사용자 프로파일을 계산하는데 사용될 수 있다. MPC 클러스터(130)를 사용하여 기계 학습 모델을 트레이닝하는 많은 컨텐츠 플랫폼(150)이 있을 수 있고 각 컨텐츠 플랫폼(150)이 다수의 기계 학습 모델을 가질 수 있기 때문에, 사용자 특징 벡터 데이터를 저장하는 것은 상당한 데이터 저장 요구 사항을 초래할 수 있다. 감쇠 기술을 사용하면 기계 학습 모델을 트레이닝하기 위한 사용자 프로파일을 생성할 목적으로 각 클라이언트 디바이스(110)에 저장되는 데이터의 양을 실질적으로 줄일 수 있다.
주어진 기계 학습 모델에 대해 k개의 특징 벡터 {F1, F2, … Fk}가 있고, 이들 각각은 n차원 벡터 및 그들의 대응하는 연령(age)(record_age_in_secondsi)이라고 가정한다. 애플리케이션(112)은 아래의 관계식 13을 사용하여 사용자 프로파일을 계산할 수 있다.
관계식 13:
Figure pct00028
이 관계식에서, 파라미터(record_age_in_secondsi)는 프로파일 레코드가 클라이언트 디바이스(110)에 저장된 시간(초)이고, 파라미터(decay_rate_in_seconds)는 (예를 들어, 업데이트 토큰(Mupdate)의 아이템 6에서 수신된) 초 단위의 프로파일 레코드의 감쇠율이다. 이러한 방식으로, 더 최근의 특징 벡터가 더 많은 가중치를 가진다. 이것은 또한 애플리케이션(112)이 특징 벡터를 저장하는 것을 피하고 일정한 저장소가 있는 프로파일 레코드만을 저장할 수 있게 한다. 애플리케이션(112)은 각 모델 식별자에 대한 다수의 개별 특징 벡터가 아니라 각 모델 식별자에 대한 n차원 벡터(P) 및 타임스탬프(user_profile_time)만 저장해야 한다.
n차원 벡터 사용자 프로파일(P) 및 타임스탬프를 초기화하기 위해, 애플리케이션은 벡터(P)를 각 차원의 값이 0인 n차원의 벡터로 설정하고 user_profile_time을 epoch로 설정할 수 있다. 언제든지 새로운 특징 벡터(Fx)로 사용자 프로파일(P)를 업데이트하기 위해, 애플리케이션(112)은 아래의 관계식 14를 사용할 수 있다:
관계식 14:
Figure pct00029
애플리케이션(112)은 또한 관계식 14로 사용자 프로파일을 업데이트할 때 사용자 프로파일 시간을 현재 시간(current_time)으로 업데이트할 수 있다. 애플리케이션(112)이 위의 감쇠율 알고리즘으로 사용자 프로파일을 계산하는 경우 동작(904)이 생략된다는 점에 유의한다.
애플리케이션(112)은 사용자 프로파일의 셰어들을 생성한다(910). 애플리케이션(112)은 의사랜덤 함수를 사용하여 사용자 프로파일(Pi)(예를 들어, n차원 벡터 P)를 셰어들로 분할할 수 있다. 즉, 애플리케이션(112)은 의사 난수 함수 PRF(Pi)를 사용하여 사용자 프로파일(Pi)의 2개의 셰어 {[Pi,1],[Pi,2]}를 생성할 수 있다. 정확한 분할은 애플리케이션(112)에 의해 사용되는 비밀 공유 알고리즘 및 암호화 라이브러리에 따라 달라질 수 있다. 일부 구현에서, 애플리케이션은 새미르의 비밀 공유 체계를 사용한다. 하나 이상의 라벨의 셰어들이 제공되고 있는 경우, 애플리케이션(112)은 또한 그 라벨들의 셰어도 생성할 수 있다.
애플리케이션(112)은 사용자 프로파일(Pi)의 셰어들 {[Pi,1],[Pi,2]}을 암호화한다(912). 예를 들어, 위에서 설명한 바와 같이, 애플리케이션(112)은 사용자 프로파일과 라벨의 셰어들을 포함하는 복합 메시지를 생성할 수 있으며 복합 메시지를 암호화하여 암호화 결과인 PubKeyEncrypt([Pi,1] || [labeli,1], MPC1) 및 PubKeyEncrypt([Pi,2] || [labeli,2], MPC2)를 획득할 수 있다. MPC 클러스터(130)의 암호화 키를 사용하여 셰어들을 암호화하는 것은 컨텐츠 플랫폼(150)이 일반 텍스트의 사용자 프로파일에 액세스할 수 있는 것을 방지한다. 애플리케이션(112)은 암호화된 셰어들을 컨텐츠 플랫폼으로 전송한다(914). 애플리케이션(112)이 비밀 셰어들을 컴퓨팅 시스템(MPC1 및 MPC2)으로 직접 전송하는 경우 동작(914)이 생략된다는 점에 유의한다.
k-NN 모델 생성 및 사용을 위한 예시적인 프로세스
도 10은 기계 학습 모델을 생성하기 위한 예시적인 프로세스(1000)를 도시하는 흐름도이다. 프로세스(1000)의 동작들은 예를 들어, 도 1의 MPC 클러스터(130)에 의해 구현될 수 있다. 프로세스(1000)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(1000)의 동작들을 수행하게 할 수 있다.
MPC 클러스터(130)는 사용자 프로파일의 셰어들을 획득한다(1002). 컨텐츠 플랫폼(150)은 사용자 프로파일의 셰어들을 MPC 클러스터(130)로 전송함으로써 MPC 클러스터(130)가 기계 학습 모델을 트레이닝하도록 요청할 수 있다. 컨텐츠 플랫폼(150)은 주어진 기간 동안 기계 학습 모델을 위해 클라이언트 디바이스(110)로부터 수신된 암호화된 셰어들에 액세스하고 해당 셰어들을 MPC 클러스터(130)에 업로드할 수 있다.
예를 들어, 컨텐츠 플랫폼(150)은 컴퓨팅 시스템(MPC1)으로, 사용자 프로파일의 암호화된 제1 셰어와 각 사용자 프로파일(Pi)에 대한 라벨의 암호화된 제1 셰어(예를 들어, PubKeyEncrypt([Pi,1] || [labeli,1]))를 전송할 수 있다. 유사하게, 컨텐츠 플랫폼(150)은 컴퓨팅 시스템(MPC2)으로, 사용자 프로파일의 암호화된 제2 셰어와 각 사용자 프로파일(Pi)에 대한 라벨의 암호화된 제2 셰어(예를 들어, PubKeyEncrypt([Pi,2] || [labeli,2]))를 전송할 수 있다.
애플리케이션(112)이 사용자 프로파일의 비밀 셰어들을 MPC 클러스터(130)로 직접 전송하는 일부 구현에서, 컨텐츠 플랫폼(150)은 트레이닝 요청을 MPC 클러스터(130)에 전송함으로써 MPC 클러스터(130)가 기계 학습 모델을 트레이닝하도록 요청할 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 랜덤 투영 평면을 생성한다(1004). 컴퓨팅 시스템(MPC1 및 MPC2)은 협력하여 m개의 랜덤 투영 평면(U = {U1, U2, …, Um})을 생성할 수 있다. 이러한 랜덤 투영 평면은 두 컴퓨팅 시스템(MPC1 및 MPC2) 사이의 비밀 셰어로 유지되어야 한다. 일부 구현에서, 컴퓨팅 시스템(MPC1 및 MPC2)은 디피 헬먼(ie-Hellman) 키 교환 기술을 사용하여 랜덤 투영 평면을 생성하고 그의 비밀을 유지한다.
아래에서 더 자세히 설명되는 바와 같이, 컴퓨팅 시스템(MPC1 및 MPC2)은 각 사용자 프로파일의 셰어를 각 랜덤 투영 평면에 투영하고, 각 랜덤 투영 평면에 대해, 사용자 프로파일 셰어가 랜덤 투영 평면의 한 면에 있는지 여부를 결정한다. 그런 다음 각 컴퓨팅 시스템(MPC1 및 MPC2)은 각 랜덤 투영의 결과에 기초하여 사용자 프로파일의 비밀 셰어들로부터 비밀 셰어의 비트 벡터를 구축할 수 있다. 사용자의 비트 벡터에 대한 부분 지식(예를 들어, 사용자 프로파일(Pi)이 투영 평면(Uk)의 한 면에 있는지 여부)를 통해 컴퓨팅 시스템(MPC1 또는 MPC2)은 사용자 프로파일(Pi)이 단위 길이를 갖는다는 사전 지식에 증가되는 Pi 분포에 관한 일부 지식을 얻을 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)이 이 정보에 액세스하는 것을 방지하기 위해(예를 들어, 사용자 프라이버시 보호 및/또는 데이터 보안을 위해 이것이 필요하거나 선호되는 구현에서), 일부 구현에서, 랜덤 투영 평면은 비밀 셰어에 있으므로 컴퓨팅 시스템(MPC1 및 MPC2) 모두 일반 텍스트의 랜덤 투영 평면에 액세스할 수 없다. 다른 구현에서, 선택적인 동작들(1006-1008)에 기술된 바와 같이, 비밀 공유 알고리즘을 사용하여 랜덤 프로젝션 결과에 랜덤 비트 플리핑(flipping, 뒤집기) 패턴이 적용될 수 있다.
비밀 셰어를 통해 비트를 플리핑하는 방법을 설명하기 위해, 동일한 확률로 값이 0이거나 1인 두 개의 비밀(x 및 y)이 있다고 가정한다. 동등성(등식) 연산 [x] == [y]는 y == 0이면 x의 비트를 뒤집고 y == 1이면 x의 비트를 유지한다. 이 예에서, 연산은 50% 확률로 비트(x)를 무작위로 뒤집는다. 이 동작은 두 컴퓨팅 시스템(MPC1 및 MPC2) 간에 원격 프로시저 호출(RPC)이 필요할 수 있으며 라운드 수는 선택한 데이터 크기와 비밀 공유 알고리즘에 따라 다르다.
각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 m-차원 비밀 벡터를 생성한다(1006). 컴퓨팅 시스템(MPC1)은 m 차원 비밀 벡터 {S1, S2, … Sm}를 생성할 수 있으며, 여기서 각 엘리먼트(Si)는 동일한 확률로 0 또는 1의 값을 갖는다. 컴퓨팅 시스템(MPC1)은 m차원 벡터를 2개의 셰어인, 제1 셰어 {[S1,1], [S2,1], … [Sm,1]} 및 제2 셰어 {[S1,2], [S2, 2], … [Sm,2]}로 분할한다. 컴퓨팅 시스템(MPC1)은 제1 셰어를 비밀로 유지하고 제2 셰어를 컴퓨팅 시스템(MPC2)에 제공할 수 있다. 그런 다음 컴퓨팅 시스템(MPC1)은 m차원 벡터 {S1, S2, … Sm}를 폐기할 수 있다.
컴퓨팅 시스템(MPC2)은 m-차원 비밀 벡터 {T1, T2, … Tm}을 생성할 수 있으며, 여기서 각 엘리먼트(Ti)는 0 또는 1의 값을 갖는다. 컴퓨팅 시스템(MPC2)은 m차원 벡터를 2개의 셰어인, 제1 셰어 {[T1,1], [T2,1], … [Tm,1]} 및 제2 셰어 {[T1,2], [T2,2], … [Tm,2]}로 분할한다. 컴퓨팅 시스템(MPC2)은 제1 셰어를 비밀로 유지하고 제2 셰어를 컴퓨팅 시스템(MPC1)에 제공할 수 있다. 그런 다음 컴퓨팅 시스템(MPC2)은 m차원 벡터 {T1, T2, … Tm}을 폐기할 수 있다.
2개의 컴퓨팅 시스템(MPC1 및 MPC2)은 보안 MPC 기술을 사용하여 비트 플립핑 패턴의 셰어들을 계산한다(1008). 컴퓨팅 시스템(MPC1 및 MPC2)은 컴퓨팅 시스템(MPC1 및 MPC2) 사이의 다수의 왕복이 있는 보안 셰어 MPC 동등성 테스트를 사용하여 비트 플리핑 패턴의 셰어들을 계산할 수 있다. 비트 플립핑 패턴은 위에서 설명한 [x] == [y] 연산을 기반으로 할 수 있다. 즉, 비트 플리핑 패턴은 {S1 == T1, S2 == T2, … Sm == Tm}일 수 있다. 각 STi = (Si == Ti)라고 하자. 각 STi는 0 또는 1의 값을 갖는다. MPC 연산이 완료된 후, 컴퓨팅 시스템(MPC1)은 비트 플립핑 패턴의 제1 셰어 {[ST1,1], [ST2,1], … [STm,1]}를 갖고, 컴퓨팅 시스템(MPC2)은 비트 플리핑 패턴의 제2 셰어 {[ST1,2], [ST2,2], … [STm,2]}를 갖는다. 각 STi의 셰어는 2개의 컴퓨팅 시스템(MPC1 및 MPC2)이 2개의 컴퓨팅 시스템(MPC1 및 MPC2) 중 하나에 불투명(opaque)한 방식으로 비트 벡터의 비트를 뒤집을 수 있게 한다.
각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 각 사용자 프로파일의 셰어를 각각의 랜덤 투영 평면에 투영한다(1010). 즉, 컴퓨팅 시스템(MPC1)이 셰어를 수신한 각 사용자 프로파일에 대해, 컴퓨팅 시스템(MPC1)은 셰어[Pi,1]를 각 투영 평면(Uj)에 투영할 수 있다. 사용자 프로파일의 각 셰어에 대해 그리고 각 랜덤 투영 평면(Uj)에 대해 이 동작을 수행하면 z x m 차원의 행렬(R)이 생성되며, 여기서 z는 사용 가능한 사용자 프로파일의 수이고 m은 랜덤 투영 평면의 수이다. 행렬(R)의 각 엘리먼트(Ri,j)는 투영 평면(Uj)과 셰어([Pi,1]) 사이의 내적, 예를 들어, Ri,j =
Figure pct00030
를 계산함으로써 결정될 수 있다. 연산(
Figure pct00031
)은 길이가 같은 두 벡터의 내적을 나타낸다.
비트 플리핑이 사용되는 경우, 컴퓨팅 시스템(MPC1)은 컴퓨팅 시스템(MPC1 및 MPC2) 사이에 비밀리에 공유되는 비트 플리핑 패턴을 사용하여 행렬의 엘리먼트(Ri,j) 중 하나 이상의 값을 수정할 수 있다. 행렬(R)의 각 엘리먼트(Ri,j)에 대해, 컴퓨팅 시스템(MPC1)은 엘리먼트(Ri,j)의 값으로서 [STj,1] == sign(Ri,j)를 계산할 수 있다. 따라서, 비트 플리핑 패턴에서 비트 [STj,1]의 해당 비트가 0의 값을 갖는 경우 엘리먼트(Ri,j)의 부호가 플리핑(반전)된다. 이 계산에는 컴퓨팅 시스템(MPC2)에 대한 다수의 RPC가 필요할 수 있다.
유사하게, 컴퓨팅 시스템(MPC2)이 셰어를 수신한 각각의 사용자 프로파일에 대해, 컴퓨팅 시스템(MPC2)은 셰어[Pi,2]를 각 투영 평면(Uj)에 투영할 수 있다. 사용자 프로파일의 각 셰어에 대해 그리고 각 랜덤 투영 평면(Uj)에 대해 이 동작을 수행하면 z x m 차원의 행렬(R')이 생성되며, 여기서 z는 사용 가능한 사용자 프로파일의 수이고 m은 랜덤 투영 평면의 수이다. 행렬(R')의 각 엘리먼트(Ri,j')는 투영 평면(Uj)과 셰어([Pi,2]) 사이의 내적, 예를 들어 Ri,'j =
Figure pct00032
를 계산함으로써 결정될 수 있다. 연산(
Figure pct00033
)은 길이가 같은 두 벡터의 내적을 나타낸다.
비트 플리핑이 사용되는 경우, 컴퓨팅 시스템(MPC2)은 컴퓨팅 시스템(MPC1 및 MPC2) 사이에서 비밀리에 공유되는 비트 플리핑 패턴을 사용하여 행렬의 엘리먼트(Ri,j') 중 하나 이상의 값을 수정할 수 있다. 행렬(R)의 각 엘리먼트(Ri,j')에 대해, 컴퓨팅 시스템(MPC2)은 엘리먼트(Ri,j')의 값으로서 [STj,2] == sign(Ri,j')를 계산할 수 있다. 따라서, 비트 플리핑 패턴에서 비트(STj)의 해당 비트가 0 값을 갖는 경우 엘리먼트(Ri,j')의 부호가 플핑된된다. 이 계산에는 컴퓨팅 시스템(MPC1)에 대한 다수의 RPC가 필요할 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 비트 벡터를 재구성한다(1012). 컴퓨팅 시스템(MPC1 및 MPC2)은 정확히 동일한 크기를 갖는 행렬(R 및 R')에 기초하여 사용자 프로파일에 대한 비트 벡터를 재구성할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)은 행렬(R)의 열의 일부를 전송할 수 있고 컴퓨팅 시스템(MPC2)은 행렬(R')의 열의 나머지 부분을 MPC1으로 전송할 수 있다. 특정 예에서, 컴퓨팅 시스템(MPC1)은 행렬(R)의 열들의 제1 절반(first half)을 컴퓨팅 시스템(MPC2)으로 전송할 수 있고 컴퓨팅 시스템(MPC2)은 행렬(R')의 열들의 제2 절반(second half)을 MPC1로 전송할 수 있다. 이 예에서는 열들이 가로(수평) 재구성을 위해 사용되고 사용자 프라이버시를 보호하기 위해 선호되지만 세로(수직) 재구성을 위해 다른 예제에서는 행들이 사용될 수 있다.
이 예에서, 컴퓨팅 시스템(MPC2)은 행렬(R')의 열들의 제1 절반을 컴퓨팅 시스템(MPC1)으로부터 수신된 행렬(R)의 열들의 제1 절반과 결합하여 일반 텍스트의 비트 벡터의 제1 절반(즉, m/2 차원)을 재구성할 수 있다. 유사하게, 컴퓨팅 시스템(MPC1)은 행렬(R)의 열들의 제2 절반을 컴퓨팅 시스템(MPC2)으로부터 수신된 행렬(R')의 열들의 제2 절반과 결합하여 일반 텍스트로 된 비트 벡터의 제2 절반(즉, m/2 차원)를 재구성할 수 있다. 개념적으로, 컴퓨팅 시스템(MPC1 및 MPC2)은 이제 두 개의 행렬(R 및 R')에서 대응하는 셰어를 결합하여 일반 텍스트의 비트 행렬(B)을 재구성한다. 이 비트 행렬(B)은 기계 학습 모델을 위한 컨텐츠 플랫폼(150)으로부터 셰어들이 수신된 각 사용자 프로파일에 대한 투영 결과(각 투영 평면에 투영됨)의 비트 벡터를 포함한다. MPC 클러스터(130)의 2개의 서버 각각은 일반 텍스트의 비트 행렬(B)의 절반을 소유한다.
그러나, 비트 플리핑이 사용되는 경우, 컴퓨팅 시스템(MPC1 및 MPC2)은 기계 학습 모델에 대해 고정된 랜덤 패턴으로 행렬(R 및 R')에서 플리핑된 엘리먼트 비트를 갖는다 이 랜덤 비트 플리핑 패턴은 컴퓨팅 시스템(MPC1 및 MPC2) 어느 것도 투영 결과의 비트 벡터로부터 원래 사용자 프로파일을 추론할 수 없도록 두 컴퓨팅 시스템(MPC1 및 MPC2) 중 하나에 대해 불투명(opaque)하다. 암호 설계는 MPC1 또는 MPC2가 비트 벡터를 수평으로 분할하여 원래 사용자 프로파일을 추론하는 것을 방지한다. 즉, 컴퓨팅 시스템(MPC1)은 일반 텍스트로 투영 결과의 비트 벡터의 제2 절반을 보유하고 컴퓨팅 시스템(MPC2)은 일반 텍스트로 투영 결과의 비트 벡터의 제1 절반을 보유한다.
컴퓨팅 시스템(MPC1 및 MPC2)은 기계 학습 모델을 생성한다(1014). 컴퓨팅 시스템(MPC1)은 비트 벡터의 제2 절반을 사용하여 k-NN 모델을 생성할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 비트 벡터의 제1 절반을 사용하여 k-NN 모델을 생성할 수 있다. 비트 플립핑과 행렬의 수평 분할을 사용하여 모델을 생성하는 것은 모델 생성에 사용된 사용자 프로파일의 비밀을 보호하기 위해 심층 방어 원칙(defense-in-depth principle)을 적용한다.
일반적으로, 각 k-NN 모델은 사용자 세트의 사용자 프로파일 간의 코사인 유사성(또는 거리)을 나타낸다. 컴퓨팅 시스템(MPC1)에 의해 생성된 k-NN 모델은 비트 벡터의 제2 절반 간의 유사성을 나타내고 컴퓨팅 시스템(MPC2)에 의해 생성된 k-NN 모델은 비트 벡터의 제1 절반 간의 유사성을 나타낸다. 예를 들어, 각 k-NN 모델은 비트 벡터의 절반 사이에 코사인 유사성을 정의할 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)에 의해 생성된 2개의 k-NN 모델은 전술한 바와 같은 고유한 모델 식별자를 갖는 k-NN 모델로 지칭될 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 모델을 생성하는데 사용된 각 사용자 프로파일에 대한 라벨의 셰어 및 그들의 모델을 저장할 수 있다. 그런 다음, 컨텐츠 플랫폼(150)은 모델에 질의하여 사용자의 사용자 그룹에 대한 추론을 할 수 있다.
k-NN 모델을 사용하여 사용자 그룹을 추론하는 예시적인 프로세스
도 11은 기계 학습 모델을 사용하여 사용자 그룹에 사용자를 추가하기 위한 예시적인 프로세스(1100)를 도시하는 흐름도이다. 프로세스(1100)의 동작들은 예를 들어, 도 1의 MPC 클러스터(130) 및 클라이언트 디바이스(110), 예를 들어 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션(112)에 의해 구현될 수 있다. 프로세스(1100)의 동작들은 또한 비-일시적일 수 있는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 명령들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령들의 실행은 하나 이상의 데이터 처리 장치로 하여금 프로세스(1100)의 동작들을 수행하게 할 수 있다.
MPC 클러스터(130)는 주어진 사용자 프로파일에 대한 추론 요청을 수신한다(1102). 사용자의 클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)은 예를 들어 컨텐츠 플랫폼(150)으로부터의 요청에 응답하여 추론 요청을 MPC 클러스터(130)로 전송할 수 있다. 예를 들어, 컨텐츠 플랫폼(150)은 애플리케이션(112)이 추론 요청을 MPC 클러스터(130)에 제출하도록 요청하기 위해 업로드 토큰(Minfer)을 애플리케이션(112)으로 전송할 수 있다. 추론 요청은 사용자를 원하는 수의 사용자 그룹에 추가해야 하는지 여부를 질의하는 것일 수 있다.
추론 요청 토큰(Minfer)은 사용자의 주어진 사용자 프로파일의 셰어들, 기계 학습 모델(예를 들어, k-NN 모델)의 모델 식별자 및 추론에 사용할 소유자 도메인, 추론에 사용할 주어진 사용자 프로파일의 k개의 최근접 이웃, 추가 신호(예를 들어, 컨텍스트 또는 디지털 컴포넌트 신호), 추론에 사용할 집계 함수 및 추론에 사용할 집계 함수 파라미터, 및 소유자 도메인 기밀 개인키를 사용하여 소유자 도메인에서 생성한 위의 모든 정보에 대한 서명을 포함할 수 있다.
상술한 바와 같이, 일반 텍스트 형태의 주어진 사용자 프로파일(Pi)이 컴퓨팅 시스템(MPC1 또는 MPC2)에 누출되는 것을 방지하고 이에 의해 사용자 프라이버시를 보호하기 위해, 애플리케이션(112)은 주어진 사용자 프로파일(Pi)을 MPC1 및 MPC2에 대해 각각 2개의 셰어([Pi,1] 및 [Pi,2])로 분할할 수 있다. 그런 다음 애플리케이션(112)은 주어진 사용자 프로파일의 제1 셰어 [Pi,1] 및 주어진 사용자 프로파일의 제2 셰어의 암호화된 버전, 예를 들어 PubKeyEncrypt([Pi,2], MPC2)으로 컴퓨팅 시스템(MPC1)에 단일 추론 요청을 전송할 수 있다. 추론 요청은 또한 MPC 클러스터(130)가 추론 요청을 인증할 수 있도록 추론 요청 토큰(Minfer)을 포함할 수 있다. 제1 셰어와 암호화된 제2 셰어를 포함하는 추론 요청을 전송함으로써, 애플리케이션(112)에 의해 전송된 발신 요청의 수가 감소되고 결과적으로 클라이언트 디바이스(110)에서 계산 및 배터리가 절약된다.
다른 구현에서, 애플리케이션(112)은 주어진 사용자 프로파일의 제1 셰어([Pi,1])를 컴퓨팅 시스템(MPC1)으로 전송하고 주어진 사용자 프로파일의 제2 셰어([Pi,2])를 컴퓨팅 시스템(MPC2)으로 전송할 수 있다. 주어진 사용자 프로파일의 제2 셰어([Pi,2])를 컴퓨팅 시스템(MPC1)을 거치지 않고 컴퓨팅 시스템(MPC2)으로 전송함으로써, 제2 셰어는 컴퓨팅 시스템(MPC1)이 주어진 사용자 프로파일의 제2 셰어([Pi,2])에 액세스하는 것을 방지하기 위해 암호화될 필요가 없다.
각각의 컴퓨팅 시스템(MPC1 및 MPC2)은 비밀 셰어 표현에서 주어진 사용자 프로파일에 대한 k개의 최근접 이웃을 식별한다(1104). 컴퓨팅 시스템(MPC1)은 주어진 사용자 프로파일의 제1 셰어([Pi,1])를 사용하여 주어진 사용자 프로파일의 비트 벡터의 절반을 계산할 수 있다. 비트 벡터를 생성하기 위해, 컴퓨팅 시스템(MPC1)은 도 10의 프로세스(1000)의 동작(1010 및 1012)을 사용할 수 있다. 즉, 컴퓨팅 시스템(MPC1)은 k-NN 모델에 대해 생성된 랜덤 투영 벡터를 사용하여 주어진 사용자 프로파일의 셰어([Pi,1])를 투영하고 주어진 사용자 프로파일에 대한 비트 벡터의 비밀 셰어를 생성할 수 있다. k-NN 모델을 생성하기 위해 비트 플리핑이 사용된 경우, 컴퓨팅 시스템(MPC1)은 k-NN 모델을 생성하는데 사용된 비트 플리핑 패턴의 제1 셰어 {[ST1,1], [ST2,1], … [STm,1]}를 사용하여 주어진 사용자 프로파일에 대한 비트 벡터의 비밀 셰어 엘리먼트를 수정할 수 있다.
유사하게, 컴퓨팅 시스템(MPC1)은 주어진 사용자 프로파일의 암호화된 제2 셰어(PubKeyEncrypt([Pi,2], MPC2))를 컴퓨팅 시스템(MPC2)에 제공할 수 있다. 컴퓨팅 시스템(MPC2)은 자신의 개인키를 사용하여 주어진 사용자 프로파일의 제2 셰어([Pi,2])를 해독하고 주어진 사용자 프로파일의 제2 셰어([Pi,2])를 사용하여 주어진 사용자 프로파일에 대한 비트 벡터의 절반을 계산할 수 있다. 즉, 컴퓨팅 시스템(MPC2)은 k-NN 모델에 대해 생성된 랜덤 투영 벡터를 사용하여 주어진 사용자 프로파일의 셰어([Pi,2])를 투영하고 주어진 사용자 프로파일에 대한 비트 벡터를 생성할 수 있다. k-NN 모델을 생성하기 위해 비트 플리핑이 사용된 경우, 컴퓨팅 시스템(MPC2)은 k-NN 모델을 생성하는데 사용된 비트 플리핑 패턴의 제2 셰어 {[ST1,2], [ST2,2], … [STm,2]}를 사용하여 주어진 사용자 프로파일에 대한 비트 벡터의 엘리먼트를 수정할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 도 10의 동작(1012)에 설명된 바와 같이 수평 분할로 비트 벡터를 재구성한다. 재구성 완료 후, 컴퓨팅 시스템(MPC1)은 주어진 사용자 프로파일에 대한 전체 비트 벡터의 제1 절반을 갖고 컴퓨팅 시스템(MPC2)은 주어진 사용자 프로파일에 대한 전체 비트 벡터의 제2 절반을 갖는다.
각 컴퓨팅 시스템(MPC1 및 MPC2)은 주어진 사용자 프로파일에 대한 비트 벡터의 자체 절반과 자체 k-NN 모델을 사용하여 k' 최근접 이웃 사용자 프로파일을 식별하며, 여기서 k'=α×k이며, α는 실제 생산 데이터 및 통계 분석에 기초하여 경험적으로 결정된다. 예를 들어 α=3 또는 다른 적절한 숫자이다. 컴퓨팅 시스템(MPC1)은 전체 비트 벡터의 제1 절반과 k-NN 모델의 각 사용자 프로파일에 대한 비트 벡터 사이의 해밍 거리를 계산할 수 있다. 그런 다음 컴퓨팅 시스템(MPC1)은 계산된 해밍 거리, 예를 들어 가장 낮은 해밍 거리를 갖는 k'개의 사용자 프로파일에 기초하여 k'개의 최근접 이웃을 식별한다. 다시 말해서, 컴퓨팅 시스템(MPC1)은 복수의 사용자 프로파일을 사용하여 트레이닝된 k-최근접 이웃 모델 및 주어진 사용자 프로파일의 셰어에 기초하여 최근접 이웃 사용자 프로파일의 세트를 식별한다. 예시적인 테이블 형식의 결과는 아래 [테이블 13]과 같다.
[테이블 13]
행 ID 해밍 거리
(일반 텍스트)
사용자 프로파일의
셰어
라벨의
셰어들
i di,1 [Pi,1] [labeli,1]
... ... ... ...
[테이블 13]에서, 각 행은 특정 최근접 이웃 사용자 프로파일에 대한 것이고, 해당 사용자 프로파일과 컴퓨팅 시스템(MPC1)에 의해 계산된 주어진 사용자 프로파일 간의 해밍 거리를 포함한다. 특정 최근접 이웃 사용자 프로파일의 행에는 해당 사용자 프로파일의 제1 셰어와 해당 사용자 프로파일과 관련된 라벨의 제1 셰어도 포함된다.
유사하게, 컴퓨팅 시스템(MPC2)은 k-NN 모델의 각 사용자 프로파일에 대한 비트 벡터와 전체 비트 벡터의 제2 절반 사이의 해밍 거리를 계산할 수 있다. 그런 다음 컴퓨팅 시스템(MPC2)은 계산된 해밍 거리, 예를 들어 가장 낮은 해밍 거리를 갖는 k'개의 사용자 프로파일에 기초하여 k'개의 최근접 이웃을 식별한다. 예시적인 테이블 형식의 결과는 아래 [테이블 14]와 같다.
[테이블 14]
행 ID 해밍 거리
(일반 텍스트)
사용자 프로파일의
셰어
라벨의
셰어들
j dj,2 [Pj,2] [labelj,2]
... ... ... ...
[테이블 14]에서, 각 행은 특정 최근접 이웃 사용자 프로파일에 대한 것이고, 해당 사용자 프로파일과 컴퓨팅 시스템(MPC2)에 의해 계산된 주어진 사용자 프로파일 간의 해밍 거리를 포함한다. 특정 최근접 이웃 사용자 프로파일의 행에는 해당 사용자 프로파일의 제2 셰어와 해당 사용자 프로파일과 관련된 라벨의 제2 셰어도 포함된다.
컴퓨팅 시스템(MPC1 및 MPC2)은 행 식별자(행 ID)의 목록과 해밍 거리 쌍을 서로 교환할 수 있다. 이후, 각각의 컴퓨팅 시스템(MPC1, MPC2)은 동일한 알고리즘 및 입력 데이터를 갖는 k개의 최근접 이웃을 독립적으로 선택할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)은 컴퓨팅 시스템(MPC1 및 MPC2) 모두로부터 부분 질의(partial query) 결과에 공통적인 행 식별자를 찾을 수 있다. 공통 행 식별자의 각 i에 대해, 컴퓨팅 시스템(MPC1)은 2개의 부분 해밍 거리(예를 들어, di = di,1 + di,2)로부터 결합된 해밍 거리(di)를 계산한다. 그런 다음 컴퓨팅 시스템(MPC1)은 결합된 해밍 거리(di)에 기초하여 공통 행 식별자를 정렬하고 k개의 최근접 이웃을 선택할 수 있다. k개의 최근접 이웃에 대한 행 식별자는 ID = {id1, … idk}로 나타낼 수 있다. α가 충분히 크면 위의 알고리즘에서 결정된 k개의 최근접 이웃들이 확률이 높은 실제 k개의 최근접 이웃임을 증명할 수 있다. 그러나, α 값이 클수록 계산 비용이 높아진다.
사용자를 사용자 그룹에 추가할지 여부에 대한 결정이 이루어진다(1106). 이 결정은 k개의 최근접 이웃 프로파일 및 관련 라벨에 기초하여 이루어질 수 있다. 결정은 또한사용된 집계 함수와 해당 집계 함수에 대한 임의의 집계 파라미터에 기초한다. 집계 함수에는 예를 들어 이진 분류, 회귀(예를 들어, 산술 평균 또는 제곱 평균 제곱근 사용), 다중 클래스 분류 및 가중 k-NN이 포함될 수 있다. 사용자 그룹에 사용자를 추가할지 여부를 결정하는 각각의 방식은 MPC 클러스터(130)와 클라이언트(110) 상에서 실행되는 애플리케이션(112) 사이의 상이한 상호 작용을 포함할 수 있으며, 이는 아래에서 더 자세히 설명된다.
사용자를 사용자 그룹에 추가하지 않기로 결정한 경우, 애플리케이션(112)은 사용자를 사용자 그룹에 추가하지 않을 수 있다(1108). 사용자를 사용자 그룹에 추가하기로 결정한 경우, 애플리케이션(112)은 예를 들어 사용자 그룹의 사용자 그룹 식별자를 포함하도록 클라이언트 디바이스(110)에 저장된 사용자 그룹 목록을 업데이트함으로써 사용자를 사용자 그룹에 추가할 수 있다(1110).
k-NN 모델을 사용하는 예시적인 이진 분류 추론 기법
이진 분류의 경우, 추론 요청은 집계 함수 파라미터로서 임계값(Ltrue 및 Lfalse)을 포함할 수 있다. 라벨 값은 부울 유형(예를 들어, true 또는 false)이다. 임계값 파라미터는 사용자가 사용자 그룹(Ltrue)에 추가되려면 true 값의 라벨을 가져야 하는 k개의 최근접 이웃 프로파일의 임계값 백분율을 나타낼 수 있다. 그렇지 않으면 사용자는 사용자 그룹(Lfalse)에 추가된다. 하나의 접근 방식에서, MPC 클러스터(130)는 true인 라벨 값을 갖는 최근접 이웃 사용자 프로파일의 수가 임계값과 k의 곱보다 큰 경우 사용자 그룹(Ltrue)(그렇지 않으면 Lfalse)에 사용자를 추가하도록 애플리케이션(112)에 지시할 수 있다. 그러나, 컴퓨팅 시스템(MPC1)은 추론 결과, 예를 들어 사용자가 가입해야 하는 사용자 그룹을 학습한다.
사용자 프라이버시를 보호하기 위해, 추론 요청은 일반 텍스트의 임계값, 컴퓨팅 시스템(MPC1)에 대한 제1 셰어([Ltrue,1] 및 [Lfalse,1]), 그리고 컴퓨팅 시스템(MPC2)에 대한 암호화된 제2 셰어 PubKeyEncrypt([Ltrue,2] || [Lfalse,2] || application_public_key, MPC2)를 포함할 수 있다. 이 예에서 애플리케이션(112)은 기호 ||로 표시된 대로 [Ltrue,2], [Lfasle,2] 및 애플리케이션(112)의 공개키로부터 복합 메시지를 생성하고 이 복합 메시지를 컴퓨팅 시스템(MPC2)의 공개키를 사용하여 암호화할 수 있다. 컴퓨팅 시스템(MPC1)로부터 애플리케이션(112)으로의 추론 응답은 컴퓨팅 시스템(MPC1)에 의해 결정된 추론 결과[Lresult,1]의 제1 셰어 및 컴퓨팅 시스템(MPC2)에 의해 결정된 추론 결과의 제2 셰어[Lresult,2]를 포함할 수 있다.
제2 셰어가 컴퓨팅 시스템(MPC1)에 의해 액세스되는 것을 방지하여 컴퓨팅 시스템(MPC1)이 일반 텍스트로 추론 결과를 얻을 수 있게 하기 위해, 컴퓨팅 시스템(MPC2)은 추론 결과[Lresult,2]의 제2 셰어의 암호화된(선택적으로 디지털 서명된) 버전, 예를 들어, PubKeySign(PubKeyEncrypt([Lresult,2], application_public_key), MPC2))를 애플리케이션(112)에 전송된 추론 응답에 포함하기 위해 컴퓨팅 시스템(MPC1)으로 전송할 수 있다. 이 예에서, 애플리케이션(112)은 디지털 서명을 생성하는데 사용된 컴퓨팅 시스템(MPC2)의 개인키에 대응하는 컴퓨팅 시스템(MPC2)의 공개키를 사용하여 디지털 서명을 검증하고, 추론 결과([Lresult,2])의 제2 셰어를 암호화하는데 사용된 공개키(application_public_key)에 대응하는 애플리케이션(112)의 개인키를 사용하여 추론 결과([Lresult,2])의 제2 세어를 해독할 수 있다.
그런 다음, 애플리케이션(112)은 제1 셰어[Lresult,1] 및 제2 셰어[Lresult,2]로부터 추론 결과(Lresult)를 재구성할 수 있다. 디지털 서명을 사용함으로써 애플리케이션(112)은 컴퓨팅 시스템(MPC2)으로부터, 예를 들어 컴퓨팅 시스템(MPC1)에 의한 결과의 위조를 검출할 수 있다. 원하는 보안 수준, MPC 클러스터(130)의 컴퓨팅 시스템을 운영하는 당사자 및 가정된 보안 모델에 따라 디지털 서명이 필요하지 않을 수 있다.
컴퓨팅 시스템(MPC1 및 MPC2)은 MPC 기술을 사용하여 이진 분류 결과의 셰어들([Lresult,1] 및 [Lresult,2])을 결정할 수 있다. 이진 분류에서 사용자 프로파일의 label1의 값은 0(false) 또는 1(true)이다. 선택된 k개의 최근접 이웃이 식별자 {id1, … idk}에 의해 식별된다고 가정하면, 컴퓨팅 시스템(MPC1 및 MPC2)은 k개의 최근접 이웃 사용자 프로파일에 대한 라벨의 합계(sum_of_labels)를 계산할 수 있으며, 여기서 합계는 아래 관계식 15로 표시된다.
관계식 15: sum_of_labels = ∑i∈{id1,...idk}labeli
합계를 결정하기 위해, 컴퓨팅 시스템(MPC1)은 ID(즉, {id1, … idk})를 컴퓨팅 시스템(MPC2)으로 전송한다. 컴퓨팅 시스템(MPC2)은 ID의 행 식별자 수가 k-익명성을 시행하기 위한 임계값보다 큰지 검증(확인)할 수 있다. 그런 다음 컴퓨팅 시스템(MPC2)은 아래의 관계식 16을 사용하여 라벨 합계의 제2 셰어([sum_of_labels2])를 계산할 수 있다.
관계식 16: [sum_of_labels2] = ∑i∈{id1,...idk}[labeli,2]
컴퓨팅 시스템(MPC1)은 또한 아래의 관계식 17을 사용하여 라벨 합계의 제1 셰어([sum_of_labels1])를 계산할 수 있다.
관계식 17: [sum_of_labels1] = ∑i∈{id1,...idk}[labeli,1]
라벨 합계(sum_of_labels)가 컴퓨팅 시스템(MPC1 및 MPC2)이 가능한 한 적게 알아야 하는 기밀 정보인 경우, 컴퓨팅 시스템(MPC1)은 라벨 합계의 제1 셰어([sum_of_labels1])가 임계값 미만인지, 예를 들어 [below_threshold1] = [sum_of_labels1] < threshold×k인지 여부를 계산할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 라벨 합계의 제2 셰어([sum_of_labels2])가 임계값 미만인지, 예를 들어 [below_threshold2] = [sum_of_labels2] < threshold×k인지 여부를 계산할 수 있다. 컴퓨팅 시스템(MPC1)은 [below_threshold1]×[Lfalse,1]+(1-[below_threshold1])×[Ltrue,1]로 추론 결과 [Lresult,1]를 계산하도록 진행할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 [below_threshold2]×[Lfalse,2]+(1-[below_threshold2])×[Ltrue,2]로 [Lresult,2]를 계산할 수 있다.
라벨 합계(sum_of_labels)가 기밀 정보가 아닌 경우, 컴퓨팅 시스템(MPC1 및 MPC2)은 [sum_of_labels1] 및 [sum_of_labels2]로부터 sum_of_labels를 재구성할 수 있다. 그런 다음 컴퓨팅 시스템(MPC1 및 MPC2)은 파라미터(below_threshold)를 sum_of_labels < threshold×k로 설정, 예를 들어 임계값 미만이면 1의 값 또는 임계값 미만이 아니면 0의 값으로 설정할 수 있다.
파라미터(below_threshold)를 계산한 후, 컴퓨팅 시스템(MPC1 및 MPC2)은 추론 결과(Lresult)를 결정하기 위해 진행할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC2)은 below_threshold의 값에 따라 [Lresult,2]를 [Ltrue,2] 또는 [Lfalse,2]로 설정할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC2)은 [Lresult,2]를 라벨 합계가 임계값 미만이 아닌 경우 [Ltrue,2]로 설정하거나 라벨 합계가 임계값 미만인 경우 [Lfalse,2]로 설정할 수 있다. 그런 다음 컴퓨팅 시스템(MPC2)은 추론 결과의 암호화된 제2 셰어(PubKeyEncrypt(Lresult,2], application_public_key)) 또는 이 결과의 디지털 서명된 버전을 컴퓨팅 시스템(MPC1)에 반환할 수 있다.
유사하게, 컴퓨팅 시스템(MPC1)은 below_threshold의 값에 따라 [Lresult,1]을 [Ltrue,1] 또는 [Lfalse,1]로 설정할 수 있다. 예를 들어, 컴퓨팅 시스템(MPC1)은 [Lresult,1]을 라벨 합계가 임계값 미만이 아닌 경우 [Ltrue,1]으로 설정하거나 라벨 합계가 임계값 미만인 경우 [Lfalse,1]로 설정할 수 있다. 컴퓨팅 시스템(MPC1)은 추론 결과([Lresult,1])의 제1 셰어와 추론 결과[Lresult,2]의 암호화된 제2 셰어를 애플리케이션(112)에 대한 추론 응답으로서 전송할 수 있다. 그런 다음, 애플리케이션(112)은 위에서 설명된 바와 같이 2개의 셰어에 기초하여 추론 결과를 계산할 수 있다.
k-NN 모델을 사용한 예시적인 다중 클래스 분류 추론 기법
다중 클래스 분류의 경우, 각 사용자 프로파일과 관련된 라벨은 범주형 특징일 수 있다. 컨텐츠 플랫폼(150)은 임의의 가능한 범주형 값(categorical values)을 대응하는 사용자 그룹 식별자에 매핑하는 조회(lookup) 테이블을 지정할 수 있다. 조회 테이블은 추론 요청에 포함된 집계 함수 파라미터 중 하나일 수 있다.
발견된 k개의 최근접 이웃 내에서, MPC 클러스터(130)는 가장 빈번한 라벨 값을 찾는다. 그런 다음, MPC 클러스터(130)는 조회 테이블에서, 가장 빈번한 라벨 값에 대응하는 사용자 그룹 식별자를 찾고, 예를 들어, 클라이언트 디바이스(110)에 저장된 사용자 그룹 목록에 사용자 그룹 식별자를 추가함으로써 애플리케이션(112)이 사용자 그룹 식별자에 대응하는 사용자 그룹에 사용자를 추가하도록 요청할 수 있다.
이진 분류와 유사하게, 컴퓨팅 시스템(MPC1 및 MPC2)에서 추론 결과(Lresult)를 숨기는 것이 바람직할 수 있다. 그렇게 하기 위해, 애플리케이션(112) 또는 컨텐츠 플랫폼(150)은 범주형 값을 추론 결과(Lresult)의 각각의 셰어에 각각 매핑하는 2개의 조회 테이블을 생성할 수 있다. 예를 들어, 애플리케이션은 범주형 값을 제1 셰어[Lresult1]에 매핑하는 제1 조회 테이블과 범주형 값을 제2 셰어[Lresult2]에 매핑하는 제2 조회 테이블을 생성할 수 있다. 애플리케이션으로부터 컴퓨팅 시스템(MPC1)으로의 추론 요청은 컴퓨팅 시스템(MPC1)에 대한 일반 텍스트의 제1 조회 테이블 및 컴퓨팅 시스템(MPC2)에 대한 제2 조회 테이블의 암호화된 버전을 포함할 수 있다. 제2 조회 테이블은 컴퓨팅 시스템(MPC2)의 공개키를 사용하여 암호화할 수 있다. 예를 들어, 제2 조회 테이블과 애플리케이션의 공개키를 포함하는 복합 메시지는 컴퓨팅 시스템(MPC2)의 공개키를 사용하여 암호화, 예를 들어, PubKeyEncrypt(lookuptable2 || application_public_key, MPC2))될 수 있다.
컴퓨팅 시스템(MPC1)에 의해 전송된 추론 응답은 컴퓨팅 시스템(MPC1)에 의해 생성된 추론 결과의 제1 셰어[Lresult1]를 포함할 수 있다. 이진 분류와 유사하게, 제2 셰어가 컴퓨팅 시스템(MPC1)에 의해 액세스되는 것을 방지하고 컴퓨팅 시스템(MPC1)이 일반 텍스트로 추론 결과를 얻을 수 있도록 하기 위해, 컴퓨팅 시스템(MPC2)은 추론 결과의 제2 셰어([Lresult,2])의 암호화된(선택적으로 디지털 서명된) 버전, (예를 들어, PubKeySign(PubKeyEncrypt([Lresult,2], application_public_key), MPC2))를 애플리케이션(112)으로 전송된 추론 결과에 포함시키기 위해 컴퓨팅 시스템(MPC1)으로 전송할 수 있다. 애플리케이션(112)은 [Lresult1] 및 [Lresult2]로부터 추론 결과(Lresult)를 재구성할 수 있다.
다중 클래스 분류 문제에 대해 w개의 유효한 라벨 {l1, l2, … lw}이 있다고 가정한다. 다중 클래스 분류에서 추론 결과(Lresult)의 셰어들([Lresult1] 및 [Lresult2])을 결정하기 위해, 컴퓨팅 시스템(MPC1)은 ID(즉, {id1, … idk})를 컴퓨팅 시스템(MPC2)으로 전송한다. 컴퓨팅 시스템(MPC2)은 ID의 행 식별자 수가 k-익명성을 시행하기 위한 임계값보다 큰지 검증할 수 있다. 일반적으로, k-NN의 k는 k-익명성의 k보다 훨씬 클 수 있다. 그런 다음 컴퓨팅 시스템(MPC2)은 아래의 관계식 18을 사용하여 정의되는 j번째 라벨[lj,2]의 제2 빈도 셰어([frequencyj,2])를 계산할 수 있다.
관계식 18:
Figure pct00034
유사하게, 컴퓨팅 시스템(MPC1)은 아래의 관계식 19를 사용하여 정의되는 j번째 라벨[lj,1]의 제1 빈도 셰어([frequencyj,1])를 계산한다.
관계식 19:
Figure pct00035
k개의 최근접이웃 내의 라벨의 빈도(frequencyi)가 민감하지 않다고 가정하면, 컴퓨팅 시스템(MPC1 및 MPC2)은 해당 라벨에 대한 2개의 셰어([frequencyi,1] 및 [frequencyi,2])로부터 빈도(i)를 재구성할 수 있다. 그런 다음 컴퓨팅 시스템(MPC1 및 MPC2)은 frequencyindex가 가장 큰 값을 갖는 인덱스 파라미터(index), 예를 들어 index = argmaxi(frequencyi)를 결정할 수 있다.
그런 다음 컴퓨팅 시스템(MPC2)은 그의 조회 테이블에서, 가장 높은 빈도를 갖는 라벨에 대응하는 셰어([Lresult,2])를 조회하고 PubKeyEncrypt([Lresult,2], application_public_key)를 컴퓨팅 시스템(MPC1)에 반환할 수 있다. 컴퓨팅 시스템(MPC1)은 가장 높은 빈도를 갖는 라벨에 대응하는 셰어([Lresult,1])를 조회 테이블에서 유사하게 조회할 수 있다. 컴퓨팅 시스템(MPC1)은 두 개의 셰어, 예를 들어, [Lresult,1] 및 PubKeyEncrypt([Lresult,2], application_public_key)를 포함하는 추론 응답을 애플리케이션(112)으로 전송할 수 있다. 전술한 바와 같이, 제2 셰어는 컴퓨팅 시스템(MPC1)이 컴퓨팅 시스템(MPC2)의 응답을 위조하는 것을 방지하기 위해 디지털 서명될 수 있다. 그런 다음, 애플리케이션(112)은 전술한 바와 같이 2개의 셰어에 기초하여 추론 결과를 계산할 수 있고, 그 추론 결과에 의해 식별된 사용자 그룹에 사용자를 추가할 수 있다.
예시적인 회귀 추론 기법
회귀의 경우, 각 사용자 프로파일(P)과 관련된 라벨은 숫자여야 한다. 컨텐츠 플랫폼(150)은 임계값의 정렬된 목록(예를 들어,
Figure pct00036
) 및 사용자 그룹 식별자의 목록(예를 들어, {L0, L1, … Ln, Ln+1})을 지정할 수 있다. 또한, 컨텐츠 플랫폼(150)은 집계 함수, 예를 들어 산술 평균 또는 제곱 평균 제곱근을 지정할 수 있다.
발견된 k개의 최근접 이웃 내에서, MPC 클러스터(130)는 라벨 값의 평균(결과)을 계산한 다음 그 결과를 이용하여 매핑을 조회하여 추론 결과(Lresult)를 찾는다. 예를 들어, MPC 클러스터(130)는 라벨 값의 평균에 기초하여 라벨을 식별하기 위해 아래의 관계식 20을 사용할 수 있다.
관계식 20:
result ≤ t0이면 Lresult ←L0,
result > tn이면 Lresult ←Ln+1,
tx < result ≤tx+1이면 Lresult ←Lx+1
즉, 결과가 임계값 이하인 경우 추론 결과(Lresult)는 L0이다. 결과가 임계값(tn)보다 크면 추론 결과(Lresult)는 Ln+1이다. 그렇지 않고 결과가 임계값(tx)보다 크고 임계값(tx+1)이하이면 추론 결과(Lresult)는 Lx+1이다. 그런 다음 컴퓨팅 시스템(MPC1)은 예를 들어 추론 결과(Lresult)를 포함하는 추론 응답을 애플리케이션(112)으로 전송함으로써 애플리케이션(112)이 추론 결과(Lresult)에 대응하는 사용자 그룹에 사용자를 추가하도록 요청한다.
위에서 설명된 다른 분류 기술과 유사하게, 추론 결과(Lresult)는 컴퓨팅 시스템(MPC1 및 MPC2)으로부터 숨겨질 수 있다. 이를 위해, 애플리케이션(112)으로부터의 추론 요청은 컴퓨팅 시스템(MPC1)에 대한 라벨([Li,1])의 제1 셰어와 컴퓨팅 시스템(MPC2)에 대한 라벨([Li,2])의 암호화된 제2 셰어(예를 들어, PubKeyEncrypt([L0,2 || … || Ln+1,2 || application_public_key, MPC2))를 포함할 수 있다.
컴퓨팅 시스템(MPC1)에 의해 전송된 추론 결과는 컴퓨팅 시스템(MPC1)에 의해 생성된 추론 결과의 제1 셰어([Lresult1])를 포함할 수 있다. 이진 분류와 유사하게, 제2 셰어가 컴퓨팅 시스템(MPC1)에 의해 액세스되는 것을 방지하고 컴퓨팅 시스템(MPC1)이 추론 결과를 일반 텍스트로 얻을 수 있게 하기 위해, 컴퓨팅 시스템(MPC2)은 추론 결과([Lresult,2])의 제2 셰어의 암호화된(선택적으로 디지털 서명된) 버전(예를 들어, PubKeySign(PubKeyEncrypt([Lresult,2], application_public_key), MPC2))를 애플리케이션(112)에 전송된 추론 결과에 포함하기 위해 컴퓨팅 시스템(MPC1)으로 전송할 수 있다. 애플리케이션(112)은 [Lresult,1] 및 [Lresult,2]로부터 추론 결과(Lresult)를 재구성할 수 있다.
집계 함수가 산술 평균일 때, 컴퓨팅 시스템(MPC1 및 MPC2)은 이진 분류와 유사하게 라벨 합계(sum_of_labels)를 계산한다. 라벨 합계가 민감하지 않은 경우, 컴퓨팅 시스템(MPC1 및 MPC2)은 두 셰어([sum_of_labels1] 및 [sum_of_labels2])를 계산한 다음 두 셰어에 기초하여 sum_of_labels를 재구성할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 라벨 합계를 최근접 이웃 라벨의 양, 예를 들어 k로 나눔으로써 라벨의 평균을 계산할 수 있다.
그런 다음 컴퓨팅 시스템(MPC1)은 관계식 20을 사용하여 임계값과 평균을 비교하여 평균에 대응하는 라벨을 식별하고 그 식별된 라벨에 제1 셰어[Lresult,1]를 설정할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 관계식 20을 사용하여 임계값과 평균을 비교하여 평균에 대응하는 라벨을 식별하고 그 식별된 라벨에 제2 셰어[Lresult,2]를 설정할 수 있다. 컴퓨팅 시스템(MPC2)은 애플리케이션(112)의 공개키, 예를 들어 PubKeyEncrypt([Lresult,2], application_public_key)를 사용하여 제2 셰어[Lresult,2]를 암호화하고 암호화된 제2 셰어를 컴퓨팅 시스템(MPC1)으로 전송할 수 있다. 컴퓨팅 시스템(MPC1)은 제1 셰어 및 암호화된 제2 셰어(이는 위에서 설명된 바와 같이 선택적으로 디지털 서명될 수 있음)를 애플리케이션(112)에 제공할 수 있다. 그런 다음, 애플리케이션(112)은 라벨(예를 들어, 사용자 그룹 식별자)(Lresult)에 의해 식별된 사용자 그룹에 사용자를 추가할 수 있다.
라벨 합계가 민감한 경우, 컴퓨팅 시스템(MPC1 및 MPC2)은 일반 텍스트로 sum_of_labels를 구성할 수 없을 수 있다. 대신, 컴퓨팅 시스템(MPC1)은
Figure pct00037
에 대해 마스크([maski,1] = [sum_of_labels1] > ti×k)를 계산할 수 있다. 이 계산은 컴퓨팅 시스템(MPC1 및 MPC2) 사이에 다수의 왕복이 필요할 수 있다. 다음으로, 컴퓨팅 시스템(MPC1)은 [acci,1] = (
Figure pct00038
) 를 계산할 수 있고, 컴퓨팅 시스템(MPC2)은 [acci,2] = (
Figure pct00039
)를 계산할 수 있다. 이 연산에서 동등성 테스트는 컴퓨팅 시스템(MPC1 및 MPC2) 사이에 다수의 왕복이 필요할 수 있다.
또한, 컴퓨팅 시스템(MPC1)은 [use_default1] = (
Figure pct00040
)를 계산할 수 있고, 컴퓨팅 시스템(MPC2)은 [use_default2] = (
Figure pct00041
)를 계산할 수 있다. MPC 클러스터(130)는
Figure pct00042
Figure pct00043
에 대해 acci == 1인 경우에만 Li를 리턴할 것이고, use_default == 1인 경우에 Ln+1을 리턴할 것이다. 이 조건은 아래의 관계식 21로 나타낼 수 있다.
관계식 21:
Figure pct00044
대응하는 암호화 구현은 아래의 관계식 22 및 23으로 표현될 수 있다.
관계식 22:
Figure pct00045
관계식 23:
Figure pct00046
이러한 계산은 컴퓨팅 시스템(MPC1 및 MPC2) 사이의 왕복 계산을 필요로 하지 않는다. 컴퓨팅 시스템(MPC1)은 결과의 두 셰어(예를 들어, [Lresult,1] 및 [Lresult,2])를 애플리케이션(112)에 제공할 수 있으며, 제2 셰어는 위에서 설명된 바와 같이 암호화되고 선택적으로 디지털 서명된다. 이러한 방식으로, 애플리케이션(112)은 컴퓨팅 시스템(MPC1 또는 MPC2)이 즉각적인 또는 최종 결과에 대해 아무것도 학습하지 않고도 추론 결과(Lresult)를 결정할 수 있다.
제곱 평균의 경우, 컴퓨팅 시스템(MPC1)은 ID(즉, {id1, … idk})를 컴퓨팅 시스템(MPC2)으로 전송한다. 컴퓨팅 시스템(MPC2)은 ID의 행 식별자 수가 k-익명성을 시행하기 위한 임계값보다 큰지 확인할 수 있다. 컴퓨팅 시스템(MPC2)은 아래의 관계식 24를 사용하여 sum_of_square_labels 파라미터(예를 들어, 라벨 값의 제곱의 합)의 제2 셰어를 계산할 수 있다.
관계식 24:
Figure pct00047
유사하게, 컴퓨팅 시스템(MPC1)은 아래의 관계식 25를 사용하여 sum_of_square_labels 파라미터의 제1 셰어를 계산할 수 있다.
관계식 25:
Figure pct00048
sum_of_square_labels 파라미터가 민감하지 않다고 가정하면, 컴퓨팅 시스템(MPC1 및 MPC2)는 두 개의 셰어 [sum_of_square_labels1] 및 [sum_of_square_labels2]로부터 sum_of_square_labels 파라미터를 재구성할 수 있다. 컴퓨팅 시스템(MPC1 및 MPC2)은 sum_of_squares_labels를 최근접 이웃 라벨의 양, 예를 들어 k로 나눈 다음 제곱근을 계산함으로써 라벨의 평균 제곱근을 계산할 수 있다.
평균이 산술 평균을 통해 계산되는지 또는 제곱 평균 제곱근을 통해 계산되는지 여부에 관계없이, 컴퓨팅 시스템(MPC1)은 관계식 20을 사용하여 임계값과 평균을 비교하여 그 평균에 대응하는 라벨을 식별하고 그 식별된 라벨에 제1 셰어([Lresult,1])를 설정할 수 있다. 유사하게, 컴퓨팅 시스템(MPC2)은 관계식 20을 사용하여 임계값과 평균을 비교하여 그 평균에 대응하는 라벨을 식별하고 그 식별된 라벨에 제2 셰어([Lresult,2])를 설정할 수 있다. 컴퓨팅 시스템(MPC2)은 애플리케이션(112)의 공개키, 예를 들어 PubKeyEncrypt([Lresult,2], application_public_key)를 사용하여 제2 셰어[Lresult,2]를 암호화하고 암호화된 제2 셰어를 컴퓨팅 시스템(MPC1)으로 전송할 수 있다. 컴퓨팅 시스템(MPC1)은 추론 결과로서 애플리케이션(112)에게 제1 셰어 및 암호화된 제2 셰어(이는 위에서 설명된 바와 같이 선택적으로 디지털 서명될 수 있음)를 제공할 수 있다. 그런 다음, 애플리케이션(112)은 Lresult의 라벨(예를 들어, 사용자 그룹 식별자)에 의해 식별된 사용자 그룹에 사용자를 추가할 수 있다. sum_of_square_labels 파라미터가 민감한 경우, 컴퓨팅 시스템(MPC1 및 MPC2)은 산술 평균 예에서 사용된 것과 유사한 암호화 프로토콜을 수행하여 추론 결과의 셰어를 계산할 수 있다.
분류 및 회귀 문제의 결과를 추론하는 위의 기술에서, 모든 k개의 최근접 이웃은 최종 추론 결과에 대해 동일한 영향, 예를 들어 동일한 가중치를 갖는다. 많은 분류 및 회귀 문제의 경우, 모델 품질은 k개의 이웃 각각에 이웃과 쿼리 파라미터(Pi) 사이의 해밍 거리가 증가할 때 단조 감소하는 가중치가 할당되면 향상될 수 있다. 이 속성이 있는 일반적인 커널 함수는 Epanechnikov(포물선) 커널 함수이다. 해밍 거리와 가중치는 모두 일반 텍스트로 계산될 수 있다.
k-NN 모델에서 이웃의 정의 수정
일부 구현에서, k 최근접 이웃은 위에서 논의된 바와 같이, 고차원 공간에서, 질의를 수행하는 애플리케이션(예를 들어, 브라우저)의 사용자와 가장 유사한 k개의 사용자를 지칭한다. 그러나, k-NN 모델을 트레이닝하거나 배포하기 위한 알고리즘은 이웃이 정의되는 방식과 독립적일 수 있다. 따라서, 일부 추가 구현에서, 이웃이라는 용어는 사용자 그룹을 지칭할 수 있으며, 여기서 고차원 공간에 있는 포인트는 사용자가 아닌 사용자 그룹이다. 이 예에서, 각 사용자 그룹은 중심(centroid)으로 나타낼 수 있다.
이러한 사용자 그룹에 기반한 k-NN 모델은 사용자 수보다 사용자 그룹 수가 훨씬 적기 때문에 사용자가 고차원 공간에서 상이한 포인트를 형성하는 k-NN 모델보다 유리하게 덜 복잡할 수 있다. 예를 들어, 컨텐츠 플랫폼에는 수십억 명의 사용자가 있지만 수백만 명의 사용자 그룹이 있을 수 있으며, 이 경우 사용자 대신 사용자 그룹으로 정의된 각 이웃을 사용하여 k-NN 모델을 학습하면 모델을 1000배 축소할 수 있다. 이러한 모델의 축소는 유리하게는 데이터(여기서, 사용자 그룹 및 상이한 엘리먼트 간의 매핑과 같은 관련 데이터)를 저장하기 위해 더 낮은 데이터 저장 요구 사항을 유리하게 요구할 수 있고 사용자 그룹에 사용자를 추가할지 여부를 결정하기 위해 더 빠른 처리를 요구할 수 있다.
고차원 공간의 각 포인트가 개별 사용자 그룹인 k-NN 모델을 구현하기 위해, 고차원 포인트내의 포인트는 다음과 같이 설정된다. 두 컴퓨팅 시스템(MPC1 및 MPC2)은 각 사용자 그룹을 평가하여 각 사용자 그룹의 사용자 수를 결정한다. 목록내의 사용자 수가 미리 설정된 임계값 미만인 경우, 해당 목록은 고차원 공간의 일 포인트로서 간주되지 않는다. 이것은 고차원 공간내의 포인트가 미리 설정된 사용자 수보다 많은 목록(예를 들어, 사용자 100명, 사용자 1000명 또는 기타 임계 사용자 수)에 의해서만 점유되고 있음을 확인하는데 도움이 될 수 있다. 이렇게 하면 사용자 그룹이 특정 사용자를 대상으로 하지 않도록 하여 사용자 프라이버시를 보호할 수 있다.
일단 목록이 설정되면, 2개의 컴퓨팅 시스템(MPC1 및 MPC2)은 사용자 그룹내의 사용자 수에 기초하여 각 사용자 그룹의 중심을 결정할 수 있다. 중심은 위에서 언급한 바와 같이 평균으로 정의할 수 있지만 사용자 그룹의 모든 사용자에 대해 계산된다. 위에서 언급한 평균은 그룹의 사용자 수로 나눈 그룹의 사용자에 대한 모든 사용자 프로파일의 합계 계산을 포함한다. 평균을 결정하여 중심을 결정하기 위해, 두 컴퓨팅 시스템(MPC1 및 MPC2)은 사용자의 클라이언트 디바이스로부터 수신된 각 사용자 프로파일의 비밀 셰어를 가질 수 있다. 예를 들어, 각 클라이언트 디바이스는 사용자 프로파일의 둘 이상의 비밀 셰어를 생성하고 중심이 결정되기 전에 각 컴퓨팅 시스템에 개별 비밀 셰어를 전송할 수 있다. 일부 구현에서, 각각의 컴퓨팅 시스템으로 전송되는 사용자 프로파일 데이터에 오버랩이 없도록 각 사용자 프로파일에 있는 정보의 상이한 서브세트가 각각의 컴퓨팅 시스템에 제공된다. 중심을 결정하기 위한 평균의 계산은 MPC 클러스터(130)와 클라이언트 디바이스(110) 사이의 데이터의 앞뒤(back and forth)를 요구할 수 있고, 특정 데이터의 이러한 앞뒤는 구현되는 특정 비밀 공유 알고리즘에 기초하여 변할 수 있다. 중심은 전술한 바와 같이 계산될 수 있다(예를 들어, 도 1의 논의 참조).
이러한 각 사용자 그룹의 중심은 고차원 공간에서 한 포인트를 형성한다. 질의를 수행하는 각 애플리케이션에 대해, k개의 최근접 이웃은 해당 고차원 공간 내에서 k개의 포인트(k개의 사용자 그룹을 나타냄)로 표시된다. 각 이웃은 개별 사용자 그룹이다. 도 8-11과 관련하여 위에서 언급한 다른 모델링 양태 및 기술은 이러한 k-NN 모델을 트레이닝하고 배포하는데 사용할 수 있으며, 차이점은 여기에서는 이웃을 나타내는 고차원 공간의 각 포인트가 사용자 그룹이라는 것이다.
컴퓨팅 시스템(MPC1 및 MPC2)은 다중 클래스 분류와 같은 여러 가능한 기계 학습 기술 중 하나를 사용하여 k개의 최근접 이웃 사용자 프로파일에 기초하여 사용자 그룹의 그룹에 사용자를 추가할지 여부를 결정할 수 있다. 고차원 공간의 한 포인트가 사용자를 나타내는 위의 구현에서 사용되는 회귀 및 이진 분류를 포함한 더 많은 기계 학습 기술과 달리, 각 사용자 그룹이 고차원 공간에서 한 포인트를 형성하는 구현을 위한 기계 학습 기술은 회귀 또는 이진 분류를 제외할 수 있다.
사용자에게 상호 작용 기반 가중치 추가하기
디지털 컴포넌트 제공자(160)에 대해, 모든 사용자에 의한 상호 작용(예를 들어, 조회, 클릭, 및/또는 전환)은 동일한 가치를 갖지 않을 수 있고, 일부 사용자에 의한 상호 작용보다 더중요할 수 있다. 예를 들어, (예를 들어, 값 비싼 우편 번호에 거주하거나 정해진 시간 내에 더 많이 소비하는 등의 이유로) 구매 능력이 더 높아 보이는 사용자에 의한 특정 상호 작용(예를 들어, 조회, 클릭 또는 전환)은 구매 능력이 낮아 보이는 다른 사용자에 의한 특정 상호 작용보다 더 중요할 수 있다.
고차원 공간내의 각 포인트가 개별 사용자 그룹인 모델의 경우, 상호 작용에 기초한 중요도의 이러한 변동은 더 비싼 제품을 홍보하는 디지털 컴포넌트와 상호 작용하는 사용자에게 더 높은 상호 작용 기반 가중치를 할당하고 더 저렴한 제품을 홍보하는 디지털 컴포넌트와 상호 작용하는 사용자에게 더 낮은 상호 작용 기반 가중치를 할당함으로써 모델이 트레이닝되는 동안의 중심 계산 중에 설명된다. 일부 구현에서, 가중치는 다른 비즈니스 목표를 기반으로 결정된다. 중심 계산은 위에서 모든 사용자에 대한 평균으로 설명되었다. 그러나, 여기서 중심은 모든 사용자에 대한 가중 평균으로 계산된다. 가중 평균은 가중 값의 합을 가중치의 합으로 나눈 값이다.
고차원 공간내의 각 포인트가 사용자인 모델의 경우, 상호 작용을 기반으로 하는 중요도는 모델이 트레이닝된 후와 모델이 예측에 사용될 때 설명된다. 이 모델의 경우, 상호 작용의 중요도 변동을 설명하는 타이밍(즉, 모델 학습 후 발생하는 예측 중)은 사용된 알고리즘으로 인해 고차원 공간의 각 포인트가 사용자인 모델의 타이밍(즉, 중심 계산 후)과 상이하다. 고차원 공간의 각 포인트가 사용자인 이 모델에서, 모델은 모델이 특정 클래스 또는 사용자 그룹에 할당되는 사용자를 예측하도록 위에서 설명한 대로 구현된다. 상호 작용을 기반으로 한 중요성은 개별적으로 또는 조합하여 구현되는 두 가지 방식으로 설명될 수 있다.
제1 방법에서, 사용자는 미리 설정된 양보다 적은 수의 최근접 이웃이 해당 사용자 그룹의 일부인 경우 할당된 사용자 그룹에서 제외될 수 있다. 예를 들어, 10개의 최근접 이웃 중 3개 이하의 이웃만이 사용자 그룹에 속할 경우 해당 사용자는 할당된 그룹에서 제외된다.
제2 방법에서, 각 사용자는 해당 사용자에 의한 상호 작용에 기초하여 가중치가 할당(예를 들어, 고가의 제품을 홍보하는 디지털 컴포넌트와의 상호 작용에 더 많은 가중치를 부여하고, 저렴한 제품을 홍보하는 디지털 컴포넌트와의 상호 작용에 더 적은 가중치를 할당)하며, 가중치와 해당 사용자 그룹의 일부인 최근접 이웃의 미리 설정된 양의 수학적 곱이 임계값보다 작은 경우 사용자는 할당된 그룹에서 제외된다. 예를 들어, 임계값이 4인 경우, 사용자의 2명의 이웃만이 할당된 그룹의 일부이고(위에서 설명한 제1 방법에 따라 할당된 그룹에서 사용자를 제외함), 사용자에게 할당된 가중치가 3인 경우, 가중치와 해당 사용자 그룹의 일부인 최근접 이웃의 미리 설정된 양의 수학적 곱 때문에, 3에 2를 곱하여 계산되는 6은 임계값 4를 초과하기 때문에 사용자는 이 제2 방법하에서 상기 할당된 그룹에서 제외되지 않는다.
사용자에게 할당된 가중치는 컨텐츠 플랫폼(150)의 일부일 수 있는 수요측 플랫폼(DSP)에 의해 지정될 수 있다. 일부 구현에서, 가중치는 해당 제품을 홍보하는 디지털 컴포넌트와의 사용자의 상호 작용에 응답하여 사용자가 예를 들어, 노출, 클릭 및/또는 전환을 통해) 상호작용하는 디지털 컴포넌트에 의해 홍보되는 제품의 구매 가격으로 정의되거나 설명될 수 있다. 몇 가지 구현에서, 가중치는 그러한 제품에서 만들어지는 이익으로 정의되거나 설명될 수 있다. 특정 구현에서, 가중치는 빈도 메트릭(예를 들어, 사용자가 미리 설정된 가격 이상의 제품을 구매한 횟수로 정의되는 가중치) 및/또는 최근성 메트릭(예를 들어, 과거에 미리 설정된 시간 내에 제품을 구매한 횟수로 정의되는 가중치)에 기초하여 정의될 수 있다. DSP는 다른 방식으로 가중치를 정의할 수 있다.
DSP는 애플리케이션(예를 들어, 브라우저) 내에서 실행되는 스크립트에 가중치를 제공함으로써 전처리 또는 후처리 계산을 포함하는 계산을 모델링하기 위해 사용자의 가중치를 MPC 클러스터(130)에 제공할 수 있다. 스크립트는 사용자의 사용자 프로파일을 MPC 클러스터(130)에 업로드할 때 MPC 클러스터(130)에 가중치를 제공하도록 구성된다. 스크립트는 아키텍처에 의해 부과되는 보안 요구 사항에 따라 비밀 셰어 또는 일반 텍스트로 가중치를 전송할 수 있다. 예를 들어, 가중치는 많은 추가 데이터가 없는 단순한 숫자이기 때문에, 일부 구현에서는 가중치를 일반 텍스트로 전송하여 보안에 문제가 없을 수 있다. 다른 구현에서, 가중치는 또한 프라이버시를 더욱 개선하기 위해 비밀 셰어(조각)로 전송될 수 있다.
도 12는 사용자를 하나 이상의 개별 사용자 그룹으로 효과적으로 분류하기 위해 k-NN 모델을 트레이닝 및 배포하기 위한 예시적인 프로세스를 도시하는 흐름도이다. k-NN 모델은 개별 사용자의 사용자 프로파일 또는 사용자 그룹의 중심을 사용하여 트레이닝될 수 있다.
k-NN 모델을 트레이닝시키기 전에 트레이닝 데이터는 MPC 클러스터(130)에 의해 전처리될 수 있다. 예를 들어, k-NN 모델이 사용자 그룹을 기반으로 하는 경우 MPC 클러스터(130)는 각 사용자 그룹에 대한 중심을 계산할 수 있다. 또한, MPC 클러스터(130)는 각 사용자 그룹에 대한 하나 이상의 성능 측정치를 계산할 수 있다. 위에서 설명한 바와 같이, 성능 측정치에는 상호 작용률과 전환율이 포함될 수 있다. 가중치가 사용될 때, MPC 클러스터(130)는 전술한 바와 같이 가중치를 사용하여 성능 측정치를 계산할 수 있다.
사용자 그룹에 대한 사용자 상호 작용률을 계산하기 위해, MPC 클러스터(130)는 사용자 그룹내의 사용자에 대해, 모델이 트레이닝된 하나 이상의 디지털 컴포넌트(들)가 사용자 그룹의 사용자에게 디스플레이된 총 횟수 및 사용자 그룹의 사용자에 의한 디지털 컴포넌트와의 사용자 상호 작용의 총 횟수를 결정할 수 있다. MPC 클러스터(130)는 사용자 상호 작용 비율로서, 사용자 상호 작용의 총 횟수를 사용자 그룹의 사용자에게 디지털 컴포넌트(들)가 디스플레이된 총 횟수로 나눔으로써 몫(quotient)을 결정할 수 있다.
사용자 그룹에 대한 전환율을 계산하기 위해, MPC 클러스터(130)는 사용자 그룹의 사용자에 의해 이루어진 총 전환 횟수를 결정할 수 있다. MPC 클러스터(130)는 전환율로서, 디지털 컴포넌트(들)가 사용자 그룹의 사용자에게 디스플레이된 총 횟수로 총 전환 횟수를 나눔으로써 몫을 결정할 수 있다.
MPC 클러스터(130)의 제1 MPC 시스템은 클라이언트 디바이스(110) 상의 애플리케이션(112)으로부터 애플리케이션(112)의 사용자에 대한 주어진 사용자 프로파일의 제1 셰어 및 성능 임계값을 포함하는 추론 요청을 수신할 수 있다(1202). MPC 클러스터(130)의 하나 이상의 제2 MPC 시스템은 각각 주어진 사용자 프로파일의 대응하는 제2 셰어를 수신할 수 있다.
각각의 추론 요청은 사용자 프로파일의 셰어, 추론 요청에 사용될 기계 학습 모델에 대한 식별자, 기계 학습 모델을 사용하여 식별할 최근접 이웃의 수(k), 및 추론에서 사용할 임계값 성능 측정치를 포함할 수 있다. 일부 구현에서, 추론 요청은 또한 모델 소유자의 도메인(예를 들어, 소유자에 대한 eTLD+1) 및 추론 요청의 나머지 컨텐츠의 디지털 서명을 포함할 수 있다. 디지털 서명을 사용하면 요청이 적절한 클라이언트 디바이스(110)로부터 수신되고 있고 추론 요청의 내용이 요청이 생성된 후에 수정되지 않는다는 것을 보장한다.
제1 MPC 시스템은 MPC 클러스터(130) 내의 하나 이상의 제2 MPC 시스템과 협력하여 트레이닝된 기계 학습 모델을 사용하여 보안 MPC 프로세스를 수행함으로써, 사용자 프로파일에 대한 k개의 최근접 이웃의 세트를 식별할 수 있다(1202). MPC 클러스터(130)는 추론 요청에 포함된 k의 값을 사용하여 도 11을 참조하여 설명된 것과 유사한 방식으로 최근접 이웃 세트를 식별할 수 있다.
제 1 MPC 시스템(130)은 최근접 이웃 세트로부터, 성능 임계값을 충족하는 성능 측정치를 갖는 하나 이상의 최근접 이웃을 선택할 수 있다(1204). 이는 질의에 포함된 성능 측정치와 k-NN 모델이 트레이닝되는 방식에 따라 달라질 수 있다.
k-NN 모델이 개별 사용자의 사용자 프로파일이 아닌 사용자 그룹을 사용하여 트레이닝되는 경우, 제1 MPC 시스템은 최근접 이웃 세트로부터, 성능 임계값을 충족하는 성능 측정치를 갖는 각 사용자 그룹을 식별할 수 있다. 즉, 제1 MPC 시스템은 k개의 사용자 그룹 각각의 성능 측정치를 임계 성능 측정치와 비교하여 그 성능 측정치가 임계 성능 척측정치를 충족하거나 초과하는지 여부를 결정할 수 있다.
k-NN 모델이 사용자 그룹이 아닌 사용자 프로파일을 사용하여 트레이닝되는 경우, 제1 MPC 시스템은 k개의 사용자 프로파일 중 적어도 하나를 구성원으로 포함하는 사용자 그룹을 식별할 수 있다. 예를 들어, 사용자(A, B, C)가 추론 요청의 사용자 프로파일에 최근접 이웃인 k 값을 3으로 가정한다. 만약 사용자 A가 그룹 1 및 2의 구성원이고 사용자 B가 그룹 2의 구성원이고 사용자 C가 그룹 3, 4 및 5의 구성원인 경우, 이 예에서 사용자 그룹은 이들 그룹 각각이 k개의 최근접 이웃 중 적어도 하나의 구성원을 포함하기 때문에 1, 2, 3, 4 및 5이다.
각 그룹에 대해, 제1 MPC 시스템은 그룹의 사용자 프로파일에 대한 전체(aggregate) 성능 측정치를 계산한다. 임계 성능 측정치가 사용자 상호 작용울인 경우, 제1 MPC 시스템은 예를 들어 그룹내의 사용자들에 대한 사용자 상호 작용 수를 그룹내의 사용자에게 디지털 컴포넌트가 디스플레이된 총 횟수로 나눔으로써 사용자 프로파일의 디지털 컴포넌트(들)에 대한 사용자 상호 작용율을 계산할 수 있다. 임계 성능 측정치가 전환율인 경우, 제1 MPC 시스템은 예를 들어 그룹에 해당하는 사용자의 전환 횟수를 그룹내의 사용자에게 디지털 컴포넌트가 디스플레이된 총 횟수로 나눔으로써 그룹내의 사용자에 대한 디지털 컴포넌트의 전환율을 계산할 수 있다. 성능 측정치를 계산한 후, 제1 MPC 시스템은 계산된 성능 측정치를 임계값 성능 측정치와 비교할 수 있다. 그런 다음 제1 MPC 시스템은 임계 성능 측정치를 충족하거나 초과하는 성능 측정치를 가진 그룹을 결정할 수 있다. 각각의 제2 MPC 시스템은 임계 성능 측정치를 만족하는 사용자 그룹을 식별하기 위해 동일한 프로세스를 수행할 수 있다.
제1 MPC 시스템은 하나 이상의 최근접 이웃을 나타내는 데이터를 애플리케이션(112)에 전송할 수 있다(1206). 예를 들어, 제1 MPC 시스템은 임계 성능 측정치를 충족하거나 초과하는 성능 측정치를 갖는 각 사용자 그룹을 나타내는 데이터를 전송할 수 있다. 유사하게, 각각의 제2 MPC 시스템은 임계 성능 측정치를 충족하거나 초과하는 성능 측정치를 갖는 각 사용자 그룹을 나타내는 데이터를 전송할 수 있다.
사용자 프로파일은 애플리케이션(112)에 의해 생성될 수 있다. 사용자 프로파일은 애플리케이션(112)의 사용자와 애플리케이션(112) 상에서 렌더링된 디지털 컨텐츠 간의 상호 작용을 나타내는 데이터를 포함할 수 있다. 상호 작용에는 전환 및 전환 결여가 포함될 수 있다.
기계 학습 모델은 최근접 이웃 모델일 수 있다. 최근접 이웃 모델의 최근접이웃은 해당 사용자 그룹과 관련된 개별 중심에 의해 표시된다. 제1 MPC 시스템은 개별 중심을 계산하기 위해 해당 사용자 그룹의 각 사용자에게 가중치를 할당할 수 있다. 가중치는 사용자의 상호 작용을 기반으로 할 수 있다. 각 사용자 그룹의 중심은 사용자 그룹의 구성원인 사용자에 대한 사용자 프로파일의 평균으로 표시되는 중심이 될 수 있다.
기계 학습 모델은 중심 모델 또는 최근접 이웃 모델 중 하나 이상일 수 있다. 예를 들어, k-NN은 사용자를 사용자 그룹이나 목록으로 분류하는데 사용할 수 있으며 중심 모델은 사용자 그룹 접근 방식에 대한 데이터를 전처리하는데 사용할 수 있다.
각각의 최근접 이웃의 성능 측정치는 최근접 이웃에 대응하는 하나 이상의 디지털 컴포넌트와의 사용자 상호 작용율 또는 최근접 이웃에 대응하는 하나 이상의 디지털 컴포넌트에 대한 전환율 중 적어도 하나를 포함할 수 있다.
기계 학습 모델은 k-최근접 이웃 모델을 포함할 수 있다. 일부 구현에서, k-최근접 이웃 모델의 각 이웃은 사용자의 사용자 프로파일을 나타낼 수 있다. 특정 구현에서, k-최근접 이웃 모델의 각각의 이웃은 복수의 사용자에 대한 사용자 그룹을 나타낼 수 있다.
도 13은 위에서 설명된 동작들을 수행하는데 사용될 수 있는 예시적인 컴퓨터 시스템(1300)의 블록도이다. 시스템(1300)은 프로세서(1310), 메모리(1320), 저장 디바이스(1330), 및 입출력 디바이스(1340)를 포함한다. 컴포넌트(1310, 1320, 1330, 1340) 각각은, 예를 들어, 시스템 버스(1350)를 사용하여 상호 연결될 수 있다. 프로세서(1310)는 시스템(1300) 내에서 실행을 위한 명령들을 처리할 수 있다. 일부 구현에서, 프로세서(1310)는 단일 스레드 프로세서이다. 다른 구현에서, 프로세서(1310)는 다중 스레드 프로세서이다. 프로세서(1310)는 메모리(1320) 또는 저장 디바이스(1330)에 저장된 명령들을 처리할 수 있다.
메모리(1320)는 시스템(1300) 내의 정보를 저장한다. 일 구현에서, 메모리(1320)는 컴퓨터 판독 가능 매체이다. 일부 구현에서, 메모리(1320)는 휘발성 메모리 유닛이다. 다른 구현에서, 메모리(1320)는 비-휘발성 메모리 유닛이다.
저장 디바이스(1330)는 시스템(1300)에 대용량 저장을 제공할 수 있다. 일부 구현에서, 저장 디바이스(1330)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(1330)는 예를 들어, 하드 디스크 디바이스, 광 디스크 디바이스, 네트워크를 통해 여러 컴퓨팅 디바이스(예를 들어, 클라우드 저장 디바이스)에 의해 공유되는 저장 디바이스, 또는 일부 다른 대용량 저장 디바이스를 포함할 수 있다.
입/출력 디바이스(1340)는 시스템(1300)에 대한 입/출력 동작을 제공한다. 일부 구현에서, 입출력 디바이스(1340)는 네트워크 인터페이스 디바이스, 예를 들어 이더넷 카드, 직렬 통신 디바이스(예를 들어, RS-232 포트), 및/또는 무선 인터페이스 디바이스(예를 들어, 802.11 카드) 중 하나 이상을 포함할 수 있다. 다른 구현에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 외부 디바이스(1360), 예를 들어, 키보드, 프린터 및 디스플레이 디바이스로 전송하도록 구성된 드라이버 디바이스를 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스, 모바일 통신 디바이스, 셋톱 박스 텔레비전 클라이언트 디바이스 등과 같은 다른 구현도 사용될 수 있다.
예시적인 처리 시스템이 도 13에서 설명되었지만, 본 명세서에서 설명된 주제 및 기능적 동작의 구현은 다른 유형의 디지털 전자 회로, 또는 본 명세서에 개시된 구조 및 그 구조적 등가물을 포함하는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다.
본 명세서에 기술된 주제 및 동작의 실시예는 디지털 전자 회로에서 구현되거나, 본 명세서에 개시된 구조 및 그 구조적 등가물을 포함하는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 설명된 주제의 실시예는 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작들을 제어하기 위해 컴퓨터 저장 매체(또는 미디어) 상에 인코딩된 하나 이상의 컴퓨터 프로그램, 즉, 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 대안적으로 또는 추가적으로, 프로그램 명령은 인공적으로 생성된 전파 신호, 예를 들어 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로 전송하기 위한 정보를 인코딩하기 위해 생성된 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 디바이스, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 이에 포함될 수 있다. 더욱이, 컴퓨터 저장 매체는 전파 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령의 소스 또는 목적지일 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 개별 물리적 컴포넌트 또는 매체(예를 들어, 다중 CD, 디스크 또는 기타 저장 디바이스)일 수 있거나 이에 포함될 수 있다.
본 명세서에서 설명되는 동작들은 하나 이상의 컴퓨터 판독 가능 저장 디바이스에 저장되거나 다른 소스로부터 수신된 데이터에 대해 데이터 처리 장치에 의해 수행되는 동작들로 구현될 수 있다.
"데이터 처리 디바이스"라는 용어는 예를 들어 프로그램 가능한 프로세서, 컴퓨터, 시스템 온 칩(system on a chip), 또는 전술한 것들의 다수 또는 조합을 포함하여 데이터를 처리하기 위한 모든 종류의 디바이스, 장치 및 기계를 포함한다. 장치는 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)과 같은 특수 목적 논리 회로를 포함할 수 있다. 장치는 또한 하드웨어에 추가하여 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 플랫폼 간 런타임 환경, 가상 머신 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일 또는 해석된 언어, 선언적 또는 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램이나 모듈, 컴포넌트, 서브루틴, 객체. 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하여 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만 반드시 그런 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 포함하는 파일의 일부, 해당 프로그램 전용 단일 파일 또는 다수의 조정 파일(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 있거나 여러 사이트에 분산되어 있고 통신 네트워크로 상호 연결된 다수의 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 설명된 프로세스 및 논리 흐름은 입력 데이터에 대해 동작하고 출력을 생성함으로써 동작을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 컴퓨터에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 FPGA 또는 ASIC과 같은 특수 목적 논리 회로에 의해 수행될 수 있고 장치도 이들로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는 예를 들어 범용 및 특수 목적 마이크로프로세서 모두를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리나 랜덤 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신한다. 컴퓨터의 필수 엘리먼트는 명령에 따라 동작을 수행하기 위한 프로세서와 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기, 광자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 연결된다. 그러나, 컴퓨터에는 그러한 디바이스가 필요하지 않다. 더욱이, 컴퓨터는 휴대 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스(예를 들어, 범용 직렬 버스(USB) 플래시 드라이브)와 같은 다른 디바이스에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 디바이스는 예를 들어 반도체 메모리 디바이스(예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스), 자기 디스크(예를 들어, 내부 하드 디스크 또는 이동식 디스크), 자기 광 디스크, 및 CD-ROM 및 DVD-ROM 디스크를 포함하여, 모든 형태의 비-휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에 기술된 주제의 실시예는 사용자에게 정보를 표시하기 위한 디스플레이 디바이스(예를 들어, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)를 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스가 사용자와의 상호 작용을 제공하는데 사용될 수 있는데, 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함한 모든 형태로 수신될 수 있다. 또한, 컴퓨터는 예를 들어 웹 브라우저에서 수신된 요청에 응답하여 사용자 클라이언트 디바이스의 웹 브라우저에 웹 페이지를 전송함으로써 사용자가 사용하는 디바이스로 문서를 보내고 문서를 수신하여 사용자와 상호 작용할 수 있다.
본 명세서에 설명된 주제의 실시예는 백엔드 컴포넌트(예를 들어, 데이터 서버)를 포함하거나, 미들웨어 컴포넌트(예를 들어, 애플리케이션 서버)를 포함하거나, 프런트 엔드 컴포넌트(예를 들어, 사용자가 본 명세서에 설명된 시스템 및 기술의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저가 있는 클라이언트 컴퓨터), 또는 이러한 백 엔드, 미들웨어 또는 프런트 엔드 컴포넌트의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트는 통신 네트워크와 같은 디지털 데이터 통신의 모든 형태 또는 매체에 의해 상호 연결될 수 있다. 통신 네트워크의 예에는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터 네트워크(예를 들어, 인터넷) 및 피어-투-피어 네트워크(예를 들어, 애드 혹 피어-투-피어 네트워크)가 포함된다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 인해 발생한다. 일부 실시예에서, 서버는 (예를 들어, 클라이언트 디바이스에 데이터를 디스플레이하고 클라이언트 디바이스와 상호 작용하는 사용자로부터 사용자 입력을 수신하기 위해) 데이터(예를 들어, HTML 페이지)를 클라이언트 디바이스로 전송한다. 클라이언트 디바이스에서 생성된 데이터(예를 들어, 사용자 상호 작용의 결과)는 서버에서 클라이언트 디바이스로부터 수신될 수 있다.
본 명세서는 많은 구체적인 구현 세부 사항을 포함하고 있지만, 이는 임의의 발명 또는 청구될 수 있는 것의 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 특정 발명의 특정 실시예에 특정된 특징에 대한 설명으로 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 서브 조합으로 다중 실시예에서 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 초기에 그렇게 청구될 수도 있지만, 청구된 조합의 하나 이상의 특징은 일부 경우에 조합에서 제거될 수 있고 청구된 조합은 서브 조합 또는 서브 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에 특정 순서로 도시되어 있지만, 이는 바람직한 결과를 달성하기 위해 그러한 동작들이 표시된 특정 순서 또는 순차적인 순서로 수행되거나 모든 도시된 동작들이 수행되어야 함을 요구하는 것으로 이해되어서는 안 된다. 특정 상황에서는 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 실시예에서 다양한 시스템 컴포넌트의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품에 패키징될 수 있음을 이해해야 한다.
따라서, 주제의 특정 실시예가 설명되었다. 다른 실시예는 다음 청구항의 범위 내에 있다. 일부 경우, 청구범위에 인용된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 또한, 첨부된 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하는 것은 아니다. 특정 구현에서는, 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (20)

  1. 방법으로서,
    다자간 연산(MPC) 클러스터의 제1 MPC 시스템에 의해 클라이언트 디바이스 상의 애플리케이션으로부터, 애플리케이션의 사용자에 대한 주어진 사용자 프로파일의 제1 셰어(share) 및 성능 임계값을 포함하는 추론 요청을 수신하는 단계;
    하나 이상의 제2 MPC 시스템과 협력하여 트레이닝된 기계 학습 모델을 사용하여 보안 MPC 프로세스를 수행함으로써, 사용자 프로파일에 대한 최근접 이웃 세트를 식별하는 단계;
    최근접 이웃 세트로부터, 성능 임계값을 만족하는 성능 측정치를 갖는 하나 이상의 최근접 이웃을 선택하는 단계;
    제1 MPC 시스템에 의해, 하나 이상의 최근접 이웃으로부터 도출된 데이터를 애플리케이션으로 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 사용자 프로파일은 애플리케이션에 의해 생성되고, 상기 사용자 프로파일은 애플리케이션의 사용자와 그 애플리케이션에 렌더링된 디지털 컨텐츠 사이의 상호 작용을 나타내는 데이터를 포함하고, 상기 상호 작용은 전환 및 전환 결여(lack)를 포함하는 것을 특징으로 하는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 기계 학습 모델은 최근접 이웃 모델이고, 상기 최근접 이웃 모델의 최근접 이웃은 대응하는 사용자 그룹과 관련된 개별 중심(centroids)으로 표현되는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 제1 MPC 시스템은 개별 중심을 계산하기 위해 대응하는 사용자 그룹의 각 사용자에게 가중치를 할당하고, 상기 가중치는 사용자에 의한 상호 작용 또는 성능 측정치과 관련된 사용자 정보 중 적어도 하나에 기초하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    각 사용자 그룹에 대한 중심은 사용자 그룹의 구성원인 사용자에 대한 사용자 프로파일의 평균으로 표현되는 중심인 것을 특징으로 하는 방법.
  6. 임의의 선행하는 항에 있어서,
    상기 기계 학습 모델은 중심 모델 또는 최근접 이웃 모델 중 하나 이상인 것을 특징으로 하는 방법.
  7. 임의의 선행하는 항에 있어서,
    각각의 최근접 이웃의 성능 측정치는,
    최근접 이웃에 대응하는 하나 이상의 디지털 컴포넌트와의 사용자 상호 작용율 또는 최근접 이웃에 대응하는 하나 이상의 디지털 컴포넌트에 대한 전환율 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  8. 임의의 선행하는 항에 있어서,
    상기 기계 학습 모델은 k-최근접 이웃 모델을 포함하고, 상기 k-최근접 이웃 모델의 각 이웃은 사용자의 사용자 프로파일을 나타내는 것을 특징으로 하는 방법.
  9. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 기계 학습 모델은 k-최근접 이웃 모델을 포함하고, 상기 k-최근접 이웃 모델의 각 이웃은 복수의 사용자에 대한 사용자 그룹을 나타내는 것을 특징으로 하는 방법.
  10. 임의의 선행하는 항에 있어서,
    상기 성능 임계값은 임계값이고, 상기 하나 이상의 디지털 컴포넌트에 대한 전환율은 하나 이상의 디지털 컴포넌트가 사용자 그룹 내의 사용자에게 디스플레이된 횟수로 나눈 전환 횟수이고, 상기 추론 요청은 사용자가 사용자 그룹에 추가되어야 하는지 여부를 추론하기 위한 요청인 것을 특징으로 하는 방법.
  11. 시스템으로서,
    적어도 하나의 프로그램 가능 프로세서와; 그리고
    적어도 하나의 프로그램 가능 프로세서에 의해 실행될 때, 적어도 하나의 프로그램 가능 프로세서로 하여금 동작들을 수행하게 하는 명령들을 저장하는 기계 판독 가능 매체를 포함하고, 상기 동작들은:
    다자간 연산(MPC) 클러스터의 제1 MPC 시스템에 의해 클라이언트 디바이스 상의 애플리케이션으로부터, 애플리케이션의 사용자에 대한 주어진 사용자 프로파일의 제1 셰어 및 성능 임계값을 포함하는 추론 요청을 수신하는 동작과;
    하나 이상의 제2 MPC 시스템과 협력하여 트레이닝된 기계 학습 모델을 사용하여 보안 MPC 프로세스를 수행함으로써, 사용자 프로파일에 대한 최근접 이웃 세트를 식별하는 동작과;
    최근접 이웃 세트로부터, 성능 임계값을 만족하는 성능 측정치를 갖는 하나 이상의 최근접 이웃을 선택하는 동작과;
    제1 MPC 시스템에 의해, 하나 이상의 최근접 이웃으로부터 도출된 데이터를 애플리케이션으로 전송하는 동작을 포함하는 것을 특징으로 하는 시스템.
  12. 제11항에 있어서,
    상기 사용자 프로파일은 애플리케이션에 의해 생성되고, 상기 사용자 프로파일은 애플리케이션의 사용자와 애플리케이션에 렌더링된 디지털 컨텐츠 사이의 상호 작용을 나타내는 데이터를 포함하고, 상기 상호 작용은 전환 및 전환 결여를 포함하는 것을 특징으로 하는 시스템.
  13. 제11항 또는 제12항에 있어서,
    상기 기계 학습 모델은 최근접 이웃 모델이고, 상기 최근접 이웃 모델의 최근접 이웃은 대응하는 사용자 그룹과 관련된 개별 중심으로 표현되는 것을 특징으로 하는 시스템.
  14. 제13항에 있어서,
    상기 제1 MPC 시스템은 개별 중심을 계산하기 위해 대응하는 사용자 그룹의 각 사용자에게 가중치를 할당하고, 상기 가중치는 사용자에 의한 상호 작용 또는 성능 측정치과 관련된 사용자 정보 중 적어도 하나에 기초하는 것을 특징으로 하는 시스템.
  15. 제14항에 있어서,
    각 사용자 그룹에 대한 중심은 사용자 그룹의 구성원인 사용자에 대한 사용자 프로파일의 평균으로 표현되는 중심인 것을 특징으로 하는 시스템.
  16. 제11항 내지 제15항 중 어느 한 항에 있어서,
    상기 기계 학습 모델은 중심 모델 또는 최근접 이웃 모델 중 하나 이상인 것을 특징으로 하는 시스템.
  17. 제11항 내지 제16항 중 어느 한 항에 있어서,
    각각의 최근접 이웃의 성능 측정치는,
    최근접 이웃에 대응하는 하나 이상의 디지털 컴포넌트와의 사용자 상호 작용율 또는 최근접 이웃에 대응하는 하나 이상의 디지털 컴포넌트에 대한 전환율 중 적어도 하나를 포함하는 것을 특징으로 하는 시스템.
  18. 제11항 내지 제17항 중 어느 한 항에 있어서,
    상기 기계 학습 모델은 k-최근접 이웃 모델을 포함하고, 상기 k-최근접 이웃 모델의 각 이웃은 사용자의 사용자 프로파일을 나타내는 것을 특징으로 하는 시스템.
  19. 제11항 내지 제18항 중 어느 한 항에 있어서,
    상기 기계 학습 모델은 k-최근접 이웃 모델을 포함하고, 상기 k-최근접 이웃 모델의 각 이웃은 복수의 사용자에 대한 사용자 그룹을 나타내는 것을 특징으로 하는 시스템.
  20. 적어도 하나의 프로그램 가능 프로세서에 의해 실행될 때 적어도 하나의 프로그램 가능 프로세서로 하여금 동작들을 수행하게 하는 명령들을 저장하는 하나 이상의 컴퓨터 프로그램 제품으로서, 상기 동작들은:
    다자간 연산(MPC) 클러스터의 제1 MPC 시스템에 의해 클라이언트 디바이스 상의 애플리케이션으로부터, 애플리케이션의 사용자에 대한 주어진 사용자 프로파일의 제1 셰어 및 성능 임계값을 포함하는 추론 요청을 수신하는 동작과;
    하나 이상의 제2 MPC 시스템과 협력하여 트레이닝된 기계 학습 모델을 사용하여 보안 MPC 프로세스를 수행함으로써, 사용자 프로파일에 대한 최근접 이웃 세트를 식별하는 동작과;
    최근접 이웃 세트로부터, 성능 임계값을 만족하는 성능 측정치를 갖는 하나 이상의 최근접 이웃을 선택하는 동작과;
    제1 MPC 시스템에 의해, 하나 이상의 최근접 이웃으로부터 도출된 데이터를 애플리케이션으로 전송하는 동작을 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1020227029827A 2021-04-09 2021-04-09 분류 정확도를 향상시키기 위한 기계 학습 모델링 데이터의 처리 KR20220140759A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2021/026618 WO2022216293A1 (en) 2021-04-09 2021-04-09 Processing of machine learning modeling data to improve accuracy of categorization

Publications (1)

Publication Number Publication Date
KR20220140759A true KR20220140759A (ko) 2022-10-18

Family

ID=75888152

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227029827A KR20220140759A (ko) 2021-04-09 2021-04-09 분류 정확도를 향상시키기 위한 기계 학습 모델링 데이터의 처리

Country Status (6)

Country Link
US (1) US20230274183A1 (ko)
EP (1) EP4097619A1 (ko)
JP (1) JP7422892B2 (ko)
KR (1) KR20220140759A (ko)
CN (1) CN115461744A (ko)
WO (1) WO2022216293A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907392B2 (en) * 2021-05-12 2024-02-20 Seagate Technology Llc System and method utilizing function secret sharing with conditional disclosure of secrets
US20230117402A1 (en) * 2021-10-18 2023-04-20 Perion Network Ltd Systems and methods of request grouping
EP4423629A1 (en) * 2022-06-02 2024-09-04 Google LLC Distributing digital components based on predicted attributes
CN115408985B (zh) * 2022-10-31 2023-04-07 天津联想协同科技有限公司 在线电子表格工作表名称显示方法、装置及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473183A (zh) * 2009-07-14 2012-05-23 索尼公司 内容推荐系统、内容推荐方法、内容推荐设备以及信息存储介质
JP5369066B2 (ja) * 2010-08-02 2013-12-18 日本電信電話株式会社 リコメンデーションシステム、発言端末、検索端末、リコメンデーション方法
EP2688264B1 (en) * 2012-07-16 2016-08-24 Alcatel Lucent Method and apparatus for privacy protected clustering of user interest profiles
EP3031165A2 (en) * 2013-08-09 2016-06-15 Thomson Licensing A method and system for privacy preserving matrix factorization
JP6750195B2 (ja) * 2015-06-24 2020-09-02 日本電気株式会社 広告配信装置、広告受信装置、広告配信システム、広告配信方法、広告受信方法、およびプログラム
WO2018135334A1 (ja) * 2017-01-19 2018-07-26 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
WO2019063503A1 (en) * 2017-09-29 2019-04-04 Robert Bosch Gmbh METHOD FOR CALCULATING FASTER SECURED MULTIPARTITE INTERNAL PRODUCT USING SPDZ
WO2020077576A1 (en) * 2018-10-17 2020-04-23 Alibaba Group Holding Limited Secret sharing with a trusted initializer

Also Published As

Publication number Publication date
EP4097619A1 (en) 2022-12-07
JP7422892B2 (ja) 2024-01-26
CN115461744A (zh) 2022-12-09
JP2023524356A (ja) 2023-06-12
US20230274183A1 (en) 2023-08-31
WO2022216293A1 (en) 2022-10-13

Similar Documents

Publication Publication Date Title
US20230214684A1 (en) Privacy preserving machine learning using secure multi-party computation
JP7422892B2 (ja) 分類の正確さを改善するための機械学習モデリングデータの処理
JP7361928B2 (ja) 勾配ブースティングを介したプライバシーを守る機械学習
JP7471445B2 (ja) コンテンツの配信と分析のためのプライバシーを守る機械学習
US11843672B2 (en) Privacy preserving centroid models using secure multi-party computation
US20220405407A1 (en) Privacy preserving cross-domain machine learning
CN114450919A (zh) 在线隐私保护技术
JP2024073565A (ja) プライバシーを守る機械学習ラベリング
CN115918029A (zh) 使用安全多方计算的灵活内容选择过程
JP7471450B2 (ja) セキュアマルチパーティ計算の性能の向上