(57)【要約】【課題】ソフトウェアによらずにニューラルネットワーク構造を実現する半導体装置及びニューラルネットワークの構成方法を提供する。【解決手段】半導体装置１０は、シナプスと、シナプスによって互いに結合された始点ニューロン及び終点ニューロンと、から少なくとも構成されるニューラルネットワークを実現する半導体装置であって、エントリごとにデータを記憶するメモリセルアレイ１４２及びメモリセルアレイ１４２に記憶されたデータの中から、検索キーと部分一致するデータを含むエントリを検索する部分一致検索回路１４４を有する記憶部１４と、部分一致検索回路１４４によって検索されたデータに基づいて、終点ニューロンの値を演算する演算回路１６と、演算結果を活性化関数に通した活性化データを出力する活性化演算回路１８と、活性化データが入力され、前記記憶部１４に記憶されているデータの一部を書き換えるデータ更新回路２０と、を備える。【選択図】図１
2020166793.tif 000002
【特許請求の範囲】
【請求項１】
シナプスと、前記シナプスによって互いに結合された前段側にある始点ニューロン及び後段側にある終点ニューロンと、から少なくとも構成されるニューラルネットワークを実現する半導体装置であって、
エントリごとにデータを記憶するメモリセルアレイ及び該メモリセルアレイに記憶された前記データの中から、検索キーと部分一致するデータを含むエントリを検索する部分一致検索回路を有する記憶部と、
前記部分一致検索回路によって検索されたデータに基づいて、前記終点ニューロンの値を演算し、演算結果を出力する演算回路と、
前記演算結果を活性化関数に通した活性化データを出力する活性化演算回路と、
前記活性化データが入力され、前記記憶部に記憶されているデータの一部を書き換えるデータ更新回路と、を備えた半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記メモリセルアレイの全体または一部が、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）セルアレイである半導体装置。
【請求項３】
請求項１又は２記載の半導体装置において、
前記記憶部が、前記始点ニューロンを特定する情報、前記終点ニューロンを特定する情報、前記始点ニューロンと前記終点ニューロンとの結合強度を表す重み及び前記始点ニューロンの値を記憶する半導体装置。
【請求項４】
請求項３に記載の半導体装置を使用したニューラルネットワークの構成方法であって、
前記部分一致検索回路が、前記終点ニューロンを特定する情報を検索キーとして該当するエントリを検索するステップと、
前記演算回路が、検索された前記エントリに含まれるデータに基づいて、前記終点ニューロンの値を求めるステップと、
前記活性化演算回路が、前記終点ニューロンの値に基づいて活性化データを出力するステップと、
前記終点ニューロンを特定する情報を前記始点ニューロンを特定する情報とし、前記部分一致検索回路が、該始点ニューロンを特定する情報を検索キーとして該当するエントリを検索し、前記データ更新回路が、該始点ニューロンの一部の値を前記活性化データで書き換えるステップと、を含むニューラルネットワークの構成方法。
【請求項５】
請求項３に記載の半導体装置を使用したニューラルネットワークの構成方法であって、
前記終点ニューロンを特定する情報が、前記終点ニューロンの番号であり、
前記エントリが、前記終点ニューロンの番号の順に前記記憶部に格納されており、
同一の前記終点ニューロンの番号を含む前記エントリが選択されるステップと、
前記演算回路が、選択された前記エントリに含まれるデータに基づいて、前記終点ニューロンの値を求めるステップと、
前記活性化演算回路が、前記終点ニューロンの値に基づいて活性化データを出力するステップと、
前記終点ニューロンを特定する情報を前記始点ニューロンを特定する情報とし、前記部分一致検索回路が、該始点ニューロンを特定する情報を検索キーとして該当するエントリを検索し、前記データ更新回路が、該始点ニューロンの一部の値を前記活性化データで書き換えるステップと、を含むニューラルネットワークの構成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びニューラルネットワークの構成方法に関する。
【背景技術】
【０００２】
現在、ＦＰＧＡ又はＧＰ−ＧＰＵを用いたプロセッサ及びメモリ構造を有する脳型ハードウェアが知られており、並列化と通信により学習能力を高めたＩＢＭのＴｒｕｅＮｏｒｔｈが代表的存在である。これらは、主としてクラウド上のサーバで、高速な学習を行うために開発された専用ＬＳＩであるが処理の主体はソフトウエアである（例えば、非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】浅井哲也著、「ニューロモルフィック工学・脳型機械学習ハードウエアの行方」、日本神経回路学会誌、２０１５年、Ｖｏｌ．２２，Ｎｏ．４，ｐ．１６２−１６９
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、ソフトウェアによらずにニューラルネットワーク構造を実現する半導体装置及びニューラルネットワークの構成方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
請求項１に記載の発明は、シナプスと、前記シナプスによって互いに結合された前段側にある始点ニューロン及び後段側にある終点ニューロンと、から少なくとも構成されるニューラルネットワークを実現する半導体装置であって、エントリごとにデータを記憶するメモリセルアレイ及び該メモリセルアレイに記憶された前記データの中から、検索キーと部分一致するデータを含むエントリを検索する部分一致検索回路を有する記憶部と、前記部分一致検索回路によって検索されたデータに基づいて、前記終点ニューロンの値を演算し、演算結果を出力する演算回路と、前記演算結果を活性化関数に通した活性化データを出力する活性化演算回路と、前記活性化データが入力され、前記記憶部に記憶されているデータの一部を書き換えるデータ更新回路と、を備える半導体装置である。
【０００６】
請求項２に記載の発明は、請求項１記載の発明において、前記メモリセルアレイの全体または一部が、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）セルアレイである。
【０００７】
請求項３に記載の発明は、請求項１又は２記載の発明において、前記記憶部が、前記始点ニューロンを特定する情報、前記終点ニューロンを特定する情報、前記始点ニューロンと前記終点ニューロンとの結合強度を表す重み及び前記始点ニューロンの値を記憶する。
【０００８】
請求項４に記載の発明は、請求項３に記載の半導体装置を使用したニューラルネットワークの構成方法であって、前記部分一致検索回路が、前記終点ニューロンを特定する情報を検索キーとして該当するエントリを検索するステップと、前記演算回路が、検索された前記エントリに含まれるデータに基づいて、前記終点ニューロンの値を求めるステップと、前記活性化演算回路が、前記終点ニューロンの値に基づいて活性化データを出力するステップと、前記終点ニューロンを特定する情報を前記始点ニューロンを特定する情報とし、前記部分一致検索回路が、該始点ニューロンを特定する情報を検索キーとして該当するエントリを検索し、前記データ更新回路が、該始点ニューロンの一部の値を前記活性化データで書き換えるステップと、を含むニューラルネットワークの構成方法である。
【０００９】
請求項５に記載の発明は、請求項３に記載の半導体装置を使用したニューラルネットワークの構成方法であって、前記終点ニューロンを特定する情報が、前記終点ニューロンの番号であり、前記エントリが、前記終点ニューロンの番号の順に前記記憶部に格納されており、同一の前記終点ニューロンの番号を含む前記エントリが選択されるステップと、
前記演算回路が、選択された前記エントリに含まれるデータに基づいて、前記終点ニューロンの値を求めるステップと、前記活性化演算回路が、前記終点ニューロンの値に基づいて活性化データを出力するステップと、前記終点ニューロンを特定する情報を前記始点ニューロンを特定する情報とし、前記部分一致検索回路が、該始点ニューロンを特定する情報を検索キーとして該当するエントリを検索し、前記データ更新回路が、該始点ニューロンの一部の値を前記活性化データで書き換えるステップと、を含むニューラルネットワークの構成方法である。
【発明の効果】
【００１０】
本発明によれば、ソフトウェアによらずにニューラルネットワーク構造を実現する半導体装置及びニューラルネットワークの構成方法を提供できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施の形態に係る半導体装置の構成を示すブロック図である。
【図２】同半導体装置によって実現されるニューラルネットワークの説明図である。
【図３】（Ａ）、（Ｂ）は、同半導体装置が備えるメモリセルアレイにマッピングされるデータを示す表であって、それぞれある時点での状態を示す表及び次の時点での状態を示す表である。
【図４】同半導体装置が備える検索レジスタに入力される検索キーを時系列順（Ｃｌｋ＃の順）に示した表である。
【図５】同半導体装置が備えるメモリセルアレイにマッピングされるデータの変形例を示す表である。
【発明を実施するための形態】
【００１２】
続いて、添付した図面を参照しつつ、本発明を具体化した実施の形態につき説明し、本発明の理解に供する。なお、図において、説明に関連しない部分は図示を省略する場合がある。
【００１３】
本発明の一実施の形態に係る半導体装置１０（図１参照）は、ニューラルネットワーク構造を単独のメモリセルアレイで実現できる。
ニューラルネットワークは、例えば図２に示すように、ニューロンｎ１〜ｎ９及びニューロンを結合するシナプスによって構成されている。
ニューロンｎ１〜ｎ９のうち、ニューロンｎ１、ｎ２は入力層となるニューロンであり、ニューロンｎ３〜ｎ７は中間層となるニューロンであり、ニューロンｎ８、ｎ９は、出力層となるニューロンである。
【００１４】
シナプスは、同図２において矢印で示され、前段側にあるニューロンと後段側にあるニューロンとを、結合強度を表す重みで結合している。
なお、重みは、英文字ｗに前段側にあるニューロンの番号及び後段側になるニューロンの番号を順に付して表示され、例えばニューロンｎ５とニューロンｎ６とを結合するシナプスの重みは、ｗ５６と表示されている。
【００１５】
ここで、以下、あるシナプスに注目した場合に、そのシナプスの前段側に接続されているニューロンを始点ニューロン、後段側に接続されているシナプスを終点ニューロンという。
従って、例えば、ニューロンｎ５とニューロンｎ６とを結合するシナプスに着目すると、ニューロンｎ５は始点ニューロンとなり、ニューロンｎ６は終点ニューロンとなる。また、ニューロンｎ１とニューロンｎ５とを結合するシナプスに着目すると、ニューロンｎ１は始点ニューロンとなり、ニューロンｎ５は終点ニューロンとなる。
【００１６】
半導体装置１０は、図１に示すように、検索レジスタ１２、記憶部１４、積和演算回路（演算回路の一例）１６、活性化演算回路１８、データ更新回路２０及びロウデコーダ２２を備えている。
【００１７】
検索レジスタ１２は、部分一致により、記憶部１４から一部のエントリを選択するために指定する検索ワードが設定されるレジスタである。
【００１８】
記憶部１４は、メモリセルアレイ１４２及び部分一致検索回路１４４を有している。
この記憶部１４は、例えば、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）セルによるアレイである。ＣＡＭセルは、通常の２値メモリセルに一致検索回路が付加されたもので、これによりエントリ（記憶ワード）を構成することで、部分一致検索が可能となる。
【００１９】
メモリセルアレイ１４２に記憶されるデータは、以下の通りである。
（１）始点ニューロンの番号（始点ニューロンを特定する情報の一例であって、図３（Ａ）における「始点＃」）
（２）終点ニューロンの番号（終点ニューロンを特定する情報の一例であって、図３（Ａ）における「終点＃」）
（３）始点ニューロンと終点ニューロンとの結合強度を表す重み
（４）始点ニューロンの値（図３（Ａ）における「前段出力」）
【００２０】
すなわち、記憶部１４に格納された各エントリーが各シナプスに関連付けられたデータに対応しており、図３（Ａ）において、例えばニューロンｎ５とニューロンｎ６とを結合するシナプスはエントリ＃９であり、このエントリ＃９には、始点ニューロンｎ５の値、始点ニューロンの番号ｎ５、終点ニューロンの番号ｎ６及び重みｗ５６が記憶されている。
【００２１】
部分一致検索回路１４４（図１参照）は、メモリセルアレイ１４２に記憶されたデータの中から、入力された検索キーと一致するデータを含むエントリを検索できる。
従って、例えば検索キーとなる終点＃としてｎ６が入力された場合には、エントリ＃７〜＃９が選択される（図３（Ａ）参照）。
【００２２】
積和演算回路１６は、部分一致検索回路１４４によって検索された複数のデータに基づいて、後述する活性化関数に通す前の終点ニューロンの値を演算し、演算結果を出力できる。
従って、例えばエントリ＃７〜＃９が検索された場合には、各エントリ＃７〜＃９に記憶されている前段出力及び始点＃に基づいて、積和演算（加算及び積算の演算）し、ニューロンｎ６の活性化関数に通す前の値を求めることができる。具体的には、次式（１）に基づいて、ニューロンｎ６の活性化関数に通す前の値ｓ６ｆｉｎが求められる
【００２３】
ｓ６ｆｉｎ  ＝  ｓ３＊ｗ３６＋ｓ４＊ｗ４６＋ｓ５＊ｗ５６  式（１）
【００２４】
活性化演算回路１８は、積和演算回路１６が出力した積和演算結果を活性化関数に通し、活性化データを出力できる。
活性化関数は、例えばシグモイド関数等である。
【００２５】
データ更新回路２０は、活性化演算回路１８が出力した活性化データが入力され、記憶部１４に記憶されているデータの一部（前段出力部分）を書き換えて更新するための回路である。
【００２６】
ロウデコーダ２２は、メモリセルアレイ１４２のロウアドレスを指定するためのデコーダである。ロウデコーダ２２は、記憶部１４にニューラルネットの構成情報を最初に設定する場合、ニューロンを追加する場合、又は入力層のデータを設定する際等に使用される。
【００２７】
次に、半導体装置１０の動作について説明する。半導体装置１０は、以下のステップに従って動作し、それをニューロンの番号順に繰り返すことによって、ニューラルネットワークの動作が実現される。
ただし、可能な場合には、下記の各ステップは順番を入れ替えて実施されてもよいし、並行して実施されてもよい。
【００２８】
（ステップＳ１）
図２に示すニューラルネットワークにおいて、処理対象のニューロン番号が検索キーの「終点＃」であり、それ以外の部分はドントケア（Ｘ）であるデータが検索レジスタ１２に設定される。
そうすると、部分一致検索回路１４４によって、記憶部１４に記憶されているデータの中から、終点ニューロンの番号が一致するエントリが検索され、選択される。
【００２９】
従って例えば、図４のＣｌｋ＃ｎに示すように、後段のニューロンｎ６の番号ｎ６（「終点＃」）が検索キーとして部分一致検索回路１４４に入力されると、その結果として、図３（Ａ）に示すように、「終点＃」が一致するエントリ＃７〜＃９が選択される。この時、エントリ＃７〜＃９の「前段出力」の値は、既に以前の繰り返し動作により確定された値が格納されている。
【００３０】
（ステップＳ２）
選択されたエントリは、前段側のニューロンから延びるシナプスに対応しているので、積和演算回路１６が、各エントリの前段出力の値と対応する重みとを積算すると共に、積算された値を合計することで、終点ニューロンの値が求められる。
従って例えば、選択されたエントリ＃７〜＃９が選択された場合には、前述の式（１）に基づいて、終点ニューロンｎ６の活性化関数に通す前の値ｓ６ｆｉｎが求められる。
【００３１】
（ステップＳ３）
終点ニューロンの値が決まると、活性化演算回路１８によって活性化関数による処理がなされ、活性化データが出力される。
【００３２】
（ステップＳ４）
図４のＣｌｋ＃ｎ＋１に示すように、処理対象のニューロン番号が検索キーの「始点＃」であり、それ以外の部分はドントケア（Ｘ）であるデータが検索レジスタ１２に入力される。そうすると、部分一致検索回路１４４によって、始点ニューロンの番号（「始点＃」）が一致するエントリが選択される。一方で、データ更新回路２０によって、その選択されたエントリの「前段出力」の値が活性化データで書き換えられる。
【００３３】
従って例えば、ステップＳ２において終点ニューロンがニューロンｎ６であった場合には、「ｎ６」が検索キーとなる「始点＃」として部分一致検索回路１４４に入力され、その結果、図３（Ｂ）に示すように、「始点＃」が一致するエントリ＃１３、＃１４が選択される。一方で、前ステップＳ３にて、終点ニューロンｎ６の値ｓ６ｆｉｎが活性化演算回路１８に入力され、活性化データｓ６が出力されると、始点ニューロンｎ６の値である「前段出力」はｓ６に書き換えられる。
【００３４】
このように、入力層のニューロンｎ１、ｎ２の値が設定された後、以上のステップＳ１〜Ｓ４を連続的に繰り返すことにより、最終的に出力層のニューロンｎ８、ｎ９の値が求まる。
すなわち、入力層にデータが入力されると、ニューラルネットワークによる推論結果が得られる。
なお、半導体装置１０においては、例えば、ステップＳ１〜Ｓ３は１クロックで実行され、ステップＳ４がその次のクロックで実行されるように構成することができる。
【００３５】
以上説明した半導体装置１０によれば、エントリを連続的に参照（メモリ駆動）することで、シナプスと、シナプスによって互いに結合された前段側にある始点ニューロン及び後段側にある終点ニューロンと、から少なくとも構成されるニューラルネットワークの構造をソフトウェアによらずに実現できる。
【００３６】
以上、本発明の実施の形態を説明したが、本発明は、上記した形態に限定されるものでなく、要旨を逸脱しない条件の変更等は全て本発明の適用範囲である。
【００３７】
半導体装置１０においては、前段出力、始点＃、終点＃及び重みに割り当てる各ビット幅は、その合計が１エントリを超えない範囲であれば、あらかじめ固定されるものではない。例えば、積和演算回路の入出力ビット数等を構成可変とすることで、重みまたは前段出力のビット幅を少なくし、始点＃及び終点＃のビット幅を広くとることで、より多くのニューロンを同一サイズの記憶部１４にマッピング可能である。
【００３８】
また、記憶部１４は全ての情報に対して一致検索ができる構成でなくてもよい。例えば、重みについては、図４に示すように、一致検索の対象外のため、この重みを格納する記憶セル部分には、一致検索回路を含まない通常のメモリセルを用いることも可能である。
【００３９】
また、前述のステップＳ１の変形例として、図５に示すように、あらかじめエントリを終点＃の順に記憶部１４に格納しておくことで、ステップＳ１における終点＃を検索キーとして検索し、終点ニューロンの番号が一致するエントリを選択する動作に代えて、図示しない選択部が、終点＃が同一となる間は、アドレス順にエントリに順次又は予め決められた時間内にアクセスして参照し、当該終点＃であるエントリを複数選択することも可能である。例えば、エントリの終点＃がｎ６の間は、＃７から＃９まで順にアクセスして、終点＃がｎ６のエントリ＃７〜＃９を選択できる。なお、図示しない選択部は、例えば、ロウデコーダ２２や何らかの選択回路である。
この場合、同一の終点＃のエントリのうち、最後のアドレスに格納される終点＃は終点ニューロンの番号でなく、例えば、同一の終点＃が終了する区切りを示すフラグ等でもかまわない。例えば図５においては、終点＃がｎ６となるエントリ＃７〜＃９のうち、エントリ＃７及びエントリ＃８に格納される終点＃には、次のエントリも終点ニューロンが同一であることを示すフラグ（例えば１）が格納され、最後のアドレスとなるエントリ＃９に格納される情報は、次のエントリは終点ニューロンが異なることを示すフラグ（例えば０）が格納されていてもよい。
【００４０】
また、シグモイド関数におけるしきい値についても、例えば入力層として仮想的に出力値が１のニューロンを設け、それに対する重みをシナプスとして登録することで対応することができる。
【符号の説明】
【００４１】
１０  半導体装置
１２  検索レジスタ
１４  記憶部
１６  積和演算回路
１８  活性化演算回路
２０  データ更新回路
２２  ロウデコーダ
１４２  メモリセルアレイ
１４４  部分一致検索回路
ｎ１〜ｎ９  ニューロン
【図１】
2020166793.tif 000003
【図２】
2020166793.tif 000004
【図３】
2020166793.tif 000005
【図４】
2020166793.tif 000006
【図５】
2020166793.tif 000007