IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星電子株式会社の特許一覧

特許7571942ニューラルネットワークに対するプルーニングを行う方法及びその装置
<>
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図1
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図2A
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図2B
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図3
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図4
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図5A
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図5B
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図5C
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図5D
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図6
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図7
  • 特許-ニューラルネットワークに対するプルーニングを行う方法及びその装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-15
(45)【発行日】2024-10-23
(54)【発明の名称】ニューラルネットワークに対するプルーニングを行う方法及びその装置
(51)【国際特許分類】
   G06N 3/082 20230101AFI20241016BHJP
【FI】
G06N3/082
【請求項の数】 22
(21)【出願番号】P 2020146931
(22)【出願日】2020-09-01
(65)【公開番号】P2021047854
(43)【公開日】2021-03-25
【審査請求日】2023-09-01
(31)【優先権主張番号】10-2019-0113527
(32)【優先日】2019-09-16
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】趙 民▲ぎょん▼
(72)【発明者】
【氏名】李 ▲うぉん▼祚
(72)【発明者】
【氏名】李 承遠
【審査官】佐藤 直樹
(56)【参考文献】
【文献】米国特許出願公開第2019/0362235(US,A1)
【文献】特開平05-197821(JP,A)
【文献】米国特許出願公開第2016/0358070(US,A1)
【文献】五十嵐 碧 他,畳み込みニューラルネットワークにおける重みカーネルの分布に基づいた層ごとの最適なプルーニング,令和2年電気学会全国大会講演論文集 一般講演3,2020年03月13日,pp.120-121
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/082
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークに対するプルーニングを行う方法において、
前記ニューラルネットワークに含まれるレイヤの重み分布に基づき、目標プルーニングの比率で、前記ニューラルネットワークをプルーニングするための重み閾値を設定する段階と、
与えられたデータセットに含まれる各クラスからランダム抽出された所定個数のデータソースから設けられたプルーニングデータセットを利用し、前記重み閾値に基づく各レイヤのプルーニングが、前記ニューラルネットワークの推論正確度の変化に及ぼす影響を予測する段階と、
前記予測された影響に基づき、前記ニューラルネットワークに含まれる前記レイヤのうちから、前記重み閾値でプルーニングされる現在対象レイヤを決定する段階と、
前記決定された現在対象レイヤをプルーニングする段階と、を含み、
前記ニューラルネットワークに対する前記プルーニングは、前記現在対象レイヤに対するプルーニングが完了した場合、前記ニューラルネットワークの残りレイヤに対して反復して遂行される方法。
【請求項2】
前記現在対象レイヤを決定する段階は、
前記ニューラルネットワークにおいて、以前にプルーニングされたレイヤを除いた残りレイヤのうちから、前記影響に最も低い敏感度を有すると予測されたレイヤを前記現在対象レイヤと決定する、請求項1に記載の方法。
【請求項3】
前記影響を予測する段階は、
各レイヤに対するプルーニングが行われる以前の推論正確度と、各レイヤに対するプルーニングが行われた後の推論正確度との差に基づく各レイヤ別敏感度を計算することにより、前記影響を予測する、請求項2に記載の方法。
【請求項4】
前記最も低い敏感度を有すると予測されたレイヤは、
前記ニューラルネットワークの推論正確度の低下に最も少ない影響を及ぼすと予測されたレイヤに該当する、請求項2に記載の方法。
【請求項5】
前記重み閾値を設定する段階は、
前記重み分布が標準正規分布に該当すると仮定した状態において、前記目標プルーニングの比率に対応する重み値を前記重み閾値に設定する、請求項1に記載の方法。
【請求項6】
前記現在対象レイヤをプルーニングする段階は、
前記プルーニングデータセットに対する前記ニューラルネットワークの推論正確度が臨界正確度に低下するまで、前記重み閾値を更新し、前記現在対象レイヤの重みのプルーニングの比率を調整することにより、前記現在対象レイヤをプルーニングする、請求項1に記載の方法。
【請求項7】
前記重み閾値の更新は、
現在重み閾値でプルーニングされた重みを含む前記ニューラルネットワークの推論正確度が臨界正確度まで低下していない場合、前記現在重み閾値を増加させる、請求項6に記載の方法。
【請求項8】
前記ニューラルネットワークに対する前記プルーニングは、
前記目標プルーニングの比率に達するか、あるいは前記ニューラルネットワークの全てのレイヤに対するプルーニングが完了した場合に終了する、請求項1に記載の方法。
【請求項9】
前記プルーニングデータセットを設ける段階をさらに含み、
前記プルーニングデータセットは、
前記与えられたデータセットに含まれるクラスごとに、所定個数のデータソースをランダム抽出して生成されたデータセットであるか、または前記与えられたデータセットから有効クラスを選別し、選別された有効クラスごとに、所定個数のデータソースをランダム抽出して生成されたデータセットである、請求項1に記載の方法。
【請求項10】
前記プルーニングデータセットを設ける段階は、
前記与えられたデータセットに含まれる各クラスから、所定個数のデータソースのサンプルをランダム抽出する段階と、
前記ニューラルネットワークを利用し、前記ランダム抽出されたサンプルに対する推論を行うことにより、各サンプルに対応するラベルを決定する段階と、
前記与えられたデータセットに含まれるクラスのうち、最も頻繁なラベルの比率が所定正確度以上であるクラスを有効クラスであると決定する段階と、
前記決定された有効クラスそれぞれから、所定個数のデータソースをランダム抽出する段階と、を含み、
前記プルーニングデータセットは、前記決定された有効クラスからランダム抽出された前記所定個数のデータソースに基づいて設けられる、請求項9に記載の方法。
【請求項11】
当該方法は、前記プルーニングデータセットを利用した前記ニューラルネットワークの再学習なしに、前記ニューラルネットワークに対する前記プルーニングを行う、請求項1に記載の方法。
【請求項12】
請求項1ないし11のうちいずれか1項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータ読み取り可能な非一時的な記録媒体。
【請求項13】
ニューラルネットワークに対するプルーニングを行う装置において、
メモリと、
プログラムを実行することにより、前記ニューラルネットワークに対する前記プルーニングを行う少なくとも1つのプロセッサと、を含み、
前記少なくとも1つのプロセッサは、
前記ニューラルネットワークに含まれるレイヤの重み分布に基づき、目標プルーニングの比率で、前記ニューラルネットワークをプルーニングするための重み閾値を設定し、
与えられたデータセットに含まれる各クラスからランダム抽出された所定個数のデータソースから設けられたプルーニングデータセットを利用し、前記重み閾値に基づく各レイヤのプルーニングが、前記ニューラルネットワークの推論正確度の変化に及ぼす影響を予測し、
前記予測された影響に基づき、前記ニューラルネットワークに含まれる前記レイヤのうちから、前記重み閾値でプルーニングされる現在対象レイヤを決定し、
前記決定された現在対象レイヤをプルーニングし、
前記少なくとも1つのプロセッサは、
前記現在対象レイヤに対するプルーニングが完了した場合、前記ニューラルネットワークの残りレイヤに対して反復して前記プルーニングを行う、装置。
【請求項14】
前記少なくとも1つのプロセッサは、
前記ニューラルネットワークにおいて、以前にプルーニングされたレイヤを除いた残りレイヤのうちから、前記影響に最も低い敏感度を有すると予測されたレイヤを前記現在対象レイヤと決定する、請求項13に記載の装置。
【請求項15】
前記少なくとも1つのプロセッサは、
各レイヤに対するプルーニングが行われる以前の推論正確度と、各レイヤに対するプルーニングが行われた後の推論正確度との差に基づく各レイヤ別敏感度を計算することにより、前記影響を予測する、請求項14に記載の装置。
【請求項16】
前記最も低い敏感度を有すると予測されたレイヤは、
前記ニューラルネットワークの推論正確度の低下に最も少ない影響を及ぼすと予測されたレイヤに該当する、請求項14に記載の装置。
【請求項17】
前記少なくとも1つのプロセッサは、
前記重み分布が標準正規分布に該当すると仮定した状態において、前記目標プルーニングの比率に対応する重み値を前記重み閾値に設定する、請求項13に記載の装置。
【請求項18】
前記少なくとも1つのプロセッサは、
前記プルーニングデータセットに対する前記ニューラルネットワークの推論正確度が臨界正確度に低下するまで、前記重み閾値を更新し、前記現在対象レイヤの重みのプルーニングの比率を調整することにより、前記現在対象レイヤをプルーニングする、請求項13に記載の装置。
【請求項19】
前記重み閾値の更新は、
現在重み閾値でプルーニングされた重みを含む前記ニューラルネットワークの推論正確度が臨界正確度まで低下していない場合、前記現在重み閾値を増加させるものである、請求項18に記載の装置。
【請求項20】
前記少なくとも1つのプロセッサは、
前記ニューラルネットワークに対する前記プルーニングが、前記目標プルーニングの比率に達するか、あるいは前記ニューラルネットワークの全てのレイヤに対するプルーニングが完了した場合、前記ニューラルネットワークに対する前記プルーニングを終了する、請求項13に記載の装置。
【請求項21】
前記プルーニングデータセットは、
前記与えられたデータセットに含まれるクラスごとに、所定個数のデータソースをランダム抽出して生成されたデータセットであるか、または前記与えられたデータセットから有効クラスを選別し、選別された有効クラスごとに、所定個数のデータソースをランダム抽出して生成されたデータセットである、請求項13に記載の装置。
【請求項22】
前記少なくとも1つのプロセッサは、
前記与えられたデータセットに含まれる各クラスから、所定個数のデータソースのサンプルをランダム抽出し、前記ニューラルネットワークを利用し、前記ランダム抽出されたサンプルに対する推論を行うことにより、各サンプルに対応するラベルを決定し、前記与えられたデータセットに含まれるクラスのうち、最も頻繁なラベルの比率が所定正確度以上であるクラスを有効クラスであると決定し、前記決定された有効クラスそれぞれから、所定個数のデータソースをランダム抽出することにより、前記プルーニングデータセットを設ける、請求項21に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークに対するプルーニング(pruning;剪定)を行う方法及びその装置に関する。
【背景技術】
【0002】
ニューラルネットワークは、コンピュータ科学的アキテクチャ(computational architecture)を参照して具現されたコンピュータシステムである。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワークを利用して入力データを分析し、有効な情報を抽出する研究が活発に進められている。
【0003】
ニューラルネットワークを処理する装置は、複雑な入力データに対する多量の演算を必要とする。ニューラルネットワークのデータ、学習量の増加により、ニューラルネットワークを構成するアキテクチャの連結性が複雑にもなり、過去の学習データについて、正確度が上昇する代わりに、新たなデータに対する予測値の信頼性が低下する過適合(over fitting)問題が発生しうる。また、ニューラルネットワークの複雑度の上昇は、メモリ割当量の過度な増大をもたらし、小型化及び商用化における非効率的な性能がもたらされる。従って、ニューラルネットワークの性能を維持しながら、ニューラルネットワーク具現において、システムコストを低減させるための圧縮方法が研究されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、ニューラルネットワークに対するプルーニングを行う方法及びその装置を提供することにある。本実施形態がなすべき技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されもする。
【課題を解決するための手段】
【0005】
一側面によれば、ニューラルネットワークに対するプルーニングを行う方法は、前記ニューラルネットワークに含まれるレイヤの重み分布に基づき、目標プルーニングの比率で、前記ニューラルネットワークをプルーニングするための重み閾値を設定する段階と、与えられたデータセットに含まれる各クラスからランダム抽出された所定個数のデータソースから設けられたプルーニングデータセットを利用し、前記重み閾値に基づく各レイヤのプルーニングが、前記ニューラルネットワークの推論正確度の変化に及ぼす影響を予測する段階と、前記予測された影響に基づき、前記ニューラルネットワークに含まれる前記レイヤのうちから、前記重み閾値でプルーニングされる現在対象レイヤを決定する段階と、前記決定された現在対象レイヤをプルーニングする段階と、を含み、前記ニューラルネットワークに対する前記プルーニングは、前記現在対象レイヤに対するプルーニングが完了した場合、前記ニューラルネットワークの残りレイヤに対して反復して行われる。
【0006】
他の側面によれば、コンピュータ読み取り可能な記録媒体は、前述の方法を実行する命令語を含む1以上のプログラムが記録された記録媒体を含んでもよい。
【0007】
さらに他の側面によれば、ニューラルネットワークに対するプルーニングを行う装置は、メモリと、プログラムを実行することにより、前記ニューラルネットワークに対する前記プルーニングを行う少なくとも1つのプロセッサと、を含み、前記少なくとも1つのプロセッサは、前記ニューラルネットワークに含まれるレイヤの重み分布に基づき、目標プルーニングの比率で、前記ニューラルネットワークをプルーニングするための重み閾値を設定し、与えられたデータセットに含まれる各クラスからランダム抽出された所定個数のデータソースから設けられたプルーニングデータセットを利用し、前記重み閾値に基づく各レイヤのプルーニングが、前記ニューラルネットワークの推論正確度の変化に及ぼす影響を予測し、前記予測された影響に基づき、前記ニューラルネットワークに含まれる前記レイヤのうちから、前記重み閾値でプルーニングされる現在対象レイヤを決定し、前記決定された現在対象レイヤをプルーニングし、前記少なくとも1つのプロセッサは、前記現在対象レイヤに対するプルーニングが完了した場合、前記ニューラルネットワークの残りレイヤに対して反復して前記プルーニングを行う。
【発明の効果】
【0008】
本実施形態によるニューラルネットワークプルーニング装置によって行われるニューラルネットワークプルーニング方法によれば、プルーニングデータセットを利用したニューラルネットワークの再学習なしに、ニューラルネットワークに対するプルーニングが行われるので、さらに効率的なニューラルネットワークのプルーニングも可能になる。
【図面の簡単な説明】
【0009】
図1】一実施形態によるニューラルネットワークについて説明するための図面である。
図2A】一実施形態によるニューラルネットワークのプルーニングについて説明するための図面である。
図2B】一実施形態によるニューラルネットワークのプルーニングについて説明するための図面である。
図3】一実施形態によるニューラルネットワークプルーニング装置のハードウェア構成を図示したブロック図である。
図4】一実施形態によるプルーニングデータセットについて説明するための図面である。
図5A】一実施形態によるプルーニングデータセットのタイプについて説明するための図面である。
図5B】一実施形態によるプルーニングデータセットのタイプについて説明するための図面である。
図5C】一実施形態によるプルーニングデータセットのタイプについて説明するための図面である。
図5D図5Cのプルーニングデータセット(第3タイプのプルーニングデータセット)を設ける過程についてさらに詳細に説明するための図面である。
図6】一実施形態によるニューラルネットワークプルーニングのための重み閾値設定について説明するための図面である。
図7】一実施形態によるニューラルネットワークプルーニングが行われるプロセスについて説明するための図面である。
図8】一実施形態によるニューラルネットワークに対するプルーニングを行う方法のフローチャートである。
【発明を実施するための形態】
【0010】
本実施形態で使用される用語は、可能な限り現在一般的に使用される一般的な用語を選択したが、それは、当分野に携わる技術者の意図または判例、新たな技術の出現などによっても異なる。また、特定の場合、出願人が任意に選定した用語もあり、その場合、当該説明部分で詳細にその意味を記載する。従って、明細書で使用される用語は、単純な用語の名称ではなく、その用語が有する意味と、明細書の全般にわたる内容とを基に定義されなければならない。
【0011】
本実施形態で使用される「構成される」または「含む」というような用語は、明細書上に記載されたさまざまな構成要素、またはさまざまな段階を必ずしもすべてを含むものであると解釈されるものではなく、そのうち、一部構成要素または一部段階は含まれず、またはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
【0012】
以下では、添付図面を参照し、本実施形態について詳細に説明する。しかし、本実施形態は、さまざまに異なる形態にも具現され、ここで説明する例に限定されるものではない。
【0013】
図1は、一実施形態によるニューラルネットワークについて説明するための図面である。
【0014】
ニューラルネットワークは、コンピュータ演算システムである。例えば、パターンの認識技術または分析技術の自動化は、プロセッサ具現(processor implemented)ニューラルネットワークモデルを介しても具現される。それは、実質的なトレーニング後、入力パターンと出力パターンとの間、または入力パターンのパターン認識間における計算的に直観的なマッピングを提供することができる特殊化されたコンピュータアキテクチャ(specialized computational architecture)である。そのようなマッピングを生成したり、パターン認識を遂行したりするトレーニング能力は、ニューラルネットワークの学習能力とも称される。そのようなトレーニング能力は、特殊化されたコンピュータアキテクチャが1以上の所定グループに属するメンバーとして、入力パターン、または入力パターンの一部を分類することができるようにする。特化されたトレーニングによってトレーニングされたニューラルネットワークは、例えば、ニューラルネットワークに入力されていない入力パターンについても、比較的正確であるか、あるいは信頼に足る出力を生成する一般化された能力を有することができる。
【0015】
深層ニューラルネットワーク(deep neural network)は、ニューラルネットワークを具現する1つの方式であり、ニューラルネットワークには、複数のレイヤが含まれてもよい。例えば、深層ニューラルネットワークは、入力データが適用される入力レイヤ(Input layer)、学習を基に、入力データに基づいた予測を介して導き出された結果を出力する出力レイヤ(output layer)、及び入力レイヤと出力レイヤとの間において、ニューラルネットワーク演算を行う多重の隠れ層(hidden layer)と、を含む。
【0016】
深層ニューラルネットワークは、情報を処理するために利用されるアルゴリズムにより、完全連結ネットワーク(fully connected network)、畳み込みニューラルネットワーク(convolutional neural network)、リカレントニューラルネットワーク(recurrent neural network)のような多様なタイプにも分類される。
【0017】
以下、ニューラルネットワーク技術分野での一般的な慣行と同様に、入力レイヤは、最下位レイヤ、出力レイヤは、最上位レイヤにも該当する。一方、最上位レイヤである出力レイヤから、最下位レイヤである入力レイヤまで順にレイヤ順位が指定されて命名されもする。例えば、隠れ層2は、隠れ層1及び入力レイヤより上位レイヤであるが、出力レイヤよりは、下位レイヤにも該当する。
【0018】
深層ニューラルネットワークは、複数のレイヤを含み、隣接したレイヤ間において、相対的上位レイヤが、相対的下位レイヤの出力値に重みを乗じてバイアスを適用した値を適用されて所定演算値を出力し、当該出力値は、当該上位レイヤの隣接上位レイヤに類似の方式によっても適用される。
【0019】
ニューラルネットワークを学習する方式をディープラーニング(deep learning)と言い、前述のように、ディープラーニングには、畳み込みニューラルネットワーク方式、リカレントニューラルネットワーク方式のように、多様なアルゴリズムが利用されもする。
【0020】
このとき、ニューラルネットワークの学習は、レイヤ間の重み及びバイアス、または隣接したレイヤにおいて、互いに異なるレイヤに属する複数のニューロン(または、ノード)間の重み及びバイアスを決定して更新することを意味する。
【0021】
例えば、レイヤ構造、またはレイヤとニューロンとの重み及びバイアスを総称し、ニューラルネットワークの連結性(connectivity)と定義することができる。従って、ニューラルネットワーク学習とは、連結性を構築して学習することを示すことができる。
【0022】
図1を参照すれば、複数のレイヤ101,103,105,107それぞれは、複数のノードを含んでもよい。該ノードは、ニューラルネットワークのニューロンを意味する。すなわち、以下の説明において、ニューロンという用語と、ノードという用語は、同一意味を示す。
【0023】
図1について述べれば、1レイヤの複数のノードと隣接したレイヤの複数ノードは、完全に連結されて(fully-connected)いる。例えば、隠れ層2 105のノード3-1は、隠れ層1 103の全てのノード、すなわち、ノード2-1ないしノード2-4のいずれとも連結され、それぞれのノードの出力値に対し、所定重みを乗じた値を入力される。
【0024】
入力レイヤ101に入力されたデータは、複数の隠れ層を経て処理されることにより、出力レイヤ107において、最終出力値109が出力される。このとき、重みが大きいほど、対応する2つのノード間の連結性が強化されることを意味し、重みが小さいほど、2つのノード間の連結性が弱化されることを意味する。例えば、重みは、0から1までの値を有し、重みが0である場合、2つのノード間の連結性がないということを意味する。ただし、重みの数値範囲は、それに制限されるものではなく、ニューラルネットワークの具現方式によって多様でもある。
【0025】
一方、重みを介した連結性が増大するほど、ニューラルネットワークの連結性が強化され、複雑性が増大するのである。それにより、重みを保存するためのメモリ割当量が増加し、ニューラルネットワーク全体の作業遂行速度が低下し、効率性が低下してしまう。従って、ニューラルネットワークの性能を維持しながら、ニューラルネットワークの大きさを小さくし、システムコストを低減し、ニューラルネットワークの具現において行われる演算量を減らす圧縮方法が望ましい。
【0026】
図2A及び図2Bは、一実施形態によるニューラルネットワークのプルーニング(pruning;剪定)について説明するための図面である。
【0027】
図2Aにおいて、ニューラルネットワーク210は、プルーニングが行われる前のニューラルネットワークに該当し、ニューラルネットワーク220は、プルーニングが行われた後のニューラルネットワークに該当する。該プルーニングは、粗い(coarse-grained)ニューラルネットワークプルーニング(例えば、ニューラルネットワークモデルにおいて、チャネル、カーネルまたはノードの除去)と、細かい(fine-grained)ニューラルネットワークプルーニング(例えば、ニューラルネットワークモデルにおいて、個別重みのプルーニング)とを含んでもよい。
【0028】
具体的には、ニューラルネットワーク210において、隣接した2つの互いに異なるレイヤに含まれる全ての2個のニューロン組み合わせの間には、連結関係が形成されている。すなわち、ニューラルネットワーク210は、完全連結されたニューラルネットワークであるので、ニューラルネットワーク210に含まれる隣接した互いに異なるレイヤに属した任意の2つのニューロン間の連結強度を示す重みは、0より大きい値でもある。そのように、全ての隣接レイヤのニューロン間の連結性が存在する場合には、ニューラルネットワーク全体の複雑度が増大し、それにより、ニューラルネットワークの予測結果は、過適合(over fitting)により、正確度、信頼度が低下してしまう。
【0029】
ニューラルネットワークの複雑度を低下させるために、ニューラルネットワークに対するプルーニングが行われ得る。
【0030】
ニューラルネットワークプルーニングは、例えば図2Aに図示されているように、ニューラルネットワーク210で連結されたいかなるノード間の重みでも、所定閾値以下である場合、当該ノード間の連結性を弱化または除去する処理を行うことを意味する。例えば、ニューラルネットワーク210において、ノード1とノード2-3との重みが、所定閾値以下である場合、プルーニングは、ニューラルネットワーク210において、ノード1とノード2-3との重みを0に設定することにより、プルーニングされたニューラルネットワーク220のように、ノード1とノード2-3の連結性を除去する処理である。同様に、プルーニングされたニューラルネットワーク220においては、ニューラルネットワーク210における一部ノード間の連結性が弱化または除去されたところが例示されている。
【0031】
プルーニング前に適切なニューラルネットワークのノード決定のために、ニューラルネットワークの各レイヤが探索されるのである。このとき、ニューラルネットワークの推論正確度、すなわち、ニューラルネットワークの出力が過度に低下しない線で、プルーニングされるレイヤ、重みが探索されることが望ましいのである。
【0032】
プルーニングプロセスが遂行される間、ニューラルネットワークに含まれるレイヤの重みにおいて、あらかじめ定義された重み閾値より小さい値を有するニューロン間の連結が探索され、そのような重みを有するニューロン間の連結関係は、除去されるか、あるいは弱化され得る。
【0033】
図2Bを参照すれば、ニューラルネットワークにおいて、n番目レイヤのk番目カーネルであるKERNELn_k 230(n及びkは、自然数である)に対してプルーニングを行った結果について図示されている。一方、ニューラルネットワークプルーニングのための設定として、例えば、重み閾値τは、0.5人であると仮定した。
【0034】
プルーニング前、KERNELn_k 230は、多様な値の重みを有する。プルーニングプロセスによってKERNELn_k 230の重みにおいて、重み閾値(τ=0.5)以下の重みは、いずれも0にプルーニングされ、プルーニングされたKERNELn_k 240が生成される。そのように、プルーニングされたKERNELn_k 240は、KERNELn_k 230に比べ、隣接ノード間の連結性を弱化させ、それにより、0値を有する重みにより、隣接ノード間の演算量は、減少されるのである。
【0035】
図3は、一実施形態によるニューラルネットワークプルーニング装置のハードウェア構成を図示したブロック図である。
【0036】
図3を参照すれば、ニューラルネットワークプルーニング装置100は、プロセッサ110及びメモリ120を含む。図3に図示されたニューラルネットワークプルーニング装置100には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワークプルーニング装置100には、図3に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当業者に自明である。
【0037】
ニューラルネットワークプルーニング装置100は、ニューラルネットワークに対するプルーニングを行うコンピュータデバイスに該当する。例えば、ニューラルネットワークプルーニング装置100は、PC(personal computer)、サーバデバイス、モバイルデバイスなどにも該当し、さらには、ニューラルネットワークを利用した音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、AR(augmented reality)デバイス、IoT(Internet of Things)デバイスなどに具備された装置でもあるが、それらに制限されるものではなく、多種のデバイスにも該当する。
【0038】
プロセッサ110は、ニューラルネットワークプルーニング装置100の動作を制御するための全般的な制御機能を遂行するハードウェア構成である。例えば、プロセッサ110は、ニューラルネットワークプルーニング装置100内のメモリ120に保存されたプログラムを実行することにより、ニューラルネットワークプルーニング装置100を全般的に制御することができる。プロセッサ110は、ニューラルネットワークプルーニング装置100内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)、NPU(neural processing unit)などによっても具現されるが、それらに制限されるものではない。
【0039】
メモリ120は、プロセッサ110内で処理される各種ニューラルネットワークデータを保存するハードウェアであり、例えば、メモリ120は、ニューラルネットワークに対するプルーニングデータ、ニューラルネットワークに入力されるデータセットなどを保存することができる。また、メモリ120は、プロセッサ110によって駆動される多様なアプリケーション、例えば、ニューラルネットワークプルーニングのためのアプリケーション、ニューラルネットワーク駆動アプリケーション、ドライバなどを保存することができる。
【0040】
メモリ120は、揮発性メモリ(volatile memory)または不揮発性メモリ(nonvolatile memory)のうち少なくとも1つを含んでもよい。不揮発性メモリは、ROM(read only memory)、PROM(programmable read only memory)、EPROM(electrically programmable read only memory)、EEPROM(electrically erasable and programmable read only memory)、フラッシュメモリ、PRAM(phase-change random access memory)、MRAM(magnetic random access memory)、RRAM(resistive random access memory)、FRAM(ferroelectric random access memory)などを含む。揮発性メモリは、DRAM(dynamic random access memory)、SRAM(static random access memory)、SDRAM(synchronous dynamic random access memory)などを含む。さらに、メモリ120は、HDD(hard disk drive)、SSD(solid state drive)、CF(compact flash)、SD(secure digital)、micro-SD(micro secure digital)、mini-SD(mini secure digital)、xD(extreme digital)またはMemory Stickのうち少なくとも1つを含んでもよい。
【0041】
プロセッサ110は、ニューラルネットワークに含まれるレイヤの重み分布に基づき、目標プルーニングの比率でもって、ニューラルネットワークをプルーニングするための重み閾値を設定する。このとき、プロセッサ110は、重み分布が標準正規分布(standard normal distribution)のようなガウス分布(Gaussian distribution)に該当すると仮定した状態において、目標プルーニングの比率に対応する重み値を、重み閾値に設定することができる。ただし、プロセッサ110は、標準正規分布以外にも、他の多様な統計分布を利用し、ニューラルネットワークプルーニングに適する重み閾値を設定することもできる。
【0042】
プロセッサ110は、ニューラルネットワークにプルーニングデータセットを入力し、プルーニングデータセットに対するニューラルネットワークの推論正確度を反復して測定及び検証することにより、ニューラルネットワークプルーニングを行うことができる。プルーニングデータセットの準備については、以下、当該図面で具体的に説明することにする。
【0043】
プロセッサ110は、準備されたプルーニングデータセットを利用し、重み閾値に基づく各レイヤのプルーニングが、ニューラルネットワークの推論正確度の変化に及ぼす影響を予測する。ここで、影響予測は、各レイヤに対するプルーニングが行われる以前の推論正確度と、各レイヤに対するプルーニングが行われた後の推論正確度との差に基づく各レイヤ別敏感度(sensitivity)を計算することによっても行われる。一方、敏感度は、ニューラルネットワークの出力が、ニューラルネットワークに対する入力、またはニューラルネットワークの重み変更(perturbation)によって影響を受ける程度を意味する。例えば、敏感度測定は、連続的な間隔の全体入力パターンに対し、予想入力偏差による出力偏差の数学的な期待値と定義することができる。すなわち、敏感度は、多様な入力パラメータがニューラルネットワークモデルに入力されたとき、ニューラルネットワークモデルの出力反応の決定にも使用される。
【0044】
プロセッサ110は、予測された影響に基づき、ニューラルネットワークに含まれるレイヤにおいて、重み閾値でプルーニングされる現在対象レイヤ(current subject layer)を決定する。プロセッサ110は、以前にプルーニングされたレイヤを除いた残りレイヤのうち、最も低い敏感度を有すると予測されたレイヤを、現在対象レイヤと決定することができる。すなわち、最も低い敏感度を有すると予測されたレイヤは、ニューラルネットワークの推論正確度の低下に最も少ない影響を及ぼすと予測されたレイヤを意味する。
【0045】
プロセッサ110は、現在対象レイヤが決定された場合、決定された現在対象レイヤをプルーニングする。具体的には、プロセッサ110は、プルーニングデータセットに対するニューラルネットワークの推論正確度が、臨界正確度に低下するまで、重み閾値を更新し、現在対象レイヤの重みのプルーニングの比率を調整することにより、現在対象レイヤをプルーニングすることができる。
【0046】
現在対象レイヤに対するプルーニングが完了した後、プロセッサ110は、ニューラルネットワークの残りレイヤのうち、プルーニングされる対象レイヤを新たに探索し、新たに探索された対象レイヤについても、反復してプルーニングを行うことにより、ニューラルネットワーク全体に対するプルーニングを行う。ニューラルネットワーク全体に対するプルーニングが完了する条件は、ニューラルネットワークプルーニングが、初期設定された目標プルーニングの比率に逹する場合であるか、またはニューラルネットワークに含まれる全てのレイヤに対してプルーニングが完了した場合でもある。
【0047】
図4は、一実施形態によるプルーニングデータセットについて説明するための図面である。
【0048】
図4を参照すれば、プルーニングデータセット420は、ニューラルネットワークのプルーニングが行われる間、ニューラルネットワークの推論正確度の変化(例えば、各レイヤ別敏感度)を測定及び検証するために利用されるデータセットでもある。
【0049】
プルーニングデータセット420は、初期に与えられたデータセット410からも準備される。ここで、与えられたデータセット410は、ImageNetデータベース、MNISTデータベースのような公開された(public)データセットでもあるが、それらに制限されるものではなく、多種のデータベースが活用されてもよい。
【0050】
プルーニングデータセット420は、与えられたデータセット410をそのまま利用するときに発生しうる与えられたデータセット410に過適合されたプルーニング現象を減らし、ニューラルネットワークプルーニング時間を短縮させるために準備することができる。ただし、与えられたデータセット410のタイプにより、プルーニングデータセット420の準備過程は、多様にもなる。
【0051】
図5Aないし図5Cは、一実施形態によるプルーニングデータセットのタイプについて説明するための図面である。
【0052】
図5Aを参照すれば、プルーニングデータセット512(第1タイプのプルーニングデータセット)は、与えられたデータセット511と同一データセットにも該当する。前述のように、ニューラルネットワークプルーニングにおいて、与えられたデータセット511を利用するとき、過適合の問題が発生しないと予想される場合、プルーニングデータセット512は、与えられたデータセット511と同一のものでも準備される。例えば、与えられたデータセット511がImageNetデータベースに該当する場合、第1タイプのプルーニングデータセットは、ImageNetデータベースの数百万枚~数千万枚のイメージのデータソースでもある。
【0053】
図5Bを参照すれば、プルーニングデータセット522(第2タイプのプルーニングデータセット)は、与えられたデータセット521に含まれる多様なクラスそれぞれから、所定個数ほどのデータソースをランダム抽出することによっても準備される。例えば、与えられたデータセット521は、約1,000個のクラスを有する約100万個以上のデータソースを含むImageNetデータベースから獲得されたデータセットでもあると仮定することができる。そのような場合、プルーニングデータセット522は、与えられたデータセット521のうち、約1,000個のクラスそれぞれから、1~10個位のデータソースをランダム抽出し、抽出されたデータソースのみを含む新たなデータセットとしても準備される。一方、各クラス別にランダム抽出される個数は、任意にも設定されるが、各クラス別に多様でもある。図5Bで説明された準備方式によれば、データセットの大きさが相対的に大きく縮小されるので、ニューラルネットワークプルーニングの処理時間が短縮され、プルーニングされたニューラルネットワークが、特定データベースにだけ過適合される現象を防止することができる。
【0054】
一方、「Inception-v3」のように公知されたニューラルネットワークのプルーニングは、ImageNetデータベースからすでに知られた各クラスに基づき、図5Bで説明された方式によって設けられた第2タイプのプルーニングデータセットを利用しても行われる。
【0055】
しかし、「Aic-classifier」のように、未知の自体データセットで学習するニューラルネットワークは、推論アルゴリズムを知ることができないので、ImageNetデータベースにおいて、すでに定義されたクラスにおいて、「Aic-classifier」のようなニューラルネットワークが有効に推論することができるクラスを選別する必要がある。
【0056】
図5Cを参照すれば、与えられたデータセット531は、「Aic-classifier」のように、未知の自体データセットで学習するニューラルネットワークをプルーニングするために設けられる。プロセッサ110(図3)は、プルーニングデータセット533(第3タイプのプルーニングデータセット)を他の準備方式によって生成することができる。具体的に説明すれば、与えられたデータセット531は、ニューラルネットワークに入力され、プロセッサ110は、ニューラルネットワークを利用して与えられたデータセット531のデータソース(例えば、イメージ)に対する推論を行う。プロセッサ110は、ニューラルネットワークの推論結果として与えられたデータセット531のクラス別データソースそれぞれのラベル(label)を決定することができる。ここで、該ラベルは、当該データソースがどの分類に属するかということを示す識別子でもある。プロセッサ110は、一定程度レベル以上の正確度を有するクラスを選別し、該クラスを有効クラス532に決定する。最終的に、プロセッサ110は、有効クラス532それぞれにおいて、所定個数、例えば、1個~10個ほどのデータソースをランダム抽出し、抽出されたデータソースのみを含む新たなデータセットをプルーニングデータセット533として準備することができる。ただし、図5Bで説明されているように、各有効クラス532別に抽出される個数は、任意にも設定されるが、各クラス別に多様でもある。
【0057】
図5Dは、図5Cのプルーニングデータセット(第3タイプのプルーニングデータセット)を設ける過程についてさらに詳細に説明するための図面である。
【0058】
図5Dを参照すれば、与えられたデータセットは、CLASS 1からCLASS 1000まで合計1,000個のクラスを含むと仮定する。プロセッサ110は、各クラス別に、100個のデータソースのサンプルをランダムに抽出する。その後、プロセッサ110は、ニューラルネットワークを利用し、各データソース(例えば、イメージ)に対する推論を行い、データソースそれぞれに対するラベルを決定する。ここで、該ラベルは、当該データソースがどの分類に属するかということを示す識別子でもある。
【0059】
プロセッサ110は、全体クラスにおいて、最も頻繁なラベルの比率が、所定正確度(例えば、60%)以上であるクラスを、有効クラスであると決定する。その結果、プロセッサ110は、そのような条件を満足するクラスCLASS 1,CLASS 3,……,CLASS 999が有効クラスであるとして選別することができる。
【0060】
プロセッサ110は、有効クラスそれぞれから、所定個数(例えば、1~50個)ほどのデータソースをランダム抽出し、抽出されたデータソースのみを含む新たなデータセットを、第3タイプのプルーニングデータセットとして準備することができる。一方、各クラス別にランダム抽出されるサンプル個数、有効クラスを選別するための所定正確度の数値、有効クラスからランダム抽出されるデータソースの個数は、任意に設定されるが、各クラス別に多様でもある。
【0061】
ニューラルネットワークプルーニング装置100(図3)のプロセッサ110は、図5Aないし図5Dで説明された方式によって準備されたプルーニングデータセットを利用することにより、当該ニューラルネットワークのプルーニングプロセスで要求される推論正確度の測定及び検証を行うことができる。
【0062】
図6は、一実施形態によるニューラルネットワークプルーニングのための重み閾値を設定することについて説明するための図面である。
【0063】
図6を参照すれば、プロセッサ110は、ニューラルネットワークに含まれるレイヤの重み分布に基づき、目標プルーニングの比率で、ニューラルネットワークをプルーニングするための重み閾値を設定する。このとき、プロセッサ110は、重み分布が標準正規分布のようなガウス分布(Gaussian distribution)にも該当すると仮定した状態において、目標プルーニングの比率に対応する重み値を、重み閾値に設定することができる。
【0064】
下記数式1は、目標プルーニングの比率(α%)に該当する重み閾値τを計算するためのものである。
(数式1)
【数1】
【0065】
具体的には、プロセッサ110は、まず、ニューラルネットワークに含まれるレイヤの重み分布について仮定した標準正規分布上において、目標プルーニングの比率(α%)に該当するZ値を獲得する。その後、プロセッサ110は、重みの平均μと標準偏差σとを利用し、重み閾値τを計算する。
【0066】
例えば、目標プルーニングの比率(α%)が30%である場合、Z=0.39であるとも計算され、重みの平均μと標準偏差σとをさらに計算し、それを介して、ニューラルネットワークプルーニングのための重み閾値τが設定されもする。
【0067】
ただし、プロセッサ110は、標準正規分布以外にも、他の多様な統計分布を利用し、ニューラルネットワークプルーニングに適する重み閾値を設定することもできる。
【0068】
図7は、一実施形態によるニューラルネットワークプルーニングが行われるプロセスについて説明するための図面である。
【0069】
図7を参照すれば、701段階において、プロセッサ110は、図6で説明された方式を利用し、ニューラルネットワークに含まれるレイヤの重み分布に基づき、目標プルーニングの比率で、ニューラルネットワークをプルーニングするための重み閾値を設定する。
【0070】
702段階において、プロセッサ110は、ニューラルネットワークの各レイヤに対する敏感度を計算し、最も低い敏感度を有するレイヤを現在対象レイヤと決定する。ここで、最も低い敏感度を有すると決定されたレイヤは、ニューラルネットワークプルーニングによるニューラルネットワークの推論正確度の低下に最も少ない影響を及ぼすと予測されたレイヤにも該当する。プロセッサ110は、敏感度計算のために、先に、図5Aないし図5Dで説明されたプルーニングデータセットのうち、少なくともいずれか1つを利用することができ、そのようなプルーニングデータセットを利用することにより、重み閾値に基づく各レイヤのプルーニングが、ニューラルネットワークの推論正確度の変化に及ぼす影響が予測され得る。
【0071】
なお、敏感度は、下記数式2を利用しても計算される。
(数式2)
【数2】
【0072】
数式2を参照すれば、τは、重み閾値である。tは、ニューラルネットワークのレイヤに対してプルーニングが行われた次数、kは、プルーニングされる現在対象レイヤのインデックスを示す。例えば、プルーニングされる現在対象レイヤがニューラルネットワークにおいて、3番目にプルーニングされるレイヤに該当する場合、t=3でもある。Wは、次数tでの重みを示し、
【数3】
は、τを基準に、次数tでプルーニングされたk番目レイヤの重みを示す。P(W)とP(W)とのそれぞれは、Wを利用したニューラルネットワークの推論正確度、及び
【数4】
を利用したニューラルネットワークの推論正確度を示す。
【0073】
すなわち、数2によれば、敏感度は、各レイヤに対するプルーニングが行われる以前の推論正確度と、各レイヤに対するプルーニングが行われた後の推論正確度との差に基づき、各レイヤ別にも計算される。
【0074】
703段階において、プロセッサ110は、現在対象レイヤにおいて、重み閾値τ以下の重みをプルーニングする。
【0075】
704段階において、プロセッサ110は、現在対象レイヤのプルーニング結果による、プルーニングデータセットに対するニューラルネットワークの推論正確度を測定する。
【0076】
705段階において、プロセッサ110は、測定された推論正確度と臨界正確度とを比較し、測定された推論正確度が臨界正確度より低くなったかどうかを判断する。もし測定された推論正確度が臨界正確度ほど低くならない場合、707段階に進む。しかし、測定された推論正確度が臨界正確度より低くなった場合、706段階に進む。
【0077】
706段階において、プロセッサ110は、重み閾値τによる現在対象レイヤのプルーニングによる推論正確度が、臨界正確度まで低下していない場合、重み閾値τを増加させることにより、重み閾値τを更新する。例えば、プロセッサ110は、τ=τ+δのように、重み閾値τをδほど増加させて更新する。ここで、δは、ニューラルネットワークの重み分布、現在対象レイヤに対するプルーニングの比率などの多様な要素を考慮し、任意にも設定される値でもある。
【0078】
プロセッサ110は、更新された重み閾値に基づき、また703段階ないし705段階を遂行する。すなわち、プロセッサ110は、プルーニングデータセットに対するニューラルネットワークの推論正確度が、臨界正確度に低下するまで重み閾値を更新し、現在対象レイヤの重みのプルーニングの比率を調整することにより、現在対象レイヤをプルーニングする。
【0079】
なお、703段階ないし706段階は、下記数式3を利用しても遂行される。
(数式3)
【数5】
【0080】
数式3を参照すれば、βは、臨界正確度を示し、前述のように、推論正確度の低下が一定レベル以下である場合には、重み閾値τを増加させ、現在対象レイヤに対するプルーニングの比率を高めながら、現在対象レイヤに対するプルーニングが行われるのである。
【0081】
さらに、705段階での判断結果、測定された推論正確度が臨界正確度より低くなった場合、プロセッサ110は、現在対象レイヤに対するプルーニングを終了し、707段階を遂行する。
【0082】
707段階において、プロセッサ110は、ニューラルネットワークの全てのレイヤに対するプルーニングが完了したかどうかを判断する。全てのレイヤに対するプルーニングが完了していないと判断された場合、708段階に進む。
【0083】
708段階において、プロセッサ110は、直前に遂行された現在対象レイヤのプルーニング結果をメモリ120に保存し、次の次数(t+1)のレイヤに対するプルーニングを行うために、702段階からさらに反復して遂行する。
【0084】
プロセッサ110は、707段階での判断結果、全てのレイヤに対するプルーニングが完了した場合、ニューラルネットワークプルーニングを終了する。
【0085】
プロセッサ110は、プルーニングされたニューラルネットワークを用い、推論を行う。
【0086】
一方、ニューラルネットワークプルーニングが終了するための条件として、707段階において、全てのレイヤに対するプルーニングが完了したかどうかが判断されると説明された。しかし、それに制限されるものではなく、他の実施形態によれば、プロセッサ110は、ニューラルネットワークプルーニングを終了するための条件として、初期に設定された目標プルーニングの比率に達したかどうかを判断することができる。すなわち、プロセッサ110は、707段階において、ニューラルネットワークのレイヤに対する反復的なプルーニング結果、初期に設定された目標プルーニングの比率に達した場合、ニューラルネットワークプルーニングを終了するように制御することができる。
【0087】
他の実施形態によれば、プロセッサ110は、目標プルーニングの比率に達するか、あるいは全てのレイヤに対するプルーニングが完了した場合、ニューラルネットワークプルーニングを終了するための条件を満足すると判断することができる。
【0088】
一方、従来には、プルーニングの正確度低下を最小化させるために、ニューラルネットワーク再学習を反復して行った。しかし、ニューラルネットワークの再学習が進められる場合には、再学習に多くの資源(例えば、時間、GPUなど)が要求されてしまう。具体的には、Inception-v3モデルを57%プルーニングするためのシミュレーション結果、6個のGPUを利用したとき、7日以上の時間が必要となり、速度が最も迅速なResNet-101の場合には、2~3日が必要となると測定された。
【0089】
本実施形態によるニューラルネットワークプルーニング装置100によって遂行されるニューラルネットワークプルーニング方法によれば、プルーニングデータセットを利用したニューラルネットワークの再学習なしに、ニューラルネットワークに対するプルーニングが行われうるので、さらに効率的なニューラルネットワークのプルーニングが可能にもなる。
【0090】
図8は、一実施形態によるニューラルネットワークに対するプルーニングを行う方法のフローチャートである。図8の方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容であるとしても、先に図面で説明された内容は、図8の方法にも適用され得る。
【0091】
801段階において、プロセッサ110は、ニューラルネットワークに含まれるレイヤの重み分布に基づき、目標プルーニングの比率で、ニューラルネットワークをプルーニングするための重み閾値を設定する。
【0092】
802段階において、プロセッサ110は、プルーニングデータセットを利用し、重み閾値に基づく各レイヤのプルーニングがニューラルネットワークの推論正確度の変化に及ぼす影響を予測する。
【0093】
803段階において、プロセッサ110は、予測された影響に基づき、ニューラルネットワークに含まれるレイヤのうち、重み閾値でプルーニングされる現在対象レイヤを決定する。
【0094】
804段階において、プロセッサ110は、決定された現在対象レイヤをプルーニングする。
【0095】
なお、プロセッサ110は、現在対象レイヤに対するプルーニングが完了した場合、ニューラルネットワークの残りレイヤについて、反復してプルーニングを行う。
【0096】
以下の表1は、再学習なしにプルーニングを行う場合、従来の方式と、本実施形態の方式との正確度を比較したシミュレーション結果である。ここで、本実施形態のシミュレーション結果は、ImageNetデータベースの1,000個のクラスそれぞれから1個ずつのデータソースをランダム抽出し、総1,000個のデータソースを設けた後、Inception-v3のニューラルネットワークをプルーニングした結果である。
【表1】
トレーニングの前(pre-trained)、ニューラルネットワークの正確度は、77.97%であった。前述のところによれば、再学習なしにプルーニングを行う場合、従来方式は、正確度が相当低下した一方、本実施形態の方式は、正確度がわずか1.78%だけ低下しただけであるとシミュレーションされた。従って、本実施形態によるプルーニング方式は、再学習なしにニューラルネットワークをプルーニングしても、正確度損失を減らしつつ、高い比率のプルーニングを行うことができる。
【0097】
一方、前述の実施形態は、コンピュータで実行されうるプログラムに作成可能であり、コンピュータ読み取り可能な記録媒体を利用し、プログラムを動作させる汎用デジタルコンピュータでも具現される。また、前述の実施形態で使用されたデータの構造は、コンピュータ読み取り可能な記録媒体に、さまざまな手段を介しても記録される。コンピュータ読み取り可能な記録媒体は、磁気記録媒体(例えば、ROM、フロッピーディスク、ハードディスクなど)、光学的読取可能媒体(例えば、CD-ROM(compact disc read only memory)、DVD(digital versatile disc)など)のような記録媒体を含む。
【0098】
本実施形態と係わる技術分野で当業者であるならば、前述の本質的な特性から逸脱しない範囲で実施形態が変形された形態にも具現されるということを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。権利範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本実施形態に含まれるものであると解釈されなければならないのである。
【符号の説明】
【0099】
100 ニューラルネットワークプルーニング装置
101 入力レイヤ
103,105 隠れ層
107 出力レイヤ
110 プロセッサ
120 メモリ
図1
図2A
図2B
図3
図4
図5A
図5B
図5C
図5D
図6
図7
図8