(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2025-01-27
(45)【発行日】2025-02-04
(54)【発明の名称】ソフトマックス関数計算の近似法並びにこのソフトマックス関数計算の近似法を応用したニューラルネットワーク
(51)【国際特許分類】
G06N 3/048 20230101AFI20250128BHJP
G06F 17/17 20060101ALI20250128BHJP
【FI】
G06N3/048
G06F17/17
(21)【出願番号】P 2024006426
(22)【出願日】2024-01-18
【審査請求日】2024-01-24
(32)【優先日】2023-11-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】524025635
【氏名又は名称】耐能智慧股▲ふん▼有限公司
【氏名又は名称原語表記】Kneron (Taiwan) Co., Ltd.
(74)【代理人】
【識別番号】100076831
【氏名又は名称】伊藤 捷雄
(72)【発明者】
【氏名】呉 ▲ち▼聖
【審査官】多賀 実
(56)【参考文献】
【文献】国際公開第2022/164678(WO,A1)
【文献】国際公開第2022/168604(WO,A1)
【文献】米国特許出願公開第2019/0228299(US,A1)
【文献】Kunal Banerjee et al.,"Exploring Alternatives to Softmax Function",arXiv.org [online],arXiv:2011.11538v1,米国,Cornell University,2020年,pp.1-8,[検索日 2024.08.16], インターネット:<URL: https://arxiv.org/abs/2011.11538v1>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 1/02- 1/035
G06F 7/544-7/556
G06F 17/17
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークであって、
前記ニューラルネットワークの分類マシンにk次元ベクトルの入力値をm次元ベクトルの出力値に変換させるソフトマックス関数計算モジュールを備え、
前記ソフトマックス関数計算モジュールは、
前記k次元ベクトルの入力値を漏洩正規化線形ユニット関数計算を行うことによって正規化関数計算値を得、そして前記正規化関数計算値に基づいて一定次数の多項式関数計算を行って指数近似値を得た後、さらにもう一つの入力値を前記漏洩正規化線形ユニット関数計算と前記一定次数の多項式関数計算を繰り返すことによりもう一つの指数近似値が得られる指数近似計算ユニットと、前記指数近似値ともう一つの指数近似値を足した合計値が得られる加法計算ユニットと、指数近似計算ユニットで得たそれらの指数近似値の少なくとも一つの指数近似値を合計値で割ってm次元ベクトルの出力値が得られる除法計算ユニットと、を備えることを特徴とするニューラルネットワーク。
【請求項2】
前記指数近似計算
ユニットでは先に入力値をクランプ関数計算を行った後、さらに前記漏洩正規化線形ユニット関数計算を行うことを特徴とする
請求項1のニューラルネットワーク。
【請求項3】
前記合計値はさらに保護値を足して、前記合計値の絶対値がゼロより大きいことを確保することを特徴とする
請求項2のニューラルネットワーク。
【請求項4】
前記一定次数の多項式計算は2次から5次の多項式計算であることを特徴とする
請求項1のニューラルネットワーク。
【請求項5】
前記指数近似計算ユニットは、各入力値が前記漏洩正規化線形ユニット関数計算を経て各正規化関数計算値を得た後、さらに前記各正規化関数計算値によって一定次数の多項式関数計算を行って前記各入力値に対応する指数近似値を得るまで繰り返され;前記加法計算ユニットは、すべての指数近似値を足した合計値が得られ;前記除法計算ユニットは、前記指数近似計算ユニットで得られた指数近似値のすべての指数近似値を前記合計値で割って複数のk次元ベクトルに対応するm次元ベクトルの出力値が得られることを特徴とする
請求項1のニューラルネットワーク。
【請求項6】
前記入力値は整数型の数値であることを特徴とする
請求項1のニューラルネットワーク。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はソフトマックス関数計算の近似法並びにこのソフトマックス関数計算の近似法を応用したニューラルネットワークに関し、特に人工知能ディープラーニングモデルの分類マシンに使用されるソフトマックス関数計算の近似法並びにこのソフトマックス関数計算の近似法を応用したニューラルネットワークに関する。
【背景技術】
【0002】
人工知能(AI)は通常、普通のコンピュータープログラムによって人間の知的能力を表す技術である。AIの最も主要な一環は、機械学習と認知科学領域において、生物のニューラルネットワークの構造と機能を模した数学モデルまたは計算モデルであり、さらに関数に対して推算する近似の人工ニューラルネットワークである。よく見られるニューラルネットワークモデルは例えば畳み込みニューラルネットワークと再帰型ニューラルネットワーク(CNNとRNN)があり、近年はTransformerモデルが開発され、Transformerモデルは徐々に畳み込みニューラルネットワークと再帰型ニューラルネットワーク(CNNとRNN)の代わりになる傾向が見受けられ、最も人気なディープラーニングモデルとなりつつある。
【0003】
図1に示すように、上記のニューラルモデルのいずれにしても、そのほとんどは少なくとも特徴学習マシン(feature learning)81と、分類マシン(classification)82とを含む。ニューラルモデルの分類マシン82において通常はソフトマックス関数(softmax function)821が採用され、0~1の間にある少なくとも一つの出力値を出力する。
【0004】
従来のソフトマックス関数の展開式は数式1である。
【0005】
【0006】
一般的に、ソフトマックス関数(数式1)による計算はi次元ベクトルの入力値をj次元ベクトルの出力値に変換させられ、j次元ベクトルの各出力値は通常0~1の間にある数値であり、その数値の合計が1である。
【0007】
さらに、市販されるGPU(例えば、Nvidia社)に関わるソフトマックス関数計算のほとんどは数式1のsoftmax関数を採用し、入力値はfloat32形式によりソフトマックス関数の計算を実現させる。しかし、実際に指数関数の計算をする時に多項式の次数が多く、また入力値はfloat32形式を採用しているため、分類マシンの計算過程において大量な数値計算を処理する必要があり、時間とエネルギーが消耗される問題がある。そのため、簡単なsoftmax関数計算を提供するとともに、ニューラルネットワークの分類マシンの計算過程を時短に、省エネできるようにすることは実に重要な課題である。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の目的は、計算時間を削減できるとともに、エネルギー消費も削減できるソフトマックス関数計算の近似法を提供する。また、本発明におけるもう一つの目的は、計算時間を削減できるとともに、エネルギー消費も削減できるこのソフトマックス関数計算の近似法を応用したニューラルネットワークを提供する。
【課題を解決するための手段】
【0009】
上述の目的を達成するために、本発明のソフトマックス関数計算の近似法に基づき、k次元ベクトルの入力値をm次元ベクトルの出力値に変換させる。ソフトマックス関数計算の近似法は、k次元ベクトルの入力値を漏洩正規化線形ユニット計算(漏洩ReLU)を行うことによって正規化関数計算値を得、そしてこの正規化関数計算値に基づいて一定次数の多項式関数計算を行って指数近似値を得た後、さらにもう一つの入力値でその順序を繰り返すことによりもう一つの指数近似値が得られる指数近似計算順序と、その指数近似値ともう一つの指数近似値を足した合計値が得られる加法計算順序と、指数近似計算順序で得られた指数近似値の中に少なくとも一つの指数近似値を合計値で割ってm次元ベクトルの出力値が得られる除法計算順序と、を備える。
【0010】
一実施例において、指数近似計算順序において、入力値を先にクランプ関数(clamp function)計算を行った後、さらに漏洩ReLU計算を行う。
【0011】
一実施例において、加法計算順序において、合計値はさらに保護値を足して、合計値の絶対値がゼロより大きいことを確保する。
【0012】
一実施例において、一定次数の多項式関数計算は2次から5次の多項式計算である。
【0013】
一実施例において、指数近似計算順序は、各入力値が漏洩ReLU計算を経て正規化関数計算値を得た後、さらに正規化関数計算値に基づいて一定次数の多項式関数計算を行って各入力値に対応する指数近似値が得られるまで繰り返される。加法計算順序は、すべての指数近似値を足した合計値が得られる。除法計算順序は、指数近似計算順序で得られた指数近似値の各指数近似値を合計値で割って複数のk次元ベクトルに対応するm次元ベクトルの出力値が得られる。
【0014】
一実施例において、入力値は整数型の数値である。
【0015】
また、本発明のソフトマックス関数計算の近似法を応用したニューラルネットワークに基づき、ニューラルネットワークの分類マシンに、k次元ベクトルの入力値をm次元ベクトルの出力値に変換させるソフトマックス関数計算モジュールを備える。ソフトマックス関数計算モジュールは、k次元ベクトルの入力値を漏洩正規化線形ユニット関数(LeakyReLU function)計算を行うことによって正規化関数計算値を得、そしてこの正規化関数計算値に基づいて一定次数の多項式関数計算を行って指数近似値を得た後、さらにもう一つの入力値を前記漏洩正規化線形ユニット関数計算と前記一定次数の多項式関数計算を繰り返すことによりもう一つの指数近似値が得られる指数近似計算ユニットと、その指数近似値ともう一つの指数近似値を足した合計値が得られる加法計算ユニットと、指数近似計算ユニットで得られた指数近似値の中に少なくとも一つの指数近似値を合計値で割ってm次元ベクトルの出力値が得られる除法計算ユニットと、を備える。
【0016】
もう一つの実施例において、指数近似計算ユニットでは先に入力値をクランプ関数(clamp function)計算を行った後、さらに漏洩ReLU計算を行う。
【0017】
もう一つの実施例において、加法計算ユニットでは合計値はさらに保護値を足して、合計値の絶対値がゼロより大きいことを確保する。
【0018】
もう一つの実施例において、一定次数の多項式関数計算は2次から5次の多項式計算である。
【0019】
もう一つの実施例において、指数近似計算ユニットは、各入力値が漏洩ReLU計算を経て正規化関数計算値を得た後、さらにこの正規化関数計算値によって一定次数の多項式関数計算を行って各入力値に対応する指数近似値を得るまで繰り返される。加法計算ユニットは、すべての指数近似値を足した合計値が得られる。除法計算ユニットは、指数近似計算ユニットで得られた指数近似値の各指数近似値を合計値で割って複数のk次元ベクトルに対応するm次元ベクトルの出力値が得られる。
【0020】
一実施例において、入力値は整数型の数値である。
【発明の効果】
【0021】
本発明のソフトマックス関数計算の近似法において、指数関数e(xk)は低次多項式(例えば、2次多項式)に制限され、またクランプ関数(clamp function)と漏洩ReLU計算が採用されるため、指数関数e(xk)計算する時、破線の曲線で示す計算結果は実線の曲線で示す高次計算の結果に近似することができる。言い換えれば、本発明のソフトマックス関数計算式の出力誤差がすべて小さい。
【0022】
特に、入力ベクトルの素子はすべて整数であり、指数関数e(xk)は低次多項式(例えば、2次多項式)に制限されるため、従来のfloat32形式と高次多項式の計算と比較すると、計算量が大幅に下げられることから、計算時間を短縮でき、エネルギーの消耗も抑えられる。
【図面の簡単な説明】
【0023】
【
図1】従来のニューラルネットワークの基本構造の説明図である。
【
図2】本発明のより良い実施例の2次多項式関数計算結果と従来の指数計算結果との比較図である。
【
図3】本発明のより良い実施例の指数近似計算順序に漏洩ReLU計算を加えたフロー図である。
【
図4】本発明のより良い実施例のソフトマックス関数計算の近似法を説明するブロック図である。
【
図5】本発明のより良い実施例の指数近似計算順序の計算結果と従来の指数計算結果との比較図である。
【
図6】本発明のより良い実施例の指数近似計算順序において、さらにクランプ関数計算を加えたフロー図である。
【
図7】本発明のより良い実施例のもう一つのソフトマックス関数計算の近似法を説明するブロック図である。
【
図8】本発明のより良い実施例のもう一つの指数近似計算順序の計算結果と従来の指数計算結果との比較図である。
【
図9】本発明のより良い実施例において、異なった指数関数式を採用して生じたsoftmax関数式の出力値の対照表である。
【
図10】本発明のより良い実施例において、異なった指数関数式をそれぞれ採用し、且つ
図9と異なった入力ベクトルによって生じたsoftmax関数式の出力値の対照表である。
【
図11】本発明のより良い実施例において、異なった指数関数式をそれぞれ採用し、且つそのうち一つのsoftmax関数式に保護値を加えて生じたsoftmax関数式出力値の対照表である。
【
図12】本発明のより良い実施例において、
図11と同じような指数関数式とsoftmax関数式をそれぞれ採用し、また
図9と同じような入力ベクトルを採用して生じたsoftmax関数式の出力値の対照表である。
【発明を実施するための形態】
【0024】
各図面を用いて、本発明のソフトマックス関数計算の近似法並びにこのソフトマックス関数計算の近似法を応用したニューラルネットワークに関わるより良い実施例を以下に説明してゆく。
【0025】
本発明の実施例を具体的に説明する前に、まず説明したいことは、本実施例において、softmax関数はk次元ベクトルの入力値をm次元ベクトルの出力値に変換できるため、本実施例のsoftmax関数は数式2のように表せる。
【0026】
【0027】
上記数式2のsoftmax関数計算において、最も難しく、時間のかかる計算はk次元ベクトルの入力値を指数関数exp(x)(即ちe(xk))計算することである。実際にe(xk)値を計算する時、一般的にテイラー展開式で計算し、即ち数式3の計算式を使って計算する。
【0028】
【0029】
【0030】
続いて、
図2に示すように、数式3に示す高次多項式によって算出した指数関数値exp(x)を実線の曲線で表し、数式4に示す2次テイラー多項式によって算出した指数関数値(2nd-taylor exp(x))を破線の曲線で表す。
図2に示すように、指数計算を簡潔化するためにテイラー指数展開式(数式3)全体の計算順序を低次数の多項式計算に縮減して計算すると、例えば2次多項式計算に制限することで、
図2に示すような破線の曲線で表した指数関数値(2nd-taylor exp(x))が得られる。しかし、
図2から分かるように、2次多項式の計算結果(破線で示す)と高次多項式の計算結果(実線で示す)の差が大きい。
【0031】
これにより、ソフトマックス関数の指数関数計算を簡潔化するように、指数関数e
(xk)を2次多項式計算に制限する場合、簡潔化した計算結果を簡潔化する前の計算結果に近づかせるために、数式4の計算方法を改良してその計算結果を
図2に示す実線の曲線に近づかせる必要がある。
【0032】
図3と
図4に示すように、本発明のソフトマックス関数計算の近似法は指数近似計算順序S1、加法計算順序S2、除法計算順序S3と、を含む。指数近似計算順序S1は、
図3に示す漏洩正規化線形ユニット関数(LeakyReLU function)計算ステップS11と2次多項式指数近似計算ステップS12を行う。また、
図4に示すように、これらの計算プロセスによって上記数式2の出力結果が得られる。
【0033】
さらに
図3に示すように、本実施例において、漏洩ReLUを数式4の計算に使われ、数式4の方程式は数式5の方程式のように表せる。
【0034】
【0035】
漏洩ReLUの使用により、ステップS11に正規化関数計算値L
1が得られ、正規化関数計算値L
1を数式5に代入すると、数式5は数式6のように表せる。数式6の計算によって、ステップS12の計算から指数近似計算値exp1(X
k)が得られる。つまり、ステップS11とステップS12の計算によって、
図4に示す指数近似計算順序S1から指数近似計算値exp1(X
k)を算出できる。この計算結果は
図5の破線の曲線に示すように、指数関数e
(xk)を2次多項式に制限し、且つ漏洩ReLU計算を採用する場合、X
kが負数の時、その近似計算結果(破線で表示)はより実線の曲線に近づけられる。
【0036】
【0037】
数式5または数式6の計算結果は数式4の計算結果より良いが、
図5に示すように、X
kが負数または1より大きい時、その近似計算結果は一定程度の差異が存在する。一定程度の差異の問題を解決するために、本発明のより良い実施例において、
図6と
図7に示すように、指数近似計算順序S1’は、先に入力値X
kをクランプ関数(clamp function)計算ステップS10を行った後、漏洩正規化線形ユニット関数計算ステップS11’を行い、さらに2次多項式指数近似計算ステップS12’を行う。即ち、
図6に示すような計算順序であり、この際に2次多項式指数近似計算式は数式7のように表しても良い。
【0038】
【0039】
クランプ関数(clamp function)と漏洩ReLUを使うと、ステップS10の計算によってステップS11’で正規化関数計算値L2が得られ、正規化関数計算値L2を数式7に代入すると、数式7は数式8のように表せる。
【0040】
【0041】
特に、もしF(Xk)=LeakyReLU(Clamp(Xk,min,max))とし、2次多項式係数を同時に取り入れると、本発明の指数近似計算値は数式9のような通用式で表せる。
【0042】
【0043】
言い換えれば、正規化関数計算値L1または正規化関数計算値L2を数式9に代入する場合、数式6は数式10のように表せ、数式8は数式11のように表せる。
【0044】
【0045】
【0046】
図8から分かるように、指数関数e
(xk)を2次多項式に制限し、またクランプ関数(clamp function)計算と漏洩ReLU計算を採用する時、つまり数式8または数式11を使って計算する時、破線の曲線で示す計算結果は、X
kが負数または1より大きい区間であれば実線の曲線で示す高次計算結果に近づけられる。さらに、数式8または数式11の指数計算によればステップS12’の計算において指数近似計算値exp2(X
k)が得られる。言い換えれば、
図7に示す指数近似計算順序S1’において指数近似計算値exp2(X
k)を算出できる。
【0047】
以下は
図9を使って、本発明のソフトマックス関数計算の近似法の実際計算を具体的に説明する。特に説明したいのは本実施例のソフトマックス関数計算(即ち数式2)は、Transformerモデルのソフトマックス関数計算層を採用して実質計算を行う。
【0048】
さらに、
図9に示すように、入力ベクトル値は〔-2,0,8〕の場合、もし指数関数式は数式3を採用し、ソフトマックス関数計算式は数式2を採用すると、入力ベクトル値の各ベクトル値をそれぞれ数式3に代入して計算すると、e
(-2)=0.13 、e
(0)=1、e
(8)=2980という結果が得られる。そして、数式3でそれぞれ計算した結果を数式2に代入すれば、
図9に示すソフトマックス関数計算式(数式2)の計算値(出力値)が得られ、その出力ベクトルは〔0.000045,0.000335,0.999619〕である。
【0049】
図9に示すように、入力ベクトル値は〔-2,0,8〕の場合、もし指数関数式は数式10を採用し、ソフトマックス関数計算式は数式2を採用すると、数式10の係数はa=1、b=2、c=1であり、入力ベクトルの各ベクトルをそれぞれ数式10に代入して計算した後、ソフトマックス関数計算式(数式2)の計算値(出力値)の出力ベクトルは〔0.003040,0.012158,0.984802〕である。
図9から分かるように、反応割合が比較的に大きい入力ベクトル量(例えば、本実施例の中に“8”と入力する)について、その反応誤差は1~2%以内である。
【0050】
しかし、以上の説明において、もし指数関数式は数式10を採用し、ソフトマックス関数計算式は数式2を採用して、数式10の係数はa=1、b=2、c=1とする場合、もし入力ベクトル値が〔-4,-4,-4〕の時、
図10に示すように、ソフトマックス関数計算式(数式2)の計算値(出力値)は計算できない。この現象の原因はソフトマックス関数計算式(数式2)の分母が0に近いためである。
【0051】
ソフトマックス関数計算式の分母が0に近づく可能性があるから正常に計算できない問題を解決するために、
図7を参照されたい。本実施例において、本発明のソフトマックス関数計算の近似法は、指数近似計算順序S1’、加法計算順序S2と除法計算順序S3を含む以外、加法計算順序S2の計算完了後、その計算値と保護値epsを互いに足す保護値計算順序S21も含む。これにより、本発明のソフトマックス関数計算式は数式12のように表せる。また、保護値epsの作用は、数式2の分母が0以外または0に近づかないように確保するためである。もし数式2の分母が0または0に近づく場合、softmax’
(xk)m計算は結果が得られない。
【0052】
【0053】
続いて、
図11に示すように、もし指数関数式は数式11を採用し、ソフトマックス関数計算式は数式12を採用して、数式11の係数をa=1、b=2、c=1とする場合、もし入力ベクトル値を〔-4,-4,-4〕としても、
図11に示すように、ソフトマックス関数計算式(数式12)の計算値(出力値)も算出できる。また、もし指数関数式は数式11を採用し、ソフトマックス関数計算式は数式12を採用して、数式11に示す係数をa=1、b=2、c=1とし、数式12に示すeps=1とする場合、もし入力ベクトル値を〔-2,0,8〕としても、
図12に示すように、ソフトマックス関数計算式(数式12)の計算値(出力値)は〔0.007007,0.016016,0.976977〕と算出される。
図12に示す出力値0.984802(数式2を採用)と比較して分かるように、反応割合が比較的に大きい入力ベクトル量(例えば、本実施例の中に“8”と入力する)について、その反応誤差は1~2%以内にキープされる。
【0054】
以上をまとめると、本発明のソフトマックス関数計算の近似法において、指数関数e(xk)は低次多項式(例えば、2次多項式)に制限され、またクランプ関数(clamp function)と漏洩ReLU計算が採用されるため、指数関数e(xk)を数式8または数式11のいずれかで計算しても、破線の曲線で示す計算結果は実線の曲線で示す高次計算の結果に近似することができる。また、本発明のソフトマックス関数計算の近似法において、もしソフトマックス関数計算式は数式12を採用し、そして数式11に示す係数に対して適切な調整をすれば(例えば、a=1、b=2、c=1)、主な反応値について、本発明のソフトマックス関数計算式の出力誤差がすべて小さい。
【0055】
特に、本実施例において、入力ベクトルの素子はすべて整数であり、指数関数e(xk)は低次多項式(例えば、2次多項式)に制限されるため、従来のfloat32形式と高次多項式の計算とを比較すると、計算量が大幅に下げられることから、計算時間を短縮でき、エネルギーの消耗も抑えられる。
【0056】
本発明のもう一つの実施例はこのソフトマックス関数計算の近似法を応用したニューラルネットワークを提供する。本発明のこのソフトマックス関数計算の近似法を応用したニューラルネットワークについての具体的な説明は前述方法とほぼ一致するため、ここでは省略する。唯一特別に説明したいことは、本発明のもう一つの実施例において、ニューラルネットワークはTransformerモデルのニューラルネットワークに制限されるものではない。
【0057】
以上は本発明の例示だけであって、制限するものではない。本発明の精神と範囲を逸さないあらゆる修正または変更はすべて特許請求の範囲に属すべきである。
【産業上の利用可能性】
【0058】
本発明は人工知能ディープラーニングモデルの分類マシンに使用されるソフトマックス関数計算の近似法並びにこのソフトマックス関数計算の近似法を応用したニューラルネットワークに関する。
【符号の説明】
【0059】
81 特徴学習マシン
82 分類マシン
S1、S1’ 指数近似計算順序
S10 クランプ関数計算ステップ
S11、S11’ 漏洩正規化線形ユニット関数(漏洩ReLU)計算ステップ
S12、S12’ 2次多項式指数近似計算ステップ
S2 加法計算順序
S21 保護値計算順序
S3 除法計算順序
L1 正規化関数計算値
L2 正規化関数計算値
【要約】 (修正有)
【課題】計算時間を縮減でき、エネルギーの消耗を減少できるソフトマックス関数計算の近似法及びニューラルネットワークを提供する。
【解決手段】ソフトマックス関数計算の近似法は、k次元ベクトルの入力値をm次元ベクトルの出力値に変換させ、指数近似計算順序、加法計算順序及び除法計算順序と、を含む。指数近似計算順序は、k次元ベクトルの入力値を漏洩正規化線形ユニット(漏洩ReLU)計算を行うことによって正規化関数計算値を得た後、この正規化関数計算値に基づいて所定次数の多項式関数計算を行って指数近似値を得、さらにもう一つの入力値をその指数近似計算順序を繰り返すことによりもう一つの指数近似値を得る。加法計算順序は、指数近似値ともう一つの指数近似値を足した合計値を得る。除法計算順序は、指数近似計算順序で得られた指数近似値の中に少なくとも一つの指数近似値を合計値で割ってm次元ベクトルの出力値を得る。
【選択図】
図7