(57)【要約】  mapσをシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像とし、3個以上の秘密シグモイド関数計算装置で構成され、入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する秘密シグモイド関数計算システムであって、[[y→]]= mapσ([[x→]])= ([[σ(af(0))]], …, [[σ(af(m-1))]]) （ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）により、シェア[[y→]]を計算する秘密一括写像計算手段とを含む。
2020071441.tif 000002
【特許請求の範囲】
【請求項１】
mapσをシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像とし、
3個以上の秘密シグモイド関数計算装置で構成され、入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、入力ベクトルx→に対するシグモイド関数の値y→=(y0, …, ym-1)のシェア[[y→]]=([[y0]], …, [[ym-1]])を計算する秘密シグモイド関数計算システムであって、
前記シェア[[x→]]から、mapσ([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])（ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）を計算し、([[y0]], …, [[ym-1]])=([[σ(af(0))]], …, [[σ(af(m-1))]])により、前記シェア[[y→]]を計算する秘密一括写像計算手段と
を含む秘密シグモイド関数計算システム。
【請求項２】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段と
を含む秘密ロジスティック回帰計算システム。
【請求項３】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記し、
b_w,b_x,b_y,b_η,b_m,H,b_tmpを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとして、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記η及び前記[[e]]から、[[eta_grad]]=η[[e]]により、[[eta_grad]]を計算し、
前記[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)により、[[eta_grad_shift]]を計算し、
前記[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]により、[[eta_grad_ave]]を計算し、
前記[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)により、[[eta_grad_ave_shift]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段と
を含む秘密ロジスティック回帰計算システム。
【請求項４】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、
b_w,b_x,b_y,b_ηを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとし、
floorは切り捨てを表す関数とし、X=-(floor(log2(η/m)))として、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)により、[[eta_grad_ave]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段と
を含む秘密ロジスティック回帰計算システム。
【請求項５】
mapσをシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像とし、
入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、入力ベクトルx→に対するシグモイド関数の値y→=(y0, …, ym-1)のシェア[[y→]]=([[y0]], …, [[ym-1]])を計算する、3個以上の秘密シグモイド関数計算装置で構成される秘密シグモイド関数計算システムの中の秘密シグモイド関数計算装置であって、
前記シェア[[x→]]から、mapσ([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])（ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）を計算し、([[y0]], …, [[ym-1]])=([[σ(af(0))]], …, [[σ(af(m-1))]])により、前記シェア[[y→]]を計算するための秘密一括写像計算部と
を含む秘密シグモイド関数計算装置。
【請求項６】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を、3個以上の、請求項５に記載の秘密シグモイド関数計算装置で構成される秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する、3個以上の秘密ロジスティック回帰計算装置で構成される秘密ロジスティック回帰計算システムの中の秘密ロジスティック回帰計算装置であって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定するための初期化部と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算するための誤差計算部と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するためのモデルパラメータ更新部と
を含む秘密ロジスティック回帰計算装置。
【請求項７】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項５に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記し、
b_w,b_x,b_y,b_η,b_m,H,b_tmpを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとして、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムの中の秘密ロジスティック回帰計算装置であって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記η及び前記[[e]]から、[[eta_grad]]=η[[e]]により、[[eta_grad]]を計算し、
前記[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)により、[[eta_grad_shift]]を計算し、
前記[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]により、[[eta_grad_ave]]を計算し、
前記[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)により、[[eta_grad_ave_shift]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段と
を含む秘密ロジスティック回帰計算装置。
【請求項８】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項５に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、
b_w,b_x,b_y,b_ηを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとし、
floorは切り捨てを表す関数とし、X=-(floor(log2(η/m)))として、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムの中の秘密ロジスティック回帰計算装置であって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)により、[[eta_grad_ave]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段と
を含む秘密ロジスティック回帰計算装置。
【請求項９】
mapσをシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像とし、
3個以上の秘密シグモイド関数計算装置で構成される秘密シグモイド関数計算システムが、入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、入力ベクトルx→に対するシグモイド関数の値y→=(y0, …, ym-1)のシェア[[y→]]=([[y0]], …, [[ym-1]])を計算する秘密シグモイド関数計算方法であって、
前記秘密シグモイド関数計算システムが、前記シェア[[x→]]から、mapσ([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])（ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）を計算し、([[y0]], …, [[ym-1]])= ([[σ(af(0))]], …, [[σ(af(m-1))]])により、前記シェア[[y→]]を計算する秘密一括写像計算ステップと
を含む秘密シグモイド関数計算方法。
【請求項１０】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項９に記載の秘密シグモイド関数計算方法を用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
3個以上の秘密ロジスティック回帰計算装置で構成される秘密ロジスティック回帰計算システムが、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算方法であって、
前記秘密ロジスティック回帰計算システムが、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化ステップと、
前記秘密ロジスティック回帰計算システムが、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算ステップと、
前記秘密ロジスティック回帰計算システムが、j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新ステップと
を含む秘密ロジスティック回帰計算方法。
【請求項１１】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項９に記載の秘密シグモイド関数計算方法を用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記し、
b_w,b_x,b_y,b_η,b_m,H,b_tmpを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとして、
3個以上の秘密ロジスティック回帰計算装置で構成される秘密ロジスティック回帰計算システムが、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算方法であって、
前記秘密ロジスティック回帰計算システムが、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化ステップと、
前記秘密ロジスティック回帰計算システムが、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算ステップと、
前記秘密ロジスティック回帰計算システムが、j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記η及び前記[[e]]から、[[eta_grad]]=η[[e]]により、[[eta_grad]]を計算し、
前記[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)により、[[eta_grad_shift]]を計算し、
前記[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]により、[[eta_grad_ave]]を計算し、
前記[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)により、[[eta_grad_ave_shift]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新ステップと
を含む秘密ロジスティック回帰計算方法。
【請求項１２】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項９に記載の秘密シグモイド関数計算方法を用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、
b_w,b_x,b_y,b_ηを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとし、
floorは切り捨てを表す関数とし、X=-(floor(log2(η/m)))として、
3個以上の秘密ロジスティック回帰計算装置で構成される秘密ロジスティック回帰計算システムが、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算方法であって、
前記秘密ロジスティック回帰計算システムが、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化ステップと、
前記秘密ロジスティック回帰計算システムが、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算ステップと、
前記秘密ロジスティック回帰計算システムが、j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)により、[[eta_grad_ave]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新ステップと
を含む秘密ロジスティック回帰計算方法。
【請求項１３】
請求項５に記載の秘密シグモイド関数計算装置または請求項６から８の何れかに記載の秘密ロジスティック回帰計算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密計算技術に関する。特に、本発明は、シグモイド関数を秘密計算する技術、又は、ロジスティック回帰モデルのモデルパラメータを秘密計算する技術に関する。
【背景技術】
【０００２】
シグモイド関数を秘密計算するための従来の方法として、完全準同型暗号ベースの秘密計算で３次多項式近似するもの（非特許文献１）、加法準同型暗号ベースの秘密計算で多項式近似するもの（非特許文献２、非特許文献３）がある。【０００３】
ここで、秘密計算とは、暗号化された数値を復元することなく指定された演算の演算結果を得る方法のことである（例えば参考非特許文献１参照）。参考非特許文献１の方法では、数値を復元することのできる複数の情報を3つの秘密計算装置に分散するという暗号化を行い、数値を復元することなく、加減算、定数和、乗算、定数倍、論理演算（否定、論理積、論理和、排他的論理和）、データ形式変換（整数、二進数）の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。一般に、分散数は3に限らずW（Wは3以上の所定の定数）とすることができ、W個の秘密計算装置による協調計算によって秘密計算を実現するプロトコルはマルチパーティプロトコルと呼ばれる。
（参考非特許文献１：千田浩司，濱田浩気，五十嵐大，高橋克巳，“軽量検証可能３パーティ秘匿関数計算の再考”，In CSS，2010．）
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Kyoohyung Han, Seungwan Hong, Jung Hee Cheon, and Daejun Park, “Efficient logistic regression on large encrypted data”, https://eprint.iacr.org/2018/662.pdf, 2018.
【非特許文献２】呉双, 照屋唯紀, 川本淳平, 佐久間淳, 菊池浩明, “Privacy-preservation for stochastic gradient descent”, 2013年度人工知能学会全国大会(第27 回) 論文集, https://www.jstage.jst.go.jp/article/pjsai/JSAI2013/0/JSAI2013_3L1OS06a3/_pdf/-char/ja, 一般社団法人人工知能学会, 2013.
【非特許文献３】青野良範, 林卓也, レチュウフォン, 王立華, “大規模かつプライバシー保護を可能とするロジスティック解析手法の提案”, In SCIS2016, 2016.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、シグモイド関数は、次式で表される非線形関数であり（図１参照）、精度と処理速度の２つを両立させてシグモイド関数を秘密計算するのは容易ではない。【０００６】
【数１】
2020071441.tif 000003
【０００７】
非特許文献１〜３に記載の方法は、いずれも近似精度がよくない上に、xの定義域によって毎回近似式を作り直す必要があるため、実用性に欠ける。また、近似多項式は次数を増やすほどその近似精度は向上するが、そのぶん掛け算の回数が増えるため処理が遅くなるという問題がある。【０００８】
そこで本発明は、高速かつ高精度にシグモイド関数を秘密計算する技術を提供することを目的とする。または、本発明は、シグモイド関数を秘密計算する技術を用いて、高速かつ高精度にロジスティック回帰モデルのモデルパラメータを秘密計算する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様による秘密シグモイド関数計算システムは、mapσをシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像とし、3個以上の秘密シグモイド関数計算装置で構成され、入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、入力ベクトルx→に対するシグモイド関数の値y→=(y0, …, ym-1)のシェア[[y→]]=([[y0]], …, [[ym-1]])を計算する秘密シグモイド関数計算システムであって、前記シェア[[x→]]から、mapσ([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])（ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）を計算し、([[y0]], …, [[ym-1]])= ([[σ(af(0))]], …, [[σ(af(m-1))]])により、前記シェア[[y→]]を計算する秘密一括写像計算手段とを含む。【００１０】
本発明の一態様による秘密ロジスティック回帰計算システムは、mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、j=0, …, nに対して、前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段とを含む。【００１１】
本発明の一態様による秘密ロジスティック回帰計算システムは、mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記し、b_w,b_x,b_y,b_η,b_m,H,b_tmpを予め定められた正の整数とし、rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとして、3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、j=0, …, nに対して、前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、前記η及び前記[[e]]から、[[eta_grad]]=η[[e]]により、[[eta_grad]]を計算し、前記[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)により、[[eta_grad_shift]]を計算し、前記[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]により、[[eta_grad_ave]]を計算し、前記[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)により、[[eta_grad_ave_shift]]を計算し、前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段とを含む。【００１２】
本発明の一態様による秘密ロジスティック回帰計算システムは、mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、b_w,b_x,b_y,b_ηを予め定められた正の整数とし、rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとし、floorは切り捨てを表す関数とし、X=-(floor(log2(η/m)))として、3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、j=0, …, nに対して、前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、前記[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)により、[[eta_grad_ave]]を計算し、前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段とを含む。
【発明の効果】
【００１３】
本発明によれば、高速かつ高精度にシグモイド関数を秘密計算することが可能となる。または、本発明によれば、高速かつ高精度にロジスティック回帰モデルのモデルパラメータを秘密計算することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】シグモイド関数σ(x)を表す図。
【図２】秘密ロジスティック回帰計算アルゴリズムを示す図。
【図３】秘密シグモイド関数計算システム１０の構成を示すブロック図。
【図４】秘密シグモイド関数計算装置１００iの構成を示すブロック図。
【図５】秘密シグモイド関数計算システム１０の動作を示すフローチャート。
【図６】秘密ロジスティック回帰計算システム２０の構成を示すブロック図。
【図７】秘密ロジスティック回帰計算装置２００iの構成を示すブロック図。
【図８】秘密ロジスティック回帰計算システム２０の動作を示すフローチャート。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００１６】
後述する秘密シグモイド関数計算アルゴリズム、秘密ロジスティック回帰計算アルゴリズムは、既存の秘密計算上の演算の組み合わせで構築される。これらのアルゴリズムが必要とする演算は、秘匿化、加算、乗算、エイチピーサム(hpsum)である。なお、エイチピーサムとは積和のことである。以下、各演算について説明していく。
【００１７】
＜演算＞
［秘匿化］
[[x]]をxを秘密分散で秘匿した値（以下、xのシェアという）とする。秘密分散方法には、任意の方法を用いることができる。例えば、GF(261-1)上のShamir秘密分散、Z2上の複製秘密分散を用いることができる。
【００１８】
ある１つのアルゴリズムの中で複数の秘密分散方法を組み合わせて用いてもよい。この場合、適宜相互に変換するものとする。
【００１９】
また、n次元ベクトルx→=(x0, …, xn-1)に対して、[[x→]]=([[x0]], …, [[xn-1]])とする。nは、モデルパラメータの数であり、所定の正の整数である。
【００２０】
なお、xを[[x]]の平文という。
【００２１】
xから[[x]]を求める方法（秘匿化）、[[x]]からxを求める方法（復元）として、具体的には、参考非特許文献１、参考非特許文献２に記載の方法がある。
（参考非特許文献２：Shamir, A., “How to share a secret”, Communications of theACM, Vol.22, No.11, pp.612-613, 1979.）
【００２２】
［加算、乗算］
秘密計算による加算[[x]]+[[y]]は、[[x]], [[y]]を入力とし、[[x+y]]を出力する。秘密計算による乗算[[x]]×[[y]]（mul([[x]], [[y]])）は、[[x]], [[y]]を入力とし、[[x×y]]を出力する。
【００２３】
なお、[[x]]、[[y]]のいずれかが秘匿されていない値（以下、公開値という）であってもよい。例えば、β、γを公開値として、[[x]], βを入力として、[[x+β]]を出力するようにしたり、γ, [[y]]を入力とし、[[γ×y]]を出力することもできる。
【００２４】
加算、乗算の具体的方法として、参考非特許文献３、参考非特許文献４に記載の方法がある。
（参考非特許文献３：Ben-Or, M., Goldwasser, S. and Wigderson, A., “Completenesstheorems for non-cryptographic fault-tolerant distributed computation”, Proceedings of the twentieth annual ACM symposium on Theory of computing, ACM, pp. 1-10, 1988.）
（参考非特許文献４：Gennaro, R., Rabin, M. O. and Rabin, T., “Simplied VSS and fast-track multiparty computations with applications to threshold cryptography”, Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing, ACM, pp.101-111, 1998.）
【００２５】
［エイチピーサム(hpsum)］
秘密計算hpsum([[x→]], [[y→]])は、[[x→]], [[y→]]（ただし、x→=(x0, …, xn-1), y→=(y0, …, yn-1)）を入力とし、[[Σj=0n-1xjyj]]を出力する。つまり、２つのベクトルの第j要素の積の和を出力する。
【００２６】
＜技術的背景＞
（秘密一括写像）
図１に示すような単調増加関数であるシグモイド関数σ(x)を秘密計算するために、本発明の実施形態では、秘密一括写像を用いる。以下、秘密一括写像について説明する。
【００２７】
秘密一括写像は、ルックアップテーブルを計算する機能であり、定義域と値域を任意に定めることができる技術である。例として、入力を10倍する関数を秘密一括写像で計算する場合を考える。ある定義域X={1, 3, 5}と、その10倍の値の集合である値域Y={10, 30, 50}を用意したとする。秘密一括写像では、定義域に属さない入力xに対しては、定義域に属する、x以下の最大の値が出力される。そのため、4を入力すると30が出力される。しかし、定義域をX={1, 2, 3, 4, 5}、値域をY={10, 20, 30, 40, 50}というふうにより細かく設定することで、4を入力したときに40が出力されるようになり、高い精度での計算が可能になる。この性質を使うことで、固定小数点数でもデータ型の上限を超えることがなくかつ計算誤差も小さい、適切な精度を設定することができる。なお、秘密一括写像の処理時間は定義域や値域のサイズに依存する。このため、計算精度の高さと処理速度は、トレードオフの関係になる。
【００２８】
［アルゴリズム］
ここでは、秘密一括写像を用いてシグモイド関数を秘密計算するアルゴリズム（秘密シグモイド関数計算アルゴリズム）について説明する。例えば、参考非特許文献５に記載の秘密一括写像のアルゴリズムを用いることができる。
（参考非特許文献５：濱田浩気, 五十嵐大, 千田浩司, “秘匿計算上の一括写像アルゴリズム”, 電子情報通信学会論文誌A, Vol.J96-A, No.4, pp.157-165, 2013.）
【００２９】
秘密一括写像は、ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])を入力とし、関数の定義域を表すパラメータ(a0, …, ak-1)と関数の値域を表すパラメータ(b0, …, bk-1)（ただし、a0, …, ak-1, b0, …, bk-1は実数であり、a0<…<ak-1を満たす。）を用いて、ベクトルの各要素のシェアを写像させたシェア、すなわち、0≦i≦m-1に対して、aj≦xi<aj+1かつyi=bjであるような([[y0]], …, [[ym-1]])を出力するものである。
【００３０】
秘密シグモイド関数計算アルゴリズムは、秘密一括写像における関数の定義域を表すパラメータ(a0, …, ak-1)と関数の値域を表すパラメータ(b0, …, bk-1)をbj=σ(aj)(0≦j≦k-1)を満たすように選択したものである（以下、当該秘密一括写像をmapσと表す）。
つまり、秘密シグモイド関数計算アルゴリズムは、ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])を入力とし、シグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1))（ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像mapσを用いて、0≦i≦m-1に対して、aj≦xi<aj+1となるjをf(i)とし、([[σ(af(0))]], …, [[σ(af(m-1))]])を出力する。
【００３１】
上述した通り、秘密一括写像における定義域と値域は任意に設定できる値であるため、必要な精度や処理速度に応じて決めることができる。そのため、多項式を用いて近似する場合と異なり、任意の精度の値を設定できる。したがって、例えば、平文と遜色ない精度を実現することも可能となる。
【００３２】
また、秘密一括写像を用いてシグモイド関数を秘密計算することには、別の利点もある。以下、説明する。処理コストの観点から（浮動小数点でなく）固定小数点を用いて計算する場合、乗算のたびに数値精度が増大し、データ型の上限を超えてしまうことがあるため、途中で意図的な桁落としを行う必要が生じることがある。しかし、秘密一括写像を用いると、定義域と値域を独立に設定することができるため、シグモイド関数の計算をすると同時に数値精度の調節も行うことができ、効率的である。
【００３３】
なお、以下では、秘密シグモイド関数計算アルゴリズムをSigmoidと表すこととする。したがって、Sigmoid([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])となる。
【００３４】
（ロジスティック回帰分析）
ロジスティック回帰分析のモデルf(x→)（ただし、x→=(x1, …, xn)）は、n+1次元ベクトルw→=(w0, …, wn)をモデルパラメータとして、次式により表される。
【００３５】
【数２】
2020071441.tif 000004
【００３６】
ただし、(1, x→)はn+1次元ベクトル(1, x1, …, xn)を表す。
【００３７】
モデルパラメータw→を学習する方法として、関数の最小値を探索する学習法である最急降下法がある。最急降下法では、以下の入力、パラメータを用いて学習を行う。
（入力）説明変数のデータxi→、目的変数のデータyi（ただし、0≦i≦m-1、mは1以上の整数であり、学習データの数を表す）
【００３８】
（パラメータ）学習率η(0<η<1)、学習回数T
なお、学習率η及び学習回数Tについては、適切な値が設定されるものとする。
【００３９】
wt→=(w0,t, …, wn,t)をt回(0≦t≦T-1)更新を行ったモデルパラメータとして、以下の式により学習する。
【００４０】
【数３】
2020071441.tif 000005
【００４１】
つまり、学習データxi→, yiを用いて、モデルパラメータw→の第j要素wjごとに更新していく。なお、モデルパラメータw→の初期値w0→については適切な値が設定されるものとする。
【００４２】
［アルゴリズム］
ここでは、ロジスティック回帰モデルのモデルパラメータを秘密計算するアルゴリズム（秘密ロジスティック回帰計算アルゴリズム）について説明する。秘密ロジスティック回帰計算アルゴリズムは、説明変数のデータxi→のシェア[[xi→]]、目的変数のデータyiのシェア[[yi]]を入力とし、公開値であるパラメータη, Tを用いて、モデルパラメータw→のシェア[[w→]]を計算し、出力する。具体的な手順を図２に示す。図２をみれば、ステップ４〜ステップ２３では式(3)に従い[[w→]]を計算していることがわかる。また、ステップ１０において、秘密シグモイド関数計算アルゴリズムSigmoidを用いてシグモイド関数の値を求めていることもわかる。
【００４３】
秘密シグモイド関数計算アルゴリズムSigmoidを用いると、シグモイド関数の計算の精度がよくなるため、従来の方法（非特許文献１〜３に記載の方法）と比較して、ロジスティック回帰の計算の精度もよくなる。また、非特許文献２及び３に記載の方法では、計算過程において値の一部が秘匿化できておらず安全性に問題があるが、秘密ロジスティック回帰計算アルゴリズムの各ステップをみればわかるように、計算過程において秘密が保持されているため、外部に情報を全く漏らさず、安全に計算することができる。
【００４４】
また、秘密一括写像を用いてシグモイド関数を計算する場合、同時に近似精度の調節ができる性質を利用することにより、繰り返し乗算する必要があるロジスティック回帰分析の計算でも、データ型の上限を超えることなく計算することが可能になる。
【００４５】
（適用例）
上述した通り、秘密一括写像では精度を任意に設定することができるが、値域や定義域のサイズに比例するオーバーヘッドがかかるため、より効率よくシグモイド関数を秘密計算するためには精度とオーバーヘッドのバランスを考える必要がある。例えば、精度を10-4程度に設定すると、平文と比較しても定義域や値域のサイズを少なく抑えつつ、精度よく計算することができる。
【００４６】
また、ロジスティック回帰分析では最終的に2値分類する際の閾値として、x=0付近の値を用いることが多いため、x=0付近におけるシグモイド関数の近似精度が高くなるのが好ましい。図１からわかるように、シグモイド関数はx=0付近で大きく値が変化するが、それ以外の範囲ではほぼ一定の値になる。そこで、シグモイド関数の当該性質を利用し、値が大きく変化する部分については定義域や値域を細かく設定する一方で、それ以外の範囲については、粗く設定することにより、全体として定義域や値域のサイズを大きくすることなく、効率よく精度を上げることができる。
【００４７】
＜第１実施形態＞
以下、図３〜図５を参照して秘密シグモイド関数計算システム１０について説明する。図３は、秘密シグモイド関数計算システム１０の構成を示すブロック図である。秘密シグモイド関数計算システム１０は、W個（Wは3以上の所定の整数）の秘密シグモイド関数計算装置１００1、…、１００Wを含む。秘密シグモイド関数計算装置１００1、…、１００Wは、ネットワーク８００に接続しており、相互に通信可能である。ネットワーク８００は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図４は、秘密シグモイド関数計算装置１００i(1≦i≦W)の構成を示すブロック図である。図５は、秘密シグモイド関数計算システム１０の動作を示すフローチャートである。
【００４８】
図４に示すように秘密シグモイド関数計算装置１００iは、秘密一括写像計算部１１０iと、記録部１９０iを含む。記録部１９０iを除く秘密シグモイド関数計算装置１００iの各構成部は、秘密シグモイド関数計算アルゴリズムで必要とされる演算、つまり、少なくとも秘匿化、加算、乗算、エイチピーサム(hpsum)、秘密一括写像のうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献１〜５のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部１９０iは、秘密シグモイド関数計算装置１００iの処理に必要な情報を記録する構成部である。例えば、記録部１９０iは、秘密一括写像mapσの定義に必要となるシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）を記録しておく。ここで、先述したように、x=0付近（つまり、-ε<x<ε、ε(>0)は所定の実数）においてその他の範囲（つまり、x≦-εまたはx≧ε）よりも隣接する点の間隔が相対的に狭くなる（あるいは、点が相対的に多くなる）ようにパラメータ(a0, …, ak-1)を選択すると、x=0付近におけるシグモイド関数の近似精度が高くすることができる。
【００４９】
W個の秘密シグモイド関数計算装置１００iによる協調計算によって、秘密シグモイド関数計算システム１０はマルチパーティプロトコルである秘密シグモイド関数計算アルゴリズムを実現する。よって、秘密シグモイド関数計算システム１０の秘密一括写像計算手段１１０（図示していない）は秘密一括写像計算部１１０1、…、１１０Wで構成される。
【００５０】
秘密シグモイド関数計算システム１０は、入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、入力ベクトルx→に対するシグモイド関数の値y→=(y0, …, ym-1)のシェア[[y→]]=([[y0]], …, [[ym-1]])を計算する。ここで、一般に、入力ベクトルに対するシグモイド関数を計算するとは、入力ベクトルの各要素に対するシグモイド関数の値を計算することを意味するものとする。以下、図５に従い秘密シグモイド関数計算システム１０の動作について説明する。
【００５１】
秘密一括写像計算手段１１０は、入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、mapσ([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])（ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）を計算し、([[y0]], …, [[ym-1]])=([[σ(af(0))]], …, [[σ(af(m-1))]])により、シェア[[y→]]を計算する（Ｓ１１０）。
【００５２】
本実施形態の発明によれば、高速かつ高精度にシグモイド関数を秘密計算することが可能となる。特に、平文と遜色ない精度にて、シグモイド関数を秘密計算することが可能となる。
【００５３】
本実施形態の発明は、秘密計算が容易ではない非線形関数であるシグモイド関数の計算を、秘密一括写像を用いることで実現する。したがって、秘密一括写像の定義域が任意に定められることを利用すると、必要に応じて処理速度に優先してより高い精度でのシグモイド関数の秘密計算を実現することができる。
【００５４】
第１実施形態において、定義域、値域を設定する際にシグモイド関数の逆関数σ-1を用いてもよい。
【００５５】
すなわち、関数の定義域を表すパラメータ(a0, …, ak-1)と関数の値域を表すパラメータ(b0, …, bk-1)を設定するときに、逆シグモイド関数σ-1を用いてもよい。例えば、所望のパラメータ(b0, …, bk-1)を定めた後に、各bi(0≦i≦k-1)に対応するaiの値を逆シグモイド関数σ-1を用いて計算する。このようにして、計算された(a0, …, ak-1)を関数の定義域を表すパラメータとし、所望のパラメータ(b0, …, bk-1)を関数の値域を表すパラメータとしてもよい。
【００５６】
逆シグモイド関数σ-1は例えば以下のようになる。
【００５７】
σ-1(x)=-ln((1/x)-1)
【００５８】
逆関数を用いることで、シグモイド関数のような傾きが急激に変化する関数の定義域や値域を容易に計算することができる。
【００５９】
＜第２実施形態＞
以下、図６〜図８を参照して秘密ロジスティック回帰計算システム２０について説明する。図６は、秘密ロジスティック回帰計算システム２０の構成を示すブロック図である。秘密ロジスティック回帰計算システム２０は、W'個（W'は3以上の所定の整数）の秘密ロジスティック回帰計算装置２００1、…、２００W'を含む。秘密ロジスティック回帰計算装置２００1、…、２００W'は、ネットワーク８００に接続しており、相互に通信可能である。ネットワーク８００は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図７は、秘密ロジスティック回帰計算装置２００i(1≦i≦W')の構成を示すブロック図である。図８は、秘密ロジスティック回帰計算システム２０の動作を示すフローチャートである。
【００６０】
図７に示すように秘密ロジスティック回帰計算装置２００iは、初期化部２１０iと、誤差計算部２２０iと、モデルパラメータ更新部２３０iと、条件判定部２４０iと、記録部２９０iを含む。記録部２９０iを除く秘密ロジスティック回帰計算装置２００iの各構成部は、秘密ロジスティック回帰計算アルゴリズムで必要とされる演算、つまり、少なくとも秘匿化、加算、乗算、エイチピーサム(hpsum)、秘密一括写像のうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献１〜５のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部２９０iは、秘密ロジスティック回帰計算装置２００iの処理に必要な情報を記録する構成部である。例えば、記録部２９０iは、パラメータη, T（ただし、ηを0<η<1を満たす実数、Tは1以上の整数）を記録しておく。また、記録部２９０iは、秘密シグモイド関数計算アルゴリズムSigmoidの計算に必要なパラメータも記録しておく。例えば、記録部２９０iは、パラメータ(a0, …, ak-1), (σ(a0), …, σ(ak-1))を記録しておく。
【００６１】
W'個の秘密ロジスティック回帰計算装置２００iによる協調計算によって、秘密ロジスティック回帰計算システム２０はマルチパーティプロトコルである秘密ロジスティック回帰計算アルゴリズムを実現する。よって、秘密ロジスティック回帰計算システム２０の初期化手段２１０（図示していない）は初期化部２１０1、…、２１０W'で構成され、誤差計算手段２２０（図示していない）は誤差計算部２２０1、…、２２０W'で構成され、モデルパラメータ更新手段２３０（図示していない）はモデルパラメータ更新部２３０1、…、２３０W'で構成され、収束条件判定手段２４０（図示していない）は条件判定部２４０1、…、２４０W'で構成される。
【００６２】
秘密ロジスティック回帰計算システム２０は、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1、ただし、mは1以上の整数)、目的変数のデータyiのシェア[[yi]] (0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する（図２参照）。以下、図８に従い秘密ロジスティック回帰計算システム２０の動作について説明する。
【００６３】
初期化手段２１０は、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する（Ｓ２１０）。具体的には、予め記録部２９０iに記録している、適切な初期値w0→のシェア[[w0→]]を設定するのでよい。図２の秘密ロジスティック回帰計算アルゴリズムのステップ１に対応する。
【００６４】
誤差計算手段２２０は、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]とシェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、i=0, …, m-1に対して、シェア[[yi]]と([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する（Ｓ２２０）。図２の秘密ロジスティック回帰計算アルゴリズムのステップ５〜１５に対応する。なお、Sigmoidは、秘密シグモイド関数計算システム１０を用いて計算すればよい。
【００６５】
モデルパラメータ更新手段２３０は、j=0, …, nに対して、Ｓ２２０で計算した誤差[[di]] (0≦i≦m-1)とシェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、シェア[[wt→]]の第j要素[[wj,t]]と[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算する（Ｓ２３０）。図２の秘密ロジスティック回帰計算アルゴリズムのステップ１６〜２１に対応する。
【００６６】
条件判定部２４０は、事前に設定されたモデルパラメータ更新の繰り返し条件、つまり、t<Tを判定し、条件が満たされる場合はＳ２２０〜Ｓ２３０の処理を繰り返し、繰り返し条件が満たされない場合（所定の学習回数Tに達した場合）、シェア[[wT-1→]]をモデルパラメータw→のシェア[[w→]]として出力し、処理を終了する（Ｓ２４０）。
【００６７】
本実施形態の発明によれば、高速かつ高精度にロジスティック回帰モデルのモデルパラメータを秘密計算することが可能となる。
【００６８】
<<第２実施形態の変形例１>>
秘密一括写像と右シフトを用いてロジスティック回帰分析を行ってもよい。秘密一括写像には数値精度の調節をできる性質がある。しかし、より高い精度で計算したい場合、及び／又は、大きな学習データを用いる場合は、右シフトを用いて精度の調節を更に行ってもよい。なお、単に右シフトと書いた場合には、算術右シフトを表す。
【００６９】
なお、第２実施形態の変形例１では、処理コストを低減するために、固定小数点数に対して秘密計算が行われる。すなわち、秘密計算の対象であるw等の値が小数を含む場合には、秘密計算は、この値に2bを乗算した値に対して行われるとする。この場合、その秘密計算の結果に対して2bを除算した値を計算することにより、もともと秘密計算の対象となっていた値に対応する秘密計算の結果が得られる。このときのbを、精度と呼ぶ。
【００７０】
すなわち、第２実施形態の変形例１では、秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表す。
【００７１】
また、秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表す。
【００７２】
なお、2bの乗算は、例えば秘密ロジスティック回帰計算装置２００によって適切なときに行われる。適切なときの例は、秘密計算の対象となるデータが秘密ロジスティック回帰計算装置２００に登録されるとき、秘密計算の対象を平文からシェアに変換するとき、又は、秘密計算の前である。
【００７３】
また、2bの除算は、例えば秘密ロジスティック回帰計算装置２００によって適切なときに行われる。適切なときの例は、秘密計算の結果を秘密計算を依頼したクライアントに返すとき、シェアを平文に変換するとき、又は、秘密計算の後である。
【００７４】
このため、以下では、2bの乗算及び2bの除算については言及しないことがある。
【００７５】
w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記する。b_w,b_x,b_y,b_η,b_m,H,b_tmpは、秘密計算を行うコンピュータの性能に応じて予め定められる正の整数である。なお、Hは、H≧log2(m)を満たすとする。
【００７６】
また、秘密計算で除算を行うのは容易ではないため、データ数mが平文で得られることを利用して事前に1/mの計算を平文で行っておく。それによって、秘密計算中では1/mとの乗算として計算することができる。その際1/mの精度b_m[bit]を保証するためには、1/mに2b_m+Hをかける必要がある。
【００７７】
以下、第２実施形態の秘密ロジスティック回帰計算装置２００と異なる部分を中心に説明する。
【００７８】
初期化手段２１０によるＳ２１０の処理及び誤差計算手段２２０によるＳ２２０の処理は、上記と同様である。第２実施形態の変形例１では、モデルパラメータ更新手段２３０は、下記の処理を行う。
【００７９】
モデルパラメータ更新手段２３０は、j=0,…,nに対して、Ｓ２２０で計算した誤差[[di]](0≦i≦m-1)とシェア[[xi→]]の第j要素[[xi,j]](0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算する。
【００８０】
つぎに、モデルパラメータ更新手段２３０は、η及び[[e]]から、[[eta_grad]]=η[[e]]を計算する。iの最大値がmの場合(つまりデータ数がm件の場合)、eta_gradが必要とするメモリ量はb_y+b_x+ b_η+ceil(log2(m))[bit]となる。この値が大きくなってオーバーフローしてしまうため、次の処理でrshiftする。なお、ceilは切り上げを意味する。
【００８１】
つぎに、モデルパラメータ更新手段２３０は、[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)を計算する。ここで、rshift(a,b)は、aという値をb[bit]ぶん算術右シフトすることを表す。eta_gradはb_y+b_x+ b_η+ceil(log2(m))[bit]のメモリを必要とする(例：b_y=14,b_x=17,b_η=7,m=10万の場合55bit)ため、ここで、右シフトをせずにeta_grad_aveを計算すると、更にb_m+H(例:b_m=17, H=17)[bit]増えるためオーバーフローする可能性がある。マシンの性能にもよるが、一般的には64bitを超えるとオーバーフローする。なお、秘密計算では、もっと扱えるメモリ量が少ない場合もある。
【００８２】
つぎに、モデルパラメータ更新手段２３０は、[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]を計算する。
【００８３】
つぎに、モデルパラメータ更新手段２３０は、[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)を計算する。
【００８４】
最後に、モデルパラメータ更新部２３０は、シェア[[wt→]]の第j要素[[wj,t]]と[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算する。
【００８５】
条件判定部２４０の処理は上記と同様である。
【００８６】
なお、論理右シフトから算術右シフトへの変換は例えば以下の処理を行えばよい。なお、以下の説明において、rlshift(a,b)はaをb[bit]論理右シフトすることを表す。以下の説明では、秘密計算を、2bを乗算した値に対して行っていることを明示的に示している。このため、例えば、[[B×2n]]は文字通りB×2nという値がシェアされていることを表している。
【００８７】
精度n[bit]の値aをm[bit]に右シフトする場合、|a|≦Aとなる精度n[bit]の値Aを加算する。ここで、n>mであるとする。
【００８８】
B×2n=a×2n+A×2n
【００８９】
B×2nをn-m[bit]ぶん論理右シフトする。
【００９０】
B×2m=rlshift(B×2n,n-m)
【００９１】
シフト前に加算したAを引く。
【００９２】
a×2m=B×2m-A×2m
【００９３】
すなわち、eta_gradの精度はb_y+b_x+b_ηであるため、モデルパラメータ更新部２３０は、まず、|eta_grad|≦Aとなる精度b_y+b_x+b_ηの値Aを定める。そして、モデルパラメータ更新部２３０は、B×2n=eta_grad×2n+A×2nを満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新部２３０は、計算されたシェア[[B×2n]]に基づいて、B×2m=rlshift([[B×2n]],b_y+b_x+b_η-(b_y+b_x+b_η-b_tmp))を満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新部２３０は、計算されたシェア[[B×2n]]に基づいて、a×2m=B×2m-A×2mを満たすa×2mのシェア[[a×2m]]を計算する。計算された[[a×2m]]が、上記の説明における[[eta_grad_shift]]となる。
【００９４】
また、eta_grad_aveの精度はb_tmp+b_m+Hであるため、モデルパラメータ更新部２３０は、まず、|eta_grad_ave|≦Aとなる精度b_tmp+b_m+Hの値Aを定める。そして、モデルパラメータ更新部２３０は、B×2n=eta_grad_ave×2n+A×2nを満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新部２３０は、計算されたシェア[[B×2n]]に基づいて、B×2m=rlshift([[B×2n]],b_tmp+b_m+H-(b_tmp+b_m+H-b_w))を満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新部２３０は、計算されたシェア[[B×2n]]に基づいて、a×2m=B×2m-A×2mを満たすa×2mのシェア[[a×2m]]を計算する。計算された[[a×2m]]が、上記の説明における[[eta_grad_ave_shift]]となる。
【００９５】
このように、右シフトを取り入れることで、より高精度な計算や大規模な学習データの処理が可能となる。
【００９６】
なお、変形例１でも、平文のアーキテクチャで一般的ではない一括写像を使っているので、変形例１は具体的な処理は平文の処理をそのまま秘密計算にしたのとは違う処理になり自明ではないと言える。
【００９７】
また、使用する計算機の性能により定まる限られたビット数の中で、精度の調整も含めた固定小数点での具体的なロジスティック回帰が構成されたことは無い。
【００９８】
一括写像が精度調整の効果を持っているので、この精度調整は平文の場合と同じにはならず秘密計算特有の性質を持っている。
【００９９】
これらのことは、以下に説明する変形例２以降についても当てはまる。
【０１００】
<<第２実施形態の変形例２>>
η/mを２べきで近似し、右シフト(rshift)に置き換えてもよい。第２実施形態の変形例１では、学習率ηを高い精度にすることで細やかな設定が可能である。しかし、第２実施形態の変形例１では、右シフト演算が２回必要であり、b_y+b,x+b_η,b_tmp+b_m+Hが大きな値になりやすいため、計算の効率が落ちる可能性がある。このため、第２実施形態の変形例２では、ηとの乗算と1/mとの乗算をまとめてη/mとして処理することで処理回数を減らし、計算効率を向上させる。
【０１０１】
第２実施形態の変形例２は、第２実施形態の変形例１と比べると、処理効率は良いが、学習率ηの細かい設定はできない。しかし、学習率の違いは最終的に得られるパラメータの良し悪しにはあまり影響しないため、問題は殆どないと考えられる。
【０１０２】
なお、第２実施形態の変形例１では、処理コストを低減するために、固定小数点数に対して秘密計算が行われる。すなわち、秘密計算の対象であるw等の値が小数を含む場合には、秘密計算は、この値に2bを乗算した値に対して行われるとする。この場合、その秘密計算の結果に対して2bを除算した値を計算することにより、もともと秘密計算の対象となっていた値に対応する秘密計算の結果が得られる。このときのbを、精度と呼ぶ。
【０１０３】
すなわち、第２実施形態の変形例１では、秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表す。
【０１０４】
また、秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表す。
【０１０５】
なお、2bの乗算は、例えば秘密ロジスティック回帰計算装置２００によって適切なときに行われる。適切なときの例は、秘密計算の対象となるデータが秘密ロジスティック回帰計算装置２００に登録されるとき、秘密計算の対象を平文からシェアに変換するとき、又は、秘密計算の前である。
【０１０６】
また、2bの除算は、例えば秘密ロジスティック回帰計算装置２００によって適切なときに行われる。適切なときの例は、秘密計算の結果を秘密計算を依頼したクライアントに返すとき、シェアを平文に変換するとき、又は、秘密計算の後である。
【０１０７】
このため、以下では、2bの乗算及び2bの除算については言及しないことがある。
【０１０８】
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記する。b_w,b_x,b_y,b_ηは、秘密計算を行うコンピュータの性能に応じて予め定められる正の整数である。
【０１０９】
以下、第２実施形態の秘密ロジスティック回帰計算装置２００と異なる部分を中心に説明する。
【０１１０】
初期化手段２１０によるＳ２１０の処理及び誤差計算手段２２０によるＳ２２０の処理は、上記と同様である。第２実施形態の変形例２では、モデルパラメータ更新手段２３０は、下記の処理を行う。
【０１１１】
モデルパラメータ更新手段２３０は、j=0,…,nに対して、Ｓ２２０で計算した誤差[[di]](0≦i≦m-1)とシェア[[xi→]]の第j要素[[xi,j]](0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算する。eの必要メモリは、b_y=14,b_x=17,m=10万の場合、b_y_b_x+ceil(log_2(m))=48[bit]となるため、変形例１よりもメモリにゆとりがある。つまり、データ数mをもっと増やしてもオーバーフローしないため、更に大きな学習データを入れることが可能である。
【０１１２】
つぎに、モデルパラメータ更新手段２３０は、[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)を計算する。ここで、Xはη/mを２Xでの割り算で近似するような値であり例えば以下のように計算される。floorは切り捨てを表す関数である。Xは秘密計算の前に、秘密ロジスティック回帰計算装置２００によって計算される。
【０１１３】
X=-(floor(log2(η/m)))
【０１１４】
最後に、モデルパラメータ更新部２３０は、シェア[[wt→]]の第j要素[[wj,t]]と[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算する。
【０１１５】
条件判定部２４０の処理は上記と同様である。
【０１１６】
第２実施形態の変形例１と同様、論理右シフトから算術右シフトへの変換は例えば以下の処理を行えばよい。なお、第２実施形態の変形例２では、Xについて考慮する必要がある。以下の説明では、秘密計算を、2bを乗算した値に対して行っていることを明示的に示している。このため、例えば、[[B×2n]]は文字通りB×2nという値がシェアされていることを表している。
【０１１７】
精度n[bit]の値aをm[bit]に右シフトすると同時に2Xで割り算をする場合、|a|≦Aとなる精度n[bit]の値Aを加算する。
【０１１８】
B×2n=a×2n+A×2n
【０１１９】
B×2nをn-m+X[bit]ぶん論理右シフトする。
【０１２０】
B×2m/(2X)=rlshift(B×2n,n-m+X)
【０１２１】
シフト前に加算したAを引く。
【０１２２】
a×2m/2X=B×2m/2X-A×2m/2X
【０１２３】
eの精度はb_y+b_xであるため、モデルパラメータ更新部２３０は、まず、|e|≦Aとなる精度b_y+b_xの値Aを定める。そして、モデルパラメータ更新部２３０は、B×2n=e×2n+A×2nを満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新部２３０は、計算されたシェア[[B×2n]]に基づいて、B×2m/(2X)=rlshift([[B×2n]],b_y+b_x-(X+b_y+b_x-b_w)+X)を満たすB×2m/(2X)のシェア[[B×2m/(2X)]]を計算する。そして、モデルパラメータ更新部２３０は、計算されたシェア[[B×2m/(2X)]]に基づいて、a×2m/2X=B×2m/2X-A×2m/2Xを満たすa×2m/2Xのシェア[[a×2m/2X]]を計算する。計算された[[a×2m/2X]]が、上記の説明における[[eta_grad_ave]]となる。
【０１２４】
このように、右シフトを取り入れることで、より高精度な計算や大規模な学習データの処理が可能となる。
【０１２５】
<<第２実施形態の変形例３>>
第２実施形態のロジスティック回帰を行う際に、右シフトを用いてデータを秘匿したまま正規化を行ってもよい。例えば身長と年齢などの値域の異なるデータを全て0から1などの特定の範囲に収まるようにする前処理である正規化は、機械学習全般でよく用いられている。そのため、秘密計算上の機械学習を実運用可能なものにするためには、正規化を秘密計算上でできる必要がある。
【０１２６】
あるデータ列x→=x0,x1,…,xmを、0≦^xi≦1と(^xiは^x→の任意の要素)なるように正規化する場合、x→の最大値maxx→と最小値minx→を用いて以下のような性質を持つシフト量Sを計算する。
【０１２７】
2S≧max(|maxx→|,|minx→|)  …(A)max(a,b)は、aとbの大きい方の値を示す。上記の計算で得たシフトS量を用いて以下の計算を行うと、0≦^xi≦1となるように正規化できる。
【０１２８】
^x→=rshift(x→,S)
【０１２９】
^x→を用いて学習することで得られたモデルパラメータ^w→=^w0,^w1,…,^wnを、正規化せずに計算した場合のパラメータw→に戻す場合は、以下の計算を行えばよい。
【０１３０】
w→=^w→×2-S  …(B)
【０１３１】
以下、第２実施形態の秘密ロジスティック回帰計算装置２００と異なる部分を中心に説明する。
【０１３２】
第２実施形態の変形例３の秘密ロジスティック回帰計算装置２００は、まず、上記式(A)を満たすシフト量Sj(j=0,1,…,n)を各説明変数xj→に対して計算する。そして、秘密ロジスティック回帰計算装置２００は、計算されたシフト量S及び[[xj→]]を用いて、[[^xj→]]=rshift([[xj→]],Sj)を計算する。秘密ロジスティック回帰計算装置２００は、[[xi→]]に代えて[[^xi→]]を用いて、上記の初期化手段２１０、誤差計算手段２２０及びモデルパラメータ更新手段２３０の処理を行うことにより、モデルパラメータのシェア[[^w→]]を計算する。最後に、秘密ロジスティック回帰計算装置２００は、[[^w→]]を用いて、[[w→]]=[[^w→]]×2-Sを計算する。
【０１３３】
このように、正規化を行うことにより、秘密計算上の機械学習を実運用可能なものにすることができる。
【０１３４】
<<第２実施形態の変形例４>>
第２実施形態のロジスティック回帰を行う際に、Nesterov Accelerated Gradient(NAG)法を適用してもよい。単純な勾配降下法を用いてパラメータ学習を行うと学習効率が良くないため、実際には学習効率を上げるために最適化手法を取り入れる場合が多い。しかし、多くの最適化手法は除算などの秘密計算が苦手とする計算を含むため、秘密計算でパラメータ学習を行う際に最適化手法を取り入れることは容易ではない。そのような状況の中で、NAG法は、加減乗算のみで実現できる最適化手法であり、低コストで秘密計算に取り入れることができる。
【０１３５】
勾配降下法でのパラメータ学習式は以下である。
【０１３６】
wj,t+1=wj,t-η(1/m)Σi=0m(f(xi→)t-yi)xi,j
f(xi→)=σ(w→・(1,xi→))
【０１３７】
これに対して、NAG法を適用した場合のパラメータ学習式は以下のようになる。
【０１３８】
vj,t+1=αvj,t-η(1/m)Σi=0m(f(xi→)t-yi)xi,j
wj,t+1=wj,t-vj,t+1
f(xi→)=σ(θ→・(1,xi→))
θ→=w→-αv→
【０１３９】
v→は、第２実施形態の変形例４で新たに追加された重みのベクトルである。αは0≦α≦1となるパラメータ(減衰率)で任意に定めることができる。第２実施形態の変形例２にNAG法を適用した場合の変形例である第２実施形態の変形例４は、以下のようになる。
【０１４０】
以下、第２実施形態の変形例２の秘密ロジスティック回帰計算装置２００と異なる部分を中心に説明する。第２実施形態の変形例２と同様の部分については、重複説明を省略する。
【０１４１】
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、減衰率αの精度をb_αと表記し、v→,v0→,vt→,vt+1→,の精度をb_vと表記し、alpha_vの精度をb_v+b_αと表記する。b_w,b_x,b_y,b_αは、秘密計算を行うコンピュータの性能に応じて予め定められる正の整数である。なお、b_v+b_α=b_wとなるように、b_v+b_αを設定してもよい。これにより、処理が容易となる。
【０１４２】
初期化手段２１０は、モデルパラメータw→の初期値w0→のシェア[[w0→]]に加えて、重みベクトルv→の初期値のv0→のシェア[[v0→]]を設定する（Ｓ２１０）。具体的には、予め記録部２９０iに記録している、適切な初期値w0→のシェア[[w0→]]及び適切な初期値v0→のシェア[[v0→]]を設定するのでよい。
【０１４３】
誤差計算手段２２０は、まず、θ→=w→-αv→を計算する。そして、誤差計算手段２２０は、w→に代えてθ→を用いて上記と同様の誤差の計算を行う。
【０１４４】
第２実施形態の変形例４では、モデルパラメータ更新手段２３０は、下記の処理を行う。
【０１４５】
モデルパラメータ更新手段２３０は、j=0,…,nに対して、Ｓ２２０で計算した誤差[[di]](0≦i≦m-1)とシェア[[xi→]]の第j要素[[xi,j]](0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算する。
【０１４６】
第２実施形態の変形例２と同様にして、モデルパラメータ更新手段２３０は、[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)を計算する。
【０１４７】
モデルパラメータ更新手段２３０は、α及びシェア[[vt→]]の第j要素[[vj,t]](0≦i≦m-1)から、[[alpha_v]]=α[[vj,t]]を計算する。
【０１４８】
モデルパラメータ更新手段２３０は、[[vj,t+1]]=[[alpha_v]]-[[eta_grad_ave]]により、t+1回更新を行った重みベクトルv→の値vt+1→のシェア[[vt+1→]]の第j要素[[vj,t+1]]を計算する。
【０１４９】
モデルパラメータ更新部２３０は、シェア[[wt→]]の第j要素[[wj,t]]と[[vj,t+1]]から、[[wj,t+1]]=[[wj,t]]-[[vj,t+1]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算する。
【０１５０】
モデルパラメータ更新手段２３０は、[[vj,t+1]]から、[[vj,t+1]]=rshift([[vj,t+1]], b_α)を計算する。すなわち、モデルパラメータ更新手段２３０は、vj,t+1をb_αだけ右シフトした値のシェア[[vj,t+1]]を、新たなシェア[[vj,t+1]]とする。
【０１５１】
条件判定部２４０の処理は上記と同様である。
【０１５２】
このように、NAG法による最適化手法を用いることにより、学習効率を上げることができる。
【０１５３】
＜補記＞
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい）、メモリであるＲＡＭやＲＯＭ、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、ＣＤ−ＲＯＭなどの記録媒体を読み書きできる装置（ドライブ）などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【０１５４】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている（外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくこととしてもよい）。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。
【０１５５】
ハードウェアエンティティでは、外部記憶装置（あるいはＲＯＭなど）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にＣＰＵで解釈実行・処理される。その結果、ＣＰＵが所定の機能（上記、…部、…手段などと表した各構成要件）を実現する。
【０１５６】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【０１５７】
既述のように、上記実施形態において説明したハードウェアエンティティ（本発明の装置）における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【０１５８】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【０１５９】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１６０】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１６１】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2020071441.tif 000006
【図２】
2020071441.tif 000007
【図３】
2020071441.tif 000008
【図４】
2020071441.tif 000009
【図５】
2020071441.tif 000010
【図６】
2020071441.tif 000011
【図７】
2020071441.tif 000012
【図８】
2020071441.tif 000013
【手続補正書】
【提出日】令和3年3月17日(2021.3.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明の一態様による秘密ロジスティック回帰計算システムは、mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を前記の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、j=0, …, nに対して、前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段とを含む。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
本発明の一態様による秘密ロジスティック回帰計算システムは、mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を前記の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記し、b_w,b_x,b_y,b_η,b_m,H,b_tmpを予め定められた正の整数とし、rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとして、3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、j=0, …, nに対して、前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、前記η及び前記[[e]]から、[[eta_grad]]=η[[e]]により、[[eta_grad]]を計算し、前記[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)により、[[eta_grad_shift]]を計算し、前記[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]により、[[eta_grad_ave]]を計算し、前記[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)により、[[eta_grad_ave_shift]]を計算し、前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段とを含む。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
本発明の一態様による秘密ロジスティック回帰計算システムは、mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を前記の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、b_w,b_x,b_y,b_ηを予め定められた正の整数とし、rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとし、floorは切り捨てを表す関数とし、X=-(floor(log2(η/m)))として、3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、j=0, …, nに対して、前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、前記[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)により、[[eta_grad_ave]]を計算し、前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段とを含む。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
xから[[x]]を求める方法（秘匿化）、[[x]]からxを求める方法（復元）として、具体的には、参考非特許文献１、参考非特許文献２に記載の方法がある。
（参考非特許文献２：Shamir, A., “How to share a secret”, Communications of the ACM, Vol.22, No.11, pp.612-613, 1979.）
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
加算、乗算の具体的方法として、参考非特許文献３、参考非特許文献４に記載の方法がある。
（参考非特許文献３：Ben-Or, M., Goldwasser, S. and Wigderson, A., “Completeness theorems for non-cryptographic fault-tolerant distributed computation”, Proceedings of the twentieth annual ACM symposium on Theory of computing, ACM, pp. 1-10, 1988.）
（参考非特許文献４：Gennaro, R., Rabin, M. O. and Rabin, T., “Simplified VSS and fast-track multiparty computations with applications to threshold cryptography”, Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing, ACM, pp.101-111, 1998.）
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
図４に示すように秘密シグモイド関数計算装置１００iは、秘密一括写像計算部１１０iと、記録部１９０iを含む。記録部１９０iを除く秘密シグモイド関数計算装置１００iの各構成部は、秘密シグモイド関数計算アルゴリズムで必要とされる演算、つまり、少なくとも秘匿化、加算、乗算、エイチピーサム(hpsum)、秘密一括写像のうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献１〜５のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部１９０iは、秘密シグモイド関数計算装置１００iの処理に必要な情報を記録する構成部である。例えば、記録部１９０iは、秘密一括写像mapσの定義に必要となるシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）を記録しておく。ここで、先述したように、x=0付近（つまり、-ε<x<ε、ε(>0)は所定の実数）においてその他の範囲（つまり、x≦-εまたはx≧ε）よりも隣接する点の間隔が相対的に狭くなる（あるいは、点が相対的に多くなる）ようにパラメータ(a0, …, ak-1)を選択すると、x=0付近におけるシグモイド関数の近似精度を高くすることができる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
収束条件判定手段２４０は、事前に設定されたモデルパラメータ更新の繰り返し条件、つまり、t<Tを判定し、条件が満たされる場合はＳ２２０〜Ｓ２３０の処理を繰り返し、繰り返し条件が満たされない場合（所定の学習回数Tに達した場合）、シェア[[wT-1→]]をモデルパラメータw→のシェア[[w→]]として出力し、処理を終了する（Ｓ２４０）。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
最後に、モデルパラメータ更新手段２３０は、シェア[[wt→]]の第j要素[[wj,t]]と[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００８５
【補正方法】変更
【補正の内容】
【００８５】
収束条件判定手段２４０の処理は上記と同様である。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００９３
【補正方法】変更
【補正の内容】
【００９３】
すなわち、eta_gradの精度はb_y+b_x+b_ηであるため、モデルパラメータ更新部２３０は、まず、|eta_grad|≦Aとなる精度b_y+b_x+b_ηの値Aを定める。そして、モデルパラメータ更新手段２３０は、B×2n=eta_grad×2n+A×2nを満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新手段２３０は、計算されたシェア[[B×2n]]に基づいて、B×2m=rlshift([[B×2n]],b_y+b_x+b_η-(b_y+b_x+b_η-b_tmp))を満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新部２３０は、計算されたシェア[[B×2n]]に基づいて、a×2m=B×2m-A×2mを満たすa×2mのシェア[[a×2m]]を計算する。計算された[[a×2m]]が、上記の説明における[[eta_grad_shift]]となる。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００９４
【補正方法】変更
【補正の内容】
【００９４】
また、eta_grad_aveの精度はb_tmp+b_m+Hであるため、モデルパラメータ更新部２３０は、まず、|eta_grad_ave|≦Aとなる精度b_tmp+b_m+Hの値Aを定める。そして、モデルパラメータ更新手段２３０は、B×2n=eta_grad_ave×2n+A×2nを満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新部２３０は、計算されたシェア[[B×2n]]に基づいて、B×2m=rlshift([[B×2n]],b_tmp+b_m+H-(b_tmp+b_m+H-b_w))を満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新手段２３０は、計算されたシェア[[B×2n]]に基づいて、a×2m=B×2m-A×2mを満たすa×2mのシェア[[a×2m]]を計算する。計算された[[a×2m]]が、上記の説明における[[eta_grad_ave_shift]]となる。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１０２
【補正方法】変更
【補正の内容】
【０１０２】
なお、第２実施形態の変形例２では、処理コストを低減するために、固定小数点数に対して秘密計算が行われる。すなわち、秘密計算の対象であるw等の値が小数を含む場合には、秘密計算は、この値に2bを乗算した値に対して行われるとする。この場合、その秘密計算の結果に対して2bを除算した値を計算することにより、もともと秘密計算の対象となっていた値に対応する秘密計算の結果が得られる。このときのbを、精度と呼ぶ。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１０３
【補正方法】変更
【補正の内容】
【０１０３】
すなわち、第２実施形態の変形例２では、秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表す。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１１４
【補正方法】変更
【補正の内容】
【０１１４】
最後に、モデルパラメータ更新手段２３０は、シェア[[wt→]]の第j要素[[wj,t]]と[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算する。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１１５
【補正方法】変更
【補正の内容】
【０１１５】
収束条件判定手段２４０の処理は上記と同様である。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０１２３
【補正方法】変更
【補正の内容】
【０１２３】
eの精度はb_y+b_xであるため、モデルパラメータ更新部２３０は、まず、|e|≦Aとなる精度b_y+b_xの値Aを定める。そして、モデルパラメータ更新部２３０は、B×2n=e×2n+A×2nを満たすB×2nのシェア[[B×2n]]を計算する。そして、モデルパラメータ更新手段２３０は、計算されたシェア[[B×2n]]に基づいて、B×2m/(2X)=rlshift([[B×2n]],b_y+b_x-(X+b_y+b_x-b_w)+X)を満たすB×2m/(2X)のシェア[[B×2m/(2X)]]を計算する。そして、モデルパラメータ更新手段２３０は、計算されたシェア[[B×2m/(2X)]]に基づいて、a×2m/2X=B×2m/2X-A×2m/2Xを満たすa×2m/2Xのシェア[[a×2m/2X]]を計算する。計算された[[a×2m/2X]]が、上記の説明における[[eta_grad_ave]]となる。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０１２７
【補正方法】変更
【補正の内容】
【０１２７】
2S≧max(|maxx→|,|minx→|)  …(A)
max(a,b)は、aとbの大きい方の値を示す。上記の計算で得たシフト量Sを用いて以下の計算を行うと、0≦^xi≦1となるように正規化できる。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０１３２
【補正方法】変更
【補正の内容】
【０１３２】
第２実施形態の変形例３の秘密ロジスティック回帰計算装置２００は、まず、上記式(A)を満たすシフト量Sj(j=0,1,…,n)を各説明変数xj→に対して計算する。そして、秘密ロジスティック回帰計算装置２００は、計算されたシフト量Sj及び[[xj→]]を用いて、[[^xj→]]=rshift([[xj→]],Sj)を計算する。秘密ロジスティック回帰計算装置２００は、[[xi→]]に代えて[[^xi→]]を用いて、上記の初期化手段２１０、誤差計算手段２２０及びモデルパラメータ更新手段２３０の処理を行うことにより、モデルパラメータのシェア[[^w→]]を計算する。最後に、秘密ロジスティック回帰計算装置２００は、[[^w→]]を用いて、[[w→]]=[[^w→]]×2-Sを計算する。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０１４１
【補正方法】変更
【補正の内容】
【０１４１】
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、減衰率αの精度をb_αと表記し、v→,v0→,vt→,vt+1→の精度をb_vと表記し、alpha_vの精度をb_v+b_αと表記する。b_w,b_x,b_y,b_αは、秘密計算を行うコンピュータの性能に応じて予め定められる正の整数である。なお、b_v+b_α=b_wとなるように、b_v+b_αを設定してもよい。これにより、処理が容易となる。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】０１５１
【補正方法】変更
【補正の内容】
【０１５１】
収束条件判定手段２４０の処理は上記と同様である。
【手続補正２１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
mapσをシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像とし、
3個以上の秘密シグモイド関数計算装置で構成され、入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、入力ベクトルx→に対するシグモイド関数の値y→=(y0, …, ym-1)のシェア[[y→]]=([[y0]], …, [[ym-1]])を計算する秘密シグモイド関数計算システムであって、
前記シェア[[x→]]から、mapσ([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])（ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）を計算し、([[y0]], …, [[ym-1]])=([[σ(af(0))]], …, [[σ(af(m-1))]])により、前記シェア[[y→]]を計算する秘密一括写像計算手段と
を含む秘密シグモイド関数計算システム。
【請求項２】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段と
を含む秘密ロジスティック回帰計算システム。
【請求項３】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記し、
b_w,b_x,b_y,b_η,b_m,H,b_tmpを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとして、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記η及び前記[[e]]から、[[eta_grad]]=η[[e]]により、[[eta_grad]]を計算し、
前記[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)により、[[eta_grad_shift]]を計算し、
前記[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]により、[[eta_grad_ave]]を計算し、
前記[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)により、[[eta_grad_ave_shift]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段と
を含む秘密ロジスティック回帰計算システム。
【請求項４】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項１に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、
b_w,b_x,b_y,b_ηを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとし、
floorは切り捨てを表す関数とし、X=-(floor(log2(η/m)))として、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムであって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化手段と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算手段と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)により、[[eta_grad_ave]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新手段と
を含む秘密ロジスティック回帰計算システム。
【請求項５】
mapσをシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像とし、
入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、入力ベクトルx→に対するシグモイド関数の値y→=(y0, …, ym-1)のシェア[[y→]]=([[y0]], …, [[ym-1]])を計算する、3個以上の秘密シグモイド関数計算装置で構成される秘密シグモイド関数計算システムの中の秘密シグモイド関数計算装置であって、
前記シェア[[x→]]から、mapσ([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])（ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）を計算し、([[y0]], …, [[ym-1]])=([[σ(af(0))]], …, [[σ(af(m-1))]])により、前記シェア[[y→]]を計算するための秘密一括写像計算部と
を含む秘密シグモイド関数計算装置。
【請求項６】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を、3個以上の、請求項５に記載の秘密シグモイド関数計算装置で構成される秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する、3個以上の秘密ロジスティック回帰計算装置で構成される秘密ロジスティック回帰計算システムの中の秘密ロジスティック回帰計算装置であって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定するための初期化部と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算するための誤差計算部と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するためのモデルパラメータ更新部と
を含む秘密ロジスティック回帰計算装置。
【請求項７】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項５に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記し、
b_w,b_x,b_y,b_η,b_m,H,b_tmpを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとして、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムの中の秘密ロジスティック回帰計算装置であって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化部と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算部と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記η及び前記[[e]]から、[[eta_grad]]=η[[e]]により、[[eta_grad]]を計算し、
前記[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)により、[[eta_grad_shift]]を計算し、
前記[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]により、[[eta_grad_ave]]を計算し、
前記[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)により、[[eta_grad_ave_shift]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新部と
を含む秘密ロジスティック回帰計算装置。
【請求項８】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項５に記載の秘密シグモイド関数計算システムを用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、
b_w,b_x,b_y,b_ηを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとし、
floorは切り捨てを表す関数とし、X=-(floor(log2(η/m)))として、
3個以上の秘密ロジスティック回帰計算装置で構成され、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算システムの中の秘密ロジスティック回帰計算装置であって、
モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化部と、
i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算部と、
j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)により、[[eta_grad_ave]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新部と
を含む秘密ロジスティック回帰計算装置。
【請求項９】
mapσをシグモイド関数σ(x)の定義域を表すパラメータ(a0, …, ak-1)と値域を表すパラメータ(σ(a0), …, σ(ak-1)) （ただし、kは1以上の整数、a0, …, ak-1はa0<…<ak-1を満たす実数）により定義される秘密一括写像とし、
3個以上の秘密シグモイド関数計算装置で構成される秘密シグモイド関数計算システムが、入力ベクトルx→=(x0, …, xm-1)のシェア[[x→]]=([[x0]], …, [[xm-1]])から、入力ベクトルx→に対するシグモイド関数の値y→=(y0, …, ym-1)のシェア[[y→]]=([[y0]], …, [[ym-1]])を計算する秘密シグモイド関数計算方法であって、
前記秘密シグモイド関数計算システムが、前記シェア[[x→]]から、mapσ([[x→]])=([[σ(af(0))]], …, [[σ(af(m-1))]])（ただし、f(i)(0≦i≦m-1)は、aj≦xi<aj+1となるj）を計算し、([[y0]], …, [[ym-1]])= ([[σ(af(0))]], …, [[σ(af(m-1))]])により、前記シェア[[y→]]を計算する秘密一括写像計算ステップと
を含む秘密シグモイド関数計算方法。
【請求項１０】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項９に記載の秘密シグモイド関数計算方法を用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
3個以上の秘密ロジスティック回帰計算装置で構成される秘密ロジスティック回帰計算システムが、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算方法であって、
前記秘密ロジスティック回帰計算システムが、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化ステップと、
前記秘密ロジスティック回帰計算システムが、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算ステップと、
前記秘密ロジスティック回帰計算システムが、j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[e]]から、[[wj,t+1]]=[[wj,t]]-η(1/m)[[e]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新ステップと
を含む秘密ロジスティック回帰計算方法。
【請求項１１】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項９に記載の秘密シグモイド関数計算方法を用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_ave_shiftの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、学習データ数の逆数1/mの精度をb_m+H[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、eta_gradの精度をb_y+b_x+b_η[bit]と表記し、eta_grad_shiftの精度をb_tmp[bit]と表記し、eta_grad_aveの精度をb_tmp+b_m+H[bit]と表記し、
b_w,b_x,b_y,b_η,b_m,H,b_tmpを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとして、
3個以上の秘密ロジスティック回帰計算装置で構成される秘密ロジスティック回帰計算システムが、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算方法であって、
前記秘密ロジスティック回帰計算システムが、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化ステップと、
前記秘密ロジスティック回帰計算システムが、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算ステップと、
前記秘密ロジスティック回帰計算システムが、j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記η及び前記[[e]]から、[[eta_grad]]=η[[e]]により、[[eta_grad]]を計算し、
前記[[eta_grad]]から、[[eta_grad_shift]]=rshift([[eta_grad]], b_y+b_x+b_η-b_tmp)により、[[eta_grad_shift]]を計算し、
前記[[eta_grad_shift]]から、[[eta_grad_ave]]=(1/m)[[eta_grad_shift]]により、[[eta_grad_ave]]を計算し、
前記[[eta_grad_ave]]から、[[eta_grad_ave_shift]]=rshift([[eta_grad_ave]], b_tmp+b_m+H-b_w)により、[[eta_grad_ave_shift]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave_shift]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave_shift]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新ステップと
を含む秘密ロジスティック回帰計算方法。
【請求項１２】
mを1以上の整数、ηを0<η<1を満たす実数、Sigmoid([[x]])を請求項９に記載の秘密シグモイド関数計算方法を用いて入力ベクトルx→のシェア[[x→]]から、入力ベクトルx→に対するシグモイド関数の値y→のシェア[[y→]]を計算する関数とし、
秘密計算の対象となる任意の値をpとし、pの精度をb_p[bit]と表記した場合には、pのシェア[[p]]は実際には[[p×2b_p]]という固定小数点数のシェアであることを表し、
秘密計算の対象となる任意のベクトルをq→とし、q→の要素をqiとし、q→の精度をb_q[bit]と表記した場合には、q→のシェア[[q→]]は実際には[[qi×2b_q]]という固定小数点数のシェアにより構成されることを表し、
w→,w0→,wt→,wt+1→,eta_grad_aveの精度をb_w[bit]と表記し、xi→(0≦i≦m-1)の精度をb_x[bit]と表記し、yi(0≦i≦m-1),ci(0≦i≦m-1),di(0≦i≦m-1)の精度をb_y[bit]と表記し、ηの精度をb_η[bit]と表記し、bi(0≦i≦m-1)の精度をb_w+b_x[bit]と表記し、eの精度をb_y+b_x[bit]と表記し、
b_w,b_x,b_y,b_ηを予め定められた正の整数とし、
rshift(a,b)は、aという値をb[bit]だけ算術右シフトすることを表わすとし、
floorは切り捨てを表す関数とし、X=-(floor(log2(η/m)))として、
3個以上の秘密ロジスティック回帰計算装置で構成される秘密ロジスティック回帰計算システムが、説明変数のデータxi→のシェア[[xi→]](0≦i≦m-1)、目的変数のデータyiのシェア[[yi]](0≦i≦m-1)から、ロジスティック回帰モデルのモデルパラメータw→のシェア[[w→]]を計算する秘密ロジスティック回帰計算方法であって、
前記秘密ロジスティック回帰計算システムが、モデルパラメータw→の初期値w0→のシェア[[w0→]]を設定する初期化ステップと、
前記秘密ロジスティック回帰計算システムが、i=0, …, m-1に対して、t回更新を行ったモデルパラメータw→の値wt→のシェア[[wt→]]と前記シェア[[xi→]]から、[[bi]]=hpsum([[wt→]], [[(1, xi→)]])により、[[bi]]を計算し、
前記[[bi]] (0≦i≦m-1)から、([[c0]],…, [[cm-1]])=Sigmoid(([[b0]],…, [[bm-1]]))により、([[c0]],…, [[cm-1]])を計算し、
i=0, …, m-1に対して、前記シェア[[yi]]と前記([[c0]],…, [[cm-1]])の第i要素[[ci]]から、[[di]]=[[ci]]-[[yi]]により、誤差[[di]]を計算する誤差計算ステップと、
前記秘密ロジスティック回帰計算システムが、j=0, …, nに対して、
前記誤差[[di]] (0≦i≦m-1)と前記シェア[[xi→]]の第j要素[[xi,j]] (0≦i≦m-1)から、[[e]]=Σi=0m-1[[di]][[xi,j]]により、[[e]]を計算し、
前記[[e]]から、[[eta_grad_ave]]=rshift([[e]], X+b_y+b_x-b_w)により、[[eta_grad_ave]]を計算し、
前記シェア[[wt→]]の第j要素[[wj,t]]と前記[[eta_grad_ave]]から、[[wj,t+1]]=[[wj,t]]-[[eta_grad_ave]]により、t+1回更新を行ったモデルパラメータw→の値wt+1→のシェア[[wt+1→]]の第j要素[[wj,t+1]]を計算するモデルパラメータ更新ステップと
を含む秘密ロジスティック回帰計算方法。
【請求項１３】
請求項５に記載の秘密シグモイド関数計算装置または請求項６から８の何れかに記載の秘密ロジスティック回帰計算装置としてコンピュータを機能させるためのプログラム。
【国際調査報告】
2020071441.tif 000014
2020071441.tif 000015
2020071441.tif 000016
2020071441.tif 000017