ディープラーニングのマスタリング:分岐推定を使った非線形概算の芸術 パート1
ディープラーニングのマスタリング:非線形推定を駆使した概算の芸術 パート1
過去の1年間で、Deep Learningの人気は爆発的に急上昇している。GPT-4やDALL·Eなどの大規模言語モデルや生成モデルは、インターネット上での会話を席巻している。Deep Learningに対する熱狂は、NvidiaのDGX GH200などのスパーコンピュータの開発を促している。これは、ニューラルネットワークの計算に特化した1エクサフロップスという驚異的なパフォーマンスを誇る計算機のことである。Deep Learningの話題になると、必然的にDeep Neural Networksが浮かび上がり、逆もまた同様である。Deep Neural Networksは、入力と出力の間の非常に広範で複雑な関係を表すことができる方程式のことである。これらの関係は、しばしば非常に複雑で非線形で、可視化するのが困難だが、Deep Neural Networksはどのようにそれらを快適に表現しているのだろうか?
このような複雑な関数を近似するために、ディープニューラルネットワークがどのように構築され、これらの関連をモデル化しているかを理解するために、まずは基本的な浅いニューラルネットワークを見ていこう。一般的に、ニューラルネットワークは関数f(x,ϕ)であり、多変量入力xを多変量出力yにマッピングするものであり、ϕは関数fのパラメータの集合である。例えば、f(x,ϕ) = ax +bの場合、ϕは集合{a, b}となる。一般的に、浅いニューラルネットワークはニューロンと呼ばれる基本的な計算単位で構成されている。これらのニューロンは線形推定器として機能し、それぞれ異なる線形関数を推定する。
上記の図に示されているような単純な浅いニューラルネットワークは、入力xと出力yの1つのニューロンを持ち、D個のニューロンで表現されることが一般的である:
ここでϕ₀とϕᵢは、それぞれ隠れユニットiに対応するバイアスと出力重みである。各hᵢは、隠れユニットiによって近似される線形関数に対応する。各隠れユニットは次のようにhᵢを計算する:
先ほど述べたように、θ₀はバイアスであり、θᵢは隠れユニットiに対応する入力重みである。ここで、a[.]は活性化関数である。これまでに、ニューラルネットワークを使用して線形関数を推定してきたが、本来は非線形関数を推定するはずである。活性化関数は、この非線形性をもたらす役割を果たす。正確には、非線形関数の近似を扱うための片過程線形関数を生成する。
この活性化関数がどのように非線形性をもたらすかを示すために、単純な実験を行ってみましょう。この実験では、次のような3つの単純な線形関数を取り上げます:
さて、上記の式を用いてy₁,y₂およびy₃を組み合わせてyを求め、その結果を視覚化してみましょう。
結果は線形関数であることがわかります。では、y1,y2およびy3を活性化関数に通してその結果を視覚化してみましょう。
関数が線形でなくなり、片過程線形関数になったことがわかります。これらの片過程線形関数は非線形関数の優れた近似となります。線形領域の数が増えるにつれて、線形領域は縮小し、基本的な関数が非線形関数として印象を与えるようになります。シグモイドなどの実際の非線形活性化関数は、以下に示すように非線形な推定値を生成します。
非線形関数の推定にはシグモイド活性化関数を使用することができますが、ほとんどの現代のニューラルネットワークではReLUまたはその派生のいずれかを選択します。ReLUが活性化関数として選ばれる理由は、ReLU及びその導関数ヘヴィサイド関数はSigmoidやTanhと比較して非常に簡単に計算できるという影響を受ける要因があります。ReLUを使用すると、計算時間を大幅に短縮することができ、性能を損なうことなく推定することができます。
これで、ReLU活性化を使用してsin(x)を推定する浅いニューラルネットワークを訓練し、満足のいく推定値が得られるまで隠れユニットの数を増やして推定関数の視覚化を行います。最終的に、SigmoidやTanh活性化関数で推定された関数と比較し、性能に妥協があるかどうかを確認します。
上記のプロットから、ReLuを使用した分割推定がsin(x)などの非線形関数を非常によく近似していることがわかります。隠れユニットの数が増えるにつれて、分割線形セグメントは非線形領域に密接に似ています。実際には、D個の隠れユニットでは、D+1個の線形領域を作成することができます。トレーニングプロセス中、モデルはこれらのD+1個の線形セグメントの傾きを表すθ₁とオフセットを表すθ₀を学習し、最終的にこの手法の総合的な効果を高めます。
さて、SigmoidとTanh関数を使用した推定結果と比較してみましょう。
上記のプロットから、これらの推定値は非線形ですが、ReLu関数を使用した推定値ほど良くありません。これを説明するための一つの方法は、ReLu活性化を持つD個の隠れユニットの浅いニューラルネットワークをトレーニングすると、本質的にはD+1個の別々の線形領域を得ます。これらの線形領域は必要に応じて方向や位置を調整し、基礎となるデータ分布に適応する柔軟性を持っています。以下の図を見て、このことを非常に単純な現実世界のアナロジーで理解しましょう
もしも固いマッチ棒だけを使って円を作らなければならない場面を想像してみましょう。図に示されているように、マッチ棒の数を増やすごとに、得られる形状は徐々に円に近づいていきます。それぞれのマッチ棒は、ニューラルネットワーク内の各隠れユニットが推定する線形領域に例えることができます。これらのマッチ棒を組み立てることで、集合的な結果はニューラルネットワークが達成する最終的な推定値を表します。それほど単純なことです。
このブログは、Simon J.D. Princeの「Understanding Deep Learning」(udlbook.github.io/udlbook/)から大いにインスピレーションを受けています。私はこのブログをさらに2つのパートで拡張する予定です。プロットを生成するために使用したコードは、以下で見つけることができます。もしこのブログが有益だと思ったら、いいねをしていただけると大変嬉しいです。
Understanding-Deep-Learning/Mastering_Deep_Learning_The_Art_of_Approximating_Non_Linearities_with_Pi…
Contribute to Raagulbharatwaj/Understanding-Deep-Learning development by creating an account on GitHub.
github.com
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles