KR20220097330A - 프라이버시 보존 기계 학습 처리 시스템, 장치 및 방법 - Google Patents
프라이버시 보존 기계 학습 처리 시스템, 장치 및 방법 Download PDFInfo
- Publication number
- KR20220097330A KR20220097330A KR1020210192860A KR20210192860A KR20220097330A KR 20220097330 A KR20220097330 A KR 20220097330A KR 1020210192860 A KR1020210192860 A KR 1020210192860A KR 20210192860 A KR20210192860 A KR 20210192860A KR 20220097330 A KR20220097330 A KR 20220097330A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- encrypted data
- client device
- result
- machine learning
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
기계 학습 처리 시스템, 기계 학습 처리 장치 및 기계 학습 처리 방법에 관한 것으로, 기계 학습 처리 장치는 클라이언트 장치가 전송한 암호화된 데이터를 수신하는 통신부 및 상기 암호화된 데이터를 그대로 학습 모델에 입력하여 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하는 프로세서를 포함하고, 상기 학습 모델은, 동형 암호 함수를 기반으로 상기 암호화된 데이터에 대한 학습 처리를 수행하도록 마련된 것일 수 있다.
Description
기계 학습 처리 시스템, 장치 및 방법에 관한 것이다.
클라우드 컴퓨팅이란 사용자의 단말 장치에 전체적인 프로그램을 설치하지 않아도 사용자의 단말 장치가 접속 가능한 클라우드 서버 장치가 해당 프로그램에 대응하는 처리를 수행하고 그 결과를 사용자에게 제공하는 컴퓨팅 기술, 서비스, 소프트웨어, 인프라 또는 플랫폼 등을 의미한다. 이는 사용자의 단말 장치의 성능이나 리소스가 상대적으로 부족하다고 하더라도, 사용자가 원하는 수준의 처리를 언제, 어디서나 처리할 수 있게 되므로, 더욱 더 각광을 받고 있다. 최근에는 서비스로써의 머신러닝(MLaaS: Machine Learning as a Service) 등과 같이 클라우드 서버가 주어진 데이터를 기반으로 기계 학습을 수행하고 그 결과를 사용자에게 제공하는 클라우드 서비스도 점점 늘어나고 있는 추세이다. 그런데, 통상 기계 학습은 훈련을 위해 대량의 데이터를 요구하는데, 이들 데이터 중에는 사용자 개개인과 관련된 개인 정보(사적 정보)도 포함될 수 있다. 특히 사용자 개개인의 요구에 부합하는 최적의 예측 결과를 도출하기 위해서는 이러한 개인 정보의 이용이 필수적일 수밖에 없다. 그러나, 이는 다수인 각각의 개인 정보가 인터넷망을 통해 전달되고 클라우드 서버에 의해 처리됨을 의미하므로, 이들 데이터에 대한 철저한 보안 관리가 특별히 요청되고 있다. 특히, 인간의 유전 정보 데이터를 이용하여 건강을 예측하는 의료 산업이나 금전 데이터를 분석하여 재무 관리 등을 수행하는 금융 산업은, 이러한 개인 정보의 유출에 따른 피해가 더욱 치명적이므로, 데이터 보안의 필요성이 더욱 더 증가하고 있었다.
클라이언트의 개인 정보를 보호하면서도 서버가 클라이언트가 원하는 학습 처리를 수행할 수 있는 기계 학습 처리 시스템, 학습 처리 장치 및 학습 처리 방법을 제공하는 것을 해결하고자 하는 과제로 한다.
상술한 과제를 해결하기 위하여 기계 학습 처리 시스템, 기계 학습 처리 장치 및 기계 학습 처리 방법이 제공된다.
기계 학습 처리 장치는, 기계 학습 처리 장치는 클라이언트 장치가 전송한 암호화된 데이터를 수신하는 통신부 및 상기 암호화된 데이터를 그대로 학습 모델에 입력하여 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하는 프로세서를 포함하고, 상기 학습 모델은, 동형 암호 함수를 기반으로 상기 암호화된 데이터에 대한 학습 처리를 수행하는 것일 수 있다.
상기 프로세서는, 상기 암호화된 데이터를 이용하여 상기 학습 모델을 추가로 더 훈련하고, 상기 추가로 더 훈련된 학습 모델을 기반으로 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하는 것일 수 있다.
상기 통신부는, 상기 결과 데이터를 상기 클라이언트 장치로 전달하여, 상기 클라이언트 장치가 상기 결과 데이터에 대한 복호화를 수행하도록 하는 것일 수 있다.
상기 클라이언트 장치는 상기 암호화된 데이터의 암호화에 사용한 공개 키를 이용하여 상기 복호화를 수행할 수도 있다.
상기 암호화된 데이터는, 상기 클라이언트 장치가 데이터를 비트 단위로 암호화하여 획득된 데이터를 포함하는 것도 가능하다.
기계 학습 처리 방법은, 클라이언트 장치가 데이터에 대한 암호화를 수행하여 암호화된 데이터를 생성하는 단계, 기계 학습 처리 장치가 상기 암호화된 데이터를 수신하는 단계, 상기 암호화된 데이터를 그대로 학습 모델에 입력하여 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하는 단계를 포함할 수 있으며, 상기 학습 모델은, 동형 암호 함수를 기반으로 상기 암호화된 데이터에 대한 학습 처리를 수행하는 것일 수 있다.
기계 학습 처리 방법은, 상기 암호화된 데이터를 이용하여 상기 학습 모델의 훈련이 수행되는 단계를 더 포함할 수 있다.
기계 학습 처리 방법은, 상기 결과 데이터를 상기 클라이언트 장치로 전달하는 단계 및 상기 클라이언트 장치가 상기 결과 데이터에 대한 복호화를 수행하는 단계를 더 포함하는 것도 가능하다.
상기 클라이언트 장치가 상기 결과 데이터에 대한 복호화를 수행하는 단계는, 상기 클라이언트 장치가 상기 데이터에 대한 암호화에 사용한 공개 키를 이용하여 상기 결과 데이터에 대한 복호화를 수행하는 단계를 포함할 수도 있다.
상기 암호화된 데이터는, 상기 클라이언트 장치가 데이터를 비트 단위로 암호화하여 획득된 데이터를 포함할 수도 있다.
기계 학습 처리 시스템은, 데이터의 암호화를 수행하여 암호화된 데이터를 획득하는 클라이언트 장치 및 상기 클라이언트 장치가 전달한 상기 암호화된 데이터를 그래도 이용하여 상기 학습 모델을 훈련시키고, 훈련된 상기 학습 모델에 상기 암호화된 데이터를 그대로 입력하여 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하고, 상기 결과 데이터를 상기 클라이언트 장치로 전달하는 기계 학습 처리 장치를 포함하고, 상기 학습 모델은, 동형 암호 함수를 기반으로 상기 암호화된 데이터에 대한 학습 처리를 수행하고, 상기 클라이언트 장치는 상기 결과 데이터에 대한 복호화를 수행할 수도 있다.
상술한 기계 학습 처리 시스템, 장치 및 방법에 의하면, 클라이언트의 개인 정보를 보호하면서도 서버 장치가 클라이언트가 원하는 학습 처리를 수행할 수 있게 되는 효과를 얻을 수 있다.
상술한 기계 학습 처리 시스템, 장치 및 방법에 의하면, 비트 단위 완전 동형 암호 기술(homomorphic encryption)을 이용하여 클라우드 상의 암호화된 데이터들에 대해서 별도의 복호화 없이 다층 퍼셉트론 신경 네트워크 장치의 학습을 수행하고 이를 기반으로 높은 정확도의 예측 값을 획득할 수 있게 되어 학습 및 예측의 보안성을 향상시킬 수 있는 장점도 얻을 수 있다.
상술한 기계 학습 처리 시스템, 장치 및 방법에 의하면, 인간 유전자 게놈 데이터나 금융 데이터 등과 같이 개인 정보 보호가 극히 요청되는 경우에도, 해당 데이터를 고도의 보안성으로 처리할 수 있게 되는 효과도 얻을 수 있다.
상술한 기계 학습 처리 시스템, 장치 및 방법에 의하면, 암호화된 데이터가 클라이언트에서 서버로 전송되고, 이에 대응하여 실질적으로 암호화된 예측 결과가 서버에서 클라이언트로 전송되므로, 데이터의 처리뿐만 아니라 전송 과정에서의 보안성도 개선할 수 있는 효과도 얻을 수 있다.
상술한 기계 학습 처리 시스템, 장치 및 방법에 의하면, 암호화된 데이터를 기반으로 학습 모델로부터 예측 결과를 획득하면서도 이와 더불어 해당 학습 모델을 암호화된 데이터를 이용하여 훈련시킬 수 있는 장점도 얻을 수 있다.
도 1은 기계 학습 처리 시스템의 일 실시예에 대한 블록도이다.
도 2는 다층 퍼셉트론 신경 네트워크 구조의 일 실시예를 도시한 도면이다.
도 3은 다층 퍼셉트론 신경 네트워크 기반 순방향 처리 및 오차 역전파 알고리즘에 대한 프로그램 코드의 일례를 도시한 도면이다.
도 4는 연산에 이용되는 함수의 일례를 도시한 도표이다.
도 5는 암호화된 실수 데이터를 표기하는 방법의 일례를 도시한 도면이다.
도 6은 대소 비교를 위한 알고리즘의 일례를 도시한 도면이다.
도 7은 대소 비교를 위한 알고리즘의 다른 일례를 도시한 도면이다.
도 8은 덧셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 9는 뺄셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 10은 곱셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 11은 나눗셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 12는 이진지수함수 연산을 위한 알고리즘의 일례를 도시한 도면이다.
도 13은 음의 이진지수함수 연산을 위한 알고리즘의 일례를 도시한 도면이다.
도 14는 시그모이드 함수 알고리즘의 일례를 도시한 도면이다.
도 15는 기계 학습 처리 방법의 일 실시예에 대한 흐름도이다.
도 2는 다층 퍼셉트론 신경 네트워크 구조의 일 실시예를 도시한 도면이다.
도 3은 다층 퍼셉트론 신경 네트워크 기반 순방향 처리 및 오차 역전파 알고리즘에 대한 프로그램 코드의 일례를 도시한 도면이다.
도 4는 연산에 이용되는 함수의 일례를 도시한 도표이다.
도 5는 암호화된 실수 데이터를 표기하는 방법의 일례를 도시한 도면이다.
도 6은 대소 비교를 위한 알고리즘의 일례를 도시한 도면이다.
도 7은 대소 비교를 위한 알고리즘의 다른 일례를 도시한 도면이다.
도 8은 덧셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 9는 뺄셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 10은 곱셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 11은 나눗셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 12는 이진지수함수 연산을 위한 알고리즘의 일례를 도시한 도면이다.
도 13은 음의 이진지수함수 연산을 위한 알고리즘의 일례를 도시한 도면이다.
도 14는 시그모이드 함수 알고리즘의 일례를 도시한 도면이다.
도 15는 기계 학습 처리 방법의 일 실시예에 대한 흐름도이다.
이하 명세서 전체에서 동일 참조 부호는 특별한 사정이 없는 한 동일 구성요소를 지칭한다. 이하에서 사용되는 '부'가 부가된 용어는, 소프트웨어 및/또는 하드웨어로 구현될 수 있으며, 실시예에 따라 하나의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 복수의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 하나의 '부'가 복수의 물리적 또는 논리적 부품들로 구현되는 것도 가능하다. 명세서 전체에서 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 어떤 부분과 다른 부분이 상호 간에 물리적으로 연결되었음을 의미할 수도 있고, 및/또는 전기적으로 연결되었음을 의미할 수도 있다. 또한, 어떤 부분이 다른 부분을 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 부분 이외의 또 다른 부분을 제외하는 것이 아니며, 설계자의 선택에 따라서 또 다른 부분을 더 포함할 수 있음을 의미한다. 제1 내지 제N(N은 1 이상의 자연수) 등의 표현은, 적어도 하나의 부분(들)을 다른 부분(들)으로부터 구분하기 위한 것으로, 특별한 기재가 없는 이상 이들이 순차적임을 반드시 의미하지는 않는다. 또한 단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함할 수 있다.
이하 도 1 내지 도 14를 참조하여 기계 학습 처리 시스템 및 학습 처리 장치의 일 실시예에 대해서 설명하도록 한다.
도 1은 기계 학습 처리 시스템의 일 실시예에 대한 블록도이다.
도 1에 도시된 바를 참조하면, 기계 학습 처리 시스템(1)은, 적어도 하나의 클라이언트 장치(10: 10-1 내지 10-T. T는 1 이상의 자연수)와, 적어도 하나의 클라이언트 장치(10: 10-1 내지 10-T) 각각과 통신 가능하게 연결된 적어도 하나의 학습 처리 장치(10)를 포함할 수 있다. 클라이언트 장치(10: 10-1 내지 10-T) 중 적어도 하나와 학습 처리 장치(10) 간의 통신은, 유선 통신 네트워크, 무선 통신 네트워크 또는 이들의 조합을 기반으로 수행될 수 있다. 여기서, 무선 통신 네트워크는, 원거리 무선 통신 네트워크 및 근거리 무선 통신 네트워크 중 적어도 하나를 이용하여 구현된 것일 수 있다. 원거리 무선 통신 네트워크는, 예를 들어, 3GPP, 3GPP2, 와이브로 또는 와이맥스 계열 등의 이동 통신 표준을 기반으로 구현된 이동 통신 네트워크(롱 텀 이볼루션(LTE: Long Term Evolution)이나 5G 통신 기술 등)를 포함할 수 있고, 근거리 무선 통신 네트워크는, 예를 들어, 와이파이(Wi-Fi), 와이파이 다이렉트(Wi-Fi Direct), 블루투스(Bluetooth), 저전력 블루투스(Bluetooth Low Energy), 지그비(zigbee), 캔(CAN) 통신, 초광대역(UWB: Ultra-WideBand) 통신, 알에프아이디(RFID: Radio-Frequency IDentification) 및/또는 엔에프씨(NFC: Near Field Communication) 등의 통신 기술을 기반으로 구현된 네트워크를 포함할 수 있다.
각각의 클라이언트 장치(10: 10-1 내지 10-T), 예를 들어 제1 클라이언트 장치(10-1)는, 기계 학습 처리 장치(20)로 암호화된 데이터를 기계 학습 처리 장치(20)로 전송하고, 기계 학습 처리 장치(20)로부터 암호화된 데이터에 대응하여 획득된 적어도 하나의 데이터(학습 모델 입력에 따른 결과 데이터나, 학습 모델의 최적화된 파라미터 등)를 수신할 수 있다. 이 경우, 각각의 클라이언트 장치(10: 10-1 내지 10-T)는 각각 독립적으로 또는 의존적으로 각 클라이언트 장치(10: 10-1 내지 10-T)의 암호화된 데이터를 기계 학습 처리 장치(20)로 전송할 수 있으며, 기계 학습 처리 장치(20)로부터 결과 데이터나 최적화된 학습 모델 파라미터 등을 획득하게 된다. 여기서, 암호화된 데이터는, 민감한 데이터를 소정의 암호화 방식을 기반으로 암호화하여 획득된 것일 수 있다. 민감한 데이터는, 일례로 제1 클라이언트 장치(10-1)의 사용자 또는 기타 다른 자(이하 사용자 등이라 칭함)의 개인 정보(예를 들어, 성명, 식별 정보, 주소, 여권 번호, 계좌 번호, 얼굴 외형, 지문 또는 비밀 번호 등)를 포함할 수 있다. 민감한 데이터는, 제1 클라이언트 장치(10-1)에 기 저장된 것일 수도 있고, 제1 클라이언트 장치(10-1)가 다른 장치(미도시)로부터 전달받은 것일 수도 있으며, 및/또는 사용자 등이 제1 클라이언트 장치(10-1)에 마련된 입력부(미도시, 일례로, 키보드, 마우스 장치, 터치스크린, 터치 패드, 마이크로폰, 초음파 센서 또는 동작 감시 센서 등)을 이용하여 제1 클라이언트 장치(10-1)에 직접 입력한 것일 수도 있다. 한편, 결과 데이터는 기계 학습 처리 장치(20)가 암호화된 데이터를 이용하여 획득된 것일 수 있으며, 예를 들어 학습 처리에 따라 획득된 암호화된 데이터에 대응하는 예측 값을 포함할 수 있다. 결과 데이터는, 기계 학습 처리 장치(20)가 암호화된 데이터의 복호화 없이 암호화된 데이터를 그대로 처리하여 획득된 것이기 때문에 실질적으로 암호화된 것과 마찬가지다. 따라서, 기계 학습 처리 장치(20)의 결과 데이터도 암호화되어 제1 클라이언트 장치(10-1)로 전달되며, 이에 따라 통신 시에도 민감한 데이터에 대한 보호가 이뤄질 수 있게 된다.
일 실시예에 있어서, 제1 클라이언트 장치(10-1)는, 통신부(11) 및 프로세서(12)를 포함할 수 있다. 이외에도 제1 클라이언트 장치(10-1)는, 필요에 따라서, 입력부, 출력부 또는 저장부 등을 더 포함하는 것도 가능하다.
통신부(11)는 기계 학습 처리 장치(20)의 통신 부(21)와 유무선 통신 네트워크를 통해 통신을 수행하며, 암호화된 데이터를 프로세서(12) 또는 별도로 마련된 저장부(미도시, 주기억장치나 보조기억장치 등)로부터 전달 받고, 암호화된 데이터를 기계 학습 처리 장치(20)로 송신하거나, 및/또는 기계 학습 처리 장치(20)로부터 암호화된 데이터에 대응하는 암호화된 결과 데이터를 수신하고, 수신한 암호화된 결과 데이터를 프로세서(12)로 전달할 수 있다. 통신부(11)는 실시예에 따라서 랜 카드나 무선 통신 모듈(통신 칩 등)을 포함할 수 있다.
프로세서(12)는, 제1 클라이언트 장치(10-1)의 동작과 관련된 적어도 하나의 연산, 제어 또는 판단 등의 동작을 수행할 수 있다. 프로세서(12)는, 예를 들어, 중앙 처리 장치(CPU: Central Processing Unit), 그래픽 처리 장치(GPU: Graphic Processing Unit), 마이크로 컨트롤러 유닛(MCU: Micro Controller Unit), 애플리케이션 프로세서(AP: Application Processor), 전자 제어 유닛(ECU: Electronic Controlling Unit), 기본보드 관리 컨트롤러(BMC: Baseboard Management Controller), 마이컴(Micom: Micro Processor) 및/또는 이외 각종 연산 및 제어 처리를 수행할 수 있는 적어도 하나의 전자 장치 등을 포함할 수 있다. 일 실시예에 있어서, 프로세서(12)는 암호화 처리부(13)를 포함할 수 있다. 암호화 처리부(13)는, 논리적 또는 물리적으로 구현된 것일 수 있다. 암호화 처리부(13)는 적어도 하나의 데이터(일례로 개인 정보 등의 민감한 데이터)를 획득하고, 적어도 하나의 데이터에 대한 암호화를 수행하여 적어도 하나의 데이터에 대응하는 적어도 하나의 암호화된 데이터를 획득하고, 획득한 적어도 하나의 암호화된 데이터를 통신부(11)로 전달하여 기계 학습 처리 장치(20)가 적어도 하나의 암호화된 데이터를 동시에 또는 순차적으로 획득하도록 할 수 있다. 여기서, 암호화는 공개 키 방식 또는 비밀 키 방식을 이용하여 수행될 수 있다. 또한, 암호화 처리부(13)는 데이터를 비트 단위로 암호화할 수도 있다. 예를 들어, 암호화 처리부(13)는 데이터를 다수의 비트로 나누고, 각각의 비트를 암호화함으로써, 데이터에 대한 암호화를 처리할 수도 있다. 한편, 통신부(11)가 기계 학습 처리 장치(20)로부터 수신한 데이터(송신한 암호화된 데이터에 대응하는 데이터)도, 기계 학습 처리 장치(20)로 전송한 암호화된 데이터처럼 암호화되어 있을 수도 있다. 이 경우, 암호화 처리부(13)는 기계 학습 처리 장치(20)로부터 수신한 결과 데이터에 대한 복호화를 수행하여 암호화된 결과 데이터에 대응하는 복호화된 데이터를 획득할 수도 있다. 이 경우, 복호화는 공개 키 방식 또는 비밀 키 방식을 이용하여 수행될 수 있으며, 암호화의 경우와 동일한 키를 이용하거나 또는 상이한 키를 이용하여 수행될 수도 있다. 프로세서(12)는, 저장부에 저장된 소정의 프로그램(앱, 애플리케이션 또는 소프트웨어로 지칭 가능함)을 실행시켜 상술한 암호화 및/또는 복호화 동작을 수행할 수 있다. 여기서, 소정의 프로그램은, 사용자가 직접 작성 또는 수정한 것일 수도 있고, 제1 클라이언트 장치(10-1)에 연결 가능한 외장 메모리 장치 등을 통해 하여 제1 클라이언트 장치(10-1)에 입력 및 설치된 것일 수도 있으며, 및/또는 제1 클라이언트 장치(10-1)가 접속 가능한 전자 소프트웨어 유통망 등으로부터 수신 또는 갱신된 것일 수도 있다.
다른 클라이언트 장치, 일례로 제2 클라이언트 장치 내지 제T 클라이언트 장치(10-2 내지 10-T)도, 제1 클라이언트 장치(10-1)와 동일하게 통신부(미도시)나 프로세서(미도시)를 포함할 수 있고, 이들은 제1 클라이언트 장치(10-1)의 통신부(11)나 프로세서(12)와 동일하게 또는 일부 변형되어 동작할 수 있다. 실시예에 따라, 다른 클라이언트 장치(10-2 내지 10-T)의 전부 또는 일부는 제1 클라이언트 장치(10-1)와 상이한 부품을 갖는 것도 가능하다.
상술한 제1 내지 제T 클라이언트 장치(10-1 내지 10-T)는 모두 동종의 장치일 수도 있고, 일부는 동일하고 다른 일부는 상이한 장치일 수도 있으며, 모두 상이한 장치일 수도 있다. 예를 들어, 제1 클라이언트 장치(10-1)는 스마트폰이고, 제2 클라이언트 장치(10-2)는 데스크톱 컴퓨터일 수도 있다.
기계 학습 처리 장치(20)는 제1 클라이언트 장치 내지 제T 클라이언트 장치(10-1 내지 10-T) 중 적어도 하나로부터, 해당 클라이언트 장치(10-1 내지 10-T)가 전송한 암호화된 데이터를 수신하고, 암호화된 데이터를 이용하여 학습 모델을 훈련시키거나 및/또는 암호화된 데이터를 학습 모델에 입력하여 암호화된 데이터에 대응하는 결과 데이터를 획득할 수 있다.
일 실시예에 기계 학습 처리 장치(20)는, 도 1에 도시된 바와 같이 통신부(21), 저장부(23) 및 프로세서(100)를 포함할 수 있다. 이외에도 기계 학습 처리 장치(20)는 필요에 따라 입력부나 출력부 등을 더 포함할 수도 있다.
통신부(21)는 제1 클라이언트 장치(10-1)와 유무선 통신 네트워크를 통하여 통신을 수행하여, 제1 클라이언트 장치(10-1)로부터 암호화된 데이터를 전달 받거나, 프로세서(100) 등의 처리 결과(일례로 결과 데이터)를 제1 클라이언트 장치(10-1)로 전달할 수 있다.
저장부(23)는 프로세서(100)의 처리 과정에서 생성되거나 처리 결과에 따라 생성된 데이터(일례로 결과 데이터)를 일시적 또는 비일시적으로 저장하거나 및/또는 프로세서(100)에 의해 구동될 프로그램이나 훈련 또는 예측에 이용될 적어도 하나의 학습 모델을 저장할 수 있다. 여기서, 적어도 하나의 학습 모델은, 예를 들어, 다층 퍼셉트론(Multi-layer Perceptron) 네트워크, 심층 신경 네트워크(DNN: Deep Neural Network), 콘볼루션 신경 네트워크(CNN: Convolutional Neural Network), 순환 신경 네트워크(RNN: Recurrent Neural Network), 콘볼루션 순환 신경 네트워크(CRNN: Convolutional Recurrent Neural Network), 심층 신뢰 신경 네트워크(DBN: Deep Belief Network), 심층 Q-네트워크(Deep Q-Networks), 장단기 메모리(LSTM: Long short term memory), 서포트 벡터 머신(SVM: support vector machine), 생성적 적대 신경 네트워크(GAN: Generative Adversarial Network) 및/또는 조건적 생성적 적대 신경 네트워크(cGAN: Conditional GAN) 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 학습 모델은 훈련을 통해 학습을 수행하고 학습 결과를 기반으로 데이터 처리를 수행할 수 있도록 설계자가 고려 가능한 적어도 하나의 알고리즘이나, 알고리즘을 이용 또는 포함하여 작성된 적어도 하나의 프로그램 코드나, 또는 이(들)의 전부 또는 일부를 기반으로 하거나 또는 이들을 전체적으로 또는 부분적으로 조합하여 구현된 적어도 하나의 애플리케이션이나 프로그램 패키지를 포함할 수도 있다. 저장부(23)는 실시예에 따라서 주기억장치 및 보조기억장치 중 적어도 하나를 포함할 수 있으며, 이들은 반도체나, 자기 디스크, 자기 테이프 또는 플라스틱 원판 등을 이용하여 구현될 수 있다.
프로세서(100)는, 기계 학습 처리 장치(20)의 동작에 필요한 연산이나 제어 등의 처리를 수행할 수 있다. 프로세서(100)는, 상술한 바와 같이 중앙 처리 장치, 그래픽 처리 장치, 마이크로 컨트롤러 유닛, 애플리케이션 프로세서, 전자 제어 유닛, 기본보드 관리 컨트롤러 또는 마이컴 등을 이용하여 구현 가능하다.
일 실시예에 의하면, 프로세서(100)는 학습 처리부(110)를 포함할 수 있다. 학습 처리부(110)는 통신부(21)로부터 전달된 암호화된 데이터를 가공하거나 가공하지 않고, 적어도 하나의 학습 모델에 입력하여 암호화된 데이터에 대응하는 결과 데이터를 획득하거나, 및/또는 훈련된 또는 훈련되지 않은 학습 모델을 암호화된 데이터를 이용하여 훈련하고, 암호화된 데이터를 더 이용하여 훈련된 학습 모델을 저장부(23)에 저장할 수 있다. 하나의 클라이언트 장치, 일례로 제1 클라이언트 장치(10-1)로부터 다수의 암호화된 데이터가 동시에 또는 이시에 전달되거나 또는 복수의 클라언트 장치(10-1 내지 10-T)가 동시에 또는 이시에 각각 적어도 하나의 데이터를 전송한 경우, 학습 처리부(110)는 이들 데이터를 동시에 또는 순차적으로 학습 모델에 입력하거나 또는 이들을 동시에 또는 순차적으로 이용하여 학습 모델을 훈련시킬 수도 있다. 학습 처리부(110)는, 예를 들어, 순방향 처리부(130) 및 오차 역전파 처리부(140)를 포함할 수 있다.
도 2는 다층 퍼셉트론 신경 네트워크 구조의 일 실시예를 도시한 도면이다.
순방향 처리부(130)는 제1 내지 제T 클라이언트 장치(10-1 내지 10-T) 중 적어도 하나로부터 전달된 암호화된 데이터를 학습 모델에 입력하여, 순방향으로 처리를 수행하여 최종적으로 출력 값(결과 데이터)를 획득할 수 있다. 여기서, 학습 모델은, 기존에 훈련된 학습 모델일 수도 있고, 또는 오차 역전파 처리부(140)의 동작에 따라 제1 내지 제T 클라이언트 장치(10-1 내지 10-T) 중 적어도 하나로부터 전달된 암호화된 데이터를 이용하여 더 훈련된 학습 모델일 수도 있다.
예를 들어, 도 2에 도시된 바와 같이, 학습 모델이 다층 퍼셉트론 네트워크(120)인 경우, 순방향 처리부(130)는, 암호화된 데이터(a^1_0, a^1_1)를 다층 퍼셉트론(120)의 입력층(121-1)에 입력하고, 입력된 암호화된 데이터(a^1_0, a^1_1)를 다수의 은닉층(121-(L-2), 121-(L-1))에 순차적으로 전파시킨 후, 최종적으로 출력층(121-L)에서 결과 데이터(a^L_0, a^L_1)를 획득할 수 있다. 보다 구체적으로 다층 퍼셉트론 네트워크(120)는, 총 L개의 층(L은 1 이상의 자연수)를 포함할 수 있으며, 구체적으로는 입력층(121-1)과, 다수의 은닉층(121-(L-2), 121-(L-1))과, 출력층(121-L)을 포함할 수 있다. 각 층마다 적어도 하나의 뉴런(a^k_i, 여기서, k는 1 이상 L 이하의 자연수. i=1, 2, 3, 4, …)가 존재하며, 서로 상이한 층의 뉴런(일례로 a^k_j 및 a^(k+1)_i, j=1, 2, 3, 4, …)은 상호 간에 연결되어 있다. 이전 층(121-k)의 뉴런(a^k_j)의 출력 값은 다음 층(121-(k+1))의 뉴런(a^(k+1)_i)으로 전달되고, 다음 층(121-(k+1))의 뉴런(a^(k+1)_i)의 입력 값으로 이용된다. 각각의 층(121-(k+1))의 각각의 뉴런(a^(k+1)_i)은 해당 뉴런(a^(k+1)_i)에 연결되어 있는 이전 층(121-k)의 모든 뉴런(a^k_j)의 선형 합을 연산하여 그 결과 값(z^(k+1)_i)을 획득한다. 이는 하기의 수학식 1과 같이 표현될 수 있다.
[수학식 1]
수학식 1에서 ω^(k+1)_j,i는 이전의 층(121-k)의 뉴런(a^k_j)과 다음 층(121-(k+1))의 뉴런(a^(k+1)_i)을 연결하는 가중치 파라미터이고, b^(k+1)는 다음 층(121-(k+1))의 뉴런(a^(k+1)_i)에 대한 바이어스 파라미터이다. 여기서, 이용되는 가중치 파라미터(ω^(k+1)_j,i) 및 바이어스 파라미터(b^(k+1)) 중 적어도 하나는 암호화된 것일 수도 있다. 또한, 원래 입력된 데이터(a^1_0, a^1_1)가 암호화된 상태이므로, 각 뉴런(a^k_j, a^(k+1)_i)의 값도 암호화된 상태로 존재한다. 암호화된 뉴런(a^k_j, a^(k+1)_i)의 각각의 값과, 암호화된 가중치 파라미터(ω^(k+1)_j,i) 사이의 곱셈과, 암호화된 바이어스 파라미터(b^(k+1))의 덧셈 등의 연산은 암호화된 데이터를 처리하기 위해 별도로 고안된 연산 방법을 이용하여 수행될 수 있다. 별도로 고안된 연산 방법에 대한 구체적인 설명은 후술하도록 한다.
연산되어 획득된 결과 값(z^(k+1)_i)은, 활성화 함수를 통과하고, 그 결과 그 다음 층(121-(k+2))의 적어도 하나의 뉴런(a^(k+1)_i)에 대한 새로운 입력 값이 획득된다. 새로운 입력 값은 다음 층(121-(k+2))의 적어도 하나의 뉴런(a^(k+1)_i)으로 전달된다. 여기서, 활성화 함수는 시그모이드 함수, 렐루 함수, 계단 함수 또는 하이퍼볼릭 탄젠트 함수 등을 포함할 수 있다. 실시예에 따라서, 이용되는 활성화 함수는 후술하는 바와 같이 암호화된 데이터의 연산을 위해 특별히 정의된 동형 암호 기술 기반의 연산 함수(즉, 동형 암호 함수, 합산 함수, 곱셈 함수, 나누기 함수 및/또는 지수 함수 등)을 이용하여 구현된 것일 수도 있다. 이에 대해선 후술한다.
상술한 이전 층(121-k)의 뉴런(a^k_j)의 연산 및 출력 값의 다음 층(121-(k+1))의 뉴런(a^(k+1)_i)으로의 전달은 출력층(121-L)에 도달될 때까지 반복되며, 최종적으로는 적어도 하나의 암호화된 결과 값(a^L_0, a^L_1, …)이 환산된다. 암호화된 결과 값(a^L_0, a^L_1, …)은 0과 1 사이의 값을 가질 수 있다.
오차 역전파 처리부(140)는, 역전파 과정(backprogpagtion)을 통해 상술한 가중치 파라미터(ω^(k+1)_j,i) 및 바이어스 파라미터(b^(k+1))를 갱신하여 각각에 대한 최적의 값을 찾도록 마련된 것일 수 있다. 이 경우, 가중치 파라미터(ω^(k+1)_j,i) 및 바이어스 파라미터(b^(k+1))의 갱신 및 최적화는, 출력 층(121-L)의 값 및 주어진 기준 값(일례로 지도 학습에서의 레이블 값)을 이용하여 오차를 연산하고, 이를 소정의 최적화 알고리즘(예를 들어, 경사 하강법(Gradient Descent), 확률적 경사 하강법(Stochastic Gradient Descent), 모멘텀 기법, 적응적 경사법(AdaGrad: Adaptive Gradient) 또는 적응적 모멘텀 추정(Adam: Adaptive Momentum Estimation))에 적용하여 수행될 수도 있다. 상술한 가중치 파라미터(ω^(k+1)_j,i) 및 바이어스 파라미터(b^(k+1)) 중 적어도 하나는 암호화된 것일 수 있다.
일 실시예에 의하면, 오차 역전파 처리부(140)는 각각의 가중치 파라미터(ω^(k+1)_j,i) 및 바이어스 파라미터(b^(k+1))에 대해 편미분을 수행하고, 이를 기반으로 각각의 가중치 파라미터(ω^(k+1)_j,i) 및 바이어스 파라미터(b^(k+1))를 보정하여 최적의 파라미터를 각각 획득할 수 있다. 보다 구체적으로 예를 들어, 오차 역전파 처리부(140)는 출력층(121-L)의 j번째 데이터(d_j)에 대한 오차(C_j) 및 가중치 파라미터(ω^(k+1)_j,i) 간의 손실 함수의 기울기를 하기의 수학식 2를 통해 연산하고, 오차(C_j) 및 바이어스 파라미터(b^(k+1)) 간의 손실 함수의 기울기를 하기의 수학식 3를 통해 연산하여, 최적의 가중치 파라미터 및 바이어스 파라미터를 연산할 수 있다.
[수학식 2]
[수학식 3]
수학식 2 및 3에서 ξ^k_j는 오차(C_p)에 대한 뉴런 값(a^k_j)의 편미분 값이다. 한편, 적어도 하나의 층(121-(k-1))의 뉴런(a^(k-1)_i)의 편미분 결과는 하기의 수학식 4와 같이 주어진다.
[수학식 4]
또한, 오차(C_p)는, 실시예에 따라서, 하기의 수학식 5와 같이 벡터 거리를 기반으로 정의된 것일 수도 있다.
[수학식 5]
이와 같이 획득된 값을 이용하여 오차 역전파 처리부(140)는 해당 학습 모델, 일례로 다층 퍼셉트론의 모든 파라미터, 즉 가중치 파라미터(ω^(k+1)_j,i) 및 바이어스 파라미터(b^(k+1))를 갱신하고, 이에 따라 적어도 하나의 클라이언트 장치(10: 10-1 내지 10-T)에서 전달된 암호화된 데이터를 더 이용하여 훈련된 학습 모델이 획득될 수 있게 된다.
이에 따라 학습 처리부(110)는 기존의 학습 모델을 기반으로 또는 적어도 하나의 클라이언트 장치(10: 10-1 내지 10-T)로부터 전달된 새로운 암호화된 데이터를 더 이용하여 추가적으로 훈련된 학습 모델을 기반으로, 새로운 암호화된 데이터에 대응하는 결과 데이터(예측 값)을 획득할 수 있게 된다.
도 3은 다층 퍼셉트론 신경 네트워크 기반 순방향 처리 및 역전파 알고리즘에 대한 프로그램 코드의 일례를 도시한 도면이다.
상술한 과정은 도 3에 도시된 바와 같이 프로그램 코드로 표현될 수 있다. 이러한 프로그램 코드는, 저장부(23)에 저장될 수 있으며, 프로세서(100)에 의해 호출되어 실행될 수 있다. 일 실시예에 따르면, 프로그램 코드는 다층 퍼셉트론 신경 네트워크(120)를 이용하여 구축된 것일 수 있으나, 이에 한정되는 것은 아니다. 도 3에 도시된 바를 참조하면, 먼저 가중치 파라미터(W^(k))와 바이어스 파라미터(b^(k))가 각각 초기화될 수 있다(제1 라인). 여기서, k는 다층 퍼셉트론 신경 네트워크(120)의 어느 하나의 층을 나타내며, 전체 층의 개수(L) 이하의 값을 갖는다. 또한, 가중치 파라미터(W^(k))와 바이어스 파라미터(b^(k))는 암호화된 것일 수 있다.
훈련을 위해 주어진 데이터 셋(D_train) 내의 데이터(들)(d_1 내지 d_N_train. 여기서, N_train은 데이터 셋(D_train) 내의 전체 데이터 개수)가 임의적으로 섞이고(제4 라인), 해당 데이터 셋(D_train)에 속하는 어느 하나의 데이터(d_j), 일례로 제1 데이터(d_1)가 제1 층(121-1, 입력 층)의 적어도 하나의 뉴런(a^1)에 입력된다(제5 및 6 라인). 여기서, 데이터 셋(D_train)에 속하는 데이터(d_j)의 전부 또는 일부는 암호화된 것일 수 있다.
이어서 대응하는 가중치 파라미터(W^(k))가 이전 단계의 층(a^(k-1), k는 2 이상의 자연수)의 값에 곱해지고, 곱한 결과에 바이어스 파라미터(b^(k))가 더해져, 해당 층(121-k)에 대한 결과 값(z^(k))이 획득되고, 획득된 결과 값(z^(k))은 소정의 활성화 함수, 일례로 시그모이드 함수(σ)에 입력되어 다음 층(121-(k+1))의 뉴런(a^(k))에 대한 새로운 입력 값이 결정된다(제8 및 9 라인). 이는 제2 층 내지 제L 층(출력층)(121-2 내지 121-L)까지 반복해서 수행될 수 있다(제7 및 10라인).
다층 퍼셉트론 신경 네트워크(120) 내의 모든 층(120-1 내지 120-L)을 거쳐 데이터가 전달되고, 최종적으로 출력 값(즉, 출력 층(121-L)의 뉴런(a^(L))의 값)이 획득되면, 순차적으로 출력 값과 주어진 기준 값(y_j, 일례로 지도 학습에서의 레이블 값) 사이의 오차(C_j)가 연산된다(제11 라인). 오차(C_j)의 연산은, 수학식 5에 도시된 바와 같이 벡터 거리를 이용하여 수행되는 것도 가능하다.
이어서, 연산된 오차(C_j)에 대한 가중치 파라미터(W^(k))의 편미분 결과 및 연산된 오차(C_j)에 대한 바이어스 파라미터(b^(k))의 편미분 결과가 획득되고 저장된다(제12 라인).
상술한 데이터의 혼합 과정에서부터 각 파라미터(W^(k), b^(k))의 편미분 결과의 획득 과정(제4 라인 내지 제12라인)은, 훈련 대상이 되는 모든 데이터(d_1 내지 d_N_train)가 이용될 때까지 계속해서 반복 수행될 수 있다(제3 및 제13 라인).
모든 데이터(d_1 내지 d_N_train)를 이용한 훈련이 완료되면, 전체적인 오차(C^(i))가 연산된다(제14 라인). 전체적인 오차(C^(i))의 연산은 각각의 오차(C_j: C_1 내지 C_N_train)에 대한 평균으로 정의될 수 있다. 또한, 전체적인 오차(C^(i))에 대한 변화율(∇C, 기울기)도 연산될 수 있으며, 이는, 예를 들어, 연산된 오차(C_j)에 대한 가중치 파라미터(W^(k))의 편미분 결과 및 연산된 오차(C_j)에 대한 바이어스 파라미터(b^(k))의 편미분 결과에 대한 평균을 기반으로 연산될 수 있다(제15 라인).
전체적인 오차(C^(i))에 대한 변화율(∇C)을 이용하여 가중치 파라미터(W^(k))와 바이어스 파라미터(b^(k))가 각각 갱신된다(제16 라인). 이 경우, 이들 파라미터(W^(k), b^(k))의 갱신은, 전체적인 오차(C^(i))에 대한 변화율(∇C)에 소정의 학습률(α)을 곱하여 수행될 수도 있다.
상술한 과정(제4 내지 제16 라인)은, 이전 반복 과정에서 연산된 전체적인 오차(C^(i))와 다음 반복 과정에서 전체적인 오차(C^(i+1)) 간의 차이가 미리 정의된 값(ε)보다 작을 때까지 반복 수행될 수 있다(제2, 제3, 제17, 제18 라인).
실시예에 따라서, 최종적으로 갱신된 가중치 파라미터(W^(k))와 바이어스 파라미터(b^(k))의 값은 학습 모델에 반영되어 학습 모델을 갱신하며, 필요에 따라 별도로 저장될 수도 있다(제19 라인).
이하 도 4 내지 14를 참조하여, 상술한 학습 모델의 훈련 및 결과 값 획득 과정에서 이용되는 연산에 대해 각각 설명하도록 한다.
도 4는 연산에 이용되는 함수의 일례를 도시한 도표이다.
상술한 학습 모델의 훈련 및 결과 획득 과정에서 이용되는 연산(예를 들어, 가중치(W)의 곱이나 바이어스(b)의 합 등)은, 도 4에 도시된 바와 같이 대응하는 함수를 하나 이상 이용함으로써 처리될 수 있다. 여기서, 함수는, 동형 암호 연산을 위해 이용되는 동형 암호 함수를 포함할 수 있다. 동형 암호 함수는, 예를 들어, 입력 값에 대해 2의 보수를 취한 값을 획득하기 위한 2의 보수 함수(HE.TwosComplement), 소정의 암호문(즉, 입력 값)에 대한 절대값을 연산하기 위한 절대 값 함수(HE.AbsoluteValue), 입력 값에 대해 우측 또는 좌측으로 소정의 거리만큼의 이동 연산을 위한 이동 함수(일례로 우측 이동 연산(HE.RightShift) 및 좌측 이동 연산(HE.LeftShift) 중 적어도 하나), 대소 비교를 위한 비교 함수(일례로 먼저 입력된 값이 큰 경우에 소정의 값을 반환하는 함수(HE.CompareLarge) 및 먼저 입력된 값이 작은 경우에 소정의 값을 반환하는 함수(HE.CompareSmall) 중 적어도 하나), 사칙 연산에 관한 사측 연산 함수(일례로 덧셈 함수(HE.Add), 뺄셈 함수(HE.Subtract), 곱셈 함수(HE.Multiply) 및 나눗셈 함수(HE.Divide) 중 적어도 하나) 및 입력된 값을 x값으로 하는 비선형함수(일례로 지수 함수(HE.Exponential)) 중 적어도 하나를 포함할 수 있다.
도 5는 암호화된 실수 데이터를 표기하는 방법의 일례를 도시한 도면이다.
암호화된 데이터가 실수를 포함하는 경우(즉, 입력 데이터가 암호화된 실수 데이터인 경우), 도 5에 도시된 바와 같이 비트 단위의 스키마를 사용함으로써 실수의 유효 숫자 범위를 유동적으로 결정할 수 있다. 구체적으로 하나의 저장 공간(30)은 다수의 비트(bit)로 형성될 수 있고, 이 경우, 맨 좌측의 비트(0)는 최하위 비트로, 맨 우측의 비트는 최상위 비트(l-1)로 정해진다. 이 경우, 전체 비트의 개수(l)의 절반에 2를 차감한 값에 대응하는 위치의 비트(l/2-2)까지는 실수 데이터의 소수 부분이 할당되고(총 길이는 l/2-1), 최상위 비트(l-1)의 절반에 1을 차감한 값에 대응하는 위치의 비트(l/2-1)부터 최상위 비트(l-1)의 바로 좌측에 위치한 비트(l-2)까지는 실수 데이터의 정수 부분이 할당된다(총 길이는 l/2). 최상위 비트(l-1)에는 부호가 할당된다. 이에 따라 실수를 원하는 소수점까지 표현할 수 있게 된다. 종래에는 처리가 정수 기반으로 수행되는 경우에 있어서 입력된 데이터가 실수이면, 실수 값에 특정한 값을 곱하여 정수 값으로 변환한 후 알고리즘 처리를 수행하였었다. 그러나, 이러한 방법은 연산 결과에 상당한 오차가 발생할 가능성이 높았다. 그렇지만, 상술한 바와 같이 실수 데이터를 유동적이 유효 숫자 범위를 기반으로 처리하면, 이러한 오차를 제거하거나 최소화할 수 있게 된다.
도 6은 대소 비교를 위한 알고리즘의 일례를 도시한 도면으로, 구체적으로 암호문 ^a와 ^b를 비교하고, 만약 ^a가 ^b보다 크면 Enc(1)를 반환하고, 반대로 ^a가 ^b보다 작으면 Enc(0)를 반환하는 알고리즘이다. 여기서, Enc()는 암호화 함수로 Enc(0)은 비트 값 0을 암호화한 값이고, Enc(1)는 비트 값 1을 암호화한 값이다. ^a 및 ^b는 벡터이고, l은 배열의 길이를 의미한다. 또한, ^a[i] 및 ^b[i]는 각각 해당 인덱스(i)에 대한 ^a의 값 및 ^b의 값이며, i는 0 내지 l 사이의 값을 갖는다.
구체적으로 도 6에 의하면, 0을 암호화한 값(Enc(0))이 변수 t_1에 입력되고(제1 라인), 적어도 하나의 인덱스 i에 대한 ^a[i] 및 ^b[i]의 배타적 부정논리합(XNOR) 연산 결과가 변수 t_2에 입력된다(제3 라인). ^a[i] 및 ^b[i]의 배타적 부정논리합(XNOR) 연산 이후 잡음 제거를 위해 부트스트래핑(bootstrapping, boots.XNOR)이 더 수행될 수도 있다. 이어서, 변수 t_1, t_2 및 ^a[i] 값은 먹스(MUX) 게이트에 입력되고 입력 결과는 변수 t_1에 기록된다(제4 라인). 먹스 연산은 변수 t_2의 값에 따라서, 변수 t_1 또는 ^a[i]를 출력하도록 마련된 것으로, 변수 t_2가 Enc(0)이면, 변수 t_1의 값을 출력하고, 그렇지 않으면, ^a[i]를 출력하도록 정의된 것일 수 있다. 먹스 연산 이후에 부트스트래핑이 추가로 더 수행될 수도 있다(boots.MUX). 상술한 과정(제3 및 제4 라인)은, 모든 인덱스(0 내지 l-1)에 대해 반복 수행된다(제2 및 제5 라인). 이 과정에서 연산된 변수 t_1은 반환되고, 이에 따라 ^a가 ^b보다 크면 Enc(1)를 반환하고, 반대로 ^a가 ^b보다 작으면 Enc(0)를 반환하게 된다(제6 라인).
도 7은 대소 비교를 위한 알고리즘의 다른 일례를 도시한 도면이다. 구체적으로 암호문 ^a와 ^b를 비교하고, 만약 ^a가 ^b보다 작으면 Enc(1)를 반환하고, 반대로 ^a가 ^b보다 크면 Enc(0)를 반환하는 알고리즘이다. 여기서, Enc(), ^a, ^b, l, ^a[i] 및 ^b[i]은 기 정의한 바와 동일하다.
도 7에 도시된 바와 같이 구체적으로 암호화된 값(Enc(0))이 변수 t_1에 입력되고(제1 라인), 적어도 하나의 인덱스 i에 대한 ^a[i] 및 ^b[i]의 배타적 부정논리합(XNOR) 연산 결과가 변수 t_2에 입력되고(제3 라인), 변수 t_1, t_2 및 ^b[i] 값은 먹스(MUX) 게이트에 입력되고 입력 결과는 변수 t_1에 기록된다(제4 라인). 배타적 부정논리합(XNOR) 및 먹스(MUX) 중 적어도 하나의 연산 이후에 부트스트래핑이 추가로 더 수행될 수도 있다. 상술한 과정(제3 및 제4 라인)은, 모든 인덱스(0 내지 l-1)에 대해 반복 수행될 수 있다(제2 및 제5 라인). 해당 과정의 처리 결과에 따라 변수 t_1가 출력되며, 변수 t_1는 ^a가 ^b보다 작으면 Enc(1)를 반환하고, 반대로 ^a가 ^b보다 크면 Enc(0)를 반환한다(제6 라인).
도 8은 덧셈을 위한 알고리즘의 일례를 도시한 도면이다. 도 8은 ^a와 ^b의 합산을 수행하기 위한 알고리즘으로, ^c[i] 및 ^r[i]는 각각 해당 인덱스(i)에 대한 ^c의 값 및 ^r의 값을 의미한다.
도 8에 도시된 바와 같이, 먼저 0 비트를 암호화된 값(Enc(0))이 ^c[0]에 입력되어 ^c[0]가 초기화된다(제1 라인). 적어도 하나의 인덱스 i(i는 0, 1, 2, …, l-2)에 대하여 ^a[i] 및 ^b[i]의 배타적 논리합(XOR) 연산 결과가 변수 t_1에 입력되고(제3 라인), 변수 t_1 및 ^b[i] 값 간의 논리곱(AND) 연산 결과가 t_2에 입력된다(제4 라인). 또한, 변수 t_1 및 ^c[i]의 배타적 논리합(XOR) 연산 결과가 변수 ^r[i]에 입력되고(제5 라인), 변수 t_1 및 ^c[i]에 대한 논리곱(AND) 연산 결과가 변수 t_3에 입력된다(제6 라인). 이어서, 변수 t_3 및 t_2 간의 논리합(OR) 연산 결과가 다음 인덱스(i+1)의 변수 ^c[i+1]에 입력된다(제7 라인). 상술한 과정(제3 내지 제7 라인)은 모든 인덱스에 대해 반복 수행된다(제2 및 제8 라인). 반복 수행이 종료되면, ^a[l-1] 및 ^b[l-1]의 배타적 논리합(XOR) 연산 결과가 변수 t_1에 입력되고(제9 라인), ^r[l-1]에 변수 t_1 및 변수 ^c[l-1]에 대한 배타적 논리합(XOR)의 연산 결과가 입력된다. 상술한 과정에 따라 변수 ^r의 값을 반환하면, 암호화된 데이터에 대한 복호화 없이 암호화된 데이터 간에 덧셈을 수행할 수 있게 된다. 상술한 배타적 논리합(XOR), 논리곱(AND) 및 논리합(OR)의 연산 이후에는, 실시예에 따라서 잡음 제거를 위한 부트스트래핑이 추가 수행될 수도 있다.
도 9는 뺄셈을 위한 알고리즘의 일례를 도시한 도면으로, ^a에서 ^b를 차감하기 위한 방법을 나타낸 것이다.
데이터에 대한 복호화 없이 암호화된 데이터 간의 뺄셈(^a-^b)은, 데이터에 대한 복호화 없이 암호화된 데이터 간의 덧셈(^a+^b)에서, 변수 ^b를 2의 보수로 치환하여 처리될 수 있다. 즉, 도 8에 도시된 바와 같이, 먼저 ^b의 보수가 ^b에 입력된 후(제1 라인), 도 8에 도시된 덧셈과 동일한 연산 및 처리 과정(제1 내지 제12 라인)이 수행되면, 최종적으로 변수 ^r을 획득할 수 있다. 해당 변수 ^r은 어느 하나의 암호화된 데이터에서 다른 암호화된 데이터를 차감한 값을 반환하게 된다. 따라서, 암호화된 데이터에 대한 복호화 없이 암호화된 데이터 간의 뺄셈 연산을 수행할 수 있게 된다.
도 10은 곱셈을 위한 알고리즘의 일례를 도시한 도면이다.
도 10에 도시된 바에 의하면, 두 개의 변수(^a, ^b) 간의 곱셈을 위하여 먼저 ^a[l-1] 및 ^b[l-1]에 대한 배타적 논리합(XOR) 연산이 수행된다(제1 라인). 도 5를 참조하여 설명한 바와 같이 최상위 비트(l-1)에는 부호가 할당되므로, ^a[l-1] 및 ^b[l-1]를 이용하면 곱셈 결과의 부호를 알 수 있게 된다. 즉, 두 입력 값이 같은 부호라면, 연산 결과(s^_1)는 Enc(0)가 되고, 그렇지 않다면 Enc(1)가 된다. 이어서, 배타적 논리합(XOR) 연산 결과(^s_1)의 부정(NOT) 연산이 수행되고 그 결과가 다른 변수(^s_2)에 입력된다(제2 라인). 즉, 두 입력 값이 같은 부호라면, 다른 변수(^s_2)의 값은 Enc(1)이 되고, 그렇지 않다면 Enc(0)이 결정된다.
이와 더불어 또는 순차적으로 두 개의 값(^a, ^b) 각각에 대한 절대 값(^a+, ^b+)이 연산되고(제3 및 제4 라인), 어느 하나의 값(^a)의 절대 값(^a+)과, 다른 값(^b)의 절대 값 중 인덱스가 0에 해당하는 값(^b+[0])의 논리곱(AND) 연산되고, 연산 결과가 변수 ^s에 입력된다(제5 라인). 제5 라인에서 bitwise는 특정 연산을 각 배열의 요소들 모두에게 각각 적용하는 것을 의미한다.
이어서 어느 하나의 변수(^a)에 대한 절대 값(^a+)이 인덱스 값(i)에 대응하여 우측으로 시프트(shift)되고(제7 라인), 우측 이동 결과(^c) 및 다른 값(^b)의 절대 값 중 인덱스 i에 해당하는 값(^b+[i]) 사이의 논리 곱(AND)이 연산되며(제8 라인), 제7 라인의 연산 결과(^s)와 제8 라인의 연산 결과(^d)가 도 8에 도시된 바와 같이 합산되고, 합산 결과는 변수 ^s에 입력된다(제9 라인). 해당 과정(제7 내지 제9 라인)은 모든 인덱스 값(i=1, 2, .. l-2)에 대해 반복 수행된다(제6 및 제10 라인). 한편, 제9 라인에서 변수 ^s가 획득되면, 변수 ^s에 대응하는 2의 보수가 연산될 수 있다. 연산 결과는, 변수 ^d에 입력된다(제11 라인).
제2 라인에 기재된 바와 같이 두 입력 값이 같은 부호라면, 다른 변수(^s_2)의 값은 Enc(1)가 되므로, 이에 대해 양의 곱셈의 결과(제3, 제4, 제6 내지 제10 라인)에서 획득된 변수 ^s에 대해 각각의 비트마다 논리 곱(AND)을 적용하면, 양의 곱셈 결과(^r_L)가 획득되게 된다(제12 라인). 반대로 두 입력 값이 다른 부호라면, 양의 곱셈 결과 값(^s, 제9 라인)에 반대 부호를 취해 획득한 결과 값(^d, 제11 라인), 즉, 음의 값에 대해 비트마다 논리 곱(AND)을 적용하면 이에 대응하여 결과 값(^r_R)이 음으로 출력된다(제13 라인). 양의 결과(^r_L) 및 음의 결과(^r_R)를 상술한 알고리즘을 기반으로 합산하면 최종적으로 부호를 고려한 암호문 간 곱셈 결과(^r)가 출력된다(제14 및 15 라인).
도 11은 나눗셈을 위한 알고리즘의 일례를 도시한 도면이다.
나눗셈을 수행하기 위해서 피제수가 ^q(배열의 길이는 l)로 주어지고 제수가 ^m(배열의 길이는 l)으로 주어지며, 모든 요소가 0인 부가 값이 ^a(배열의 길이는 l)로 주어진 경우, 부호의 결정을 위해 피제수의 l-1 비트에 해당하는 값(^q[l-1])과 제수의 l-1 비트에 해당하는 값(^m[l-1])의 논리 곱(XOR)이 수행되고(제1 라인), 피제수(^q) 및 제수(^m) 각각에 대한 절대 값(^q+, ^m+)이 연산된다(제2 및 제3 라인). 이는 피제수(^q) 및 제수(^m) 각각의 부호를 추후 결정하기 위한 것이다.
한편, 피제수(^q) 및 부가 값(^a)를 합치고(제5 라인), 그 결과(^c)를 오른 쪽으로 1비트만큼 이동시킨다(제6 라인). 이어서 결과(^c)에서 인덱스가 l인 값부터 2l-1까지의 값을 부가 값(^a)에 기록하고, 결과(^c)에서 인덱스가 0인 값부터 l-1까지의 값을 피제수(^q)에 기록한다(제7 및 제8 라인). 획득된 부가 값(^a)을 제수(^m)와 비교하고, 그 결과에 따른 값(도 7을 참조하여 설명한 바와 같이, ^a<^m이면 Enc(1)이고, 그렇지 않으면 Enc(0)임)에 부정 연산(NOT)을 수행하여(제9 라인), 연산 결과 값을 피제수의 절대 값(^q+)의 인덱스 0에 해당하는 위치(^q+[0])에 기록한다(제10 라인). 아울러 부가 값(^a) 및 제수(^m) 사이의 차이가 도 9를 통해 설명한 바와 같이 연산되고(제11 라인), 피제수의 인덱스 0에 해당하는 값(^q[0])과 부가 값(^a) 및 제수(^m) 사이의 차이의 연산 결과(^a_M)가 비트 단위별로 논리 곱 연산되고(제12 라인), 부가 값(^a)과 제수(^m)의 비교 결과(^d)와 부가 값(^a)이 비트 단위별로 논리 곱 연산되어 각각 새로운 값(^a_L, ^a_R)이 획득된다(제13 라인). 새로 획득된 값(^a_L, ^a_R)의 논리 곱에 따라 암호문(^a)의 값이 정해진다(제14 라인). 이와 같은 과정은 소정의 회수(l+l/2-1)만큼 반복 수행된다(제4 및 제15 라인).
한편 제1 라인의 피제수의 l-1 비트에 해당하는 값(^q[l-1])과 제수의 l-1 비트에 해당하는 값(^m[l-1])의 논리 곱(XOR)의 연산 결과(^s)에 대해 부정 연산(NOT)이 수행되고(제16 라인). 이어서, 피제수의 절대 값(^q+)에 대한 2의 보수가 연산되고(제17 라인), 논리 곱(XOR)의 연산 결과(^s)에 대한 부정 연산 결과(^s_2)와 피제수의 절대 값(^q+) 간의 논리 곱이 비트 단위별로 연산되고(제18 라인), 논리 곱(XOR)의 연산 결과(^s)에 대한 부정 연산 결과(^s_2)와 피제수의 절대 값(^q+)에 대한 2의 보수의 연산 결과(^q-)에 대한 논리 곱이 비트 단위별로 연산된다(제19 라인). 이들 양 논리 곱 연산 결과(^q_L, ^q_R)를 합산하면, 결과 값(^q, 몫)이 실수 범위까지 확장되어 획득될 수 있다(제20 및 21 라인).
도 12는 이진지수함수 연산을 위한 알고리즘의 일례를 도시한 도면이고, 도 13은 음의 이진지수함수 연산을 위한 알고리즘의 일례를 도시한 도면이다.
암호화된 상태에서는 입력 값이 무엇인지 알 수 없기 때문에, 평문 상에서 지수함수 값을 구하는 방식은 암호화된 데이터의 지수함수 값을 구하는 것에 바로 적용할 수는 없다. 이를 해결하기 위해 암호화된 데이터에 대한 지수함수에 대한 값의 처리는, 암호문에 대한 전처리를 수행하고, 도 12에 도시된 바와 같은 알고리즘을 이용하여 양의 이진함수를 연산하거나 또는 도 13에 도시된 바와 같은 알고리즘을 이용하여 음의 이진함수를 연산하는 과정을 통해 수행된다.
전처리는, 밑 변환 처리를 포함한다. 구체적으로 일반적으로 b^x의 밑 변환은 하기의 수학식 6과 같이 변환될 수 있다.
[수학식 6]
밑이 2에서 일반적인 b^x로 변경하는 경우에는 하기의 수학식 7과 같이 입력 값 x에 대해서 log2b를 곱하면 된다.
[수학식 7]
그러므로, xlog2b를 양의 이진 함수 알고리즘이나 음의 이진 함수 알고리즘에 입력하면, b^x 값의 획득이 가능해진다.
한편, 입력된 암호화된 데이터의 값이 양수인지 또는 음수인지 알 수 없으므로, 후술하는 양의 이진 함수 알고리즘 및 음의 이진 함수 알고리즘은 모두 각각 수행되고, 이들 값은 선택적으로 통합되어 최종적인 지수 함수 연산이 수행된다.
도 12에 도시된 바를 참조하면, 양의 이진 지수 함수 알고리즘은, 입력 값을 정수 부분(Integer Part) 및 소수 부분(Decimal Part)으로 나누어 진행된다. 구체적으로 양의 이진지수함수 결과 값의 정수 부분은 1을 지수(x)의 정수 부분만큼 우측으로 이동 연산(Right Shift Operation)된 값을 저장하여 획득되고 (제8 라인), 양의 이진지수함수 결과 값의 소수 부분은 지수(x)의 소수 부분을 지수(x)의 정수 부분만큼 우측으로 이동 연산(Right Shift Operation)된 값을 저장하여 획득될 수 있다(제11 라인). 마지막으로, 위 두 결과 값을 합산하면 최종적인 양의 이진 지수 함수의 결과 값이 도출된다(제15 라인).
한편, 음의 이진 지수 함수 알고리즘도, 도 13에 도시된 것처럼, 입력 값을 정수 부분 및 소수 부분으로 나눠 처리된다. 이 경우, 음의 이진 함수 알고리즘은 양의 이진 함수 알고리즘과 대체적으로 동일하나, 이동 연산의 방향 및 이동 거리가 상이하게 설정되어 구현된 것일 수 있다. 상세하게는 음의 이진지수함수의 입력 값에 대해 절대 값 연산을 수행하여, 대응하는 양의 입력 값을 획득한다(제1 라인). 음의 이진 지수 함수의 결과 값의 정수 부분의 경우, 1을 입력 값 x의 절대 값의 정수 부분만큼 좌측 방향으로 이동 연산(Left Shift Operation)하고 그 결과 값을 저장하여 획득된다(제9 라인). 음의 이진지수함수의 결과 값의 소수 부분의 경우, 입력 값의 절대 값의 소수 부분을 입력 값의 절대 값의 (정수+1)만큼 좌측으로 이동 연산(Left Shift Operation)하고 그 결과 값을 저장하여 획득된다(제12 라인). 마지막으로, 위 두 결과 값 간의 차이를 연산한다(제16 라인). 해당 차이 값이 음의 이진 지수 함수의 결과가 된다.
최종적으로 두 값은 선택적으로 합해진다. 이는 상술한 바와 같이 지수 값이 양 또는 음인지 판별할 수 없기 때문이다. 구체적으로 이 두 값의 통합은 하기의 수학식 8을 기반으로 수행 가능하다.
[수학식 8]
수학식 8에서 여기서 A는 양의 이진지수함수의 연산 결과이고, B는 음의 이진지수함수의 연산 결과이다. 즉, 양의 이진 지수에서는 입력 값(x)의 부호 비트가 0이 되고, 이에 부정 연산(NOT)을 적용하면 그 결과 값은 1이 된다. 이 값과 양의 이진지수함수의 연산 결과(A)에 대해 논리곱 연산(AND)을 수행하면, A에 대응하는 결과가 획득된다. 반면 B의 결과는 0이 되어, 결과적으로 둘을 합산하게 되면 오직 A의 결과만 나오게 된다. 반대로 음의 이진지수함수는 입력 값(x)의 부호 비트가 1이므로, B의 결과만이 획득되게 된다.
도 14는 시그모이드 함수 알고리즘의 일례를 도시한 도면이다.
각 뉴런에서 이용되는 활성화 함수, 일례로 시그모이드 함수는, 상술한 연산 처리를 기반으로 구현될 수도 있다. 구체적으로 시그모이드 함수는 입력 값(ㅋ)에 대해 2의 보수를 획득하고(제1 라인), 지수 함수에 입력하고(제2 라인), 1에 대한 암호화 결과를 획득하고(제3 라인), 1에 대한 암호화 결과와 지수 함수의 입력 결과를 합산하고(제4 라인), 이들 합산 결과로 1에 대한 암호화 결과를 나눔으로써 수행될 수 있다(제5 라인). 이에 따라 동형 암호화에서 이용되는 시그모이드 함수가 획득되게 된다(제6 라인) 이러한 활성화 함수은 순방향처리부(130)가 뉴런값을 계산하기 위해 사용하고, 활성화 함수의 미분값은 오차역전파처리부(140)가에서 오차의 편미분 값을 계산하기 위해 사용한다. 따라서, 이들 동형 암호화 함수들을 기반으로 구축된 활성화 함수(일례로 시그모이드 함수)는 보다 정확한 값을 획득 및 출력할 수 있으므로, 상술한 활성화 함수를 이용하는 경우, 종래의 방식보다 매우 높은 정확도의 결과를 획득할 수 있게 된다.
상술한 바와 같이 암호화된 데이터에 대한 복호화 없이 암호화된 데이터 그 자체만을 이용하여 연산 처리를 수행할 수 있게 됨에 따라, 기계 학습 처리 장치(20)는 적어도 하나의 클라이언트 장치(10: 10-1 내지 10-T)가 획득 및 전송한 암호화된 데이터를 그대로 학습 모델 기반 예측 및 학습 모델의 훈련에 이용하고, 학습 모델 기반 예측에 따라 암호화된 결과 데이터를 획득한 후, 획득한 결과 데이터를 암호화된 데이터를 전송한 적어도 하나의 클라이언트 장치(10: 10-1 내지 10-T)로 전달하고, 적어도 하나의 클라이언트 장치(10: 10-1 내지 10-T)는 암호화된 결과 데이터를 복호화하여 최종적인 결과 데이터를 획득하므로, 개인 정보와 같은 민감한 데이터의 전송 및 이를 이용한 학습 모델의 훈련이 보다 안전하게 수행될 수 있게 된다.
상술한 클라이언트 장치(10) 및 기계 학습 처리 장치(20) 중 적어도 하나는, 상술한 바와 같은 각각의 처리 등을 수행할 수 있도록 특별히 고안된 장치를 이용하여 구현될 수도 있고, 또는 적어도 하나의 정보처리장치를 단독 또는 조합 이용하여 구현될 수 있다. 여기서, 적어도 하나의 정보처리장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버용 하드웨어 장치, 스캐너 장치, 프린터 장치, 삼차원 프린터 장치, 스마트 폰, 태블릿 피씨, 스마트 시계, 스마트 태그, 스마트 밴드, 두부 장착형 디스플레이(HMD: Head Mounted Display) 장치, 휴대용 게임기, 개인용 디지털 보조기(PDA: Personal Digital Assistant), 내비게이션 장치, 스마트 키, 리모트 컨트롤러(리모컨), 디지털 텔레비전, 셋 톱 박스, 디지털 미디어 플레이어 장치, 미디어 스트리밍 장치, 디브이디 재생 장치, 컴팩트 디스크 재생 장치, 음향 재생 장치(인공 지능 스피커 등), 가전 기기(일례로 냉장고, 선풍기, 공조기, 오븐 또는 세탁기 등), 유인 또는 무인 이동체(일례로 승용차, 버스나 이륜차와 같은 차량, 이동성 로봇, 무선 모형 차량, 로봇 청소기 등), 유인 또는 무인 비행체(일례로 항공기나, 헬리콥터나, 드론, 모형 비행기, 모형 헬리콥터 등), 의료 기기(엑스선 촬영 장치, 컴퓨터 단층 촬영 장치(CT: Computed Tomography) 또는 자기공명촬영(MRI: Magnetic Resonance Imaging) 장치 등), 교통 제어기, 로봇(가정용, 산업용 또는 군사용) 또는 기계 장치(산업용 또는 군사용) 등을 포함할 수 있으나 이에 한정되는 것은 아니다. 설계자나 사용자 등은 상황이나 조건에 따라서 상술한 정보처리장치 이외에도 정보의 연산 처리 및 제어가 다양한 장치 중 적어도 하나를 상술한 클라이언트 장치(10) 및 기계 학습 처리 장치(20) 중 적어도 하나로 고려하여 채용할 수 있다.
이하 도 15를 참조하여 기계 학습 처리 방법의 여러 실시예에 대해서 설명하도록 한다.
도 15는 기계 학습 처리 방법의 일 실시예에 대한 흐름도이다.
도 15에 도시된 바에 의하면, 먼저 제1 내지 제P 클라이언트 장치 중 적어도 하나는, 기계 학습 처리 장치로 전달할 데이터를 공개 키 또는 비밀 키를 이용하여 암호화하고(200), 암호화된 데이터를 유무선 통신 네트워크를 통해 기계 학습 처리 장치로 전달할 수 있다(210). 클라이언트 장치는 각각 암호화할 데이터를 비트 단위로 암호화할 수도 있다.
이어서 기계 학습 처리 장치는, 암호화된 데이터를 복호화하지 않고 그대로 학습 모델에 입력하여 암호화된 데이터에 대응하는 결과 데이터를 획득하거나 및/또는 암호화된 데이터를 기반으로 오차 역전파 처리를 수행하여 학습 모델에 대한 훈련을 수행할 수 있다(220). 여기서, 학습 모델은, 동형 암호 연산을 위해 마련된 적어도 하나의 동형 암호 함수를 기반으로 구축된 것일 수 있으며, 적어도 하나의 동형 암호 함수는, 예를 들어, 상술한 바와 같이, 2의 보수 함수, 절대 값 함수, 우측 이동 연산 함수, 좌측 이동 연산 함수, 대소 비교 함수, 덧셈 함수, 뺄셈 함수, 곱셈 함수, 나눗셈 함수 및 지수 함수 중 적어도 하나를 포함할 수 있으며, 이들 외에도 설계자나 사용자 등에 의해 임의적으로 정의된 다른 함수를 더 포함할 수도 있다. 따라서, 학습 모델 내의 가중치 파라미터 및 바이어스 파라미터 중 적어도 하나에 관한 연산 등은 이들 동형 암호 연산을 위한 함수 중 적어도 하나를 이용하여 연산 처리된다.
암호화된 데이터를 기반으로 한 학습 모델의 결과 데이터가 획득되면, 결과 데이터는 해당 클라이언트 장치로 전달될 수 있다(240). 여기서, 학습 모델은, 기존에 훈련된 학습 모델일 수도 있고 또는 클라이언트 장치가 전송한 암호화된 데이터를 기반으로 추가적으로 더 훈련된 학습 모델일 수도 있다. 또한, 필요에 따라 학습 모델의 최적화된 파라미터(가중치 파라미터 및 바이어스 파라미터 등)가 해당 클라이언트 장치로 더 전송되는 것도 가능하다.
결과 데이터는, 동형 암호화 함수를 기반으로 한 암호화된 데이터에 대한 학습 처리(학습 모델의 훈련 및/또는 학습 모델 기반 추론 등)에 따라 획득된 것이므로 암호화되어 있다. 따라서, 클라이언트 장치는 수신한 결과 데이터를 공개 키 또는 비밀 키를 이용하여 복호화 처리를 수행하고, 이에 따라 최종적인 결과를 획득하게 된다. 공개 키 또는 비밀 키는, 암호화에서 이용된 공개 키 또는 비밀 키와 동일한 것일 수도 있다.
상술한 실시예에 따른 기계 학습 처리 방법은, 컴퓨터 장치에 의해 구동될 수 있는 프로그램의 형태로 구현될 수 있다. 프로그램은, 명령어, 라이브러리, 데이터 파일 및/또는 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며, 기계어 코드나 고급 언어 코드를 이용하여 설계 및 제작된 것일 수 있다. 프로그램은 상술한 방법을 구현하기 위하여 특별히 설계된 것일 수도 있고, 컴퓨터 소프트웨어 분야에서 통상의 기술자에게 기 공지되어 사용 가능한 각종 함수나 정의를 이용하여 구현된 것일 수도 있다. 또한, 여기서, 컴퓨터 장치는, 프로그램의 기능을 실현 가능하게 하는 프로세서나 메모리 등을 포함하여 구현된 것일 수 있으며, 필요에 따라 통신 장치를 더 포함할 수도 있다. 상술한 기계 학습 처리 방법을 구현하기 위한 프로그램은, 컴퓨터 등의 장치에 의해 판독 가능한 기록 매체에 기록될 수 있다. 컴퓨터에 의해 판독 가능한 기록 매체는, 예를 들어, 롬, 램, SD카드 또는 플래시 메모리(일례로 솔리드 스테이트 드라이브(SSD) 등)와 같은 반도체 저장 매체나, 하드 디스크 또는 플로피 디스크 등과 같은 자기 디스크 저장 매체나, 콤팩트 디스크 또는 디브이디 등과 같은 광 기록 매체나, 또는 플롭티컬 디스크 등과 같은 자기-광 기록 매체 등과 같이 컴퓨터 등의 장치의 호출에 따라 실행되는 하나 이상의 프로그램을 일시적 또는 비일시적으로 저장 가능한 적어도 한 종류의 물리적 저장 매체를 포함할 수 있다.
이상 기계 학습 처리 시스템, 기계 학습 처리 장치 및 기계 학습 처리 방법의 여러 실시예에 대해 설명하였으나, 기계 학습 처리 시스템, 기계 학습 처리 장치 또는 기계 학습 처리 방법은 오직 상술한 실시예에 한정되는 것은 아니다. 해당 기술 분야에서 통상의 지식을 가진 자가 상술한 실시예를 기초로 수정 및 변형하여 구현할 수 있는 다른 다양한 시스템이나, 장치나, 방법 역시 상술한 기계 학습 처리 시스템, 기계 학습 처리 장치 또는 기계 학습 처리 방법의 일 실시예가 될 수 있다. 예를 들어, 설명된 방법(들)이 설명된 바와 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소(들)가 설명된 바와 다른 형태로 결합, 연결 또는 조합되거나 다른 구성 요소 또는 균등물 등에 의하여 대치 또는 치환되더라도, 상술한 기계 학습 처리 시스템, 기계 학습 처리 장치 및/또는 기계 학습 처리 방법의 일 실시예가 될 수 있다.
1: 기계 학습 처리 시스템
10: 클라이언트 장치
20: 기계 학습 처리 장치 100: 프로세서
110: 학습 처리부 120: 학습 네트워크
130: 순방향 처리부 140: 오차 역전파 처리부
20: 기계 학습 처리 장치 100: 프로세서
110: 학습 처리부 120: 학습 네트워크
130: 순방향 처리부 140: 오차 역전파 처리부
Claims (11)
- 클라이언트 장치가 전송한 암호화된 데이터를 수신하는 통신부; 및
상기 암호화된 데이터를 그대로 학습 모델에 입력하여 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하는 프로세서;를 포함하고,
상기 학습 모델은, 동형 암호 함수를 기반으로 상기 암호화된 데이터에 대한 학습 처리를 수행하는 기계 학습 처리 장치. - 제1항에 있어서,
상기 프로세서는, 상기 암호화된 데이터를 이용하여 상기 학습 모델을 추가로 더 훈련하고, 상기 추가로 더 훈련된 학습 모델을 기반으로 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하는 기계 학습 처리 장치. - 제1항에 있어서,
상기 통신부는, 상기 결과 데이터를 상기 클라이언트 장치로 전달하여, 상기 클라이언트 장치가 상기 결과 데이터에 대한 복호화를 수행하도록 하는 기계 학습 처리 장치. - 제3항에 있어서,
상기 클라이언트 장치는 상기 암호화된 데이터의 암호화에 사용한 공개 키를 이용하여 상기 복호화를 수행하는 기계 학습 처리 장치. - 제1항에 있어서,
상기 암호화된 데이터는, 상기 클라이언트 장치가 데이터를 비트 단위로 암호화하여 획득된 데이터인 기계 학습 장치. - 클라이언트 장치가 데이터에 대한 암호화를 수행하여 암호화된 데이터를 생성하는 단계;
기계 학습 처리 장치가 상기 암호화된 데이터를 수신하는 단계;
상기 암호화된 데이터를 그대로 학습 모델에 입력하여 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하는 단계;를 포함하고,
상기 학습 모델은, 동형 암호 함수를 기반으로 상기 암호화된 데이터에 대한 학습 처리를 수행하는 기계 학습 처리 방법. - 제6항에 있어서,
상기 암호화된 데이터를 이용하여 상기 학습 모델의 훈련이 수행되는 단계;를 더 포함하는 기계 학습 처리 방법. - 제6항에 있어서,
상기 결과 데이터를 상기 클라이언트 장치로 전달하는 단계; 및
상기 클라이언트 장치가 상기 결과 데이터에 대한 복호화를 수행하는 단계;를 더 포함하는 기계 학습 처리 방법. - 제8항에 있어서,
상기 클라이언트 장치가 상기 결과 데이터에 대한 복호화를 수행하는 단계는,
상기 클라이언트 장치가 상기 데이터에 대한 암호화에 사용한 공개 키를 이용하여 상기 결과 데이터에 대한 복호화를 수행하는 단계;를 포함하는 기계 학습 처리 방법. - 제6항에 있어서,
상기 암호화된 데이터는, 상기 클라이언트 장치가 데이터를 비트 단위로 암호화하여 획득된 데이터를 포함하는 기계 학습 방법. - 데이터의 암호화를 수행하여 암호화된 데이터를 획득하는 클라이언트 장치; 및
상기 클라이언트 장치가 전달한 상기 암호화된 데이터를 그래도 이용하여 상기 학습 모델을 훈련시키고, 훈련된 상기 학습 모델에 상기 암호화된 데이터를 그대로 입력하여 상기 암호화된 데이터에 대응하는 결과 데이터를 획득하고, 상기 결과 데이터를 상기 클라이언트 장치로 전달하는 기계 학습 처리 장치;를 포함하고,
상기 학습 모델은, 동형 암호 함수를 기반으로 상기 암호화된 데이터에 대한 학습 처리를 수행하고,
상기 클라이언트 장치는 상기 결과 데이터에 대한 복호화를 수행하는 기계 학습 처리 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20200188550 | 2020-12-30 | ||
KR1020200188550 | 2020-12-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220097330A true KR20220097330A (ko) | 2022-07-07 |
Family
ID=82398851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210192860A KR20220097330A (ko) | 2020-12-30 | 2021-12-30 | 프라이버시 보존 기계 학습 처리 시스템, 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20220097330A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024073870A1 (en) * | 2022-10-04 | 2024-04-11 | Lenovo (Beijing) Limited | Path trajectory functional encryption |
-
2021
- 2021-12-30 KR KR1020210192860A patent/KR20220097330A/ko unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024073870A1 (en) * | 2022-10-04 | 2024-04-11 | Lenovo (Beijing) Limited | Path trajectory functional encryption |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pulido-Gaytan et al. | Privacy-preserving neural networks with homomorphic encryption: C hallenges and opportunities | |
US11301571B2 (en) | Neural-network training using secure data processing | |
US20240113858A1 (en) | Systems and Methods for Performing Secure Machine Learning Analytics Using Homomorphic Encryption | |
US11558176B2 (en) | Apparatus and method for generating ciphertext data with maintained structure for analytics capability | |
CA3059610A1 (en) | Secure multi-party computation with no trusted initializer | |
US20160156460A1 (en) | Secure computer evaluation of k-nearest neighbor models | |
CN112394974B (zh) | 代码变更的注释生成方法、装置、电子设备及存储介质 | |
US20200372394A1 (en) | Machine learning with differently masked data in secure multi-party computing | |
EP4052412A1 (en) | Secure outsourcing of a multiplication | |
CN113051586B (zh) | 联邦建模***及方法、联邦模型预测方法、介质、设备 | |
Stoian et al. | Deep neural networks for encrypted inference with tfhe | |
KR20220097330A (ko) | 프라이버시 보존 기계 학습 처리 시스템, 장치 및 방법 | |
US20220292362A1 (en) | Secret softmax function calculation system, secret softmax calculation apparatus, secret softmax calculation method, secret neural network calculation system, secret neural network learning system, and program | |
Nita et al. | Homomorphic encryption | |
JP2023179681A (ja) | 同型暗号文に対する非多項式演算を行う方法 | |
CN115834020A (zh) | 同态加密自举方法和装置、处理器、片上***以及计算设备 | |
Yu et al. | Privacy-preserving cloud-edge collaborative learning without trusted third-party coordinator | |
CN114731267A (zh) | 对加密数据启用提升协议 | |
KR20210067961A (ko) | 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법 | |
US20230029772A1 (en) | Secret maximum value calculation apparatus, method and program | |
KR102491894B1 (ko) | 완전동형암호 기법으로 암호화된 데이터의 로지스틱 회귀 분석 연산 장치 및 방법 | |
US20240062053A1 (en) | Generating an output for a rectified linear unit (relu)-activated neuron of a neural network | |
US20230342603A1 (en) | Method and electronic device for secure training of an artificial intelligence (ai) model | |
KR20230159204A (ko) | 프라이빗 추론을 수행하는 딥러닝 시스템 및 그것의 동작 방법 | |
Chen et al. | EVFLR: Efficient Vertical Federated Logistic Regression Based on Batch Operations |