KR102459835B1 - 온-디바이스 기계 학습 플랫폼 - Google Patents

온-디바이스 기계 학습 플랫폼 Download PDF

Info

Publication number
KR102459835B1
KR102459835B1 KR1020217035225A KR20217035225A KR102459835B1 KR 102459835 B1 KR102459835 B1 KR 102459835B1 KR 1020217035225 A KR1020217035225 A KR 1020217035225A KR 20217035225 A KR20217035225 A KR 20217035225A KR 102459835 B1 KR102459835 B1 KR 102459835B1
Authority
KR
South Korea
Prior art keywords
context
training
application
computing device
machine learning
Prior art date
Application number
KR1020217035225A
Other languages
English (en)
Other versions
KR20210134822A (ko
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 KR20210134822A publication Critical patent/KR20210134822A/ko
Application granted granted Critical
Publication of KR102459835B1 publication Critical patent/KR102459835B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Computational Linguistics (AREA)
  • Stored Programmes (AREA)

Abstract

본 개시는 온-디바이스 기계 학습을 위한 시스템 및 방법을 제공한다. 특히, 본 개시는 온-디바이스 기계 학습 플랫폼 및 온-디바이스 예측, 훈련, 예시 수집 및/또는 다른 기계 학습 태스크 또는 기능을 가능하게 하는 관련 기술에 관한 것이다. 온-디바이스 기계 학습 플랫폼은 컨텍스트 피처를 수집된 훈련 예 및/또는 예측/추론을 생성하는데 사용되는 클라이언트 제공 입력 데이터에 안전하게 주입하는 콘텍스트 제공자를 포함할 수 있다. 따라서, 온-디바이스 기계 학습 플랫폼은 중앙화된 훈련 예 수집(컬렉션), 모델 훈련 및 기계 학습 모델의 사용을 애플리케이션 또는 다른 클라이언트에 대한 서비스로 사용할 수 있다.

Description

온-디바이스 기계 학습 플랫폼{ON-DEVICE MACHINE LEARNING PLATFORM}
본 개시는 일반적으로 기계 학습에 관한 것이다. 보다 구체적으로, 본 발명은 온-디바이스 기계 학습 플랫폼 및 온-디바이스 예측, 훈련(학습), 예시 수집 및/또는 다른 기계 학습 태스크 또는 기능을 가능하게 하는 관련 기술에 관한 것이다.
최근, 컴퓨팅 장치의 사용자에게 개선된 서비스를 제공하기 위해 기계 학습(기계 학습)이 점점 더 많이 사용되고 있다. 특히, 많은 애플리케이션 또는 다른 컴퓨팅 프로그램 또는 시스템은 하나 이상의 기계 학습 모델에 의존하여 프로그램, 장치(디바이스) 및/또는 사용자와 관련된 입력 데이터에 기초하여 추론을 생성한다. 애플리케이션(들)은 추론(들)을 사용하여 모든 유형의 태스크 또는 서비스를 수행하거나 영향을 줄 수 있다.
기계 학습 문제를 해결하기 위한 하나의 종래의 훈련 방식은 중앙(중앙 집중식) 위치(예를 들어, 서버 장치(디바이스)에서 복수의 컴퓨팅 장치(예를 들어, 스마트폰과 같은 사용자 장치(디바이스))로부터 복수의 훈련 예를 수집하는 것을 포함한다. 그 다음 수집된 교육 예를 기반으로 중앙 집중식 위치에서 기계 학습 모델이 훈련될 수 있다.
또한, 일부 경우에, 훈련된 모델은 중앙 위치에 저장될 수 있다. 모델로부터 추론을 수신하기 위해, 사용자 컴퓨팅 장치는 입력 데이터를 네트워크를 통해 서버 컴퓨팅 장치로 전송하고, 전송된 데이터를 기반으로 추론(들)을 생성하기 위해 서버 장치가 기계 학습된 모델을 구현할 때까지 기다리고, 그 다음 네트워크를 통해 서버 컴퓨팅 장치로부터 추론(들)을 수신한다.
이러한 시나리오에서, 훈련 예(들) 및/또는 추론(들)은 네트워크를 통해 사용자 컴퓨팅 장치와 서버 컴퓨팅 장치 사이에서 전송될 필요가 있다. 이러한 네트워크 전송은 네트워크를 통해 전송된 데이터가 간섭(interception)에 취약할 수 있기 때문에 데이터 보안 위험을 나타낸다. 또한, 이러한 네트워크 전송은 네트워크 트래픽을 증가시켜 통신 속도를 저하시킬 수 있다. 또한 네트워크를 통한 데이터 전송과 관련된 대기시간(latency)으로 인해 애플리케이션 서비스 제공이 지연될 수 있다.
보다 최근에, 특정 애플리케이션은 애플리케이션 내에 저장되고 사용자 장치상의 애플리케이션에 의해 구현되는 기계 학습된 모델을 포함하고 있다. 그러나 이 아키텍처는 구현 및 리소스 집약적인 문제가 있다. 예를 들어, 이러한 시나리오에서, 애플리케이션은 하나 이상의 기계 학습 모델을 저장, 관리, 훈련 및/또는 구현해야 한다. 애플리케이션 자체 내에서 모델과 해당 지원 서비스를 포함하면 애플리케이션의 데이터 크기가 커져 메모리 사용 공간이 더 커질 수 있다.
애플리케이션 내의 기계 학습에는 더 빈번한 애플리케이션 업데이트가 필요할 수 있다. 예를 들어, 기본 기계 학습 엔진이 업데이트되거나 다른 방식으로 발전함에 따라 애플리케이션을 업데이트해야 할 수도 있다. 업데이트를 다운로드하여 설치하면 애플리케이션 업데이트는 바람직하지 않게 사용자의 네트워크 사용 및 다운타임(downtime)을 요구할 수 있다.
또한, 애플리케이션 자체에 추가 서비스를 구축해야 하므로 애플리케이션 내의 기계 학습으로 인해 애플리케이션 개발이 복잡해질 수 있다. 따라서 개발자는 다른 기계 학습 엔진의 복잡한(intricacies) 내용을 배우고 유지해야 할 수도 있다.
본 개시의 실시 형태의 양태 및 장점은 다음의 설명에서 부분적으로 설명될 것이거나, 설명으로부터 배울 수 있거나, 실시예의 실시를 통해 학습될 수 있다.
본 개시의 일 양태는 컴퓨팅 장치에 관한 것이다. 컴퓨팅 장치는 하나 이상의 프로세서 및 하나 이상의 비 일시적 컴퓨터 판독 가능 매체를 포함한다. 하나 이상의 비 일시적 컴퓨터 판독 가능 매체는, 하나 이상의 프로세서에 의해 구현되는 하나 이상의 애플리케이션; 하나 이상의 애플리케이션으로부터 수신된 훈련 예(training examples)를 저장하는 중앙화된 예시 데이터베이스; 그리고 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 장치로 하여금 동작을 수행하는 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령어를 저장한다. 동작은 수집(collection) 애플리케이션 프로그래밍 인터페이스를 통해 하나 이상의 애플리케이션 중 제1 애플리케이션으로부터 새로운 훈련(학습) 예를 수신하는 단계를 포함한다. 동작은 컴퓨팅 장치와 관련된 컨텍스트를 설명하는 하나 이상의 컨텍스트 피처를 결정하는 것을 포함한다. 동작들은 컴퓨팅 장치에 의해 저장된 기계 학습된(훈련된) 모델을 학습하는데 사용하기 위해 중앙화된 예시 데이터베이스에 하나 이상의 컨텍스트 피처와 함께 새로운 학습(훈련) 예를 저장하는 단계를 포함한다.
본 개시의 다른 양태는, 하나 이상의 프로세서에 의해 실행될 때 컴퓨팅 장치로 하여금 동작을 수행하는 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령어를 저장하는 하나 이상의 비 일시적 컴퓨터 판독 가능 매체에 관한 것이다. 동작은 예측 애플리케이션 프로그래밍 인터페이스를 통해 컴퓨팅 장치에 저장된 하나 이상의 애플리케이션 중 제1 애플리케이션으로부터 입력 데이터를 수신하는 단계를 포함한다. 동작은 컴퓨팅 장치와 관련된 컨텍스트를 설명하는 하나 이상의 컨텍스트 피처를 결정하는 것을 포함한다. 동작은 입력 데이터에 적어도 부분적으로 기초하고 하나 이상의 컨텍스트 피처에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하기 위해 컴퓨팅 장치상에 저장된 하나 이상의 기계 학습된 모델 중 적어도 제1 기계 학습된 모델을 사용하는 단계를 포함한다. 동작들은 제1 기계 학습된 모델에 의해 생성된 적어도 하나의 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션에 제공하는 단계를 포함한다.
본 개시의 다른 양태는 컴퓨터로 구현되는 방법에 관한 것이다. 이 방법은 수집 애플리케이션 프로그래밍 인터페이스를 통한 컴퓨팅 장치에 의해, 컴퓨팅 장치에 의해 저장된 하나 이상의 애플리케이션 중 제1 애플리케이션으로부터 새로운 학습 예를 수신하는 단계를 포함한다. 방법은 컴퓨팅 장치에 의해, 컴퓨팅 장치와 연관된 컨텍스트를 설명하는 하나 이상의 컨텍스트 피처를 결정하는 단계를 포함한다. 상기 방법은 컴퓨팅 장치에 의해, 컴퓨팅 장치에 의해 저장된 기계 학습된 모델을 학습하는데 사용하기 위해 컴퓨팅 장치에 의해 컴퓨팅 장치의 중앙화된 예시 데이터베이스에 하나 이상의 컨텍스트 피처와 함께 새로운 학습 예를 저장하는 단계를 포함한다.
본 개시의 다른 양태는 다양한 시스템, 장치, 비 일시적 컴퓨터 판독 가능 매체, 사용자 인터페이스 및 전자 장치에 관한 것이다.
본 개시의 다양한 실시 예들의 이들 및 다른 특징, 양태 및 장점은 다음의 설명 및 첨부된 청구 범위를 참조하여 더 잘 이해 될 것이다. 본 명세서에 포함되어 본 명세서의 일부를 구성하는 첨부 도면은 본 개시의 예시적인 실시 예를 예시하고, 상세한 설명과 함께 관련 원리를 설명하는 역할을 한다.
본 기술 분야의 통상의 기술자를 대상으로 하는 실시 예들의 상세한 설명은 본 명세서에 제시되며, 첨부 도면을 참조한다.
도 1은 본 개시의 예시적인 실시 예에 따른 온-디바이스 기계 학습 플랫폼을 포함하는 예시적인 컴퓨팅 시스템의 블록도를 도시한다.
도 2는 본 개시의 예시적인 실시 예에 따른 예시적인 기계 학습 모델 배치의 그래픽도를 도시한다.
도 3은 본 개시의 예시적인 실시 예에 따른 예시적인 개인화 및 연합(federated) 학습 데이터 흐름의 그래픽 다이어그램을 도시한다.
도 4는 본 개시의 예시적인 실시 예에 따른 예시적인 온-디바이스 기계 학습 플랫폼의 블록도를 도시한다.
도 5a 및 5b는 본 개시의 예시적인 실시 예에 따라 컨텍스트 피처를 주입(삽입)(injecting)하는 예시적인 기계 학습 플랫폼의 블록도를 도시한다.
도 6a 및 6b는 본 개시의 예시적인 실시 예에 따른 모델 학습을 수행하는 예시적인 장치의 블록도를 도시한다.
도 7은 본 개시의 예시적인 실시 예에 따른 예시적인 연합 학습 프로세스의 그래픽 다이어그램을 도시한다.
도 8은 본 개시의 예시적인 실시 예에 따른 기계 학습 모델을 사용하여 추론을 생성하는 예시적인 방법의 흐름도를 도시한다.
도 9는 본 개시의 예시적인 실시 예에 따라 기계 학습을 수행하기 위한 학습(훈련) 예를 수집하는 예시적인 방법의 흐름도를 도시한다.
도 10은 본 개시의 예시적인 실시 예에 따라 기계 학습 모델을 훈련시키는 예시적인 방법의 흐름도를 도시한다.
일반적으로, 본 개시는 온-디바이스(on-device) 기계 학습을 위한 시스템 및 방법에 관한 것이다. 특히, 본 개시는 온-디바이스 기계 학습 플랫폼 및 온-디바이스 예측(prediction), 훈련, 예시 수집 및/또는 다른 기계 학습 태스크 또는 기능을 가능하게 하는 관련 기술에 관한 것이며, 이를 총괄적으로 "기계 학습 기능"으로 지칭될 수 있다.
온-디바이스 기계 학습 플랫폼은 컴퓨팅 장치 또는 단말기(예를 들어, 스마트폰 또는 태블릿) 상에 로컬로 저장된 하나 이상의 컴퓨터 프로그램의 형태일 수 있고, 이는 사용자 장치 또는 단말기에 의해 실행될 때, 하나 이상의 로컬에 저장된 애플리케이션, 루틴 또는 다른 로컬 클라이언트를 대신하여 온 다비이스 기계 학습 기능의 성능을 가능하게 하는 기계 학습 관리 오퍼레이션을 수행하도록 구성된다.
온-디바이스 기계 학습 기능 중 적어도 일부는 컴퓨팅 장치 또는 단말기 상에 로컬로 구현된 하나 이상의 기계 학습 엔진을 사용하여 수행될 수 있다. 하나 이상의 로컬에 저장된 애플리케이션 또는 루틴("클라이언트"라고 지칭될 수 있음)을 대신하여 온 디바이스 기계 학습 기능의 성능은 해당 클라이언트에 중앙화된(centralized) 서비스로 제공될 수 있으며, 이는 하나 이상의 API(애플리케이션프로그래밍 인터페이스)를 통해 온-디바이스 기계 학습 플랫폼과 상호 작용할 수 있다.
또한, 일부 구현에서, 온-디바이스 기계 학습 플랫폼은 예측/추론을 생성하기 위해 사용된 수집된 훈련 예 및/또는 클라이언트가 제공한 입력 데이터(input data)에 컨텍스트 피처를 안전하게 주입(삽입)(inject)하는 컨텍스트 제공자를 포함할 수 있다. 따라서, 온-디바이스 기계 학습 플랫폼은 중앙화된 훈련 예제(예) 수집, 모델 훈련(트레이닝) 및 기계 학습된 모델의 사용을 애플리케이션 또는 다른 클라이언트에 대한 서비스로 사용할 수 있다.
보다 구체적으로, 예를 들어, 모바일 컴퓨팅 장치(예를 들어, 스마트폰)와 같은 컴퓨팅 장치는 하나 이상의 애플리케이션(예를 들어, 모바일 애플리케이션)을 저장하거나 포함할 수 있다. 컴퓨팅 장치는 또한 온-디바이스 기계 학습 플랫폼 및 하나 이상의 기계 학습 모델을 포함하고 구현할 수 있다. 예를 들어, 기계 학습 모델은 플랫폼에서 관리하는 중앙화된 모델 계층으로 장치에 의해 저장될 수 있다.
본 개시의 일 양태에 따르면, 애플리케이션은 API("예측 API"로 지칭될 수 있음)를 통해 온-디바이스 기게 학습 플랫폼과 통신하여 입력 데이터를 제공하고 하나 이상의 기계 학습 모델로부터 입력 데이터에 기초한 예측을 얻을 수 있다. 예로서, 일부 구현들에서, 예측 계획(예를 들어, 추론/예측을 얻기 위해 모델을 실행하기 위한 명령들(명령어들)) 및 모델 파라미터들에 대한 URI(Uniform Resource Identifier)가 주어지면, 온-디바이스 기계 학습 플랫폼은 URI 콘텐츠를 다운로드 할 수 있고(예를 들어, 예측 계획 및 파라미터), 모델을 실행함으로써 (예를 들어, 기계 학습 엔진과 상호 작용하여 엔진에 의해 모델을 구현함으로써) 하나 이상의 추론/예측을 얻는다. 또한 플랫폼은 콘텐츠를 캐시(cache)하여 후속 예측 요청에 사용할 수 있다.
따라서, 온 디바이스 기계 학습 모델은 클라이언트/서비스 관계를 통해 온 디바이스 기계 학습 플랫폼과 통신함으로써 애플리케이션에 의해 액세스될 수 있다. 특히, 일부 구현에서, 기계 학습 플랫폼은 애플리케이션에 의해 참조될 수 있는 독립형 다중-테넌트(multi-tenant) 서비스일 수 있다. 따라서, 주어진 애플리케이션은 기계 학습(학습된) 모델(들)을 저장, 관리, 훈련 및/또는 구현할 필요가 없지만, 대신 온-디바이스 기계 학습 플랫폼과 통신하여 모델(들)로부터 추론을 요청 및 수신할 수 있다.
본 개시의 다른 양태에 따르면, 컴퓨팅 장치는 하나 이상의 애플리케이션으로부터 수신된 훈련 예를 저장하는 중앙화된 예시(예제)(centralized example) 데이터베이스를 더 포함할 수 있다. 특히, 온-디바이스 기계 학습 플랫폼은 API("컬렉션 API"로 지칭될 수 있음)를 통해 애플리케이션으로부터 훈련 예를 수신할 수 있고, 중앙화된 예시 데이터베이스에서 예시(examples)의 저장을 관리할 수 있다. 예를 들어, 플랫폼의 클라이언트 또는 테넌트인 각 애플리케이션은 중앙화된 예시 데이터베이스 내에 저장된 고유한 예제(예시) 컬렉션을 가질 수 있으며, 그 컬렉션은 온라인 방식으로 보완 및/또는 관리될 수 있다.
일부 구현들에서, 온-디바이스 기계 학습 플랫폼은 훈련 예를 제공하는 애플리케이션과 연관된 하나 이상의 옵션 파라미터들에 따라 (예를 들어, 대응하는 컬렉션 내) 애플리케이션으로부터 수신된 각각의 훈련 예의 저장을 야기할 수 있다. 일례로서, 옵션 파라미터는 훈련 예가 저장되는 (예를 들어, 그 후 삭제되는) 기간을 정의하는 TTL(time-to-live) 파라미터를 포함할 수 있다. 일부 구현들에서, 옵션 파라미터들은 컬렉션(수집) API를 통해 플랫폼에 제공되는 명령들을 통해 사전 정의 및/또는 조정될 수 있다.
본 개시의 다른 양태에 따르면, 일부 구현들에서, 온-디바이스 기계 학습 플랫폼은 컴퓨팅 장치와 연관된 컨텍스트를 설명하는 컨텍스트 피처들을 훈련 예들로 안전하게 주입할 수 있다. 예를 들어, 애플리케이션으로부터 훈련 예를 수신하면, 온-디바이스 플랫폼의 컨텍스트 제공자 컴포넌트는 하나 이상의 컨텍스트 피처를 결정하고, 이러한 컨텍스트 피처를 훈련 예와 함께 중앙화된 예시 데이터베이스에 저장할 수 있다. 예를 들어, 새로운 학습 예에서 제공되는 컨텍스트 피처와 데이터는 단일 데이터베이스 엔트리로 저장될 수 있다. 특정 애플리케이션으로부터 수신된 훈련 예와 결정되고 주입되거나 달리 연관 및/또는 저장된 특정 컨텍스트 피처는 특정 애플리케이션에 대한 옵션 파라미터에 의해 특정될 수 있다. 위에서 설명한 것처럼 이러한 옵션 기능은 컬렉션 API를 통해 조정하거나 미리 정의할 수 있다. 따라서, 애플리케이션은 컨텍스트 피처 또는 컨텍스트 유형이 훈련 예에 주입되는 것을 제어(예를 들어, 옵션 파라미터를 정의함으로써)할 수 있다.
일부 구현들에서, 컨텍스트 피처들은 서비스 측에 주입되어, 컨텍스트 피처들은 애플리케이션에 직접 이용 가능할 필요가 없다. 특히, 일부 구현들에서, 중앙화된 예시 데이터베이스는 하나 이상의 애플리케이션들에 의해 직접 액세스 가능하지 않아서, 특정 훈련 예와 함께 저장된 컨텍스트 정보는 훈련 예를 제공한 애플리케이션 조차도 액세스할 수 없다.
일부 구현들에서, 컨텍스트 피처들은 다수의 상이한 컨텍스트 유형들에 따라 그룹화되거나 달리 분류될 수 있다. 일반적으로 각 컨텍스트 유형은 잘 알려진 이름과 잘 알려진 유형의 컨텍스트 피처 세트를 지정(특정)하거나 포함할 수 있다. 컨텍스트 유형의 한 예는 오디오 상태, 네트워크 상태, 전원 연결 등의 컨텍스트 피처 예를 포함하는 장치 정보이다.
일부 구현들에서, 컨텍스트 제공자는 주입 시점(time/point)에서 장치(디바이스) (예를 들어, 디바이스의 컨텍스트 관리자)로부터 주어진 컨텍스트 피처(context feature)에 대해 주입된 값을 요청한다. 대안적으로 또는 추가적으로, 컨텍스트 제공자는 하나 이상의 컨텍스트 업데이트(context updates)에 대한 리스너(listener)로서 등록(register)할 수 있고, 하나 이상의 컨텍스트 업데이트에 기초하여 컨텍스트 피처에 대한 현재 값의 컨텍스트 피처 캐시를 유지할 수 있다. 그 다음 컨텍스트 피처가 주입되면 컨텍스트 제공자는 단순히 컨텍스트 피처 캐시에 액세스하여 특정 컨텍스트 피처에 대해 캐시에서 유지된 현재 값을 주입할 수 있다.
저장 시간에 훈련 예에 대한 컨텍스트 피처의 주입에 추가하여 또는 대안으로, 컨텍스트 제공자는 또한 추론 시간에 컨텍스트 피처의 주입을 수행할 수 있다. 특히, 특히 위에서 설명한 예제 컬렉션 훈련 과정과 유사하게, 특정 애플리케이션 또는 다른 클라이언트가 (예를 들어, 예측 API를 통해) 일부 클라이언트 제공 입력 데이터에 기초하여 추론이 생성되도록 요청하는 경우, 컨텍스트 제공자는 입력 데이터와 함께 해당 기계 학습 모델에 입력하기 위한 보충 컨텍스트 피처를 주입하거나 제공할 수 있다. 따라서, 클라이언트 제공 입력 데이터에 더하여 컨텍스트 정보에 적어도 부분적으로 기초하여 추론될 수 있으며, 추론의 정확성을 향상시키는 데 도움이 될 수 있다.
중요하게, 본 명세서에 기술된 훈련 예 및 컨텍스트 피처는 훈련 예와 함께 저장될 수 있거나 온-디바이스 플랫폼에 의한 추론을 제공하기 위해 사용될 수 있는 예시 데이터(example data)를 설명하기 위해 단순히 제공된다. 그러나 사용자가 어떤 데이터를 수집하고 그러한 데이터가 어떻게 사용되는지에 대한 정보를 얻은 후에 사용자가 동의하지 않으면 이러한 데이터는 수집, 사용 또는 분석되지 않는다. 또한, 사용자에게 권한 범위를 철회하거나 수정하는 도구가 제공될 수 있다. 또한, 특정 정보 또는 데이터는 개인 식별 정보가 암호화된 방식으로 제거 또는 저장되도록 저장 또는 사용되기 전에 여러 가지 방식으로 처리될 수 있다.
다른 양태에 따르면, 특정 애플리케이션들 또는 다른 클라이언트들은 (예를 들어, 디바이스 사용자에 의해 정의되거나 제어되는) 특정 컨텍스트 피처들 또는 컨텍스트 유형들에만 액세스할 수 있는 권한을 가질 수 있기 때문에, 컨텍스트 제공자는 클라이언트 권한 제어를 수행할 수 있다. 특히, 일부 구현들에서, 온-디바이스 기계 학습 플랫폼 또는 다른 디바이스 컴포넌트는 어느 클라이언트가 어떤 컨텍스트 유형에 액세스할 수 있는 권한을 갖는지의 매핑을 유지할 수 있다. 컨텍스트 피처를 주입해야 하는 경우(예: 저장을 위한 훈련 예에 또는 추론시 클라이언트 제공 입력 데이터를 보완하기 위해) 컨텍스트 제공자는 주입될 컨텍스트 피처 또는 컨텍스트 유형에 대한 해당 애플리케이션 또는 다른 클라이언트의 허가 상태를 확인할 수 있다. 예를 들어, 특정 애플리케이션 및 컨텍스트 유형에 대한 권한 상태는 해당 애플리케이션에 이러한 컨텍스트 유형에 대한 액세스 권한이 있는지 여부를 설명할 수 있다. 컨텍스트 제공자는 애플리케이션이 액세스할 수 있는 컨텍스트 유형에 포함된 컨텍스트 피처만 삽입하여 애플리케이션이 액세스 권한이 없는 컨텍스트 피처/유형(타입)에 액세스(이차적인 방법으로도)하지 못하게 한다.
위에서 설명된 TTL( time-to-live) 옵션 파라미터와 유사하게, 일부 구현들에서, 각각의 컨텍스트 피처는 이와 관련되거나 할당된 만료 기간을 가질 수 있다. 이 만료 기간 정보는 컨텍스트 피처(들)가 포함된 각 훈련 예(예시)와 연관될 수 있다. 일부 구현들에서, 특정 훈련 예에서 제공되는 특정 컨텍스트 피처에 대한 만료 기간의 종료시, 그러한 컨텍스트 피처에 대한 값은 그러한 훈련 예에서 삭제되거나 제거될 수 있다. 또는 전체 훈련 예를 삭제하거나 제거할 수 있다.
또한 일부 구현에서, 특정 컨텍스트 피처 또는 컨텍스트 유형에 대한 특정 애플리케이션 또는 다른 클라이언트에 대한 권한 상태에 대한 변경에 응답하여, 온-디바이스 플랫폼은 중앙화된 예시 데이터베이스에서 특정 애플리케이션과 관련된 훈련 예와 관련된 컨텍스트 피처(들) 또는 유형(들)에 대한 값 또는 엔트리를 삭제할 수 있다. 또한, 일부 구현들에서, 해당 모델(들)은 컨텍스트 피처 값(들)의 삭제 후 나머지 데이터에 대해 재훈련될 수 있다.
본 발명의 또 다른 양태에 따르면, 애플리케이션은 API( "훈련 API"라고도 함)를 통해 온 디바이스 기계 학습 플랫폼과 통신하여 중앙화된 예시 데이터베이스에 저장된 훈련 예를 기반으로 기계 학습 모델을 재훈련시키거나 업데이트할 수 있다. 예를 들어, 일부 구현에서 훈련 계획에 대한 URI(예: 모델 훈련을 위한 명령어)가 주어지면, 온 디바이스 기계 학습 플랫폼은 (예: 기계 학습 엔진과 상호 작용하여 엔진에 의한 모델 훈련을 유발) 이전에 수집한 예제(예 또는 예시)를 기반으로 모델의 훈련을 실행할 수 있다. 예를 들어, 훈련은 예정된 시간 및/또는 장치가 유휴(Idle) 상태 일 때 백그라운드에서 수행될 수 있다.
모델의 재훈련 후, 재훈련 된 모델은 본원의 다른 곳에 기술된 바와 같이 추론을 제공하는데 사용될 수 있다. 일반적으로 이러한 추론은 모델이 사용자 고유의 데이터에 대해 재훈련되었기 때문에 정확도가 높다. 따라서, 온-디바이스 기계 학습 플랫폼은 애플리케이션 또는 다른 클라이언트에 대한 서비스로서 기계 학습 모델의 중앙화된 예시 데이터 수집(컬렉션) 및 해당 개인화를 가능하게 한다.
다른 양태에 따르면, 일부 구현에서, 기계 학습 플랫폼은 기계 학습 모델에 대한 로그 또는 기타 업데이트를 클라우드에 업로드하여 기계 학습 메트릭의 상세한 분석을 수행할 수 있다. 예를 들어, 일부 구현에서, 온 디바이스 플랫폼은 재 훈련된 기계 학습 모델의 파라미터 또는 모델의 재훈련 중에 발생한 기계 학습 모델의 파라미터 변경을 설명하는 업데이트를 결정할 수 있다. 상기 플랫폼은 다른 컴퓨팅 장치에 의해 제공된 다른 업데이트와의 통합을 위해 업데이트를 중앙 서버 컴퓨팅 장치(예를 들어, "클라우드")로 전송할 수 있다. 따라서, 플랫폼은 "연합 학습(federated learning)"으로 알려진 프로세스에 참여할 수 있으며, 여기서 장치(디바이스)는 로컬에 저장된 데이터에 기초하여 모델에 대한 로컬 업데이트를 결정한 다음, 로컬 업데이트를 집계를 위해 클라우드 서비스(예를 들어, 프라이버시 보호 및 통신 효율적인 방식으로)에 전달하여 모델에 대한 글로벌 업데이트를 생성한다.
다른 양태에 따르면, 일부 구현에서, 애플리케이션을 서로로부터 보호하기 위해, 각 애플리케이션은 온-디바이스 플랫폼이 제공하는 특정 기능(예: 모든 기능)에 대한 고유의 엔클레이브(enclave)를 가질 수 있다. 예를 들어, 플랫폼에 액세스하기 위한 인터페이스가 팩토리(factory)를 통해 애플리케이션으로 리턴되기 전에 플랫폼이 애플리케이션을 인증할 수 있다. 그 다음 리턴된 인터페이스는 플랫폼에서 애플리케이션의 엔클레이브의 단독 뷰(sole view)를 나타낼 수 있다. 이 프로세스의 한 구현 예에서 애플리케이션이 플랫폼의 API에 연결되면, 애플리케이션은 애플리케이션의 ID(identity)를 확인하는 서명된 패키지 토큰을 제공할 수 있다. 애플리케이션은 이 인증을 통과하지 않고 API 인터페이스를 얻을 수 없다.
본 개시의 다른 양태에 따르면, 일부 구현들에서, 온 디바이스 기계 학습 플랫폼은 기본(underlying) 기계 학습 엔진에서 완전히 추상화(abstract)될 수 있다. 예를 들어, 기계 학습 엔진은 텐서플로우(TensorFlow) 엔진, 신경망 라이브러리 또는 추론 및/또는 훈련을 위한 기계 학습 모델의 구현을 가능하게 하는 기타 엔진일 수 있다. 이러한 추상화로 인해, 기계 학습 플랫폼은 모델 아티팩트(artifacts)를 클라우드에서 생성된 다음 디바이스로 (예: 동적 모델 다운로드를 통해) 제공되는 블로브(blobs)로 처리할 수 있으며, 여기서는 일치하는 엔진으로 해석된다. 이러한 방식으로, 기계 학습 플랫폼 및 지원되는 애플리케이션은 기계 학습 엔진의 변경에 대해 탄력적일 수 있고 및/또는 사용된 특정 엔진 또는 엔진 유형에 대해 불가지론 적(agnostic)이거나 유연할 수 있다.
다른 양태에 따르면, 온 디바이스 플랫폼을 보완하는 툴킷(toolkit)은 장치에 아티팩트로 제공되기 전에 클라우드에서 모델을 생성하고 시뮬레이션하기 위한 도구 세트(예: Python 도구)를 제공할 수 있다. 일부 구현에서, 툴킷은 여러 버전의 기계 학습 엔진 또는 심지어 다른 엔진 유형(예: 모바일 중심 "TensorFlow Lite"와 신경망 라이브러리 등)에 대해 동일한 소스 아티팩트(예: Python 소스 아티팩트)에서 생성할 수 있다.
일부 구현에서, 온-디바이스 기계 학습 플랫폼은 예를 들어 모바일 애플리케이션과 같은 애플리케이션에 포함되거나 구현될 수 있다. 예를 들어, 안드로이드(Android) 운영 체제와 관련하여, 온 디바이스 기계 학습 플랫폼은 다운로드 및/또는 업데이트할 수 있는 안드로이드 패키지 키트(APK)에 포함될 수 있다. 하나의 특정 예에서, 온 디바이스 기계 학습 플랫폼은 다른 애플리케이션이나 디바이스 자체에 다양한 지원 서비스를 제공하는 더 큰 애플리케이션의 일부로 포함되거나 구현될 수 있다. 예를 들어, 온 디바이스 기계 학습 플랫폼 외에도 더 큰 애플리케이션은 컴퓨팅 장치가 디지털 배포 서비스(예를 들어, "앱 스토어"로부터 애플리케이션 및/또는 업데이트 다운로드) 및/또는 다른 서비스와 상호 작용할 수 있게 하는 서비스를 제공할 수 있다. 다른 예에서, 온-디바이스 기계 학습 플랫폼은 독립형 애플리케이션이 아니라 디바이스의 운영 체제의 일부로서 포함되거나 구현될 수 있다.
본 개시의 시스템 및 방법은 다수의 기술적 효과 및 장점을 제공한다. 하나의 기술적 효과 및 장점으로서, 온-디바이스 기계 학습 플랫폼은 로컬에 저장된 디바이스-특정 훈련 예에 기초하여 기계 학습(학습된) 모델의 개인화를 가능하게 하여, 더 높은 정확도 추론으로 이어진다. 유사하게, 본원의 다른 곳에서 설명된 것처럼, 온-디바이스 플랫폼은 "연합 학습"에 디바이스의 참여를 가능하게 할 수 있으며, 로컬 업데이트가 집계되어 글로벌 업데이트가 생성되어 모든 개인의 글로벌 모델 정확도가 향상된다.
다른 기술적 효과 및 장점으로서, 온-디바이스 기계 학습 플랫폼은 컨텍스트 신호를 훈련 예 및/또는 추론 입력에 안전하게 포함시킬 수 있다. 즉, 프라이버시를 유지하고 사용자가 정의한 권한을 준수하는 방식으로 컨텍스트 피처는 훈련 예 또는 추론 입력에 추가될 수 있다. 컨텍스트 정보를 포함함으로써 기계 학습 모델이 제공하는 추론의 정확성을 향상시킬 수 있다.
다른 기술적 효과와 장점으로, 온-디바이스 기계 학습 플랫폼은 애플리케이션이 기계 학습 모델을 관리(예: 훈련 및/또는 실행)하거나 기계 학습 엔진과 상호 작용할 필요가 없도록 중앙화된(중앙 집중식) 서비스를 제공할 수 있다. 따라서, 주어진 애플리케이션은 기계 학습 모델(들)을 저장, 관리, 훈련 및/또는 구현하는 데 필요하지 않지만 대신 단순히 온-디바이스 기계 학습 플랫폼과 통신하여 모델로부터 추론을 요청 및 수신할 수 있다. 이를 통해 애플리케이션의 데이터 크기를 줄일 수 있다. 또한, 애플리케이션 개발자가 각기 다른 기계 학습 엔진의 복잡성을 배우지 않아도 되고 대신 플랫폼 API 사용에 의존하기 때문에 애플리케이션 또는 기타 클라이언트의 개발 및 배포를 단순화할 수 있다.
이전의 효과 및 장점과 마찬가지로, 온-디바이스 기계 학습 플랫폼을 사용하면 모든 애플리케이션이 아닌 단일 중앙화된 서비스를 쉽게 업데이트할 수 있다. 예를 들어, 새로운 버전 또는 유형의 기계 학습 엔진이 시작되면, 애플리케이션이나 다른 클라이언트는 엔진과 상호 작용하지 않고 대신 플랫폼을 대신하여 사용하기 때문에 일반적으로 온-디바이스 플랫폼만 새로운 엔진과 상호 작용하도록 업데이트해야 한다. 따라서 엔진 기술이 발전함에 따라 온-디바이스 플랫폼을 사용하여 최신 상태를 유지할 수 있으므로 애플리케이션이 최신 버전의 기계 학습 엔진과 지속적으로 호환되는지 확인할 필요가 없다.
또 다른 예시적인 기술적 효과 및 장점으로서, 온-디바이스 기계 학습 플랫폼은 통신 네트워크 효율 및 사용(usage)을 향상시킬 수 있다. 즉, 온-디바이스가 아닌 서버에서 기계 학습을 수행하는 과거의 패러다임에서, 서버에 의해 통신 네트워크(예를 들어, 인터넷)를 통해 장치로 다양한 유형의 정보(예를 들어, 입력 데이터, 훈련 예, 추론, 모델 파라미터 등)가 전송되어야 했다. 그러나, 본 개시는 온-디바이스 예측, 훈련, 예시 수집 및/또는 다른 기계 학습 태스크 또는 기능을 가능하게 하기 때문에, 그러한 정보는 통신 네트워크를 통해 (적어도 모든 경우에) 전송될 필요는 없다. 따라서 통신 네트워크 트래픽, 효율성 및 사용량이 향상된다. 또한, 입력 데이터, 훈련 예 등이 서버와 송수신되지 않기 때문에 데이터의 보안 성이 향상될 수 있다.
이제 도면을 참조하여, 본 개시의 예시적인 실시 예가 더 상세하게 설명될 것이다.
장치(디바이스) 및 시스템 예
도 1은 본 개시의 예시적인 실시 예에 따른 온-디바이스 기계 학습 플랫폼(122)을 포함하는 예시적인 컴퓨팅 장치(102)의 블록도를 도시한다.
컴퓨팅 장치(102)는 예를 들어 데스크톱, 랩톱, 태블릿 컴퓨팅 장치, 스마트폰, 착용 가능한 컴퓨팅 장치, 게임 콘솔, 내장 컴퓨팅 장치, 또는 다른 형태의 컴퓨팅 장치를 포함하는 임의의 유형의 컴퓨팅 장치일 수 있다. 따라서, 일부 구현들에서, 컴퓨팅 장치(102)는 모바일 컴퓨팅 장치 및/또는 사용자 컴퓨팅 장치일 수 있다.
컴퓨팅 장치(102)는 하나 이상의 프로세서(112) 및 메모리(114)를 포함한다. 하나 이상의 프로세서(112)는 임의의 적합한 처리 장치(예를 들어, 프로세서 코어, 마이크로 프로세서, ASIC, FPGA, 컨트롤러, 마이크로 컨트롤러 등)일 수 있고, 동작 가능하게 연결된 하나의 프로세서 또는 복수의 프로세서일 수 있다. 메모리(114)는 RAM, ROM, EEPROM, EPROM, 플래시 메모리 장치, 자기 디스크 등과 같은 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체를 포함할 수 있고. 이들의 조합을 포함할 수 있다. 메모리(114)는 컴퓨팅 장치(102)가 동작을 수행하도록 프로세서(112)에 의해 실행되는 데이터 및 명령(멍령어)을 저장할 수 있다. 컴퓨팅 장치(102)는 또한 하나 이상의 네트워크(예를 들어, 인터넷)를 통한 통신을 가능하게 하는 네트워크 인터페이스(116)를 포함할 수 있다.
온-디바이스 기계 학습 플랫폼(122)은 온-디바이스 예측, 훈련, 예시 수집, 및/또는 "기계 학습 기능"으로 통칭될 수 있는 다른 기계 학습 태스크 또는 기능을 가능하게 할 수 있다.
온-디바이스 기계 학습 플랫폼(122)은 컴퓨팅 장치(102)(예를 들어, 스마트폰 또는 태블릿) 상에 로컬로 저장된 하나 이상의 컴퓨터 프로그램의 형태일 수 있으며, 이는 장치(102)에 의해 실행될 때 하나 이상의 로컬에 저장된 애플리케이션(102a-c) 또는 다른 로컬 클라이언트를 대신하여 온-디바이스 기계 학습 기능의 성능을 가능하게 하는 기계 학습 관리 오파레이션을 수행하도록 구성된다. 온-디바이스 기계 학습 기능 중 적어도 일부는 컴퓨팅 장치(102) 상에 로컬로 구현된 하나 이상의 기계 학습 엔진(128)을 사용하여 수행될 수 있다. 하나 이상의 로컬에 저장된 애플리케이션(client APP)(120a-c) 또는 루틴("클라이언트"로 지칭될 수 있음)을 대신하여 온-디바이스 기계 학습 기능(functions)의 성능은 하나 이상의 API(application programming interface)를 통해 온-디바이스 기계 학습 플랫폼(122)과 상호 작용할 수 있는 클라이언트에 중앙화된(중앙집중식) 서비스로 제공될 수 있다.
또한 일부 구현에서, 온-디바이스 기계 학습 플랫폼(122)은 예측/추론을 생성하기 위해 사용된 수집된 훈련 예 및/또는 클라이언트 제공 입력 데이터에 컨텍스트 피처를 안전하게 주입하는 컨텍스트 제공자를 포함할 수 있다. 따라서, 온-디바이스 기계 학습 플랫폼(122)은 애플리케이션(120a-c) 또는 다른 클라이언트에 대한 서비스로서 기계 학습 모델(132a-c)의 중앙화된 훈련 예 수집, 모델 훈련 및 사용을 가능하게 할 수 있다.
보다 구체적으로, 컴퓨팅 장치(102)는 하나 이상의 애플리케이션(120a-c) (예를 들어, 모바일 애플리케이션)을 저장하거나 포함할 수 있다. 컴퓨팅 장치(102)는 또한 온-디바이스 기계 학습 플랫폼(122) 및 하나 이상의 기계 학습 모델(132a-c)을 포함하고 구현할 수 있다. 예를 들어, 기계 학습 모델(132a-c)은 플랫폼(122)에 의해 관리되는 중앙화된 모델 저장소(130)에 장치(102)에 의해 저장될 수 있다.
본 개시의 일 양태에 따르면, 애플리케이션(120a-c)은 API("예측 API"로 지칭될 수 있음)를 통해 온-디바이스 기계 학습 플랫폼(122)과 통신하여 입력 데이터를 제공하고, 하나 이상의 기계 학습 모델(132a-c)로부터의 입력 데이터에 기초한 예측을 얻을 수 있다. 예를 들어 일부 구현에서, 예측 계획(예: 추론/예측을 얻기 위해 모델을 실행하기 위한 명령(명령어들)) 및 모델 파라미터에 대한 URI(Uniform Resource Identifier)가 제공된 경우, 온-디바이스 기계 학습 플랫폼(122)은 모델을 실행함으로써(예를 들어, 기계 학습 엔진(128)과 상호 작용함으로써 엔진에 의한 모델의 구현을 야기함) URI 콘텐츠(예를 들어, 예측 계획 및 파라미터)를 다운로드하고 하나 이상의 추론/예측을 얻을 수 있다. 또한, 플랫폼(122)은 콘텐츠를 (예를 들어, 저장소(repository)(130) 내에) 캐시하여 후속 예측 요청에 사용될 수 있다.
따라서, 온-디바이스 기계 학습 모델(132a-c)은 클라이언트/서비스 관계를 통해 온-디바이스 기계 학습 플랫폼(122)과 통신함으로써 애플리케이션(120a-c)에 의해 액세스될 수 있다. 예를 들어, 각각의 기계 학습 모델(132a-c)은 각각의 애플리케이션(120a-c)에 제공되고 플랫폼(122)에 의해 관리될 수 있다. 다른 구현들에서, 둘 이상의 애플리케이션들(120a-c)은 단일 기계 학습 모델(132a-c)을 공유할 수 있거나 단일 애플리케이션(120a-c)은 둘 이상의 모델들(132a-c)을 가질 수 있다.
일부 구현들에서, 기계 학습 플랫폼(122)은 애플리케이션들(120a-c)에 의해 참조될 수 있는 독립형 다중-테넌트(multi-tenant) 서비스일 수 있다. 이와 같이, 주어진 애플리케이션(120a-c)은 기계 학습 모델(들)(132a-c)을 저장, 관리, 훈련 및/또는 구현할 필요가 없지만, 대신에 온-디바이스 기계 학습 플랫폼(122)과 통신하여 모델(들)(132a-c)로부터 추론을 요청 및 수신한다.
본 개시의 다른 양태에 따르면, 컴퓨팅 장치(102)는 애플리케이션(120a-c)으로부터 수신된 훈련 예를 저장하는 중앙화된 예시 데이터베이스(124)를 더 포함할 수 있다. 특히, 온-디바이스 기계 학습 플랫폼(122)은 API("컬렉션 API"로 지칭될 수 있음)를 통해 애플리케이션(120a-c)으로부터 훈련 예를 수신할 수 있고, 중앙화된 예시 데이터베이스(124)에서 예시의 저장을 관리할 수 있다. 예를 들어, 플랫폼(122)의 클라이언트 또는 테넌트인 각각의 애플리케이션(120a-c)은 중앙화된 예시 데이터베이스(124) 내에 저장된 자신의 예시들의 컬렉션(수집)(들)을 가질 수 있고, 컬렉션(들)은 온라인 방식으로 보충 및/또는 관리될 수 있다.
일부 구현에서, 온-디바이스 기계 학습 플랫폼(122)은 훈련 예를 제공하는 애플리케이션(120a-c)과 관련된 하나 이상의 옵션 파라미터에 따라 애플리케이션(120a-c)으로부터 수신된 (예를 들어, 해당 컬렉션 내에서) 각각의 훈련 예를 저장하게 할 수 있다. 일례로서, 옵션 파라미터는 훈련 예가 저장되는 (예를 들어, 그 후 삭제되는) 기간을 정의하는 TTL(time-to-live) 파라미터를 포함할 수 있다. 일부 구현들에서, 옵션 파라미터들은 컬렉션 API를 통해 플랫폼(122)에 제공되는 명령어들을 통해 사전 정의 및/또는 조정될 수 있다.
본 개시의 다른 양태에 따르면, 일부 구현들에서, 온-디바이스 기계 학습 플랫폼(122)은 컴퓨팅 장치(102)와 관련된 컨텍스트를 설명하는 컨텍스트 피처를 훈련 예에 안전하게 주입할 수 있다. 예를 들어, 애플리케이션(120a-c)으로부터 훈련 예를 수신하면, 온-디바이스 플랫폼(122)의 컨텍스트 제공자 컴포넌트는 하나 이상의 컨텍스트 피터를 결정할 수 있고, 이러한 컨텍스트 피처를 훈련 예와 함께 중앙화된 예시 데이터베이스(124)에 저장할 수 있다. 예를 들어, 새로운 훈련 예에서 제공되는 컨텍스트 피처와 데이터는 단일 데이터베이스 에트리로 저장될 수 있다. 특정 애플리케이션(120a-c)으로부터 수신된 훈련 예가 결정되고 주입되거나 달리 연관 및/또는 저장된 특정 컨텍스트 피처는 그러한 특정 애플리케이션(120a-c)에 대한 옵션 파라미터에 의해 특정될 수 있다. 위에서 설명한 것처럼 이러한 옵션 피처는 컬렉션 API를 통해 조정하거나 미리 정의될 수 있다. 따라서, 애플리케이션(120a-c)은 컨텍스트 피처 또는 컨텍스트 유형이 훈련 예에 주입되는 것을 제어(예를 들어, 옵션 파라미터를 정의함으로써)할 수 있다.
일부 구현들에서, 컨텍스트 피처들은 서비스 측에 주입되어, 컨텍스트 피처들은 애플리케이션들(120a-c)에 직접 이용 가능할 필요가 없다. 특히 일부 구현에서, 중앙화된 예시 데이터베이스(124)는 하나 이상의 애플리케이션(120a-c)에 의해 직접 액세스 가능하지 않으므로, 특정 훈련 예와 함께 저장된 컨텍스트 정보는 훈련 예를 제공한 애플리케이션(120a-c)에서도 액세스할 수 없다.
일부 구현들에서, 컨텍스트 피처들은 다수의 상이한 컨텍스트 유형들에 따라 그룹화되거나 달리 분류될 수 있다. 일반적으로 각 컨텍스트 유형은 잘 알려진 이름과 잘 알려진 유형의 컨텍스트 피처 세트를 특정하거나 포함할 수 있다. 컨텍스트 유형의 한 예는 오디오 상태, 네트워크 상태, 전원 연결 등의 컨텍스트 피처 예를 포함하는 장치 정보이다.
일부 구현들에서, 컨텍스트 제공자는 주입 시점(time/point)에서 장치(디바이스)(예를 들어, 디바이스의 컨텍스트 관리자(126))로부터 주어진 컨텍스트 피처에 대해 주입된 값을 요청한다. 대안적으로 또는 추가적으로, 컨텍스트 제공자는 컨텍스트 관리자(126)로부터 하나 이상의 컨텍스트 업데이트에 대한 리스너로서 등록할 수 있고, 하나 이상의 컨텍스트 업데이트에 기초하여 컨텍스트 피쳐에 대한 현재 값의 컨텍스트 피쳐 캐시를 유지할 수 있다. 그 다음 컨텍스트 피처가 주입되면, 컨텍스트 제공자는 단순히 컨텍스트 피처 캐시에 액세스하여 특정 컨텍스트 피처에 대해 캐시에서 유지되는 현재 값을 주입할 수 있다.
추가로 또는 대안으로, 저장 시간에 훈련 예에 컨텍스트 피처를 주입하기 위해, 컨텍스트 제공자는 또한 추론시 컨텍스트 피처의 주입을 수행할 수 있다. 특히 위에서 설명한 예시 컬렉션을 훈련시키는 과정과 유사하게, 특정 애플리케이션(120a-c) 또는 다른 클라이언트가 (예를 들어, 예측 API를 통해) 일부 클라이언가트 제공한 입력 데이터에 기초하여 추론이 생성되도록 요청하는 경우, 컨텍스트 제공자는 입력 데이터와 함께 해당 기계 학습된 모델(132a-c)에 입력하기 위한 보충 컨텍스트 피처를 주입하거나 제공할 수 있다. 따라서, 클라이언트가 제공한 입력 데이터에 더하여 컨텍스트 정보에 적어도 부분적으로 기초하여 추론이 이루어질 수 있으며, 추론의 정확성을 향상시키는 데 도움이 될 수 있다.
다른 양태에 따르면, 특정 애플리케이션들(120a-c) 또는 다른 클라이언트들은 (예를 들어, 디바이스 사용자에 의해 정의되거나 제어되는 바와 같이) 특정 컨텍스트 피처들 또는 컨텍스트 유형들에만 액세스하는 권한을 가질 수 있기 때문에, 컨텍스트 제공자는 클라이언트 권한 제어를 수행할 수 있다. 특히 일부 구현에서, 온-디바이스 기계 학습 플랫폼(122) 또는 다른 디바이스 컴포넌트는 어느 클라이언트가 어떤 컨텍스트 유형 또는 컨텍스트 피처에 액세스할 수 있는 권한을 갖는지의 매핑을 유지할 수 있다. 컨텍스트 피처를 주입해야 하는 경우 (예: 저장을 위한 훈련 예에 또는 추론시 클라이언트가 제공한 입력 데이터를 보완하기 위해), 컨텍스트 제공자는 주입될 컨텍스트 피처 또는 컨텍스트 유형에 대해 해당 애플리케이션(120a-c) 또는 다른 클라이언트의 허가 상태를 확인할 수 있다. 예를 들어, 특정 애플리케이션(120a-c) 및 컨텍스트 유형에 대한 권한 상태는 이러한 애플리케이션(120a-c)이 그러한 컨텍스트 유형에 액세스하기 위한 권한을 갖는지 여부를 기술할 수 있다. 컨텍스트 제공자는 애플리케이션(120a-c)이 액세스할 수 있는 컨텍스트 유형에 포함된 컨텍스트 피처만을 주입할 것이며, 이에 의해, 애플리케이션(120a-c)은 액세스 권한이 없는 컨텍스트 피처/유형에 (2차적으로도) 액세스하는 것을 방지한다.
위에서 설명한 TTL(time-to-live) 옵션 파라미터와 유사하지만, 일부 구현에서, 각각의 컨텍스트 피처는 이와 관련되거나 할당된 만료 기간을 가질 수 있다. 이 만료 기간 정보는 컨텍스트 피처(들)가 포함된 각 훈련 예와 연관될 수 있다. 일부 구현에서, 특정 훈련 예에서 제공되는 특정 컨텍스트 피처에 대한 만료 기간이 끝날 때, 그러한 컨텍스트 피처에 대한 값은 그러한 훈련 예에서 삭제되거나 제거될 수 있다. 또는 전체 훈련 예는 삭제되거나 제거될 수 있다.
또한 일부 구현에서, 특정 컨텍스트 피처 또는 컨텍스트 유형에 대한 특정 애플리케이션(120a-c) 또는 다른 클라이언트에 대한 허가 상태에 대한 변경에 응답하여, 온-디바이스 플랫폼(122)은 중앙화된 예시 데이터베이스(124)로부터 특정 애플리케이션(120a-c)과 관련된 훈련 예와 관련된 이러한 컨텍스트 피처(들) 또는 유형(들)에 대한 임의의 값 또는 엔트리를 삭제할 수 있다. 또한, 일부 구현들에서, 해당 모델(들)(132a-c)은 컨텍스트 피처 값(들)의 삭제 후에 나머지 데이터에 대해 재훈련될 수 있다.
본 발명의 또 다른 양태에 따르면, 애플리케이션들(120a-c)은 API("훈련 API"로 지칭될 수 있음)를 통해 온-디바이스 기계 학습 플랫폼(122)과 통신하여 중앙화된 예시 데이터베이스(124)에 저장된 훈련 예에 기초하여 기계 학습된 모델(132a-c)의 재훈련 또는 업데이트를 야기할 수 있다. 예를 들어, 일부 구현에서, 훈련 계획에 대한 URI(예: 모델 훈련 명령어)가 주어지면, 온-디바이스 기계 학습 플랫폼(122)은 (예를 들어, 기계 학습 엔진(128)과 상호 작용함으로써 엔진(128)에 의해 모델(132a-c)의 학습을 야기하여) 이전에 수집된 예에 기초하여 모델(132a-c)의 훈련을 실행할 수 있다. 예를 들어, 훈련은 예정된 시간 및/또는 장치가 유휴 상태 일 때 백그라운드에서 수행될 수 있다.
모델(132a-c)의 재훈련 후, 재훈련된 모델(132a-c)은 본원의 다른 곳에 기술된 바와 같이 추론을 제공하는데 사용될 수 있다. 일반적으로, 이러한 추론은 모델(132a-c)이 사용자에 특정한 데이터에 대해 재훈련되었기 때문에 더 높은 정확도를 가질 것이다. 따라서, 온-디바이스 기계 학습 플랫폼(122)은 애플리케이션(120a-c) 또는 다른 클라이언트에 대한 서비스로서 기계 학습(학습된) 모델(132a-c)의 개인화 및 중앙화된 예시 데이터 컬렉션(수집)을 가능하게 할 수 있다.
다른 양태에 따르면, 일부 구현에서, 기계 학습 플랫폼(122)은 기계 학습 메트릭의 상세한 분석을 위해 기계 학습 모델(132a-c)에 관한 로그 또는 다른 업데이트를 클라우드에 업로드할 수 있다. 예를 들어, 일부 구현에서, 온-디바이스 플랫폼(122)은 재훈련된 기계-학습된 모델(132a-c)의 파라미터 또는 모델(132a)의 재훈련 동안 발생한 기계 학습 모델(132a-c)의 파라미터에 대한 변경(예:“그래디언트(gradient)”)을 설명하는 업데이트를 결정할 수 있다. 플랫폼(122)은 다른 컴퓨팅 장치에 의해 제공되는 다른 업데이트와의 통합을 위해 업데이트를 중앙 서버 컴퓨팅 장치(예를 들어, "클라우드")로 전송할 수 있다. 따라서, 플랫폼(122)은 "연합 학습"으로 알려진 프로세스에 참여할 수 있으며, 여기서 장치(디바이스)는 로컬에 저장된 데이터에 기초하여 모델(132a-c)에 대한 로컬 업데이트를 결정한 다음, 로컬 업데이트를 (예: 개인 정보 보호 및 통신 효율적인 방식으로) 클라우드 서비스로 전달하여 모델(132a-c)에 대한 글로벌 업데이트를 생성한다.
다른 양태에 따르면, 일부 구현에서, 애플리케이션들 (120a-c)을 서로로부터 보호하기 위해, 각각의 애플리케이션(120a-c)은 온-디바이스 플랫폼(122)에 의해 제공되는 특정 기능들(예를 들어, 모든 기능성)에 대한 자체 엔클레이브를 가질 수 있다. 예를 들어, 플랫폼(122)은 플랫폼(122)에 액세스하기 위한 인터페이스가 팩토리를 통해 애플리케이션(120a-c)으로 리턴되기 전에 애플리케이션(120a-c)을 인증할 수 있다. 리턴된 인터페이스는 플랫폼(122)에서의 애플리케이션의 엔클레이브의 단독 뷰(sole view)를 나타낼 수 있다. 이 프로세스의 구현 예 중 하나에서, 애플리케이션(120a-c)이 플랫폼(122)의 API에 연결될 때, 애플리케이션(120a-c)은 애플리케이션(120a-c)의 ID(identity)를 검증하는 서명된 패키지 토큰을 제공할 수 있다. 애플리케이션(120a-c)은 이 인증을 통과하지 않고 API 인터페이스를 얻을 수 없다.
일부 구현들에서, 플랫폼(122) 내의 각각의 애플리케이션의 엔클레이브는 계정 독립적(account independent)이다. 따라서, 컴퓨팅 장치(102)상의 동일한 사용자 프로파일과 연관된 복수의 계정은 동일한 훈련 데이터 및 상태(state)를 공유할 수 있다. 이는 대부분의 경우 여러 계정이 동일한 사용자를 위한 것이며 컴퓨팅 장치의 다른 사용자가 다른 사용자 프로필을 대신 사용한다는 것을 반영한다.
일부 구현에서, 특정 기능(예를 들어, 컨텍스트에 액세스)에 대해 권한이 필요하다. 따라서 일부 구현에서, 컨텍스트가 플랫폼(122) 내에 머물러 있기 때문에 컨텍스트에 직접 접촉하지 않더라도, 플랫폼(122)에서 특정 컨텍스트를 사용하고자 하는 애플리케이션(120a-c)는 특정 컨텍스트에 액세스할 수 있는 권한을 갖는다. 일부 구현들에서, 모든 관련 권한들이 클라이언트에서 검증된 후 플랫폼 호출(platform call)로 전달될 수 있고, 플랫폼(122)이 논리적으로 이 권한 세트 (들)로 동작하게 한다. 일부 구현들에서, 플랫폼(122)은 사용자에게 모든 권한에 대한 액세스 권한을 갖는 플랫폼(122)에 대한 동의를 요청할 수 있다. 경우에 따라 컨텍스트는 특정 사용자가 로그인하도록 요청할 수도 있다. 이러한 사용자는 해당 사례에 대해 애플리케이션에서 특정하거나 컨텍스트 주입 옵션에서 옵션 필드(선택적 필드)로 특정할 수 있다. 그러나, 일부 구현들에서, 사용자는 플랫폼(122)에 의해 자동으로 검출되지 않을 수 있다. 일부 구현에서, API 자체는 그러한 특정 사용자 계정으로 인증을 요구하지 않는다.
본 개시의 다른 양태에 따르면, 일부 구현들에서, 온-디바이스 기계 학습 플랫폼(122)은 기본 기계 학습 엔진(128)으로부터 완전히 추상화될 수 있다. 예를 들어, 기계 학습 엔진(128)은 추론 및/또는 훈련을 위해 기계 학습 모델(132a-c)의 구현을 가능하게 하는 텐서플로우 엔진, 신경망 라이브러리, 또는 다른 엔진일 수 있다. 이러한 추상화로 인해, 기계 학습 플랫폼(122)은 모델 아티팩트(132a-c)를 클라우드에서 생성된 다음 장치(예를 들어, 동적 모델 다운로드를 통해)로 전달된 블로브(blob)로 취급할 수 있으며, 이는 매칭 엔진(128)에 의해 해석된다. 이러한 방식으로, 기계 학습 플랫폼(122) 및 지원되는 애플리케이션(120a-c)은 기계 학습 엔진(128)에 대한 변경에 대해 탄력적일 수 있고 및/또는 특정 엔진(128) 또는 사용된 엔진 유형에 대해 불가지론적이거나 유연할 수 있다.
다른 양태에 따르면, 온-디바이스 플랫폼(122)에 상보적인(complementary) 툴킷은 장치에 아티팩트로 제공되기 전에 클라우드에서 모델을 작성하고 시뮬레이션하기 위한 도구 세트(예: Python 도구)를 제공할 수 있다. 일부 구현에서, 툴킷은 상이한 버전의 기계 학습 엔진 또는 심지어 상이한 엔진 유형(예를 들어, 모바일 중심 "TensorFlow Lite" 대 신경망 라이브러리 등)에 대해 동일한 소스 아티팩트(예: Python 소스 아티팩트)로부터 생성할 수 있다.
일부 구현에서, 온-디바이스 기계 학습 플랫폼(122)은 예를 들어 모바일 애플리케이션과 같은 애플리케이션으로 포함되거나 구현될 수 있다. 예를 들어, 안드로이드 운영 체제와 관련하여, 온-디바이스 기계 학습 플랫폼(122)은 다운로드 및/또는 업데이트될 수 있는 안드로이드 패키지 키트(APK)에 포함될 수 있다. 하나의 특정 예에서, 온-디바이스 기계 학습 플랫폼(122)은 다른 애플리케이션(120a-c) 또는 디바이스(102) 자체에 다수의 상이한 지원 서비스를 제공하는 더 큰 애플리케이션의 일부로서 포함되거나 구현될 수 있다. 예를 들어, 온-디바이스 기계 학습 플랫폼(122) 외에 더 큰 애플리케이션은 컴퓨팅 장치(102)가 디지털 배포 서비스(예를 들어, "앱 스토어"로부터 애플리케이션 및/또는 업데이트 다운로드) 및/또는 다른 서비스와 상호 작용할 수 있게 하는 서비스를 제공할 수 있다. 다른 예에서, 온-디바이스 기계 학습 플랫폼(122)은 독립형 애플리케이션이 아니라 디바이스(102)의 운영 체제의 일부로서 포함되거나 구현될 수 있다.
도 2는 본 개시의 예시적인 실시 예들에 따른 예시적인 기계 학습 모델 배치의 그래픽 다이어그램을 도시한다. 특히, 애플리케이션 개발자(202)는 툴킷과 상호 작용하여 모델(204)을 생성 및 테스트할 수 있다. 모델은 추론 계획(206) 및 훈련 계획(208)에 의해 적어도 부분적으로 분할되거나 표현될 수 있다.
"계획"에는 그래프(예: 텐서플로우 그래프) 및 그래프 실행 방법에 대한 명령어가 포함된 프로토콜 버퍼(AKA "protobuf")가 포함될 수 있다. 일례로서, 계획은 그래프 자체를 포함하는 그래프(예를 들어, 텐서플로우 그래프)상에서 수행될 일련의 오퍼레이션에 대한 선언적 설명일 수 있다. 계획은 학습 데이터를 위해 컬렉션을 조회하는 방법, 그래프에 피드(feed)하는 방법 및/또는 출력을 생성 및 전달하는 방법을 설명할 수 있다.
도 2는 두 가지 대 (그러나 선택적으로 보완적인) 배포 방식(scheme)을 보여준다. 첫 번째 방식에서, 추론 계획(206) 및 훈련 계획(208)은 모두 클라우드 서버(210)에 배치된다. 클라우드 서버(210)는 추론 계획(206) 및 훈련 계획(208)을 장치(디바이스)(214)에 제공한다.
장치(214)는 추론을 생성하기 위해 추론 계획(206)을 구현할 수 있다. 장치(214)는 대안적으로 또는 추가적으로 훈련 계획(208)을 구현하여 로컬로 저장된 데이터에 기초하여 온-디바이스 훈련을 수행할 수 있으며, 이는 "개인화" 또는 "개인화된 학습(personalized learing)"으로도 지칭될 수 있다.
제2 배치 방식에서, 추론 계획(206)은 전술한 바와 같이 클라우드 서버(210)에 배치된다. 클라우드 서버는 추론 계획(206)을 장치(216)에 제공한다. 장치(216)는 추론을 생성하기 위해 추론 계획(206)을 구현할 수 있다.
그러나, 훈련 계획(208)을 클라우드 서버(210)에 배치하는 것에 추가하여 또는 대안적으로, 제2 방식에서 훈련 계획(208)은 연합(federated) 서버(212)에 배치된다. 연합 서버(212)는 훈련 계획(208)을 장치(216)에 제공한다. 장치(디바이스)(216)는 훈련 계획(208)을 구현하여 로컬로 저장된 데이터에 기초하여 온-디바이스 훈련을 수행할 수 있다. 이러한 온-디바이스 훈련 후, 장치(216)는 연합 서버(212)에 업데이트를 제공할 수 있다. 예를 들어, 업데이트는 재훈련된 모델의 하나 이상의 파라미터 또는 모델의 재훈련 동안 발생한 모델의 파라미터에 대한 하나 이상의 변화를 기술할 수 있다.
연합 서버(212)는 다수의 장치로부터 이러한 많은 업데이트를 수신할 수 있고, 업데이트된 글로벌 모델을 생성하기 위해 업데이트를 집계할 수 있다. 이어서 업데이트된 글로벌 모델은 장치(216)로 재전송될 수 있다.
또한, 일부 구현에서, 장치(216)는 기계 학습 메트릭의 상세한 분석을 얻기 위해 (예를 들어 툴킷과 함께) 개발자(202)에 의해 사용될 수 있는 기계-학습된 모델에 관한 로그(218) 또는 다른 업데이트를 더 제공할 수 있다. 일부 구현들에서, 로그들(218)에 기초하여 계산될 수 있는 예시적인 메트릭들은 체크인 요청 결과, 트래픽(예를 들어, 볼륨), 손실 및 정확성 모델 메트릭, 위상 지속 기간, 또는 다른 메트릭의 플롯, 그래프 또는 시각화를 포함한다.
도 3은 본 개시의 예시적인 실시 예에 따른 예시적인 개인화 및 연합 학습 데이터 흐름의 그래픽 다이어그램을 도시한다.
도 3은 일부 경우에 상보적인 방식으로 사용될 수 있는 3개의 상이한 학습 데이터 흐름을 도시한다. 도 3의 하단에 주로 점선으로 도시된 제1 데이터 흐름에서, 훈련 데이터는 사용자 장치에서 생성된다. 훈련 데이터는 중앙 기관(central authority)에 업로드된 후 업로드된 데이터를 기반으로 기계-학습된 모델을 훈련 또는 재훈련시킨다. 그 다음 모델은 (예: 온-디바이스 추론) 사용을 위해 사용자 장치로 전송된다.
개인화(personalization) 또는 개인화된 학습으로 지칭될 수 있는 제2 데이터 흐름에서, 사용자 장치상에서 생성된 훈련 데이터는 장치상에서 모델을 훈련시키거나 재훈련시키는데 사용된다. 재훈련된 모델은 그런 장치에서 사용된다. 이 개인화된 학습을 통해 장치별 모델을 중앙집중식 데이터 수집없이 훈련하고 평가할 수 있으므로 데이터 보안 및 사용자 개인 정보가 향상된다.
연합 학습으로 지칭될 수 있는 제3 데이터 흐름에서, 사용자 장치상에서 생성된 훈련 데이터는 장치상에서 모델을 훈련시키거나 재훈련하는데 사용된다. 따라서 실제 사용자별 훈련 데이터는 클라우드에 업로드되지 않으므로 데이터 보안 및 사용자 개인 정보가 향상된다.
이러한 장치 학습 후에, 사용자 장치는 중앙 기관에 업데이트를 제공할 수 있다. 예를 들어, 업데이트는 재훈련된 모델의 하나 이상의 파라미터 또는 모델의 재훈련 동안 발생한 모델의 파라미터에 대한 하나 이상의 변화를 기술할 수 있다.
중앙 기관은 여러 장치로부터 이러한 많은 업데이트를 수신하고 그 업데이트를 집계하여 업데이트된 글로벌 모델을 생성할 수 있다. 그 다음 업데이트된 글로벌 모델을 사용자 장치로 재전송할 수 있다. 이 방식을 사용하면 중앙집중식 데이터 수집없이 크로스-디바이스(cross-device) 모델을 훈련하고 평가할 수 있다.
도 4는 본 개시의 예시적인 실시 예에 따른 예시적인 온-디바이스 기계 학습 플랫폼의 블록도를 도시한다. 도 4를 참조하여 예시되고 설명된 플랫폼은 하나의 예시적인 구현으로서 제공된다. 본 명세서에 기술된 온-디바이스 기계 학습 플랫폼의 많은 다른 구현이 가능하다. 예시적인 온-디바이스 기계 학습 플랫폼은 메인 프로세스(402) 및 백그라운드 프로세스(404)를 포함하거나 구현할 수있다.
메인 프로세스(402)는 모든 API 요청을 처리할 수 있다. 메인 프로세스(402)는 수집(컬렉션) API(410)를 통해 훈련 예 수집 서비스를 제공하는 수집 API 서비스(420); 예측 API(412)를 통해 추론 생성 서비스를 제공하는 예측 API 서비스(422); 및 훈련 API(414)를 통해 모델 훈련 서비스를 제공하는 훈련 API 서비스 (424)를 제공할 수 있다.
일부 구현들에서, 수집(컬렉션) API 서비스(420)는 자동 보존(retention) 정책들을 갖는 훈련 예들을 유지(persist)할 수 있다. 일부 구현들에서, 훈련 API 서비스(424)는 예시적인 컬렉션으로부터 데이터를 끌어서(drawing) 보이지 않는 프로세스로서 예정된 시간 및 조건에서 훈련 세션들을 자동으로 실행할 수 있다. 일부 구현들에서, 예측 API 서비스(42)는 클라이언트들이 주어진 모델에 기초하여 추론을 실행할 수 있게 할 수 있으며, 이는 트레이너(trainer) 또는 외부 소스들로부터 발생할 수 있다.
일부 구현들에서, 백그라운드 프로세스(404)는 훈련 및 다른 주기적 유지 보수 태스크만을 호스팅할 수 있다. 거래가 가능하며 분해(teared down)되도록 설계되었다. 일부 구현들에서, 백그라운드 프로세스(404)는 단독으로 메인 프로세스(402)로부터 그 상태를 획득한다.
아래에서 더 설명되는 바와 같이, 컨텍스트 제공자(430)는 수집 API 서비스(420) 및 예측 API 서비스(422) 모두에 대한 컨텍스트 정보를 예에 주입한다. 저장 컴포넌트(저장소)(440)는 부기(bookkeeping) 상태뿐만 아니라 (예를 들어, 중앙화된 예시 데이터베이스(124)에서의) 예의 저장을 가능하게 하고 수행할 수 있다. 이는 "LevelDB"를 기반으로 할 수 있다.
예측 계획 유형에 따라, 예측 API 서비스(422)에 의해 다수의 예측 엔진(predictionEngine_1, predictionEngine_2, predictionEngine_3)(432)이 액세스될 수 있다. 모델 파라미터뿐만 아니라 예측 및 훈련 계획은 아티팩트 관리자(434)에 의해 제공되거나 달리 관리된다. 아티팩트 관리자(434)는 클라우드 서버(210), 애플리케이션 자산 및/또는 파일로부터 아티팩트 검색을 지원할 수 있다. 예를 들어, 예측자 또는 다른 트레이너가 사용하는 훈련 결과를 저장하기 위해 변경 가능한 아티팩트도 지원할 수 있다.
백그라운드 프로세스(404)는 훈련 계획에 기초하여 선택된 복수의 훈련 엔진(406)을 호스팅할 수 있다. 연합(Federated) 학습의 경우, 백그라운드 프로세스(404)는 연합 학습 서버와 통신하여 프라이버시 보호 기술(예를 들어, 보안 집계)을 사용하여 누적된 훈련 결과를 업로드할 수 있다.
로그 관리자(444)는 기계 학습 메트릭에 대한 상세한 분석을 위해 기계 학습 모델에 관한 로그를 클라우드 서버(210)에 업로드할 수 있다.
보다 구체적으로, 일부 구현들에서, 수집 API 서비스(420)는 백그라운드 프로세스(404)에 의해 나중에 검색하기 위해 (예를 들어, 백그라운드 훈련을 수행하기 위해) 중앙화된 예시 데이터베이스(124)에 훈련 예(예시)의 저장을 허용, 관리 및/또는 수행하는 설비일 수 있다. 예를 들어, 수집 API 서비스(420)는 중앙화된 예시 데이터베이스(124)에서 훈련 예시들의 저장을 관리하기 위해 저장 컴포넌트(440)와 상호 작용할 수 있다.
수집 API 410은 간단할 수 있으며: 일단 클라이언트가 인증되면 아래 예제 코드에서 설명한 것처럼 객체에 액세스할 수 있다(여기서 Task는 비동기 API 호출을 나타내는 방법이며; Task <Void>는 무시되거나 오류를 관찰하기 위해 수신될 수 있다):
class Learning {
...
static CollectionClient getCollectionClient(CollectionOptions options);
...
}
interface CollectionClient {
Task<Void> add(Example example);
Task<Void> clear();
}
"Learning.getCollectionClient (options)"는 "exampleCollection"에 대한 액세스 및 구성을 허용할 수 있다. 'options' 파라미터에는 최소한 컬렉션 이름이 포함될 수 있다. 추가 옵션이 제공되지 않으면 디폴트 또는 이전에 구성된 옵션을 사용할 수 있다. 예시적인 옵션은 데이터베이스(124)에 저장되기 전에 학습 이벤트에 주입되어야 하는 콘텐츠 및 컨텍스트의 지속 시간(time-to-live)을 포함한다.
"CollectionClient.add (example)"는 저장소(store)에 새 예시를 추가할 수 있다.
"CollectionClient.clear ()"를 사용하면 컬렉션의 콘텐츠를 재설정할 수 있다.
훈련 API(414) 및 해당 훈련 API 서비스(424)는 백그라운드 프로세스(404)가 훈련을 수행하도록 스케줄링할 수 있다. 백그라운드 프로세스(404)는 예시 컬렉션으로부터 데이터를 가져오고 훈련 계획을 실행하기 위해 하나 이상의 훈련 엔진(406)을 구현하거나 상호 작용할 수 있다. 계획은 그래프 자체를 포함하는 그래프(예: TensorFlow 그래프)에서 수행할 일련의 오퍼레이션에 대한 선언적 설명일 수 있다. 계획은 학습 데이터에 대해 컬렉션을 조회하는 방법, 그래프에 피드하는 방법 및/또는 출력을 생성 및 전달하는 방법을 설명할 수 있다.
각각의 훈련 계획 유형은 훈련 계획 엔진(406)과 연관될 수 있다. 따라서 온-디바이스 기계 학습 플랫폼은 새로운 유형의 계획으로 확장될 수 있으므로 백그라운드 훈련의 일반적인 모델에 맞는 모든 기계 학습 실행을 나타낼 수 있다.
일 예로서, 트레이너에 대한 예시 API가 아래에 제공된다:
class Learning {
...
static TrainerClient getTrainerClient(TrainerOptions options);
...
}
interface TrainerClient {
Task<Void> start(@Schedule int schedule);
Task<Void> stop();
}
"Learning.getTrainerClient (options)"는 최소한 트레이너 세션 이름이 포함된 옵션을 사용하고 훈련 세션을 만들거나 재구성할 수 있다. 세션 이름(Session names)은 패키지 이름과 유사하게 애플리케이션에서 선택한 상수일 수 있으며, 세션 자체는 영원(eternal)할 수 있다. 옵션은 계획 유형, 계획을 얻는 방법 및 계획 유형에 특정한 파라미터를 특정할 수도 있다. 계획은 계획 유형에 따라 다른 방식으로 얻을 수 있으며; 예를 들어, 연합의 경우 계획은 연합 학습 서버에서 다운로드될 수 있으며; 개인화를 위해, 자산에 포함되거나 클라우드 서버(210)로부터 다운로드될 수 있다.
"TrainerClient.start (schedule)"는 인터페이스 생성시 전달된 옵션과 지정된 일정(schedule)에 따라 훈련 세션을 시작할 수 있다. 일정은 지속적이거나 일 회일 수 있다. 일부 구현에서, 두 경우 모두, 훈련은 장치 조건이 허용하는 경우에만 스케줄링된다. 예를 들어, 일부 구현들에서, 장치가 유휴 및 충전 둘 다인 경우에만 훈련이 스케줄링되거나 달리 수행될 것이다.
"TrainerClient.stop ()"은 훈련 세션의 취소 및/또는 제거를 허용할 수 있다.
예측 API(412)는 클라이언트가 훈련된 모델에 기초하여 입력을 공급하고 그로부터 예측을 도출할 수 있게 한다. 트레이너와 마찬가지로 예측자는 일부 구현에서 예측 변수를 계획할 수 있으며, 여기서 계획은 그래프에서 수행할 오퍼레이션과 입력 및 출력을 얻는 방법에 대한 선언적 설명(declarative description)이다.
일 예로서, 예측 API 코드의 예는 다음과 같다:
class Learning {
...
static PredictorClient getPredictorClient(PredictorOptions options);
...
}
interface PredictorClient {
Task<PredictionResult> predictRank(Example example, Map<String, Example> candidates);
}
"Learning.getPredictorClient ()"는 주어진 옵션을 기반으로 예측 변수(predictor)를 리턴할 수 있다. 옵션은 예측을 위한 계획 및 모델 파라미터를 얻는 방법을 특정할 수 있다. 따라서, 예측 엔진으로 전달되기 전에 후보 예시에 자동으로 삽입되어야 하는 컨텍스트 피처를 특정할 수 있다.
"predictRank ()"는 주어진 컨텍스트 예시와 특정된 후보에서 파생된 랭킹 문제에 대한 예측을 리턴할 수 있다. 시간이 지남에 따라 추가 애플리케이션별 예측 방법을 도입할 수 있다.
아래 코드는 도 4와 관련하여 기술된 세 가지 예시 API 410, 412 및 414의 사용을 예시한다.
먼저, 구성을 위한 옵션을 정의할 수 있다. 일반적으로 이러한 옵션은 표현형 구성 컴포넌트(phenotype config component)(442)에서 애플리케이션으로 얻을 수 있지만 단순화를 위해 정적 상수(static constants)로 정의할 수 있다:
class MyLearningConfig {
static final ExampleCollectionOptions COLLECTION_OPTIONS =
ExampleCollectionOptions.create("myCollection)
.setTimeToLive(TimeUnit.DAYS.toMillis(7))
.addContext(ContextType.USER_LOCATION);
static final TrainerOptions TRAINER_OPTIONS =
TrainerOptions.create("myTrainer")
.setCollectionName(COLLECTION_OPTIONS.getCollectionName())
.setPersonalized(
"mrepo://myApp/training_plan",
"mrepo://myApp/initial_params",
"file:trained_params");
static final PredictorOptions PREDICTOR_OPTIONS =
PredictorOptions.create("myPredictor")
.setRanking(
"mrepo://myApp/prediction_plan",
TRAINER_OPTIONS.getTrainedParamsUri())
.addContext(ContextType.USER_LOCATION);
}
모델 파라미터뿐만 아니라 훈련 및 예측 계획을 설명하는 아티팩트를 참조하기 위해 URI가 사용될 수 있다. 계획(plans)은 그래프(예를 들어, 텐서플로우 그래프)와 그래프를 실행하는 방법을 인코딩할 수 있다. 일부 구현에서, 계획은 해당 툴박스에 포함된 툴(예: Python 출)로 생성될 수 있다. 일부 구현에서, 모델 파라미터는 계획과 연관된 가중치의 불투명한 표현일 수 있다. URI는 "모델 리포지토리(repository)"(mrepo :)를 참조할 수 있으며, 장치로 (예: 클라우드 서버(210)에서) 다운로드되지만 로컬로 캐시된 파일(file:)을 나타낼 수도 있다. 예를 들어, 아티팩트 관리자(134)는 서버(210) 및/또는 다른 모델 관리 태스크로부터 모델 아티팩트의 다운로드를 관리할 수 있다.
파일 아티팩트의 경우 API간에 종속성(dependencies)을 정의할 수 있다. 예를 들어, "TrainerOptions"는 예측 API 서비스에서 사용하는 훈련된 파라미터로 파일 아티팩트를 생성하도록 정의될 수 있다. 온-디바이스 기계 학습 플랫폼은 필요한 입력이 아직 생성되지 않은 경우 오퍼레이션을 지연시키거나 적절한 오류 코드로 거부하여 입력/출력 종속성을 내부적으로 처리할 수 있다.
위의 구성을 제공하는 플랫폼에는 훈련 예시가 지속적으로 컬렉션에 제공되는 일부 API 코드가 포함될 수 있다. 예를 들어, 다음 코드에는 추가 훈련 예시(예)가 포함될 수 있다:
ExampleCollectionClient collection =
Learning.getExampleCollectionClient(COLLECTION_OPTIONS);
...
void onSomeEvent(SomeEvent event) {
collection.add(eventToExample(event));
}
예시가 캐시에 추가될 때마다 "COLLECTION_OPTIONS"로 특정된 컨텍스트가 피처로 추가될 수 있다. 사용자는 제공된 옵션을 기반으로 처리할 수 있는 추가 데이터의 크기나 수명(lifetime)을 제한할 필요가 없다.
훈련을 스케줄링하기 위해, 애플리케이션은 일반적으로 생성시 현재 옵션을 사용하여 백그라운드 훈련을 구성하고 스케줄링하도록 할 수 있다. 일부 구현에서, 훈련이 이미 스케줄링되어 있고 구성이 변경되지 않은 경우 다음 예시 호출(example call)의 영향을 받지 않는다:
void onCreated() {
TrainerClient trainer = Learning.getTrainerClient(TRAINER_OPTIONS);
trainer.start(Schedule.CONTINUOUSLY);
}
[0001] Finally, another piece of example code can use the prediction API to leverage training results. As one example, this can look as provided in the example code below:
PredictorClient predictor = Learning.getPredictorClient(PREDICTOR_OPTIONS);
...
SomeEvent predict(SomeEvent event, Map<String, SomeEvent> candidates) {
PredictionResult result = predictor.predictRank(eventToExample(event), candsToExample(candidates));
if (result.notAvailable()) {
// This can happen if artifacts aren't yet downloaded or computed by training.
Log.warn("prediction not yet available, using default")
return candidates.iterator().next();
}
return candidates.get(result.getKeys()[0]);
}
이미 언급했듯이, 일부 구현에서, 온-디바이스 기계 학습 플랫폼의 컨텍스트 제공자(430)는 컨텍스트 피처를 학습 이벤트에 주입할 수 있다. 이는 서비스 측에서 발생할 수 있으므로 애플리케이션에서 컨텍스트를 직접 사용할 필요가 없다.
컨텍스트를 주입(삽입)할 수 있는 두 가지 예는 다음과 같다.
1. 예시가 예시 컬렉션에 저장되기 전에. 주입된 컨텍스트는 "CollectionOptions"로 특정될 수 있다.
2. 예시가 예측 엔진으로 전달되기 전에. 주입된 컨텍스트는 "PredictorOptions"로 특정될 수 있다.
일반적으로 각 컨텍스트 카테고리는 예시에 추가된 잘 알려진 이름과 잘 알려진 유형의 피처 세트를 특정할 수 있다(예: TensorFlow 예시 프로토(proto)). 주어진 컨텍스트 피처에 대해 주입된 값은 주입 시점에 시스템으로부터 요청되거나, 플랫폼의 내부 컨텍스트 제공자(430)가 주기적으로 업데이트하는 캐시된 값일 수 있다.
예시적인 컨텍스트 피처는, 오디오 상태; 일 속성; 달력; 감지된 활동; 사용자별 장소(예 : "집" 대 "직장"), 네트워크 상태, 전원 연결, 화면 피처, 사용자 위치, 사용자 위치 예측, WiFi 스캔 정보, 날씨 또는 기타 컨텍스트 피처를 포함할 수 있다.
상기 설명 외에도, 사용자는 본 명세서에 기술된 시스템, 프로그램 또는 특징이 사용자 정보(예 : 훈련 예시 및 컨텍스트 피처)의 수집을 가능하게 할 수 있는지, 그리고 사용자가 서버로부터 컨텐츠 또는 통신을 수신하는 경우에 대해 사용자가 선택을 할 수 있게 하는 제어를 제공받을 수 있다. 또한, 특정 데이터는 개인 식별 정보가 제거되도록 저장 또는 사용하기 전에 하나 이상의 방식으로 처리될 수 있다. 예를 들어, 사용자의 신원은 사용자에 대한 개인 식별 정보가 결정되지 않도록 처리될 수 있거나, 위치 정보가 획득되는 위치(도시, 우편 번호 또는 주 수준과 같은)에서 사용자의 지리적 위치가 일반화될 수 있고, 사용자의 특정 위치를 확인할 수 없다. 따라서, 사용자는 사용자에 대해 어떤 정보가 수집되는지, 그 정보가 어떻게 사용되는지, 그리고 어떤 정보가 사용자에게 제공되는지를 제어할 수 있다.
온-디바이스 플랫폼은 컨텍스트 자체를 필요로 하지 않기 때문에, 컨텍스트 제공자(430)는 클라이언트 애플리케이션에 대한 컨텍스트를 수집한다. 예를 들어 클라이언트 애플리케이션은 기계 학습 모델의 피처로서 "위치"가 필요할 수 있다. 이러한 애플리케이션은 온-디바이스 플랫폼에 "위치" 컨텍스트가 필요하다는 것을 명시적으로 알릴 수 있다.
온 디바이스 플랫폼은 먼저 클라이언트 애플리케이션에 디바이스(장치) 위치에 대한 액세스 권한이 있는지 확인할 수 있다. 그렇지 않은 경우 플랫폼은 클라이언트에 컨텍스트를 제공하지 않는다. 그렇지 않으면 애플리케이션에 권한이 있는 경우 플랫폼에 훈련 예시를 보내면 클라이언트에 대한 위치 컨텍스트가 채워진다. 따라서, 일부 구현들에서, 클라이언트가 온-디바이스 플랫폼에 예시를 전송하는 각각의 인스턴스에서, 플랫폼은 그들의 권한(permissions)을 검사하고 클라이언트가 그들이 주장하는 컨텍스트에 액세스할 수 있는 권한을 가지고 있는지를 결정한다.
일부 구현에서, 실제 컨텍스트 콘텐츠가 애플리케이션에 제공되지 않는다. 대신, 컨텍스트는 단순히 클라이언트의 훈련 예시로 채워(populated)진다. 훈련 예시는 온-디바이스 플랫폼 데이터베이스 내에 유지되므로, 클라이언트는 실제 컨텍스트 콘텐츠에 액세스할 수 없다.
일부 구현에서, 장소 유형 및 캘린더와 같은 특정 유형의 컨텍스트에 액세스하려면 사용자 계정이 필요하다. 일부 구현들에서, 컨텍스트 제공자(430) 자체는 컨텍스트를 위해 어떤 계정을 사용할지를 나타내지 않는다. 이 경우 클라이언트 애플리케이션은 계정을 지정해야 한다. 일부 구현에서, 클라이언트가 계정을 지정하지 않으면 계정이 필요없는 컨텍스트만 클라이언트에 제공된다.
온-디바이스 플랫폼이 사용하는 컨텍스트는 일반적으로 컨텍스트 관리자(예: 도 1에 표시된 126)에 의해 제공된다. 컨텍스트 관리자는 예를 들어 플랫폼, 플랫폼을 포함하는 애플리케이션 및/또는 장치의 운영 체제를 포함하여 여러 장소에 위치할 수 있다. 일부 구현들에서, 성능을 개선하기 위해, 컨텍스트 제공자(430)는 컨텍스트 관리자에 리스너를 등록할 수 있고, 항상 최신 컨텍스트 업데이트를 온-디바이스 플랫폼 메모리에 유지한다.
일부 구현들에서, 온-디바이스 플랫폼은 오래된(stale) 컨텍스트 만료를 수행하거나 포함할 수 있다. 일부 구현에서, 사용자가 장치에서 컨텍스트 신호를 끄는 경우(예: 위치 또는 활동 인식 끄기), 컨텍스트 관리자는 컨텍스트가 해제되어 있음을 온-디바이스 플랫폼에 알리지 않는다. 대신 컨텍스트 관리자는 온-디바이스 플랫폼에 이러한 컨텍스트에 대한 컨텍스트 업데이트를 전송하는 것을 단순히 중지한다. 따라서, 향후 이벤트에 오래된 컨텍스트(stale context)를 사용하지 않기 위해 플랫폼은 오래된 컨텍스트가 만료되도록 할 수 있다. 특히, 콘텍스트 속성에 기초하여, 각각의 콘텍스트 피처 또는 컨텍스트 유형에 대해 상이한 만료 시간 기간이 정의될 수 있다. 컨텍스트가 만료 시간 기간에 도달하면 삭제될 수 있다.
다른 예시적인 컨텍스트 피처는 장소 별칭(aliases) 컨텍스트 피처를 포함한다. 특히, 사용자가 집에 있는지 또는 직장에 있는지 여부는 많은 클라이언트 애플리케이션에서 중요한 피처이다. 사용자의 집/직장 장소가 자주 변경되지 않는다는 것을 고려하면, 플랫폼은 컨텍스트 제공자(430)가 구성되면 현재 집/직장 별칭을 요청할 수 있다. 사용자가 그러한 정보의 사용에 동의한 경우, 사용자의 집/직장 장소를 캐시할 수 있고, 컨텍스트 제공자(430)는 위치 컨텍스트를 캐시된 위치와 비교함으로써 사용자가 집에 있는지 또는 직장에 있는지를 결정하기 위해 위치 컨텍스트를 사용할 수 있다. 일부 구현에서, 장소 별칭 정보는 컨텍스트 관리자 또는 장소 API로부터 수신될 수 있다.
컨텍스트 관리자는 최소한 다음 두 가지 방식으로 컨텍스트를 전달할 수 있다. 첫 번째 예시에서, 온-디바이스 플랫폼은 리스너로 등록할 수 있다. 이 경우, 온-디바이스 플랫폼은 업데이트된 컨텍스트의 캐시를 유지할 수 있으며, 이는 일부 구현에서 온-디바이스 플랫폼이 상시 가동 서비스(always-on service)임을 의미한다. 리스너(listener)를 사용하면 업데이트된 데이터를 캐시에 보관할 수 있다.
리스너로 등록하면 다음과 같은 이점이 있다.
1. 낮은 대기시간(latency). 모든 컨텍스트는 온-디바이스 플랫폼 내에 캐시되며 기계 학습에 적합한 형식으로 변환된다.
2. 온-디바이스 플랫폼으로의 IPC(Inter Process Call) 속도가 빠르면 캐싱(caching) 컨텍스트가 배터리를 절약한다.
두 번째 예시에서, 온-디바이스 플랫폼은 한 번(one shot)에 현재 컨텍스트를 얻을 수 있다. 이 경우 컨텍스트 관리자는 모든 현재 컨텍스트를 한 번에 가져 오기 위해 다른 API를 제공할 수 있다. 이 API를 사용하면 온-디바이스 플랫폼은 일반적으로 컨텍스트의 캐시를 유지하지 않고 요청시 현재 컨텍스트를 가져온다.
이 모드에서, 컨텍스트 관리자는 플랫폼에 대한 업데이트된 컨텍스트를 유지하도록 요청되므로, 플랫폼은 일반적으로 첫 번째 옵션에는 필요하지 않은 추가 UDC 권한을 얻는다.
원샷(one shot) 모드의 이점은 온-디바이스 플랫폼의 IPC 속도가 느리면 배터리를 절약할 수 있다는 것이다.
일부 구현에서, 온-디바이스 플랫폼은 위에 나열된 모든 컨텍스트에 대한 사용자 권한을 얻을 수 있지만, 특정 클라이언트는 온-디바이스 플랫폼과 동일한 권한을 갖지 않을 수 있다. 따라서 플랫폼은 클라이언트의 권한을 제어할 수 있다. 일부 구현에서, 이는 클라이언트 애플리케이션과 관련된 권한을 추출하기 위해 패키지 관리자를 사용하여 수행할 수 있다. 플랫폼은 컨텍스트와 권한 간의 매핑을 유지할 수 있다. 따라서, 클라이언트는 일반적으로 온-디바이스 플랫폼에 자신을 등록할 때 사용하려는 컨텍스트를 명시적으로 요구한다. 플랫폼은 클라이언트에게 상기 요청된 컨텍스트에 액세스할 수 있는 권한이 있는지 확인한다. 애플리케이션에 권한이 있는 컨텍스트만 해당 모델을 훈련하고 추론하는 데 사용된다.
또한, 클라이언트의 권한이 즉시 변경될 수 있다. 예를 들어, 사용자는 애플리케이션이 유용하다고 생각될 때 자신의 위치를 사용하도록 애플리케이션을 승인 한 다음 권한을 취소할 수 있다. 이 경우를 처리하기 위해, 클라이언트에서 새로운 이벤트가 발생할 때마다, 플랫폼은 기존 권한을 확인하고 그리고 훈련할 이벤트와 해당 컨텍스트를 포함할 수 있다.
추론 중에, 플랫폼은 현재 클라이언트 권한을 분석하여 예측에 컨텍스트 피처를 사용할 수 있다. 이와 같이, 일부 구현에서, 기계-학습된 모델은 훈련 및 추론을 위한 누락된 피처를 수용할 수 있다.
다른 양태에 따르면, 일부 구현에서, 온-디바이스 플랫폼 API를 사용하기 위해, 클라이언트는 그들의 애플리케이션에 API 키를 추가할 수 있다. 예를 들어, 클라이언트가 개인 키를 보유하는 디지털 인증서로 애플리케이션에 서명(signed)할 수 있다. 애플리케이션은 API를 관리하는 중앙 기관에 등록하여 키를 얻을 수 있다.
권한부여 절차의 예는 다음과 같다.
1. 온-디바이스 플랫폼은 클라이언트가 온-디바이스 플랫폼에 등록할 때 패키지 이름과 API 키 쌍을 얻는다. 온-디바이스 플랫폼은 패키지 이름과 API 키 쌍을 확인을 위해 중앙 기관에 보낸다.
2. 클라이언트가 확인되면, 온-디바이스 플랫폼은 클라이언트가 해당 디바이스(장치)에서 사용할 플랫폼 키를 생성한다.
3. 해당 디바이스의 향후 API 호출을 위해, 클라이언트는 플랫폼 키를 온-디바이스 플랫폼에 제공해야 한다.
온-디바이스 플랫폼은 플랫폼 키가 패키지 이름 및 API 키와 일치하는지 확인할 수 있다. 그러나, 온-디바이스 플랫폼은 일반적으로 이를 다시 확인하기 위해 중앙 기관에 전송하지 않는다.
경우에 따라, 둘 이상의 사용자가 디바이스를 공유할 수 있다. 따라서, 온-디바이스 플랫폼은 API가 사용될 때 리스트에서 기본 계정(primary account)을 추출할 수 있다. 온-디바이스 플랫폼은 훈련 데이터를 기본 계정에 연결하고 관련 모델을 업데이트할 수 있다. 디바이스에서 계정에 대한 모델을 사용할 수 없는 경우, 온-디바이스 플랫폼은 클라우드에서 클라이언트 애플리케이션의 모델을 다운로드하거나 기본 모델(예, 연합 학습의 평균 모델)을 사용할 수 있다.
다른 양태에 따르면, 일부 구현에서, 사용자는 그의 위치 이력 또는 계정 이력을 지울 수 있다. 그러한 경우, 온-디바이스 플랫폼은 모든 해당 컨텍스트를 제거할 수 있다. 또한 일부 구현에서, 이 경우 플랫폼은 이 사용자에 대한 나머지 컨텍스트를 사용하여 모델을 재훈련할 수 있다.
예로서, 도 5a 및 5b는 본 개시의 예시적인 실시 예에 따라 컨텍스트 피처를 주입하는 예시적인 기계 학습 플랫폼(122)의 블록도를 도시한다. 특히, 도 5a는 훈련 예시가 예시 컬렉션에 저장되기 전에 컨텍스트 피터를 주입하는 컨텍스트 제공자(430)를 도시하며; 도 5b는 예시가 기계 학습 모델을 구현하는 예측 엔진으로 전달되기 전에 컨텍스트 피처를 주입하는 컨텍스트 제공자(430)를 도시한다.
도 6a 및 6b는 본 개시의 예시적인 실시 예에 따른 모델 훈련을 수행하는 예시적인 장치의 블록도를 도시한다. 특히, 도 6a 및 6b는 백그라운드 훈련 프로세스를 도시한다.
도 6a에 도시된 바와 같이, 애플리케이션 프로세스는 훈련 데이터를 훈련 데이터 저장소에 공급할 수 있다. 훈련 프로세스는 백그라운드에서 스케줄링될 수 있다(예를 들어, 유휴 및/또는 플러그-인과 같은 특정 장치 조건에 의해 허용되는 경우).
훈련 프로세스는 모델 상태 및 훈련 계획을 선택하고, 캐시에서 데이터를 반복적으로 선택하여 모델을 훈련시킨 다음 통계(들) 및 모델 업데이트 메시지(들)(예: 클라우드 서버)를 게시할 수 있다. 일부 구현들에서, 훈련 단계가 길어질 수 있기 때문에 (예를 들어, 분), 훈련 프로세스는 장치 상태의 변화에 기초하여 중단(suspend) 및 재개될 수 있다.
도 6b는 도 6a와 유사하며, 이는 연합 학습을 가능하게 하는 연합 학습 서비스를 포함한다. 도 6b에 도시된 바와 같이, 훈련 계획 및 모델은 연합 학습 서비스에 의해 분배될 수 있다. 훈련 프로세스는 백그라운드에서 훈련을 수행하여 모델 업데이트를 생성할 수 있다. 모델 업데이트는 연합 학습 서비스에 (예: 집계에 사용하기 위해) 업로드될 수 있다. 또한, 일부 구현에서, 품질 보증 (예를 들어, 반자동 품질 보증)은 학습된 모델을 추출하고 모델을 장치에 다시 분배할 수 있다.
도 7은 본 개시의 예시적인 실시 예에 따른 예시적인 연합 학습 프로세스의 그래픽 다이어그램을 도시한다.
예시 방법
도 8은 본 개시의 예시적인 실시 예에 따른 기계 학습 모델을 사용하여 추론을 생성하는 예시적인 방법(800)의 흐름도를 도시한다.
802에서, 컴퓨팅 시스템은 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 입력 데이터를 수신할 수 있다.
804에서, 컴퓨팅 시스템은 제1 애플리케이션에 의해 요청되고 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 피처로 입력 데이터를 보완할 수 있다. 일부 구현들에서, 804에서, 컴퓨팅 시스템은 하나 이상의 컨텍스트 유형들 각각에 대한 제1 애플리케이션에 대한 권한 상태를 결정할 수 있다. 일부 구현들에서, 입력 데이터는 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 유형에 포함된 컨텍스트 피처만 보충(supplemented)된다.
806에서, 컴퓨팅 시스템은 입력 데이터에 적어도 부분적으로 기초하고 보충 컨텍스트 피처에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하기 위해 제1 기계 학습 모델을 이용할 수 있다. 808에서, 컴퓨팅 시스템은 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션에 적어도 하나의 추론을 제공할 수 있다.
도 9는 본 개시의 예시적인 실시 예에 따라 기계 학습을 수행하기 위한 훈련 예시를 수집하기 위한 예시적인 방법(900)의 흐름도를 도시한다.
902에서, 컴퓨팅 시스템은 수집 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 새로운 훈련 예시를 수신할 수 있다. 904에서, 컴퓨팅 시스템은 제1 애플리케이션에 의해 요청되고 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 피처들로 새로운 훈련 예시를 보완할 수 있다. 일부 구현들에서, 904에서, 컴퓨팅 시스템은 하나 이상의 컨텍스트 유형들 각각에 대한 제1 애플리케이션에 대한 권한 상태를 결정할 수 있다. 일부 구현들에서, 새로운 훈련 예는 제1 애플리케이션이 액세스할 수 있는 컨텍스트 유형들에 포함된 컨텍스트 피처들만으로 보충된다.
906에서, 컴퓨팅 시스템은 새로운 훈련 예를 컨텍스트 피처와 함께 중앙화된 예시 데이터베이스에 저장할 수 있다. 일부 구현 예에서, 906에서 새로운 훈련 예시를 저장하는 것은 수집 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션에 대해 미리 정의된 하나 이상의 옵션 파라미터에 따라 중앙화된 예시 데이터베이스에 새로운 훈련 예를 저장하는 단계를 포함한다. 일례로서, 하나 이상의 옵션 파라미터는 훈련 예가 저장되는 기간을 정의하는 적어도 TTL(time-to-live) 파라미터를 포함할 수 있다.
일부 구현들에서, 906에서 새로운 훈련 예를 저장하는 것은 하나 이상의 컨텍스트 피처 중 적어도 제1 컨텍스트 피처에 만료 기간을 할당하는 단계를 포함한다. 방법(900)은 제1 컨텍스트 피처에 할당된 만료 기간의 종료시에 중앙화된 예시(예) 데이터베이스로부터 제1 컨텍스트 피처 또는 전체 새로운 훈련 예를 삭제하는 단계를 더 포함한다.
일부 구현에서, 방법(900)은, 적어도 하나의 컨텍스트 유형에 대한 상기 제1 애플리케이션에 대한 권한 상태에 대한 변경 표시를 수신하는 단계; 그리고 권한 상태에 대한 변경에 응답하여, 상기 중앙화된 예시 데이터베이스에서 상기 제1 애플리케이션과 관련된 훈련 예와 관련된 적어도 하나의 컨텍스트 유형의 컨텍스트 피처를 삭제하는 단계를 더 포함한다. 또한 일부 구현에서, 방법(900)은, 컨텍스트 피처를 삭제한 후, 중앙화된 예시 데이터베이스에서 제1 애플리케이션과 관련된 훈련 예를 사용하여 제1 애플리케이션과 관련된 하나 이상의 기계 학습 모델을 재훈련하는 단계를 더 포함한다.
도 10은 본 개시의 예시적인 실시 예에 따라 기계 학습 모델을 훈련시키는 예시적인 방법(1000)의 흐름도를 도시한다. 1002에서, 컴퓨팅 시스템은 중앙화된 예시 데이터베이스에 의해 저장된 하나 이상의 훈련 예에 적어도 부분적으로 기초하여 제1 기계-학습된 모델을 재훈련하기 위해 훈련 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 명령어를 수신할 수 있다.
1004에서, 컴퓨팅 시스템은 중앙화된 예시 데이터베이스에 의해 저장된 하나 이상의 훈련 예에 적어도 부분적으로 기초하여 제1 기계-학습된 모델을 재훈련할 수 있다.
1006에서, 컴퓨팅 시스템은 재훈련된 모델의 하나 이상의 파라미터 또는 모델의 재훈련 동안 발생한 하나 이상의 파라미터에 대한 하나 이상의 변화를 기술하는 업데이트를 결정할 수 있다.
1008에서, 컴퓨팅 시스템은 다른 컴퓨팅 장치에 의해 제공되는 다른 업데이트와의 통합(집계)(aggregation)을 위해 업데이트를 중앙 서버 컴퓨팅 장치에 전송할 수 있다.
추가 개시
본 명세서에서 설명된 기술은 서버, 데이터베이스, 소프트웨어 애플리케이션 및 기타 컴퓨터 기반 시스템뿐만 아니라 취해진 조치 및 그러한 시스템과 주고받는 정보를 참조한다. 컴퓨터 기반 시스템의 고유한 유연성 덕분에 컴포넌트들 간 다양한 구성, 조합 및 태스크와 기능의 구분이 가능하다. 예를 들어, 본 명세서에서 설명된 프로세스는 단일 장치 또는 컴포넌트 또는 여러 장치(디바이스)들 또는 컴포넌트들의 조합을 사용하여 구현될 수 있다. 데이터베이스 및 애플리케이션은 단일 시스템에서 구현되거나 여러 시스템에 분산될 수 있다. 분산 컴포넌트는 순차적으로 또는 병렬로 작동할 수 있다.
본 발명의 다양한 특정 예시적인 실시 예들에 대하여 본 요지가 상세히 설명되었지만, 각각의 예는 본 개시의 제한이 아니라 설명을 위해 제공된다. 당업자는 전술한 내용을 이해하면 그러한 실시 예에 대한 변경, 변형 및 등가물을 용이하게 생성할 수 있다. 따라서, 본 개시 내용은 당업자에게 명백한 바와 같이 본 요지에 대한 이러한 변경, 변형 및/또는 추가를 포함하는 것을 배제하지 않는다. 예를 들어, 일 실시 예의 일부로서 도시되거나 설명된 특징은 다른 실시 예와 함께 사용되어 또 다른 실시 예를 생성할 수 있다. 따라서, 본 개시는 이러한 변경, 변형 및 등가물을 포함하는 것으로 의도된다.
특히, 도 8 내지 도 10은 각각 예시 및 설명의 목적으로 특정 순서로 수행되는 단계를 도시하지만, 본 개시의 방법은 특히 예시된 순서 또는 배열로 제한되지 않는다. 방법들(800, 900 및 1000)의 다양한 단계들은 본 개시의 범위를 벗어나지 않으면서 다양한 방식으로 생략, 재배열, 조합 및/또는 적응될 수 있다.

Claims (15)

  1. 컴퓨팅 장치로서,
    하나 이상의 프로세서; 그리고
    하나 이상의 비-일시적 컴퓨터 판독 가능 매체를 포함하며, 상기 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체는,
    하나 이상의 프로세서에 의해 구현되는 복수의 애플리케이션;
    복수의 애플리케이션으로부터 수신된 훈련 예를 저장하는 중앙화된 예(example) 데이터베이스;
    복수의 애플리케이션에 대한 추론을 제공하도록 작동 가능한 기계-학습된 모델, 그리고
    하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 장치로 하여금 동작들을 수행하는 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령어를 포함하며, 상기 동작들은,
    컬렉션 애플리케이션 프로그래밍 인터페이스를 통해 복수의 애플리케이션 중 제1 애플리케이션으로부터 제1 훈련 예를 수신하는 동작;
    제1 훈련 예가 복수의 애플리케이션의 다른 애플리케이션에 액세스할 수 없도록 기계-학습된 모델을 훈련하는 데 사용하기 위해 중앙화된 예 데이터베이스에 제1 훈련 예를 저장하는 동작;
    예측 애플리케이션 프로그래밍 인터페이스를 통해 복수의 애플리케이션 중 제2 애플리케이션으로부터 입력 데이터를 수신하는 동작;
    상기 입력 데이터에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하기 위해 적어도 상기 기계-학습된 모델을 사용하는 동작; 그리고
    기계-학습된 모델에 의해 생성된 적어도 하나의 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제2 애플리케이션에 제공하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  2. 제1항에 있어서, 상기 동작들은,
    중앙화된 예 데이터베이스에 의해 저장된 하나 이상의 훈련 예에 적어도 부분적으로 기초하여 기계-학습된 모델을 재훈련하기 위해 훈련 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 명령어를 수신하는 동작; 그리고
    상기 명령어에 응답하여, 제1 훈련 예에 적어도 부분적으로 기초하여 기계-학습된 모델이 재훈련되게 하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  3. 제1항 또는 제2항에 있어서, 상기 동작들은,
    제1 훈련 예를 저장하기 전에, 컴퓨팅 장치와 연관된 컨텍스트를 설명하는 하나 이상의 컨텍스트 피처를 결정하는 동작을 더 포함하며, 그리고
    제1 훈련 예를 저장하는 동작은 제1 훈련 예를 하나 이상의 컨텍스트 피처와 함께 중앙화된 예 데이터베이스에 저장하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  4. 제3항에 있어서, 상기 동작들은,
    제1 훈련 예를 저장하기 전에, 하나 이상의 컨텍스트 유형 각각에 대한 제1 애플리케이션에 대한 권한(permission) 상태를 결정하는 동작을 더 포함하며, 상기 제1 애플리케이션 및 각각의 컨텍스트 유형에 대한 권한(permission) 상태는 제1 애플리케이션이 컨텍스트 유형에 액세스하도록 하는 권한을 갖는지 여부를 설명하며;
    하나 이상의 컨텍스트 피처와 함께 제1 훈련 예를 저장하는 동작은 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 유형에 포함된 컨텍스트 피처만 포함한 제1 훈련 예를 저장하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  5. 제3항에 있어서, 상기 동작들은,
    하나 이상의 컨텍스트 업데이트에 리스너(listener)로서 등록하는 동작; 그리고
    하나 이상의 컨텍스트 업데이트에 기초하여 컨텍스트 피쳐의 컨텍스트 피쳐 캐시를 유지하는 동작을 포함하며,
    컴퓨팅 장치와 연관된 컨텍스트를 설명하는 하나 이상의 컨텍스트 피처를 결정하는 동작은 컨텍스트 피처 캐시로부터 하나 이상의 컨텍스트 피처에 액세스하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  6. 제3항에 있어서, 상기 중앙화된 예 데이터베이스는 상기 하나 이상의 애플리케이션에 의해 직접 액세스할 수 없으므로, 하나 이상의 컨텍스트 피처는 상기 제1 애플리케이션에 액세스 가능하지 않는 것을 특징으로 하는 컴퓨팅 장치.
  7. 제3항에 있어서,
    상기 중앙화된 예 데이터베이스에 하나 이상의 컨텍스트 피처와 함께 새로운 훈련 예를 저장하는 동작은 만료기간(expiration)을 하나 이상의 컨텍스트 피처 중 적어도 제1 컨텍스트 피처에 할당하는 동작을 포함하며; 그리고
    상기 동작들은 제1 컨텍스트 피쳐에 할당된 만료기간의 종료시에 상기 중앙화된 예 데이터베이스로부터 제1 컨텍스트 피쳐 또는 전체 새로운 훈련 예를 삭제하는 동작을 더 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  8. 제3항에 있어서, 상기 동작들은,
    적어도 하나의 컨텍스트 유형에 대한 제1 애플리케이션의 권한 상태에 대한 변경 표시를 수신하는 동작; 그리고
    권한 상태에 대한 변경에 응답하여, 제1 애플리케이션과 관련된 훈련 예와 연관된 적어도 하나의 컨텍스트 유형의 임의의 컨텍스트 피처를 상기 중앙화된 예 데이터베이스로부터 삭제하는 동작을 더 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  9. 제8항에 있어서, 상기 동작들은,
    컨텍스트 피처를 삭제한 후, 상기 중앙화된 예 데이터베이스에서 상기 제1 애플리케이션과 연관된 훈련 예를 사용하여 상기 제1 애플리케이션과 연관된 하나 이상의 기계-학습된 모델을 재훈련시키는 동작을 더 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  10. 컴퓨터로 구현되는 방법으로서,
    컴퓨팅 장치에 의해, 컬렉션 애플리케이션 프로그래밍 인터페이스를 통해 컴퓨팅 장치에 의해 저장된 복수의 애플리케이션 중 제1 애플리케이션으로부터 제1 훈련 예를 수신하는 단계;
    컴퓨팅 장치에 의해, 제1 훈련 예가 하나 이상의 애플리케이션의 다른 애플리케이션에 액세스할 수 없도록, 컴퓨팅 장치에 의해 저장된 기계-학습된 모델을 훈련하는 데 사용하기 위해 복수의 애플리케이션으로부터 수신된 훈련 예를 포함하는 컴퓨팅 장치의 중앙화된 예 데이터베이스에 제1 훈련 예를 저장하는 단계 -상기 기계-학습된 모델은 복수의 애플리케이션에 대한 추론을 제공하도록 동작가능함-;
    컴퓨팅 장치에 의해, 예측 애플리케이션 프로그래밍 인터페이스를 통해 복수의 애플리케이션 중 제2 애플리케이션으로부터 입력 데이터를 수신하는 단계;
    컴퓨팅 장치에 의해, 상기 입력 데이터에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하기 위해 상기 기계-학습된 모델을 사용하는 단계; 그리고
    컴퓨팅 장치에 의해, 예측 애플리케이션 프로그래밍 인터페이스를 통해 기계-학습된 모델에 의해 생성된 적어도 하나의 추론을 제2 애플리케이션에 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  11. 제10항에 있어서, 상기 방법은,
    제1 훈련 예를 저장하기 전에, 컴퓨팅 장치와 연관된 컨텍스트를 설명하는 하나 이상의 컨텍스트 피처를 결정하는 단계를 더 포함하며,
    제1 훈련 예를 저장하는 단계는 제1 훈련 예를 하나 이상의 컨텍스트 피처와 함께 중앙화된 예 데이터베이스에 저장하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  12. 제11항에 있어서, 상기 방법은,
    제1 훈련 예를 저장하기 전에, 컴퓨팅 장치에 의해, 하나 이상의 컨텍스트 유형 각각에 대한 제1 애플리케이션에 대한 권한 상태를 결정하는 단계를 더 포함하며, 제1 애플리케이션 및 각각의 컨텍스트 유형에 대한 권한 상태는 제1 애플리케이션이 컨텍스트 유형에 액세스하도록 하는 권한을 갖는지 여부를 설명하며;
    컴퓨팅 장치에 의해, 하나 이상의 컨텍스트 피처와 함께 제1 훈련 예를 저장하는 동작은 컴퓨팅 장치에 의해, 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 유형에 포함된 컨텍스트 피처만 포함한 제1 훈련 예를 저장하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  13. 제10항에 있어서, 상기 방법은,
    컴퓨팅 장치에 의해, 훈련 애플리케이션 프로그래밍 인터페이스를 통해 중앙화된 예 데이터베이스에 포함된 하나 이상의 훈련 예에 적어도 부분적으로 기초하여 기계-학습된 모델을 재훈련하라는 명령어를 제1 애플리케이션으로부터 수신하는 단계; 그리고
    상기 명령어에 응답하여, 컴퓨팅 장치에 의해, 제1 훈련 예에 적어도 부분적으로 기초하여 상기 기계-학습된 모델이 재훈련되게 하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  14. 프로그램이 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금 제10항 내지 제13항 중 어느 한 항의 방법의 단계를 수행하게 하는 명령어를 포함하는 컴퓨터 판독가능 저장 매체에 기록된 컴퓨터 프로그램.
  15. 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금 제10항 내지 제13항 중 어느 한 항의 방법의 단계를 수행하게 하는 명령어를 포함하는 컴퓨터 판독가능 저장 매체.
KR1020217035225A 2017-08-11 2018-04-26 온-디바이스 기계 학습 플랫폼 KR102459835B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/674,910 US11138517B2 (en) 2017-08-11 2017-08-11 On-device machine learning platform
US15/674,910 2017-08-11
KR1020197038030A KR102321924B1 (ko) 2017-08-11 2018-04-26 온-디바이스 기계 학습 플랫폼
PCT/US2018/029571 WO2019032157A1 (en) 2017-08-11 2018-04-26 LEARNING PLATFORM MACHINE ON DEVICE

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197038030A Division KR102321924B1 (ko) 2017-08-11 2018-04-26 온-디바이스 기계 학습 플랫폼

Publications (2)

Publication Number Publication Date
KR20210134822A KR20210134822A (ko) 2021-11-10
KR102459835B1 true KR102459835B1 (ko) 2022-10-27

Family

ID=62152682

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217035225A KR102459835B1 (ko) 2017-08-11 2018-04-26 온-디바이스 기계 학습 플랫폼
KR1020197038030A KR102321924B1 (ko) 2017-08-11 2018-04-26 온-디바이스 기계 학습 플랫폼

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020197038030A KR102321924B1 (ko) 2017-08-11 2018-04-26 온-디바이스 기계 학습 플랫폼

Country Status (6)

Country Link
US (2) US11138517B2 (ko)
EP (2) EP3739527B1 (ko)
JP (2) JP6926240B2 (ko)
KR (2) KR102459835B1 (ko)
CN (1) CN110869949B (ko)
WO (1) WO2019032157A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11410044B2 (en) * 2017-05-20 2022-08-09 Google Llc Application development platform and software development kits that provide comprehensive machine learning services
US11341429B1 (en) * 2017-10-11 2022-05-24 Snap Inc. Distributed machine learning for improved privacy
EP3499459A1 (en) * 2017-12-18 2019-06-19 FEI Company Method, device and system for remote deep learning for microscopic image reconstruction and segmentation
US11501156B2 (en) * 2018-06-28 2022-11-15 International Business Machines Corporation Detecting adversarial attacks through decoy training
US11429853B2 (en) * 2018-11-13 2022-08-30 Gyrfalcon Technology Inc. Systems and methods for determining an artificial intelligence model in a communication system
KR20200109819A (ko) * 2019-03-14 2020-09-23 삼성전자주식회사 전자 장치 및 이의 제어 방법
JP7238610B2 (ja) * 2019-06-04 2023-03-14 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
CN110399804A (zh) * 2019-07-01 2019-11-01 浙江师范大学 一种基于深度学习的食品检测识别方法
CN110362586B (zh) * 2019-07-12 2021-08-03 之江实验室 一种无患者数据共享的多中心生物医学数据协同处理系统及方法
US11907810B2 (en) * 2019-07-18 2024-02-20 Qualcomm Incorporated Concurrent optimization of machine learning model performance
US11392796B2 (en) * 2019-08-20 2022-07-19 Micron Technology, Inc. Feature dictionary for bandwidth enhancement
US11836615B2 (en) 2019-09-20 2023-12-05 International Business Machines Corporation Bayesian nonparametric learning of neural networks
US11134039B1 (en) * 2019-10-18 2021-09-28 Twitter, Inc. Dynamically controlling messaging platform client-side and server-side behavior
US20210125105A1 (en) * 2019-10-23 2021-04-29 The United States Of America, As Represented By The Secretary Of The Navy System and Method for Interest-focused Collaborative Machine Learning
US11500929B2 (en) * 2019-11-07 2022-11-15 International Business Machines Corporation Hierarchical federated learning using access permissions
WO2021121585A1 (en) * 2019-12-18 2021-06-24 Telefonaktiebolaget Lm Ericsson (Publ) Methods for cascade federated learning for telecommunications network performance and related apparatus
US20210232981A1 (en) * 2020-01-23 2021-07-29 swarmin.ai Method and system for incremental training of machine learning models on edge devices
US11948096B2 (en) 2020-03-13 2024-04-02 International Business Machines Corporation Adaptively adjusting influence in federated learning model updates
EP3885704A1 (en) * 2020-03-17 2021-09-29 HERE Global B.V. Method and apparatus for federated location fingerprinting
KR102567565B1 (ko) * 2020-03-31 2023-08-21 한국전자기술연구원 연합학습 자원 관리장치, 시스템 및 이의 자원 효율화 방법
CN112150280B (zh) * 2020-10-16 2023-06-30 北京百度网讯科技有限公司 提升匹配效率的联邦学习方法及设备、电子设备和介质
US11929079B2 (en) 2020-10-27 2024-03-12 Samsung Electronics Co., Ltd Electronic device for managing user model and operating method thereof
KR102526261B1 (ko) * 2020-12-04 2023-04-27 한국전자기술연구원 시공간 컨텍스트 피드백 기반 동적 ai 모델 선택 방법
CN114764967A (zh) * 2021-01-14 2022-07-19 新智数字科技有限公司 联合学习框架下设备故障报警的方法
CN115271087A (zh) * 2021-04-29 2022-11-01 华为云计算技术有限公司 获取知识的方法和装置
CN117413238A (zh) * 2021-07-19 2024-01-16 萨思学会有限公司 使用工艺数据的质量预测
CN113515895B (zh) * 2021-07-30 2024-03-01 北京中网易企秀科技有限公司 一种跨平台模型预测方法及装置
CN114048864A (zh) * 2022-01-11 2022-02-15 中兴通讯股份有限公司 联邦学习数据的管理方法、电子设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150046060A1 (en) 2013-08-12 2015-02-12 Mitsubishi Electric Research Laboratories, Inc. Method and System for Adjusting Vehicle Settings

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968334B2 (en) * 2001-05-15 2005-11-22 Nokia Corporation Method and business process to maintain privacy in distributed recommendation systems
US8170841B2 (en) 2004-04-16 2012-05-01 Knowledgebase Marketing, Inc. Predictive model validation
JP2006134080A (ja) * 2004-11-05 2006-05-25 Ntt Docomo Inc 携帯端末、及び、個人適応型コンテキスト獲得方法
JP4855970B2 (ja) 2007-02-20 2012-01-18 株式会社エヌ・ティ・ティ・ドコモ 端末装置およびプログラム
US8214308B2 (en) 2007-10-23 2012-07-03 Sas Institute Inc. Computer-implemented systems and methods for updating predictive models
US8682814B2 (en) * 2010-12-14 2014-03-25 Symantec Corporation User interface and workflow for performing machine learning
US8606728B1 (en) 2011-06-15 2013-12-10 Google Inc. Suggesting training examples
US8935277B2 (en) * 2012-03-30 2015-01-13 Sap Se Context-aware question answering system
US9519647B2 (en) * 2012-04-17 2016-12-13 Sandisk Technologies Llc Data expiry in a non-volatile device
US8429103B1 (en) * 2012-06-22 2013-04-23 Google Inc. Native machine learning service for user adaptation on a mobile platform
US9336494B1 (en) 2012-08-20 2016-05-10 Context Relevant, Inc. Re-training a machine learning model
US8533148B1 (en) 2012-10-01 2013-09-10 Recommind, Inc. Document relevancy analysis within machine learning systems including determining closest cosine distances of training examples
US9218574B2 (en) 2013-05-29 2015-12-22 Purepredictive, Inc. User interface for machine learning
US9286574B2 (en) 2013-11-04 2016-03-15 Google Inc. Systems and methods for layered training in machine-learning architectures
US10318882B2 (en) * 2014-09-11 2019-06-11 Amazon Technologies, Inc. Optimized training of linear machine learning models
WO2016046744A1 (en) * 2014-09-26 2016-03-31 Thomson Reuters Global Resources Pharmacovigilance systems and methods utilizing cascading filters and machine learning models to classify and discern pharmaceutical trends from social media posts
US9412046B2 (en) 2014-10-10 2016-08-09 Facebook, Inc. Training image adjustment preferences
US20160110657A1 (en) * 2014-10-14 2016-04-21 Skytree, Inc. Configurable Machine Learning Method Selection and Parameter Optimization System and Method
US10713594B2 (en) 2015-03-20 2020-07-14 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing machine learning model training and deployment with a rollback mechanism
US9996804B2 (en) 2015-04-10 2018-06-12 Facebook, Inc. Machine learning model tracking platform
US10084743B2 (en) * 2015-04-15 2018-09-25 General Electric Company Methods and systems for adaptive and contextual collaboration in a network
US9626654B2 (en) 2015-06-30 2017-04-18 Linkedin Corporation Learning a ranking model using interactions of a user with a jobs list
US10380500B2 (en) 2015-09-24 2019-08-13 Microsoft Technology Licensing, Llc Version control for asynchronous distributed machine learning
US20170185723A1 (en) * 2015-12-28 2017-06-29 Integer Health Technologies, LLC Machine Learning System for Creating and Utilizing an Assessment Metric Based on Outcomes
US10733532B2 (en) 2016-01-27 2020-08-04 Bonsai AI, Inc. Multiple user interfaces of an artificial intelligence system to accommodate different types of users solving different types of problems with artificial intelligence
US11210583B2 (en) * 2016-07-20 2021-12-28 Apple Inc. Using proxies to enable on-device machine learning

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150046060A1 (en) 2013-08-12 2015-02-12 Mitsubishi Electric Research Laboratories, Inc. Method and System for Adjusting Vehicle Settings
JP2016525983A (ja) 2013-08-12 2016-09-01 三菱電機株式会社 車両内の設定を調整する方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Federated Learning of Deep Networks using Model Averaging", arXiv:1602.05629v1 [cs.LG], 17 Feb 2016.

Also Published As

Publication number Publication date
US11138517B2 (en) 2021-10-05
CN110869949A (zh) 2020-03-06
JP7252286B2 (ja) 2023-04-04
WO2019032157A1 (en) 2019-02-14
KR20210134822A (ko) 2021-11-10
EP3491588A1 (en) 2019-06-05
US20190050749A1 (en) 2019-02-14
US20220004929A1 (en) 2022-01-06
EP3491588B1 (en) 2020-07-01
KR102321924B1 (ko) 2021-11-04
JP2020528588A (ja) 2020-09-24
KR20200010480A (ko) 2020-01-30
EP3739527A1 (en) 2020-11-18
JP2021177428A (ja) 2021-11-11
JP6926240B2 (ja) 2021-08-25
EP3739527B1 (en) 2022-12-21
CN110869949B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
KR102459835B1 (ko) 온-디바이스 기계 학습 플랫폼
KR102320755B1 (ko) 온-디바이스 기계 학습 플랫폼
US11356440B2 (en) Automated IoT device registration
US20230098885A1 (en) On-device Machine Learning Platform to Enable Sharing of Machine Learned Models between Applications
US10776510B2 (en) System for managing personal data
US11983613B2 (en) Incognito mode for personalized machine-learned models
US9846899B1 (en) Dynamic software licensing
US20160065585A1 (en) Temporary authorizations to access a computing system based on user skills
US10757214B2 (en) Crowd sourced online application cache management
WO2021121350A1 (en) System, method, and storage medium for distributed data management

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant