(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-15
(45)【発行日】2024-10-23
(54)【発明の名称】学習装置、学習方法及び学習プログラム
(51)【国際特許分類】
G06N 3/08 20230101AFI20241016BHJP
G06N 3/094 20230101ALI20241016BHJP
【FI】
G06N3/08
G06N3/094
(21)【出願番号】P 2023523800
(86)(22)【出願日】2021-05-26
(86)【国際出願番号】 JP2021019982
(87)【国際公開番号】W WO2022249327
(87)【国際公開日】2022-12-01
【審査請求日】2023-08-23
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】金井 関利
(72)【発明者】
【氏名】井田 安俊
【審査官】佐藤 直樹
(56)【参考文献】
【文献】国際公開第2020/235011(WO,A1)
【文献】特開2021-022316(JP,A)
【文献】Gauri JAGATAP et al.,ADVERSARIALLY ROBUST LEARNING VIA ENTROPIC REGULARIZATION,arXiv[オンライン],v2,2021年02月19日,pp.1-19,[検索日 2024.06.17],インターネット:<URL: https://arxiv.org/pdf/2008.12338v2.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/08
G06N 3/094
(57)【特許請求の範囲】
【請求項1】
深層学習モデルに敵対的攻撃として作成されたデータを入力したときの目的関数を
計算するEntropy-SGD
の中で用いられる確率分布にしたがったパラメータの分散共分散行列を計算する計算部と、
前記目的関数が最適化されるように
、前記分散共分散行列を用いて前記深層学習モデルのパラメータを更新する更新部と、
を有することを特徴とする学習装置。
【請求項2】
前
記分散共分散行列である第1の行列をSGLD(Stochastic Gradient Langevin Dynamics)により計算し、
前記更新部は、前記第1の行列を用いて前記深層学習モデルのパラメータを更新することを特徴とする請求項1に記載の学習装置。
【請求項3】
前記計算部は、Entropy-SGDの中で用いられる確率分布にしたがったパラメータのSGLD(Stochastic Gradient Langevin Dynamics)により計算される分散共分散行列の共分散を0と仮定した第1の行列を計算し、
前記更新部は、前記第1の行列を用いて前記深層学習モデルのパラメータを更新することを特徴とする請求項1に記載の学習装置。
【請求項4】
前記更新部は、ヘッセ行列である前記第1の行列の逆行列を勾配に掛けて前記深層学習モデルのパラメータを更新することを特徴とする請求項2又は3に記載の学習装置。
【請求項5】
学習装置によって実行される学習方法であって、
深層学習モデルに敵対的攻撃として作成されたデータを入力したときの目的関数を
計算するEntropy-SGD
の中で用いられる確率分布にしたがったパラメータの分散共分散行列を計算する計算工程と、
前記目的関数が最適化されるように
、前記分散共分散行列を用いて前記深層学習モデルのパラメータを更新する更新工程と、
を含むことを特徴とする学習方法。
【請求項6】
コンピュータを、請求項1から4のいずれか一項に記載の学習装置として機能させるための学習プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習装置、学習方法及び学習プログラムに関する。
【背景技術】
【0002】
従来、深層学習及びディープニューラルネットワークは画像認識や音声認識等で大きな成功を収めている。例えば深層学習を使った画像認識では、画像を深層学習の多数の非線形関数を含んだモデルに入力すると、その画像が何を写しているのかという識別結果を出力する。特に畳み込みネットワークとReLUは画像認識において一般的に使用される。以降の説明では、深層学習によって訓練されるディープニューラルネットワークを、単に深層学習モデル又はモデルと呼ぶ場合がある。
【0003】
一方で、悪意ある攻撃者がノイズを入力画像に加えると、小さなノイズで簡単に深層学習モデルを誤識別させることができる(参考文献:Christian Szegedy, et al. “Intriguing properties of neural networks.” arXiv preprint: 1312.6199, 2013.)。このような攻撃は敵対的攻撃と呼ばれている。
【0004】
敵対的攻撃に対して深層学習をロバスト化する方法として、事前に敵対的攻撃を学習する際のデータとして加える敵対的学習が提案されている(例えば、非特許文献1及び2を参照)。
【0005】
ここで、敵対的学習において最適化される目的関数(損失関数)は滑らかではないため、通常の勾配を使った学習方法は効率的でない場合がある(例えば、非特許文献3を参照)。
【0006】
また、深層学習における目的関数の滑らかさを向上させる方法として、SGLD(参考文献:M. Welling and Y. W. Teh. “Bayesian learning via stochastic gradient Langevin dynamics.” In ICML, 2011.)を内部で使用したEntropy-SGDが提案されている(例えば、非特許文献4を参照)。
【先行技術文献】
【非特許文献】
【0007】
【文献】Goodfellow, Ian J., Jonathon Shlens, and Christian Szegedy. “Explaining and harnessing adversarial examples.” arXiv preprint: 1412.6572 2014.
【文献】Madry Aleksander, et al. “Towards deep learning models resistant to adversarial attacks.” arXivpreprint: 1706.06083, 2017.
【文献】Liu, Chen, et al. “On the Loss Landscape of Adversarial Training: Identifying Challenges and How to Overcome Them.” Advances in Neural Information Processing Systems 33 (2020).
【文献】Chaudhari, Pratik, et al. “Entropy-SGD: Biasing Gradient Descent into Wide Valleys.” arXivpreprint: 1611.01838 (2016).
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、従来の技術には、敵対的学習の目的関数を滑らかにしつつ学習効率を向上させることができない場合があるという問題がある。
【0009】
例えば、非特許文献に記載のノイズに対してロバストでない場合があるという問題がある。例えば、非特許文献4に記載のEntropy-SGDは目的関数を滑らかにするものであるが、学習効率が十分に高くない場合がある。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するために、学習装置は、深層学習モデルに敵対的攻撃として作成されたデータを入力したときの目的関数をEntropy-SGDにより計算する計算部と、前記目的関数が最適化されるように前記深層学習モデルのパラメータを更新する更新部と、を有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、深層学習モデルをノイズに対してロバストにすることができる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、深層学習モデル全体の構造を例示する図である。
【
図2】
図2は、第1の実施形態の学習装置の構成例を示す図である。
【
図3】
図3は、Entropy-SGDのアルゴリズムを説明する図である。
【
図4】
図4は、実施形態のアルゴリズムを説明する図である。
【
図5】
図5は、実施形態のアルゴリズムを説明する図である。
【
図6】
図6は、深層学習の流れを示すフローチャートである。
【
図7】
図7は、Entropy-SGDを使った学習の流れを示すフローチャートである。
【
図8】
図8は、学習における更新処理の流れを示すフローチャートである。
【
図9】
図9は、実施形態による更新処理の流れを示すフローチャートである。
【
図10】
図10は、実施形態による更新処理の流れを示すフローチャートである。
【
図11】
図11は、敵対的学習における更新処理の流れを示すフローチャートである。
【
図12】
図12は、敵対的学習における実施形態による更新処理の流れを示すフローチャートである。
【
図13】
図13は、敵対的学習における実施形態による更新処理の流れを示すフローチャートである。
【
図14】
図14は、プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0013】
(深層学習)
まず、
図1を用いて深層学習モデルについて説明する。
図1は、深層学習モデル全体の構造を例示する図である。なお、以降の説明では深層学習は学習装置10aによって実行されるものとする。
【0014】
図1に示すように、深層学習モデルは、信号が入る入力層、入力層からの信号を変換する1つ以上の中間層、中間層からの信号を確率等の出力に変換する最終層を有する。
【0015】
図6は、深層学習の流れを示すフローチャートである。
図6に示すように、まず、学習装置10aは、あらかじめ用意されたデータセットからランダムに選択された入力を識別器に印加する(ステップS101)。
【0016】
次に、学習装置10aは、識別器の出力を計算し、それとデータセットのラベルを使用して損失関数を計算する(ステップS102)。そして、学習装置10aは、損失関数の勾配を使って識別器のパラメータを更新する(ステップS103)。なお、損失関数は目的関数の一例である。
【0017】
評価基準が満たされない場合(ステップS104、No)、学習装置10aはステップS101に戻り処理を繰り返す。一方、評価基準が満たされる場合(ステップS104、Yes)、学習装置10aは処理を終了する。
【0018】
例えば、学習装置10aは、損失関数が小さくなるようにパラメータを更新する。損失関数は通常、識別器の出力とラベルが一致するほど小さくなる関数が設定されるため、学習処理により識別器が入力のラベルを識別できるようになる。
【0019】
また、ステップS104の評価基準は、例えば別途用意したデータセットを正しく識別できるか否か等である。
【0020】
以降、図面及び数式等の表記において、大文字の太字は行列を表し、小文字の太字は列ベクトルを表すものとする。また、行ベクトルは転置を使って表現される。
【0021】
また、ここでは深層学習による画像認識を例として説明するが、実施形態は画像認識以外の様々な識別タスクに適用できる。
【0022】
深層学習による画像認識として、画像x∈RC×H×Wを認識し、M個のラベルからその画像のラベルyを求める問題を考える。ただし、Cは画像のチャネル(RGB形式の場合3チャネル)、Hは縦の大きさ、Wは横の大きさとする。
【0023】
このとき深層学習のモデルは非線形関数と線形演算を繰り返して最終層でsoftmax関数と呼ばれる関数を通して出力を出す。いまモデルで変換されて最終的にsoftmax に入力されるベクトルをzθ(x)=[zθ,1(x),zθ,2(x),…,zθ,M(x)]Tとする。
【0024】
ここでθ∈Rdは深層学習のモデルのパラメータベクトルであり、このzθ(x)はlogitと呼ばれる。softmax 関数をfs(・)とすると、モデルの出力はsoftmaxの出力fs(zθ(x))∈RMであり、k番目の出力は(1)式である。
【0025】
【0026】
(1)式の出力はクラス分類において各ラベルに対するスコアを表し、(2)式によって得られるiが最も大きなスコアを持つ出力の要素が深層学習の認識結果である。
【0027】
【0028】
画像認識はクラス分類の1つであり、分類を行うモデルfs(zθ(・))を識別器と呼ぶ。パラメータθは事前に用意したN個のデータセット{(xi,yi)}、i=1,…,Nから学習する。この学習ではクロスエントロピー等のyi=argmaxk[fs(zθ(x))]kと正しく認識できるほど小さな値となるような損失関数l(x,y,θ)を設定し、そのデータでの平均に対して(3)式のように最適化を行ってθを求める。
【0029】
【0030】
学習は損失関数の勾配に基づく最適化によって行い、(4)式の計算を繰り返し行うことによってθを求める。
【0031】
【0032】
ここでηは学習率と呼ばれるパラメータである。勾配を使った最適化においてより効率的に最適化を行う方法としてニュートン法と呼ばれる方法があり、(5)式の最適化を行う。
【0033】
【0034】
さらに、モデルを頑健にするための敵対的学習では、(6)式の最適化によりθが求められる。
【0035】
【0036】
ここで、B(xi)はxiを中心とした距離εの領域であり、最大化して得られるx´iは敵対的攻撃と呼ばれる。
【0037】
(Entropy-SGD)
深層学習において滑らかさを改善する方法としてEntropy-SGDがある。元々の損失関数L(x,y,θ)に対して、Entropy-SGDは(7)式の損失関数を最小化する。
【0038】
【0039】
(7)式は、(8)式に示す確率密度関数pθ(θ′)の局所エントロピーである。
【0040】
【0041】
(7)式の損失関数の勾配は、(9)式により表される。
【0042】
【0043】
ここでEpθ(θ′)[θ′]は、確率密度関数pθ(θ′)の期待値である。
【0044】
ここで説明したEntropy-SGDのアルゴリズムを
図3に示す。
図3は、Entropy-SGDのアルゴリズムを説明する図である。
【0045】
また、
図7は、Entropy-SGDを使った学習の流れを示すフローチャートである。
【0046】
図7に示すように、まず、学習装置10aは、パラメータを初期化する(ステップS201)。次に、学習装置10aは、Entropy-SGDを使ったパラメータの更新を行う(ステップS202)。
【0047】
評価基準が満たされない場合(ステップS203、No)、学習装置10aはステップS202に戻り処理を繰り返す。一方、評価基準が満たされる場合(ステップS203、Yes)、学習装置10aは処理を終了する。
【0048】
ここで、
図3の3行目から8行目では、Stochastic Gradient Langevin Dynamics(SGLD)と呼ばれる方法でE
pθ(θ′)[θ′]を近似的に求めている。
【0049】
図8は、学習における更新処理の流れを示すフローチャートである。
図8の破線で囲まれた部分は、
図3の3行目から8行目、すなわちSGLDによるθ′の期待値を計算する処理に相当する。
【0050】
図8に示すように、まず、学習装置10aはlを1だけ増加させる(ステップS301)。そして、学習装置10aは、データセットからランダムに選択された入力を識別器に印加する(ステップS302)。
【0051】
ここで、学習装置10aは、勾配を計算してpθ(θ′)に従うθ′のサンプリング及びこれを使ったθ′の平均を更新する(ステップS303)。
【0052】
ここで、lがL以下である場合(ステップS304、Yes)、学習装置10aはステップS301に戻り処理を繰り返す。一方、lがL以下でない場合(ステップS304、No)、学習装置10aはモデルパラメータを更新する(ステップS305)。
【0053】
[実施形態の学習装置]
図2を用いて、第1の実施形態に係る学習装置の構成について説明する。
図2は、第1の実施形態の学習装置の構成例を示す図である。学習装置10は、学習用データセットの入力を受け付け、モデルの学習を行い、学習済みモデルを出力する。
【0054】
学習装置10の各部について説明する。
図2に示すように、学習装置10は、インタフェース部11、記憶部12及び制御部13を有する。
【0055】
インタフェース部11は、データの入力及び出力のためのインタフェースである。例えば、インタフェース部11はNIC(Network Interface Card)を含む。また、インタフェース部11は、マウスやキーボード等の入力装置、及びディスプレイ等の出力装置を含んでいてもよい。
【0056】
記憶部12は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置である。なお、記憶部12は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等のデータを書き換え可能な半導体メモリであってもよい。記憶部12は、学習装置10で実行されるOS(Operating System)や各種プログラムを記憶する。また、記憶部12は、モデル情報121を記憶する。
【0057】
モデル情報121は、深層学習モデル(識別器)を構築するためのパラメータ等の情報である。例えば、モデル情報121は、ディープニューラルネットワークの各層の重み及びバイアス等を含む。また、モデル情報121によって構築される深層学習モデルは、学習済みのものであってもよいし、学習前のものであってもよい。
【0058】
制御部13は、学習装置10全体を制御する。制御部13は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。また、制御部13は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部13は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部13は、計算部131及び更新部132を有する。
【0059】
ここで、前述の通り、深層学習の損失関数L(x,y,θ)は敵対的学習等を行う場合、滑らかでない関数となる。その場合は勾配に基づく最適化は効率的ではない。
【0060】
そこで、敵対的学習の目的関数を滑らかにしつつ学習効率を向上させるために、学習装置10は以下のような構成を有する。すなわち、計算部131は、深層学習モデルに敵対的攻撃として作成されたデータを入力したときの目的関数をEntropy-SGDにより計算する。また、更新部132は、目的関数が最適化されるように深層学習モデルのパラメータを更新する。
【0061】
学習装置10は、以下の実施例1、又は実施例1をさらに効率化した実施例2により学習を行うことができる。
【0062】
(実施例1)
学習装置10は、Entropy-SGDにおいてヘッセ行列が分散共分散行列になることを用いて、SGLDによって当該分散共分散行列を推定し、ニュートン法のようにヘッセ行列の逆行列を掛けることで効率化する。
【0063】
学習装置10は、Entropy-SGDのヘッセ行列を計算する。ヘッセ行列の(i,j)成分は(10)式のようになる。
【0064】
【0065】
(10)式の成分を含む行列は(11)式である。
【0066】
【0067】
ここでδi,jは、i=jのときに1、他は0となるデルタ関数であり、Iは単位行列である。Σθ′は確率密度関数pθ(θ′)の分散共分散行列である。
【0068】
この分散共分散行列を正確に求めるのは困難である。そこで、学習装置10は、期待値と同様にSGLDを使って
図4の疑似コードが示すアルゴリズムによって、分散共分散行列を近似する。
図4は、実施形態のアルゴリズムを説明する図である。
【0069】
学習装置10は、
図4の13行目から17行目でE
pθ[θ
i′θ
j′]を近似計算し、19行目から22行目でE
pθ[θ
i′θ
j′]-E
pθ[θ
i′]E
pθ[θ
j′]を近似計算し、24行目でヘッセ行列の逆行列を計算して勾配に掛けている。これによってニュートン法と同様に高速化が期待できる。
【0070】
また、この場合の更新処理の流れを
図9に示す。
図9は、実施形態による更新処理の流れを示すフローチャートである。
図9の処理は
図4のアルゴリズムに対応する。
【0071】
図9に示すように、まず、学習装置10はlを1だけ増加させる(ステップS401)。そして、学習装置10は、データセットからランダムに選択された入力を識別器に印加する(ステップS402)。
【0072】
ここで、学習装置10は、勾配を計算してpθ(θ′)に従うθ′のサンプリング及びこれを使ったθ′の平均を更新する(ステップS403)。
【0073】
さらに、学習装置10は、θ′を使って分散共分散行列を更新する(ステップS404)。
【0074】
ここで、lがL以下である場合(ステップS405、Yes)、学習装置10はステップS401に戻り処理を繰り返す。
【0075】
一方、lがL以下でない場合(ステップS405、No)、学習装置10は、単位行列と、推定(更新)された分散共分散からなる行列の逆行列を計算する(ステップS406)。そして、学習装置10は計算した逆行列を用いてモデルパラメータを更新する(ステップS407)。
【0076】
実施例1では、計算部131は、Entropy-SGDの中で用いられる確率分布にしたがったパラメータの分散共分散行列である第1の行列をSGLD(Stochastic Gradient Langevin Dynamics)により計算する。更新部132は、第1の行列を用いて深層学習モデルのパラメータを更新する。
【0077】
また、更新部132は、ヘッセ行列である第1の行列の逆行列を勾配に掛けて深層学習モデルのパラメータを更新する。
【0078】
(実施例2)
逆行列を計算するにはO(d3)の計算コストがかかるため、より効率的な方法として共分散を0と仮定してΣが各パラメータの分散からなる対角行列であると仮定する。すると、ヘッセ行列の逆行列は対角行列でその(i,i)成分は(12)式となる。
【0079】
【0080】
この場合、学習装置10は、分散の逆数を各パラメータに掛けるだけで済む。学習装置10は、
図5の疑似コードが示すアルゴリズムによって、共分散が0の分散共分散行列(分散行列)を近似する。
図5は、実施形態のアルゴリズムを説明する図である。
【0081】
学習装置10は、
図5の11行目から13行目でE
pθ[θ
i′θ
j′]を近似計算し、15行目から17行目でE
pθ[θ
i′θ
j′]-E
pθ[θ
i′]E
pθ[θ
j′]を近似計算し、18行目でヘッセ行列の逆行列を計算して勾配に掛けている。
【0082】
また、この場合の更新処理の流れを
図10に示す。
図10は、実施形態による更新処理の流れを示すフローチャートである。
図10の処理は
図5のアルゴリズムに対応する。
【0083】
図10に示すように、まず、学習装置10はlを1だけ増加させる(ステップS501)。そして、学習装置10は、データセットからランダムに選択された入力を識別器に印加する(ステップS502)。
【0084】
ここで、学習装置10は、勾配を計算してpθ(θ′)に従うθ′のサンプリング及びこれを使ったθ′の平均を更新する(ステップS503)。
【0085】
さらに、学習装置10は、θ′を使って分散を更新する(ステップS504)。
【0086】
ここで、lがL以下である場合(ステップS505、Yes)、学習装置10はステップS501に戻り処理を繰り返す。
【0087】
一方、lがL以下でない場合(ステップS505、No)、学習装置10は、単位行列と、推定(更新)された分散からなるベクトルを計算する(ステップS506)。そして、学習装置10は計算したベクトルを用いてモデルパラメータを更新する(ステップS507)。
【0088】
実施例2では、計算部131は、Entropy-SGDの中で用いられる確率分布にしたがったパラメータのSGLD(Stochastic Gradient Langevin Dynamics)により計算される分散共分散行列の共分散を0と仮定した第1の行列を計算する。更新部132は、第1の行列を用いて深層学習モデルのパラメータを更新する。
【0089】
これまで説明したEntropy-SGD、実施例1及び実施例2は、敵対的学習に適用可能である。特に実施例1及び実施例2を敵対的学習に適用することで、敵対的学習の目的関数を滑らかにしつつ学習効率を向上させるという効果が生じる。
【0090】
図11、
図12及び
図13は、それぞれEntropy-SGD、実施例1及び実施例2を敵対的学習に適用した場合の処理を示している。これらの処理においては、データセットからランダムに選択した入力を基に、敵対的攻撃が作成される。
【0091】
図11は、敵対的学習における更新処理の流れを示すフローチャートである。
図11に示すように、まず、学習装置10aはlを1だけ増加させる(ステップS601)。そして、学習装置10aは、データセットからランダムに入力を選択する(ステップS602)。
【0092】
ここで、学習装置10aは、選択した入力から敵対的攻撃を作成する(ステップS603)。そして、学習装置10aは、作成した敵対的攻撃を識別器に入力(印加)する(ステップS604)。
【0093】
ここで、学習装置10aは、勾配を計算してpθ(θ′)に従うθ′のサンプリング及びこれを使ったθ′の平均を更新する(ステップS605)。
【0094】
ここで、lがL以下である場合(ステップS606、Yes)、学習装置10aはステップS601に戻り処理を繰り返す。一方、lがL以下でない場合(ステップS606、No)、学習装置10aはモデルパラメータを更新する(ステップS607)。
【0095】
図12は、敵対的学習における実施形態による更新処理の流れを示すフローチャートである。
図12に示すように、まず、学習装置10はlを1だけ増加させる(ステップS701)。そして、学習装置10は、データセットからランダムに入力を選択する(ステップS702)。
【0096】
ここで、学習装置10は、選択した入力から敵対的攻撃を作成する(ステップS703)。そして、学習装置10は、作成した敵対的攻撃を識別器に入力(印加)する(ステップS704)。
【0097】
ここで、学習装置10は、勾配を計算してpθ(θ′)に従うθ′のサンプリング及びこれを使ったθ′の平均を更新する(ステップS705)。
【0098】
さらに、学習装置10は、θ′を使って分散共分散行列を更新する(ステップS706)。
【0099】
ここで、lがL以下である場合(ステップS707、Yes)、学習装置10はステップS701に戻り処理を繰り返す。
【0100】
一方、lがL以下でない場合(ステップS707、No)、学習装置10は、単位行列と、推定(更新)された分散共分散からなる行列の逆行列を計算する(ステップS708)。そして、学習装置10は計算した逆行列を用いてモデルパラメータを更新する(ステップS709)。
【0101】
図13は、敵対的学習における実施形態による更新処理の流れを示すフローチャートである。
図13に示すように、まず、学習装置10はlを1だけ増加させる(ステップS801)。そして、学習装置10は、データセットからランダムに入力を選択する(ステップS802)。
【0102】
ここで、学習装置10は、選択した入力から敵対的攻撃を作成する(ステップS803)。そして、学習装置10は、作成した敵対的攻撃を識別器に入力(印加)する(ステップS804)。
【0103】
ここで、学習装置10は、勾配を計算してpθ(θ′)に従うθ′のサンプリング及びこれを使ったθ′の平均を更新する(ステップS805)。
【0104】
さらに、学習装置10は、θ′を使って分散を更新する(ステップS806)。
【0105】
ここで、lがL以下である場合(ステップS807、Yes)、学習装置10はステップS801に戻り処理を繰り返す。
【0106】
一方、lがL以下でない場合(ステップS807、No)、学習装置10は、単位行列と、推定(更新)された分散からなるベクトルを計算する(ステップS808)。そして、学習装置10は計算したベクトルを用いてモデルパラメータを更新する(ステップS809)。
【0107】
[第1の実施形態の効果]
これまで説明してきたように、計算部131は、深層学習モデルに敵対的攻撃として作成されたデータを入力したときの目的関数をEntropy-SGDにより計算する。更新部132は、目的関数が最適化されるように深層学習モデルのパラメータを更新する。これにより、学習装置10は、敵対的学習の目的関数を滑らかにしつつ学習効率を向上させることができる。
【0108】
また、計算部131は、Entropy-SGDの中で用いられる確率分布にしたがったパラメータの分散共分散行列である第1の行列をSGLD(Stochastic Gradient Langevin Dynamics)により計算する。更新部132は、第1の行列を用いて深層学習モデルのパラメータを更新する。これにより、学習装置10は、敵対的学習の学習効率を向上させることができる。
【0109】
計算部131は、Entropy-SGDの中で用いられる確率分布にしたがったパラメータのSGLD(Stochastic Gradient Langevin Dynamics)により計算される分散共分散行列の共分散を0と仮定した第1の行列を計算する。更新部132は、第1の行列を用いて深層学習モデルのパラメータを更新する。これにより、学習装置10は、敵対的学習の学習効率をさらに向上させることができる。
【0110】
更新部132は、ヘッセ行列である第1の行列の逆行列を勾配に掛けて深層学習モデルのパラメータを更新する。これにより、学習装置10は勾配を滑らかにすることができる。
【0111】
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU(Central Processing Unit)及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0112】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0113】
[プログラム]
一実施形態として、学習装置10は、パッケージソフトウェアやオンラインソフトウェアとして上記の学習処理を実行するプログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記のプログラムを情報処理装置に実行させることにより、情報処理装置を学習装置10として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
【0114】
また、学習装置10は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の処理に関するサービスを提供するサーバ装置として実装することもできる。例えば、サーバ装置は、データセットを入力とし、学習済みの深層学習モデルを出力とするサービスを提供するサーバ装置として実装される。この場合、サーバ装置は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記の処理に関するサービスを提供するクラウドとして実装することとしてもかまわない。
【0115】
図14は、プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0116】
メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0117】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、学習装置10の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、学習装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0118】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020は、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した実施形態の処理を実行する。
【0119】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【符号の説明】
【0120】
10 学習装置
11 インタフェース部
12 記憶部
13 制御部
121 モデル情報
131 計算部
132 更新部